Interrupt List, part 8 of 18 Copyright (c) 1989-1999,2000 Ralf Brown --------D-215E00----------------------------- INT 21 - DOS 3.1+ network - GET MACHINE NAME AX = 5E00h DS:DX -> 16-byte buffer for ASCII machine name Return: CF clear if successful CH = validity 00h name invalid nonzero valid CL = NetBIOS number for machine name DS:DX buffer filled with blank-paded name CF set on error AX = error code (01h) (see #01680 at AH=59h) Note: supported by OS/2 v1.3+ compatibility box, PC-NFS SeeAlso: AX=5E01h --------N-215E00----------------------------- INT 21 - 10NET v5.0 - GET MACHINE NAME AX = 5E00h Return: CL = redirector's NetBIOS name number ES:DI -> network node ID SeeAlso: AX=5E01h"10NET" --------D-215E01CH00------------------------- INT 21 - DOS 3.1+ network - SET MACHINE NAME AX = 5E01h CH = 00h undefine name (make it invalid) <> 0 define name CL = name number DS:DX -> 15-character blank-padded ASCIZ name SeeAlso: AX=5E00h --------N-215E01----------------------------- INT 21 - 10NET v5.0 - GET LOCAL 10NET CONFIGURATION TABLE AX = 5E01h CX = length of buffer DS:DX -> buffer for 10Net configuration table (see #01691) Return: DS:DX buffer filled SeeAlso: AX=5E00h"10NET",INT 6F/AH=02h,INT 6F/AH=03h Format of 10Net Configuration Table: Offset Size Description (Table 01691) 00h 8 BYTEs user name 08h 15 BYTEs node ID 17h 3 BYTEs unique portion of Ethernet address 1Ah BYTE Who group number 1Bh WORD services mask (see #01693) 1Dh DWORD serial number 21h BYTE maximum concurrent users with same serial number allowed on net 22h BYTE chat mask (see #01694) 23h BYTE internal system bits (see #01695) 24h 9 BYTEs version number in format MM.mm.xxx 2Dh BYTE flag: 01h if machine is a PS/2 2Eh BYTE flag: 03h if 80386 2Fh BYTE spool termination mode: 01h concatenate, 02h truncate (see AX=5D09h) 30h WORD autospool timeout in clock ticks 32h WORD monitor timeout in clock ticks 34h WORD unused 36h WORD chat timeout in clock ticks 38h WORD netBIOS session timeout in half-seconds 3Ah WORD datagram send timeout in seconds 3Ch WORD keyboard value for initiating chat mode 3Eh WORD Who timeout in clock ticks 40h BYTE flag: 01h if server should process rom NetBIOS Post return 41h BYTE flag: 01h if FCBs should be recycled 42h 3 BYTEs signature "DBG" 45h BYTE last interrupt (21h or 6Fh) 46h BYTE last INT 21 AH value 47h BYTE last INT 6F AH value 48h WORD last item posted 4Ah WORD last item free-posted 4Ch WORD last item handled by server 4Eh WORD last redirector send NCB 50h WORD last redirector receive NCB 52h 4 BYTEs signature "TABL" 56h WORD offset of datagram buffer table header (see #01692) 58h WORD offset of chat buffer table header (see #01692) 5Ah WORD offset of Raw buffer table header (see #01692) 5Ch WORD offset of Workstation buffer table header (see #01692) 5Eh WORD offset of server receive-any table header (see #01692) 60h WORD offset of Tiny buffer table header (see #01692) 62h WORD offset of zero-length buffer table (NCBs) (see #01692) 64h WORD offset of Rdr (Redirector Mount) table header (see #01692) 66h WORD offset of Ntab (Redirector Session) table header (see #01692) 68h WORD offset of FCB table header (see #01692) 6Ah WORD offset of user file handle table header (see #01692) 6Ch WORD offset of workstation printer RDR extension table header 6Eh WORD offset of server shared device table header (see #01692) 70h WORD offset of server connection table header (see #01692) 72h WORD offset of server login table header (see #01692) 74h WORD offset of server file table header (see #01692) 76h WORD offset of server shared file table header (see #01692) 78h WORD offset of server record lock table header (see #01692) 7Ah WORD offset of remote printer claim table header (see #01692) 7Ch WORD offset of remote printer device table header (see #01692) 7Eh WORD offset of print server mount table header (see #01692) 80h WORD offset of print server sessions table header (see #01692) 82h WORD offset of print server print job structure table header 84h WORD offset of print server pooled device table header (see #01692) 86h WORD size of workstation buffer 88h WORD size of server receive-any buffer 8Ah WORD size of server raw I/O buffer 8Ch 6 BYTEs reserved 92h DWORD pointer to profile pathname 96h BYTE datagram retry count 97h BYTE NetBIOS LAN adapter number 98h 6 BYTEs physical Ethernet address 9Eh BYTE NetBIOS server name number 9Fh BYTE NetBIOS redirector name number A0h BYTE 10Net interrupt number A1h BYTE flag: chat is loaded A2h BYTE flag: INT 6F APIs permanently loaded A3h BYTE flag: file security present A4h WORD reserved A6h BYTE fixed mount bitmask for drives A:-H: A7h BYTE reserved A8h WORD 10Net system flags (see #01696) AAh BYTE monitor flags (see #01697) ABh 5 BYTEs reserved B0h WORD offset of monitor timer block B2h WORD offset of server timer block B4h WORD offset of chat timer block B6h WORD timer chain B8h 4 BYTEs signature "TALS" BCh WORD number of 10Net sends BEh WORD number of 10Net receives C0h WORD number of no-buffer conditions C2h WORD number of dropped posted messages C4h WORD number of server NCB errors C6h WORD number of redirector NCB errors C8h WORD number of datagram send/receive errors CAh WORD number of dropped Whos CCh WORD number of dropped submits CEh WORD number of session aborts D0h BYTE number of NetBIOS interface-busy errors D1h BYTE last NetBIOS bad post command D2h BYTE last NetBIOS bad redirector command D3h BYTE do send datagram send/receive error command D4h DWORD -> DOS system parameter table D8h WORD number of DOS physical drives DAh WORD offset of DOS PSP field in DOS data segment DCh WORD offset of in-DOS flag in DOS data segment DEh WORD DOS data segment E0h WORD offset of DOS SFT in DOS data segment E2h WORD offset of number-of-physical-units field in DOS data segment E4h WORD 10Net code segment E6h WORD 10Net data segment E8h WORD 10Net common server segment EAh WORD 10Net file server segment ECh WORD 10Net print server segment EEh WORD 10Net remote printer segment Note: documentation lists field at offset D0h as a WORD, but all following offsets are as though it were a BYTE; if it is indeed a WORD, all offsets after D0h must be increased by one byte Format of 10Net Table Header: Offset Size Description (Table 01692) -16 4 BYTEs table identifier -12 WORD peak number of tables allocated -10 WORD number of tables currently in use -8 WORD total number of tables -6 WORD size of each table -4 WORD offset of first allocated table -2 WORD offset of first free table Bitfields for 10NET services mask: Bit(s) Description (Table 01693) 0 workstation 1 file server 2 print queue server 3 de-spool server Bitfields for 10NET chat mask: Bit(s) Description (Table 01694) 0 chat permitted 1 bell enabled 2 chat keyboard initiated 3 in INT 16 handler 4 in Get Input 5 display has timed out 6 chat is idle Bitfields for 10NET internal system bits: Bit(s) Description (Table 01695) 0 submit permitted 1 submit initiated 2 submit executing 3 internal client call/chat/spool/autospool 4 in spool termination 5 print permitted 6 waiting for keyboard input Bitfields for 10NET System Flags: Bit(s) Description (Table 01696) 0 in NetBIOS 1 processing INT 28 2 is server 3 in net user-DOS function 4 in DOS user-DOS function 5 in net for user non-DOS function 6 in server DOS function 7 in server non-DOS function 8 in terminate 10 in user on server request 13 in DOS for user on server 14 disable critical error handler Bitfields for Monitor Flags: Bit(s) Description (Table 01697) 0 waiting for monitor response 4 in monitor get-input routine 5 monitor display timeout 6 sensing for escape key --------D-215E02----------------------------- INT 21 - DOS 3.1+ network - SET NETWORK PRINTER SETUP STRING AX = 5E02h BX = redirection list index (see AX=5F02h) CX = length of setup string DS:SI -> setup string Return: CF clear if successful CF set on error AX = error code (01h) (see #01680 at AH=59h/BX=0000h) Note: also supported by 10NET v5.0 SeeAlso: AX=5E03h,INT 2F/AX=111Fh --------D-215E03----------------------------- INT 21 - DOS 3.1+ network - GET NETWORK PRINTER SETUP STRING AX = 5E03h BX = redirection list index (see AX=5F02h) ES:DI -> 64-byte buffer for setup string Return: CF clear if successful CX = length of setup string ES:DI buffer filled CF set on error AX = error code (01h) (see #01680 at AH=59h/BX=0000h) Note: also supported by 10NET v5.0, but 10NET is documented as using DS:SI instead of ES:DI SeeAlso: AX=5E02h,INT 2F/AX=111Fh --------D-215E04----------------------------- INT 21 - DOS 3.1+ network - SET PRINTER MODE AX = 5E04h BX = redirection list index (see AX=5F02h) DX = mode bit 0: set if binary, clear if text (tabs expanded to blanks) Return: CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) CF clear if successful Notes: calls INT 2F/AX=111Fh with 5E04h on stack supported by DR DOS 3.41+ SeeAlso: AX=5E05h"DOS",INT 2F/AX=111Fh --------N-215E04----------------------------- INT 21 - 10NET v5.0 - INITIATE PRINT JOB AX = 5E04h BX = zero-based redirection list index (see AX=5F02h) DS:DX -> extended workstation printer setup structure (see #01698) Return: CF clear if successful CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) SeeAlso: AX=5E05h"10NET",AX=5E06h"10NET" Format of 10NET extended workstation printer setup structure: Offset Size Description (Table 01698) 00h BYTE notification flags (see #01699) 01h BYTE job control mask (see #01700) 02h WORD days to retain file 04h WORD test print length 06h BYTE number of copies to print 07h BYTE compression algorithm 08h BYTE tab width (00h = don't expand) 09h BYTE initiation type (00h normal, 01h non-spooled) 0Ah 38 BYTEs job start operation notification instructions 30h 32 BYTEs comment for job 50h 64 BYTEs output filename or non-spooled file Bitfields for 10NET notification flags: Bit(s) Description (Table 01699) 0 user at print start 1 operator at start, with reply 2 user at print completion 3 operator at completion, with reply 4 user on queue switch 5 operator on queue switch, with reply 6 user on print error Bitfields for 10NET job control mask: Bit(s) Description (Table 01700) 0 print banner page 1 eject page at end of job 2 mark as "held" (queue but don't print) 3 rush job (queue at top) 4 overwrite file with zeros before deletion 5 hyperspool if possible --------D-215E05----------------------------- INT 21 - DOS 3.1+ network - GET PRINTER MODE AX = 5E05h BX = redirection list index (see AX=5F02h) Return: CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) CF clear if successful DX = printer mode (see AX=5E04h) Notes: calls INT 2F/AX=111Fh with 5E05h on stack supported by DR DOS 3.41+ SeeAlso: AX=5E04h"DOS",INT 2F/AX=111Fh --------N-215E05----------------------------- INT 21 - 10NET v5.0 - TERMINATE PRINT JOB AX = 5E05h BX = zero-based redirection list index (see AX=5F02h) Return: CF clear if successful CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) Note: this call resets the spool termination mode to "truncate" (see AX=5D08h) SeeAlso: AX=5E04h"10NET",AX=5E06h --------N-215E06----------------------------- INT 21 - 10NET v5.0 - GET/SET 10NET WORKSTATION PRINTER SETUP STRUCTURE AX = 5E06h BX = zero-based redirection list index (see AX=5F02h) CX = operation (06h set, 07h get) DS:DX -> buffer for setup structure (same as first nine bytes of workstation printer setup) (see #01698) Return: CF clear if successful DS:DX buffer updated on get CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) SeeAlso: AX=5E04h"10NET",AX=5E05h"10NET" --------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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AX=5F53h Format of LAN Manager server_info_0 structure: Offset Size Description (Table 01723) 00h 16 BYTEs name SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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. SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: 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) SeeAlso: 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 SeeAlso: 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 SeeAlso: 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. SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeALso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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. SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS" --------v-216304------------------------ INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK AX = 6304h Return: BX = 6304h if resident SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=38h,AH=70h"MS-DOS 7",INT 2F/AX=1401h,INT 2F/AX=1402h SeeAlso: 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) SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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) SeeAlso: #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 7.10 (Win98) 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), as well as PC-DOS 7 and OS/2 MVDM --------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) SeeAlso: 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) SeeAlso: 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) SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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) SeeAlso: #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) SeeAlso: #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 SeeAlso: 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) SeeAlso: 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) SeeAlso: AX=440Dh"DOS 3.2+" Format of disk info: 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) SeeAlso: 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 SeeAlso: #01766 --------O-2169------------------------------- INT 21 - DR DOS 5.0 - NULL FUNCTION AH = 69h Return: AL = 00h SeeAlso: AH=18h --------v-216969----------------------------- INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK AX = 6969h Return: AX = 0666h if resident SeeAlso: 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) SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: 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 SeeAlso: 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. SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: #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 currency 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 SeeAlso: #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. SeeAlso: 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 SeeAlso: 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 Caldera's DPMS-enabled LONGNAME.EXE BETA 1 extension for DR-DOS 7 supports the following sub-set of LFN functions: 39h, 3Ah, 3Bh, 41h, 43h (BL = 0, 1 only), 47h, 4Eh, 4Fh, 56h, 60h (CL = 0, 1, 2), 6Ch, A0h, A1h, A8h. BETA 2 fixes LFN directory entry checksums, which were causing wrong LFNs to be attached to a file. The 8.3 short names for filenames with exactly 8 chars are no longer abbreviated (e.g. LONGNAME.TXT -> LONGNAME.TXT, not LONGNA~1.TXT). BETA 3 has A7h (BL=0, 1) functions added, and 4Eh/4Fh can return file times in both DOS and 64 bit formats, BETA 4 has support added for Caldera's DRFAT32 redirector extension (see INT 2F/AX=15xxh). Caldera's DR-OpenDOS 7.02+ COMMAND.COM utilizes the LFN API as soon as it detects it (mind, that LONGNAME.EXE can be dynamically loaded and unloaded at runtime). This COMMAND.COM shell also works under MS-DOS/PC DOS and in DOS boxes of Windows9x, NT, 2000, and OS/2. For 4DOS 6.02+ to work with 3rd party LFN providers, the Win95LFN=Yes directive should be inserted into the 4DOS.INI file. Mike Podanoffsky's RxDOS 7.2 provides most of this API natively, including functions 39h, 3Ah, 3Bh, 41h, 43h (BL = ???), 47h, 4Bh, 4Eh, 4Fh, 56h, 60h (CL = 0, 1, 2, no CH), 6Ch, A0h, A1h and A7h. However, not all sub-functions seem to be supported yet. SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: #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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: 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 SeeAlso: AX=71A1h --------D-2173------------------------------- INT 21 - MS-DOS 7 - DRIVE LOCKING AND FLUSHING AH = 73h DL = drive (0=current, 1=A:, etc.) CL = which flag to get or set 00h drive flag??? 01h drive's dirty-buffers flag AL = subfunction 00h get indicated flag 01h set ??? CH = new value for indicated flag bit 1: ??? (CL=00h only) bit 3: dirty buffers exist for selected drive (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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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: 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) under DOS 7.x (i.e. "MSDOS Mode" under Windows95), the ASCIZ string pointed at by DS:DX *must* include the drive letter, or this function will return CF set/AX=0015h (invalid drive). In a DOS box, omitting the drive letter (DS:DX -> "\") results in the free space for the current default drive, as expected BUG: this function returns a maximum of 2GB free space even on an FAT32 partition larger than 2GB under some versions of Win95 and Win98, apparently by limiting the number of reported free clusters to no more than 64K -- but only in a DOS window if a TSR has hooked INT 21h SeeAlso: 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.) CX = size of buffer (must be at least 18h) 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 (18h = bad length in CX) SeeAlso: 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. SeeAlso: 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 SeeAlso: AX=6969h,AH=76h"VIRUS" --------v-2176------------------------------- INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK AH = 76h Return: AL = 48h if resident SeeAlso: AX=7575h,AX=7700h"VIRUS" --------v-217700----------------------------- INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK AX = 7700h Return: AX = 0920h if resident SeeAlso: 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 SeeAlso: INT 16/AX=7761h --------v-217BCE----------------------------- INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK AX = 7BCEh Return: AX = 7BCEh if resident (???) SeeAlso: 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 SeeAlso: AX=7BCEh"VIRUS",AH=7Dh"VIRUS" --------v-217D------------------------------- INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK AH = 7Dh Return: AH = FAh if installed SeeAlso: AX=7BCFh"VIRUS",AH=7Fh"VIRUS" --------v-217F------------------------------- INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK AH = 7Fh Return: AH = 80h if resident SeeAlso: 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 SeeAlso: 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: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: AH=48h,AH=4Ah --------v-2183------------------------------- INT 21 - VIRUS - "SVC" - INSTALLATION CHECK AH = 83h Return: DX = 1990h if resident SeeAlso: 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) SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=81h --------D-218F------------------------------- INT 21 U - European MS-DOS 4.0 - ??? AH = 8Fh ??? Return: ??? SeeAlso: AH=87h --------D-2190------------------------------- INT 21 U - European MS-DOS 4.0 - ??? AH = 90h ??? Return: ??? SeeAlso: AH=87h ----------2190--CXFFFF----------------------- INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK READ AH = 90h CX = FFFFh (for partitions > 32 Mb) DS:BX -> request block (see #04094) CX = sector count (for partitions < 32 Mb) DX = starting sector number DS:BX -> buffer Return: CF set on error AX error code CF clear on success Notes: This function is supported by Paragon Technology Systems S/DOS 1.0 (and most probably by PTS-DOS 6.51, maybe even earlier). To access big partitions (> 32 Mb), the CX != FFFFh is not allowed and the buffer must always be used. Otherwise, the system will return error code 0207h. It is currently unknown if this function is also supported by PhysTechSoft PTS-DOS 6.60, 6.70, or 2000. SeeAlso: INT 21/AH=91h"PTS",INT 25h,INT 26h Format of PTS-DOS & S/DOS disk read/write request block: Offset Size Description (Table 04094) 00h DWORD sector number 04h WORD counter 06h DWORD pointer to buffer --------v-2190------------------------------- INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK AH = 90h Return: AH = 01h if resident SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS" --------D-2191------------------------------- INT 21 U - European MS-DOS 4.0 - ??? AH = 91h ??? Return: ??? SeeAlso: AH=87h ----------2191--CXFFFF----------------------- INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK WRITE AH = 91h CX = FFFFh (for partitions > 32 Mb) DS:BX -> request block (see #04094) CX = sector count (for partitions < 32 Mb) DX = starting sector number DS:BX -> buffer Return: CF set on error AX error code CF clear on success Note: This function is supported by Paragon Technology Systems S/DOS 1.0 (and most probably by PTS-DOS 6.51, maybe even earlier). To access big partitions (> 32 Mb), CX != FFFFh is not allowed and the buffer must always be used. Otherwise, the system will return error code 0207h. It is currently unknown if this function is also supported by PhysTechSoft PTS-DOS 6.60, 6.70, or 2000. SeeAlso: INT 21/Ah=90h"PTS",INT 25h,INT 26h --------D-2192------------------------------- INT 21 U - European MS-DOS 4.0 - ??? AH = 92h ??? Return: ??? SeeAlso: AH=87h --------O-2192------------------------------- INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - ABORT CURRENT PROCESS VIA INT 23 AH = 92h Desc: This function is provided by Paragon Technology Systems S/DOS 1.0+ (and most probably also by PTS-DOS 6.51+, maybe even earlier). It allows terminating programs via the CTRL+BREAK method. Note: It is currently unknown if this function is also supported by PhysTechSoft PTS-DOS 6.60, 6.70, or 2000. SeeAlso: INT 23,INT 24 --------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 SeeAlso: AH=3Ch,AH=3Fh"DOS",AH=40h"DOS",AH=84h --------D-2194------------------------------- INT 21 U - European MS-DOS 4.0 - ??? AH = 94h ??? Return: ??? SeeAlso: 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 SeeAlso: INT 24,INT 21/AH=59h/BX=0001h --------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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=99h,INT 2F/AX=0802h --------v-219AD5------------------------ INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK AX = 9AD5h Return: AX = 9AD4h if resident SeeAlso: 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 SeeAlso: 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) SeeAlso: AH=A0h,AH=A2h --------v-21A1D5----------------------------- INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK AX = A1D5h Return: AX = 900Dh if resident SeeAlso: 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) SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=A4h --------v-21A55A----------------------------- INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK AX = A55Ah Return: AX = 5AA5h if resident SeeAlso: AX=A1D5h,AX=AA00h --------v-21AA00----------------------------- INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK AX = AA00h Return: AX = 00AAh if resident SeeAlso: AX=A55Ah,AX=AA03h --------v-21AA03----------------------------- INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK AX = AA03h Return: AX = 03AAh if resident SeeAlso: AX=AA00h,AH=ABh --------v-21AB------------------------------- INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK AH = ABh Return: AX = 5555h if resident SeeAlso: AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS" --------v-21ABCD----------------------------- INT 21 - VIRUS - Major BBS - INSTALLATION CHECK AX = ABCDh Return: AX = 1234h if installed SeeAlso: AH=ABh"VIRUS",AX=ABCDh"SuperVirus" --------v-21ABCD------------------------ INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK AX = ABCDh Return: AX = DCBAh if resident SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AX=B501h,AX=B502h --------N-21B501----------------------------- INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE AX = B501h SeeAlso: AX=B500h,AX=B502h --------N-21B502----------------------------- INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE AX = B502h SeeAlso: 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: ??? SeeAlso: AX=B502h,AX=B506h --------N-21B506----------------------------- INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL AX = B506h Return: AX = ??? (0002h) SeeAlso: 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+ SeeAlso: 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 SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=19h,AH=D6h --------v-21BBBB----------------------------- INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK AX = BBBBh Return: AX = 6969h SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AX=BBBBh,AX=BE00h --------v-21BE00----------------------------- INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK AX = BE00h CF set Return: CF clear if resident SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h --------v-21C1------------------------------- INT 21 - VIRUS - "Solano" - ??? AH = C1h ??? Return: ??? SeeAlso: 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 SeeAlso: AH=BFh,AH=C3h,AH=D1h --------v-21C2------------------------------- INT 21 - VIRUS - "Scott's Valley" - ??? AH = C2h ??? Return: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=BCh,AH=C4h,AH=D0h --------v-21C6------------------------------- INT 21 - VIRUS - "Socha" - INSTALLATION CHECK AH = C6h Return: AL = 55h if resident SeeAlso: 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 SeeAlso: 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+ SeeAlso: 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 SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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+ SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=CBh --------v-21CA15----------------------------- INT 21 - VIRUS - "Piter" - ??? AX = CA15h ??? Return: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: AX=C700h"VIRUS",AX=CB02h --------v-21CB02----------------------------- INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK AX = CB02h Return: AX = 02CBh if resident SeeAlso: 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 SeeAlso: AH=CAh,AH=CDh --------v-21CC------------------------------- INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK AH = CCh Return: AX = 0700h if resident SeeAlso: 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 SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h --------v-21CD------------------------------- INT 21 - VIRUS - "Westwood" - ??? AH = CDh ??? Return: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=B3h"VIRUS",AH=D0h"ANTIARJ",AX=D000h"VIRUS" --------v-21D0----------------------------- INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK AH = D0h Return: AH = D1h if resident SeeAlso: AH=D0h"MALAGA" --------v-21D000----------------------------- INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK AX = D000h Return: BX = 1234h if resident SeeAlso: 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) SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AH=D1h,AH=D3h,AH=D4h --------v-21D5------------------------------- INT 21 - VIRUS - "Carfield" - ??? AH = D5h ??? Return: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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. SeeAlso: 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 SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS" --------v-21DAFE----------------------------- INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK AX = DAFEh Return: AX = 1234h if resident SeeAlso: 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 SeeAlso: 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 this function is called with AX=DC00h on entry by the DR DOS (up to including 7.03) command processor to retrieve the connection number. Old releases used this call only when INT 21/AX=EF03h failed. Current versions (probably since one of the Novell DOS 7 updates) attempt to retrieve the connection number from VLM (INT 2F/AX=7A20h via GENERAL: 0043h/0006h/0001h and CONN: 0010h/0007h/000Dh) first. The connection number is only trusted, however, when CF is clear on return. SeeAlso: AH=F2h"NetWare",INT 21/AX=EF03h --------d-21DC------------------------------- INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF AH = DCh DX = state 0000h turn on 0001h turn off SeeAlso: AX=FEDCh --------v-21DC28----------------------------- INT 21 - VIRUS - "Monika" - INSTALLATION CHECK AX = DC28h Return: AX = 1973h if resident SeeAlso: AX=D000h"VIRUS",AX=DCBAh"VIRUS" --------v-21DCBA----------------------------- INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK AX = DCBAh Return: AX = ABCDh if resident SeeAlso: 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+ SeeAlso: 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 = ??? SeeAlso: AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS" --------v-21DDEF------------------------ INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK AX = DDEFh Return: AX = EFDDh if resident SeeAlso: AH=DDh"VIRUS",AH=DEh"VIRUS" --------v-21DE------------------------------- INT 21 - VIRUS - "Durban" - INSTALLATION CHECK AH = DEh Return: AH = DFh if resident SeeAlso: AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210" --------v-21DE------------------------------- INT 21 - VIRUS - "April 1st EXE" - ??? AH = DEh ??? Return: ??? SeeAlso: 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 SeeAlso: AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS" --------v-21DEAD------------------------ INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ??? AX = DEADh SeeAlso: AX=FEADh SeeAlso: AX=DEADh"90210",AX=DEDEh"VIRUS" --------v-21DEDE----------------------------- INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK AX = DEDEh Return: AH = 41h if resident SeeAlso: AX=DEADh"Shifting",AX=DEFEh"VIRUS" --------v-21DEFE----------------------------- INT 21 - VIRUS - "Maze" - INSTALLATION CHECK AX = DEFEh Return: AX = ABCDh if resident SeeAlso: 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 SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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) SeeAlso: 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) SeeAlso: 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 SeeAlso: 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) SeeAlso: 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 SeeAlso: 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. SeeAlso: 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 SeeAlso: AX=4459h,INT E0"CP/M-86" --------E-21E0------------------------------- INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE AH = E0h ??? Return: ??? SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 SeeAlso: 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 ??? SeeAlso: #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) SeeAlso: #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 SeeAlso: #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 SeeAlso: #01818 Format of NetWare reply buffer: Offset Size Description (Table 01818) 00h WORD (call) 0000h (no results returned) SeeAlso: #01817 --------v-21E00F----------------------------- INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK AX = E00Fh Return: AX = 4C31h if resident SeeAlso: 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??? SeeAlso: 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 SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS" SeeAlso: 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 SeeAlso: 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+ SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h SeeAlso: 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) SeeAlso: #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) SeeAlso: #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+ SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h SeeAlso: 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") SeeAlso: #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) SeeAlso: #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 SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h SeeAlso: 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") SeeAlso: #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 SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h SeeAlso: 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") SeeAlso: #01825,#01823 Format of NetWare "Enable/Disable Broadcast Messages" reply buffer: Offset Size Description (Table 01825) 00h WORD (call) 0000h (no data returned) SeeAlso: #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 SeeAlso: 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) SeeAlso: #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 SeeAlso: #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 SeeAlso: 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") SeeAlso: #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) SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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+ SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h SeeAlso: 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) SeeAlso: #01838 Format of NetWare reply buffer: Offset Size Description (Table 01838) 00h WORD (call) 0000h (no results returned) SeeAlso: #01837 --------E-21E2------------------------------- INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER AH = E2h ??? Return: ??? SeeAlso: 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) SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS" SeeAlso: 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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #01841 Format of NetWare reply buffer: Offset Size Description (Table 01841) 00h WORD (call) 0000h (no results returned) SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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) SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #01847,#01851 Format of NetWare reply buffer: Offset Size Description (Table 01851) 00h WORD (call) 0000h (no results returned) SeeAlso: #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 SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #01857,#01858 Format of NetWare reply buffer: Offset Size Description (Table 01857) 00h WORD (call) 0000h (no data returned) SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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) SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #01863 Format of NetWare reply buffer: Offset Size Description (Table 01863) 00h WORD (call) 0000h (no data returned) SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: 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") SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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) SeeAlso: #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 SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h SeeAlso: 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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #01873 Format of NetWare reply buffer: Offset Size Description (Table 01873) 00h WORD (call) 0000h (no returned data) SeeAlso: #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 SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h SeeAlso: 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 SeeAlso: #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 SeeAlso: #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_ SeeAlso: 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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #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 SeeAlso: 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 SeeAlso: #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) SeeAlso: #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 SeeAlso: 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 SeeAlso: #01882 Format of NetWare reply buffer: Offset Size Description (Table 01882) 00h WORD (call) 0000h (no results returned) SeeAlso: #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 SeeAlso: 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 SeeAlso: #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 SeeAlso: #01883,#02122 --------!---Section--------------------------