inter60a b c d e f g.rar
Interrupt List, part 8 of 18
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
--------D-215F00-----------------------------
INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
AX = 5F00h
BL = redirection type
03h printer
04h disk drive
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
BH = redirection state
00h off
01h on
Note: calls INT 2F/AX=111Eh with AX on top of the stack
SeeAls AX=5F01h,INT 2F/AX=111Eh
--------D-215F01-----------------------------
INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
AX = 5F01h
BL = redirection type
03h printer
04h disk drive
BH = redirection state
00h off
01h on
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
Notes: when redirection is off, the local device (if any) rather than the
remote device is used
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAls AX=5F00h,INT 2F/AX=111Eh,INT 60/AX=0002h
--------D-215F02-----------------------------
INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
AX = 5F02h
BX = zero-based redirection list index
CX = driver signature
0000h LANtastic
4E57h ('NW') NetWare
DS:SI -> 16-byte buffer for ASCIZ local device name or drive letter
followed by colon
ES:DI -> 128-byte buffer for ASCIZ network name
Return: CF clear if successful
BH = device status
00h valid
01h invalid
02h valid (connected from inside Windows for Workgroups v3.11)
BL = device type
03h printer
04h disk drive
CX = user data previously set with AX=5F03h
DS:SI and ES:DI buffers filled
DX,BP destroyed
CF set on error
AX = error code (01h,12h) (see #01680 at AH=59h/BX=0000h)
Notes: this function is passed through to INT 2F/AX=111Eh by the DOS kernel
error code 12h is returned if BX is greater than the size of the list
also supported by Banyan VINES, PC-NFS, LANtastic, and 10NET
supported by LapLink RemoteAccess but returns the local drive letter;
the remote drive letter can be obtained with INT 2F/AX=Cxxxh
(see INT 2F/AX=C000h"LapLink")
the returned device name may or may not include a colon, depending on
the network software
SeeAls AX=5F03h,AX=5F46h,INT 2F/AX=111Eh,INT 2F/AX=C000h"LapLink"
--------D-215F03-----------------------------
INT 21 - DOS 3.1+ network - REDIRECT DEVICE
AX = 5F03h
BL = device type
03h printer
04h disk drive
CX = user data to save
0000h for LANtastic
4E57h ("NW") for NetWare 4.0 requester
DS:SI -> ASCIZ local device name (16 bytes max)
ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
Return: CF clear if successful
CF set on error
AX = error code (01h,03h,05h,08h,0Fh,12h) (see #01680 at AH=59h)
Notes: if device type is disk drive, DS:SI must point at either a null string
or a string consisting the drive letter followed by a colon; if a
null string, the network attempts to access the destination without
redirecting a local drive
the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
also supported by Banyan VINES, LANtastic, and 10NET
SeeAls AX=5F02h,AX=5F04h,INT 2F/AX=111Eh,INT 60/AX=0002h
--------D-215F04-----------------------------
INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
AX = 5F04h
DS:SI -> ASCIZ local device name or path
CX = 4E57h ("NW") for NetWare 4.0 requester
Return: CF clear if successful
CF set on error
AX = error code (01h,03h,05h,08h,0Fh,12h) (see #01680 at AH=59h)
Notes: the DS:SI string must be either a local device name, a drive letter
followed by a colon, or a network directory beginning with two
backslashes
the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
also supported by Banyan VINES, LANtastic, and 10NET
for NetWare, if only a server name is specified (i.e. "\\SERVER"),
the connection to that server will be closed
SeeAls AX=5F03h,INT 2F/AX=111Eh,INT 60/AX=0003h
--------D-215F05-----------------------------
INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
AX = 5F05h
BX = redirection list index
DS:SI -> buffer for ASCIZ source device name
ES:DI -> buffer for destination ASCIZ network path
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
AX = server's network process ID handle (10NET)
BH = device status flag (bit 0 clear if valid)
BL = device type (03h if printer, 04h if drive)
CX = stored parameter value (user data) from AX=5F03h
BP = NETBIOS local session number
DS:SI buffer filled
ES:DI buffer filled
Notes: the local session number allows sharing the redirector's session number
if an error is caused on the NETBIOS LSN, the redirector may be unable
to correctly recover from errors
the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
supported by DR DOS 5.0
also supported by 10NET v5.0
SeeAls AX=5F06h"Network",INT 2F/AX=111Eh
--------O-215F05-----------------------------
INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
AX = 5F05h
DL = drive number (0=A:)
DS:SI -> ASCIZ name of the object to map the drive to
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
SeeAls AX=5F06h"STARLITE",INT 60/AX=0002h
--------N-215F06-----------------------------
INT 21 U - Network - GET FULL REDIRECTION LIST
AX = 5F06h
???
Return: ???
Notes: similar to AX=5F02h and AX=5F05h, but also returns redirections
excluded from those calls for various reasons
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAls AX=5F05h"DOS",INT 2F/AX=111Eh
--------O-215F06-----------------------------
INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
AX = 5F06h
DL = drive to be unmapped (0=A:)
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
SeeAls AX=5F05h"STARLITE",INT 60/AX=0003h
--------D-215F07-----------------------------
INT 21 - DOS 5+ - ENABLE DRIVE
AX = 5F07h
DL = drive number (0=A:)
Return: CF clear if successful
CF set on error
AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
Notes: simply sets the "valid" bit in the drive's CDS
this function is not supported by Novell DOS 7 through at least
Update 4, but support was added by Update 13
SeeAls AH=52h,AX=5F08h"DOS"
--------O-215F07-----------------------------
INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
AX = 5F07h
DS:SI -> ASCIZ name of object to offer to network
ES:DI -> ASCIZ name under which object will be known on the network
MUST begin with three slashes
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
SeeAls AX=5F08h"STARLITE"
--------D-215F08-----------------------------
INT 21 - DOS 5+ - DISABLE DRIVE
AX = 5F08h
DL = drive number (0=A:)
Return: CF clear if successful
CF set on error
AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
Notes: simply clears the "valid" bit in the drive's CDS
this function is not supported by Novell DOS 7 through at least
Update 4, but support was added by Update 13
SeeAls AH=52h,AX=5F07h"DOS"
--------O-215F08-----------------------------
INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
AX = 5F08h
DS:SI -> ASCIZ network name (not local name) of object to unshare
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
SeeAls AX=5F07h"STARLITE"
--------O-215F09-----------------------------
INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
AX = 5F09h
DS:DX -> ASCIZ name of the device driver to attach to
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
Note: the STARLITE distributed file system can attach to multiple networks
simultaneously
SeeAls AX=5F0Ah
--------O-215F0A-----------------------------
INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
AX = 5F0Ah
DS:DX -> ASCIZ name of device driver to detach from
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
SeeAls AX=5F09h
--------N-215F30-----------------------------
INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
AX = 5F30h
Return: AX = version (AH=major,AL=minor)
--------N-215F32-----------------------------
INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
AX = 5F32h
BX = handle
CX = size of _PIPEINFO structure
DX = level (must be 0001h)
DS:SI -> _PIPEINFO structure (see #01701)
Return: CF clear if successful
_PIPEINFO structure filled in
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAls AX=5F33h,AX=5F34h
Format of Named Pipes _PIPEINFO structure:
Offset Size Description (Table 01701)
00h WORD size of outgoing buffer
02h WORD size of incoming buffer
04h BYTE maximum number of instances allowed
05h BYTE current number of instances
06h BYTE length of the name (including terminating NUL)
07h N BYTEs name
--------N-215F33-----------------------------
INT 21 u - Named Pipes - LOCAL DosQNmPHandState
AX = 5F33h
BX = handle
Return: CF clear if successful
AH = pipe mode bit mask (see #01702)
AL = maximum number of instances
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAls AX=5F32h,AX=5F34h
Bitfields for Named Pipes pipe mode:
Bit(s) Description (Table 01702)
7 set if nonblocking, clear if blocking
6 set if server end, clear if client end
2 set if write in message mode, clear if write in byte mode
0 set if read in message mode, clear if read in byte mode
--------N-215F34-----------------------------
INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
AX = 5F34h
BX = handle
CX = pipe mode bit mask
bit 15: set if nonblocking, clear if blocking
bit 8: set if read in message mode, clear if read in byte mode
Return: CF clear if successful
CF set if error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAls AX=5F32h,AX=5F33h,AX=5F36h
--------N-215F35-----------------------------
INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
AX = 5F35h
BX = handle
CX = buffer length
DS:SI -> buffer
Return: CF set on error
AX = error code
CF clear if successful (LAN Manager v1-v2)
AX = 0000h if successful (LAN Manager 3.x)
---if successful---
CX = bytes read
SI = bytes left in the pipe
DX = bytes left in the current message
AX = pipe status (v1-v2) (see #01703)
DI = pipe status (v3.x)
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAls AX=5F38h,AX=5F39h,AX=5F51h
(Table 01703)
Values for pipe status:
0001h disconnected
0002h listening
0003h connected
0004h closing
--------N-215F36-----------------------------
INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
AX = 5F36h
BX = handle
CX = in buffer length
DS:SI -> in buffer
DX = out buffer length
ES:DI -> out buffer
Return: CF clear if successful
CX = bytes read
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAls AX=5F34h,AX=5F37h
--------N-215F37-----------------------------
INT 21 u - Named Pipes - DosCallNmPipe
AX = 5F37h
DS:SI -> DosCallNmPipe stack frame (see #01704)
Return: CF clear if successful
CX = bytes read
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAls AX=5F36h,AX=5F38h
Format of Named Pipes DosCallNmPipe stack frame:
Offset Size Description (Table 01704)
00h DWORD timeout
04h DWORD -> bytes read WORD (not used!)
08h WORD out buffer length
0Ah DWORD address of out buffer
0Eh WORD in buffer length
10h DWORD address of in buffer
14h DWORD address of pipe name
--------N-215F38-----------------------------
INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
AX = 5F38h
DS:DX -> pipe name
BX:CX = timeout value
Return: CF clear if successful
CF set if error
AX = error code
Notes: when a client gets a return code of ERROR_PIPE_BUSY on attempting to
open a pipe, it should issue this call to wait until the pipe
instance becomes available again; on return from this call, the
client must attempt to open the pipe once again
this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAls AX=5F37h,AX=5F39h
--------N-215F39-----------------------------
INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
AX = 5F39h
BX = handle
CX = buffer length
DS:DX -> buffer
Return: CF clear if successful
CX = bytes read
CF set if error
AX = error code
Notes: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
not documented in the LAN Manager Toolkit
SeeAls AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
--------N-215F3A-----------------------------
INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
AX = 5F3Ah
BX = handle
CX = buffer length
DS:DX -> buffer
Return: CF clear if successful
CX = bytes written
CF set if error
AX = error code
Notes: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
not documented in the LAN Manager Toolkit
SeeAls AX=5F39h,AX=5F3Bh,INT 2F/AX=118Fh
--------N-215F3B-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
AX = 5F3Bh
BX = handle
CX = handle_info_1 structure length or sizeof DWORD
DI = parameter number to set
0000h all
0001h number of milliseconds
0002h number of characters
DS:DX -> handle_info_1 structure (DI=0000h) (see #01705)
or DWORD (DI=0001h or 0002h)
SI = level of information (0001h)
Return: CF clear if successful
CX = total bytes available
CF set if error
AX = error code
SeeAls AX=5F3Ch
Format of LAN Manager handle_info_1 structure:
Offset Size Description (Table 01705)
00h DWORD number of milliseconds which workstation collects data before
it sends the data to the named pipe
04h DWORD number of characters which workstation collects before it
sends the data to the named pipe
--------N-215F3C-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
AX = 5F3Ch
BX = handle
CX = length of handle_info_1 structure
DS:DX -> handle_info_1 structure (see #01705)
SI = level of information (must be 0001h)
Return: CF clear if successful
CX = total bytes available
CF set if error
AX = error code
SeeAls AX=5F3Bh
--------N-215F3D-----------------------------
INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
AX = 5F3Dh
???
Return: ???
--------N-215F3E-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
AX = 5F3Eh
???
Return: ???
Note: This function is not documented anywhere in the LAN Manager 2.x Toolkit
but was documented in LAN Manager 1.x manuals.
--------N-215F3F-----------------------------
INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
AX = 5F3Fh
CX = api number
ES:DI -> data descriptor
ES:SI -> parameter descriptor
ES:DX -> auxiliary descriptor (if DX <> 0)
???
Return: ???
--------N-215F40-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
AX = 5F40h
DS:DX -> NetMessageBufferSend parameter structure (see #01706)
Return: AX = error code
Format of LAN Manager NetMessageBufferSend parameter structure:
Offset Size Description (Table 01706)
00h DWORD -> recipient name (name for specific user, name* for domain
wide name, * for broadcast)
04h DWORD -> buffer
08h WORD length of buffer
--------N-215F41-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
AX = 5F41h
BL = level of detail (0000h, 0001h or 0002h)
CX = buffer length
ES:DI -> buffer of service_info_0, service_info_1, or service_info_2
(see #01707,#01708,#01709)
Return: CF clear if successful
CX = entries read
DX = total available
CF set on error
AX = error code
Format of LAN Manager service_info_0 structure:
Offset Size Description (Table 01707)
00h 16 BYTEs name
SeeAls #01708,#01709
Format of service_info_1 structure:
Offset Size Description (Table 01708)
00h 16 BYTEs name
10h WORD status bitmask (see #01710)
12h DWORD status code (see #01711)
(also see Microsoft LAN Manager Programmer's Reference)
16h WORD process id
SeeAls #01707,#01709
Format of service_info_2 structure:
Offset Size Description (Table 01709)
00h 16 BYTEs name
10h WORD status bitmask (see #01710)
12h DWORD status code (see #01711)
16h WORD process id
18h 64 BYTEs text
SeeAls #01707,#01708
Bitfields for LAN Manager status bitmask:
Bit(s) Description (Table 01710)
0,1 00 uninstall
01 install pending
10 uninstall pending
11 installed
2,3 00 active
01 Continue pending
10 Pause pending
11 paused
4 uninstallable
5 pausable
8 disk redirector paused
9 spooled device redirector paused (printing)
10 communication device redirector paused
(Table 01711)
Values for LAN Manager status code:
high word
3051 Bad parameter value
3052 A parameter is missing
3053 An unknown parameter was specified
3054 The resource is insufficient
3055 Configuration is faulty
3056 An MS-DOS or MS OS/2 error occured
3057 An internal error occured
3058 An ambiguous parameter name was given
3059 A duplicate parameter exists
3060 The service was terminated by NetSeviceControl when it did not respond
3061 The service program file could not be executed
3062 The subservice failed to start
3063 There is a conflict in the value or use of these parameters
3064 There is a problem with the file
low word
3070 There is insufficient memory
3071 There is insufficeient disk space
3072 Unable to create thread
3073 Unable to create process
3074 A security failure occured
3075 There is bad or missing default path
3076 Network software is not installed
3077 Server software is not installed
3078 The server could not access the UAS database
3079 The action requires user-level security
3080 The log directory is invalid
3081 The LAN group specificed could not be used
3082 The computername is being used as a message alias on another computer
3083 The workstation failed to announce the servername
3084 The user accounts system is not configured properly
--------N-215F42-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
AX = 5F42h
DH = opcode
00h interrogate status
01h pause
02h continue
03h uninstall
DL = argument
01h disk resource
02h print resource
04h communications resource (not implemented for DOS)
ES:BX -> NetServiceControl parameter structure (see #01712)
Return: CF clear if successful
CF set on error
AX = error code
Format of LAN Manager NetServiceControl parameter structure:
Offset Size Description (Table 01712)
00h DWORD -> service name
04h WORD result buffer size
06h DWORD -> result buffer as service_info_2 structure
--------N-215F43-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
AX = 5F43h
BX = handle of remote print job
CX = size of PRIDINFO struture
ES:DI -> PRIDINFO structure (see #01713)
Return: CF clear if successful
PRIDINFO filled in
CF set on error
AX = error code
Format of LAN Manager PRIDINFO structure:
Offset Size Description (Table 01713)
00h WORD job id
02h 16 BYTEs server name
12h 13 BYTEs queue name
1Fh 1 BYTE pad
--------N-215F44-----------------------------
INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
AX = 5F44h
BX = information level (00h, 01h, or 0Ah)
CX = buffer size
DX = 0000h
ES:DI -> buffer in which to store info (see #01714,#01715,#01716),
including any returned strings
Return: AX = error code
DX = amount of buffer required, unchanged if supplied buffer large
enough to hold data
SeeAls AX=5F45h,AX=5F49h
Format of LAN Manager wksta_info_0 structure:
Offset Size Description (Table 01714)
00h WORD reserved (0)
02h DWORD reserved (0)
06h DWORD -> path to computer's LANMAN directory
0Ah DWORD -> computername of the workstation
0Eh DWORD -> username of user logged onto workstation
12h DWORD -> domain to which workstation belongs
16h WORD LAN Manager version number (2 bytes, Major, Minor)
18h DWORD reserved (0)
1Ch WORD number of seconds workstation waits for resource availability
1Eh DWORD delay (in millsecs) before sending data to resource
22h WORD reserved (0)
24h WORD reserved (0)
26h WORD ???
28h WORD number of seconds to maintain an inactive connection
2Ah WORD number of seconds an inactive search continues
2Ch WORD threads to dedicate to network (not supported in MSDOS)
2Eh WORD number of simultaneous commands sent to network
30h WORD reserved6 (must be 0)
32h WORD number of internal buffers
34h WORD size (in bytes) of each internal buffer
36h WORD max size (in bytes) of an internal cache buffer (not MSDOS)
38h WORD seconds before disconnecting inactive session (not MSDOS)
3Ah WORD size (in bytes) of an internal error buffer (not MSDOS)
3Ch WORD number of clients that can receive alert messages (not MSDOS)
3Eh WORD number of services that can be started on workstation
40h WORD max size (in kilobytes) of error log (not MSDOS)
42h WORD number of secs before closing inactive print jobs (not MSDOS)
44h WORD number of character buffers for workstation
46h WORD max size (in bytes) of character buffer
48h DWORD -> name of server that validated logon
4Ch DWORD -> workstation heuristics
50h WORD number of mailslots allowed
Note: pointers to strings are set to 0000h:0000h if there is insufficient
space in the buffer to hold them
SeeAls #01715,#01716
Format of LAN Manager wksta_info_1 structure:
Offset Size Description (Table 01715)
00h 82 BYTEs wksta_info_0 structure (see #01714)
52h DWORD -> name of domain which user is logged on to
56h DWORD -> all domains in which computer is enlisted
5Ah WORD number of buffers to allocate for receiving datagrams
SeeAls #01716
Format of LAN Manager wksta_info_10 structure:
Offset Size Description (Table 01716)
00h DWORD -> computername of the workstation
04h DWORD -> username of user logged onto workstation
08h DWORD -> domain to which workstation belongs
0Ch WORD LAN Manager version number (2 bytes, Major, Minor)
0Eh DWORD -> name of domain which user is loggod on to
12h DWORD -> all domains in which computer is enlisted
Note: pointers to strings are set to 0000h:0000h if there is insufficient
space in the buffer to hold them
SeeAls #01714,#01715
--------N-215F45-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
AX = 5F45h
BX = level (0000h or 0001h)
CX = buffer size
DX = parameter to set
ES:DI -> buffer
Return: CF clear if successful
CF set if error
AX = error code
SeeAls AX=5F44h
--------N-215F46-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
AX = 5F46h
BX = level (0000h or 0001h)
CX = size of buffer
ES:DI -> buffer of use_info_0 or use_info_1 structures
(see #01717,#01718)
Return: CF clear if successful
CX = entries read
DX = total available entries
CF set if error
AX = error code
SeeAls AX=5F47h,AX=5F48h,AX=5F4Ch
Format of LAN Manager use_info_0 structure:
Offset Size Description (Table 01717)
00h 9 BYTEs local device name
09h BYTE padding
0Ah DWORD -> remote device name in UNC form \\server\share
SeeAls #01718
Format of LAN Manager use_info_1 structure:
Offset Size Description (Table 01718)
00h 9 BYTEs Local device name
09h BYTE padding
0Ah DWORD -> remote device name in UNC form \\server\share
0Eh DWORD -> password
12h WORD network link status
(00h OK, 02h disconnected, else unsure)
14h WORD use type (-1 wildcard, 0 disk, 1 print, 2 com, 3 ipc)
16h WORD ignored
18h WORD ignored
SeeAls #01717
--------N-215F47-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
AX = 5F47h
BX = level (0001h)
CX = size of use_info_1 structure
ES:DI -> use_info_1 structure (see #01718)
Return: CF clear on success
CF set on error
AX = error code
SeeAls AX=5F46h,AX=5F48h
--------N-215F48-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
AX = 5F48h
BX = force level
0000h no force
0001h force
0002h lots of force
ES:DI -> buffer as either the local device name or UNC remote name
Return: CF clear on success
CF set on error
AX = error code
SeeAls AX=5F46h,AX=5F48h,AX=5F49h
--------N-215F49-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
AX = 5F49h
DS:DX -> NetUseGetInfo parameter structure (see #01719)
Return: CF clear on success
DX = total available
CF set on error
AX = error code
SeeAls AX=5F44h,AX=5F47h
Format of LAN Manager NetUseGetInfo parameter structure:
Offset Size Description (Table 01719)
00h DWORD pointer to either the local device name or UNC remote name
04h WORD level of information (0000h or 0001h)
06h DWORD pointer to buffer of use_info_0 or use_info_1 structures
0Ah WORD length of buffer
--------N-215F4A-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
AX = 5F4Ah
DS:DX -> NetRemoteCopy parameter structure (see #01720)
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5F4Bh
Format of LAN Manager NetRemoteCopy parameter structure:
Offset Size Description (Table 01720)
00h DWORD -> source name as UNC
04h DWORD -> destination name as UNC
08h DWORD -> source password
0Ch DWORD -> destination password
10h WORD destination open bitmap
if destination path exists
0000h open fails
0001h file is appended
0002h file is overwritten
if destination path doesn't exist
0000h open fails
0010h file is created
12h WORD copy control bitmap (see #01721)
14h DWORD -> copy_info buffer
18h WORD length of copy_info buffer
Bitfields for LAN Manager copy control:
Bit(s) Description (Table 01721)
0 destination must be a file
1 destination must be a directory
2 destination is opened in ascii mode instead of binary
3 source is opened in ascii mode instead of binary
4 verify all write operations
--------N-215F4B-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
AX = 5F4Bh
DS:DX -> NetRemoteMove parameter structure (see #01722)
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5F4Ah
Format of LAN Manager NetRemoteMove parameter structure:
Offset Size Description (Table 01722)
00h DWORD -> source name as UNC
04h DWORD -> destination name as UNC
08h DWORD -> source password
0Ch DWORD -> destination password
10h WORD destination open bitmap
if destination path exists
0000h open fails
0001h file is appended
0002h file is overwritten
if destination path doesn't exist
0000h open fails
0010h file is created
12h WORD move control bitmap
0001h destination must be a file
0002h destination must be a directory
14h DWORD -> move_info buffer
18h WORD length of move_info buffer
--------N-215F4C-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
AX = 5F4Ch
BX = level (0000h or 0001h)
CX = buffer length
ES:DI -> buffer in which to store information
Return: CF clear if successful
ES:DI -> server_info_X structures (depending on level)
(see #01723,#01724)
BX = entries read
CX = total entries available
CF set on error
AX = error code
Notes: this function is also supported by the Novell DOS Named Pipe Extender
this function has been obseleted by NetServerEnum2
SeeAls AX=5F53h
Format of LAN Manager server_info_0 structure:
Offset Size Description (Table 01723)
00h 16 BYTEs name
SeeAls #01724
Format of LAN Manager server_info_1 structure:
Offset Size Description (Table 01724)
00h 16 BYTEs name
10h BYTE major version in lower nibble
11h BYTE minor version
12h DWORD server type bitmask (see #01725)
16h DWORD -> comment string
SeeAls #01723
Bitfields for LAN Manager server type:
Bit(s) Description (Table 01725)
0 workstation
1 server
2 SQL server
3 primary domain controller
4 backup domain controller
5 time server
6 Apple File Protocol (AFP) server
7 Novell server
8 Domain Member (v2.1+)
9 Print Queue server (v2.1+)
10 Dialin server (v2.1+)
11 Unix server (v2.1+)
Note: set all (FFFFFFFFh) for All Types
--------N-215F4D-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
AX = 5F4Dh
BX = message size
CX = mailslot size (must be bigger than message size by at least 1)
(minimum 1000h, maximum FFF6h)
(buffer must be 9 bytes bigger than this)
DS:SI -> name
ES:DI -> memory buffer
Return: CF clear if successful
AX = handle
CF set on error
AX = error code
SeeAls AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
--------N-215F4E-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
AX = 5F4Eh
BX = handle
Return: CF clear if successful
ES:DI -> memory to be freed (allocated during DosMakeMailslot)
CF set on error
AX = error code
SeeAls AX=5F4Dh,AX=5F4Fh
--------N-215F4F-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
AX = 5F4Fh
BX = handle
Return: CF clear if successful
AX = max message size
BX = mailslot size
CX = next message size
DX = next message priority
SI = number of messages waiting
CF set on error
AX = error code
SeeAls AX=5F4Dh,AX=5F4Eh,AX=5F50h
--------N-215F50-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
AX = 5F50h
BX = handle
DX:CX = timeout
ES:DI -> buffer
Return: CF clear if successful
AX = bytes read
CX = next item's size
DX = next item's priority
CF set on error
AX = error code
SeeAls AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
--------N-215F51-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
AX = 5F51h
BX = handle
ES:DI -> buffer
Return: CF clear if successful
AX = bytes read
CX = next item's size
DX = next item's priority
CF set on error
AX = error code
SeeAls AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
--------N-215F52-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
AX = 5F52h
BX = class
CX = length of buffer
DX = priority
ES:DI -> DosWriteMailslot parameter structure (see #01726)
DS:SI -> mailslot name
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5F4Fh,AX=5F50h,AX=5F51h
Format of LAN Manager DosWriteMailslot parameter structure:
Offset Size Description (Table 01726)
00h DWORD timeout
04h DWORD -> buffer
--------N-215F53-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
AX = 5F53h
DS:SI -> NetServerEnum2 parameter structure (see #01727)
Return: CF clear if successful
BX = entries read
CX = total entries available
CF set on error
AX = error code
SeeAls AX=5F4Ch
Format of LAN Manager NetServerEnum2 parameter structure:
Offset Size Description (Table 01727)
00h WORD level (0000h or 0001h)
02h DWORD -> buffer as array of server_info_??? structures (see #01723)
06h WORD length of buffer
08h DWORD server type bitmask (see #01725)
0Ch DWORD -> Domain name (may be 0000h:0000h for all local domains)
--------N-215F55----------------------------
INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
AX = 5F55h
BX = ???
Return: CF clear if successful
CF set on error
AX = error code
--------N-215F80-----------------------------
INT 21 - LANtastic - GET LOGIN ENTRY
AX = 5F80h
BX = login entry index (0-based)
ES:DI -> 16-byte buffer for machine name
Return: CF clear if successful
buffer filled with machine name ("\\" prefix removed)
DL = adapter number (v3+)
CF set on error
AX = error code
Note: the login entry index corresponds to the value BX used in AX=5F83h
SeeAls AX=5F83h
--------N-215F81-----------------------------
INT 21 - LANtastic - LOGIN TO SERVER
AX = 5F81h
ES:DI -> ASCIZ login path followed immediately by ASCIZ password
BL = adapter number
FFh try all valid adapters
00h-07h try only specified adapter
Return: CF clear if successful
CF set on error
AX = error code
Notes: login path is of form "\\machine\username"
if no password is used, the string at ES:DI must be terminated with
three NULs for compatibility with LANtastic v3.0.
SeeAls AX=5F82h,AX=5F84h
--------N-215F82-----------------------------
INT 21 - LANtastic - LOGOUT FROM SERVER
AX = 5F82h
ES:DI -> ASCIZ server name (in form "\\machine")
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5F81h,AX=5F88h,AX=5FCBh
--------N-215F83-----------------------------
INT 21 - LANtastic - GET USERNAME ENTRY
AX = 5F83h
BX = login entry index (0-based)
ES:DI -> 16-byte buffer for username currently logged into
Return: CF clear if successful
DL = adapter number (v3+)
CF set on error
AX = error code
Note: the login entry index corresponds to the value BX used in AX=5F80h
SeeAls AX=5F80h
--------N-215F84-----------------------------
INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
AX = 5F84h
BX = server index not currently logged into
ES:DI -> 16-byte buffer for server name which is available for logging
in to ("\\" prefix omitted)
Return: CF clear if successful
DL = adapter number to non-logged in server is on
CF set on error
AX = error code
SeeAls AX=5F81h
--------N-215F85-----------------------------
INT 21 - LANtastic - CHANGE PASSWORD
AX = 5F85h
ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
Return: CF clear if successful
CF set on error
AX = error code
Notes: must be logged into the named machine
this function is illegal for group accounts
--------N-215F86-----------------------------
INT 21 - LANtastic - DISABLE ACCOUNT
AX = 5F86h
ES:DI -> ASCIZ machine name and password in form "\\machine\password"
Return: CF clear if successful
CF set on error
AX = error code
Note: must be logged into the named machine and concurrent logins set to 1
by NET_MGR. Requires system manager to re-enable account.
--------N-215F87-----------------------------
INT 21 - LANtastic v3+ - GET ACCOUNT
AX = 5F87h
DS:SI -> 128-byte buffer for account information (see #01728)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX destroyed
Note: must be logged into the specified machine
Format of LANtastic user account structure:
Offset Size Description (Table 01728)
00h 16 BYTEs blank-padded username (zero-padded for v4.x)
10h 16 BYTEs reserved (00h)
20h 32 BYTEs user description
40h BYTE privilege bits (see #01729)
41h BYTE maximum concurrent users
42h 42 BYTEs bit map for disallowed half hours, beginning on Sunday
(bit set if half-hour not an allowed time)
6Ch WORD internal (0002h)
6Eh 2 WORDs last login time
72h 2 WORDs account expiration date (MS-DOS-format year/month:day)
76h 2 WORDs password expiration date (0 = none)
7Ah BYTE number of days to extend password after change (1-31)
00h if no extension required
---v3.x---
7Bh 5 BYTEs reserved
---v4.x---
7Bh BYTE storage for first letter of user name when deleted (first
character is changed to 00h when deleting account)
7Ch BYTE extended privileges
7Dh 3 BYTEs reserved
Bitfields for LANtastic privilege bits:
Bit(s) Description (Table 01729)
7 bypass access control lists
6 bypass queue protection
5 treat as local process
4 bypass mail protection
3 allow audit entry creation
2 system manager
0 user cannot change password
--------N-215F88-----------------------------
INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
AX = 5F88h
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5F82h
--------N-215F97-----------------------------
INT 21 - LANtastic - COPY FILE
AX = 5F97h
CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
SI = source file handle
DI = destination file handle
Return: CF clear if successful
DX:AX = number of bytes copied
CF set on error
AX = error code
Note: copy is performed by server
--------N-215F98-----------------------------
INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
AX = 5F98h
DS:SI -> message buffer (see #01730)
Return: CF clear if successful
CF set on error
AX = error code
Note: v4.1- return no errors
SeeAls AX=5F99h
Format of LANtastic message buffer:
Offset Size Description (Table 01730)
00h BYTE reserved
01h BYTE message type
00h general
01h server warning
02h-7Fh reserved
80h-FFh user-defined
02h 16 BYTEs ASCIZ destination machine name
12h 16 BYTEs ASCIZ server name which user must be logged into
22h 16 BYTEs ASCIZ user name
32h 16 BYTEs ASCIZ originating machine name (filled in when received)
42h 80 BYTEs message text
--------N-215F99-----------------------------
INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
AX = 5F99h
ES:DI -> messsage buffer (see #01730)
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5F98h
--------N-215F9A-----------------------------
INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
AX = 5F9Ah
Return: CF clear if successful
DL = bits describing processing of received messages (see #01731)
CF set on error
AX = error code
SeeAls AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
Bitfields for unsolicited message processing flags:
Bit(s) Description (Table 01731)
0 beep before message is delivered
1 deliver message to message service
2 pop up message automatically (v3+)
--------N-215F9B-----------------------------
INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
AX = 5F9Bh
DL = bits describing processing for received unsolicited messages
(see #01731)
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5F9Ah,AX=5F9Eh
--------N-215F9C-----------------------------
INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
AX = 5F9Ch
CX = time to leave on screen in clock ticks
DH = 0-based screen line on which to place message
Return: CF clear if successful
CF set on error
AX = error code (0Bh)
Notes: the original screen contents are restored when the message is removed
the message will not appear, and an error will be returned, if the
screen is in a graphics mode
SeeAls AX=5F9Ah
--------N-215F9D-----------------------------
INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
AX = 5F9Dh
Return: DL = redirector control bits
bit 7: set to notify on print job completion
SeeAls AX=5F9Ah,AX=5F9Eh
--------N-215F9E-----------------------------
INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
AX = 5F9Eh
DL = redirector control bits (see AX=5F9Dh)
Return: nothing
SeeAls AX=5F9Bh,AX=5F9Dh
--------N-215FA0-----------------------------
INT 21 - LANtastic - GET QUEUE ENTRY
AX = 5FA0h
BX = queue entry index (0000h is first entry)
DS:SI -> buffer for queue entry (see #01732)
ES:DI -> ASCIZ server name in form "\\name"
Return: CF clear if successful
CF set on error
AX = error code
BX = entry index for next queue entry (BX-1 is current index)
SeeAls AX=5FA1h,AX=5FA2h
Format of LANtastic queue entry:
Offset Size Description (Table 01732)
00h BYTE status of entry (see #01733)
01h DWORD size of spooled file
05h BYTE type of entry (see #01734)
06h BYTE output control (see #01735)
07h WORD number of copies
09h DWORD sequence number of queue entry
0Dh 48 BYTEs pathname of spooled file
3Dh 16 BYTEs user who spooled file
4Dh 16 BYTEs name of machine from which file was spooled
5Dh WORD date file was spooled (see #01666 at AX=5700h)
5Fh WORD time file was spooled (see #01665 at AX=5700h)
61h 17 BYTEs ASCIZ destination device or user name
72h 48 BYTEs comment field
(Table 01733)
Values for status of LANtastic queue entry:
00h empty
01h being updated
02h being held
03h waiting for despool
04h being despooled
05h canceled
06h spooled file could not be accessed
07h destination could not be accessed
08h rush job
(Table 01734)
Values for type of LANtastic queue entry:
00h printer queue file
01h message
02h local file
03h remote file
04h to remote modem
05h batch processor file
Bitfields for output control:
Bit(s) Description (Table 01735)
6 don't delete (for mail)
5 mail file contains voice mail (v3+)
4 mail message has been read
3 response has been requested for this mail
--------N-215FA1-----------------------------
INT 21 - LANtastic - SET QUEUE ENTRY
AX = 5FA1h
BX = handle of opened queue entry
DS:SI -> queue entry (see #01732)
Return: CF clear if successful
CF set on error
AX = error code
Notes: the only queue entry fields which may be changed are output control,
number of copies, destination device, and comment
the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
call on the file "\\server\\@MAIL" or "\\server\@name" (for
printer queue entries)
SeeAls AX=5FA0h,AX=5FA2h,AX=5FA9h
--------N-215FA2-----------------------------
INT 21 - LANtastic - CONTROL QUEUE
AX = 5FA2h
BL = control command
00h start despooling (privileged)
01h halt despooling (privileged)
02h halt despooling at end of job (privileged)
03h pause despooler at end of job (privileged)
04h print single job (privileged)
05h restart current job (privileged)
06h cancel the current job
07h hold queue entry
08h release a held queue entry
09h make queue entry a rushed job (privileged)
CX:DX = sequence number to control (commands 06h-09h)
DX = physical printer number (commands 00h-05h)
00h-02h LPT1-LPT3
03h,04h COM1,COM2
other all printers
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
--------N-215FA3-----------------------------
INT 21 - LANtastic v3+ - GET PRINTER STATUS
AX = 5FA3h
BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
DS:SI -> buffer for printer status (see #01736)
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next physical printer number
Note: you must be logged in to the specified server
Format of LANtastic printer status:
Offset Size Description (Table 01736)
00h BYTE printer state (see #01737)
01h WORD queue index of print job being despooled
FFFFh if not despooling--ignore all following fields
03h WORD actual characters per second being output
05h DWORD number of characters actually output so far
09h DWORD number of bytes read from spooled file so far
0Dh WORD copies remaining to print
Bitfields for LANtastic printer state:
Bit(s) Description (Table 01737)
7 printer paused
0-6 0 printer disabled
1 will stop at end of job
2 print multiple jobs
--------N-215FA4-----------------------------
INT 21 - LANtastic v3+ - GET STREAM INFO
AX = 5FA4h
BX = 0-based stream index number
DS:SI -> buffer for stream information (see #01738)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next stream number
SeeAls AX=5FA5h
Format of LANtastic stream information:
Offset Size Description (Table 01738)
00h BYTE queueing of jobs for logical printer (0=disabled,other=enabled)
01h 11 BYTEs logical printer resource template (may contain ? wildcards)
--------N-215FA5-----------------------------
INT 21 - LANtastic v3+ - SET STREAM INFO
AX = 5FA5h
BX = 0-based stream index number
DS:SI -> buffer containing stream information (see #01738)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5FA4h
--------N-215FA7-----------------------------
INT 21 - LANtastic - CREATE USER AUDIT ENTRY
AX = 5FA7h
DS:DX -> ASCIZ reason code (max 8 bytes)
DS:SI -> ASCIZ variable reason string (max 128 bytes)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must be logged in to the specified server and have the "U"
privilege to execute this call
--------N-215FA9-----------------------------
INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
AX = 5FA9h
BX = handle of opened queue entry
DS:SI -> queue entry (see #01732)
Return: CF clear if successful
CF set on error
AX = error code
Note: functions exactly the same as AX=5FA1h except the spooled filename is
also set. This call supports direct despooling.
SeeAls AX=5FA1h
--------N-215FB0-----------------------------
INT 21 - LANtastic - GET ACTIVE USER INFORMATION
AX = 5FB0h
BX = server login entry index
DS:SI -> buffer for active user entry (see #01739)
ES:DI -> ASCIZ machine name in form "\\server"
Return: CF clear if successful
CF set on error
AX = error code
BX = next login index
SeeAls AX=5FB2h
Format of LANtastic active user entry:
Offset Size Description (Table 01739)
00h WORD virtual circuit number
02h BYTE login state (see #01740)
03h BYTE last command issued (see #01741)
04h 5 BYTEs number of I/O bytes (40-bit unsigned number)
09h 3 BYTEs number of server requests (24-bit unsigned)
0Ch 16 BYTEs name of user who is logged in
1Ch 16 BYTEs name of remote logged in machine
2Ch BYTE extended privileges (v4+???)
bit 0: user cannot change his password
2Dh WORD time left in minutes (0000h = unlimited) (v4+???)
Bitfields for login state:
Bit(s) Description (Table 01740)
0 fully logged in
1 remote program load login
2 user has system manager privileges
3 user can create audit entries
4 bypass mail protection
5 treat as local process
6 bypass queue protection
7 bypass access control lists
(Table 01741)
Values for last LANtastic command:
00h login
01h process termination
02h open file
03h close file
04h create file
05h create new file
06h create unique file
07h commit data to disk
08h read file
09h write file
0Ah delete file
0Bh set file attributes
0Ch lock byte range
0Dh unlock byte range
0Eh create subdirectory
0Fh remove subdirectory
10h rename file
11h find first matching file
12h find next matching file
13h get disk free space
14h get a queue entry
15h set a queue entry
16h control the queue
17h return login information
18h return link description
19h seek on file
1Ah get server's time
1Bh create audit entry
1Ch open file in multitude of modes
1Dh change password
1Eh disable account
1Fh local server file copy
---v3+---
20h get username from account file
21h translate server's logical path
22h make indirect file
23h get indirect file contents
24h get physical printer status
25h get logical print stream info
26h set logical print stream info
27h get user's account record
---v4+---
28h request server shutdown
29h cancel server shutdown
2Ah stuff server's keyboard
2Bh write then commit data to disk
2Ch set extended queue entry
2Dh terminate user from server
2Eh enable/disable logins
2Fh flush server caches
30h change username
31h get extended queue entry
(same as get queue, but can return named fields blanked)
--------N-215FB1-----------------------------
INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
AX = 5FB1h
DS:SI -> 64-byte buffer for link description
ES:DI -> ASCIZ machine and shared directory name in form
"\\machine\shared-resource"
Return: CF clear if successful
CX = access control list privileges for requesting user (see #01742)
CF set on error
AX = error code
Bitfields for LANtastic access control list:
Bit(s) Description (Table 01742)
4 (I) allow expansion of indirect files
5 (A) allow attribute changing
6 (P) allow physical access to device
7 (E) allow program execution
8 (N) allow file renaming
9 (K) allow directory deletion
10 (D) allow file deletion
11 (L) allow file/directory lookups
12 (M) allow directory creation
13 (C) allow file creation
14 (W) allow open for write and writing
15 (R) allow open for read and reading
--------N-215FB2-----------------------------
INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
AX = 5FB2h
BX = username entry index (0 for first)
DS:SI -> 16-byte buffer for username
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next queue entry index
SeeAls AX=5FB0h
--------N-215FB3-----------------------------
INT 21 - LANtastic v3+ - TRANSLATE PATH
AX = 5FB3h
DS:SI -> 128-byte buffer for ASCIZ result
ES:DI -> full ASCIZ path, including server name
DX = types of translation to be performed
bit 0: expand last component as indirect file
bit 1: return actual path relative to server's physical disk
Return: CF clear if successful
CF set on error
AX = error code
Note: always expands any indirect files along the path
SeeALs AX=5FB4h,INT 21/AH=60h
--------N-215FB4-----------------------------
INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
AX = 5FB4h
DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
ES:DI -> full ASCIZ path of indirect file to create, incl machine name
Return: CF clear if successful
CF set on error
AX = error code
Note: the contents of the indirect file may be any valid server-relative path
SeeAls AX=5FB3h,AX=5FB5h
--------N-215FB5-----------------------------
INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
AX = 5FB5h
DS:SI -> 128-byte buffer for ASCIZ indirect file contents
ES:DI -> full ASCIZ path of indirect file
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5FB4h
--------N-215FB6-----------------------------
INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
AX = 5FB6h
ES:DI -> pointer to ASCIZ default user name, immediately followed by
ASCIZ password
BL = adapter number to use for default login attempt
FFh try all valid adapters
00h-05h try adapter 0-5 explicitly
Return: CF clear if successful
CF set on error
AX = error code
Notes: call with ES:DI -> two nulls to disable auto-login
SeeAls AX=5FB7h
--------N-215FB7-----------------------------
INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
AX = 5FB7h
ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
Return: CF clear if successful
DL = adapter number used for default login attempt
FFh all valid adapters will be tried
00h-05h specified adapter will be tried explicitly
CF set on error
AX = error code
SeeAls AX=5F81h,AX=5FB6h
--------N-215FC0-----------------------------
INT 21 - LANtastic - GET TIME FROM SERVER
AX = 5FC0h
DS:SI -> time block (see #01743)
ES:DI -> ASCIZ server name to get time from
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AH=E7h"Novell"
Format of LANtastic time block:
Offset Size Description (Table 01743)
00h WORD year
02h BYTE day
03h BYTE month
04h BYTE minutes
05h BYTE hour
06h BYTE hundredths of second
07h BYTE second
--------N-215FC8-----------------------------
INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
AX = 5FC8h
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> ASCIZ reason string (80 characters)
CX = number of minutes until shutdown (0 = immediate)
DX = option flags (see #01744)
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5FC9h
Bitfields for LANtastic option flags:
Bit(s) Description (Table 01744)
0 auto reboot
1 do not notify users
2 halt after shutdown
3 shutdown due to power fail (used by UPS)
4-7 reserved
8-14 user definable
15 reserved
--------N-215FC9-----------------------------
INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
AX = 5FC9h
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
SeeAls AX=5FC8h
--------N-215FCA-----------------------------
INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
AX = 5FCAh
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> ASCIZ string to stuff (128 bytes)
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
maximum number of characters that can be stuffed is determined by the
server's RUN BUFFER SIZE.
SeeAls INT 16/AH=05h
--------N-215FCB-----------------------------
INT 21 - LANtastic v4.1+ - TERMINATE USER
AX = 5FCBh
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> blank-padded username. A null char = wildcard.
DS:DX -> blank-padded machine name. A null char = wildcard.
CX = minutes until termination (0 = immediate)
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
you cannot log yourself out using this call
SeeAls AX=5F82h
--------N-215FCC-----------------------------
INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
AX = 5FCCh
ES:DI -> ASCIZ server name in form "\\machine"
CX = bit values (value of bits you want to set) (see #01745)
DX = bit mask (bits you are interested in, 0 = get only) (see #01745)
Return: CF clear if successful
CX = control bits after call (see #01745)
CF set on error
AX = error code
Note: you must have the "S" privilege to SET, anyone can GET.
Bitfields for control bits:
Bit(s) Description (Table 01745)
0 disable logins
--------N-215FCD-----------------------------
INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
AX = 5FCDh
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call.
--------N-215FD0-----------------------------
INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
AX = 5FD0h
Return: CF clear if successful
CX = redirected printer timeout in clock ticks of 55ms
0000h if timeout disabled
CF set on error
AX = error code
SeeAls AX=5FD1h
--------N-215FD1-----------------------------
INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
AX = 5FD1h
CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
Return: CF clear if successful
CF set on error
AX = error code
SeeAls AX=5FD0h
--------N-215FE0-----------------------------
INT 21 C - LANtastic - GET DOS SERVICE VECTOR
AX = 5FE0h
Return: CF clear if successful
ES:BX -> current FAR service routine
CF set on error
AX = error code
Note: the service routine is called by the LANtastic redirector whenever DOS
may safely be called, permitting external TSRs and drivers to hook
into LANtastic's DOS busy flag checking
SeeAls AX=5FE1h,INT 28,INT 2A/AH=84h
--------N-215FE1-----------------------------
INT 21 - LANtastic - SET DOS SERVICE VECTOR
AX = 5FE1h
ES:BX -> FAR routine to call when DOS services are available
Return: CF clear if successful
CF set on error
AX = error code
Note: new handler must chain to previous handler as its first action
SeeAls AX=5FE0h
--------N-215FE2-----------------------------
INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
AX = 5FE2h
Return: CF clear if successful
ES:BX -> current FAR message service routine
CF set on error
AX = error code
SeeAls AX=5FE0h,AX=5FE3h
--------N-215FE3-----------------------------
INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
AX = 5FE3h
ES:BX -> FAR routine for processing network messages
Return: CF clear if successful
CF set on error
AX = error code
Notes: handler must chain to previous handler as its first action
on invocation, ES:BX -> just-received message
SeeAls AX=5FE2h
--------D-2160-------------------------------
INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
AH = 60h
DS:SI -> ASCIZ filename or path
ES:DI -> 128-byte buffer for canonicalized name
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
AH = 00h or 3Ah (DOS 6.1/6.2 for character device)
AL = destroyed (00h or 2Fh or 5Ch or last character of current
directory on drive)
buffer filled with qualified name of form D:\PATH\FILE.EXT or
\\MACHINE\PATH\FILE.EXT
Desc: determine the canonical name of the specified filename or path,
corresponding to the undocumented TRUENAME command in COMMAND.COM
Notes: the input path need not actually exist
letters are uppercased, forward slashes converted to backslashes,
asterisks converted to appropriate number of question marks, and
file and directory names are truncated to 8.3 if necessary. (DR DOS
3.41 and 5.0 do not expand asterisks)
'.' and '..' in the path are resolved
filespecs on local drives always start with "d:", those on network
drives always start with "\\"
if path string is on a JOINed drive, the returned name is the one that
would be needed if the drive were not JOINed; similarly for a
SUBSTed, ASSIGNed, or network drive letter. Because of this, it is
possible to get a qualified name that is not legal under the current
combination of SUBSTs, ASSIGNs, JOINs, and network redirections
under DOS 3.3 through 6.00, a device name is translated differently if
the device name does not have an explicit directory or the directory
is \DEV (relative directory DEV from the root directory works
correctly). In these cases, the returned string consists of the
unchanged device name and extension appended to the string X:/
(forward slash instead of backward slash as in all other cases) where
X is the default or explicit drive letter.
under MS-DOS 7.0, this call returns the short name for any
long-filename portions of the provided pathname or filename
functions which take pathnames require canonical paths if invoked via
INT 21/AX=5D00h
supported by OS/2 v1.1 compatibility box
NetWare 2.1x does not support characters with the high bit set; early
versions of NetWare 386 support such characters except in this call.
In addition, NetWare returns error code 3 for the path "X:\"; one
should use "X:\." instead.
Novell DOS 7 reportedly has difficulty with non-MS-DOS filenames on
network drives, and can return "D:" instead of "SERVER/VOLUME"
for DOS 3.3-6.0, the input and output buffers may be the same, as the
canonicalized name is built in an internal buffer and copied to the
specified output buffer as the very last step
for DR DOS 6.0, this function is not automatically called when on a
network. Device drivers reportedly cannot make this call from their
INIT function. Using the same pointer for both input and output
buffers is not supported in the April 1992 and earlier versions of
DR DOS
Windows for Workgroups 3.11, Windows95 and even MS-DOS 7.00 only
return the local drive path; to obtain network paths use
INT 21/AX=5F02h or INT 21/AX=5F46h instead
Corel's CORELCDX and MSCDEX without the /S switch return canonical
names of the form "\\D.\A.\path", where "D" is the CD-ROM drive
letter and "A" appears to indicate the first physical CD-ROM drive;
MSCDEX with the /S switch returns a canonical name with embedded
blanks. Novell DOS 7 NWCDEX as of the 11/16/94 update returns the
same canonical path as MSCDEX; earlier revisions returned
"Cdex. D:\path", where "D" is the CD-ROM drive letter
the Windows95 MSCDEX-replacement VxD returns "D:\path", even though the
MS-DOS 7.00 MSCDEX behaves identically to older versions (above)
BUG: Windows95 incorrectly treats filenames where the first two characters
after the drive letter and colon are both slashes (either forward
or backward) as a UNC (network name) and requires several seconds
to attempt to resolve the name before returning an unchanged
string
SeeAls AX=5F02h,AX=5FB3h,AX=7160h/CL=00h,INT 2F/AX=1123h,INT 2F/AX=1221h
--------D-2161-------------------------------
INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
AH = 61h
Return: AL = 00h
Note: this function does nothing and returns immediately
--------O-2161--BP6467-----------------------
INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
AH = 61h
BP = 6467h ("dg")
AL = function
00h list (i.e. get)
01h add
02h delete
BX = drive number
CX = size of buffer
SI = type (0002h JOIN, 0003h SUBST)
ES:DI -> buffer
Return: CF clear if successful
AX = 0000h
ES:DI buffer filled, if appropriate
CF set on error
AX = error code
Notes: used by JOIN and SUBST to communicate with the OS/2 file system
for function 00h (list), the ES:DI buffer is filled with the ASCIZ
JOIN/SUBST path or an empty string if the drive is not JOINed/SUBSTed
also supported by OS/2 v2.0+ Virtual DOS Machines
--------D-2162-------------------------------
INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
AH = 62h
Return: BX = segment of PSP for current process
Notes: this function does not use any of the DOS-internal stacks and may
thus be called at any time, even during another INT 21h call
the current PSP is not necessarily the caller's PSP
identical to the undocumented AH=51h
SeeAls AH=50h,AH=51h
--------U-216262SI1994-----------------------
INT 21 - ENVLOCK - INSTALLATION CHECK
AX = 6262h
SI = 1994h
Return: AX = 1994h if installed
ES = ENVLOCK's resident segment
Notes: to deactivate ENVLOCK, zero out the byte at ES:[0102h]
Program: ENVLOCK is a TSR by Alexander Yanovsky (aka PC Hawk) that forces
other TSRs to deallocate their environment when they stay resident
--------D-216300-----------------------------
INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
AX = 6300h
Return: CF clear if successful
DS:SI -> lead byte table (see #01746)
CF set on error
AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
Notes: does not preserve any registers other than SS:SP
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately
SeeAls AX=6301h,AH=07h,AH=08h,AH=0Bh
Format of double-byte character set lead byte table entry:
Offset Size Description (Table 01746)
00h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
02h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
...
N 2 BYTEs 00h,00h end flag
--------D-216300-----------------------------
INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
AX = 6300h
Return: AL = error code
00h successful
DS:SI -> DBCS table (see #01746)
all other registers except CS:IP and SS:SP destroyed
FFh not supported
Notes: probably identical to AH=63h/AL=00h for DOS 2.25
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately, WITHOUT setting DS:SI;
only the Far East versions of MS-DOS 3.2 and 3.3 supported this call
the US version of DOS 4.0+ accepts this function, but returns an empty
list
IBM DOS 6.1 SYS.COM assumes that CF is set on error
SeeAls AX=6300h"DOS 2.25"
--------D-216301-----------------------------
INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
AX = 6301h
DL = new mode
00h return only full characters on DOS keyboard input functions
01h return partially-formed (interim) characters also
Return: AL = status
00h successful
FFh invalid mode
Notes: Novell DOS 7 simply stores DL in the caller's PSP (see #01378 at AH=26h)
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately; only the Far East versions
of MS-DOS 3.2 and 3.3 supported this call
SeeAls AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6302h
--------D-216302-----------------------------
INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
AX = 6302h
Return: AL = status
00h successful
DL = current input mode
00h return only full characters (clears interim flag)
01h return partial characters (sets interim flag)
FFh not supported
Notes: Novell DOS 7 simply reads the value out of the caller's PSP, so it
can return values other than 00h or 01h if the last call to AX=6301h
used another value
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately, WITHOUT setting DL; only
the Far East versions of MS-DOS 3.2 and 3.3 supported this call
SeeAls AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6301h
--------v-216303------------------------
INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
AX = 6303h
Return: BX = 6303h if resident
SeeAls AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS"
--------v-216304------------------------
INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
AX = 6304h
Return: BX = 6304h if resident
SeeAls AX=6303h"VIRUS",AX=6969h"VIRUS"
--------D-2164-------------------------------
INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
AH = 64h
AL = flag
00h (default) call device driver function 5 (non-dest read)
before INT 21/AH=01h,08h,0Ah
nonzero don't call driver function 5
Return: nothing (MS-DOS)
CF set, AX=error code??? (DR DOS 5.0, which does not support this call)
Notes: this function is called by the DOS 3.3+ PRINT.COM
under MS-DOS, this function does not use any of the DOS-internal stacks
and may thus be called at any time, even during another DOS call
SeeAls AH=01h,AH=08h,AH=0Ah,AX=5D06h
--------O-2164--DX0000-----------------------
INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
AH = 64h
DX = 0000h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
SeeAls AH=64h/DX=0001h,INT 21/AH=4Bh
--------O-2164--DX0001-----------------------
INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
AH = 64h
DX = 0001h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
ES:DI -> new ASCIZ title (max 12 char) or "" to restore default title
Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
SeeAls AH=64h/DX=0000h,AH=64h/DX=0002h,INT 15/AH=12h/BH=05h
--------O-2164--DX0002-----------------------
INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
AH = 64h
DX = 0002h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
ES:DI -> 13-byte buffer for current title
Return: buffer filled (single 00h if title never changed)
Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
SeeAls AH=64h/DX=0000h,AH=64h/DX=0001h,INT 15/AH=12h/BH=05h
--------O-2164--DX0003-----------------------
INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
AH = 64h
DX = 0003h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: AL = highest drive supported
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
used by WinOS2
not supported by OS/2 Warp 3.0, check list of lists instead (see #01627)
SeeAls AH=52h
--------O-2164--DX0004-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
AH = 64h
DX = 0004h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: AX = number of entries in OS/2 JFT for VDM
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
in an OS/2 VDM, the DOS Job File Table in the PSP contains an index
into the OS/2 JFT in the Per-Task Data Area rather than an SFT index
because the OS/2 SFT can contain more than 255 entries
--------O-2164--DX0005-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
AH = 64h
DX = 0005h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
DI = DOS file handle
Return: AX = value of second flags word from OS/2 SFT entry for file
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
the OS/2 SFT has two flags words rather than DOS's one word, and this
function provides access to the word which is not present in DOS
--------O-2164--DX0006-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
AH = 64h
DX = 0006h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
ES:DI -> ASCIZ filespec
DS = base address for loading
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
this function is only supported by the kernel debugging version of
OS2KRNL
--------O-2164--DX0007-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
AH = 64h
DX = 0007h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: AX = call gate address
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
used by WinOS2 to make direct calls to OS2KRNL, bypassing the overhead
of DOSKRNL
--------O-2164--DX0008-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
AH = 64h
DX = 0008h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: DS:DX -> '$'-terminated message "Loading. Please wait."
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
this function permits National Language Support for the initial message
displayed while WinOS2 starts a full-screen session
--------O-2164--CX636C-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
AH = 64h
CX = 636Ch ("cl")
BX = API ordinal (see #01747)
other registers as appropriate for API call
Return: as appropriate for API call
SeeAls AH=64h/BX=0025h,AH=64h/BX=00B6h,AH=64h/BX=00CBh
(Table 01747)
Values for OS/2 API ordinal:
0025h DOS32StartSession
0082h DosGetCP
00B6h DosQFSAttach
00BFh DosEditName
00CBh DosForceDelete
0144h Dos32CreateEventSem
0145h Dos32OpenEvenSem
0146h Dos32CloseEventSem
0147h Dos32ResetEventSem
0148h Dos32PostEventSem
0149h Dos32WaitEventSem
014Ah Dos32QueryEventSem
014Bh Dos32CreateMutexSem
014Ch Dos32OpenMutexSem
014Dh Dos32CloseMutexSem
014Eh Dos32RequestMutexSem
014Fh Dos32ReleaseMutexSem
0150h Dos32QueryMutexSem
0151h Dos32CreateMuxWaitSem
0152h Dos32OpenMuxWaitSem
0153h Dos32CloseMuxWaitSem
0154h Dos32WaitMuxWaitSem
0155h Dos32AddMuxWaitSem
0156h Dos32DeleteMuxWaitSem
0157h Dos32QueryMuxWaitSem
--------O-2164--BX0025-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
AH = 64h
BX = 0025h (API ordinal)
CX = 636Ch ("cl")
DS:SI -> STARTDATA structure (see #01748)
Return: AX = return code
SeeAls AH=64h/CX=636Ch,AH=64h/BX=00B6h
Format of OS/2 Virtual DOS Machine STARTDATA structure:
Offset Size Description (Table 01748)
00h WORD length of structure (must be 0018h,001Eh,0020h,0032h,or 003Ch)
02h WORD relation of new process to caller (00h independent, 01h child)
04h WORD fore/background (00h foreground, 01h background)
06h WORD trace options (00h-02h, 00h = no trace)
08h DWORD pointer to ASCIZ program title (max 62 chars) or 0000h:0000h
0Ch DWORD pointer to ASCIZ program name (max 128 chars) or 0000h:0000h
10h DWORD pointer to ASCIZ program args (max 144 chars) or 0000h:0000h
14h DWORD "TermQ" (currently reserved, must be 00000000h)
18h DWORD pointer to environment (max 486 bytes) or 0000h:0000h
1Ch WORD inheritance (00h or 01h)
1Eh WORD session type
00h OS/2 session manager determines type (default)
01h OS/2 full-screen
02h OS/2 window
03h PM
04h VDM full-screen
07h VDM window
20h DWORD pointer to ASCIZ icon filename (max 128 chars) or 0000h:0000h
24h DWORD "PgmHandle" (currently reserved, must be 00000000h)
28h WORD "PgmControl"
2Ah WORD initial column
2Ch WORD initial row
2Eh WORD initial width
30h WORD initial height
32h WORD reserved (0)
34h DWORD "ObjectBuffer" (currently reserved, must be 00000000h)
38h DWORD "ObjectBufferLen" (currently reserved, must be 00000000h)
--------O-2164--BX00B6-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
AH = 64h
BX = 00B6h (API ordinal)
CX = 636Ch (magic value "cl")
DS = user's data segment
ES:DI -> FSQAttachStruc (see #01749)
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
AX = 0000h
data buffer filled
SeeAls AH=64h/CX=636Ch
Format of OS/2 Virtual DOS Machine FSQAttachStruc:
Offset Size Description (Table 01749)
00h DWORD reserved
04h DWORD pointer to the offset of the data buffer length
08h DWORD pointer to the offset of the data buffer
0Ch WORD FSA Info level
0Eh WORD ordinal index into table
10h DWORD pointer to the offset of the device name
Notes: The segment value of the buffer, buffer length, and device
name MUST all be the same. It is defined on entry in the DS
register. The details of each info level are defined in the
OS/2 CP Reference.
--------O-2164--BX00CB-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
AH = 64h
BX = 00CBh (API ordinal)
CX = 636Ch (magic value "cl")
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
Desc: delete a file without saving it to the undelete directory
SeeAls AH=41h,AH=64h/CX=636Ch
----------216500-----------------------------
INT 21 - Windows95 (OSR2) - SET GENERAL INTERNATIONALIZATION INFO
AX = 6500h
ES:DI -> buffer containing internationalization info (see #01750)
CX = size of buffer (>= 7)
Return: CF clear if successful
AX = system code page
CX = number of bytes copied from supplied buffer
CF set on error
AX = error code
Note: this function will not overwrite the country or code-page numbers,
but can be used to modify all other data about the country and
code page
SeeAls AH=65h"GET EXTENDED",AH=70h
--------D-2165-------------------------------
INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
AH = 65h
AL = info ID
01h get general internationalization info (see also AX=6500h)
02h get pointer to uppercase table
03h (DOS 6.2+ COUNTRY.SYS) get pointer to lowercase table
04h get pointer to filename uppercase table
05h get pointer to filename terminator table
06h get pointer to collating sequence table
07h (DOS 4.0+) get pointer to Double-Byte Character Set table
BX = code page (FFFFh=global code page) (see #01757)
DX = country ID (FFFFh=current country)
ES:DI -> country information buffer (see #01750)
CX = size of buffer (>= 5)
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
CX = size of country information returned
ES:DI -> country information (see #01750)
Notes: AL=05h appears to return same info for all countries and codepages; it
has been documented for DOS 5+, but was undocumented in earlier
versions
NLSFUNC must be installed to get info for countries other than the
default
subfunctions 02h and 04h are identical under OS/2
subfunction 03h apparently supports only codepage 866 in DOS 6.2x
SeeAls AH=38h,AH=70h"MS-DOS 7",INT 2F/AX=1401h,INT 2F/AX=1402h
SeeAls INT 2F/AX=14FEh
Format of country information:
Offset Size Description (Table 01750)
00h BYTE info ID
---if info ID = 01h---
01h WORD size of following info in bytes
03h WORD country ID (see #01400 at AH=38h)
05h WORD code page (see #01757)
07h 34 BYTEs country-dependent info (see #01399 at AH=38h)
---if info ID = 02h---
01h DWORD pointer to uppercase table (see #01751)
---if info ID = 03h---
01h DWORD pointer to lowercase table (see #01752)
---if info ID = 04h---
01h DWORD pointer to filename uppercase table (see #01753)
---if info ID = 05h---
01h DWORD pointer to filename character table (see #01754)
---if info ID = 06h---
01h DWORD pointer to collating table (see #01755)
---if info ID = 07h (DOS 4.0+)---
01h DWORD pointer to DBCS lead byte table (see #01756)
SeeAls #01775
Format of uppercase table:
Offset Size Description (Table 01751)
00h WORD table size (0080h)
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
SeeAls #01750,#01753
Format of lowercase table:
Offset Size Description (Table 01752)
00h WORD table size (0100h)
02h 256 BYTEs lowercase equivalents (if any) of chars 00h to FFh
SeeAls #01750,#01753
Format of filename uppercase table:
Offset Size Description (Table 01753)
00h WORD table size (0080h)
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
SeeAls #01750,#01751
Format of filename terminator table:
Offset Size Description (Table 01754)
00h WORD table size (not counting this word)
02h BYTE ??? (01h for MS-DOS 3.30-6.00)
03h BYTE lowest permissible character value for filename
04h BYTE highest permissible character value for filename
05h BYTE ??? (00h for MS-DOS 3.30-6.00)
06h BYTE first excluded character in range \ all characters in this
07h BYTE last excluded character in range / range are illegal
08h BYTE ??? (02h for MS-DOS 3.30-6.00)
09h BYTE number of illegal (terminator) characters
0Ah N BYTEs characters which terminate a filename: ."/\[]:|<>+=;,
Note: partially documented for DOS 5+, but undocumented for earlier versions
SeeAls #01750
Format of collating table:
Offset Size Description (Table 01755)
00h WORD table size (0100h)
02h 256 BYTEs values used to sort characters 00h to FFh
SeeAls #01750
Format of DBCS lead byte table:
Offset Size Description (Table 01756)
00h WORD length of table in ranges
02h 2N BYTEs start/end for N lead byte ranges
WORD 0000h (end of table)
SeeAls #01750
--------D-2165-------------------------------
INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
AH = 65h
AL = function
20h capitalize character
DL = character to capitalize
Return: DL = capitalized character
21h capitalize string
DS:DX -> string to capitalize
CX = length of string
22h capitalize ASCIZ string
DS:DX -> ASCIZ string to capitalize
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
Note: these calls have been documented for DOS 5+, but were undocumented in
DOS 4.x.
BUG: Novell DOS 7 Update 15 crashes on AX=6521h when CX=0000h
--------D-216523-----------------------------
INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
AX = 6523h
DL = character
DH = second character of double-byte character (if applicable)
Return: CF set on error
CF clear if successful
AX = type
00h no
01h yes
02h neither yes nor no
Note: supported by Novell DOS 7, though prior to Update 14, the results
depended on the kernel variant rather than the YESCHAR= or COUNTRY=
setting in CONFIG.SYS
BUG: Novell DOS commands and tools all use internal settings rather than
this function, so the Yes/No responses are dependent on the specific
country's variant being run rather than on the COUNTRY= setting
--------D-2165-------------------------------
INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
AH = 65h
AL = function
A0h capitalize filename character
DL = character to capitalize
Return: DL = capitalized character
A1h capitalize counted filename string
DS:DX -> filename string to capitalize
CX = length of string
A2h capitalize ASCIZ filename
DS:DX -> ASCIZ filename to capitalize
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
Note: nonfunctional in MS-DOS 4.00 through 6.00 due to a bug (the code sets a
pointer depending on the high bit of AL, but doesn't clear the
bit before branching by function number). Supported and
functional(!) in Novell DOS 7 (Update 15)
--------D-216601-----------------------------
INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
AX = 6601h
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
BX = active code page (see #01757)
DX = system code page (see #01757)
SeeAls AX=6602h
--------D-216602-----------------------------
INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
AX = 6602h
BX = active code page (see #01757)
DX = system code page (active page at boot time)
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
AX = EB41h (Novell NWDOS v7.0 when NLSFUNC not installed and
request was for previously-active code page)
SeeAls AX=6601h,INT 2F/AX=14FFh
(Table 01757)
Values for code page:
0 Reduced 7-bit ASCII [NetWare]
37 EBCDIC: US/Canada English (CECP) [Windows NT 3.51+]
38 EBCDIC: International (old)
111 Greek
112 Turkish
113 Yugoslavian
161 Arabic [Linux]
162 Arabic [Linux]
163 Arabic [Linux]
164 Arabic [Linux]
165 Arabic [Linux]
237 EBCDIC: Germany (CECP)
273 EBCDIC: ??? (CECP)
274 EBCDIC: Belgium
275 EBCDIC: Brazilian
277 EBCDIC: Danish/Norwegian (CECP)
278 EBCDIC: Finnish/Swedish (CECP)
280 EBCDIC: Italian (CECP)
281 EBCDIC: Japanese-E
284 EBCDIC: Latin-American/Spanish (CECP)
285 EBCDIC: UK English (CECP)
290 EBCDIC: Japanese Kana
297 EBCDIC: French (CECP)
367 US-ASCII (ISO 646-US, 7-bit)
420 EBCDIC: Arabic 1
423 EBCDIC: Greek
424 EBCDIC: Hebrew
437 US / English / PC-8 / IBM-2
500 EBCDIC: Belgium/Switzerland (CECP)
500 EBCDIC: International
646 (??? reserved for ISO 646 7-bit codepages)
667 Eastern Europe (Polish)
668 Eastern Europe (Slavic)
708 Arabic/Middle East
737 Greek (2)
775 Baltic / Baltic Rim
819 Latin-1 (ISO 8859-1)
850 Multilingual (Latin-1)
851 Greek
852 Slavic/Easter Europe (Latin-2) [DOS 5+]
853 Turkish (Latin-2)
854 Spanish
855 Cyrilic (1)
857 Turkish
860 Portugese
861 Icelandic
862 Hebrew
863 French Canadian
864 Arabic/Middle East
865 Nordic (Norwegian/Danish)
866 Russian (Cyrillic 2)
867 Czech
868 Arabic
869 Greek (1)
870 EBCDIC: Yugoslavia (Roece)
871 EBCDIC: Icelandic
874 Thailand
875 EBCDIC: Greek
880 Russian (Cyrillic GOST)
880 EBCDIC: Cyrillic
881 Latin 1 (ISO 8859-1)
882 Latin 2 (ISO 8859-2)
883 Latin 3 (ISO 8859-3)
884 Latin 4 (ISO 8859-4)
885 Latin 5 (ISO 8859-5)
891 unknown
897 Japanese (Shift-JIS)
903 unknown
904 unknown
905 EBCDIC: Turkish
912 Latin 2 (ISO 8859-2: Eastern Europe)
913 (??? reserved for Latin 3)
914 (??? reserved for Latin 4)
915 Cyrillic (ISO 8859-5: Latin/Cyrillic)
916 (??? reserved for ISO 8859-6: Latin/Arabic)
917 (??? reserved for ISO 8859-7: Latin/Greek)
918 EBCDIC: Arabic 2
919 (??? reserved for ISO 8859-9: Latin 5)
920 (??? reserved for ISO 8859-10: Latin 6/Sami)
932 DBCS: Japanese (Shift-JIS)
934 DBCS: Korean
936 DBCS: Chinese (PRC/ROC, Simplified/xGB)
938 DBCS: Taiwan
938 DBCS: Chinese (PRC/ROC)
942 DBCS: Japanese SAA
944 DBCS: Korean SAA
948 DBCS: Chinese SAA (PRC/ROC)
949 Korean (Unified Hangul; Extended Wansung)
950 Chinese Traditional, Big5 (Taiwan, Hong Kong)
966 Saudi Arabian
972 Hebrew (Israeli VT100)
999 reserved for user-definable codepages
1004 Desktop Publishing
1026 EBCDIC: Turkish (Latin 5)
1047 EBCDIC: International (CECP, de-facto EBCDIC-US)
1250 MSWIN: Eastern Europe (Latin 2)
1251 MSWIN: Cyrillic
1252 MSWIN: English/W. Europe/Standard (Latin 1)
1253 MSWIN: Greek (GRC)
1254 MSWIN: Turkish
1255 MSWIN: Hebrew
1256 MSWIN: Arabic
1257 MSWIN: Baltic (Estonian, Latvian, Lithuanian)
1258 MSWIN: Vietnamese
1361 ANSI???: Korean (Johab)
10000 MAC: International/Standard (Roman)
10006 MAC: Greek
10007 MAC: Cyrillic
10029 MAC: Latin 2
10079 MAC: Icelandic
10081 MAC: Turkish
10646 (should be reserved for the future ISO 10646 32-bit codepage???)
65400 OS/2: reserved for Glyphs
Notes: not all code pages are available in all versions of DOS or
DOS-compatibles, and many (particularly EBCDIC) have not been
implemented for *any* DOS to date
CECP = 'Country Extended CodePage' by IBM.
Unicode (UCS-2) is a 16-bit character codeset, covering all commonly
used characters from almost any language. Not all definitions are
fixed at the time of this writing. Unicode will be the future of
character coding for the foreseeable future, but is only the
"basic multilingual plane" (BMP) subset of 32-bit ISO 10646 codes
(UCS-4), a single character set standard covering requirements for
all countries and languages, which is still under construction.
The MS Windows 'ANSI' codepage 1252 (based on the MS Windows 3.0+
implementation) appears to be 100% compatible with the code sets
used by Amiga OS and Acorn Archimedes RISC-OS and is also a linear
subset of the 16bit UniCode code set (UCS-2); the actual ANSI
codepage is defined by ISO 8859-1 (Latin 1).
At least applications for OS/2 Warp 3 Presentation Manager can use
EBCDIC codepages, but the codepage ID assignments for EBCDIC
codepages are not known for OS/2. OS/2 SAA codepages are not
supported in CONFIG.SYS. Codepage 65400 "Glyphs" is not actually a
codepage, but a way to directly access the first 256 of the 383
glyphs from the current font set.
Novell DOS 7/DR DOS 6/Caldera OpenDOS undocumented codepage 853
does not necessarily match with MS-DOS' undocumented codepage 853.
Undocumented codepages 667 and 668 can be found in Russian's PTS/DOS
6.51 and S/DOS 1.x DISPLAY.CPI and contain some Eastern European
characters.
Novell NetWare 3.xx clients support UniCode and codepages 437, 850,
860, 863, 865, 897, 932, and 1252 (possibly more). NetWare 4.xx
clients also support 1250, 1251, 1256. Personal NetWare 1.0 (PNW),
as it was distributed in Europe, supports UniCode and codepages 437,
850 and 1252. Novell's Client32 for DOS/Windows supports 874, 932,
936, 949, 950, 1250 - 1257. For codesets not yet available, Novell
offers a reduced ASCII 7-bit support through a codepage 0 used as a
translation table to UniCode, that supports characters 32-127 except
92 ('\').
Format of DOS .CPI (Code Page Information) file header:
Offset Size Description (Table 01758)
00h BYTE ID tag
FFh FONT file (Standard for generic display or
printer font files used by MS-DOS, PC-DOS, DR DOS
and Novell DOS)
7Fh DRFONT file (Used by DR DOS 6.0 / Novell DOS 7 for
enhanced & compressed display font files. DR DOS 6.0
and Novell DOS 7 still support the standard FONT
files, thus allowing leaning of .CPI files from
MS-DOS to DR DOS / Novell DOS!)
01h 7 BYTEs ID string
"FONT " = FONT file (Standard for display or printer)
"DRFONT " = DRFONT file (Enhanced compressed format used
by DR DOS 6.0 / Novell DOS 7 for display fonts)
08h 8 BYTEs reserved (0)
10h WORD number of pointers (1)
12h BYTE type of pointers (1)
13h DWORD pointer to file offset of FontInfoHeader
(Generally pointing to the byte just after FontFileHeader,
that is 0000h:0017h. Due to extra data at offset 17h, this
value has changed with DR DOS 6.0 / Novell DOS 7 DRFONTs!
"MS-DOS 4.0 programmers reference" claimed word offset
+15h as an endmarker (0000h), but actually it is the
High-Word of the pointer.)
--- Extended FontFileHeader with DR DOS 6.0 / Novell DOS 7 DRFONTs: ---
17h BYTE number of fonts per codepage supported by this file
(N=4 with both DR DOS 6.0 / Novell DOS 7 DRFONT files)
18h N BYTEs cellsize (Height) of fonts 1..N
the cellsize corresponds with the character boxes height,
but is also the count of bytes used for each of the
characters inside the font data (as currently all fonts
are organized heightx8 and 8 pixel width is just one byte).
var N DWORDs file offsets of DisplayFontData.
Format of DOS .CPI file Font Information Header:
Offset Size Description (Table 01759)
00h WORD number of codepage entries
var N codepage entry headers (see #01760)
SeeAls #01758
Format of DOS .CPI file CodePage Entry Header:
Offset Size Description (Table 01760)
00h WORD size of this header (normally 1Ch)
02h DWORD offset of next entry, or 0000h:0000h or FFFFh:FFFFh if last
(if a valid "next" pointer but all of the fonts indicated in
the .CPI header have been processed, this field normally
points at an optional text area at the end of the .CPI file
containing copyright information)
06h WORD device type
01h display (FONT or DRFONT)
02h printer (FONT)
08h 8 BYTEs blank-padded device name string
10h WORD code page (see #01757)
12h 3 WORDs reserved (0)
18h DWORD pointer to Font Data Header (see #00222)
normally immediately follows this header
SeeAls #01758
Format of DOS .CPI file Font Data Header:
Offset Size Description (Table 01761)
00h WORD record type
0001h FONT
0002h DRFONT (DR DOS 6.0/Novell DOS 7 display font)
02h WORD number of fonts
04h WORD length of font data (display fonts)
??? (printer fonts)
06h var font data (#fonts * fontlength) bytes
SeeAls #01758
Format of DOS .CPI file ScreenFONT Header:
Offset Size Description (Table 01762)
00h 6 BYTEs display-font header (see #01764)
06h var display font data
SeeAls #01758
Format of .CPI file DRFONT Header:
Offset Size Description (Table 01763)
00h 6N BYTEs DisplayFONT headers for N fonts (see #01764)
M WORDs character index table for cell offsets in font data
currently 256 words in length
SeeAls #01758
Format of .CPI file DisplayFONT header:
Offset Size Description (Table 01764)
00h BYTE height of character cell
01h BYTE width of character cell (currently always 08h)
02h BYTE aspect ratio (height) (currently 00h, unused)
03h BYTE aspect ratio (width) (currently 00h, unused)
04h WORD number of characters per font (256)
SeeAls #01758
Format of .CPI file PrinterFONT header:
Offset Size Description (Table 01765)
00h WORD type of printer
0001h (4201.CPI, 1050.CPI, EPS.CPI)
0002h (4208.CPI, 5202.CPI, PPDS.CPI)
02h WORD bytes per hardware/download codepage-select escape sequence
(max 31, typically 12)
04h N BYTEs escape sequence to select hardware codepage
N BYTEs escape sequence to select download codepage
var download data for printer font (including escape sequence to
transfer data)
SeeAls #01758
--------D-2167-------------------------------
INT 21 - DOS 3.3+ - SET HANDLE COUNT
AH = 67h
BX = size of new file handle table for process
Return: CF clear if successful
CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
Desc: adjust the size of the per-process open file table, thus raising or
lowering the limit on the number of files the caller can open
simultaneously
Notes: if BX <= 20, no action is taken if the handle limit has not yet been
increased, and the table is copied back into the PSP if the limit
is currently > 20 handles
for file handle tables of > 20 handles, DOS 3.30 never reuses the
same memory block, even if the limit is being reduced; this can lead
to memory fragmentation as a new block is allocated and the existing
one freed
only the first 20 handles are copied to child processes in DOS 3.3-6.0
increasing the file handles here will not, in general, increase the
number of files that can be opened using the runtime library of a
high-level language such as C
Novell DOS 7 reportedly terminates the calling program if the JFT is
being reduced in size and there are any open file handles beyond
the portion of the JFT being retained
BUGS: the original release of DOS 3.30 allocates a full 64K for the handle
table on requests for an even number of handles
DR DOS 3.41 and 5.0 will lose track of any open file handles beyond
the portion of the JFT retained after the call; MS-DOS will indicate
error 04h if any of the JFT entries to be removed are open
SeeAls AH=26h,AH=86h
--------D-2168-------------------------------
INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
AH = 68h
BX = file handle
Return: CF clear if successful
all data still in DOS disk buffers is written to disk immediately,
and the file's directory entry is updated
CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
SeeAls AX=5D01h,AH=6Ah,INT 2F/AX=1107h
--------D-2169-------------------------------
INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
AH = 69h
AL = subfunction
00h get serial number
01h set serial number
BL = drive (0=default, 1=A, 2=B, etc)
BH = info level (00h only for DOS; OS/2 allows other levels)
DS:DX -> disk info (see #01766)
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
AX destroyed
(AL = 00h) buffer filled with appropriate values from extended BPB
(AL = 01h) extended BPB on disk set to values from buffer
Notes: does not generate a critical error; all errors are returned in AX
error 0005h given if no extended BPB on disk
does not work on network drives (error 0001h)
buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
extended BPB on disk
this function is supported under Novell NetWare versions 2.0A through
3.11; the returned serial number is the one a DIR would display,
the volume label is the NetWare volume label, and the file system
is set to "FAT16".
this function is not supported by Novell DOS 7 through Update 13, but
Personal NetWare 1.0 and Update 15 do support this function
the serial number is computed from the current date and time when the
disk is created; the first part is the sum of the seconds/hundredths
and month/day, the second part is the sum of the hours/minutes and
year
the volume label which is read or set is the one stored in the extended
BPB on disks formatted with DOS 4.0+, rather than the special root
directory entry used by the DIR command in COMMAND.COM (use AH=11h
to find that volume label)
SeeAls AX=440Dh"DOS 3.2+"
Format of disk inf
Offset Size Description (Table 01766)
00h WORD 0000h (info level)
02h DWORD disk serial number (binary)
06h 11 BYTEs volume label or "NO NAME " if none present
11h 8 BYTEs (AL=00h only) filesystem type (see #01767)
Note: under MS-DOS 7.0 or a Windows95 DOS box, the volume label field can be
all blanks even when a volume label has been set (the Win95
installation seems to blank the volume label field in the partition
boot sector; once LABEL has been run, the volume label is reported
correctly)
SeeAls AH=4Eh
(Table 01767)
Values for filesystem type:
"FAT12 " 12-bit FAT
"FAT16 " 16-bit FAT
"CDROM " High-Sierra CD-ROM filesystem
"CD001 " ISO 9660 CD-ROM filesystem
"CDAUDIO " audio CD
SeeAls #01766
--------O-2169-------------------------------
INT 21 - DR DOS 5.0 - NULL FUNCTION
AH = 69h
Return: AL = 00h
SeeAls AH=18h
--------v-216969-----------------------------
INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
AX = 6969h
Return: AX = 0666h if resident
SeeAls AX=58CCh,AX=6304h"VIRUS",AH=71h"VIRUS"
--------d-2169FFDX0000-----------------------
INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
AX = 69FFh
DX = 0000h
BX = CB00h (magic value)
Return: ES:BX -> CUBITR.EXE handler for INT 21
InstallCheck: test that the first eight bytes at the returned interrupt
handler are EBh 07h "CUBITR" (a short jump around the signature
followed by the signature)
Note: the byte following the signature (i.e. ES:[BX+8]) indicates whether
CUBITR is active (01h) or disabled (00h)
SeeAls AX=69FFh/DX=CFBFh
Index: installation check;CUBIT
--------d-2169FFDXCFBF-----------------------
INT 21 U - CUBIT v4.00 - UNINSTALL
AX = 69FFh
DX = CFBFh
CX = EFCFh
BX = CB00h (magic value)
Return: ES:BX -> CUBITR.EXE handler for INT 21
CX = status
2020h successful
2222h failed
Note: if DX is neither 0000h nor CFBFh on entry, some other code is executed
SeeAls AX=69FFh/DX=0000h
--------D-216A-------------------------------
INT 21 U - DOS 4.0+ - COMMIT FILE
AH = 6Ah
BX = file handle
Return: CF clear if successful
AH = 68h
CF set on error
AX = error code (06h) (see #01680 at AH=59h/BX=0000h)
Note: identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
in DOS 4.x
SeeAls AH=68h
--------D-216B-------------------------------
INT 21 U - DOS 4.0 internal - IFS IOCTL
AH = 6Bh
AL = subfunction
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 = error code (see #01680 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Notes: passed through to INT 2F/AX=112Fh with AX on top of stack
Novell DOS 7 Update 15 returns CF set/AX=0001h (invalid function)
SeeAls AH=6Bh"DOS 5",INT 2F/AX=112Fh
--------D-216B-------------------------------
INT 21 U - DOS 5+ - NULL FUNCTION
AH = 6Bh
Return: AL = 00h
Note: this function does nothing and returns immediately
SeeAls AH=6Bh"DOS 4"
--------D-216C00-----------------------------
INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
AX = 6C00h
BL = open mode as in AL for normal open (see also AH=3Dh)
bit 7: inheritance
bits 4-6: sharing mode
bit 3 reserved
bits 0-2: access mode
100 read-only, do not modify file's last-access time (DOS 7.0)
BH = flags
bit 6 = auto commit on every write (see also AH=68h)
bit 5 = return error rather than doing INT 24h
bit 4 = (FAT32) extended size (allow 4GB files instead of 2GB)
CX = create attribute (see #01769)
DL = action if file exists/does not exist (see #01770)
DH = 00h (reserved)
DS:SI -> ASCIZ file name
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
AX = file handle
CX = status (see #01768)
Notes: the PC LAN Program only supports existence actions (in DL) of 01h,
10h with sharing=compatibility, and 12h
DR DOS reportedly does not support this function and does not return
an "invalid function call" error when this function is used.
the documented bits of BX are stored in the SFT when the file is opened
(see #01641,#01642)
BUG: this function has bugs (at least in DOS 5.0 and 6.2) when used with
drives handled via the network redirector (INT 2F/AX=112Eh):
- CX (attribute) is not passed to the redirector if DL=11h,
- CX does not return the status, it is returned unchanged because
DOS does a PUSH CX/POP CX when calling the redirector.
SeeAls AH=3Ch,AH=3Dh,AX=6C01h,AX=7160h/CL=00h,INT 2F/AX=112Eh
(Table 01768)
Values for extended open function status:
01h file opened
02h file created
03h file replaced
Bitfields for file create attribute:
Bit(s) Description (Table 01769)
6-15 reserved
5 archive
4 reserved
3 volume label
2 system
1 hidden
0 readonly
Bitfields for action:
Bit(s) Description (Table 01770)
7-4 action if file does not exist
0000 fail
0001 create
3-0 action if file exists
0000 fail
0001 open
0010 replace/open
--------O-216C01-----------------------------
INT 21 U - OS/2 v2.0 - "DosOpen2"
AX = 6C01h
BL = open mode as in AL for normal open (see also AH=3Dh)
bit 7: inheritance
bits 4-6: sharing mode
bit 3 reserved
bits 0-2: access mode
BH = flags
bit 6 = auto commit on every write (see also AH=68h)
bit 5 = return error rather than doing INT 24h
CX = create attribute (see #01769)
DL = action if file exists/does not exist (see #01770)
DH = 00h (reserved)
DS:SI -> ASCIZ file name
ES:DI -> EAOP structure
Return: CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
CF clear if successful
AX = file handle
CX = status (see #01768)
Note: this function is virtually identical to AX=6C00h, but supports OS/2's
extended attributes
SeeAls AX=5704h,AX=6C00h,AH=6Fh"OS/2"
--------D-216D-------------------------------
INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
AH = 6Dh
DS:DX -> ASCIZ program name (may contain wildcrds)
Return: CF clear if found
Disk Transfer Area filled with ROM search structure (see #01771)
CF set if not found
AX = error code
0002h name not found in ROM
0003h name contains colon or backslash
---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
AL = 00h
Notes: the '*' wildcard matches all remaining characters in a ROM program's
name; any following characters in the search mask are ignored up to
another asterisk, which must be matched by an asterisk in the
found program's name.
the search mask and program names may contain multiple periods
SeeAls AH=1Ah,AH=4Eh,AH=6Eh,AX=6F00h,AX=6F02h,INT 2F/AX=160Ch
Format of ROM search structure:
Offset Size Description (Table 01771)
00h 13 BYTEs ASCIZ name of found ROM program
0Dh DWORD address at which to resume search (do not modify)
11h var ASCIZ search mask passed in (do not modify)
--------O-216D-------------------------------
INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
AH = 6Dh
???
Return: ???
Desc: create a new directory, with extended attribute information
Note: also supported by OS/2 v2.0+ Virtual DOS Machines
BUG: does not work under OS/2 v2.0 because MVDM does not translate the
real-mode segment pointer in the Extended Attribute structure
(see #01673) into a protected-mode selector; use AH=39h followed by
AX=5703h instead
SeeAls AH=39h,AX=5702h"OS/2",AX=5703h"OS/2"
--------O-216D-------------------------------
INT 21 U - Novell DOS 7 - NOP
AH = 6Dh
Return: AX = 0000h
Note: this function invokes the same code as other NOP functions such as
AH=18h and AH=61h
--------D-216E-------------------------------
INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
AH = 6Eh
Disk Transfer Area contains result of previous FindFirst ROM
(see AH=6Dh)
Return: CF clear if found
Disk Transfer Area filled with updated ROM search structure
(see #01771)
CF set if not found
AX = 0012h (no more matches)
---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
AL = 00h
SeeAls AH=4Fh,AH=6Dh
--------O-216E-------------------------------
INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
AH = 6Eh
DS:SI -> parameter packet (see #01772)
Return: CF clear if successful
AX = 0000h
DS:SI buffer updated
CF set on error
AX = error code
Note: also supported by OS/2 v2.0+ Virtual DOS Machines
SeeAls AX=5703h,AH=6Fh"OS/2",INT 2F/AX=112Dh
Format of OS/2 DosEnumAttrib parameter packet:
Offset Size Description (Table 01772)
00h DWORD reserved (0)
04h DWORD info level (always 00000001h)
08h DWORD (call) number of entries requested
(ret) actual number of entries returned
0Ch DWORD length of buffer
10h DWORD pointer to buffer for results
14h DWORD number of first entry to return
18h DWORD -> file handle or ASCIZ pathname
1Ch WORD flag: 00h = previous field is file handle, 01h = pathname
--------D-216F00-----------------------------
INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
AX = 6F00h
Return: CF clear
AL = 00h
BX = current ROM scan starting segment if function supported
SeeAls AH=6Dh,AX=6F01h,AX=6F02h
--------O-216F00-----------------------------
INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
AX = 6F00h
DS:SI -> DWORD buffer for maximum size of an extended attribute
Return: CF clear if successful
AX = 0000h
buffer filled
CF set on error
AX = error code
Note: also supported by OS/2 v2.0+ Virtual DOS Machines
SeeAls AX=5703h,AX=6C01h,AH=6Eh"OS/2"
--------D-216F01-----------------------------
INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
AX = 6F01h
BX = new ROM scan starting address
Return: CF clear
AL = 00h
SeeAls AX=6F00h,AX=6F03h
--------D-216F02-----------------------------
INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
AX = 6F02h
ES:BX -> buffer for exclusion region list (see #01773)
Return: CF clear
AL = 00h
ES:BX = 0000h:0000h on error, unchanged if buffer filled
Note: for DOS versions which do not support this function, the return value
is AL=00h, CF unchanged, ES:BX unchanged, and the ES:BX buffer
unchanged
SeeAls AX=6F00h,AX=6F03h
Format of ROM exclusion region list:
Offset Size Description (Table 01773)
00h WORD number of entries
02h 2N WORDs start/end segments of N excluded regions
--------D-216F03-----------------------------
INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
AX = 6F03h
DS:DX -> new exclusion region list (see #01773)
Return: CF clear
AL = 00h
Notes: DOS saves only the pointer and assumes that the contents of the list
are never changed, and that regions do not overlap
if AL > 03h on entry, DOS returns CF set/AL=01h
SeeAls AX=6F01h,AX=6F02h
--------D-2170-------------------------------
INT 21 - MS-DOS 7 (Windows95) - GET/SET INTERNATIONALIZATION INFORMATION
AH = 70h
AL = subfunction
00h get ??? info
CX = buffer size (3Ah bytes needed)
ES:DI -> buffer
01h set above info
CX = number of bytes to set
DS:SI -> buffer containing ??? info (see #01774)
02h set general internationalization info (see also AX=6500h)
DS:SI -> buffer containing info (see #01775)
CX = buffer size in bytes (up to 26h bytes used)
first three bytes are skipped, the rest is copied to somewhere
in the DOS data segment
Return: CF clear if successful
ES:DI buffer filled (func 00h) (see #01774)
CX = number of bytes actually set or returned
(max 003Ah for functions 00h and 01h under v7.00, 0026h for
function 02h)
CF set on error
AX = error code
7000h if function not supported
SeeAls AH=38h,AH=65h
Format of MS-DOS v7.0 ??? table:
Offset Size Description (Table 01774)
00h 58 BYTEs ??? country-specific information
returned was (among others) "ENU USA GR"..."AM PM M/d/yy"...
"dddd,MMMMdd,yyyy" in the German Preview version, and "US"
instead of "GR" in the US build 450 version (with German
country setting) and the US build 950a version with US
country settings
SeeAls #01775
Format of MS-DOS v7.0 internationalization table:
Offset Size Description (Table 01775)
00h 3 BYTEs unused (and ignored by DOS)
03h WORD country ID (see #01400 at AH=38h)
05h WORD code page (see #01757)
07h WORD date format
09h 5 BYTEs ASCIZ current symbol string
07h 2 BYTEs ASCIZ thousands separator
09h 2 BYTEs ASCIZ decimal separator
0Bh 2 BYTEs ASCIZ date separator
0Dh 2 BYTEs ASCIZ time separator
0Fh BYTE currency format
bit 2 = set if currency symbol replaces decimal point
bit 1 = number of spaces between value and currency symbol
bit 0 = 0 if currency symbol precedes value
1 if currency symbol follows value
10h BYTE number of digits after decimal in currency
11h BYTE time format
bit 0 = 0 if 12-hour clock
1 if 24-hour clock
12h DWORD address of case map routine
(FAR CALL, AL = character to map to upper case [>= 80h])
16h 2 BYTEs ASCIZ data-list separator
18h 10 BYTEs reserved
Note: this table has the identical format to the extended country information
retrieved via AH=65h with info ID = 01h
SeeAls #01399,#01750
----------217070BX6060-----------------------
INT 21 - PCW Weather Card interface - GET DATA SEGMENT
AX = 7070h
BX = 6060h
CX = 7070h
DX = 7070h
SI = 7070h
DI = 7070h
Return: AX = segment of data structure (see #01776)
Notes: the data structure is at offset 516 from this segment
the update byte is at offset 514 from this segment. Updates are
once per second while this byte is nonzero and it is decremented
once per second. While this byte is 0 updates are once per minute.
SeeAls AX=7070h/BX=7070h
Format of PCW Weather Card data structure:
Offset Type Description (Table 01776)
00h WORD hour
02h WORD minute
04h WORD second
06h WORD day
08h WORD month
0Ah WORD year
0Ch WORD ???
0Eh WORD relative barometric pressure (in 1/100 inches)
10h WORD ???
12h WORD ???
14h WORD temperature 1 (in 1/10 degrees F)
16h WORD temperature 1 lowest (in 1/10 degrees F)
18h WORD temperature 1 highest (in 1/10 degrees F)
1Ah WORD temperature 2 (in 1/10 degrees F)
1Ch WORD temperature 2 lowest (in 1/10 degrees F)
1Eh WORD temperature 2 highest (in 1/10 degrees F)
20h WORD wind speed (in MPH)
22h WORD average of 60 wind speed samples (in MPH)
24h WORD highest wind speed (in MPH)
26h WORD wind chill factor (in 1/10 degrees F)
28h WORD lowest wind chill factor (in 1/10 degrees F)
2Ah WORD ???
2Ch WORD wind direction (in degrees)
2Eh WORD accumulated daily rainfall (in 1/10 inches)
30h WORD accumulated annual rainfall (in 1/10 inches)
----------217070BX7070-----------------------
INT 21 - PCW Weather Card interface - INSTALLATION CHECK
AX = 7070h
BX = 7070h
CX = 7070h
DX = 7070h
SI = 7070h
DI = 7070h
Return: AX = 0070h
BX = 0070h
CX = 0070h
DX = 0070h
SI = 0070h
DI = 0070h
SeeAls AX=7070h/BX=6060h,AX=8080h
--------D-2171-------------------------------
INT 21 - Windows95 - LONG FILENAME FUNCTIONS
AH = 71h
AL = function
0Dh reset drive (see AX=710Dh)
39h create directory (see AX=7139h)
3Ah remove directory (see AX=713Ah)
3Bh set current directory (see AX=713Bh)
41h delete file (see AX=7141h)
43h get/set file attributes (see AX=7143h)
47h get current directory (see AX=7147h)
4Eh find first file (see AX=714Eh)
4Fh find next file (see AX=714Fh)
56h move (rename) file (see AX=7156h)
60h truename (see AX=7160h/CL=00h,AX=7160h/CL=02h)
6Ch create/open file (see AX=716Ch)
A0h get volume information (see AX=71A0h)
A1h terminate FindFirst/FindNext (see AX=71A1h)
A6h get file information (see AX=71A6h)
A7h time conversion (see AX=71A7h/BL=00h,AX=71A7h/BL=01h)
A8h generate short filename (see AX=71A8h)
A9h server create/open file (see AX=71A9h)
AAh create/terminate SUBST (see AX=71AAh/BH=00h,AX=71AAh/BH=02h)
Return: CF set on error
AX = error code (see #01680)
7100h if function not supported
CF clear if successful
other registers as for corresponding "old" DOS function
Notes: if error 7100h is returned, the old-style function should be called
AX=714Eh returns a "search handle" which must be passed to AX=714Fh;
when the search is complete, AX=71A1h must be called to terminate
the search
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h
SeeAls AX=4307h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch,AX=714Eh,AX=714Fh
--------v-2171-------------------------------
INT 21 - VIRUS - "1205" - INSTALLATION CHECK
AH = 71h
Return: AH = 17h if "1205" is resident
SeeAls AX=6969h"VIRUS",AH=76h"VIRUS"
--------D-21710D-----------------------------
INT 21 - Windows95 - RESET DRIVE
AX = 710Dh
CX = action (see #01777)
DX = drive number
Return: CF clear
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=0Dh
(Table 01777)
Values for drive reset action:
0000h flush filesystem buffers for drive, and reset drive
0001h flush filesystem buffers and cache for drive, and reset drive
0002h remount DriveSpace volume
--------D-217139-----------------------------
INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
AX = 7139h
DS:DX -> ASCIZ long directory name (including path)
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=39h,AX=713Ah,AX=713Bh,AX=43FFh/BP=5053h
--------D-21713A-----------------------------
INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
AX = 713Ah
DS:DX -> ASCIZ long name of directory to remove
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=3Ah,AX=7139h
--------D-21713B-----------------------------
INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
AX = 713Bh
DS:DX -> ASCIZ long name of directory to make current
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=0Eh,AH=3Bh,AX=7139h
--------D-217141-----------------------------
INT 21 - Windows95 - LONG FILENAME - DELETE FILE
AX = 7141h
DS:DX -> ASCIZ long name of file to delete
SI = wildcard and attributes flag
0000h wildcards are not allowed, and search attributes are
ignored
0001h wildcards are allowed, and only files with matching
names and attributes are deleted
CL = search attributes
CH = must-match attributes
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=41h
--------D-217143-----------------------------
INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
AX = 7143h
DS:DX -> ASCIZ filename
BL = action
00h retrieve attributes
Return: CX = file attributes (see #01420)
01h set attributes
CX = attributes
02h get physical size of compressed file
Return: DX:AX = actual disk usage of file, in bytes
03h set last write date/time
DI = new last-write date (see #01666)
CX = new last-write time (see #01665)
04h get last write date/time
Return: CX = last write time (see #01665)
DI = last write date (see #01666)
05h set last access date
DI = new last-access date (see #01666)
06h get last access date
Return: DI = last access date (see #01666)
07h set creation date/time
DI = new creation date (see #01666)
CX = new creation time (see #01665)
SI = hundredths (10-millisecond units past time in CX, 0-199)
08h get creation date/time
Return: CX = creation time (see #01665)
DI = creation date (see #01666)
SI = hundredths (10-millisecond units past time in CX)
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AX=4300h,AX=4301h
--------D-217147-----------------------------
INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
AX = 7147h
DL = drive number (00h = current, 01h = A:, etc.)
DS:SI -> buffer for ASCIZ directory name
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Notes: the returned pathname does not include the drive letter, colon, or
leading backslash, and is not necessarily a long filename -- this
function returns whatever path was used when changing to the
current directory, and may include a mixture of long and short
components
the provided buffer must be at least as large as the value indicated
by AX=71A0h
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=47h,AX=713Bh,AX=7160h,AX=71A0h
--------D-21714E-----------------------------
INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
AX = 714Eh
CL = allowable-attributes mask (see #01420 at AX=4301h)
(bits 0 and 5 ignored)
CH = required-attributes mask (see #01420)
SI = date/time format (see #01778)
DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
ES:DI -> FindData record (see #01779)
Return: CF clear if successful
AX = filefind handle (needed to continue search)
CX = Unicode conversion flags (see #01780)
CF set on error
AX = error code
7100h if function not supported
Notes: this function is only available when IFSMgr is running, not under bare
MS-DOS 7
the application should close the filefind handle with AX=71A1h as soon
as it has completed its search
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=4Eh,AX=714Fh,AX=71A1h
(Table 01778)
Values for Windows95 date/time format:
0000h use 64-bit file time format
0001h use MS-DOS date/time values (see #01665,#01666) in low double-word of
file time QWORD (date is high word, time is low word of double-word)
SeeAls #01779
Format of Windows95 long filename FindData record:
Offset Size Description (Table 01779)
00h DWORD file attributes
bits 0-6 standard DOS attributes (see #01420 at INT 21/AX=4301h)
bit 8: temporary file
04h QWORD file creation time (number of 100ns intervals since 1/1/1601)
0Ch QWORD last access time
14h QWORD last modification time
1Ch DWORD file size (high 32 bits)
20h DWORD file size (low 32 bits)
24h 8 BYTEs reserved (apparently unused)
2Ch 260 BYTEs ASCIZ full filename
130h 14 BYTEs ASCIZ short filename (for backward compatibility)
Note: under Windows95B, the ASCIZ short filename will be the empty string
if the directory does not contain a long filename entry for the
file; in that case, the application should use the full filename
SeeAls #01780
Bitfields for Windows95 Unicode conversion flags:
Bit(s) Description (Table 01780)
0 the returned full filename contains underscores for un-convertable
Unicode characters
1 the returned short filename contains underscores for un-convertable
Unicode characters
SeeAls #01779
--------D-21714F-----------------------------
INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
AX = 714Fh
BX = filefind handle (from AX=714Eh)
SI = date/time format (see #01778)
ES:DI -> buffer for FindData record (see #01779)
Return: CF clear if successful
AH = 4Fh (undocumented)
AL destroyed (becomes low byte of filefind handle in Win95B)
CX = Unicode conversion flags (see #01780)
CF set on error
AX = error code
7100h if function not supported
Notes: this function is only available when IFSMgr is running, not under bare
MS-DOS 7
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAls AH=4Eh,AX=714Eh,AX=71A1h,AX=71A2h
--------D-217156-----------------------------
INT 21 - Windows95 - LONG FILENAME - RENAME FILE
AX = 7156h
DS:DX -> ASCIZ old file or directory name (long names allowed)
ES:DI -> ASCIZ new name (long names allowed)
Return: CF clear if successful
CF set on error
AX = error code
7100h if function not supported
Note: the file may be renamed into a different directory, but not across
disks
SeeAls AH=56h,AX=7141h,AX=43FFh/BP=5053h
--------D-217160CL00-------------------------
INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
AX = 7160h
CL = 00h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ filename or path (either long name or short name)
ES:DI -> 261-byte buffer for canonicalized name
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with fully qualified name
AX destroyed
Desc: determine the canonical name of the specified filename or path,
corresponding to the undocumented TRUENAME command in COMMAND.COM
Notes: if a complete path is given, the result will be a short-form complete
path; otherwise, the given relative path is appended to the
short-form current directory name, '.'/'..'/'...'/etc. are resolved,
and the final result uppercased without converting any remaining
long-form names to short-form
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
BUG: Windows95 incorrectly treats filenames where the first two characters
after the drive letter and colon are both slashes (either forward
or backward) as a UNC (network name) and requires several seconds
to attempt to resolve the name before returning an unchanged
string
SeeAls AH=60h,AX=7160h/CL=01h
--------D-217160CL01-------------------------
INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
AX = 7160h
CL = 01h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ long filename or path
ES:DI -> 67-byte (possibly 128-byte) buffer for short filename
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with equivalent short filename (full path,
even if relative path given, and all uppercase)
Note: this call returns the short name for any long-filename portions of
the provided pathname or filename
SeeAls AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h
--------D-217160CL02-------------------------
INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
AX = 7160h
CL = 02h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ short filename or path
ES:DI -> 261-byte buffer for canonicalized long name
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with qualified long name (can contain
lowercase letters)
Desc: determine the canonical name of the specified filename or path,
corresponding to the undocumented TRUENAME command in COMMAND.COM
BUGS: even though the maximum length of a complete long pathname is 260
characters, Windows95 returns CF set/AX=0003h even if the file
exists whenever the full pathname is more than 255 characters
Windows95 incorrectly treats filenames where the first two characters
after the drive letter and colon are both slashes (either forward
or backward) as a UNC (network name) and requires several seconds
to attempt to resolve the name before returning an unchanged
string
SeeAls AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h
--------D-21716C-----------------------------
INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
AX = 716Ch
BX = access mode and sharing flags (see #01782,also AX=6C00h)
CX = attributes
DX = action (see #01781)
DS:SI -> ASCIZ filename
DI = alias hint (number to append to short filename for disambiguation)
Return: CF clear if successful
AX = file handle
CX = action taken
0001h file opened
0002h file created
0003h file replaced
CF set on error
AX = error code (see #01680)
7100h if function not supported
SeeAls AX=6C00h,AX=7141h,AX=7156h,AX=71A9h
Bitfields for Windows95 long-name open action:
Bit(s) Description (Table 01781)
0 open file (fail if file does not exist)
1 truncate file if it already exists (fail if file does not exist)
4 create new file if file does not already exist (fail if exists)
Note: the only valid combinations of multiple flags are bits 4&0 and 4&1
Bitfields for Windows95 file access/sharing modes:
Bit(s) Description (Table 01782)
2-0 file access mode
000 read-only
001 write-only
010 read-write
100 read-only, do not modify file's last-access time
6-4 file sharing modes
7 no-inherit flag
8 do not buffer data (requires that all reads/writes be exact physical
sectors)
9 do not compress file even if volume normally compresses files
10 use alias hint in DI as numeric tail for short-name alias
12-11 unused??? (0)
13 return error code instead of generating INT 24h if critical error
while opening file
14 commit file after every write operation
SeeAls #01402
--------D-2171A0-----------------------------
INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
AX = 71A0h
DS:DX -> ASCIZ root name (e.g. "C:\")
ES:DI -> buffer for file system name
CX = size of ES:DI buffer
Return: CF clear if successful
AX destroyed (0000h and 0200h seen)
BX = file system flags (see #01783)
CX = maximum length of file name [usually 255]
DX = maximum length of path [usually 260]
ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
CF set on error
AX = error code
7100h if function not supported
Notes: for the file system name buffer, 32 bytes should be sufficient; that's
what is used in some sample code by Walter Oney from Microsoft.
this function accesses the disk the first time it is called
BUG: this function returns DX=0000h for CD-ROM drives under Win95 SP1
SeeAls AX=714Eh,AX=7160h/CL=00h
Bitfields for long filename volume information flags:
Bit(s) Description (Table 01783)
0 searches are case sensitive
1 preserves case in directory entries
2 uses Unicode characters in file and directory names
3-13 reserved (0)
14 supports DOS long filename functions
15 volume is compressed
--------D-2171A1-----------------------------
INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
AX = 71A1h
BX = filefind handle (from AX=714Eh)
Return: CF clear if successful
CF set on error
AX = error code
7100h if function not supported
Notes: this function must be called after starting a search with AX=714Eh,
to indicate that the search handle returned by that function will
no longer be used
this function is only available when IFSMgr is running, not under bare
MS-DOS 7
SeeAls AH=4Eh,AX=714Eh,AX=714Fh
--------D-2171A2-----------------------------
INT 21 U - Windows95 - internal - LONG FILENAME - FIND NEXT MATCHING FILE
AX = 71A2h
BX = filefind handle (from AX=714Eh)
SI = date/time format (see #01778)
ES:DI -> buffer for FindData record (see #01779)
Return: CF clear if successful
AX = 71A2h
CX = Unicode conversion flags (see #01780)
CF set on error
AX = error code
7100h if function not supported
Notes: this function is only available when IFSMgr is running, not under bare
MS-DOS 7; it is functionally identical to AX=714Fh
documented as "for internal use by Windows 95 only"
--------D-2171A3-----------------------------
INT 21 U - Windows95 - internal
AX = 71A3h
???
Return: ???
Note: documented as "for internal use by Windows 95 only"
--------D-2171A4-----------------------------
INT 21 U - Windows95 - internal
AX = 71A4h
???
Return: ???
Note: documented as "for internal use by Windows 95 only"
--------D-2171A5-----------------------------
INT 21 U - Windows95 - internal
AX = 71A5h
???
Return: ???
Note: documented as "for internal use by Windows 95 only"
--------D-2171A6-----------------------------
INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
AX = 71A6h
BX = file handle
DS:DX -> buffer for file information (see #01784)
CF set
Return: CF clear if successful
file information record filled
CF set on error
AX = error code
7100h if function not supported
SeeAls AX=71A7h/BL=00h
Format of Windows95 file information:
Offset Size Description (Table 01784)
00h DWORD file attributes
04h QWORD creation time (0 = unsupported)
0Ch QWORD last access time (0 = unsupported)
14h QWORD last write time
1Ch DWORD volume serial number
20h DWORD high 32 bits of file size
24h DWORD low 32 bits of file size
28h DWORD number of links to file
2Ch DWORD unique file identifier (high 32 bits)
30h DWORD unique file identifier (low 32 bits)
Note: the file identifer and volume serial number together uniquely identify
a file while it is open; the identifier may change when the system
is restarted or the file is first opened
--------D-2171A7BL00-------------------------
INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
AX = 71A7h
BL = 00h
DS:SI -> QWORD file time
Return: CF clear if successful
CX = DOS time (see #01665)
DX = DOS date (see #01666)
BH = hundredths (10-millisecond units past time in CX)
CF set on error
AX = error code
7100h if function not supported
Desc: convert Win95 64-bit file time (UTC) into DOS-style date and time
(local timezone)
Note: the conversion fails if the file time's value is outside the range
01jan1980 and 31dec2107
SeeAls AX=71A6h,AX=71A7h/BL=01h
--------D-2171A7BL01-------------------------
INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
AX = 71A7h
BL = 01h
CX = DOS time (see #01665)
DX = DOS date (see #01666)
BH = hundredths (10-millisecond units past time in CX)
ES:DI -> buffer for QWORD file time
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
7100h if function not supported
Desc: convert DOS-style date and time (local timezone) into Win95 64-bit
file time (UTC)
SeeAls AX=71A6h,AX=71A7h/BL=00h
--------D-2171A8-----------------------------
INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
AX = 71A8h
DS:SI -> ASCIZ long filename (no path allowed!)
ES:DI -> buffer for ASCIZ short filename
DH = short name's format
00h 11-char directory entry/FCB filename format
01h DOS 8.3
DL = character sets
bits 7-4: short name's character set (see #01785)
bits 3-0: long name's character set (see #01785)
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
7100h if function not supported
Note: this function uses the same algorithm as the filesystem except that
the returned name never has a numeric tail for disambiguation
SeeAls AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h
(Table 01785)
Values for Windows95 filename character set:
00h Windows ANSI
01h current OEM character set
02h Unicode
--------D-2171A9-----------------------------
INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
AX = 71A9h
BX = access mode and sharing flags (see #01782,also AX=6C00h)
CX = attributes
DX = action (see #01781)
DS:SI -> ASCIZ filename
DI = alias hint (number to append to short filename for disambiguation)
Return: CF clear if successful
AX = global file handle
CX = action taken
0001h file opened
0002h file created
0003h file replaced
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: for use by real-mode servers only
SeeAls AX=6C00h,AX=716Ch
--------D-2171AABH00-------------------------
INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
AX = 71AAh
BH = 00h
BL = drive number (00h = default, 01h = A:, etc.)
DS:DX -> ASCIZ pathname to associate with drive letter
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
SeeAls AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643
--------D-2171AABH01-------------------------
INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
AX = 71AAh
BH = 01h
BL = drive number (01h = A:, etc.)
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: the specified drive number may not be 00h (default), and presumably not
the current drive either
SeeAls AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643
--------D-2171AABH02-------------------------
INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
AX = 71AAh
BH = 02h
BL = drive number (01h = A:, etc.)
DS:DX -> buffer for ASCIZ pathname associated with drive letter
Return: CF clear if successful
DS:DX buffer filled
CF set on error
AX = error code (see #01680)
7100h if function not supported
Note: the specified drive number may not be 00h (default drive)
SeeAls AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#01643
--------D-2172-------------------------------
INT 21 - Windows95 beta - LFN-FindClose
AH = 72h
details not available
Return: CF clear if successful
CF set on error
AX = error code (see #01680)
7200h if function not supported (e.g. under bare MS-DOS 7)
Note: this function was present in beta versions of Windows95, but is
probably not present in the release version
SeeAls AX=71A1h
--------D-2173-------------------------------
INT 21 - MS-DOS 7 - DRIVE LOCKING ???
AH = 73h
DL = drive (0=current, 1=A:, etc.)
CL = which flag to get or set
00h drive flag???
01h ???
AL = subfunction
00h get ???
01h set ???
CH = new values for ??? flags
bit 1: ??? (CL=00h only)
bit 3: ??? (CL=01h only)
Return: CF clear if successful
for AL=00h:
AL = value of CL on entry
for CL=00h: AH = new flag and 06h (i.e. bits 1 and 2 used)
for CL=01h: AH = new flag and 08h (i.e. bit 3 used)
(flag being taken from a table of bytes)
CF set on error
AX = error code (01h,0Fh,etc.) (see #01680)
7300h if function not supported
Note: these two subfunctions are available even when only the MS-DOS kernel
is running
--------D-217302-----------------------------
INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
AX = 7302h
DL = drive number (00h=default, 01h=A:, etc.)
ES:DI -> buffer for returned data (see #01786)
CX = length of buffer (003Fh for Windows95)
SI = signature (undocumented, must be F1A6h to get device driver
address and next-DBP pointer) (see #01787)
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
0018h bad buffer length
SeeAls AX=7303h,AX=7304h,AH=1Fh,AH=32h
Format of Get_ExtDPB data buffer:
Offset Size Description (Table 01786)
00h WORD (call) length of following data (003Dh)
02h 61 BYTEs (ret) drive parameter block (DPB) (see #01787)
Format of Extended Drive Parameter Block:
Offset Size Description (Table 01787)
00h 24 BYTEs standard DOS 4+ DPB
18h BYTE "dpb_flags" (undocumented)
FFh force media check
19h DWORD pointer to next DPB (see note)
1Dh WORD cluster at which to start search for free space when writing,
usually the last cluster allocated
1Fh WORD number of free clusters on drive, FFFFh = unknown
21h WORD high word of free cluster count
23h WORD active FAT/mirroring
bit 7: do not mirror active FAT to inactive FATs
bits 6-4: reserved (0)
bits 3-0: the 0-based FAT number of the active FAT
(only meaningful if mirroring disabled)
25h WORD sector number of file system information sector, or
FFFFh for none (see also #01788)
27h WORD sector number of backup boot sector, or FFFFh for none
29h DWORD first sector number of the first cluster
2Dh DWORD maximum cluster number
31h DWORD number of sectors occupied by FAT
35h DWORD cluster number of start of root directory
39h DWORD cluster number at which to start searching for free space
Notes: except for offset 18h, all of the first 33 bytes are identical to
the standard DOS 4-6 DPB
unless the proper value is given in SI on entry to "Get_ExtDBP", the
next-DPB pointer and device driver address are set to 0000h:0000h
SeeAls #01786,#01395 at AH=32h,#01664
Format of File System Information structure:
Offset Size Description (Table 01788)
00h DWORD signature 61417272h
04h DWORD number of free clusters (FFFFFFFFh if unknown)
08h DWORD most recently allocated cluster
0Ch 12 BYTEs reserved
SeeAls #01787
--------D-217303-----------------------------
INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
AX = 7303h
DS:DX -> ASCIZ string for drive ("C:\" or "\\SERVER\Share")
ES:DI -> buffer for extended free space structure (see #01789)
CX = length of buffer for extended free space
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
Notes: this function reportedly returns a maximum of 2GB free space even on
an FAT32 partition larger than 2GB under some versions of Win95,
apparently by limiting the number of reported free clusters to no
more than 64K
on DOS versions which do not support the FAT32 calls, this function
returns CF clear/AL=00h (which is the DOS v1+ method for reporting
unimplemented functions)
SeeAls AX=7302h,AX=7304h,AX=7305h,AH=36h
Format of extended free space structure:
Offset Size Description (Table 01789)
00h WORD (ret) size of returned structure
02h WORD (call) structure version (0000h)
(ret) actual structure version (0000h)
04h DWORD number of sectors per cluster (with adjustment for compression)
08h DWORD number of bytes per sector
0Ch DWORD number of available clusters
10h DWORD total number of clusters on the drive
14h DWORD number of physical sectors available on the drive, without
adjustment for compression
18h DWORD total number of physical sectors on the drive, without
adjustment for compression
1Ch DWORD number of available allocation units, without adjustment
for compression
20h DWORD total allocation units, without adjustment for compression
24h 8 BYTEs reserved
--------D-217304-----------------------------
INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
AX = 7304h
DL = drive number (00h=default, 01h=A:, etc.)
ES:DI -> buffer for Set_DPBforFormat structure (see #01790)
Return: CF clear if successful
ES:DI buffer updated
CF set on error
AX = error code
SeeAls AX=7302h,AX=7303h,AX=7305h
Format of Set_DPBforFormat structure:
Offset Size Description (Table 01790)
00h WORD (call) size
02h WORD (call) structure version??? (0000h)
(ret) ???
04h DWORD (call) function number
00h invalidate DPB counts
01h rebuild DPB from BPB
02h force media change (next access to drive rebuild DPB)
03h get/set active FAT number and mirroring
04h get/set root directory cluster number
---function 00h---
08h DWORD new DPB free count (00000000h=no change, FFFFFFFFh=unknown)
0Ch DWORD new DPB next-free (00000000h=no change, FFFFFFFFh=unknown)
10h DWORD unused
14h DWORD unused
---function 01h---
08h DWORD unused???
0Ch DWORD (call) -> BIOS Parameter Block from which to rebuild DPB
10h DWORD unused
14h DWORD unused
---function 02h---
08h DWORD unused
0Ch DWORD unused
10h DWORD unused
14h DWORD unused
---function 03h---
08h DWORD (call) new active FAT/mirroring state, or FFFFFFFFh to get
bits 3-0: the 0-based FAT number of the active FAT
bits 6-4: reserved (0)
bit 7: do not mirror active FAT to inactive FATs
0Ch DWORD (ret) previous active FAT/mirroring state (as above)
10h DWORD unused
14h DWORD unused
---function 04h---
08h DWORD (call) new root directory cluster number
FFFFFFFFh to get current
0Ch DWORD (ret) previous root directory cluster number
10h DWORD unused
14h DWORD unused
--------D-217305CXFFFF-----------------------
INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
AX = 7305h
CX = FFFFh
DL = drive number (01h=A:, etc.)
SI = read/write mode flags (see #01791)
DS:BX -> disk I/O packet (see #02548 at INT 25)
Return: CF clear if successful
CF set on error
AX = error code
Note: one can not specify the default drive (DL=00h) for this function.
SeeAls AX=7302h,AX=7304h,INT 25,INT 26
Bitfields for Extended Absolute Disk Read/Write mode flags:
Bit(s) Description (Table 01791)
0 direction (0=read, 1=write)
12-1 reserved (0)
14-13 write type (should be 00 on reads)
00 unknown data
01 FAT data
10 directory data
11 file data
15 reserved (0)
--------v-217575-----------------------------
INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
AX = 7575h
Return: AX = 4321h if resident
SeeAls AX=6969h,AH=76h"VIRUS"
--------v-2176-------------------------------
INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
AH = 76h
Return: AL = 48h if resident
SeeAls AX=7575h,AX=7700h"VIRUS"
--------v-217700-----------------------------
INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
AX = 7700h
Return: AX = 0920h if resident
SeeAls AH=76h,AX=7BCEh,AH=7Fh
--------V-217734-----------------------------
INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
AX = 7734h
Return: DX = 3477h if installed
AX = segment of resident code
Program: ScrollIt is a shareware backscroll utility by Bromfield Software
Products
--------U-217761-----------------------------
INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
AX = 7761h ('wa')
Return: AX = 6177h
Note: WATCH.COM is part of the "TSR" package by TurboPower Software
SeeAls INT 16/AX=7761h
--------v-217BCE-----------------------------
INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
AX = 7BCEh
Return: AX = 7BCEh if resident (???)
SeeAls AX=5454h"VIRUS",AX=7700h,AX=7BCFh,AH=7Fh"VIRUS"
--------v-217BCF-----------------------------
INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
AX = 7BCFh
Return: AX = 7BCFh if resident
SeeAls AX=7BCEh"VIRUS",AH=7Dh"VIRUS"
--------v-217D-------------------------------
INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
AH = 7Dh
Return: AH = FAh if installed
SeeAls AX=7BCFh"VIRUS",AH=7Fh"VIRUS"
--------v-217F-------------------------------
INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
AH = 7Fh
Return: AH = 80h if resident
SeeAls AX=7BCEh,AH=83h"VIRUS"
--------D-2180-------------------------------
INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
AH = 80h
CX = mode
0000h place child in zombie mode on exit to preserve exit code
0001h discard child process and exit code on termination
DS:DX -> ASCIZ full program name
ES:BX -> parameter block (as for AX=4B00h)
Return: CF clear if successful
AX = Command Subgroup ID (CSID)
CF set on error
AX = error code (see #01680 at AH=59h/BX=0000h)
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
by several other European OEMs; its release falls between mainstream
versions 3.2 and 3.3
Desc: asynchronously execute a program, creating a new process for it
Notes: this function is called by the DETACH command
there is a system-wide limit of 32 processes
the CSID is used to identify all processes that have been spawned by
a given process, whether directly or indirectly
programs to be run in the background must use the new executable format
(see #01596 at AH=4Bh)
background processes may only perform asynchronous (background) EXECs,
either this function or AX=4B04h
background processes may execute INT 11, INT 12, INT 21, INT 2A, and
INT 2F at any time; they may execute INT 10 and INT 16 only while
they have opened a popup screen via INT 2F/AX=1401h; no other
interrupts may be executed from the background
background processes may not use drive B: or overlay their code
segments
see AX=8700h for an installation check
the "NE" new executable format made its first appearance in European
MS-DOS 4.0
SeeAls AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"
----------218080-----------------------------
INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
AX = 8080h
Return: ???
SeeAls AX=7070h/BX=7070h
--------D-2181-------------------------------
INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
AH = 81h
BX = flag (00h freeze command subtree, 01h only specified process)
CX = Process ID of head of command subtree
Return: CF clear if successful
CF set on error
AX = error code (no such process)
Desc: temporarily suspend a process or a process and all of its children
Note: if BX=0001h, this call will not return until the process is actually
frozen, which may not be until after it unblocks from an I/O
operation
SeeAls AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
--------D-2182-------------------------------
INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
AH = 82h
BX = flag (00h resume command subtree, 01h only specified process)
CX = Process ID of head of command subtree
Return: CF clear if successful
CF set on error
AX = error code (no such process)
Desc: restart a previously-suspended process or a process and all of its
children
SeeAls AH=81h,INT 15/AX=101Eh
--------D-2183-------------------------------
INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
AH = 83h
AL = function
00h get size
01h set new size
BX = new size in paragraphs
Return: CF clear if successful
BX = current size (function 00h) or old size (function 01h)
CF set on error
AX = error code (01h,07h,0Dh)(see #01680 at AH=59h/BX=0000h)
Desc: specify or determine how much memory may be allocated by the foreground
process
Note: if the partition size is set to 0000h, no partition management is done
and all memory allocation is compatible with DOS 3.2.
the partition size can be changed regardless of what use is being made
of the changed memory; subsequent allocations will follow the
partition rules (foreground processes may allocate only foreground
memory; background processes allocate background memory first, then
foreground memory)
SeeAls AH=48h,AH=4Ah
--------v-2183-------------------------------
INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
AH = 83h
Return: DX = 1990h if resident
SeeAls AH=76h,AH=84h"VIRUS"
--------v-2184-------------------------------
INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
AH = 84h
Return: DX = 1990h if resident
BH = version number (major in high nybble, minor in low)
SeeAls AH=83h"VIRUS",AH=89h"VIRUS"
--------D-218400-----------------------------
INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
AX = 8400h
BX = size in bytes (0000h = 65536)
CX = flags
bit 6: zero-initialize segment
DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
AX = segment address of shared memory global object
CF set on error
AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
Desc: create an area of memory which may be accessed by multiple processes
Notes: shared memory objects are created as special files (thus the
restriction on the name)
on successful creation, the reference count is set to 1
SeeAls AX=8401h,AX=8402h,INT 15/AX=DE19h
--------D-218401-----------------------------
INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
AX = 8401h
CX = flags
bit 7: writable segment (ignored by MS-DOS 4.0)
DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
AX = segment address of shared memory global object
CX = size in bytes
CF set on error
AX = error code (invalid name)
Desc: get address of a previously-created area of memory which may be
accessed by multiple processes
Note: this call increments the reference count for the shared memory area
SeeAls AX=8400h,AX=8402h
--------D-218402-----------------------------
INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
AX = 8402h
BX = handle (segment address of shared memory object)
Return: CF clear if successful
CF set on error
AX = error code (no such name)
Desc: indicate that the specified area of shared memory will no longer be
used by the caller
Note: the reference count is decremented and the shared memory area is
deallocated if the new reference count is zero
SeeAls AX=8400h,AX=8401h,INT 15/AX=DE19h
--------D-2185-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 85h
???
Return: ???
--------D-2186-------------------------------
INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
AH = 86h
BX = total number of file handles in new table
Return: CF clear if successful
CF set on error
AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
Desc: adjust the size of the per-process open file table, thus raising or
lowering the limit on the number of files the caller can open
simultaneously
Notes: any currently-open files are copied to the new table
if the table is increased beyond the default 20 handles, only the
first 20 will be inherited by child processes
error 06h is returned if the requested number of handles exceeds
system limits or would require closing currently-open files
SeeAls AH=26h,AH=67h
--------D-2187-------------------------------
INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
AH = 87h
Return: AX = PID
BX = parent process's PID
CX = Command Subgroup ID (CSID)
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
by several other European OEMs; its release falls between mainstream
versions 3.2 and 3.3
Desc: determine an identifier by which to access the calling process
Notes: called by MS C v5.1 getpid() function
this function apparently must return AX=0001h for INT 21/AH=80h to
succeed
one possible check for European MS-DOS 4.0 is to issue this call with
AL=00h and check whether AL is nonzero on return
SeeAls AH=30h,AH=62h,AH=80h
Index: installation check;European MS-DOS 4.0
--------D-2188-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 88h
???
Return: ???
SeeAls AH=87h
--------D-2189-------------------------------
INT 21 - European MS-DOS 4.0 - SLEEP
AH = 89h
CX = time in milliseconds or 0000h to give up time slice
Return: CF clear if successful
CX = 0000h
CF set on error
AX = error code (interrupted system call)
CX = sleep time remaining
Desc: suspend the calling process for the specified duration
Notes: the sleep interval is rounded up to the next higher increment of the
scheduler clock, and may be extended further if other processes are
running
this call may be interrupted by signals (see AH=8Dh)
reportedly called by Microsoft C 4.0 startup code
background processes have higher priority than the foreground process,
and should thus periodically yield the CPU
SeeAls AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
--------v-2189-------------------------------
INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
AH = 89h
Return: AX = 0123h if resident
SeeAls AH=84h"VIRUS",AH=90h"VIRUS"
--------D-218A-------------------------------
INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
AH = 8Ah
BL = range (00h command subtree, 01h any child)
BH = suspend flag
00h suspend if children exist but none are dead
01h return if no dead children
CX = Process ID of head of command subtree
Return: CF clear if successful
AH = termination type (see #01792)
AL = return code from child or aborting signal
BX = PID of child (0000h if no dead children)
CF set on error
AX = error code (no child,interrupted system call)
Desc: get return code from an asynchronously-executed child program,
optionally waiting if no return code is available
SeeAls AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
(Table 01792)
Values for termination type:
00h normal termination
01h aborted by Control-C
02h aborted by I/O error
03h terminate and stay resident
04h aborted by signal
05h aborted by program error
--------D-218B-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 8Bh
???
Return: ???
SeeAls AH=87h
--------D-218C-------------------------------
INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
AH = 8Ch
AL = signal number (see #01793)
BL = action (see #01794)
DS:DX -> signal handler (see #01795)
Return: CF clear if successful
AL = previous action
ES:BX -> previous signal handler
CF set on error
AX = error code (01h,invalid SigNumber or Action)
(see #01680 at AH=59h/BX=0000h)
Desc: set the routine which will be invoked on a number of exceptional
conditions
Note: all signals will be sent to the most recently installed handler
SeeAls AH=8Dh
(Table 01793)
Values for European MS-DOS 4.0 signal number:
01h SIGINTR Control-C or user defined interrupt key
08h SIGTERM program termination
09h SIGPIPE broken pipe
0Dh SIGUSER1 reserved for user definition
0Eh SIGUSER2 reserved for user definition
(Table 01794)
Values for signal action:
00h SIG_DFL terminate process on receipt
01h SIG_IGN ignore signal
02h SIG_GET signal is accepted
03h SIG_ERR sender gets error
04h SIG_ACK acknowledge received signal and clear it, but don't
change current setting
(Table 01795)
Values signal handler is called with:
AL = signal number (see #01793)
AH = signal argument
Return: RETF, CF set: terminate process
RETF, CF clear, ZF set: abort any interrupted system call with an error
RETF, CF clear, ZF clear: restart any interrupted system call
IRET: restart any interrupted system call
Note: the signal handler may also perform a nonlocal GOTO by resetting the
stack pointer and jumping; before doing so, it should dismiss the
signal by calling this function with BL=04h
--------D-218D-------------------------------
INT 21 - European MS-DOS 4.0 - SEND SIGNAL
AH = 8Dh
AL = signal number (see #01793)
BH = signal argument
BL = action
00h send to entire command subtree
01h send only to specified process
DX = Process ID
Return: CF clear if successful
CF set on error
AX = error code (01h,06h)(see #01680 at AH=59h/BX=0000h)
Desc: invoke the exceptional-condition handler for the specified process
Note: error 06h may be returned if one or more of the affected processes
have an error handler for the signal
SeeAls AH=8Ch
--------D-218E00BH00-------------------------
INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
AX = 8E00h
BH = 00h
BL = action
00h set priority for command subtree
01h set priority for specified process only
CX = Process ID
DH = 00h
DL = change in priority (00h to get priority)
Return: CF clear if successful
DL = process priority
DH destroyed
CF set on error
AX = error code (01h,no such process)(see #01680 at AH=59h)
Desc: specify or determine the execution priority of the specified process
or the process and all of its children
SeeAls AH=81h
--------D-218F-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 8Fh
???
Return: ???
SeeAls AH=87h
--------D-2190-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 90h
???
Return: ???
SeeAls AH=87h
--------v-2190-------------------------------
INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
AH = 90h
Return: AH = 01h if resident
SeeAls AH=89h"VIRUS",AX=9753h"VIRUS"
--------D-2191-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 91h
???
Return: ???
SeeAls AH=87h
--------D-2192-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 92h
???
Return: ???
SeeAls AH=87h
--------D-2193-------------------------------
INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
AH = 93h
CX = size in bytes
Return: CF clear if successful
AX = read handle
BX = write handle
CF set on error
AX = error code (08h) (see #01680 at AH=59h/BX=0000h)
Desc: create a communications channel which may be used for interprocess
data and command exchanges
SeeAls AH=3Ch,AH=3Fh"DOS",AH=40h"DOS",AH=84h
--------D-2194-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 94h
???
Return: ???
SeeAls AH=87h
--------D-2195-------------------------------
INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
AH = 95h
AL = new state
00h enabled
01h disabled, automatically fail hard errors
Return: AX = previous setting
Desc: specify whether hard (critical) errors should automatically fail the
system call or invoke an INT 24
SeeAls INT 24
--------D-2196-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 96h
???
Return: ???
--------D-2197-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 97h
???
Return: ???
--------v-219753-----------------------------
INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
AX = 9753h
Return: never (executes original program) if virus resident
SeeAls AH=90h"VIRUS",AX=A1D5h"VIRUS",AX=9AD5h"VIRUS"
--------D-2198-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 98h
???
Return: ???
--------D-2199-------------------------------
INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
AH = 99h
DS:BX -> memory location to block on
CX = timeout in milliseconds
DH = nonzero if interruptable
Return: CF clear if awakened by event
AX = 0000h
CF set if unusual wakeup
ZF set if timeout, clear if interrupted by signal
AX = nonzero
Desc: suspend calling process until another process sends a "restart" signal
or a timeout occurs
SeeAls AH=9Ah,INT 2F/AX=0802h
--------D-219A-------------------------------
INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
AH = 9Ah
DS:BX -> memory location processes may have blocked on
Return: AX = number of processes awakened
ZF set if no processes awakened
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
by several other European OEMs; its release falls between mainstream
versions 3.2 and 3.3
Desc: restart all processes waiting for the specified "restart" signal
SeeAls AH=99h,INT 2F/AX=0802h
--------v-219AD5------------------------
INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
AX = 9AD5h
Return: AX = 9AD4h if resident
SeeAls AX=6969h"VIRUS",AX=A1D5h"VIRUS"
--------I-21A0-------------------------------
INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
AH = A0h
Return: AL = display status (see #01796)
BX = host window status (see #01797)
Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
SeeAls AH=A1h
Bitfields for Attachmate Extra! display status:
Bit(s) Description (Table 01796)
7 0=windowed, 1=enlarged
6-3 current screen profile number 0-9
2-0 active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)
Bitfields for host window status:
Bit(s) Description (Table 01797)
15 reserved
14 0=host E window installed, 1=not
13 0=host E terminal on, 1=off
12 0=host E window displayed, 1=not
11 reserved
10 0=host D window installed, 1=not
9 0=host D terminal on, 1=off
8 0=host D window displayed, 1=not
7 reserved
6 0=host C window installed, 1=not
5 0=host C terminal on, 1=off
4 0=host C window displayed, 1=not
3 reserved
2 0=host B window installed, 1=not
1 0=host B terminal on, 1=off
0 0=host B window displayed, 1=not
--------I-21A1-------------------------------
INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
AH = A1h
AL = new display status byte (see #01796)
SeeAls AH=A0h,AH=A2h
--------v-21A1D5-----------------------------
INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
AX = A1D5h
Return: AX = 900Dh if resident
SeeAls AX=9753h,AX=9AD5h,AX=A55Ah
--------I-21A2-------------------------------
INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
AH = A2h
AL = new host window status byte (see #01798)
SeeAls AH=A1h
Bitfields for Attachmate Extra! host window status:
Bit(s) Description (Table 01798)
7 0=power off, 1=power on
6 0=not installed, 1=installed
5-3 reserved
2-0 window number 1-4=host B-E
--------I-21A3-------------------------------
INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
AH = A3h
AL = window number (1-4=host B-E)
CX = 0001h
DS:BX -> keystroke buffer
DL = zero if keystroke buffer contains host function code (see #01799),
non-zero if keystroke buffer contains ASCII character
Return: CX = zero if character sent, non-zero if not
BX incremented if CX=0
(Table 01799)
Values for Attachmate Extra! host function code:
00h=reserved 10h=PF16 20h=Clear 30h=SysReq
01h=PF1 11h=PF17 21h=Print 31h=ErInp
02h=PF2 12h=PF18 22h=Left 32h=ErEof
03h=PF3 13h=PF19 23h=Right 33h=Ident
04h=PF4 14h=PF20 24h=Up 34h=Test
05h=PF5 15h=PF21 25h=Down 35h=Reset
06h=PF6 16h=PF22 26h=Home 36h=DevCncl
07h=PF7 17h=PF23 27h=Fast Left 37h=Dup
08h=PF8 18h=PF24 28h=Fast Right 38h=FldMark
09h=PF9 19h=Alt on 29h=Bksp 39h=Enter
0Ah=PF10 1Ah=Alt off 2Ah=Insert 3Ah=CrSel
0Bh=PF11 1Bh=Shift on 2Bh=Delete
0Ch=PF12 1Ch=Shift off 2Ch=Backtab
0Dh=PF13 1Dh=PA1 2Dh=Tab
0Eh=PF14 1Eh=PA2 2Eh=Newline
0Fh=PF15 1Fh=PA3 2Fh=Attn
--------I-21A4-------------------------------
INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
AH = A4h
AL = window number (1-4=host B-E)
Return: DS:BX -> 3270 display buffer
SeeAls AH=A5h,AH=B8h
--------I-21A5-------------------------------
INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
AH = A5h
AL = window number (1-4=host B-E)
Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
Note: if the host window is configured with the Extended Attribute (EAB)
feature, multiply the cursor position by 2 to obtain the byte offset
into the display buffer
SeeAls AH=A4h
--------v-21A55A-----------------------------
INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
AX = A55Ah
Return: AX = 5AA5h if resident
SeeAls AX=A1D5h,AX=AA00h
--------v-21AA00-----------------------------
INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
AX = AA00h
Return: AX = 00AAh if resident
SeeAls AX=A55Ah,AX=AA03h
--------v-21AA03-----------------------------
INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
AX = AA03h
Return: AX = 03AAh if resident
SeeAls AX=AA00h,AH=ABh
--------v-21AB-------------------------------
INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
AH = ABh
Return: AX = 5555h if resident
SeeAls AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS"
--------v-21ABCD-----------------------------
INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
AX = ABCDh
Return: AX = 1234h if installed
SeeAls AH=ABh"VIRUS",AX=ABCDh"SuperVirus"
--------v-21ABCD------------------------
INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
AX = ABCDh
Return: AX = DCBAh if resident
SeeAls AX=ABCDh"VIRUS",AX=BBBBh"VIRUS"
--------I-21AF-------------------------------
INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
AH = AFh
Return: DS:BX -> translate tables (see #01800)
Format of Attachmate Extra! translate tables:
Offset Size Description (Table 01800)
00h 256 BYTEs ASCII to 3270 buffer code translate table
100h 256 BYTEs 3270 buffer code to ASCII translate table
200h 256 BYTEs 3270 buffer code to EBCDIC translate table
300h 256 BYTEs EBCDIC to 3270 buffer code translate table
--------v-21B3-------------------------------
INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
AH = B3h
Return: AX = 9051h if resident
SeeAls AH=7Fh"VIRUS",AX=B974h"VIRUS"
--------N-21B300-----------------------------
INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
AX = B300h
Return: AX = 0000h if supported???
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAls AX=B301h,AX=B302h
--------N-21B301-----------------------------
INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
AX = B301h
Return: AX = 0000h if supported???
BX:CX indicate signature level (see #01801)
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAls AX=B300h,AX=B304h,#02875 at INT 2F/AX=7A20h/BX=0000h
(Table 01801)
Values for signature level indicator:
0000h:0000h = signature level 0
0002h:0000h = signature level 1
0202h:0000h = signature level 2
0202h:0202h = signature level 3
--------N-21B302-----------------------------
INT 21 U - Novell NetWare - START PACKET SIGNING
AX = B302h
CX = server connection (1-8)
DS:SI -> 24-byte buffer containing ???
Return: ???
Notes: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
if packet signing is active, this call is required if and only if the
last call successfully authenticated the workstation to the server
SeeAls AX=B300h,#02875
--------N-21B304-----------------------------
INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
AX = B304h
BX:CX = new signature level (see AX=B301h)
Return: ???
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAls AX=B300h,AX=B301h,AX=B306h,#02875
--------N-21B306-----------------------------
INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
AX = B306h
CX = server connection number (01h-08h)
Return: ???
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAls AX=B300h,AX=B304h,#02875
--------N-21B4-------------------------------
INT 21 U - Novell NetWare - "AttachHandle"
AH = B4h
DS:SI -> input buffer (see #01802)
Return: AX = DOS file handle or return code
Note: this is an interface provided by NetWare to give DOS file access to
NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
SeeAls AX=E909h
Format of Novell NetWare input buffer:
Offset Size Description (Table 01802)
00h BYTE "WorkFileServer"
01h BYTE access code
02h DWORD "OpenHandle"
06h WORD "OpenHandleCount"
08h DWORD "OpenFileSize"
Note: the six bytes at 02h-07h appear to be the six-byte NetWare handle
returned by AX=E909h
--------N-21B500-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
AX = B500h
Return: ES:BX -> data
CX = length
SeeAls AX=B501h,AX=B502h
--------N-21B501-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
AX = B501h
SeeAls AX=B500h,AX=B502h
--------N-21B502-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
AX = B502h
SeeAls AX=B500h,AX=B501h
--------N-21B5-------------------------------
INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
AH = B5h
AL = subfunction
03h get task mode
Return: AH = 00h
AL = current task mode byte (see #01803)
04h get task mode pointer
Return: ES:BX -> task mode byte
Notes: the task mode byte specifies how task cleanup should be performed, but
is declared to be version-dependent
allows a program to disable the automatic cleanup for programs managing
task swapping, etc.
(Table 01803)
Values for NetWare task mode byte in version 3.01:
00h-03h reserved
04h no task cleanup
--------N-21B505-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
AX = B505h
???
Return: ???
SeeAls AX=B502h,AX=B506h
--------N-21B506-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
AX = B506h
Return: AX = ??? (0002h)
SeeAls AX=B505h
--------N-21B507-----------------------------
INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
AX = B507h
Return: AL = number of packet burst buffers (configured at shell load time)
--------N-21B6-------------------------------
INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
AH = B6h
AL = subfunction
00h get extended file attributes
01h set extended file attributes
CL = extended file attributes (see #01804)
DS:DX -> ASCIZ pathname (max 255 bytes)
Return: CF set on error
AL = error code
8Ch caller lacks privileges
FEh not permitted to search directory
FFh file not found
CF clear if successful
AL = 00h (success)
CL = current extended file attributes (see #01804)
Note: this function is supported by Advanced NetWare 2.1+
SeeAls AX=4300h,AH=E3h/SF=0Fh
Bitfields for NetWare extended file attributes:
Bit(s) Description (Table 01804)
2-0 search mode (executables only)
000 none (use shell's default search)
001 search on all opens without path
010 do not search
011 search on read-only opens without path
100 reserved
101 search on all opens
110 reserved
111 search on all read-only opens
3 reserved
4 transactions on file tracked
5 file's FAT indexed
6 read audit (to be implemented)
7 write audit (to be implemented)
--------N-21B7-------------------------------
INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
AH = B7h
AL = new value for HoldFileFlag
Return: AL = previous value of HoldFileFlag
Note: this function provided backward compatibility with a bug in early
DOS versions and CP/M, but is no longer used or supported
--------I-21B8-------------------------------
INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
AH = B8h
AL = window number (1-4=host B-E)
DL = 01h
Notes: only valid in CUT mode
next AID keystroke (eg Enter) enables host buffer updates
SeeAls AH=A4h
--------N-21B800-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
AX = B800h
CX = size of reply buffer (01h-3Fh)
ES:BX -> reply buffer for capture flags table (see #01805)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.0+
SeeAls AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
Format of NetWare capture flags table:
Offset Size Description (Table 01805)
00h BYTE status (used internally, should be set to 00h)
01h BYTE print flags (see #01806)
02h BYTE tab size (01h-12h, default 08h)
03h BYTE printer number on server (00h-04h, default 00h)
04h BYTE number of copies to print (00h-FFh, default 01h)
05h BYTE form type required in printer (default 00h)
06h BYTE reserved
07h 13 BYTEs text to be placed on banner page
14h BYTE reserved
15h BYTE default local printer (00h = LPT1)
16h WORD (big-endian) timeout in clock ticks for flushing capture file
on inactivity, or 0000h to disable timeout
18h BYTE flush capture file on LPT close if nonzero
19h WORD (big-endian) maximum lines per page
1Bh WORD (big-endian) maximum characters per line
1Dh 13 BYTEs name of form required in printer
2Ah BYTE LPT capture flag
00h inactive, FFh LPT device is being captured
2Bh BYTE file capture flag
00h if no file specified, FFh if capturing to file
2Ch BYTE timing out (00h if no timeout in effect, FFh if timeout counter
running)
2Dh DWORD (big-endian) address of printer setup string
31h DWORD (big-endian) address of printer reset string
35h BYTE target connection ID
36h BYTE capture in progress if FFh
37h BYTE job queued for printing if FFh
38h BYTE print job valid if FFh
39h DWORD bindery object ID of print queue if previous byte FFh
3Dh WORD (big-endian) print job number (1-999)
Bitfields for NetWare print flags:
Bit(s) Description (Table 01806)
2 print capture file if interrupted by loss of connection
3 no automatic form feed after print job
6 printing control sequences interpreted by print service
7 print banner page before capture file
--------N-21B801-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
AX = B801h
CX = size of buffer (01h-3Fh)
ES:BX -> buffer containing capture flags table (see #01805)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.0+
SeeAls AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
--------N-21B802-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
AX = B802h
CX = size of reply buffer (01h-3Fh)
DH = LPT port (00h-02h)
ES:BX -> reply buffer for capture flags table (see #01805)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAls AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
--------N-21B803-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
AX = B803h
CX = size of buffer (01h-3Fh)
DH = LPT port (00h-02h)
ES:BX -> buffer containing capture flags table (see #01805)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAls AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
--------N-21B804-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
AX = B804h
Return: DH = default LPT port (00h-02h)
Note: this function is supported by Advanced NetWare 2.1+
SeeAls AX=B800h,AX=B805h,AH=DFh/DL=00h
--------N-21B805-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
AX = B805h
DH = new default LPT port (00h-02h)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAls AX=B800h,AX=B804h,AH=DFh/DL=00h
--------N-21B806-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
AX = B806h
DH = LPT port (00h-02h)
BX:CX = print queue's object ID
Return: AL = status
00h successful
FFh job already set
Desc: specify the print queue on which a print job is to be placed the next
time a capture is started on the given printer port
Note: this function is supported by Advanced NetWare 2.1+
SeeAls AX=B801h,AX=B807h,AH=E0h/SF=09h
--------N-21B807-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
AX = B807h
DH = LPT port (00h-02h)
BX = job number (see AH=E3h/SF=68h)
SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
Return: AL = status
00h successful
FFh job already queued
Desc: specify the capture file and print job to be used for subsequent
output to the given printer port
Note: this function is supported by Advanced NetWare 2.1+
SeeAls AX=B801h,AX=B806h,AH=E0h/SF=09h,AH=E3h/SF=68h
--------N-21B808-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
AX = B808h
ES:BX -> 12-byte buffer for user name
Return: AL = status
00h successful
Desc: get the user name which is printed on the banner page
Notes: this function is supported by Advanced NetWare 2.1+
the default name is the login name of the user
SeeAls AX=B809h
--------N-21B809-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
AX = B809h
ES:BX -> 12-byte buffer containing user name
Return: AL = status
00h successful
Desc: specify the user name which is printed on the banner page
Notes: this function is supported by Advanced NetWare 2.1+
the default name is the login name of the user
SeeAls AX=B808h
--------N-21B9-------------------------------
INT 21 U - Novell NetWare - "SpecialAttachableFunction"
AH = B9h
AL = FFh to hook this function
ES:BX -> function to invoke on AH=B9h when AL<>FFh
Note: this function is no longer used or supported by current versions of
NetWare
--------v-21B974-----------------------------
INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
AX = B974h
Return: AX = 2888h if resident
SeeAls AH=B3h"VIRUS",AH=D0h"VIRUS"
--------N-21BA-------------------------------
INT 21 U - Novell NetWare - "ReturnCommandComPointers"
AH = BAh
Return: DX = environment segment
ES:DI -> COMMAND.COM drive
Desc: used to edit the COMSPEC and PATH variables in the master environment
when mapping network drives
Note: this function was documented in older Novell documents which are no
longer available
--------N-21BB-------------------------------
INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
AH = BBh
AL = new EOJ flag
00h disable EOJs
01h enable EOJs
Return: AL = old EOJ flag
Desc: specify whether the network shell should automatically generate an
End of Job call when the root command processor regains control
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=19h,AH=D6h
--------v-21BBBB-----------------------------
INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
AX = BBBBh
Return: AX = 6969h
SeeAls AH=ABh"VIRUS",AH=BEh"VIRUS"
--------N-21BC-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
AH = BCh
AL = flags (see #01808)
BX = file handle
CX:DX = starting offset in file
SI:DI = length of region to lock
BP = timeout in timer ticks (1/18 sec)
0000h = don't wait if already locked
Return: AL = status (see #01807)
Desc: add the specified physical record to the log table, optionally locking
it
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
(Table 01807)
Values for NetWare status:
00h successful
96h no dynamic memory for file
FEh timed out
FFh failed
Bitfields for NetWare flags:
Bit(s) Description (Table 01808)
0 lock as well as log record
1 non-exclusive lock
--------N-21BD-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
AH = BDh
BX = file handle
CX:DX = starting offset in file
SI:DI = length of record
Return: AL = status
00h successful
FFh record not locked
Desc: unlock the specified physical record but do not remove it from log
table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
--------N-21BE-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
AH = BEh
BX = file handle
CX:DX = starting offset within file
SI:DI = record length in bytes
Return: AL = status
00h successful
FFh specified record not locked
Desc: unlock the physical record and remove it from the log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
--------v-21BE-------------------------------
INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
AH = BEh
Return: AX = 1234h if resident
SeeAls AX=BBBBh,AX=BE00h
--------v-21BE00-----------------------------
INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
AX = BE00h
CF set
Return: CF clear if resident
SeeAls AH=BEh"VIRUS",AH=C0h"VIRUS"
--------N-21BF-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
AH = BFh
AL = flags (see #01808)
DS:DX -> opened FCB (see #01345 at AH=0Fh)
BX:CX = offset
BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
SI:DI = length
Return: AL = error code (see #01807)
Note: this function was added in NetWare 4.6, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAls AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
--------N-21C0-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
AH = C0h
DS:DX -> non-extended FCB (see #01345 at AH=0Fh)
BX:CX = offset
Return: AL = error code (see #01807)
Notes: unlocks record but does not remove it from log table
this function was added in NetWare 4.6, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAls AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
--------v-21C0-------------------------------
INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
AH = C0h
Return: AX = 0300h if "Slow"/"Zerotime" resident
AX = 1234h if "Solano" resident
SeeAls AX=BE00h,AX=C000h"VIRUS",AX=C301h"VIRUS"
--------v-21C000-----------------------------
INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
AX = C000h
BX = most files infected by any other infected file
Return: AX = 76F3h if resident
SeeAls AH=C0h"VIRUS",AX=C001h,AX=C002h,AH=C1h"VIRUS"
--------v-21C001-----------------------------
INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
AX = C001h
Return: nothing
Note: if the virus is already memory resident this call disables any
further infections
SeeAls AX=C000h,AX=C002h
--------v-21C002-----------------------------
INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
AX = C002h
Return: nothing
Note: if the virus is already memory resident and infection is disabled,
this call re-enables it
SeeAls AX=C000h,AX=C001h
--------N-21C1-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
AH = C1h
DS:DX -> opened FCB (see #01345 at AH=0Fh)
BX:CX = offset
Return: AL = error code (see #01807)
Note: unlocks record and removes it from log table
this function was added in NetWare 4.6, but was removed some time prior
to Advanced NetWare, and is no longer listed in current Novell
documentation
SeeAls AH=BEh,AH=C0h"NetWare",AH=C4h
--------v-21C1-------------------------------
INT 21 - VIRUS - "Solano" - ???
AH = C1h
???
Return: ???
SeeAls AH=C0h"VIRUS"
--------N-21C2-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
AH = C2h
AL = flags
bit 1: non-exclusive lock
BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
Return: AL = status
00h successful
FEh timed out
FFh failed
Desc: attempt to lock all physical records listed in the log table
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
status FFh will be returned if one or more physical records have been
exclusively locked by another process
SeeAls AH=BFh,AH=C3h,AH=D1h
--------v-21C2-------------------------------
INT 21 - VIRUS - "Scott's Valley" - ???
AH = C2h
???
Return: ???
SeeAls AH=C0h"VIRUS"
--------N-21C3-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
AH = C3h
Desc: unlock all currently-locked physical records in the log table, but do
not remove them from the table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
--------v-21C301DXF1F1-----------------------
INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
AX = C301h
DX = F1F1h
Return: DX = 0E0Eh if resident
SeeAls AH=C0h"VIRUS",AX=C500h"VIRUS"
--------N-21C4-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
AH = C4h
Desc: unlock all physical records in the log table and remove them from the
log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=BEh,AH=C1h,AH=D5h
--------N-21C500-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
AX = C500h
DS:DX -> semaphore name (counted string, max 127 bytes)
CL = initial value for semaphore
Return: AL = status
00h successful
BL = number of processes having semaphore open
CX:DX = semaphore handle
03h name length greater than 127
(refer to Novell document FYI.A.4611)
FEh invalid name length
FFh invalid semaphore value
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
the semaphore's value is incremented by AX=C503h and decremented by
AX=C502h
SeeAls AX=C501h,AX=C502h,AX=C503h,AX=C504h,AX=F220h/SF=00h
--------v-21C500-----------------------------
INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
AX = C500h
Return: AX = 6731h if resident
SeeAls AX=C301h"VIRUS",AH=C6h"VIRUS"
--------N-21C501-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
AX = C501h
CX:DX = semaphore handle
Return: AL = status
00h successful
CX = semaphore value (-127 to 127)
DL = count of processes which have the semaphore open
FFh invalid handle
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AX=C500h"NetWare",AX=C502h,AX=C504h,AX=F220h/SF=01h
--------N-21C502-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
AX = C502h
CX:DX = semaphore handle
BP = timeout limit in timer ticks (1/18 sec)
0000h return immediately if semaphore already zero or negative
Return: AL = status
00h successful
FEh timeout
FFh invalid handle
Desc: decrement the semaphore's value, optionally waiting until its value
becomes positive before decrementing
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AX=C500h"NetWare",AX=C501h,AX=C503h,AX=F220h/SF=02h
--------N-21C503-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
AX = C503h
CX:DX = semaphore handle
Return: AL = status
00h successful
01h semaphore value overflowed
FFh invalid handle
Desc: increment the semaphore's value and signal the first process (if any)
in the queue waiting on the semaphore
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AX=C500h"NetWare",AX=C502h,AX=F220h/SF=03h
--------N-21C504-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
AX = C504h
CX:DX = semaphore handle
Return: AL = status
00h successful
FFh invalid handle
Desc: decrement the semaphore's open count, and delete the semaphore if the
count reaches zero
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AX=C500h"NetWare",AX=C501h,AX=F220h/SF=04h
--------N-21C6-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
AH = C6h
AL = subfunction
00h set old "compatibility" mode (default)
01h set new extended locks mode
02h get lock mode
Return: AL = current lock mode
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
the locking mode should be 01h for NetWare 4.61+ and Advanced
NetWare 1.0+ locking calls, and 00h for all older calls
SeeAls AH=BCh,AH=C4h,AH=D0h
--------v-21C6-------------------------------
INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
AH = C6h
Return: AL = 55h if resident
SeeAls AX=C500h"VIRUS",AX=C603h
--------v-21C603-----------------------------
INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
AX = C603h
BX = version number (002Ch or 002Dh)
CF set
Return: CF clear if resident
ZF set if resident and input BX matches version
SeeAls AX=C500h"VIRUS",AX=C700h"VIRUS"
--------N-21C700-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
AX = C700h
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code
96h out of memory
FEh implicit transaction already active, converted to explicit
FFh explicit transaction already active
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAls AX=C701h,AX=C702h,AX=C703h,AX=F222h/SF=01h
--------v-21C700-----------------------------
INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
AX = C700h
Return: AL = 07h if resident
SeeAls AX=C603h"VIRUS",AH=CBh"VIRUS"
--------N-21C701-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
AX = C701h
Return: AL = status (00h,FDh-FFh) (see #01809)
00h successful
CX:DX = transaction number
CF clear except when AL=FFh
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAls AX=C700h"NetWare",AX=C703h,AX=F222h/SF=02h
(Table 01809)
Values for NetWare TTS status:
00h successful
FDh transaction tracking disabled
FEh transaction ended records locked
FFh no explicit transaction active
--------N-21C702-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
AX = C702h
Return: AL = status
00h not available
01h available
FDh available but disabled
Desc: determine whether the default file server supports TTS
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAls AX=C700h,AX=C701h,AX=C703h,AX=F222h/SF=00h
--------N-21C703-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
AX = C703h
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code (FDh-FFh) (see #01809)
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAls AX=C700h"NetWare",AX=C701h,AX=C704h,AX=F222h/SF=03h
--------N-21C704-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
AX = C704h
CX:DX = transaction number (see AX=C701h)
Return: AL = status
00h successful
FFh not yet written to disk
Desc: verify that a transaction has actually been written to disk
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
transactions are written to disk in the order in which they are ended,
but it may take as much as five seconds for the data to be written
SeeAls AX=C700h"NetWare",AX=C701h,AX=C703h,AX=F222h/SF=04h
--------N-21C705-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
AX = C705h
Return: AL = status
00h successful
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Desc: get the per-application limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is FFh, implicit transactions are disabled for the
corresponding lock type
SeeAls AX=C706h,AX=C707h,AX=F222h/SF=05h
--------N-21C706-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
AX = C706h
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Return: AL = status
00h successful
Desc: specify the per-application limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is set to FFh, implicit transactions are disabled for
the corresponding lock type
SeeAls AX=C705h,AX=C708h,AX=F222h/SF=06h
--------N-21C707-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
AX = C707h
Return: AL = status
00h successful
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Desc: get the per-workstation limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is FFh, implicit transactions are disabled for the
corresponding lock type
SeeAls AX=C705h,AX=C708h,AX=F222h/SF=07h
--------N-21C708-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
AX = C708h
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Return: AL = status
00h successful
Desc: specify the per-workstation limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is set to FFh, implicit transactions are disabled for
the corresponding lock type
SeeAls AX=C706h,AX=C707h,AX=F222h/SF=08h
--------N-21C8-------------------------------
INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
AH = C8h
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h:
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
Desc: used to provide TTS support for applications which are not aware of
Novell's Transaction Tracking System
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAls AH=C9h
--------N-21C9-------------------------------
INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
AH = C9h
Return: AL = error code
Desc: used to provide TTS support for applications which are not aware of
Novell's Transaction Tracking System
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAls AH=C8h
--------N-21CA-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
AH = CAh
DS:DX -> FCB (see #01345 at AH=0Fh)
if function C6h lock mode 01h:
AL = log and lock flag
00h log file only
01h lock as well as log file
BP = lock timeout in timer ticks (1/18 sec)
Return: AL = error code
00h successful
96h no dynamic memory for file
FEh timeout
FFh failed
Desc: provides file locking support for FCBs
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAls AH=CBh
--------v-21CA15-----------------------------
INT 21 - VIRUS - "Piter" - ???
AX = CA15h
???
Return: ???
SeeAls AH=CCh"VIRUS"
--------N-21CB-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
AH = CBh
if function C6h lock mode 00h:
DL = mode (00h no wait, 01h wait)
if function C6h lock mode 01h:
BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
Return: AL = status (00h,FEh,FFh) (see #01810)
Desc: attempt to lock all files listed in the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
status FFh will be returned if one or more of the files have already
been exclusively locked by another process
SeeAls AH=CAh,AH=CDh,AH=D1h,AH=EBh
(Table 01810)
Values for NetWare status:
00h successful
FEh timed out
FFh failed
--------v-21CB-------------------------------
INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
AH = CBh
Return: AL = 07h if resident
SeeAls AX=C700h"VIRUS",AX=CB02h
--------v-21CB02-----------------------------
INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
AX = CB02h
Return: AX = 02CBh if resident
SeeAls AH=CBh"VIRUS",AH=CCh"VIRUS"
--------N-21CC-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
AH = CCh
DS:DX -> FCB (see #01345 at AH=0Fh)
Return: none
Desc: unlocks file, but does not remove it from the log table or close it
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAls AH=CAh,AH=CDh
--------v-21CC-------------------------------
INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
AH = CCh
Return: AX = 0700h if resident
SeeAls AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
--------N-21CD-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
AH = CDh
Return: none
Desc: unlock all files listed in the log table, but don't remove them from
the table
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=CBh,AH=CCh,AH=CFh,AH=D3h
--------v-21CD-------------------------------
INT 21 - VIRUS - "Westwood" - ???
AH = CDh
???
Return: ???
SeeAls AH=CCh"VIRUS"
--------N-21CE-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
AH = CEh
DS:DX -> FCB (see #01345 at AH=0Fh)
Return: AL = error code
Desc: unlocks file and removes it from log table, then closes all opened and
logged occurrences
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAls AH=CAh,AH=CFh,AH=EDh"NetWare"
--------N-21CF-------------------------------
INT 21 - LANstep - ???
AH = CFh
???
Return: ???
Program: LANstep is a redesign of the Waterloo Microsystems PORT network
--------N-21CF-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
AH = CFh
Return: AL = 00h
Desc: unlock and remove all files from log table
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=CAh,AH=CEh,AH=EBh"NetWare"
--------N-21D0-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
AH = D0h
DS:DX -> record string (counted string, max 99 data bytes)
if function C6h lock mode 01h: (Novell, NTNX only)
AL = flags
bit 0: lock as well as log the record
bit 1: non-exclusive lock
BP = lock timeout in timer ticks (1/18 sec)
Return: AL = status
00h successful
96h no dynamic memory for file
FEh timed out
FFh unsuccessful
Desc: add the specified logical record name to the log table, and optionally
lock the record
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAls AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
--------v-21D0-------------------------------
INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
AH = D0h
Return: AX = 00D0h if resident
SeeAls AH=B3h"VIRUS",AH=D0h"ANTIARJ",AX=D000h"VIRUS"
--------v-21D0-----------------------------
INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
AH = D0h
Return: AH = D1h if resident
SeeAls AH=D0h"MALAGA"
--------v-21D000-----------------------------
INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
AX = D000h
Return: BX = 1234h if resident
SeeAls AH=CCh"VIRUS",AH=D0h"ANTIARJ",AX=D000h"Warlock",AH=D5h"VIRUS",AX=D5AAh
--------v-21D000-----------------------------
INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
AX = D000h
CF clear
Return: CF set if resident (normal DOS return would be CF clear)
SeeAls AX=D000h"VIRUS",AH=D5h"VIRUS"
--------N-21D1-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
AH = D1h
AL = lock type (00h exclusive, 01h shareable)
if function C6h lock mode 00h:
DL = mode (00h no wait, 01h wait)
if function C6h lock mode 01h: (Novell only)
BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
Return: AL = status (see #01810)
Desc: attempt to lock all logical record names listed in the log table
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
status FFh will be returned if one or more logical records have been
exclusively locked by another process
locks on logical record names are advisory and may be ignored by other
applications
SeeAls AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
--------N-21D2-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
AH = D2h
DS:DX -> semaphore identifier (counted string up to 99 chars long)
Return: AL = status
00h successful
FFh no such record
Desc: unlock the logical record name but do not remove it from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAls AH=BDh,AH=D0h,AH=D3h,AH=D4h
--------v-21D2-------------------------------
INT 21 - VIRUS???
AH = D2h
???
Return: ???
Note: this call is intercepted by the Search&Destroy SDRes v27.03 bundled
with Novell DOS 7, and is presumably some virus's installation check
SeeAls AH=4Ah/BX=00B6h
--------N-21D3-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
AH = D3h
Desc: unlock all currently-locked logical record names in the log table, but
do not remove them from the table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAls AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
--------N-21D4-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
AH = D4h
DS:DX -> logical record name (counted string up to 99 chars long)
Return: AL = status (00h,FFh) (see #01811)
Desc: unlock and remove the logical record name from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAls AH=BEh,AH=D0h,AH=D2h,AH=D5h
(Table 01811)
Values for NetWare status:
00h successful
FFh no such record name
--------N-21D5-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
AH = D5h
Return: AL = error code (00h,FFh) (see #01811)
Desc: unlock and remove all logical record name from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAls AH=D1h,AH=D3h,AH=D4h
--------v-21D5-------------------------------
INT 21 - VIRUS - "Carfield" - ???
AH = D5h
???
Return: ???
SeeAls AX=D5AAh,AH=F3h"Carfield"
--------v-21D5AA-----------------------------
INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
AX = D5AAh
Return: AX = 2A55h if "Diamond-A" resident
AX = 2A03h if "Diamond-B"-family virus resident
SeeAls AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
--------v-21D5AABPDEAA-----------------------
INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
AX = D5AAh
BP = DEAAh
Return: SI = 4321h if resident
SeeAls AX=D5AAh,AX=DADAh"VIRUS"
--------N-21D6-------------------------------
INT 21 - Novell NetWare - WORKSTATION - END OF JOB
AH = D6h
BX = job flag (0000h current job, FFFFh all processes on workstation)
Return: AL = error code
Desc: unlocks and clears all locked or logged files and records held by the
process(es), closes all files, resets error and lock modes, and
releases all network resources
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=BBh"NetWare",AH=D7h
--------N-21D7-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
AH = D7h
Return: AL = error code
Desc: this function closes the caller's open files, logs it out from all
file servers, detaches the workstation from all non-default file
servers, and maps a drive to the default server's SYS:LOGIN directory
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=D6h,AH=E3h/SF=14h,AH=F1h"NetWare"
--------N-21D8-------------------------------
INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
AH = D8h
DL = resource number
Return: AL = status (00h successful, FFh unsucessful)
Note: this function is no longer used or supported by NetWare, and is not
documented in Novell documents
SeeAls AH=D9h
--------N-21D9-------------------------------
INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
AH = D9h
DL = resource number
Return: AL = status (00h successful, FFh unsucessful)
Note: this function is no longer used or supported by NetWare, and is not
documented in Novell documents
SeeAls AH=D8h
--------N-21DA-------------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
AH = DAh
DL = volume number
ES:DI -> reply buffer (see #01812)
Return: AL = 00h
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
operator console rights are not required to make this call
reported total blocks and total unused blocks include the Hot Fix
Table; the NetWare shell's implementation of INT 21/AH=36h will
report values larger than 268MB as 268MB.
SeeAls AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
Format of NetWare reply buffer:
Offset Size Description (Table 01812)
00h WORD sectors/block
02h WORD total blocks on volume
04h WORD unused blocks
06h WORD total directory entries
08h WORD unused directory entries
0Ah 16 BYTEs volume name, null padded
1Ah WORD removable flag, 0000h = not removable
Note: all words are big-endian
--------v-21DADA-----------------------------
INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
AX = DADAh
Return: AH = A5h
SeeAls AX=D5AAh,AX=DAFEh"VIRUS"
--------v-21DAFE-----------------------------
INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
AX = DAFEh
Return: AX = 1234h if resident
SeeAls AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
--------N-21DB-------------------------------
INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
AH = DBh
Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=0Eh
--------N-21DC-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
AH = DCh
Return: AL = logical connection number
00h if NetWare not loaded or this machine is a non-dedicated server
CX = station number in ASCII (CL = first digit)
Notes: this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
NTNX
station number only unique for those PCs connected to same semaphore
service
SeeAls AH=F2h"NetWare"
--------d-21DC-------------------------------
INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
AH = DCh
DX = state
0000h turn on
0001h turn off
SeeAls AX=FEDCh
--------v-21DC28-----------------------------
INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
AX = DC28h
Return: AX = 1973h if resident
SeeAls AX=D000h"VIRUS",AX=DCBAh"VIRUS"
--------v-21DCBA-----------------------------
INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
AX = DCBAh
Return: AX = ABCDh if resident
SeeAls AX=DC28h"VIRUS",AX=DEFEh"VIRUS"
--------N-21DD-------------------------------
INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
AH = DDh
DL = error mode
00h invoke INT 24 on critical I/O errors (default)
01h return NetWare extended error code in AL
02h return error code in AL, mapped to standard DOS error codes
Return: AL = previous error mode
Note: this function is supported by Advanced NetWare 2.0+
SeeAls INT 24
--------v-21DD-------------------------------
INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
AH = DDh
CX = number of bytes to copy
DS:SI -> source of copy
ES:DI -> destination of copy
Return: does not return normally; return address is caller's CS:0100h with
AX = ???
SeeAls AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS"
--------v-21DDEF------------------------
INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
AX = DDEFh
Return: AX = EFDDh if resident
SeeAls AH=DDh"VIRUS",AH=DEh"VIRUS"
--------v-21DE-------------------------------
INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
AH = DEh
Return: AH = DFh if resident
SeeAls AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210"
--------v-21DE-------------------------------
INT 21 - VIRUS - "April 1st EXE" - ???
AH = DEh
???
Return: ???
SeeAls AH=DEh"Durban",AX=DEADh"90210"
--------N-21DE-------------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
AH = DEh
DL = broadcast mode
00h receive server and workstation broadcasts (default)
01h receive server broadcasts, discard user messages
02h store server broadcasts for retrieval
03h store all broadcasts for retrieval
Return: AL = new broadcast mode
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
--------N-21DE--DL04-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
AH = DEh
DL = 04h
Return: AL = current broadcast mode
00h receive server and workstation broadcasts (default)
01h receive server broadcasts, discard user message
02h store server broadcasts for retrieval
03h store all broadcasts for retrieval
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
--------N-21DE-------------------------------
INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
AH = DEh
DL = function
05h disable shell timer interrupt checks
06h enable shell timer interrupt checks
Return: ???
Note: this function was added in NetWare 4.0, but is not listed in current
Novell documentation and is probably no longer supported
--------v-21DEAD------------------------
INT 21 - VIRUS - "90210" - INSTALLATION CHECK
AX = DEADh
Return: AX = AAAAh if resident
SeeAls AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS"
--------v-21DEAD------------------------
INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
AX = DEADh
SeeAls AX=FEADh
SeeAls AX=DEADh"90210",AX=DEDEh"VIRUS"
--------v-21DEDE-----------------------------
INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
AX = DEDEh
Return: AH = 41h if resident
SeeAls AX=DEADh"Shifting",AX=DEFEh"VIRUS"
--------v-21DEFE-----------------------------
INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
AX = DEFEh
Return: AX = ABCDh if resident
SeeAls AX=DCBAh"VIRUS",AX=DEDEh"VIRUS",AH=E0h"VIRUS"
--------N-21DF--DL00-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
AH = DFh
DL = 00h
Return: AL = status
00h successful
Desc: this function redirects the default LPT to a capture file on the file
server
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
a print job is queued when the first character of output is captured
SeeAls AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
SeeAls AH=DFh/DL=04h,AX=F003h
--------N-21DF--DL01-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
AH = DFh
DL = 01h
Return: AL = status
00h successful
Desc: stop redirecting the default LPT, close the capture file, and release
the job in the print queue for printing
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
after this call, the default LPT defaults to local printing
SeeAls AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
--------N-21DF--DL02-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
AH = DFh
DL = 02h
Return: AL = status
00h successful
Desc: this function ends the capture of the default LPT, removes the job from
the print queue, and deletes the capture file unless it is a
permanent capture file
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
after this call, the default LPT defaults to local printing
SeeAls AH=DFh/DL=00h,AH=DFh/DL=06h
--------N-21DF--DL03-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
AH = DFh
DL = 03h
Return: AL = status
00h successful
Desc: this function closes the current capture file for the default LPT
and starts printing it if it is not a permanent capture file
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
if more data is sent to the LPT port after this call, a new capture
file will be opeend
SeeAls AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
--------N-21DF--DL04-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
AH = DFh
DL = 04h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function redirects the specified LPT to a capture file on the file
server
Notes: this function is supported by Advanced NetWare 2.1+
a print job is queued when the first character of output is captured
SeeAls AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
SeeAls AX=F003h
--------N-21DF--DL05-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
AH = DFh
DL = 05h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: stop redirecting the specified LPT, close the capture file, and release
the job in the print queue for printing
Notes: this function is supported by Advanced NetWare 2.1+
after this call, the specified LPT defaults to local printing
SeeAls AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
--------N-21DF--DL06-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
AH = DFh
DL = 06h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function ends the capture of the specified LPT, removes the job
from the print queue, and deletes the capture file unless it is a
permanent capture file
Notes: this function is supported by Advanced NetWare 2.1+
after this call, the specified LPT defaults to local printing
SeeAls AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
--------N-21DF--DL07-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
AH = DFh
DL = 07h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function closes the current capture file for the specified LPT
and starts printing it if it is not a permanent capture file
Notes: this function is supported by Advanced NetWare 2.1+
if more data is sent to the LPT port after this call, a new capture
file will be opeend
SeeAls AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
--------T-21DF00DX534C-----------------------
INT 21 U - Software Carousel - INSTALLATION CHECK
AX = DF00h
DX = 534Ch ("SL")
DI = 534Ch ("SL")
Return: AX = 00FFh if installed
???
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
--------T-21DF01-----------------------------
INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
AX = DF01h
BL = task number (00h = next task)
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,02h) (see #01813)
(Table 01813)
Values for Software Carousel error code:
00h invalid subfunction in AL
01h invalid task number
02h tried to switch to task with no memory size
03h tried to kill program in partition with no program running
04h tried to change size of an active memory partition
05h invalid memory size
06h tried to send command to task with a pending previous command
--------T-21DF02-----------------------------
INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
AX = DF02h
BL = task number
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,03h) (see #01813)
--------T-21DF03-----------------------------
INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
AX = DF03h
BL = task number
Return: AL = status
00h Carousel not running
01h successful
BL = partition state (00h no program running, 01h prog running)
DX = partition size in KB
FFh unsucessful
AH = error code (01h) (see #01813)
SeeAls AX=DF05h
--------T-21DF04-----------------------------
INT 21 - Software Carousel - GET PARTITION NAME
AX = DF04h
BL = task number
Return: AL = status
00h Carousel not running
01h successful
CX = length of name (00h if default partition name)
ES:BX -> partition name (if CX nonzero)
FFh unsucessful
AH = error code (01h) (see #01813)
SeeAls AX=DF06h
--------T-21DF05-----------------------------
INT 21 - Software Carousel - CHANGE PARTITION SIZE
AX = DF05h
BL = task number
DX = new size in KB
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,04h,05h) (see #01813)
BX = minimum size allowed
CX = maximum size available
SeeAls AX=DF03h
--------T-21DF06-----------------------------
INT 21 - Software Carousel - CHANGE PARTITION NAME
AX = DF06h
BL = task number
CX = length of new name (00h to use default, max 18h)
DS:SI -> new name
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h) (see #01813)
SeeAls AX=DF04h
--------T-21DF07-----------------------------
INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
AX = DF07h
BL = task number
CX = length of command (max 8 chars)
DS:SI -> command line
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,06h) (see #01813)
Note: the maximum length seems too small and may be a typo for 80 characters
--------T-21DF08-----------------------------
INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
AX = DF08h
BL = new state of keyboard (00h disabled, 01h enabled)
Return: AL = status
00h Carousel not running
01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
Note: when the keyboard is is disabled, the user may neither access the
Carousel menu nor switch to another memory section
--------T-21DF09-----------------------------
INT 21 - Software Carousel - BOOT THE SYSTEM
AX = DF09h
Return: AL = status
00h Carousel not running
FFh unsucessful
AH = error code (01h,03h) (see #01813)
Note: this function never returns if successful
--------T-21DF0A-----------------------------
INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
AX = DF0Ah
Return: AL = status
00h Carousel not running
01h successful
BL = task number
DX = memory size in KB
FFh unsucessful
AH = error code (01h,03h) (see #01813)
--------T-21DF0B-----------------------------
INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
AX = DF0Bh
BH = interrupt number or 00h
BL = function number to invoke on partition switch
CL = function number to call when it is safe for resident programs
to perform DOS calls
DS:DX -> FAR function to call if BH=00h
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,03h) (see #01813)
Notes: the specified interrupt or FAR function is called with AH set to the
appropriate one of the values specified in BL and CL, and BL set to
the new task number
the function specified by CL will not be called until the notification
is enabled with AX=DF0Ch
SeeAls AX=DF0Ch
--------T-21DF0C-----------------------------
INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
AX = DF0Ch
Return: AL = status
00h Carousel not running
01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
SeeAls AX=DF0Bh
--------O-21E0-------------------------------
INT 21 - Digital Research DOS Plus - CALL BDOS
AH = E0h
CL = BDOS function number (see #04019 at INT E0"CP/M-86")
other registers as appropriate for function
Return: as appropriate for function
SeeAls AX=4459h,INT E0"CP/M-86"
--------E-21E0-------------------------------
INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
AH = E0h
???
Return: ???
SeeAls AH=E1h"OS/286"
--------T-21E0-------------------------------
INT 21 - DoubleDOS - MENU CONTROL
AH = E0h
AL = subfunction
01h exchange tasks
73h resume invisible job if suspended
74h kill other job
75h suspend invisible job
Note: identical to AH=F0h
SeeAls AH=F0h"DoubleDOS"
--------v-21E0-------------------------------
INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
AH = E0h
Return: AX = 0300h if "Jerusalem" resident
AX = DADAh if "Armagedon" resident
SeeAls AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
--------N-21E0-------------------------------
INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
AH = E0h
DS:SI -> request buffer (see #01814)
ES:DI -> reply buffer
Return: AL = status
Note: this function was added in NetWare 4.0, but is no longer listed in
current Novell documentation and may no longer be supported
SeeAls AH=E3h/SF=68h,AX=F211h/SF=06h,AX=F211h/SF=0Ah
Format of NetWare print spooling request buffer:
Offset Size Description (Table 01814)
00h WORD length of following data
02h BYTE subfunction
00h spool data to a capture file
01h close and queue capture file
02h set spool flags
03h spool existing file
04h get spool queue entry
05h remove entry from spool queue
03h ???
SeeAls #02101
--------N-21E0--SF06-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
AH = E0h subfn 06h
DS:SI -> request buffer (see #01815)
ES:DI -> reply buffer (see #01816)
Return: AL = status
00h successful
FFh no such printer
Desc: get current state of specified printer attached to the server
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
Format of NetWare "Get Printer Status" request buffer:
Offset Size Description (Table 01815)
00h WORD 0002h (length of following data)
02h BYTE 06h (subfunction "Get Printer Status")
03h BYTE printer number (00h-04h)
SeeAls #01816
Format of NetWare "Get Printer Status" reply buffer:
Offset Size Description (Table 01816)
00h WORD (call) 0004h (size of following results buffer)
02h BYTE flag: 00h printer active, FFh printer halted
03h BYTE flag: 00h printer online, 01h printer offline
04h BYTE current form type
05h BYTE target printer number (00h-04h)
same as number in request buffer unless rerouted by server
console
SeeAls #01815
--------N-21E0--SF09-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
AH = E0h subfn 09h
DS:SI -> request buffer (see #01817)
ES:DI -> reply buffer (see #01818)
Return: AL = status
00h successful
9Ch invalid path
Desc: create a permanent capture file for the next print capture to be
started
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
the caller must have read, write, and create rights for the directory
containing the capture file
Format of NetWare "Specify Capture File" request buffer:
Offset Size Description (Table 01817)
00h WORD length of following data (max 102h)
02h BYTE 09h (subfunction "Specify Capture File")
03h BYTE directory handle or 00h
04h BYTE length of filename
05h N BYTEs name of capture file
SeeAls #01818
Format of NetWare reply buffer:
Offset Size Description (Table 01818)
00h WORD (call) 0000h (no results returned)
SeeAls #01817
--------v-21E00F-----------------------------
INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
AX = E00Fh
Return: AX = 4C31h if resident
SeeAls AH=E0h"VIRUS",AH=E1h"VIRUS"
--------E-21E1-------------------------------
INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
AH = E1h
???
Return: ???
Note: protected mode only???
SeeAls AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
--------T-21E1-------------------------------
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
AH = E1h
SeeAls AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAls AH=F1h"DoubleDOS"
--------v-21E1-------------------------------
INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
AH = E1h
Return: AX = 0300h if "Mendoza" resident
AX = 0400h if "Fu Manchu" resident
SeeAls AX=E00Fh,AH=E4h"VIRUS"
--------N-21E1--SF00-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
AH = E1h subfn 00h
DS:SI -> request buffer (see #01819)
ES:DI -> reply buffer (see #01820)
Return: AL = status
00h successful
FEh I/O error or out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAls AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
SeeAls AH=E1h/SF=09h
Format of NetWare "Send Broadcast Message" request buffer:
Offset Size Description (Table 01819)
00h WORD length of following data (max 9Eh)
02h BYTE 00h (subfunction "Send Broadcast Message")
03h BYTE number of connections (01h-64h)
04h N BYTEs list of connections to receive broadcast message
BYTE length of message (01h-37h)
N BYTEs broadcast message (no control characters or characters > 7Eh)
SeeAls #01820
Format of NetWare "Send Broadcast Message" reply buffer:
Offset Size Description (Table 01820)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of per-connection results
00h successful
FCh message rejected due to lack of buffer space
FDh invalid connection number
FFh blocked (see also AH=E1h/SF=02h)
SeeAls #01819
--------N-21E1--SF01-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
AH = E1h subfn 01h
DS:SI -> request buffer (see #01821)
ES:DI -> reply buffer (see #01822)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAls AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
SeeAls AX=F215h/SF=01h,AX=F215h/SF=0Bh
Format of NetWare "Get Broadcast Message" request buffer:
Offset Size Description (Table 01821)
00h WORD 0001h (length of following data)
02h BYTE 01h (subfunction "Get Broadcast Message")
SeeAls #01822,#02109
Format of NetWare "Get Broadcast Message" reply buffer:
Offset Size Description (Table 01822)
00h WORD (call) size of following results buffer (max 38h)
02h BYTE length of message (00h-37h)
00h if no broadcast messages pending
03h N BYTEs message (no control characters or characters > 7Eh)
SeeAls #01821,#02107,#02110
--------N-21E1--SF02-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
AH = E1h subfn 02h
DS:SI -> request buffer (see #01824)
ES:DI -> reply buffer (see #01825)
Return: AL = error code
Note: these functions are supported by NetWare 4.0+ but are not listed in
_NetWare_System_Calls--DOS_; they may be obsolete
SeeAls AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h
SeeAls AX=F215h/SF=02h
Format of NetWare "Disable Broadcasts" request packet:
Offset Size Description (Table 01823)
00h WORD 0001h (length of following data)
02h BYTE 02h (subfunction "Enable Broadcast Messages")
SeeAls #01824,#01825
--------N-21E1--SF03-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
AH = E1h subfn 03h
DS:SI -> request buffer (see #01824)
ES:DI -> reply buffer (see #01825)
Return: AL = error code
Note: these functions are supported by NetWare 4.0+ but are not listed in
_NetWare_System_Calls--DOS_; they may be obsolete
SeeAls AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h
SeeAls AX=F215h/SF=03h
Format of NetWare "Enable Broadcast Messages" request buffer:
Offset Size Description (Table 01824)
00h WORD 0001h (length of following data)
02h BYTE 03h (subfunction "Enable Broadcast Messages")
SeeAls #01825,#01823
Format of NetWare "Enable/Disable Broadcast Messages" reply buffer:
Offset Size Description (Table 01825)
00h WORD (call) 0000h (no data returned)
SeeAls #01824,#01823
--------N-21E1--SF04-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
AH = E1h subfn 04h
DS:SI -> request buffer (see #01826)
ES:DI -> reply buffer (see #01827)
Return: AL = status
00h successful
FEh I/O error or out of dynamic workspace
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
connections should be used for peer-to-peer communications as these
protocols do not use file server time
SeeAls AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of NetWare "Send Personal Message" request buffer:
Offset Size Description (Table 01826)
00h WORD length of following data (max E5h)
02h BYTE 04h (subfunction "Send Personal Message")
03h BYTE number of connections (01h-64h)
04h N BYTEs list of connections to receive broadcast message
BYTE length of message (01h-7Eh)
N BYTEs message (no control characters or characters > 7Eh)
SeeAls #01827
Format of NetWare "Send Personal Message" reply buffer:
Offset Size Description (Table 01827)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of per-connection results
00h successful
FCh message rejected because queue is full (contains 6 msgs)
FDh incomplete pipe
FFh failed
SeeAls #01826
--------N-21E1--SF05-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
AH = E1h subfn 05h
DS:SI -> request buffer (see #01828)
ES:DI -> reply buffer (see #01829)
Return: AL = status
00h successful
FEh out of dynamic workspace
Desc: return the oldest message in the default file server's message queue
for the calling workstation
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAls AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of NetWare "Get Personal Message" request buffer:
Offset Size Description (Table 01828)
00h WORD 0001h (length of following data)
02h BYTE 05h (subfunction "Get Personal Message")
SeeAls #01829
Format of NetWare "Get Personal Message" reply buffer:
Offset Size Description (Table 01829)
00h WORD (call) size of following results buffer (max 80h)
02h BYTE connection number of sending station
03h BYTE length of message (00h-7Eh)
00h if no personal messages pending
04h N BYTEs message (no control characters or characters > 7Eh)
SeeAls #01828
--------N-21E1--SF06-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
AH = E1h subfn 06h
DS:SI -> request buffer (see #01830)
ES:DI -> reply buffer (see #01831)
Return: AL = status
00h successful
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAls AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
Format of NetWare "Open Message Pipe" request buffer:
Offset Size Description (Table 01830)
00h WORD length of following data (max 66h)
02h BYTE 06h (subfunction "Open Message Pipe")
03h BYTE number of pipes to open (01h-64h)
04h N BYTEs list of connection numbers
SeeAls #01831,#01832,#01835
Format of NetWare "Open Message Pipe" reply buffer:
Offset Size Description (Table 01831)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of results
00h successful
FEh incomplete (target half not yet created)
FFh failed
SeeAls #01830,#01833,#01836
--------N-21E1--SF07-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
AH = E1h subfn 07h
DS:SI -> request buffer (see #01832)
ES:DI -> reply buffer (see #01833)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAls AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of NetWare "Close Mesage Pipe" request buffer:
Offset Size Description (Table 01832)
00h WORD length of following data (max 66h)
02h BYTE 07h (subfunction "Close Message Pipe")
03h BYTE number of pipes to close (01h-64h)
04h N BYTEs list of connection numbers
SeeAls #01830,#01833
Format of NetWare "Close Message Pipe" reply buffer:
Offset Size Description (Table 01833)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of results
00h successful
FDh failed
FFh no such pipe
SeeAls #01831,#01832
--------N-21E1--SF08-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
AH = E1h subfn 08h
DS:SI -> request buffer (see #01835)
ES:DI -> reply buffer (see #01836)
Return: AL = status (see #01834)
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAls AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h,AX=F215h/SF=08h
(Table 01834)
Values for NetWare function status:
00h successful
FCh full message queue
FEh out of dynamic workspace
SeeAls #01839
Format of NetWare "Check Pipe Status" request buffer:
Offset Size Description (Table 01835)
00h WORD length of following data (max 66h)
02h BYTE 08h (subfunction "Check Pipe Status")
03h BYTE number of pipes to monitor (01h-64h)
04h N BYTEs list of connection numbers
SeeAls #01830,#01836
Format of NetWare "Check Pipe Status" reply buffer:
Offset Size Description (Table 01836)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of pipe statuses
00h open
FEh incomplete
FFh closed
SeeAls #01831,#01835,#02108
--------N-21E1--SF09-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
AH = E1h subfn 09h
DS:SI -> request buffer (see #01837)
ES:DI -> reply buffer (see #01838)
Return: AL = status (see #01834)
Desc: send a one-line message to the system console on the default file
server
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAls AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
SeeAls AX=F215h/SF=09h
Format of NetWare "Broadcast to Console" request buffer:
Offset Size Description (Table 01837)
00h WORD length of following data (max 3Eh)
02h BYTE 09h (subfunction "Broadcast to Console")
03h BYTE length of message (01h-3Ch)
04h N BYTEs message (no control characters or characters > 7Eh)
SeeAls #01838
Format of NetWare reply buffer:
Offset Size Description (Table 01838)
00h WORD (call) 0000h (no results returned)
SeeAls #01837
--------E-21E2-------------------------------
INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
AH = E2h
???
Return: ???
SeeAls AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
--------N-21E2-------------------------------
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
AH = E2h
AL = character
Return: AL = 00h successful
01h buffer full (128 characters)
SeeAls AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAls AH=F2h"DoubleDOS"
--------N-21E2--SF00-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
AH = E2h subfn 00h
DS:SI -> request buffer (see #01840)
ES:DI -> reply buffer (see #01841)
Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
Desc: set the target handle to reference the directory specified by the
source handle and the source path; both handles must refer to the
same file server
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
the target handle is not changed if this function fails
SeeAls AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=00h
(Table 01839)
Values for NetWare function status:
00h successful
84h not permitted to create
8Ah not permitted to delete
8Bh not permitted to rename
8Ch not permitted to modify
98h nonexistent volume
9Bh invalid directory handle
9Ch invalid path
9Eh invalid filename
9Fh directory currently in use
A0h directory not empty
C6h no console rights
FCh no such bindery object
SeeAls #01834,#01866
Format of NetWare "Set Directory Handle" request buffer:
Offset Size Description (Table 01840)
00h WORD length of following data (max 103h)
02h BYTE 00h (subfunction "Set Directory Handle")
03h BYTE directory handle of target
04h BYTE directory handle of source
05h BYTE length of source directory path (01h-FFh)
06h N BYTEs source directory path
SeeAls #01841
Format of NetWare reply buffer:
Offset Size Description (Table 01841)
00h WORD (call) 0000h (no results returned)
SeeAls #01840
--------N-21E2--SF01-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
AH = E2h subfn 01h
DS:SI -> request buffer (see #01842)
ES:DI -> reply buffer (see #01843)
Return: AL = status (00h,9Bh) (see #01839)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h,AX=F216h/SF=01h
Format of NetWare "Get Directory Path" request buffer:
Offset Size Description (Table 01842)
00h WORD 0002h (length of following data)
02h BYTE 01h (subfunction "Get Directory Path")
03h BYTE directory handle
SeeAls #01843,#01844
Format of NetWare "Get Directory Path" reply buffer:
Offset Size Description (Table 01843)
00h WORD (call) length of following data buffer
02h BYTE length of directory path (01h-FFh)
03h N BYTEs full directory path including volume
SeeAls #01842,#01845
--------N-21E2--SF02-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
AH = E2h subfn 02h
DS:SI -> request buffer (see #01844)
ES:DI -> reply buffer (see #01845)
Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
Desc: get information about the first or next subdirectory of the specified
directory
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h,AX=F216h/SF=02h
Format of NetWare "Scan Directory Information" request buffer:
Offset Size Description (Table 01844)
00h WORD length of following data (max 104h)
02h BYTE 02h (subfunction "Scan Directory Information")
03h BYTE directory handle
04h WORD (big-endian) subdirectory number
0000h for first call, returned subdir number + 1 on next call
06h BYTE length of directory path
07h N BYTEs directory path
SeeAls #01842,#01845
Format of NetWare "Scan Directory Information" reply buffer:
Offset Size Description (Table 01845)
00h WORD (call) 001Ch (length of following data buffer)
02h 16 BYTEs subdirectory name
12h DWORD (big-endian) date and time of creation (see #01846)
16h DWORD (big-endian) object ID of owner
1Ah BYTE maximum directory rights (see #01849)
1Bh BYTE unused
1Ch WORD (big-endian) subdirectory number
SeeAls #01843,#01844,#02111 at AX=F216h/SF=02h
Bitfields for NetWare date and time:
Bit(s) Description (Table 01846)
31-25 year-1980
24-21 month
20-16 day
15-11 hour
10-5 minute
4-0 second
--------N-21E2--SF03-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
AH = E2h subfn 03h
DS:SI -> request buffer (see #01847)
ES:DI -> reply buffer (see #01848)
Return: AL = status (00h,98h,9Bh) (see #01839)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=01h,AH=E2h/SF=02h,AX=F216h/SF=03h
Format of NetWare "Get Effective Directory Rights (old)" request buffer:
Offset Size Description (Table 01847)
00h WORD length of following data (max 102h)
02h BYTE 03h (subfunction "Get Effective Directory Rights (old)")
03h BYTE directory handle
04h BYTE length of directory path (00h-FFh)
05h N BYTEs directory path
SeeAls #01848,#01850
Format of NetWare "Get Effective Directory Rights" reply buffer:
Offset Size Description (Table 01848)
00h WORD (call) 0001h (length of following data buffer)
02h BYTE effective directory rights (see #01849)
SeeAls #01847
Bitfields for NetWare directory rights:
Bit(s) Description (Table 01849)
0 reading allowed
1 writing allowed
2 opens allowed
3 file creation allowed
4 deletion allowed
5 "parental" may create/delete subdirectories and grant/revoke trustee
rights
6 directory search allowed
7 file attributes may be changed
SeeAls #01848,#01850
--------N-21E2--SF04-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
AH = E2h subfn 04h
DS:SI -> request buffer (see #01850)
ES:DI -> reply buffer (see #01851)
Return: AL = status (00h,8Ch,98h,9Ch) (see #01839)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh,AX=F216h/SF=04h
Format of NetWare "Modify Maximum Rights Mask" request buffer:
Offset Size Description (Table 01850)
00h WORD length of following data (max 104h)
02h BYTE 04h (subfunction "Modify Maximum Rights Mask")
03h BYTE directory handle
04h BYTE rights to grant (see #01849)
05h BYTE rights to revoke (see #01849)
06h BYTE length of directory path (00h-FFh)
07h N BYTEs directory path
Note: the rights specified at offset 05h are revoked first, and then the
rights specified at offset 04h are added to the resulting rights
mask
SeeAls #01847,#01851
Format of NetWare reply buffer:
Offset Size Description (Table 01851)
00h WORD (call) 0000h (no results returned)
SeeAls #01850
--------N-21E2--SF05-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
AH = E2h subfn 05h
DS:SI -> request buffer (see #01852)
ES:DI -> reply buffer (see #01853)
Return: AL = status (00h,98h) (see #01839)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
SeeAls AX=F216h/SF=05h
Format of NetWare "Get Volume Number" request buffer:
Offset Size Description (Table 01852)
00h WORD length of following data (max 12h)
02h BYTE 05h (subfunction "Get Volume Number")
03h BYTE length of volume name (01h-10h)
04h N BYTEs volume name
SeeAls #01853,#02113 at AX=F216h/SF=05h
Format of NetWare "Get Volume Number" reply buffer:
Offset Size Description (Table 01853)
00h WORD (call) 0001h (length of following results buffer)
02h BYTE volume number
SeeAls #01852,#02113 at AX=F216h/SF=05h
--------N-21E2--SF06-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
AH = E2h subfn 06h
DS:SI -> request buffer (see #01854)
ES:DI -> reply buffer (see #01855)
Return: AL = status (00h,98h) (see #01839)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
SeeAls AH=E3h/SF=E9h,AX=F216h/SF=06h
Format of NetWare "Get Volume Name" request buffer:
Offset Size Description (Table 01854)
00h WORD 0002h (length of following data)
02h BYTE 06h (subfunction "Get Volume Name")
03h BYTE volume number
SeeAls #01855,#02114 at AX=F216h/SF=06h
Format of NetWare "Get Volume Name" reply buffer:
Offset Size Description (Table 01855)
00h WORD (call) 0011h (length of following results buffer)
02h BYTE length of volume name
03h 16 BYTEs NUL-padded volume name
SeeAls #01854,#02114 at AX=F216h/SF=06h
--------N-21E2--SF0A-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
AH = E2h subfn 0Ah
DS:SI -> request buffer (see #01856)
ES:DI -> reply buffer (see #01857)
Return: AL = status (00h,84h,98h,FCh) (see #01839)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
Format of NetWare "Create Directory" request buffer:
Offset Size Description (Table 01856)
00h WORD length of following data (max 103h)
02h BYTE 0Ah (subfunction "Create Directory")
03h BYTE directory handle
04h BYTE maximum directory rights (see #01849)
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
SeeAls #01857,#01858
Format of NetWare reply buffer:
Offset Size Description (Table 01857)
00h WORD (call) 0000h (no data returned)
SeeAls #01856,#01858
--------N-21E2--SF0B-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
AH = E2h subfn 0Bh
DS:SI -> request buffer (see #01858)
ES:DI -> reply buffer (see #01857)
Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #01839)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh,AX=F216h/SF=0Bh
Format of NetWare "Delete Directory" request buffer:
Offset Size Description (Table 01858)
00h WORD length of following data (max 103h)
02h BYTE 0Bh (subfunction "Delete Directory")
03h BYTE directory handle
04h BYTE unused
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
SeeAls #01856,#01857
--------N-21E2--SF0C-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
AH = E2h subfn 0Ch
DS:SI -> request buffer (see #01859)
ES:DI -> reply buffer (see #01860)
Return: AL = status (00h,9Ch) (see also #01839)
9Ch no more trustees
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAls AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Ch
Format of NetWare "Scan Directory For Trustees" request buffer:
Offset Size Description (Table 01859)
00h WORD length of following data (max 103h)
02h BYTE 0Ch (subfunction "Scan Directory For Trustees")
03h BYTE directory handle
04h BYTE sequence number
00h on first call, increment for each subsequent call
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
SeeAls #01860,#01861,#02115 at AX=F216h/SF=0Ch
Format of NetWare "Scan Directory For Trustees" reply buffer:
Offset Size Description (Table 01860)
00h WORD (call) 0031h (length of following results buffer)
02h 16 BYTEs directory name
12h 4 BYTEs date and time of creation
16h DWORD (big-endian) object ID of owner
1Ah 5 DWORDs (big-endian) object IDs of Trustees 0 through 4
00000000h = end of group
2Eh 5 BYTEs directory rights for Trustees 0 through 4 (see #01849)
SeeAls #01859,#01863,#02115 at AX=F216h/SF=0Ch
--------N-21E2--SF0D-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
AH = E2h subfn 0Dh
DS:SI -> request buffer (see #01861)
ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,8Ch,FCh) (see #01839)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Dh
Format of NetWare "Add Trustee To Directory" request buffer:
Offset Size Description (Table 01861)
00h WORD length of following data (max 107h)
02h BYTE 0Dh (subfunction "Add Trustee To Directory")
03h BYTE directory handle
04h DWORD (big-endian) object ID of trustee
08h BYTE trustee directory rights (see #01849)
09h BYTE length of directory path (00h-FFh)
0Ah N BYTEs directory path
SeeAls #01863
--------N-21E2--SF0E-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
AH = E2h subfn 0Eh
DS:SI -> request buffer (see #01862)
ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AX=F216h/SF=0Eh
Format of NetWare "Delete Trustee From Directory" request buffer:
Offset Size Description (Table 01862)
00h WORD length of following data (max 107h)
02h BYTE 0Eh (subfunction "Delete Trustee From Directory")
03h BYTE directory handle
04h DWORD (big-endian) object ID of trustee
08h BYTE unused
09h BYTE length of directory path (00h-FFh)
0Ah N BYTEs directory path
SeeAls #01863
Format of NetWare reply buffer:
Offset Size Description (Table 01863)
00h WORD (call) 0000h (no data returned)
SeeAls #01862,#01864,#01865
--------N-21E2--SF0F-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
AH = E2h subfn 0Fh
DS:SI -> request buffer (see #01864)
ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #01839)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
SeeAls AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh,AX=F216h/SF=0Fh
Format of NetWare "Rename Directory" request buffer:
Offset Size Description (Table 01864)
00h WORD length of following data (max 111h)
02h BYTE 0Fh (subfunction "Rename Directory")
03h BYTE directory handle
04h BYTE length of directory path (00h-FFh)
05h N BYTEs directory path
BYTE length of new directory name (01h-0Eh)
N BYTEs new directory name
SeeAls #01863
--------N-21E2--SF10-------------------------
INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
AH = E2h subfn 10h
DS:SI -> request buffer (see #01865)
ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,C6h) (see #01866)
Desc: purges files marked for deletion on the file server by the calling
workstation
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h,AX=F216h/SF=10h
Format of NetWare "Purge Erased Files" request buffer:
Offset Size Description (Table 01865)
00h WORD 0001h (length of following data)
02h BYTE 10h (subfunction "Purge Erased Files")
SeeAls #01863
--------N-21E2--SF11-------------------------
INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
AH = E2h subfn 11h
DS:SI -> request buffer (see #01867)
ES:DI -> reply buffer (see #01868)
Return: AL = status (00h,98h,FFh) (see #01866)
Desc: restores one file marked for deletion which has not yet been purged
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
(Table 01866)
Values for NetWare function status:
00h successful
98h nonexistent volume
9Ch invalid path
C6h no console rights
FFh no more erased files
SeeAls #01839,#01899
Format of NetWare "Restore Erased File" request buffer:
Offset Size Description (Table 01867)
00h WORD length of following data (max 13h)
02h BYTE 11h (subfunction "Restore Erased File")
03h BYTE directory handle or 00h
04h BYTE length of volume name
05h N BYTEs volume name (including colon)
Note: if both a directory handle and a volume name are specified, the volume
name overrides the handle
SeeAls #01868,#02116
Format of NetWare "Restore Erased File" reply buffer:
Offset Size Description (Table 01868)
00h WORD (call) 001Eh (size of following results buffer)
02h 15 BYTEs ASCIZ name of erased file
11h 15 BYTEs ASCIZ name under which file was restored
SeeAls #01867,#02116
--------N-21E2--SF12-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
AH = E2h subfn 12h
DS:SI -> request buffer (see #01869)
ES:DI -> reply buffer (see #01870)
Return: AL = status (00h,98h,9Ch) (see #01866)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=12h
Format of NetWare "Allocate Permanent Directory Handle" request buffer:
Offset Size Description (Table 01869)
00h WORD length of following data (max 103h)
02h BYTE 12h (subfunction "Allocate Permanent Directory Handle")
03h BYTE directory handle
04h BYTE drive ('A'-'Z')
05h BYTE length of directory path
06h N BYTEs directory path
SeeAls #01870,#01871,#02118
Format of NetWare reply buffer:
Offset Size Description (Table 01870)
00h WORD (call) 0002h (size of following results buffer)
02h BYTE new directory handle
03h BYTE effective directory rights (see #01849)
SeeAls #01869,#02118
--------N-21E2--SF13-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
AH = E2h subfn 13h
DS:SI -> request buffer (see #01871)
ES:DI -> reply buffer (see #01870)
Return: AL = status (00h,98h,9Ch) (see #01866)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
this call is the same as AH=E2h/SF=12h except that the directory handle
will be automatically deallocated when the calling application
executes an End of Job call (AH=D6h) or terminates
SeeAls AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
SeeAls AX=F216h/SF=13h
Format of NetWare "Allocate Temporary Directory Handle" request buffer:
Offset Size Description (Table 01871)
00h WORD length of following data (max 103h)
02h BYTE 13h (subfunction "Allocate Temporary Directory Handle")
03h BYTE directory handle
04h BYTE drive ('A'-'Z')
05h BYTE length of directory path
06h N BYTEs directory path
SeeAls #01869,#01872
--------N-21E2--SF14-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
AH = E2h subfn 14h
DS:SI -> request buffer (see #01872)
ES:DI -> reply buffer (see #01873)
Return: AL = status (00h,9Bh) (see #01839)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=14h
Format of NetWare "Deallocate Directory Handle" request buffer:
Offset Size Description (Table 01872)
00h WORD 0002h (length of following data)
02h BYTE 14h (subfunction "Deallocate Directory Handle")
03h BYTE directory handle
SeeAls #01873
Format of NetWare reply buffer:
Offset Size Description (Table 01873)
00h WORD (call) 0000h (no returned data)
SeeAls #01872
--------N-21E2--SF15-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
AH = E2h subfn 15h
DS:SI -> request buffer (see #01874)
ES:DI -> reply buffer (see #01875)
Return: AL = status
00h successful
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
SeeAls AX=F216h/SF=15h
Format of NetWare "Get Volume Info with Handle" request buffer:
Offset Size Description (Table 01874)
00h WORD 0002h (length of following data)
02h BYTE 15h (subfunction "Get Volume Info With Handle")
03h BYTE directory handle
SeeAls #01875,#02119
Format of NetWare "Get Volume Info with Handle" reply buffer:
Offset Size Description (Table 01875)
00h WORD (call) 001Ch (length of following results buffer)
02h WORD (big-endian) sectors per block
04h WORD (big-endian) total blocks on volume
06h WORD (big-endian) blocks available on volume
08h WORD (big-endian) total directory slots
0Ah WORD (big-endian) directory slots available
0Ch 16 BYTEs NUL-padded volume name
1Ch WORD (big-endian) flag: volume removable if nonzero
SeeAls #01874,#02119
--------N-21E2--SF16-------------------------
INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
AH = E2h subfn 16h
DS:SI -> request buffer (see #01876)
ES:DI -> reply buffer (see #01873)
Return: AL = status
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
but is not described in _NetWare_System_Calls--DOS_
SeeAls AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=16h
Format of NetWare "Alloc Special Temporary Directory Handle" request buffer:
Offset Size Description (Table 01876)
00h WORD length of following data
02h BYTE 16h (subfunction "Allocate Special Temporary Directory Handle")
03h BYTE source directory handle
04h BYTE drive name ('A'-'Z')
05h BYTE path length
06h N BYTEs directory path
SeeAls #01873
--------N-21E2--SF17-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
AH = E2h subfn 17h
DS:SI -> request buffer (see #01877)
ES:DI -> reply buffer (see #01878)
Return: AL = status
00h successful
else network error code
Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAls AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=17h
Format of NetWare "Save Directory Handle" request buffer:
Offset Size Description (Table 01877)
00h WORD 0002h (length of following data)
02h BYTE 17h (subfunction "Save Directory Handle")
03h BYTE directory handle
SeeAls #01878,#01879
Format of NetWare "Save Directory Handle" reply buffer:
Offset Size Description (Table 01878)
00h WORD (call) 0010h (length of following results buffer)
02h 16 BYTEs save buffer
SeeAls #01877,#01880
--------N-21E2--SF18-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
AH = E2h subfn 18h
DS:SI -> request buffer (see #01879)
ES:DI -> reply buffer (see #01880)
Return: AL = status
00h successful
else network error code
Desc: restore a previously saved directory handle to reproduce an executing
environment, possibly on a different execution site
Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAls AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=18h
Format of NetWare "Restore Directory Handle" request buffer:
Offset Size Description (Table 01879)
00h WORD 0011h (length of following data)
02h BYTE 18h (subfunction "Restore Directory Handle")
03h 16 BYTEs save buffer
SeeAls #01877,#01880
Format of NetWare "Restore Directory Handle" reply buffer:
Offset Size Description (Table 01880)
00h WORD (call) 0002h (length of following results buffer)
02h BYTE new directory handle
03h BYTE effective rights (see #01849)
SeeAls #01879
--------N-21E2--SF19-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
AH = E2h subfn 19h
DS:SI -> request buffer (see #01881)
ES:DI -> reply buffer (see #01882)
Return: AL = status (00h,9Bh,9Ch) (see #01839)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAls AH=E2h/SF=02h,AH=E2h/SF=0Fh,AX=F216h/SF=19h
Format of NetWare "Set Directory Information" request buffer:
Offset Size Description (Table 01881)
00h WORD length of following data (max 10Bh)
02h BYTE 19h (subfunction "Set Directory Information")
03h BYTE directory handle
04h DWORD (big-endian) date and time of creation
08h DWORD (big-endian) object ID of owner
0Ch BYTE maximum directory rights (see #01849)
0Dh BYTE length of directory path
0Eh N BYTEs directory path
SeeAls #01882
Format of NetWare reply buffer:
Offset Size Description (Table 01882)
00h WORD (call) 0000h (no results returned)
SeeAls #01881
--------N-21E2--SF1A-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
AH = E2h subfn 1Ah
DS:SI -> request buffer (see #01883)
ES:DI -> reply buffer (see #01884)
Return: AL = status
00h successful
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAls AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h,AX=F216h/SF=1Ah
Format of NetWare "Get Path from Directory Entry" request buffer:
Offset Size Description (Table 01883)
00h WORD 0004h (length of following data)
02h BYTE 1Ah (subfunction "Get Path From Directory Entry")
03h BYTE volume number (00h-1Fh)
04h WORD (big-endian) directory entry number
SeeAls #01884,#02122
Format of NetWare "Get Path from Directory Entry" reply buffer:
Offset Size Description (Table 01884)
00h WORD (call) size of following results record (max 200h)
02h 256 BYTEs path
SeeAls #01883,#02122
--------!---Section--------------------------
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !