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