Interrupt List Release 61 Last change 16jul00
Copyright (c) 1989-1999,2000 Ralf Brown
Index for interrupt INT 21

Table of Contents by Order
21 - INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
2100 - INT 21 - DOS 1+ - TERMINATE PROGRAM
2101 - INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
21010F - INT 21 - VIRUS - "Susan" - INSTALLATION CHECK
2102 - INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
2103 - INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
2104 - INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
2105 - INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
2106 - INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
2106--DLFF - INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
2107 - INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
2108 - INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
2109 - INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
210A - INT 21 - DOS 1+ - BUFFERED INPUT
210A00 - INT 21 - WCED v1.6+ - INSTALLATION CHECK
210B - INT 21 - DOS 1+ - GET STDIN STATUS
210B56 - INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
210C - INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
210D - INT 21 - DOS 1+ - DISK RESET
210D20 - INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
210E - INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
210E--DLAD - INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
210E--DLAE - INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
210E--DLAF - INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
210F - INT 21 - DOS 1+ - OPEN FILE USING FCB
2110 - INT 21 - DOS 1+ - CLOSE FILE USING FCB
2111 - INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
2112 - INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
2113 - INT 21 - DOS 1+ - DELETE FILE USING FCB
2114 - INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
2115 - INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
2116 - INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
2117 - INT 21 - DOS 1+ - RENAME FILE USING FCB
2118 - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
2118 - INT 21 - U - PTS-DOS 6.51 & S/DOS 1.0 - EXTENDED RENAME FILE USING FCB
211812 - INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK
21187FBX4453 - INT 21 - VIRUS - "DS-3783" -INSTALLATION CHECK
2118FF - INT 21 - VIRUS - "Pathogen:SMEG" - INSTALLATION CHECK
2119 - INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
211A - INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
211B - INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
211C - INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
211D - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
211E - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
211F - INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
2120 - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
2120 - INT 21 - S/DOS 1.0+ & PTS-DOS 6.51+ - GET OEM REVISION
212080 - INT 21 - VIRUS - "New-Year" - INSTALLATION CHECK
2121 - INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
2122 - INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
2123 - INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
2124 - INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
2125 - INT 21 - DOS 1+ - SET INTERRUPT VECTOR
212501 - INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
212502 - INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
212503 - INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
212504 - INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
212505 - INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
212506 - INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
212507 - INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
212508 - INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
212509 - INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
212509 - INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
21250A - INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
21250C - INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
21250D - INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
21250E - INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
21250F - INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
212510 - INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
212511 - INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
212512 - INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
212513 - INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
212514 - INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
212515 - INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
212516 - INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
212517 - INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
212518 - INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
212519 - INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
21251A - INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
21251B - INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
21251C - INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
21251D - INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
21251E - INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
21251F - INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
212520 - INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
212521 - INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
212522 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
212523 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
212524 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
212525 - INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
212526 - INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
212527 - INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
212528 - INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
212529 - INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
21252A - INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
21252BBH00 - INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
21252BBH01 - INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
21252BBH02 - INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
21252BBH03 - INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
21252BBH04 - INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
21252B - INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
21252B - INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
21252BBH09 - INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
21252BBH0A - INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
21252BBH0B - INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
21252C - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
21252D - INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
21252E - INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
21252F - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
212530 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
212531 - INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
212532 - INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
212533 - INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
212534 - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
212535 - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
212536 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
212537 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
212538 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
212539 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
21253A - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
21253B - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
21253C - INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
21253D - INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
21253F - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
212540 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
212544 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
212545 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
212546 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
2125C0 - INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
2125C1 - INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
2125C2 - INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
2125C3 - INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
2126 - INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
2127 - INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
2128 - INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
2129 - INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
212A - INT 21 - DOS 1+ - GET SYSTEM DATE
212B - INT 21 - DOS 1+ - SET SYSTEM DATE
212B--CX4149 - INT 21 - AI Architects - ??? - INSTALLATION CHECK
212B--CX4358 - INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
212B--CX4445 - INT 21 - DESQview - INSTALLATION CHECK
212B--CX454C - INT 21 - ELRES v1.1 - INSTALLATION CHECK
212B00CX5643 - INT 21 - The Volkov Commander - GET POINTER TO LEFT PANEL DATA STRUCTURE
212B01CX5643 - INT 21 - The Volkov Commander - GET POINTER TO RIGHT PANEL DATA STRUCTURE
212B02CX5643 - INT 21 - The Volkov Commander - GET POINTER TO GLOBAL VARIABLES
212B01CX444D - INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
212B01CX5441 - INT 21 - TAME v2.10+ - INSTALLATION CHECK
212B16CX0643 - INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
212B44BX4D41 - INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
212B--CX5643 - INT 21 - Volkov Commander - INSTALLATION CHECK
212B--CX6269 - INT 21 - WDTSR.COM - INSTALLATION CHECK
212B--CX6269 - INT 21 - bitFOSS - INSTALLATION CHECK
212B--CX6269 - INT 21 - bitFOSSI - INSTALLATION CHECK
212C - INT 21 - DOS 1+ - GET SYSTEM TIME
212C - INT 21 - VIRUS - "Anti Pode 2.0" - INSTALLATION CHECK
212C00CX534B - INT 21 - SKUDO - INSTALLATION CHECK
212C2C - INT 21 - VIRUS - "LockJaw/Proto-T" - INSTALLATION CHECK
212D - INT 21 - DOS 1+ - SET SYSTEM TIME
212D01CX7820 - INT 21 - PC-Mix - INSTALLATION CHECK
212E--DL00 - INT 21 - DOS 1+ - SET VERIFY FLAG
212F - INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
2130 - INT 21 - DOS 2+ - GET DOS VERSION
2130 - INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
2130--DXABCD - INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
2130--SI1234 - INT 21 - VIRUS - "ANDROMEDA-758" -INSTALLATION CHECK
213000BX1234 - INT 21 - CTask 2.0+ - INSTALLATION CHECK
213000BX3000 - INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
213000BX614A - INT 21 - VIRUS - "Jackal" - INSTALLATION CHECK
213022 - INT 21 - StopPrg v2.0 - INSTALLATION CHECK
213030BX694D - INT 21 - VIRUS - "IMTC" -INSTALLATION CHECK
213032DX1234 - INT 21 - VIRUS - "Uruguay" - INSTALLATION CHECK
2130F1 - INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
2130FFCX4445 - INT 21 - DESQ??? - INSTALLATION CHECK
2131 - INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
2132 - INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
2133 - INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
213302 - INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
213303 - INT 21 - DOS 3.4/4.0 - GET CURRENT CPSW STATE
213304 - INT 21 - DOS 3.4/4.0 - SET CPSW STATE
213305 - INT 21 - DOS 4.0+ - GET BOOT DRIVE
213306 - INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
213306 - INT 21 - CBIS network - NETWORK REDIRECTOR - ???
213307 - INT 21 - Windows95 - SET/CLEAR DOS_FLAG
21330F - INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
213341 - INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
2133DA - INT 21 - VIRUS - "CoffeeShop" - INSTALLATION CHECK
2133DB - INT 21 - VIRUS - "CoffeeShop" - GENERATE RANDOM NUMBER
2133DC - INT 21 - VIRUS - "CoffeeShop" - DISPLAY "LEGALIZE CANNABIS" GRAPHIC
2133E0 - INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
2134 - INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
2135 - INT 21 - DOS 2+ - GET INTERRUPT VECTOR
213501 - INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
213502 - INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
213503 - INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
213504 - INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
213505 - INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
21350A - INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
21350B - INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
21350C - INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
21350D - INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
21357F - INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
2136 - INT 21 - DOS 2+ - GET FREE DISK SPACE
213700 - INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
213701 - INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
2137 - INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
2137A0BX6A6D - INT 21 - XPACK v1.52+ - TSR INSTALLATION CHECK
2137A1BX6A6D - INT 21 - XPACK v1.52+ - UNINSTALL
2137A2BX6A6D - INT 21 - XPACK v1.52+ - GET TSR STATUS
2137A3BX6A6D - INT 21 - XPACK v1.52+ - SET TSR STATUS
2137A6BX6A6D - INT 21 - XPACK v1.65 - GET TEMPORARY DIRECTORY NAME
2137A7BX6A6D - INT 21 - XPACK v1.65 - SET TEMPORARY DIRECTORY NAME
2137D0BX899D - INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
2137D1BX899D - INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
2137D2BX899D - INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
2137D3BX899D - INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
2137D4BX899D - INT 21 - DIET v1.43e - GET TSR OPTIONS
2137D5BX899D - INT 21 - DIET v1.43e - SET TSR OPTIONS
2137D6BX899D - INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
2137D7BX899D - INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
2137DCBX899D - INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
2137DDBX899D - INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
2137DEBX899D - INT 21 - DIET v1.43e - READ EMS STATUS
2137DFBX899D - INT 21 - DIET v1.43e - UNINSTALL TSR
2138 - INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
2138--DXFFFF - INT 21 - DOS 3.0+ - SET COUNTRY CODE
2139 - INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
213A - INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
213B - INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
213C - INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
213D - INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
213D76 - INT 21 - VIRUS - "GT-SPOOF" -INSTALLATION CHECK
213DFF - INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
213E - INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
213F - INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
213F - INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
213F - INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
213F - INT 21 - WORKGRP.SYS - GET ENTRY POINT
213F - INT 21 - BW-TCP - GET DRIVER INFO
213F - INT 21 - Trusted Access - NB.SYS - GET STATE
213F - INT 21 U - IFSHLP.SYS - GET ENTRY POINT
213F--BXFEB0 - INT 21 - VIRUS - "KYZ/LieWait" - INSTALLATION CHECK
2140 - INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
2140 - INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
2140 - INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
2140 - INT 21 U - Trusted Access - NB.SYS - SET STATE
214000BX0002 - INT 21 - FARTBELL.EXE - INSTALLATION CHECK
214001BX0002 - INT 21 - FARTBELL.EXE - FORCE NOISE
2141 - INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
214101DXFFFE - INT 21 - SoftLogic Data Guardian - ???
2142 - INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
214203 - INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
214243 - INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
214300 - INT 21 - DOS 2+ - GET FILE ATTRIBUTES
214301 - INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
214302 - INT 21 - MS-DOS 7 - GET COMPRESSED FILE SIZE
214302 - INT 21 - DR DOS 3.41+ internal - GET ACCESS RIGHTS
214303 - INT 21 - DR DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
214304 - INT 21 U - DR DOS 5.0-6.0 internal - GET ENCRYPTED PASSWORD
214305 - INT 21 U - DR DOS 5.0-6.0 internal - SET EXTENDED FILE ATTRIBUTES
214306 - INT 21 O - DR DOS 6.0 - GET FILE OWNER
214307 - INT 21 O - DR DOS 6.0 - SET FILE OWNER
214310 - INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
214311 - INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
214321BX0000 - INT 21 - Q87, Q387 - INSTALLATION CHECK
214321BX0001 - INT 21 - Q87, Q387 - ENABLE EMULATOR
214321BX0002 - INT 21 - Q87, Q387 - DISABLE EMULATOR
214380 - INT 21 - Novell DOS 7 - UNDELETE PENDING DELETE FILE
214381 - INT 21 - Novell DOS 7 - PURGE PENDING DELETE FILE
214382 - INT 21 - DR-DOS >7.03 - RESERVED
2143FFBP5053 - INT 21 - MS-DOS 7.20 (Win98) - EXTENDED-LENGTH FILENAME OPERATIONS
214400 - INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
214401 - INT 21 - DOS 2+ - IOCTL - SET DEVICE INFORMATION
214402 - INT 21 - DOS 2+ - IOCTL - READ FROM CHARACTER DEVICE CONTROL CHANNEL
214402 - INT 21 - Network Driver Interface Specification (NDIS) 2.0.1 - PROTOCOL MANAGER
214402 - INT 21 U - MS-DOS 7.0+ - CONFIG$ device - GET CONFIGURATION INFORMATION
214402 - INT 21 U - IBM SYSTEM 36/38 WORKSTATION EMULATION - VDI.SYS - GET ???
214402 - INT 21 U - LASTBYTE.SYS v1.19 - IOCTL - GET ??? TABLE
214402 - INT 21 - HIGHUMM.SYS v1.17+ - IOCTL - GET API ADDRESS
214402 - INT 21 - SMARTDRV.SYS v3.x only - IOCTL - GET CACHE STATUS
214402 - INT 21 - CD-ROM device driver - IOCTL INPUT
214402 - INT 21 - Quarterdeck - QEMM-386 v5+ - GET API ENTRY POINT
214402 - INT 21 U - Quarterdeck - HOOKROM.SYS - GET HOOKED VECTOR TABLE
214402 - INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
214402 - INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
214402 - INT 21 - PGS1600.DEV - IOCTL - GET CONFIGURATION INFO
214402 - INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
214402 - INT 21 - WORKGRP.SYS - GET API ENTRY POINT
214402 - INT 21 - 10NET v5.0 - 10BEUI.DOS - API
214402 - INT 21 - 10NET v5.0 - 10MEMMGR.SYS - API
214402 - INT 21 - Compaq AG1024.SYS - RGDI - GET DRIVER LOCATION
214402 - INT 21 - FTPSOFT.DOS v3.1 - GET ???
214402 - INT 21 U - PenDOS PENDEV.SYS - GET ENTRY POINTS
214402 - INT 21 U - LAN Manager - TCPDRV.DOS - API
214402 - INT 21 U - PC Tools 9 CPRLOW.EXE - GET CODE AND DATA ADDRESSES
214402 - INT 21 U - Creative Technology CTMMSYS.SYS v1.00.01 - API
214402 - INT 21 U - Creative Technology CTSB2.SYS v1.01.01 - API
214402 - INT 21 U - Novell DOS 7+ EMM386.EXE - GET STATE RECORD
214402SF00 - INT 21 U - Memory Managers - GET API ENTRY POINT
214402SF01 - INT 21 U - Memory Managers - GET EMM IMPORT STRUCTURE ADDRESS
214402SF02 - INT 21 U - Memory Managers - GET MEMORY MANAGER VERSION
214402 - INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION
214402 - INT 21 U - IFSHLP.SYS - GET ENTRY POINT
214402 - INT 21 - ATA Software Programming Interface (ATASPI) - INTERFACE
214402 - INT 21 - DRFAT32.SYS device driver - IOCTL INPUT
214403 - INT 21 - DOS 2+ - IOCTL - WRITE TO CHARACTER DEVICE CONTROL CHANNEL
214403 - INT 21 - SMARTDRV.SYS v3.x only - IOCTL - CACHE CONTROL
214403 - INT 21 - CD-ROM device driver - IOCTL OUTPUT
214403 - INT 21 U - MS-DOS 7.0+ - CONFIG$ device - SET??? CONFIGURATION INFORMATION
214403 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
214403 - INT 21 U - AI Architects - OS/x86??? - API
214403 - INT 21 - PGS1600.DEV - IOCTL - SET CONFIGURATION???
214403 - INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
214403 - INT 21 - Compaq AG1024.SYS - CPQ_MGES - IOCTL OUTPUT
214403 - INT 21 - Compaq AG1024.SYS - RGDI - IOCTL OUTPUT
214403SF01 - INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX OFF
214403SF02 - INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX ON
214403SF03 - INT 21 U - Qualitas 386MAX v6.01+ - SET STATE
214403SF05 - INT 21 U - Qualitas 386MAX v7.00+ - LIMIT AUTOMATIC ACTIVATION TO STD EMS CALLS
214403SF06 - INT 21 U - Qualitas 386MAX v7.00+ - ALLOW AUTOMATIC ACTIVATION ON ANY INT 67
214403 - INT 21 U - PenDOS PENDEV.SYS - ???
214403 - INT 21 - DR DOS $IDLE$ - IOCTL - DYNAMIC IDLE DETECTION CONTROL
214404 - INT 21 - DOS 2+ - IOCTL - READ FROM BLOCK DEVICE CONTROL CHANNEL
214404 - INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER
214404 - INT 21 - Stacker - GET STACVOL FILE SECTORS
214404 - INT 21 - DUBLDISK.SYS v2.6 - GET INFO
214404 - INT 21 - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
214404 - INT 21 - DBLSPACE.BIN v6.2 - IOCTL - GET ??? FOR SPECIFIED DRIVE
214404 - INT 21 U - DoubleTools v1.0 - GET ???
214404 - INT 21 U - xDISK v3.31 - CONFIGURE
214404 - INT 21 - COMBI-disk v1.13 - GET DATA RECORD
214404 - INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
214405 - INT 21 - DOS 2+ - IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL
214405 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
214405 - INT 21 U - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
214405 - INT 21 U - xDISK v3.31 - ???
214405 - INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
214405 - INT 21 - SFS v1.00 - DRIVER CONTROL
214405 - INT 21 U - SUPERSTOR - IOCTL - INSTALL CHECK
214406 - INT 21 - DOS 2+ - IOCTL - GET INPUT STATUS
214407 - INT 21 - DOS 2+ - IOCTL - GET OUTPUT STATUS
214408 - INT 21 - DOS 3.0+ - IOCTL - CHECK IF BLOCK DEVICE REMOVABLE
214409 - INT 21 - DOS 3.1+ - IOCTL - CHECK IF BLOCK DEVICE REMOTE
21440A - INT 21 - DOS 3.1+ - IOCTL - CHECK IF HANDLE IS REMOTE
21440B - INT 21 - DOS 3.1+ - IOCTL - SET SHARING RETRY COUNT
21440C - INT 21 - DOS 3.2+ - IOCTL - GENERIC CHARACTER DEVICE REQUEST
21440C - INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
21440D - INT 21 - DOS 3.2+ - IOCTL - GENERIC BLOCK DEVICE REQUEST
21440DCX084A - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK LOGICAL VOLUME
21440DCX084B - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK PHYSICAL VOLUME
21440DCX086A - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK LOGICAL VOLUME
21440DCX086B - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK PHYSICAL VOLUME
21440DCX086C - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET LOCK FLAG STATE
21440DCX086D - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - ENUMERATE OPEN FILES
21440DCX086E - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - FIND SWAP FILE
21440DCX0870 - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET CURRENT LOCK STATE
21440DCX0871 - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET FIRST CLUSTER
21440DCXEDC1 - INT 21 - DR PalmDOS - GENERIC IOCTL - LOGIN SECURITY
21440E - INT 21 - DOS 3.2+ - IOCTL - GET LOGICAL DRIVE MAP
21440F - INT 21 - DOS 3.2+ - IOCTL - SET LOGICAL DRIVE MAP
214410 - INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (HANDLE)
214410BXFFFF - INT 21 U - NewSpace - ENABLE DRIVER
214411 - INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (DRIVE)
214411BXFFFF - INT 21 U - NewSpace - DISABLE DRIVER
214412 - INT 21 O - DR DOS 5.0-6.0 - DETERMINE DOS TYPE
214412BXFFFF - INT 21 U - NewSpace - INSTALLATION CHECK???
214413BXFFFF - INT 21 U - NewSpace - GET ???
214414 - INT 21 OU - DR DOS 5.0-6.0 - SET GLOBAL PASSWORD
214414BXFFFF - INT 21 U - NewSpace - DEBUGGING DUMP
214416 - INT 21 OU - DR DOS 5.0-6.0 - HISTORY BUFFER, SHARE, AND HILOAD CONTROL
214451 - INT 21 - Concurrent DOS v3.2+ - INSTALLATION CHECK
214452 - INT 21 - DR DOS 3.41+ - DETERMINE DOS TYPE/GET DR DOS VERSION
214454 - INT 21 U - DR DOS 3.41+ - SET GLOBAL PASSWORD
214456 - INT 21 U - DR DOS 5.0+ - HISTORY BUFFER CONTROL
214457 - INT 21 U - DR DOS 5.0-6.0 - SHARE/HILOAD CONTROL
214457DXFFFF - INT 21 OU - DR DOS 6.0 - GET SHARE STATUS
214458 - INT 21 U - DR DOS 5.0+ internal - GET POINTER TO INTERNAL VARIABLE TABLE
214459 - INT 21 - DR Multiuser DOS 5.0 - API
21445A - INT 21 U - Concurrent DOS etc. - USER GROUP SUPPORT
2144A0 - INT 21 - VIRUS - "Horns" - INSTALLATION CHECK
2144E0 - INT 21 U - Sun PC-NFS - API???
2144FFBXFFFF - INT 21 U - NewSpace - ???
2145 - INT 21 - DOS 2+ - "DUP" - DUPLICATE FILE HANDLE
2146 - INT 21 - DOS 2+ - "DUP2", "FORCEDUP" - FORCE DUPLICATE FILE HANDLE
2147 - INT 21 - DOS 2+ - "CWD" - GET CURRENT DIRECTORY
2148 - INT 21 - DOS 2+ - ALLOCATE MEMORY
2149 - INT 21 - DOS 2+ - FREE MEMORY
214A - INT 21 - DOS 2+ - RESIZE MEMORY BLOCK
214A--BX00B6 - INT 21 - VIRUS???
214A--BXFFFF - INT 21 - VIRUS???
214B - INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
214B - INT 21 - ELRES v1.0 only - INSTALLATION CHECK
214B04 - INT 21 - VIRUS - "MG", "699"/"Thirteen Minutes" - INSTALLATION CHECK
214B05 - INT 21 - DOS 5+ - SET EXECUTION STATE
214B18DX0010 - INT 21 U - FBOOT v2.13 - PERFORM FAST BOOTSTRAP
214B20 - INT 21 - VIRUS - "Holocaust"/"Telefonica" - ???
214B21 - INT 21 C - VIRUS - "Holocaust"/"Telefonica" - ???
214B25 - INT 21 - VIRUS - "1063"/"Mono" - INSTALLATION CHECK
214B40 - INT 21 - VIRUS - "Plastique"/"AntiCad" - INSTALLATION CHECK
214B41 - INT 21 - VIRUS - "Plastique"/"AntiCad" - ???
214B4A - INT 21 - VIRUS - "Jabberwocky" - INSTALLATION CHECK
214B4B - INT 21 - VIRUS - "Horse-2" - INSTALLATION CHECK
214B4D - INT 21 - VIRUS - "Murphy-2", "Patricia"/"Smack" - INSTALLATION CHECK
214B50 - INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - INSTALLATION CHECK
214B53 - INT 21 - VIRUS - "Horse" - INSTALLATION CHECK
214B53BX2121 - INT 21 - VIRUS - "One Half" - INSTALLATION CHECK
214B55 - INT 21 - VIRUS - "Sparse" - INSTALLATION CHECK
214B59 - INT 21 - VIRUS - "Murphy-1", "Murphy-4" - INSTALLATION CHECK
214B5E - INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
214B60 - INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - ???
214B80 - INT 21 - DR DOS v3.31+ - RUN ALREADY-LOADED KERNEL FILE
214B87 - INT 21 - VIRUS - "Shirley" - INSTALLATION CHECK
214B95 - INT 21 - VIRUS - "Zherkov-1882" - INSTALLATION CHECK
214BA7 - INT 21 - VIRUS - "1876"/"Dash-em" - INSTALLATION CHECK
214BAA - INT 21 - VIRUS - "Nomenklatura" - INSTALLATION CHECK
214BAF - INT 21 - VIRUS - "948"/"Screenplus1", "Magnitogorsk" - INSTALLATION CHECK
214BB1 - INT 21 - VIRUS - "UZZY" -INSTALLATION CHECK
214BDD - INT 21 - VIRUS - "Lozinsky"/"Zherkov" - INSTALLATION CHECK
214BEE - INT 21 - F-DRIVER.SYS v1.14+ - GRAB INT 21
214BF0 - INT 21 - DIET v1.10+ (Overlay Mode) - INSTALLATION CHECK
214BF1 - INT 21 - DIET v1.10+ (Overlay Mode) - EXPAND PROGRAM???
214BF1 - INT 21 - VIRUS - "Jerusalem 2" - INSTALLATION CHECK
214BFE - INT 21 - VIRUS - "Hitchcock", "Dark Avenger-1028", "1193" - INSTALLATION CHECK
214BFF - INT 21 - VIRUS - "USSR-707", "Justice", "Europe 92" - INSTALLATION CHECK
214BFFSI0000 - INT 21 - VIRUS - "Cascade" - INSTALLATION CHECK
214C - INT 21 - DOS 2+ - "EXIT" - TERMINATE WITH RETURN CODE
214C57 - INT 21 - Headroom - ???
214D - INT 21 - DOS 2+ - GET RETURN CODE (ERRORLEVEL)
214E - INT 21 - DOS 2+ - "FINDFIRST" - FIND FIRST MATCHING FILE
214E - INT 21 - WILDUNIX.COM internal - INSTALLATION CHECK
214F - INT 21 - DOS 2+ - "FINDNEXT" - FIND NEXT MATCHING FILE
2150 - INT 21 - DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS)
2150FD - INT 21 - VIRUS - "Predator 2" - INSTALLATION CHECK
2151 - INT 21 - DOS 2+ internal - GET CURRENT PROCESS ID (GET PSP ADDRESS)
2152 - INT 21 U - DOS 2+ internal - "SYSVARS" - GET LIST OF LISTS
215252 - INT 21 - VIRUS - "516"/"Leapfrog" - INSTALLATION CHECK
2153 - INT 21 - DOS 2+ internal - TRANSLATE BIOS PARAMETER BLOCK TO DRIVE PARAM BLOCK
2154 - INT 21 - DOS 2+ - GET VERIFY FLAG
2154--BX4475 - INT 21 - VIRUS - "Dual_GtM"/"Ganeu" - INSTALLATION CHECK
215454 - INT 21 - VIRUS - "Dudley" - INSTALLATION CHECK
2155 - INT 21 - DOS 2+ internal - CREATE CHILD PSP
2156 - INT 21 - DOS 2+ - "RENAME" - RENAME FILE
215643 - INT 21 - VIRUS - "PS-MPC.Gold" - INSTALLATION CHECK
215700 - INT 21 - DOS 2+ - GET FILE'S LAST-WRITTEN DATE AND TIME
215701 - INT 21 - DOS 2+ - SET FILE'S LAST-WRITTEN DATE AND TIME
215702 - INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTES FOR FILE
215702 - INT 21 - OS/2 v1.1+ Family API - DosQFileInfo
215702BXFFFF - INT 21 - OS/2 v1.1+ Compatibility Box Family API - DosQPathInfo
215703 - INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTE PROPERTIES
215703 - INT 21 - OS/2 v1.1+ Family API - DosSetFileInfo
215703BXFFFF - INT 21 - OS/2 v1.1+ Family API - DosSetPathInfo
215704 - INT 21 - DOS 4.x only - SET EXTENDED ATTRIBUTES
215704 - INT 21 - MS-DOS 7/Windows95 - GET LAST ACCESS DATE AND TIME
215705 - INT 21 - MS-DOS 7/Windows95 - SET LAST ACCESS DATE AND TIME
215706 - INT 21 - MS-DOS 7/Windows95 - GET CREATION DATE AND TIME
215707 - INT 21 - MS-DOS 7/Windows95 - SET CREATION DATE AND TIME
215741 - INT 21 - VIRUS - "WARP" -INSTALLATION CHECK
215757BX5757 - INT 21 U - IBM Genie - Resident Manager - INSTALLATION CHECK
215758 - INT 21 U - Headroom - API
2158 - INT 21 - DOS 2.11+ - GET OR SET MEMORY ALLOCATION STRATEGY
2158 - INT 21 - DOS 5+ - GET OR SET UMB LINK STATE
2158CC - INT 21 - VIRUS - "1067"/"Headcrash" - INSTALLATION CHECK
2158DD - INT 21 - VIRUS - "1067"/"Headcrash" - GET ORIGINAL INT 21h VECTOR
2159--BX0000 - INT 21 - DOS 3.0+ - GET EXTENDED ERROR INFORMATION
2159--BX0001 - INT 21 - European MS-DOS 4.0 - GET HARD ERROR INFORMATION
215A - INT 21 - DOS 3.0+ - CREATE TEMPORARY FILE
215B - INT 21 - DOS 3.0+ - CREATE NEW FILE
215C - INT 21 - DOS 3.0+ - "FLOCK" - RECORD LOCKING
215D00 - INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
215D01 - INT 21 U - DOS 3.1+ internal - COMMIT ALL FILES FOR SPECIFIED COMPUTER/PROCESS
215D02 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE FILE BY NAME
215D03 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN COMPUTER
215D04 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN PROCESS
215D05 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - GET OPEN FILE LIST ENTRY
215D06 - INT 21 U - DOS 3.0+ internal - GET ADDRESS OF DOS SWAPPABLE DATA AREA
215D07 - INT 21 U - DOS 3.1+ network - GET REDIRECTED PRINTER MODE
215D08 - INT 21 U - DOS 3.1+ network - SET REDIRECTED PRINTER MODE
215D09 - INT 21 U - DOS 3.1+ network - FLUSH REDIRECTED PRINTER OUTPUT
215D0A - INT 21 - DOS 3.1+ - SET EXTENDED ERROR INFORMATION
215D0B - INT 21 OU - DOS 4.x only - internal - GET DOS SWAPPABLE DATA AREAS
215E00 - INT 21 - DOS 3.1+ network - GET MACHINE NAME
215E00 - INT 21 - 10NET v5.0 - GET MACHINE NAME
215E01CH00 - INT 21 - DOS 3.1+ network - SET MACHINE NAME
215E01 - INT 21 - 10NET v5.0 - GET LOCAL 10NET CONFIGURATION TABLE
215E02 - INT 21 - DOS 3.1+ network - SET NETWORK PRINTER SETUP STRING
215E03 - INT 21 - DOS 3.1+ network - GET NETWORK PRINTER SETUP STRING
215E04 - INT 21 - DOS 3.1+ network - SET PRINTER MODE
215E04 - INT 21 - 10NET v5.0 - INITIATE PRINT JOB
215E05 - INT 21 - DOS 3.1+ network - GET PRINTER MODE
215E05 - INT 21 - 10NET v5.0 - TERMINATE PRINT JOB
215E06 - INT 21 - 10NET v5.0 - GET/SET 10NET WORKSTATION PRINTER SETUP STRUCTURE
215F00 - INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
215F01 - INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
215F02 - INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
215F03 - INT 21 - DOS 3.1+ network - REDIRECT DEVICE
215F04 - INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
215F05 - INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
215F05 - INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
215F06 - INT 21 U - Network - GET FULL REDIRECTION LIST
215F06 - INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
215F07 - INT 21 - DOS 5+ - ENABLE DRIVE
215F07 - INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
215F08 - INT 21 - DOS 5+ - DISABLE DRIVE
215F08 - INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
215F09 - INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
215F0A - INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
215F30 - INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
215F32 - INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
215F33 - INT 21 u - Named Pipes - LOCAL DosQNmPHandState
215F34 - INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
215F35 - INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
215F36 - INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
215F37 - INT 21 u - Named Pipes - DosCallNmPipe
215F38 - INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
215F39 - INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
215F3A - INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
215F3B - INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
215F3C - INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
215F3D - INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
215F3E - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
215F3F - INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
215F40 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
215F41 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
215F42 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
215F43 - INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
215F44 - INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
215F45 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
215F46 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
215F47 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
215F48 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
215F49 - INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
215F4A - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
215F4B - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
215F4C - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
215F4D - INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
215F4E - INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
215F4F - INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
215F50 - INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
215F51 - INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
215F52 - INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
215F53 - INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
215F55 - INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
215F80 - INT 21 - LANtastic - GET LOGIN ENTRY
215F81 - INT 21 - LANtastic - LOGIN TO SERVER
215F82 - INT 21 - LANtastic - LOGOUT FROM SERVER
215F83 - INT 21 - LANtastic - GET USERNAME ENTRY
215F84 - INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
215F85 - INT 21 - LANtastic - CHANGE PASSWORD
215F86 - INT 21 - LANtastic - DISABLE ACCOUNT
215F87 - INT 21 - LANtastic v3+ - GET ACCOUNT
215F88 - INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
215F97 - INT 21 - LANtastic - COPY FILE
215F98 - INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
215F99 - INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
215F9A - INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
215F9B - INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
215F9C - INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
215F9D - INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
215F9E - INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
215FA0 - INT 21 - LANtastic - GET QUEUE ENTRY
215FA1 - INT 21 - LANtastic - SET QUEUE ENTRY
215FA2 - INT 21 - LANtastic - CONTROL QUEUE
215FA3 - INT 21 - LANtastic v3+ - GET PRINTER STATUS
215FA4 - INT 21 - LANtastic v3+ - GET STREAM INFO
215FA5 - INT 21 - LANtastic v3+ - SET STREAM INFO
215FA7 - INT 21 - LANtastic - CREATE USER AUDIT ENTRY
215FA9 - INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
215FB0 - INT 21 - LANtastic - GET ACTIVE USER INFORMATION
215FB1 - INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
215FB2 - INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
215FB3 - INT 21 - LANtastic v3+ - TRANSLATE PATH
215FB4 - INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
215FB5 - INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
215FB6 - INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
215FB7 - INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
215FC0 - INT 21 - LANtastic - GET TIME FROM SERVER
215FC8 - INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
215FC9 - INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
215FCA - INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
215FCB - INT 21 - LANtastic v4.1+ - TERMINATE USER
215FCC - INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
215FCD - INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
215FD0 - INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
215FD1 - INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
215FE0 - INT 21 C - LANtastic - GET DOS SERVICE VECTOR
215FE1 - INT 21 - LANtastic - SET DOS SERVICE VECTOR
215FE2 - INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
215FE3 - INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
2160 - INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
2161 - INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
2161--BP6467 - INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
2162 - INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
216262SI1994 - INT 21 - ENVLOCK - INSTALLATION CHECK
216300 - INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
216300 - INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
216301 - INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
216302 - INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
216303 - INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
216304 - INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
2164 - INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
2164--DX0000 - INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
2164--DX0001 - INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
2164--DX0002 - INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
2164--DX0003 - INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
2164--DX0004 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
2164--DX0005 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
2164--DX0006 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
2164--DX0007 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
2164--DX0008 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
2164--CX636C - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
2164--BX0025 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
2164--BX00B6 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
2164--BX00CB - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
216500 - INT 21 - Windows95 (OSR2) - SET GENERAL INTERNATIONALIZATION INFO
2165 - INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
2165 - INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
216523 - INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
2165 - INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
216601 - INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
216602 - INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
2167 - INT 21 - DOS 3.3+ - SET HANDLE COUNT
2168 - INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
2169 - INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
2169 - INT 21 - DR DOS 5.0 - NULL FUNCTION
216969 - INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
2169FFDX0000 - INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
2169FFDXCFBF - INT 21 U - CUBIT v4.00 - UNINSTALL
216A - INT 21 U - DOS 4.0+ - COMMIT FILE
216B - INT 21 U - DOS 4.0 internal - IFS IOCTL
216B - INT 21 U - DOS 5+ - NULL FUNCTION
216C00 - INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
216C01 - INT 21 U - OS/2 v2.0 - "DosOpen2"
216D - INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
216D - INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
216D - INT 21 U - Novell DOS 7 - NOP
216E - INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
216E - INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
216F00 - INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
216F00 - INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
216F01 - INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
216F02 - INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
216F03 - INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
2170 - INT 21 - MS-DOS 7 (Windows95) - GET/SET INTERNATIONALIZATION INFORMATION
217070BX6060 - INT 21 - PCW Weather Card interface - GET DATA SEGMENT
217070BX7070 - INT 21 - PCW Weather Card interface - INSTALLATION CHECK
2171 - INT 21 - Windows95 - LONG FILENAME FUNCTIONS
2171 - INT 21 - VIRUS - "1205" - INSTALLATION CHECK
21710D - INT 21 - Windows95 - RESET DRIVE
217139 - INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
21713A - INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
21713B - INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
217141 - INT 21 - Windows95 - LONG FILENAME - DELETE FILE
217143 - INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
217147 - INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
21714E - INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
21714F - INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
217156 - INT 21 - Windows95 - LONG FILENAME - RENAME FILE
217160CL00 - INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
217160CL01 - INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
217160CL02 - INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
21716C - INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
2171A0 - INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
2171A1 - INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
2171A2 - INT 21 U - Windows95 - internal - LONG FILENAME - FIND NEXT MATCHING FILE
2171A3 - INT 21 U - Windows95 - internal
2171A4 - INT 21 U - Windows95 - internal
2171A5 - INT 21 U - Windows95 - internal
2171A6 - INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
2171A7BL00 - INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
2171A7BL01 - INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
2171A8 - INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
2171A9 - INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
2171AABH00 - INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
2171AABH01 - INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
2171AABH02 - INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
2172 - INT 21 - Windows95 beta - LFN-FindClose
2173 - INT 21 - MS-DOS 7 - DRIVE LOCKING AND FLUSHING
217302 - INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
217303 - INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
217304 - INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
217305CXFFFF - INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
217575 - INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
2176 - INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
217700 - INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
217734 - INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
217761 - INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
217BCE - INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
217BCF - INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
217D - INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
217F - INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
2180 - INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
218080 - INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
2181 - INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
2182 - INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
2183 - INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
2183 - INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
2184 - INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
218400 - INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
218401 - INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
218402 - INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
2185 - INT 21 U - European MS-DOS 4.0 - ???
2186 - INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
2187 - INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
2188 - INT 21 U - European MS-DOS 4.0 - ???
2189 - INT 21 - European MS-DOS 4.0 - SLEEP
2189 - INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
218A - INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
218B - INT 21 U - European MS-DOS 4.0 - ???
218C - INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
218D - INT 21 - European MS-DOS 4.0 - SEND SIGNAL
218E00BH00 - INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
218F - INT 21 U - European MS-DOS 4.0 - ???
2190 - INT 21 U - European MS-DOS 4.0 - ???
2190--CXFFFF - INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK READ
2190 - INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
2191 - INT 21 U - European MS-DOS 4.0 - ???
2191--CXFFFF - INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK WRITE
2192 - INT 21 U - European MS-DOS 4.0 - ???
2192 - INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - ABORT CURRENT PROCESS VIA INT 23
2193 - INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
2194 - INT 21 U - European MS-DOS 4.0 - ???
2195 - INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
2196 - INT 21 U - European MS-DOS 4.0 - ???
2197 - INT 21 U - European MS-DOS 4.0 - ???
219753 - INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
2198 - INT 21 U - European MS-DOS 4.0 - ???
2199 - INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
219A - INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
219AD5 - INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
21A0 - INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
21A1 - INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
21A1D5 - INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
21A2 - INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
21A3 - INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
21A4 - INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
21A5 - INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
21A55A - INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
21AA00 - INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
21AA03 - INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
21AB - INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
21ABCD - INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
21ABCD - INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
21AF - INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
21B3 - INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
21B300 - INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
21B301 - INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
21B302 - INT 21 U - Novell NetWare - START PACKET SIGNING
21B304 - INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
21B306 - INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
21B4 - INT 21 U - Novell NetWare - "AttachHandle"
21B500 - INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
21B501 - INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
21B502 - INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
21B5 - INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
21B505 - INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
21B506 - INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
21B507 - INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
21B6 - INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
21B7 - INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
21B8 - INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
21B800 - INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
21B801 - INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
21B802 - INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
21B803 - INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
21B804 - INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
21B805 - INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
21B806 - INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
21B807 - INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
21B808 - INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
21B809 - INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
21B9 - INT 21 U - Novell NetWare - "SpecialAttachableFunction"
21B974 - INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
21BA - INT 21 U - Novell NetWare - "ReturnCommandComPointers"
21BB - INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
21BBBB - INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
21BC - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
21BD - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
21BE - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
21BE - INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
21BE00 - INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
21BF - INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
21C0 - INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
21C0 - INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
21C000 - INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
21C001 - INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
21C002 - INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
21C1 - INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
21C1 - INT 21 - VIRUS - "Solano" - ???
21C2 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
21C2 - INT 21 - VIRUS - "Scott's Valley" - ???
21C3 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
21C301DXF1F1 - INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
21C4 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
21C500 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
21C500 - INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
21C501 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
21C502 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
21C503 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
21C504 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
21C6 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
21C6 - INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
21C603 - INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
21C700 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
21C700 - INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
21C701 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
21C702 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
21C703 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
21C704 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
21C705 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
21C706 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
21C707 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
21C708 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
21C8 - INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
21C9 - INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
21CA - INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
21CA15 - INT 21 - VIRUS - "Piter" - ???
21CB - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
21CB - INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
21CB02 - INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
21CC - INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
21CC - INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
21CD - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
21CD - INT 21 - VIRUS - "Westwood" - ???
21CE - INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
21CF - INT 21 - LANstep - ???
21CF - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
21D0 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
21D0 - INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
21D0 - INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
21D000 - INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
21D000 - INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
21D1 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
21D2 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
21D2 - INT 21 - VIRUS???
21D3 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
21D4 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
21D5 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
21D5 - INT 21 - VIRUS - "Carfield" - ???
21D5AA - INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
21D5AABPDEAA - INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
21D6 - INT 21 - Novell NetWare - WORKSTATION - END OF JOB
21D7 - INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
21D8 - INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
21D9 - INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
21DA - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
21DADA - INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
21DAFE - INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
21DB - INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
21DC - INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
21DC - INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
21DC28 - INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
21DCBA - INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
21DD - INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
21DD - INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
21DDEF - INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
21DE - INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
21DE - INT 21 - VIRUS - "April 1st EXE" - ???
21DE - INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
21DE--DL04 - INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
21DE - INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
21DEAD - INT 21 - VIRUS - "90210" - INSTALLATION CHECK
21DEAD - INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
21DEDE - INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
21DEFE - INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
21DF--DL00 - INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
21DF--DL01 - INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
21DF--DL02 - INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
21DF--DL03 - INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
21DF--DL04 - INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
21DF--DL05 - INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
21DF--DL06 - INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
21DF--DL07 - INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
21DF00DX534C - INT 21 U - Software Carousel - INSTALLATION CHECK
21DF01 - INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
21DF02 - INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
21DF03 - INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
21DF04 - INT 21 - Software Carousel - GET PARTITION NAME
21DF05 - INT 21 - Software Carousel - CHANGE PARTITION SIZE
21DF06 - INT 21 - Software Carousel - CHANGE PARTITION NAME
21DF07 - INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
21DF08 - INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
21DF09 - INT 21 - Software Carousel - BOOT THE SYSTEM
21DF0A - INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
21DF0B - INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
21DF0C - INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
21E0 - INT 21 - Digital Research DOS Plus - CALL BDOS
21E0 - INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
21E0 - INT 21 - DoubleDOS - MENU CONTROL
21E0 - INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
21E0 - INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
21E0--SF06 - INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
21E0--SF09 - INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
21E00F - INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
21E1 - INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
21E1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
21E1 - INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
21E1--SF00 - INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
21E1--SF01 - INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
21E1--SF02 - INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
21E1--SF03 - INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
21E1--SF04 - INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
21E1--SF05 - INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
21E1--SF06 - INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
21E1--SF07 - INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
21E1--SF08 - INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
21E1--SF09 - INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
21E2 - INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
21E2 - INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
21E2--SF00 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
21E2--SF01 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
21E2--SF02 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
21E2--SF03 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
21E2--SF04 - INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
21E2--SF05 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
21E2--SF06 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
21E2--SF0A - INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
21E2--SF0B - INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
21E2--SF0C - INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
21E2--SF0D - INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
21E2--SF0E - INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
21E2--SF0F - INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
21E2--SF10 - INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
21E2--SF11 - INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
21E2--SF12 - INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
21E2--SF13 - INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
21E2--SF14 - INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
21E2--SF15 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
21E2--SF16 - INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
21E2--SF17 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
21E2--SF18 - INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
21E2--SF19 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
21E2--SF1A - INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
21E3 - INT 21 - OS/286, OS/386 - ISSUE REAL INTERRUPT
21E3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
21E3 - INT 21 - Novell NetWare - CONNECTION CONTROL
21E3--SF01 - INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
21E3--SF02 - INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
21E3--SF03 - INT 21 - Novell NetWare - CONNECTION SERVICES - MAP OBJECT TO NUMBER (OLD)
21E3--SF0A - INT 21 - Novell NetWare - CONNECTION SERVICES - ENTER LOGIN AREA
21E3--SF0C - INT 21 U - Novell NetWare - VERIFY NETWORK SERIAL NUMBER
21E3--SF0D - INT 21 - Novell NetWare - MESSAGE SERVICES - LOG NETWORK MESSAGE
21E3--SF0E - INT 21 - Novell NetWare - FILE SERVER - GET DISK UTILIZATION
21E3--SF0F - INT 21 - Novell NetWare - FILE SERVICES - SCAN FILE INFORMATION
21E3--SF10 - INT 21 - Novell NetWare - FILE SERVICES - SET FILE INFORMATION
21E3--SF11 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER INFORMATION
21E3--SF12 - INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
21E3--SF13 - INT 21 - Novell NetWare - CONNECTION SERVICES - GET INTERNET ADDRESS (OLD)
21E3--SF14 - INT 21 - Novell NetWare - CONNECTION SERVICES - LOGIN TO FILE SERVER
21E3--SF15 - INT 21 - Novell NetWare - CONNECTION SERVICES - GET OBJECT CONNECTION LIST(OLD)
21E3--SF16 - INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION INFORMATION
21E3--SF32 - INT 21 - Novell NetWare - BINDERY SERVICES - CREATE BINDERY OBJECT
21E3--SF33 - INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT
21E3--SF34 - INT 21 - Novell NetWare - BINDERY SERVICES - RENAME BINDERY OBJECT
21E3--SF35 - INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT ID
21E3--SF36 - INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT NAME
21E3--SF37 - INT 21 - Novell NetWare - BINDERY SERVICES - SCAN BINDERY OBJECT
21E3--SF38 - INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT SECURITY
21E3--SF39 - INT 21 - Novell NetWare - BINDERY SERVICES - CREATE PROPERTY
21E3--SF3A - INT 21 - Novell NetWare - BINDERY SERVICES - DELETE PROPERTY
21E3--SF3B - INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE PROPERTY SECURITY
21E3--SF3C - INT 21 - Novell NetWare - BINDERY SERVICES - SCAN PROPERTY
21E3--SF3D - INT 21 - Novell NetWare - BINDERY SERVICES - READ PROPERTY VALUE
21E3--SF3E - INT 21 - Novell NetWare - BINDERY SERVICES - WRITE PROPERTY VALUE
21E3--SF3F - INT 21 - Novell NetWare - BINDERY SERVICES - VERIFY BINDERY OBJECT PASSWORD
21E3--SF40 - INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT PASSWORD
21E3--SF41 - INT 21 - Novell NetWare - BINDERY SERVICES - ADD BINDERY OBJECT TO SET
21E3--SF42 - INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT FROM SET
21E3--SF43 - INT 21 - Novell NetWare - BINDERY SERVICES - IS BINDERY OBJECT IN SET
21E3--SF44 - INT 21 - Novell NetWare - BINDERY SERVICES - CLOSE BINDERY
21E3--SF45 - INT 21 - Novell NetWare - BINDERY SERVICES - OPEN BINDERY
21E3--SF46 - INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY ACCESS LEVEL
21E3--SF47 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN BINDERY OBJ TRUSTEE PATHS
21E3--SF64 - INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE
21E3--SF65 - INT 21 - Novell NetWare - QUEUE SERVICES - DESTROY QUEUE
21E3--SF66 - INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE CURRENT STATUS (OLD)
21E3--SF67 - INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE CURRENT STATUS (OLD)
21E3--SF68 - INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE JOB AND FILE
21E3--SF69 - INT 21 - Novell NetWare - QUEUE SERVICES - CLOSE FILE AND START QUEUE JOB (OLD)
21E3--SF6A - INT 21 - Novell NetWare - QUEUE SERVICES - REMOVE JOB FROM QUEUE (OLD)
21E3--SF6B - INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB LIST (OLD)
21E3--SF6C - INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE JOB ENTRY (OLD)
21E3--SF6D - INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB ENTRY (OLD)
21E3--SF6E - INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB POSITION
21E3--SF6F - INT 21 - Novell NetWare - QUEUE SERVICES - ATTACH QUEUE SERVER TO QUEUE
21E3--SF70 - INT 21 - Novell NetWare - QUEUE SERVICES - DETACH QUEUE SERVER FROM QUEUE
21E3--SF71 - INT 21 - Novell NetWare - QUEUE SERVICES - SERVICE QUEUE JOB AND OPEN FILE
21E3--SF72 - INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB AND FILE
21E3--SF73 - INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB AND FILE
21E3--SF74 - INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE TO CLIENT RIGHTS (OLD)
21E3--SF75 - INT 21 - Novell NetWare - QUEUE SERVICES - RESTORE QUEUE SERVER RIGHTS
21E3--SF76 - INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS OLD
21E3--SF77 - INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE SERVER CURRENT STATUS
21E3--SF78 - INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB'S FILE SIZE (OLD)
21E3--SF83 - INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB
21E3--SF84 - INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB
21E3--SF96 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - GET ACCOUNT STATUS
21E3--SF97 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT CHARGE
21E3--SF98 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT HOLD
21E3--SF99 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT NOTE
21E3--SFC8 - INT 21 - Novell NetWare - FILE SERVER - CHECK CONSOLE PRIVILEGES
21E3--SFC9 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DESCRIPTION STRINGS
21E3--SFCA - INT 21 - Novell NetWare - FILE SERVER - SET FILE SERVER DATE AND TIME
21E3--SFCB - INT 21 - Novell NetWare - FILE SERVER - DISABLE FILE SERVER LOGIN
21E3--SFCC - INT 21 - Novell NetWare - FILE SERVER - ENABLE FILE SERVER LOGIN
21E3--SFCD - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LOGIN STATUS
21E3--SFCE - INT 21 - Novell NetWare - FILE SERVICES - PURGE ALL ERASED FILES
21E3--SFCF - INT 21 - Novell NetWare - FILE SERVER - DISABLE TRANSACTION TRACKING
21E3--SFD0 - INT 21 - Novell NetWare - FILE SERVER - ENABLE TRANSACTION TRACKING
21E3--SFD1 - INT 21 - Novell NetWare - FILE SERVER - SEND CONSOLE BROADCAST
21E3--SFD2 - INT 21 - Novell NetWare - FILE SERVER - CLEAR CONNECTION NUMBER
21E3--SFD3 - INT 21 - Novell NetWare - FILE SERVER - DOWN FILE SERVER
21E3--SFD4 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SYSTEM STATISTICS
21E3--SFD5 - INT 21 - Novell NetWare - FILE SERVER - GET TRANSACTION TRACKING STATISTICS
21E3--SFD6 - INT 21 - Novell NetWare - FILE SERVER - GET DISK CACHE STATISTICS
21E3--SFD7 - INT 21 - Novell NetWare - FILE SERVER - GET DRIVE MAPPING TABLE
21E3--SFD8 - INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL DISK STATISTICS
21E3--SFD9 - INT 21 - Novell NetWare - FILE SERVER - GET DISK CHANNEL STATISTICS
21E3--SFDA - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S TASK INFORMATION
21E3--SFDB - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S OPEN FILES (OLD)
21E3--SFDC - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTIONS USING A FILE
21E3--SFDD - INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY CONN&FILE
21E3--SFDE - INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY FILE
21E3--SFDF - INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORDS BY CONNECTION
21E3--SFE0 - INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORD INFORMATION
21E3--SFE1 - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S SEMAPHORES
21E3--SFE2 - INT 21 - Novell NetWare - FILE SERVER - GET SEMAPHORE INFORMATION
21E3--SFE3 - INT 21 - Novell NetWare - FILE SERVER - GET LAN DRIVER'S CONFIGURATION INFO
21E3--SFE5 - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S USAGE STATISTICS
21E3--SFE6 - INT 21 - Novell NetWare - FILE SERVER - GET BINDERY OBJECT DISK SPACE LEFT
21E3--SFE7 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LAN I/O STATISTICS
21E3--SFE8 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER MISC INFORMATION
21E3--SFE9 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFORMATION
21E4 - INT 21 O - Novell NetWare - SET FILE ATTRIBUTES (FCB)
21E4 - INT 21 - VIRUS - "Anarkia" - INSTALLATION CHECK
21E400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
21E400 - INT 21 - OS/286, OS/386 - CHAIN TO REAL-MODE HANDLER
21E402 - INT 21 - OS/286, OS/386 - SET PROTECTED-MODE TASK GATE
21E403 - INT 21 - OS/286, OS/386 - REMOVE PROTECTED-MODE TASK GATE
21E5 - INT 21 O - Novell NetWare - UPDATE FILE SIZE (FCB)
21E5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
21E500 - INT 21 - OS/286, OS/386 - HEAP MANAGEMENT STRATEGY
21E501 - INT 21 - OS/286, OS/386 - FORCE HEAP COMPACTION
21E6 - INT 21 O - Novell NetWare - COPY FILE TO FILE (FCB)
21E6 - INT 21 P - OS/286, OS/386 - ISSUE REAL PROCEDURE SIGNAL FROM PROTECTED MODE
21E7 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DATE AND TIME
21E7 - INT 21 - OS/286, OS/386 - CREATE CODE SEGMENT
21E7 - INT 21 - VIRUS - "Spyer"/"Kiev" - INSTALLATION CHECK
21E8 - INT 21 O - Novell NetWare, Alloy NTNX - SET FCB RE-OPEN MODE
21E8 - INT 21 - OS/286, OS/386 - SEGMENT CREATION
21E8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
21E9 - INT 21 P - OS/286, OS/386 - CHANGE SEGMENTS
21E9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
21E900 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY HANDLE
21E900 - INT 21 - VIRUS - "Dark End" - INSTALLATION CHECK
21E905 - INT 21 - Novell NetWare shell 3.01 - MAP A FAKE ROOT DIRECTORY
21E906 - INT 21 - Novell NetWare shell 3.01 - DELETE FAKE ROOT DIRECTORY
21E907 - INT 21 - Novell NetWare shell 3.01 - GET RELATIVE DRIVE DEPTH
21E908BL00 - INT 21 - Novell NetWare shell 3.01 - SET SHOW DOTS
21E909 - INT 21 - Novell NetWare - NetWare shell - CONVERT DOS FILE HANDLE TO NETWARE
21EA - INT 21 - Novell NetWare, Alloy NTNX - RETURN SHELL VERSION
21EA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
21EA - INT 21 - OS/286, OS/386 - ALLOCATE HUGE SEGMENT
21EB - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG FILE
21EB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
21EB00 - INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY LINEAR ADDRESS
21EB02 - INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 16-BIT SEGMENT:OFFSET
21EB03 - INT 21 - OS/386 VMM - FREE MAPPED PAGES
21EB04 - INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 32-BIT SEGMENT:OFFSET
21EB05 - INT 21 - OS/386 VMM - MAP PAGES
21EB06 - INT 21 - OS/386 VMM - LOCK PAGES IN MEMORY
21EB07 - INT 21 - OS/386 VMM - UNLOCK MEMORY PAGES
21EC - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE
21EC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
21EC - INT 21 - OS/286, OS/386 - BLOCK TRANSFER
21EC27 - INT 21 - VIRUS - "Halloween.1839" - INSTALLATION CHECK
21EC59 - INT 21 - VIRUS - "Terror" - INSTALLATION CHECK
21ED - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE
21ED - INT 21 - OS/286, OS/386 - GET SEGMENT OR WINDOW DESCRIPTOR
21EE - INT 21 - Novell NetWare - CONNECTION SERVICES - GET PHYSICAL STATION ADDRESS
21EE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
21EE - INT 21 - VIRUS - "Jerusalem-G", "Pregnant", "Barrotes" - INSTALLATION CHECK
21EEE7 - INT 21 - VIRUS - "GingerBread" - INSTALLATION CHECK
21EF - INT 21 - VIRUS - "Mabuhay"/"June 12th" - INSTALLATION CHECK
21EF00 - INT 21 - Novell NetWare - WORKSTATION - GET DRIVE HANDLE TABLE
21EF01 - INT 21 - Novell NetWare - WORKSTATION - GET DRIVE FLAG TABLE
21EF02 - INT 21 - Novell NetWare - WORKSTATION - GET DRIVE CONNECTION ID TABLE
21EF03 - INT 21 - Novell NetWare - WORKSTATION - GET CONNECTION ID TABLE
21EF04 - INT 21 - Novell NetWare - WORKSTATION - GET FILE SERVER NAME TABLE
21F0 - INT 21 - DoubleDOS - MENU CONTROL
21F0 - INT 21 - VIRUS - "Frere Jacques" - INSTALLATION CHECK
21F000 - INT 21 - Novell NetWare - WORKSTATION - SET PREFERRED CONNECTION ID
21F001 - INT 21 - Novell NetWare - WORKSTATION - GET PREFERRED CONNECTION ID
21F002 - INT 21 - Novell NetWare - WORKSTATION - GET DEFAULT CONNECTION ID
21F003 - INT 21 - Novell NetWare - PRINT SERVICES - GET LPT CAPTURE STATUS
21F004 - INT 21 - Novell NetWare - WORKSTATION - SET PRIMARY CONNECTION ID
21F005 - INT 21 - Novell NetWare - WORKSTATION - GET PRIMARY CONNECTION ID
21F078 - INT 21 - VIRUS - "Burgler/H" - INSTALLATION CHECK
21F1 - INT 21 - Novell NetWare - CONNECTION SERVICES - FILE SERVER CONNECTION
21F1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
21F1 - INT 21 - VIRUS - "F1-337" - ???
21F1E9 - INT 21 - VIRUS - "Tremor" - INSTALLATION CHECK
21F2 - INT 21 u - Novell NetWare v3.01+ shell interface - MULTIPLEXOR
21F2 - INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
21F203 - INT 21 - Novell NetWare - LOG FILE (OLD)
21F204 - INT 21 - Novell NetWare - LOCK FILE SET (OLD)
21F207 - INT 21 - Novell NetWare - CLEAR FILE
21F208 - INT 21 - Novell NetWare - CLEAR FILE SET
21F20A - INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET (OLD)
21F20B - INT 21 - Novell NetWare - CLEAR LOGICAL RECORD
21F20E - INT 21 - Novell NetWare - CLEAR LOGICAL RECORD SET
21F211SF06 - INT 21 - Novell NetWare - GET PRINTER STATUS
21F211SF0A - INT 21 - Novell NetWare - GET PRINTER QUEUE
21F212 - INT 21 - Novell NetWare - GET VOLUME INFO WITH NUMBER
21F214CX0000 - INT 21 - Novell NetWare - GET FILE SERVER DATE AND TIME
21F215SF01 - INT 21 - Novell NetWare - GET BROADCAST MESSAGE (OLD)
21F215SF02 - INT 21 - Novell NetWare - DISABLE BROADCASTS
21F215SF03 - INT 21 - Novell NetWare - ENABLE BROADCASTS
21F215SF08 - INT 21 - Novell NetWare - CHECK PIPE STATUS
21F215SF09 - INT 21 - Novell NetWare - BROADCAST TO CONSOLE
21F215SF0B - INT 21 - Novell NetWare - GET BROADCAST MESSAGE
21F216SF00 - INT 21 - Novell NetWare - SET DIRECTORY HANDLE
21F216SF01 - INT 21 - Novell NetWare - GET DIRECTORY PATH
21F216SF02 - INT 21 - Novell NetWare - SCAN DIRECTORY INFORMATION
21F216SF03 - INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS (OLD)
21F216SF04 - INT 21 - Novell NetWare - MODIFY MAXIMUM RIGHTS MASK
21F216SF05 - INT 21 - Novell NetWare - GET VOLUME NUMBER
21F216SF06 - INT 21 - Novell NetWare - GET VOLUME NAME
21F216SF0A - INT 21 - Novell NetWare - CREATE DIRECTORY
21F216SF0B - INT 21 - Novell NetWare - DELETE DIRECTORY
21F216SF0C - INT 21 - Novell NetWare - SCAN DIRECTORY FOR TRUSTEES
21F216SF0D - INT 21 - Novell NetWare - ADD TRUSTEE TO DIRECTORY
21F216SF0E - INT 21 - Novell NetWare - DELETE TRUSTEE FROM DIRECTORY
21F216SF0F - INT 21 - Novell NetWare - RENAME DIRECTORY
21F216SF10 - INT 21 - Novell NetWare - PURGE ERASED FILES (OLD)
21F216SF11 - INT 21 - Novell NetWare - RECOVER ERASED FILE (OLD)
21F216SF12 - INT 21 - Novell NetWare - ALLOCATE PERMANENT DIRECTORY HANDLE
21F216SF13 - INT 21 - Novell NetWare - ALLOCATE TEMPORARY DIRECTORY HANDLE
21F216SF14 - INT 21 - Novell NetWare - DEALLOCATE DIRECTORY HANDLE
21F216SF15 - INT 21 - Novell NetWare - GET VOLUME INFO WITH HANDLE
21F216SF16 - INT 21 - Novell NetWare v2+ - ALLOCATE SPECIAL TEMPORARY DIRECTORY HANDLE
21F216SF17 - INT 21 - Novell NetWare - SAVE DIRECTORY HANDLE
21F216SF18 - INT 21 - Novell NetWare - RESTORE DIRECTORY HANDLE
21F216SF19 - INT 21 - Novell NetWare - SET DIRECTORY INFORMATION
21F216SF1A - INT 21 - Novell NetWare - GET PATH NAME OF VOLUME-DIRECTORY NUMBER PAIR
21F216SF1B - INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES (OLD)
21F216SF1C - INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE (OLD)
21F216SF1D - INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE (OLD)
21F216SF1E - INT 21 - Novell NetWare - SCAN A DIRECTORY
21F216SF1F - INT 21 - Novell NetWare - GET DIRECTORY ENTRY
21F216SF20 - INT 21 - Novell NetWare - SCAN VOLUME'S USER DISK RESTRICTIONS
21F216SF21 - INT 21 - Novell NetWare v3+ - ADD USER DISK SPACE RESTRICTION
21F216SF22 - INT 21 - Novell NetWare - REMOVE USER DISK SPACE RESTRICTIONS
21F216SF23 - INT 21 - Novell NetWare - SCAN DIRECTORY SPACE RESTRICTIONS
21F216SF24 - INT 21 - Novell NetWare v3+ - SET DIRECTORY DISK SPACE RESTRICTION
21F216SF25 - INT 21 - Novell NetWare - SET DIRECTORY/FILE INFORMATION
21F216SF26 - INT 21 - Novell NetWare v3+ - SCAN FILE OR DIRECTORY FOR EXTENDED TRUSTEES
21F216SF27 - INT 21 - Novell NetWare v3+ - ADD EXTENDED TRUSTEE TO DIRECTORY OR FILE
21F216SF28 - INT 21 - Novell NetWare - SCAN DIRECTORY DISK SPACE
21F216SF29 - INT 21 - Novell NetWare v3+ - GET OBJECT DISK USAGE AND RESTRICTIONS
21F216SF2A - INT 21 - Novell NetWare - GET EFFECTIVE RIGHTS
21F216SF2B - INT 21 - Novell NetWare - REMOVE EXTENDED TRUSTEE FROM DIR OR FILE
21F216SF2C - INT 21 - Novell NetWare - GET VOLUME USAGE
21F216SF2D - INT 21 - Novell NetWare - GET DIRECTORY INFORMATION
21F216SF2E - INT 21 - Novell NetWare - RENAME OR MOVE
21F216SF2F - INT 21 - Novell NetWare - GET NAME SPACE INFORMATION
21F216SF30 - INT 21 - Novell NetWare - GET NAME SPACE DIRECTORY ENTRY
21F216SF31 - INT 21 - Novell NetWare - OPEN DATA STREAM
21F216SF32 - INT 21 - Novell NetWare v2.2+ - GET OBJECT EFFECTIVE RIGHTS
21F216SF33 - INT 21 - Novell NetWare v2.2+ - GET EXTENDED VOLUME INFORMATION
21F217SF01 - INT 21 - Novell NetWare - CHANGE USER PASSWORD (OLD)
21F217SF02 - INT 21 - Novell NetWare - GET USER CONNECTION LIST (OLD)
21F217SF0C - INT 21 - Novell NetWare - VERIFY SERIALIZATION
21F217SF0E - INT 21 - Novell NetWare - GET DISK UTILIZATION
21F217SF0F - INT 21 - Novell NetWare - SCAN FILE INFORMATION
21F217SF10 - INT 21 - Novell NetWare - SET FILE INFORMATION
21F217SF11 - INT 21 - Novell NetWare - GET FILE SERVER INFORMATION
21F217SF12 - INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
21F217SF13 - INT 21 - Novell NetWare - GET INTERNET ADDRESS (OLD)
21F217SF14 - INT 21 - Novell NetWare - LOGIN OBJECT
21F217SF15 - INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST (OLD)
21F217SF16 - INT 21 - Novell NetWare - GET CONNECTION INFORMATION (OLD)
21F217SF17 - INT 21 - Novell NetWare - GET ENCRYPTION KEY
21F217SF18 - INT 21 - Novell NetWare - LOGIN OBJECT ENCRYPTED
21F217SF1A - INT 21 - Novell NetWare - GET INTERNET ADDRESS
21F217SF1B - INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST
21F217SF1C - INT 21 - Novell NetWare v3+ - GET CONNECTION INFORMATION
21F217SF1D - INT 21 - Novell NetWare v4 - CHANGE CONNECTION STATE
21F217SF1E - INT 21 - Novell NetWare v4 - SET WATCHDOG DELAY INTERVAL
21F217SF1F - INT 21 - Novell NetWare v4 - GET CONNECTION LIST
21F217SF32 - INT 21 - Novell NetWare - CREATE BINDERY OBJECT
21F217SF33 - INT 21 - Novell NetWare - DELETE BINDERY OBJECT
21F217SF34 - INT 21 - Novell NetWare - RENAME BINDERY OBJECT
21F217SF35 - INT 21 - Novell NetWare - GET BINDERY OBJECT ID
21F217SF36 - INT 21 - Novell NetWare - GET BINDERY OBJECT NAME
21F217SF37 - INT 21 - Novell NetWare - SCAN BINDERY OBJECT
21F217SF38 - INT 21 - Novell NetWare - CHANGE BINDERY OBJECT SECURITY
21F217SF39 - INT 21 - Novell NetWare - CREATE PROPERTY
21F217SF3A - INT 21 - Novell NetWare - DELETE PROPERTY
21F217SF3B - INT 21 - Novell NetWare - CHANGE PROPERTY SECURITY
21F217SF3C - INT 21 - Novell NetWare - SCAN PROPERTY
21F217SF3D - INT 21 - Novell NetWare - READ PROPERTY VALUE
21F217SF3E - INT 21 - Novell NetWare - WRITE PROPERTY VALUE
21F217SF3F - INT 21 - Novell NetWare - VERIFY BINDERY OBJECT PASSWORD
21F217SF40 - INT 21 - Novell NetWare - CHANGE BINDERY OBJECT PASSWORD
21F217SF41 - INT 21 - Novell NetWare v2.2+ - ADD OBJECT TO SET
21F217SF42 - INT 21 - Novell NetWare - DELETE BINDERY OBJECT FROM SET
21F217SF43 - INT 21 - Novell NetWare - IS BINDERY OBJECT IN SET?
21F217SF44 - INT 21 - Novell NetWare - CLOSE BINDERY
21F217SF45 - INT 21 - Novell NetWare - OPEN BINDERY
21F217SF46 - INT 21 - Novell NetWare - GET BINDERY ACCESS LEVEL
21F217SF47 - INT 21 - Novell NetWare - SCAN BINDERY OBJECT TRUSTEE PATHS
21F217SF48 - INT 21 - Novell NetWare - GET BINDERY OBJECT ACCESS LEVEL
21F217SF49 - INT 21 - Novell NetWare - IS STATION A MANAGER?
21F217SF4A - INT 21 - Novell NetWare - KEYED VERIFY BINDERY OBJECT PASSWORD
21F217SF4B - INT 21 - Novell NetWare - KEYED CHANGE BINDERY OBJECT PASSWORD
21F217SF4C - INT 21 - Novell NetWare - LIST RELATIONS OF AN OBJECT
21F217SF64 - INT 21 - Novell NetWare v2.1+ - CREATE QUEUE
21F217SF65 - INT 21 - Novell NetWare v2.1+ - DESTROY QUEUE
21F217SF66 - INT 21 - Novell NetWare v2.1+ - READ QUEUE CURRENT STATUS (OLD)
21F217SF67 - INT 21 - Novell NetWare v2.1+ - SET QUEUE CURRENT STATUS (OLD)
21F217SF68 - INT 21 - Novell NetWare v2.1+ - CREATE QUEUE JOB AND FILE (OLD)
21F217SF69 - INT 21 - Novell NetWare v2.1+ - CLOSE FILE AND START QUEUE JOB (OLD)
21F217SF6A - INT 21 - Novell NetWare v2.1+ - REMOVE JOB FROM QUEUE (OLD)
21F217SF6B - INT 21 - Novell NetWare v2.1+ - GET QUEUE JOB LIST (OLD)
21F217SF6C - INT 21 - Novell NetWare v2.1+ - READ QUEUE JOB ENTRY (OLD)
21F217SF6D - INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY (OLD)
21F217SF6E - INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB POSITION
21F217SF6F - INT 21 - Novell NetWare v2.1+ - ATTACH QUEUE SERVER TO QUEUE
21F217SF70 - INT 21 - Novell NetWare v2.1+ - DETACH QUEUE SERVER FROM QUEUE
21F217SF71 - INT 21 - Novell NetWare v2.1+ - SERVICE QUEUE JOB AND OPEN FILE
21F217SF72 - INT 21 - Novell NetWare v2.1+ - FINISH SERVICING QUEUE JOB (OLD)
21F217SF73 - INT 21 - Novell NetWare v2.1+ - ABORT SERVICING QUEUE JOB (OLD)
21F217SF74 - INT 21 - Novell NetWare v2.1+ - CHANGE TO CLIENT RIGHTS (OLD)
21F217SF75 - INT 21 - Novell NetWare v2.1+ - RESTORE QUEUE SERVER RIGHTS
21F217SF76 - INT 21 - Novell NetWare - READ QUEUE SERVER CURRENT STATUS (OLD)
21F217SF77 - INT 21 - Novell NetWare - SET QUEUE SERVER CURRENT STATUS
21F217SF78 - INT 21 - Novell NetWare - GET QUEUE JOB FILE SIZE (OLD)
21F217SF79 - INT 21 - Novell NetWare - CREATE QUEUE JOB AND FILE
21F217SF7A - INT 21 - Novell NetWare - READ QUEUE JOB ENTRY
21F217SF7B - INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY
21F217SF7D - INT 21 - Novell NetWare - READ QUEUE CURRENT STATUS
21F217SF7E - INT 21 - Novell NetWare - SET QUEUE CURRENT STATUS
21F217SF7F - INT 21 - Novell NetWare - CLOSE FILE AND START QUEUE JOB
21F217SF80 - INT 21 - Novell NetWare - REMOVE JOB FROM QUEUE
21F217SF81 - INT 21 - Novell NetWare - GET QUEUE JOB LIST
21F217SF82 - INT 21 - Novell NetWare v2.1+ - CHANGE JOB PRIORITY
21F217SF83 - INT 21 - Novell NetWare v3.1+ - FINISH SERVICING QUEUE JOB
21F217SF84 - INT 21 - Novell NetWare v3.1+ - ABORT SERVICING QUEUE JOB
21F217SF85 - INT 21 - Novell NetWare v3.1+ - CHANGE TO CLIENT RIGHTS
21F217SF86 - INT 21 - Novell NetWare v3.1+ - READ QUEUE SERVER CURRENT STATUS
21F217SF87 - INT 21 - Novell NetWare v3.1+ - GET QUEUE JOB FILE SIZE
21F217SF96 - INT 21 - Novell NetWare - GET ACCOUNT STATUS
21F217SF97 - INT 21 - Novell NetWare - SUBMIT ACCOUNT CHARGE
21F217SF98 - INT 21 - Novell NetWare - SUBMIT ACCOUNT HOLD
21F217SF99 - INT 21 - Novell NetWare - SUBMIT ACCOUNT NOTE
21F217SFC8 - INT 21 - Novell NetWare - CHECK CONSOLE PRIVILEGES
21F217SFC9 - INT 21 - Novell NetWare - GET FILE SERVER DESCRIPTION STRINGS
21F217SFCA - INT 21 - Novell NetWare - SET FILE SERVER DATE AND TIME
21F217SFCB - INT 21 - Novell NetWare - DISABLE FILE SERVER LOGIN
21F217SFCC - INT 21 - Novell NetWare - ENABLE FILE SERVER LOGIN
21F217SFCD - INT 21 - Novell NetWare - GET FILE SERVER LOGIN STATUS
21F217SFCE - INT 21 - Novell NetWare - PURGE ALL ERASED FILES
21F217SFCF - INT 21 - Novell NetWare - DISABLE TRANSACTION TRACKING
21F217SFD0 - INT 21 - Novell NetWare - ENABLE TRANSACTION TRACKING
21F217SFD1 - INT 21 - Novell NetWare - SEND CONSOLE BROADCAST
21F217SFD2 - INT 21 - Novell NetWare v3+ - CLEAR CONNECTION NUMBER (LOGOUT STATION)
21F217SFD3 - INT 21 - Novell NetWare - DOWN FILE SERVER
21F217SFD4 - INT 21 - Novell NetWare - GET FILE SYSTEM STATISTICS
21F217SFD5 - INT 21 - Novell NetWare - GET TRANSACTION TRACKING STATISTICS
21F217SFD6 - INT 21 - Novell NetWare - GET DISK CACHE STATISTICS
21F217SFD7 - INT 21 - Novell NetWare - GET DRIVE MAPPING TABLE
21F217SFD8 - INT 21 - Novell NetWare - GET PHYSICAL DISK STATISTICS
21F217SFD9 - INT 21 - Novell NetWare - GET DISK CHANNEL STATISTICS
21F217SFDA - INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S TASK INFORMATION
21F217SFDB - INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S OPEN FILES (OLD)
21F217SFDC - INT 21 - Novell NetWare v2.2+ - GET CONNECTIONS USING A FILE (OLD)
21F217SFDD - INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY CONNECTN AND FILE (OLD)
21F217SFDE - INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY FILE (OLD)
21F217SFDF - INT 21 - Novell NetWare - GET LOGICAL RECORDS BY CONNECTION (OLD)
21F217SFE0 - INT 21 - Novell NetWare - GET LOGICAL RECORD INFORMATION (OLD)
21F217SFE1 - INT 21 - Novell NetWare - GET CONNECTION'S SEMAPHORES (OLD)
21F217SFE2 - INT 21 - Novell NetWare - GET SEMAPHORE INFORMATION (OLD)
21F217SFE3 - INT 21 - Novell NetWare - GET LAN DRIVER'S CONFIGURATION INFORMATION
21F217SFE5 - INT 21 - Novell NetWare - GET CONNECTION'S USAGE STATISTICS
21F217SFE6 - INT 21 - Novell NetWare - GET OBJECT'S REMAINING DISK SPACE
21F217SFE7 - INT 21 - Novell NetWare - GET FILE SERVER LAN I/O STATISTICS
21F217SFE8 - INT 21 - Novell NetWare - GET FILE SERVER MISC INFORMATION
21F217SFE9 - INT 21 - Novell NetWare - GET VOLUME INFORMATION
21F217SFEA - INT 21 - Novell NetWare v3.11+ - GET CONNECTION'S TASK INFORMATION
21F217SFEB - INT 21 - Novell NetWare v3+ - GET CONNECTION'S OPEN FILES
21F217SFEC - INT 21 - Novell NetWare v3+ - GET CONNECTIONS USING A FILE
21F217SFED - INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY CONNECTION AND FILE
21F217SFEE - INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY FILE
21F217SFEF - INT 21 - Novell NetWare v3+ - GET LOGICAL RECORDS BY CONNECTION
21F217SFF0 - INT 21 - Novell NetWare v3+ - GET LOGICAL RECORD INFORMATION
21F217SFF1 - INT 21 - Novell NetWare v3+ - GET CONNECTION'S SEMAPHORES
21F217SFF2 - INT 21 - Novell NetWare v3+ - GET SEMAPHORE INFORMATION
21F217SFF3 - INT 21 - Novell NetWare v3+ - MAP DIRECTORY NUMBER TO PATH
21F217SFF4 - INT 21 - Novell NetWare v3+ - CONVERT PATH TO DIRECTORY ENTRY
21F217SFF5 - INT 21 - Novell NetWare - GET FILE SERVER EXTENDED MISC INFORMATION
21F217SFF6 - INT 21 - Novell NetWare - GET VOLUME EXTENDED INFORMATION
21F217SFFE - INT 21 - Novell NetWare v4 - CLEAR CONNECTION NUMBER GREATER THAN 250
21F21B - INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET (OLD)
21F21E - INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD
21F21F - INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD SET
21F220SF00 - INT 21 - Novell NetWare - OPEN SEMAPHORE (OLD)
21F220SF01 - INT 21 - Novell NetWare - EXAMINE SEMAPHORE (OLD)
21F220SF02 - INT 21 - Novell NetWare - WAIT ON SEMAPHORE (OLD)
21F220SF03 - INT 21 - Novell NetWare - SIGNAL SEMAPHORE (OLD)
21F220SF04 - INT 21 - Novell NetWare - CLOSE SEMAPHORE (OLD)
21F222SF00 - INT 21 - Novell NetWare - TTS IS AVAILABLE
21F222SF01 - INT 21 - Novell NetWare - TTS BEGIN TRANSACTION
21F222SF02 - INT 21 - Novell NetWare - TTS END TRANSACTION
21F222SF03 - INT 21 - Novell NetWare - TTS ABORT TRANSACTION
21F222SF04 - INT 21 - Novell NetWare - TTS TRANSACTION STATUS
21F222SF05 - INT 21 - Novell NetWare - TTS GET APPLICATION THRESHOLDS
21F222SF06 - INT 21 - Novell NetWare - TTS SET APPLICATION THRESHOLDS
21F222SF07 - INT 21 - Novell NetWare - TTS GET WORKSTATION THRESHOLDS
21F222SF08 - INT 21 - Novell NetWare - TTS SET WORKSTATION THRESHOLDS
21F222SF09 - INT 21 - Novell NetWare - TTS GET CONTROL FLAGS
21F222SF0A - INT 21 - Novell NetWare - TTS SET CONTROL FLAGS
21F223SF01 - INT 21 - Novell NetWare v2+ - AFP CREATE DIRECTORY
21F223SF02 - INT 21 - Novell NetWare v2+ - AFP CREATE FILE
21F223SF03 - INT 21 - Novell NetWare v2+ - AFP DELETE FILE
21F223SF04 - INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM FILENAME
21F223SF05 - INT 21 - Novell NetWare v2+ - AFP GET FILE INFORMATION
21F223SF06 - INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM NETWARE HANDLE
21F223SF07 - INT 21 - Novell NetWare v2+ - AFP RENAME
21F223SF08 - INT 21 - Novell NetWare v2+ - AFP OPEN FILE FORK
21F223SF09 - INT 21 - Novell NetWare v2+ - AFP SET FILE INFORMATION
21F223SF0A - INT 21 - Novell NetWare v2+ - AFP SCAN FILE INFORMATION
21F223SF0B - INT 21 - Novell NetWare v2+ - AFP ALLOCATE TEMPORARY DIRECTORY HANDLE
21F223SF0C - INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM PATHNAME
21F223SF0D - INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE DIRECTORY
21F223SF0E - INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE FILE
21F223SF10 - INT 21 - Novell NetWare v2+ - AFP 2.0 SET FILE INFORMATION
21F223SF11 - INT 21 - Novell NetWare v2+ - AFP 2.0 SCAN FILE INFORMATION
21F223SF12 - INT 21 - Novell NetWare v2+ - AFP GET DOS FILENAME FROM ENTRY ID
21F223SF13 - INT 21 - Novell NetWare v2+ - AFP GET MACINTOSH INFORMATION ON DELETED FILE
21F23D - INT 21 - Novell NetWare - COMMIT FILE
21F23E - INT 21 - Novell NetWare - FILE SEARCH INITIALIZE (FindFirst)
21F23F - INT 21 - Novell NetWare - FILE SEARCH CONTINUE (FindNext)
21F242 - INT 21 - Novell NetWare - CLOSE FILE
21F243 - INT 21 - Novell NetWare - CREATE FILE
21F244 - INT 21 - Novell NetWare - FILE SERVICES - ERASE FILE
21F247 - INT 21 - Novell NetWare - GET CURRENT FILE SIZE
21F24A - INT 21 - Novell NetWare - COPY FROM ONE FILE TO ANOTHER
21F24D - INT 21 - Novell NetWare - CREATE NEW FILE
21F24E - INT 21 - Novell NetWare v2+ - ALLOW TASK ACCESS TO FILE
21F256SF01 - INT 21 - Novell NetWare - CLOSE EXTENDED ATTRIBUTE HANDLE
21F256SF02 - INT 21 - Novell NetWare - WRITE EXTENDED ATTRIBUTE
21F256SF03 - INT 21 - Novell NetWare - READ EXTENDED ATTRIBUTE
21F256SF04 - INT 21 - Novell NetWare - ENUMERATE EXTENDED ATTRIBUTES
21F256SF05 - INT 21 - Novell NetWare - DUPLICATE EXTENDED ATTRIBUTES
21F257SF01 - INT 21 - Novell NetWare - OPEN/CREATE FILE OR SUBDIRECTORY
21F257SF02 - INT 21 - Novell NetWare - INITIALIZE SEARCH
21F257SF03 - INT 21 - Novell NetWare - SCAN NAMESPACE ENTRY INFO
21F257SF04 - INT 21 - Novell NetWare - RENAME OR MOVE FILE OR SUBDIRECTORY
21F257SF05 - INT 21 - Novell NetWare - SCAN FILE OR SUBDIRECTORY FOR TRUSTEES
21F257SF06 - INT 21 - Novell NetWare v3+ - GET INFORMATION ABOUT FILE OR DIRECTORY
21F257SF07 - INT 21 - Novell NetWare - MODIFY FILE OR SUBDIRECTORY DOS INFORMATION
21F257SF08 - INT 21 - Novell NetWare - DELETE FILE/DIRECTORY
21F257SF09 - INT 21 - Novell NetWare - SET SHORT DIRECTORY HANDLE
21F257SF0A - INT 21 - Novell NetWare v3+ - ADD TRUSTEE SET TO FILE OR SUBDIRECTORY
21F257SF0B - INT 21 - Novell NetWare - DELETE TRUSTEE
21F257SF0C - INT 21 - Novell NetWare v2+ - ALLOCATE SHORT DIRECTORY HANDLE
21F257SF10 - INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES
21F257SF11 - INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE
21F257SF12 - INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE
21F257SF13 - INT 21 - Novell NetWare - GET NAMESPACE INFORMATION
21F257SF15 - INT 21 - Novell NetWare - GET PATH STRING FROM SHORT DIRECTORY HANDLE
21F257SF16 - INT 21 - Novell NetWare - GENERATE DIRECTORY BASE AND VOLUME NUMBER
21F257SF17 - INT 21 - Novell NetWare - GET NAME SPACE INFORMATION FORMAT
21F257SF18 - INT 21 - Novell NetWare - GET NAME SPACES LOADED
21F257SF19 - INT 21 - Novell NetWare - WRITE NAME SPACE INFO
21F257SF1A - INT 21 - Novell NetWare - READ EXTENDED NAME SPACE INFO
21F257SF1B - INT 21 - Novell NetWare - WRITE EXTENDED NAME SPACE INFO
21F257SF1C - INT 21 - Novell NetWare - GET NS FULL PATH STRING
21F257SF1D - INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS
21F258SF01 - INT 21 - Novell NetWare v4+ - GET VOLUME AUDITING STATISTICS
21F258SF02 - INT 21 - Novell NetWare - ADD AUDIT PROPERTY
21F258SF03 - INT 21 - Novell NetWare - LOGIN AS VOLUME AUDITOR
21F258SF04 - INT 21 - Novell NetWare - CHANGE AUDITOR PASSWORD
21F258SF05 - INT 21 - Novell NetWare - CHECK AUDIT ACCESS
21F258SF06 - INT 21 - Novell NetWare - REMOVE AUDIT PROPERTY
21F258SF07 - INT 21 - Novell NetWare - DISABLE AUDITING ON VOLUME
21F258SF08 - INT 21 - Novell NetWare - ENABLE AUDITING ON VOLUME
21F258SF09 - INT 21 - Novell NetWare - IS USER AUDITED?
21F258SF0A - INT 21 - Novell NetWare - READ AUDITING BITMAP
21F258SF0B - INT 21 - Novell NetWare - READ AUDIT CONFIG HEADER
21F258SF0D - INT 21 - Novell NetWare - LOGOUT AS VOLUME AUDITOR
21F258SF0E - INT 21 - Novell NetWare - RESET AUDITING FILE
21F258SF0F - INT 21 - Novell NetWare - RESET AUDIT HISTORY FILE
21F258SF10 - INT 21 - Novell NetWare - WRITE AUDITING BITMAP
21F258SF11 - INT 21 - Novell NetWare - WRITE AUDIT CONFIG HEADER
21F258SF13 - INT 21 - Novell NetWare - GET AUDITING FLAGS
21F258SF14 - INT 21 - Novell NetWare - CLOSE OLD AUDITING FILE
21F258SF15 - INT 21 - Novell NetWare - DELETE OLD AUDITING FILE
21F258SF16 - INT 21 - Novell NetWare - CHECK AUDIT LEVEL TWO ACCESS
21F25ASF01 - INT 21 - Novell NetWare - GET DATA MIGRATION INFO
21F25ASF80 - INT 21 - Novell NetWare - MOVE FILE DATA TO DATA MIGRATION
21F25ASF81 - INT 21 - Novell NetWare - DATA MIGRATION FILE INFORMATION
21F25ASF82 - INT 21 - Novell NetWare - VOLUME DATA MIGRATION STATUS
21F25ASF83 - INT 21 - Novell NetWare - GET MIGRATION OR STATUS INFORMATION
21F25ASF84 - INT 21 - Novell NetWare - DATA MIGRATION SUPPORT MODULE INFORMATION
21F25ASF85 - INT 21 - Novell NetWare - MOVE FILE DATA FROM DATA MIGRATION
21F25ASF86 - INT 21 - Novell NetWare - GET OR SET DEFAULT SUPPORT MODULE
21F268SF01 - INT 21 - Novell NetWare v4+ - GET TREE NAME
21F268SF04 - INT 21 - Novell NetWare v4+ - GET BINDERY CONTEXT
21F268SF05 - INT 21 - Novell NetWare v4+ - MONITOR NDS CONNECTION
21F268SF16 - INT 21 - Novell NetWare v4+ - NDS LIST PARTITIONS
21F268SF35 - INT 21 - Novell NetWare v4+ - NDS GET SERVER NAME AND ADDRESS
21F268SF3D - INT 21 - Novell NetWare v4+ - NDS LOGOUT
21F268SFC8 - INT 21 - Novell NetWare v4+ - GET DS AUDITING STATISTICS
21F269 - INT 21 - Novell NetWare - LOG FILE
21F26A - INT 21 - Novell NetWare - LOCK FILE SET
21F26C - INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET
21F26E - INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET
21F26FSF00 - INT 21 - Novell NetWare - OPEN SEMAPHORE
21F26FSF01 - INT 21 - Novell NetWare - CLOSE SEMAPHORE
21F26FSF02 - INT 21 - Novell NetWare - WAIT ON SEMAPHORE
21F26FSF03 - INT 21 - Novell NetWare - SIGNAL SEMAPHORE
21F26FSF04 - INT 21 - Novell NetWare - EXAMINE SEMAPHORE
21F272 - INT 21 - Novell NetWare v4+ - GET FILE SERVER UTC TIME
21F27BSF01 - INT 21 - Novell NetWare v4+ - GET CACHE INFORMATION
21F27BSF02 - INT 21 - Novell NetWare v4+ - GET SERVER INFORMATION
21F27BSF04 - INT 21 - Novell NetWare v4+ - GET USER INFORMATION
21F27BSF06 - INT 21 - Novell NetWare v4+ - GET IPX/SPX Information
21F27BSF08 - INT 21 - Novell NetWare v4+ - GET CPU INFORMATION
21F27BSF09 - INT 21 - Novell NetWare v4+ - GET VOLUME SWITCH INFORMATION
21F27BSF0A - INT 21 - Novell NetWare v4+ - GET LOADED NLMs
21F27BSF0B - INT 21 - Novell NetWare v4+ - GET NLM INFORMATION
21F27BSF0D - INT 21 - Novell NetWare v4+ - GET OS VERSION INFORMATION
21F27BSF14 - INT 21 - Novell NetWare v4+ - GET ACTIVE LAN BOARD LIST
21F27BSF15 - INT 21 - Novell NetWare v4+ - GET LAN CONFIGURATION
21F27BSF16 - INT 21 - Novell NetWare v4+ - GET LAN COMMON COUNTERS
21F27BSF29 - INT 21 - Novell NetWare v4+ - GET PROTOCOL STACK BY BOARD
21F27BSF33 - INT 21 - Novell NetWare v4+ - GET ROUTER INFO
21F27BSF35 - INT 21 - Novell NetWare v4+ - GET KNOWN NETWORKS INFO
21F27BSF38 - INT 21 - Novell NetWare v4+ - GET KNOWN SERVERS INFO
21F27BSF3C - INT 21 - Novell NetWare v4+ - GET SERVER SET COMMANDS INFO
21F27BSF3D - INT 21 - Novell NetWare v4+ - GET SERVER SET CATEGORIES
21F2AA - INT 21 - VIRUS - "PcVrsDs" - INSTALLATION CHECK
21F3 - INT 21 - Novell NetWare - FILE SERVICES - FILE SERVER FILE COPY
21F3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
21F3 - INT 21 - VIRUS - "Carfield" - INSTALLATION CHECK
21F400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
21F5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
21F7 - INT 21 - VIRUS - "GP1" - INSTALLATION CHECK
21F8 - INT 21 - DOS v2.11-2.13 - SET OEM INT 21 HANDLER
21F8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
21F9 - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
21F9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
21F9 - INT 21 - VIRUS - "Satans-Bug" - INSTALLATION CHECK
21FA - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
21FA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
21FA - INT 21 - VIRUS - "Cinderella 2" - INSTALLATION CHECK
21FA--DX5945 - INT 21 U - PC Tools v7+ VDEFEND, VSAFE, VWATCH - API
21FAFF - INT 21 U - IBM PC-DOS - KEYBGK - SELECT KEYBOARD LAYOUT
21FB - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
21FB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
21FB - INT 21 - VIRUS - "Cinderella" - INSTALLATION CHECK
21FB0A - INT 21 - VIRUS - "dBASE" - INSTALLATION CHECK
21FBA0 - INT 21 - VIRUS - "Groove" - INSTALLATION CHECK
21FBFB - INT 21 - VIRUS - "Dir.1367" - INSTALLATION CHECK
21FC - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
21FC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
21FC - INT 21 - VIRUS - "Troi" - INSTALLATION CHECK
21FC03 - INT 21 - VIRUS - "Invisible" - INSTALLATION CHECK
21FD - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
21FD - INT 21 - VIRUS - "Border" - INSTALLATION CHECK
21FD12BX3457 - INT 21 - Gravis UltraSound - MegaEm/MEGA_EM - INSTALLATION CHECK
21FDAC - INT 21 - VIRUS - "Delwin" - INSTALLATION CHECK
21FE - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
21FE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
21FE - INT 21 - VIRUS - "483" - INSTALLATION CHECK
21FE01 - INT 21 - VIRUS - "Flip" - INSTALLATION CHECK
21FE02 - INT 21 - VIRUS - "2468"/"Tequila" - INSTALLATION CHECK
21FE03 - INT 21 - VIRUS - "2468"/"Tequila" - DISPLAY VIRUS MESSAGE
21FEAD - INT 21 - VIRUS - "Shifting Objective" - INSTALLATION CHECK
21FEDC - INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
21FEDC - INT 21 - VIRUS - "Black Monday" - INSTALLATION CHECK
21FEFE - INT 21 - VIRUS - "CIDER" - INSTALLATION CHECK
21FF - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
21FF - INT 21 - CED (Command EDitor) - INSTALLABLE COMMANDS
21FF - INT 21 - DJ GO32.EXE 80386+ DOS extender - DOS EXTENSIONS
21FF - INT 21 - DOSED.COM - INSTALLATION CHECK
21FF - INT 21 - VIRUS - "Sunday", "Tumen 0.5", "Hero" - INSTALLATION CHECK
21FF - INT 21 UP - Rational Systems DOS/4GW - API
21FF--DH00 - INT 21 UP - Rational Systems DOS/4GW - GET VERSION???
21FF--DH02 - INT 21 UP - Rational Systems DOS/4GW - SET ???
21FF--DH05 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH06 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH07 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH08 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH09 - INT 21 UP - Rational Systems DOS/4GW - GET ???
21FF--DH0A - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH0B - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH0C - INT 21 UP - Rational Systems DOS/4GW - GET/SET ???
21FF--DH0D - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH0E - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH0F - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH10 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH11 - INT 21 UP - Rational Systems DOS/4GW - NOP
21FF--DH12 - INT 21 UP - Rational Systems DOS/4GW - EXCHANGE ??? POINTERS
21FF--DH13 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH14 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF--DH15 - INT 21 UP - Rational Systems DOS/4GW - GET ??? FUNCTIONS
21FF--DH16 - INT 21 UP - Rational Systems DOS/4GW - GET ???
21FF--DH17 - INT 21 UP - Rational Systems DOS/4GW - ???
21FF00 - INT 21 - TopWare Network OS v5.10+ - GET SYSTEM INFORMATION
21FF00DX0078 - INT 21 - Rational Systems DOS/4G - INSTALLATION CHECK
21FF01 - INT 21 - VIRUS - "Drop" - INSTALLATION CHECK
21FF04 - INT 21 - TopWare Network OS v5.10+ - GET/SET DEFAULT FILE PROTECTION ATTRIBS
21FF0F - INT 21 - FLU_SHOT+ v1.83 - INSTALLATION CHECK
21FF10 - INT 21 - VIRUS - "Twins" - INSTALLATION CHECK
21FF80DHFF - INT 21 - TopWare Network OS v5.10+ - SEND MESSAGE
21FF82 - INT 21 - TopWare Network OS v5.10+ - GET STATION ADDRESS
21FF8C - INT 21 - TopWare Network OS v5.10+ - GET STATUS OF TopShow/Emulated FUNCTION
21FF8D - INT 21 - TopWare Network OS v5.10+ - CALL TopShow FUNCTION
21FF8E - INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
21FF91 - INT 21 - TopWare Network OS v5.10+ - GET FILE SERVER STATION NUMBER
21FF97 - INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM STATION NUMBER (server only)
21FF98 - INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM FILE NUMBER (server only)
21FF9A - INT 21 - TopWare Network OS v5.10+ - RECEIVE OF USER-DEFINED PACKETS
21FF9F - INT 21 - TopWare Network OS v5.10+ - ENABLE/DISABLE TopTerm SERVICE
21FFB0 - INT 21 - TopWare Network OS v5.10+ - GET SPOOLER PRINTING PRIORITY
21FFB1 - INT 21 - TopWare Network OS v5.10+ - SET SPOOLER PRINTING PRIORITY
21FFB3 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT START-OF-JOB FORMFEED STATUS
21FFB4 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT START-OF-JOB FORMFEED STATUS
21FFBB - INT 21 - TopWare Network OS v5.10+ - GET PRINTER SERVER STATION ADDRESS
21FFBC - INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
21FFBD - INT 21 - TopWare Network OS v5.10+ - GET CURRENT AUTOPRINT TIME
21FFBE - INT 21 - TopWare Network OS v5.10+ - SET AUTOPRINT TIME
21FFBF - INT 21 - TopWare Network OS v5.10+ - GET LOGON USER INFORMATION
21FFC0 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT END-OF-JOB FORMFEED STATUS
21FFC1 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT END-OF-JOB FORMFEED STATUS
21FFC2 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT COPIES OF SPOOLING FILE
21FFC3 - INT 21 - TopWare Network OS v5.10+ - GET SHARING STATUS OF PRINTER SERVER
21FFC4 - INT 21 - TopWare Network OS v5.10+ - GET/SET LPT PORT ON PRINT SERVER
21FFC6 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT FILE HEADER
21FFC7 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT COPIES
21FFC8 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT PRINT FILE HEADER STATUS
21FFC9 - INT 21 - TopWare Network OS v5.10+ - SET PRINTER SHARING
21FFCA - INT 21 - TopWare Network OS v5.10+ - MOVE FILE FROM ONE PRINT SERVER TO ANOTHER
21FFCB - INT 21 - TopWare Network OS v5.10+ - DELETE FILE FROM SPOOLING QUEUE
21FFCC - INT 21 - TopWare Network OS v5.10+ - GET PRINT SERVER'S SPOOLING QUEUE STATUS
21FFCD - INT 21 - TopWare Network OS v5.10+ - GET STATUS OF ALL PRINT SERVERS
21FFCF - INT 21 - TopWare Network OS v5.10+ - CALL TopLook FUNCTION
21FFD6 - INT 21 - TopWare Network OS v5.10+ - GET KEYCARD SERIAL NUMBER AND MAX USERS
21FFD7 - INT 21 - TopWare Network OS v5.10+ - GET NETWORK PROTECTION ATTRIBUTES STATUS
21FFE3DL00 - INT 21 - TopWare Network OS v5.10+ - INITIATE ACCESS TO SPECIFIC PACKET TYPE
21FFE3DL01 - INT 21 - TopWare Network OS v5.10+ - END ACCESS TO SPECIFIC PACKET TYPE
21FFE3DL02 - INT 21 - TopWare Network OS v5.10+ - SEND PACKET
21FFE3DL03 - INT 21 - TopWare Network OS v5.10+ - GET LOCAL NETWORK INTERFACE ADDRESS
21FFFE - INT 21 - VIRUS - "08/15"/"Many Fingers" - INSTALLATION CHECK
21FFFEBX0000 - INT 21 - VIRUS - "Anti-Thunderbyte/LEMMING" - INSTALLATION CHECK
21FFFF - INT 21 - VIRUS - "Ontario", "Year 1992"/"B1M92" - INSTALLATION CHECK
21FFFFCX0000 - INT 21 - VIRUS - "Revenge" - INSTALLATION CHECK


21 - INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
	???
Return: AX = first segment available for control program use
SeeAlso: INT 20"COMTROL",INT 22"COMTROL"

Top
2100 - INT 21 - DOS 1+ - TERMINATE PROGRAM
INT 21 - DOS 1+ - TERMINATE PROGRAM
	AH = 00h
	CS = PSP segment
Notes:	Microsoft recommends using INT 21/AH=4Ch for DOS 2+
	this function sets the program's return code (ERRORLEVEL) to 00h
	execution continues at the address stored in INT 22 after DOS performs
	  whatever cleanup it needs to do (restoring the INT 22,INT 23,INT 24
	  vectors from the PSP assumed to be located at offset 0000h in the
	  segment indicated by the stack copy of CS, etc.)
	if the PSP is its own parent, the process's memory is not freed; if
	  INT 22 additionally points into the terminating program, the
	  process is effectively NOT terminated
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22

Top
2101 - INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
	AH = 01h
Return: AL = character read
Notes:	^C/^Break are checked, and INT 23 executed if read
	^P toggles the DOS-internal echo-to-printer flag
	^Z is not interpreted, thus not causing an EOF if input is redirected
	character is echoed to standard output
	standard input is always the keyboard and standard output the screen
	  under DOS 1.x, but they may be redirected under DOS 2+
SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah

Top
21010F - INT 21 - VIRUS - "Susan" - INSTALLATION CHECK
INT 21 - VIRUS - "Susan" - INSTALLATION CHECK
	AX = 010Fh
Return: AX = 7553h ("Su") if resident
SeeAlso: INT 16/AH=DDh"VIRUS",INT 21/AX=0B56h

Top
2102 - INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
	AH = 02h
	DL = character to write
Return: AL = last character output (despite the official docs which state
		nothing is returned) (at least DOS 2.1-7.0)
Notes:	^C/^Break are checked, and INT 23 executed if pressed
	standard output is always the screen under DOS 1.x, but may be
	  redirected under DOS 2+
	the last character output will be the character in DL unless DL=09h
	  on entry, in which case AL=20h as tabs are expanded to blanks
	if standard output is redirected to a file, no error checks (write-
	  protected, full media, etc.) are performed
SeeAlso: AH=06h,AH=09h

Top
2103 - INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
	AH = 03h
Return: AL = character read
Notes:	keyboard checked for ^C/^Break, and INT 23 executed if detected
	STDAUX is usually the first serial port
SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h

Top
2104 - INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
	AH = 04h
	DL = character to write
Notes:	keyboard checked for ^C/^Break, and INT 23 executed if detected
	STDAUX is usually the first serial port
	if STDAUX is busy, this function will wait until it becomes free
SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h

Top
2105 - INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
	AH = 05h
	DL = character to print
Notes:	keyboard checked for ^C/^Break, and INT 23 executed if detected
	STDPRN is usually the first parallel port, but may be redirected under
	  DOS 2+
	if the printer is busy, this function will wait
SeeAlso: INT 17/AH=00h

Top
2106 - INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
	AH = 06h
	DL = character (except FFh)
Return: AL = character output (despite official docs which state nothing is
		returned) (at least DOS 2.1-7.0)
Notes:	does not check ^C/^Break
	writes to standard output, which is always the screen under DOS 1.x,
	  but may be redirected under DOS 2+
SeeAlso: AH=02h,AH=09h

Top
2106--DLFF - INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
	AH = 06h
	DL = FFh
Return: ZF set if no character available
	    AL = 00h
	ZF clear if character available
	    AL = character read
Notes:	^C/^Break are NOT checked
	if the returned character is 00h, the user pressed a key with an
	  extended keycode, which will be returned by the next call of this
	  function
	this function reads from standard input, which is always the keyboard
	  under DOS 1.x, but may be redirected under DOS 2+
	although the return of AL=00h when no characters are available is not
	  documented, some programs rely on this behavior
SeeAlso: AH=0Bh

Top
2107 - INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
	AH = 07h
Return: AL = character read from standard input
Notes:	does not check ^C/^Break
	standard input is always the keyboard under DOS 1.x, but may be
	  redirected under DOS 2+
	if the interim console flag is set (see AX=6301h), partially-formed
	  double-byte characters may be returned
SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah

Top
2108 - INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
	AH = 08h
Return: AL = character read from standard input
Notes:	^C/^Break are checked, and INT 23 executed if detected
	standard input is always the keyboard under DOS 1.x, but may be
	  redirected under DOS 2+
	if the interim console flag is set (see AX=6301h), partially-formed
	  double-byte characters may be returned
SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h"DOS 3.2+"

Top
2109 - INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
	AH = 09h
	DS:DX -> '$'-terminated string
Return: AL = 24h (the '$' terminating the string, despite official docs which
		state that nothing is returned) (at least DOS 2.1-7.0 and
		NWDOS)
Notes:	^C/^Break are checked, and INT 23 is called if either pressed
	standard output is always the screen under DOS 1.x, but may be
	  redirected under DOS 2+
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=02h,AH=06h"OUTPUT"

Top
210A - INT 21 - DOS 1+ - BUFFERED INPUT
INT 21 - DOS 1+ - BUFFERED INPUT
	AH = 0Ah
	DS:DX -> buffer (see #01344)
Return: buffer filled with user input
Notes:	^C/^Break are checked, and INT 23 is called if either detected
	reads from standard input, which may be redirected under DOS 2+
	if the maximum buffer size (see #01344) is set to 00h, this call returns
	  immediately without reading any input
SeeAlso: AH=0Ch,INT 2F/AX=4810h

Format of DOS input buffer:
Offset	Size	Description	(Table 01344)
 00h	BYTE	maximum characters buffer can hold
 01h	BYTE	(call) number of chars from last input which may be recalled
		(ret) number of characters actually read, excluding CR
 02h  N BYTEs	actual characters read, including the final carriage return

Top
210A00 - INT 21 - WCED v1.6+ - INSTALLATION CHECK
INT 21 - WCED v1.6+ - INSTALLATION CHECK
	AX = 0A00h
	DS:DX -> 6-byte buffer whose first two bytes must be 00h
Return: buffer offset 02h-05h filled with "Wced" if installed
Program: WCED is a free command-line editor and history utility by Stuart
	  Russell
SeeAlso: AH=FFh"CED"

Top
210B - INT 21 - DOS 1+ - GET STDIN STATUS
INT 21 - DOS 1+ - GET STDIN STATUS
	AH = 0Bh
Return: AL = status
	    00h if no character available
	    FFh if character is available
Notes:	^C/^Break are checked, and INT 23 is called if either pressed
	standard input is always the keyboard under DOS 1.x, but may be
	  redirected under DOS 2+
	if the interim console flag is set (see AX=6301h), this function
	  returns AL=FFh if a partially-formed double-byte character is
	  available
SeeAlso: AH=06h"INPUT",AX=4406h

Top
210B56 - INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
	AX = 0B56h
Return: AX = 4952h if resident
SeeAlso: AX=0D20h,INT 12/AX=4350h/BX=4920h,INT 13/AH=F2h,INT 21/AX=010Fh

Top
210C - INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
	AH = 0Ch
	AL = STDIN input function to execute after flushing buffer
	other registers as appropriate for the input function
Return: as appropriate for the specified input function
Note:	if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
	  no input is attempted
SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah

Top
210D - INT 21 - DOS 1+ - DISK RESET
INT 21 - DOS 1+ - DISK RESET
	AH = 0Dh
Return: (DOS 6 only) CF clear (earlier versions preserve CF)
Notes:	This function writes all modified disk buffers to disk, but does not
	  update the directory information (that is only done when files are
	  closed or a SYNC call is issued)
SeeAlso: AX=5D01h,AX=710Dh,INT 13/AH=00h,INT 2F/AX=1120h

Top
210D20 - INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
	AX = 0D20h
Return: AX = 1971h if resident
SeeAlso: AX=0B56h,AX=1812h,AX=2C2Ch,AX=710Dh,AH=30h/DX=ABCDh

Top
210E - INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
	AH = 0Eh
	DL = new default drive (00h = A:, 01h = B:, etc)
Return: AL = number of potentially valid drive letters
Notes:	under Novell NetWare, the return value is always 32, the number of
	  drives that NetWare supports
	under DOS 3.0+, the return value is the greatest of 5, the value of
	  LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
	on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
	  may be accessed as either A: or B:
	otherwise, the return value is the highest drive actually present
	DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
	  and 3+ a maximum of 26 drives
	under Novell DOS 7, this function returns the correct LASTDRIVE value
	  even when the undocumented LASTDRIVE=27..32 directive was used in
	  CONFIG.SYS
	"parse FCB" (see AH=29h) can be used to determine whether a drive
	  letter is valid
SeeAlso: AH=19h,AH=3Bh,AH=DBh

Top
210E--DLAD - INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
	AH = 0Eh
	DL = ADh
Return: AL = BAh if installed
Program: SDRes is the resident portion of the Search&Destroy antiviral by
	  Fifth Generation Systems, as bundled with Novell DOS 7
Note:	SDRes will terminate programs which test for the presence of viruses
	  using interrupt-based installation calls, saying that the program
	  may be infected
SeeAlso: AH=0Eh/DL=AEh,AH=0Eh/DL=AFh,AH=4Ah/BX=00B6h,INT 13/AX=A759h

Top
210E--DLAE - INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
	AH = 0Eh
	DL = AEh
SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AFh,INT 13/AX=A759h

Top
210E--DLAF - INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
	AH = 0Eh
	DL = AFh
SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AEh,INT 13/AX=A759h

Top
210F - INT 21 - DOS 1+ - OPEN FILE USING FCB
INT 21 - DOS 1+ - OPEN FILE USING FCB
	AH = 0Fh
	DS:DX -> unopened File Control Block (see #01345,#01346)
Return: AL = status
	    00h successful
	    FFh file not found or access denied
Notes:	(DOS 3.1+) file opened for read/write in compatibility mode
	an unopened FCB has the drive, filename, and extension fields filled
	  in and all other bytes cleared
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
	DR DOS checks password attached with AX=4303h
	(FAT32 drive) this function will only succeed for creating a volume
	  label; FAT32 does not support FCBs for file I/O
BUG:	APPEND for DOS 3.3+ corrupts DX if the file is not found
SeeAlso: AH=10h,AH=16h,AH=3Dh,AX=4303h

Format of File Control Block:
Offset	Size	Description	(Table 01345)
 00h	BYTE	drive number (0 = default, 1 = A, etc)
		FFh is not allowed (signals extended FCB, see #01346)
 01h  8 BYTEs	blank-padded file name
 09h  3 BYTEs	blank-padded file extension
 0Ch	WORD	current block number
 0Eh	WORD	logical record size
 10h	DWORD	file size
 14h	WORD	date of last write (see #01666 at AX=5700h)
 16h	WORD	time of last write (see #01665 at AX=5700h) (DOS 1.1+)
 18h  8 BYTEs	reserved (see #01347,#01348,#01349,#01350,#01351)
 20h	BYTE	record within current block
 21h	DWORD	random access record number (if record size is > 64 bytes, high
		  byte is omitted)
SeeAlso: #01346

Format of Extended File Control Block (XFCB):
Offset	Size	Description	(Table 01346)
 00h	BYTE	FFh signature for extended FCB
 01h  5 BYTEs	reserved
 06h	BYTE	file attribute if extended FCB
 07h 36 BYTEs	standard FCB (all offsets are shifted by seven bytes)
SeeAlso: #01246

Format of FCB reserved field for DOS 1.0:
Offset	Size	Description	(Table 01347)
 16h	WORD	location in directory (if high byte = FFh, low byte is device
		  ID)
 18h	WORD	number of first cluster in file
 1Ah	WORD	current absolute cluster number on disk
 1Ch	WORD	current relative cluster number within file
		(0 = first cluster of file, 1 = second cluster, etc.)
 1Eh	BYTE	dirty flag (00h = not dirty)
 1Fh	BYTE	unused

Format of FCB reserved field for DOS 1.10-1.25:
Offset	Size	Description	(Table 01348)
 18h	BYTE	bit 7: set if logical device
		bit 6: not dirty
		bits 5-0: disk number or logical device ID
 19h	WORD	starting cluster number on disk
 1Bh	WORD	current absolute cluster number on disk
 1Dh	WORD	current relative cluster number within file
 1Fh	BYTE	unused

Format of FCB reserved field for DOS 2.x:
Offset	Size	Description	(Table 01349)
 18h	BYTE	bit 7: set if logical device
		bit 6: set if open???
		bits 5-0: ???
 19h	WORD	starting cluster number on disk
 1Bh	WORD	???
 1Dh	BYTE	???
 1Eh	BYTE	???
 1Fh	BYTE	???

Format of FCB reserved field for DOS 3.x:
Offset	Size	Description	(Table 01350)
 18h	BYTE	number of system file table entry for file
 19h	BYTE	attributes
		bits 7,6: 00 = SHARE.EXE not loaded, disk file
			  01 = SHARE.EXE not loaded, character device
			  10 = SHARE.EXE loaded, remote file
			  11 = SHARE.EXE loaded, local file or device
		bits 5-0: low six bits of device attribute word
---SHARE.EXE loaded, local file---
 1Ah	WORD	starting cluster of file on disk
 1Ch	WORD	(DOS 3.x) offset within SHARE of sharing record
		  (see #01637 at AH=52h)
 1Eh	BYTE	file attribute
 1Fh	BYTE	???
---SHARE.EXE loaded, remote file---
 1Ah	WORD	number of sector containing directory entry (see #01352)
 1Ch	WORD	relative cluster within file of last cluster accessed
 1Eh	BYTE	absolute cluster number of last cluster accessed
 1Fh	BYTE	???
---SHARE.EXE not loaded---
 1Ah	BYTE	(low byte of device attribute word AND 0Ch) OR open mode
 1Bh	WORD	starting cluster of file
 1Dh	WORD	number of sector containing directory entry (see #01352)
 1Fh	BYTE	number of directory entry within sector
Note:	if FCB opened on character device, DWORD at 1Ah is set to the address
	  of the device driver header, then the BYTE at 1Ah is overwritten.
SeeAlso: #01646

Format of FCB reserved field for DOS 5.0:
Offset	Size	Description	(Table 01351)
 18h	BYTE	number of system file table entry for file
 19h	BYTE	attributes
		bits 7,6: 00 = SHARE.EXE not loaded, disk file
			  01 = SHARE.EXE not loaded, character device
			  10 = SHARE.EXE loaded, remote file
			  11 = SHARE.EXE loaded, local file or device
		bits 5-0: low six bits of device attribute word
---SHARE.EXE loaded, local file---
 1Ah	WORD	starting cluster of file on disk
 1Ch	WORD	unique sequence number of sharing record
 1Eh	BYTE	file attributes
 1Fh	BYTE	unused???
---SHARE.EXE loaded, remote file---
 1Ah	WORD	network handle
 1Ch	DWORD	network ID
---SHARE not loaded, local device---
 1Ah	DWORD	pointer to device driver header (see #01646)
 1Eh  2 BYTEs	unused???
---SHARE not loaded, local file---
 1Ah	BYTE	extra info
		bit 7: read-only attribute from SFT
		bit 6: archive attribute from SFT
		bits 5-0: high bits of sector number
 1Bh	WORD	starting cluster of file
 1Dh	WORD	low word of sector number containing directory entry
		(see #01352)
 1Fh	BYTE	number of directory entry within sector

Top
2110 - INT 21 - DOS 1+ - CLOSE FILE USING FCB
INT 21 - DOS 1+ - CLOSE FILE USING FCB
	AH = 10h
	DS:DX -> File Control Block (see #01345)
Return: AL = status
	    00h successful
	    FFh failed
Notes:	a successful close forces all disk buffers used by the file to be
	  written and the directory entry to be updated
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=16h,AH=3Eh

Top
2111 - INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
	AH = 11h
	DS:DX -> unopened FCB (see #01345), may contain '?' wildcards
Return: AL = status
	    00h successful
		[DTA] unopened FCB for first matching file
	    FFh no matching filename, or bad FCB
Notes:	the type of the returned FCB depends on whether the input FCB was a
	  normal or an extended FCB
	the data returned in the DTA (disk transfer area) is actually the
	  drive number (or extended FCB header and drive number) followed by
	  the file's directory entry (see #01352); this format happens to be
	  compatible with an unopened FCB
	for extended FCBs with search attribute 08h, the volume label (if any)
	  will be returned even if the current directory is not the root dir.
	DOS 3.0+ also allows the '*' wildcard
	the search FCB at DS:DX must not be modified if AH=12h will be used to
	  continue searching; DOS 3.3 has set the following parts of the FCB:
		 0Ch	BYTE	???
		 0Dh	WORD	directory entry number of matching file
		 0Fh	WORD	cluster number of current directory
		 11h  4 BYTEs	???
		 15h	BYTE	drive number (1=A:)
	this function is used by many copy protection schemes to obtain the
	  starting cluster of a file
BUG:	under Windows95, if a .EXE program ("MZ" header) rather than a true
	  .COM calls this function from a DOS box, the ten bytes of the
	  directory entry from 0Ch to 15h may be filled with zeros rather than
	  the additional file times
SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh

Format of DOS directory entry:
Offset	Size	Description	(Table 01352)
 00h  8 BYTEs	blank-padded filename
		first character is set to E5h for deleted files (05h for
		  pending delete files under Novell DOS / OpenDOS)
 08h  3 BYTEs	blank-padded file extension
 0Bh	BYTE	attributes
 0Ch 10 BYTEs	(MS-DOS 1.0-6.22) reserved
		(DR DOS) used to store file password / owner (see #01354)
			(see also INT 21/AX=4302h)
		(Novell DOS 7) DELWATCH data (see #01354)
		(MS-DOS 7/Windows95) additional file times (see #01353)
 16h	WORD	time of creation or last update (see #01665 at AX=5700h)
 18h	WORD	date of creation or last update (see #01666 at AX=5700h)
 1Ah	WORD	starting cluster number (see also AX=440Dh/CX=0871h)
		(may not be set in INT 21/AH=11h return data for FAT32 drives)
 1Ch	DWORD	file size
SeeAlso: #01355,#02628,#02629

Format of MS-DOS 7/Windows95 additional file times:
Offset	Size	Description	(Table 01353)
 00h	BYTE	reserved
 01h	BYTE	10-millisecond units past creation time below
 02h	WORD	file creation time
 04h	WORD	file creation date
 06h	WORD	last-access date
 08h	WORD	(FAT32) high word of starting cluster number
Note:	this data is stored beginning at offset 0Ch in a standard directory
	  entry
SeeAlso: #01352

Format of DR DOS 6/Novell DOS 7 additional file information:
Offset	Size	Description	(Table 01354)
 0Ch	BYTE	reserved (00h)
		(DOSPLUS v1.2) user-defined attributes for CP/M compatibility
		  (bit 7 = F1,...,bit 4 = F4, bits 3-0 reserved (0))
 0Dh	BYTE	first character of original filename for deleted file
 0Eh	WORD	encrypted file/directory password
 10h	WORD	reserved (00h)
		(Novell DOS 7 DELWATCH) original file time
		    cleared when file is undeleted or purged
 12h	WORD	(DR DOS 6) file owner ID
		(Novell DOS 7 DELWATCH) original file date
		    cleared when file is undeleted or purged
 14h	WORD	single/multiuser file/directory access rights (see AX=4302h)
---deleted files---
 16h	WORD	(Novell DOS 7 DELWATCH) time of deletion
 18h	WORD	(Novell DOS 7 DELWATCH) date of deletion
Note:	offsets are within the full directory entry
SeeAlso: #01352

Format of MS-DOS 7/Windows95 long-filename directory entry:
Offset	Size	Description	(Table 01355)
 00h	BYTE	LFN record sequence and flags
		bits 5-0: sequence number
		bit 6: set if last long-filename record for file
		bit 7: set if file deleted
 01h 10 BYTEs	long filename, first part
 0Bh	BYTE	0Fh (otherwise impossible file attribute, used as signature)
 0Ch	BYTE	reserved??? (00h)
 0Dh	BYTE	checksum for short filename
 0Eh 12 BYTEs	long filename, second part
 1Ah	WORD	first cluster number (always 0000h for LFN records)
 1Ch  4 BYTEs	long filename, third part
Notes:	long-filename entries are always stored in the directory just prior
	  to the short-name entry for a file
	multiple LFN records are used if the long filename does not fit into
	  a single record
	the short-filename checksum byte is computed by adding up the
	  eleven bytes of the short filename, rotating the intermediate
	  sum right one bit before adding the next character
	the long filename is encoded as 16-bit Unicode characters; for most
	  filenames, this appears in the directory as the ASCII character
	  followed by 00h
SeeAlso: #01352,INT 21/AX=5704h,INT 21/AH=71h

Top
2112 - INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
	AH = 12h
	DS:DX -> unopened FCB (see #01345)
Return: AL = status
	    00h successful
		Disk Transfer Area filled with unopened FCB
	    FFh no more matching filenames
Note:	(see AH=11h)
	assumes that successful FindFirst executed on search FCB before call
SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch

Top
2113 - INT 21 - DOS 1+ - DELETE FILE USING FCB
INT 21 - DOS 1+ - DELETE FILE USING FCB
	AH = 13h
	DS:DX -> unopened FCB (see #01345), filename filled with template for
		deletion ('?' wildcards allowed)
Return: AL = status
	    00h one or more files successfully deleted
	    FFh no matching files or all were read-only or locked
Notes:	DOS 1.25+ deletes everything in the current directory (including
	  subdirectories) and sets the first byte of the name to 00h (entry
	  never used) instead of E5h if called on an extended FCB with
	  filename '???????????' and bits 0-4 of the attribute set (bits 1 and
	  2 for DOS 1.x).  This may have originally been an optimization to
	  minimize directory searching after a mass deletion (DOS 1.25+ stop
	  the directory search upon encountering a never-used entry), but can
	  corrupt the filesystem under DOS 2+ because subdirectories are
	  removed without deleting the files they contain.
	currently-open files should not be deleted
	MS-DOS allows deletion of read-only files with an extended FCB, whereas
	  Novell NetWare, DR DOS 6, and Novell DOS 7/OpenDOS 7.01 do not
	this function generates a trap "D" under OS/2 v4.x (Warp4) when called
	  on an HPFS partition with a wildcard in the filename; it operates
	  correctly on FAT partitions and when called without wildcards
SeeAlso: AH=41h,INT 2F/AX=1113h

Top
2114 - INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
	AH = 14h
	DS:DX -> opened FCB (see #01345)
Return: AL = status
	    00h successful
	    01h end of file (no data)
	    02h segment wrap in DTA
	    03h end of file, partial record read
	Disk Tranfer Area filled with record read from file
Notes:	reads a record of the size specified in the FCB beginning at the
	  current file position, then updates the current block and current
	  record fields in the FCB
	if a partial record was read, it is zero-padded to the full size
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh"DOS",INT 2F/AX=1108h

Top
2115 - INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
	AH = 15h
	DS:DX -> opened FCB (see #01345)
	Disk Tranfer Area contains record to be written
Return: AL = status
	    00h successful
	    01h disk full
	    02h segment wrap in DTA
Notes:	writes a record of the size specified in the FCB beginning at the
	  current file position, then updates the current block and current
	  record fields in the FCB
	if less than a full sector is written, the data is placed in a DOS
	  buffer to be written out at a later time
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h

Top
2116 - INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
	AH = 16h
	DS:DX -> unopened FCB (see #01345), wildcards not allowed
Return: AL = status
	    00h successful
	    FFh directory full or file exists and is read-only or locked
Notes:	if file already exists, it is truncated to zero length
	if an extended FCB is used, the file is given the attribute in the
	  FCB; this is how to create a volume label in the disk's root dir
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
	(FAT32 drive) this function will only succeed for creating a volume
	  label; FAT32 does not support FCBs for file I/O
SeeAlso: AH=0Fh,AH=10h,AH=3Ch

Top
2117 - INT 21 - DOS 1+ - RENAME FILE USING FCB
INT 21 - DOS 1+ - RENAME FILE USING FCB
	AH = 17h
	DS:DX -> modified FCB (see also #01345)
		the old filename ('?' wildcards OK) is in the standard location
		while the new filename ('?' wildcards OK, no drive) is stored
		in the 11 bytes beginning at offset 11h
Return: AL = status
	    00h successfully renamed
	    FFh no matching files,file is read-only, or new name already exists
Notes:	subdirectories may be renamed using an extended FCB with the
	  appropriate attribute, as may volume labels
	DR DOS checks password attached with AX=4303h before permitting rename
SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h

Top
2118 - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
	AH = 18h
Return: AL = 00h
Note:	corresponds to the CP/M BDOS function "get bit map of logged drives",
	  which is meaningless under MS-DOS
SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h,INT 60/DI=0513h

Top
2118 - INT 21 - U - PTS-DOS 6.51 & S/DOS 1.0 - EXTENDED RENAME FILE USING FCB
INT 21 - U - PTS-DOS 6.51 & S/DOS 1.0 - EXTENDED RENAME FILE USING FCB
	AH = 18h
	DS:DX -> modified FCB (see also #01345)
Return: AL = status
	     00h successfully renamed
	     FFh no matching files,file is read-only, or new name already exists
Notes:	This function is provided by Paragon Technology Systems S/DOS 1.0
	  (and most probably also PTS-DOS 6.51, maybe even earlier). It uses
	  the same code as for function INT 21/AH=17h, but additionally sets
	  an internal "SERVER" flag on entry. Apparently this results in
	  different usage of attributes and wildcards.
	It is currently unknown if this function is also supported by
	  PhysTechSoft's PTS-DOS 6.60, 6.70, or 2000.
SeeAlso: AH=17h,AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h,INT21/AH=5Dh

Top
211812 - INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK
INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK
	AX = 1812h
Return: AL = 00h if resident
	DX = 4310h if resident
SeeAlso: INT 21/AX=0B56h"VIRUS",INT 21/AX=187Fh,INT 21/AX=2C2Ch"VIRUS"

Top
21187FBX4453 - INT 21 - VIRUS - "DS-3783" -INSTALLATION CHECK
INT 21 - VIRUS - "DS-3783" -INSTALLATION CHECK
	AX = 187Fh
	BX = 4453h
Return: BX = 87A1h if resident
SeeAlso: AX=1812h"VIRUS",AX=18FFh"VIRUS"

Top
2118FF - INT 21 - VIRUS - "Pathogen:SMEG" - INSTALLATION CHECK
INT 21 - VIRUS - "Pathogen:SMEG" - INSTALLATION CHECK
	AX = 18FFh
Return: AX = E701h if resident
SeeAlso: INT 21/AX=1812h"VIRUS",INT 21/AX=2080h"VIRUS"

Top
2119 - INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
	AH = 19h
Return: AL = drive (00h = A:, 01h = B:, etc)
Note:	Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
	  from a particular location every time it starts a command to
	  determine when to issue an automatic EOJ
SeeAlso: AH=0Eh,AH=47h,AH=BBh

Top
211A - INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
	AH = 1Ah
	DS:DX -> Disk Transfer Area (DTA)
Notes:	the DTA is set to PSP:0080h when a program is started
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh

Top
211B - INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
	AH = 1Bh
Return: AL = sectors per cluster (allocation unit)
	CX = bytes per sector
	DX = total number of clusters
	DS:BX -> media ID byte (see #01356)
Notes:	under DOS 1.x, DS:BX points at an actual copy of the FAT; later
	  versions return a pointer to a copy of the FAT's ID byte
	this function may not be properly supported on CD-ROMs and other
	  installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
	  instead)
BUG:	DOS 7.10 (Win95B/Win98) reportedly returns incorrect values in AL and
	  DX for FAT12/FAT16 drives, even though it manages correct results
	  for FAT32 drives (DOS windows are not affected, only real-mode
	  DOS)
SeeAlso: AH=1Ch,AH=36h

(Table 01356)
Values for media ID byte:
 FFh	floppy, double-sided, 8 sectors per track (320K)
 FEh	floppy, single-sided, 8 sectors per track (160K)
 FDh	floppy, double-sided, 9 sectors per track (360K)
 FCh	floppy, single-sided, 9 sectors per track (180K)
 FAh	HP 200LX D: ROM disk, 16 sectors per track (995K)
	HP 200LX E: (Stacker host drive ???)
 F9h	floppy, double-sided, 15 sectors per track (1.2M)
	floppy, double-sided, 9 sectors per track (720K,3.5")
 F8h	hard disk
 F0h	other media
	(e.g. floppy, double-sized, 18 sectors per track -- 1.44M,3.5")

Top
211C - INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
	AH = 1Ch
	DL = drive (00h = default, 01h = A:, etc)
Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
	CX = bytes per sector
	DX = total number of clusters
	DS:BX -> media ID byte (see #01356)
Notes:	under DOS 1.x, DS:BX points at an actual copy of the FAT; later
	  versions return a pointer to a copy of the FAT's ID byte
	on a DBLSPACE drive, the total number of clusters is based on the
	  estimated compression ratio
	this function may not be properly supported on CD-ROMs and other
	  installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
	  instead)
BUG:	DOS 7.10 (Win95B/Win98) reportedly returns incorrect values in AL and
	  DX for FAT12/FAT16 drives, even though it manages correct results
	  for FAT32 drives (DOS windows are not affected, only real-mode
	  DOS)
SeeAlso: AH=1Bh,AH=36h

Top
211D - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
	AH = 1Dh
Return: AL = 00h
Note:	corresponds to the CP/M BDOS function "get bit map of read-only
	  drives", which is meaningless under MS-DOS
SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h

Top
211E - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
	AH = 1Eh
Return: AL = 00h
Note:	corresponds to the CP/M BDOS function "set file attributes" which was
	 meaningless under MS-DOS 1.x
SeeAlso: AH=18h,AH=1Dh,AH=20h

Top
211F - INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
	AH = 1Fh
Return: AL = status
	    00h successful
		DS:BX -> Drive Parameter Block (DPB) (see #01357 for DOS 1.x,
			AH=32h for DOS 2+)
	    FFh invalid drive
Note:	this call was undocumented prior to the release of DOS 5.0; however,
	  only the DOS 4.0+ version of the DPB has been documented
SeeAlso: AH=32h,AX=7302h

Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
Offset	Size	Description	(Table 01357)
 00h	BYTE	sequential device ID
 01h	BYTE	logical drive number (0=A:)
 02h	WORD	bytes per sector
 04h	BYTE	highest sector number within a cluster
 05h	BYTE	shift count to convert clusters into sectors
 06h	WORD	starting sector number of first FAT
 08h	BYTE	number of copies of FAT
 09h	WORD	number of directory entries
 0Bh	WORD	number of first data sector
 0Dh	WORD	highest cluster number (number of data clusters + 1)
 0Fh	BYTE	sectors per FAT
 10h	WORD	starting sector of directory
 12h	WORD	address of allocation table
Note:	the DOS 1.0 table is the same except that the first and last fields
	  are missing; see INT 21/AH=32h for the DOS 2+ version
SeeAlso: #01395,#04039

Top
2120 - INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
	AH = 20h
Return: AL = 00h
Note:	corresponds to the CP/M BDOS function "get/set default user
	  (sublibrary) number", which is meaningless under MS-DOS
SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h

Top
2120 - INT 21 - S/DOS 1.0+ & PTS-DOS 6.51+ - GET OEM REVISION
INT 21 - S/DOS 1.0+ & PTS-DOS 6.51+ - GET OEM REVISION
	AH = 20h
	AL = which OEM code to retrieve
	    00h get PTS OEM code
		Return: CF cleared
			AL = OEM code (currently always 00h)
	    01h get PTS OEM revision code
		Return: CF cleared
			AL = revision code (default is 00h, but may vary)
Desc:	S/DOS is a reduced and modified PTS-DOS 6.51 release with source code
	  on CD
Note:	This function is provided by S/DOS 1.0 (and is most probably also
	  supported with PTS-DOS 6.51+, maybe even earlier).  It clears the
	  CF flag for all other AL arguments, too. However, AL = 00h and 01h
	  are handled separately. The revision code can be individually defined
	  in the MAKEFILE at compilation time.
	The PTS OEM code does not correlate with the DOS OEM code returned
	  by INT 21/AH=30h, likewise the PTS OEM revision does not correlate
	  with the DOS revision returned by INT 21/AX=3306h.
SeeAlso: INT 21/AH=30h,INT 21/AX=3306h

Top
212080 - INT 21 - VIRUS - "New-Year" - INSTALLATION CHECK
INT 21 - VIRUS - "New-Year" - INSTALLATION CHECK
	AX = 2080h
Return: AH = 00h if resident (normal DOS return would be AX = 2000h)
SeeAlso: INT 21/AX=18FFh"VIRUS",INT 21/AX=2C2Ch"VIRUS"

Top
2121 - INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
	AH = 21h
	DS:DX -> opened FCB (see #01345)
Return: AL = status
	    00h successful
	    01h end of file, no data read
	    02h segment wrap in DTA, no data read
	    03h end of file, partial record read
	Disk Tranfer Area filled with record read from file
Notes:	the record is read from the current file position as specified by the
	  random record and record size fields of the FCB
	the file position is not updated after reading the record
	if a partial record is read, it is zero-padded to the full size
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh"DOS"

Top
2122 - INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
	AH = 22h
	DS:DX -> opened FCB (see #01345)
	Disk Transfer Area contains record to be written
Return: AL = status
	    00h successful
	    01h disk full
	    02h segment wrap in DTA
Notes:	the record is written to the current file position as specified by the
	  random record and record size fields of the FCB
	the file position is not updated after writing the record
	if the record is located beyond the end of the file, the file is
	  extended but the intervening data remains uninitialized
	if the record only partially fills a disk sector, it is copied to a
	  DOS disk buffer to be written out to disk at a later time
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h

Top
2123 - INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
	AH = 23h
	DS:DX -> unopened FCB (see #01345), wildcards not allowed
Return: AL = status
	    00h successful (matching file found)
		FCB random record field filled with size in records, rounded up
		to next full record
	    FFh failed (no matching file found)
Notes:	not supported by MS Windows 3.0 DOSX.EXE DOS extender
	MS-DOS returns nonsense if the FCB record number field is set to a very
	  large positive number, and status FFh if negative; DR DOS returns the
	  correct file size in both cases
BUG:	APPEND for DOS 3.3+ corrupts DX if the file is not found
SeeAlso: AH=42h

Top
2124 - INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
	AH = 24h
	DS:DX -> opened FCB (see #01345)
Notes:	computes the random record number corresponding to the current record
	  number and record size, then stores the result in the FCB
	normally used when switching from sequential to random access
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=21h,AH=27h,AH=42h

Top
2125 - INT 21 - DOS 1+ - SET INTERRUPT VECTOR
INT 21 - DOS 1+ - SET INTERRUPT VECTOR
	AH = 25h
	AL = interrupt number
	DS:DX -> new interrupt handler
Notes:	this function is preferred over direct modification of the interrupt
	  vector table
	some DOS extenders place an API on this function, as it is not
	  directly meaningful in protected mode
	under DR DOS 5.0-6.0, this function does not use any of the
	  DOS-internal stacks and may thus be called at any time; however,
	  under Novell DOS 7.0 - DR-DOS 7.02, this function was not reentrant.
	  Since 1998/05/29, DR-DOS 7.03 no longer uses any internal stacks and
	  tests for this function much earlier, to allow a minimal stack usage
	  of just two words in addition to the IRET frame, allowing it to be
	  called from INT 21h functions, specificially device drivers.  This
	  fixes the MCS SMB client
	Novell NetWare (except the new DOS Requester) monitors the offset of
	  any INT 24 set, and if equal to the value at startup, substitutes
	  its own handler to allow handling of network errors; this introduces
	  the potential bug that any program whose INT 24 handler offset
	  happens to be the same as COMMAND.COM's will not have its INT 24
	  handler installed
SeeAlso: AX=2501h,AH=35h

Top
212501 - INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
	AX = 2501h
	SS = application's original SS or DS (FlashTek X-32VM)
Return: CF clear if successful
	CF set on error
	    caller is operating on X-32 stack (FlashTek X-32VM)
Notes:	Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
	  system calls.	 Only available when directly using 386/DOS-Extender or
	  a compatible DOS extender, or when using a product that was created
	  using 386-DOS/Extender or a compatible
	this function is also supported by FlashTek X-32VM
SeeAlso: AH=30h"Phar Lap"

Top
212502 - INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
	AX = 2502h
	CL = interrupt number
Return: CF clear
	ES:EBX = CS:EIP of protected-mode interrupt handler
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h

Top
212503 - INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
	AX = 2503h
	CL = interrupt number
Return: CF clear
	EBX = CS:IP of real-mode interrupt handler
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h

Top
212504 - INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
	AX = 2504h
	CL = interrupt number
	DS:EDX = CS:EIP of protected-mode interrupt handler
Return: CF clear
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h

Top
212505 - INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
	AX = 2505h
	CL = interrupt number
	EBX = CS:IP of real-mode interrupt handler
Return: CF clear
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h

Top
212506 - INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
	AX = 2506h
	CL = interrupt number
	DS:EDX = CS:EIP of protected-mode interrupt handler
Return: CF clear
Notes:	this function modifies both the real-mode low-memory interrupt
	  vector table and the protected-mode Interrupt Descriptor Table (IDT)
	interrupts occurring in real mode are resignaled in protected mode
	this function is also supported by FlashTek X-32VM

Top
212507 - INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
	AX = 2507h
	CL = interrupt number
	DS:EDX = CS:EIP of protected-mode interrupt handler
	EBX = CS:IP of real-mode interrupt handler
Return: CF clear
Notes:	interrupts are disabled until both vectors have been modified
	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2504h,AX=2505h

Top
212508 - INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
	AX = 2508h
	BX = segment selector
Return: CF clear if successful
	    ECX = linear base address of segment
	CF set if invalid segment selector
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2509h

Top
212509 - INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
	AX = 2509h
	EBX = linear address to convert
Return: CF clear if successful
	    ECX = physical address (carry flag clear)
	CF set if linear address not mapped in page tables
SeeAlso: AX=2508h

Top
212509 - INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
	AX = 2509h
Return: CF clear
	EAX high word = default DS
	AX = alias for 16-bit data segment
	BX = real mode code segment
	EDX high word = selector covering full 4GB address space
	DX = default SS
	ESI high word = PSP selector
	SI = environment selector

Top
21250A - INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
	AX = 250Ah
	ES = segment selector in the Local Descriptor Table (LDT) of segment
	     to modify
	EBX = physical base address of memory to map (multiple of 4K)
	ECX = number of physical 4K pages to map
Return: CF clear if successful
	    EAX = 32-bit offset in segment of mapped memory
	CF set on error
	    EAX = error code
		08h insufficient memory to create page tables
		09h invalid segment selector
SeeAlso: INT 31/AX=0800h

Top
21250C - INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
	AX = 250Ch
Return: CF clear
	AL = base interrupt vector for IRQ0-IRQ7
	AH = base interrupt vector for IRQ8-IRQ15
	BL = interrupt vector for BIOS print screen function (Phar Lap only)
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah

Top
21250D - INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
	AX = 250Dh
Return: CF clear
	EAX = CS:IP of real-mode callback procedure (see #01358) that will
		  call through from real mode to a protected-mode routine
	EBX = 32-bit real-mode address of intermode call data buffer
	ECX = size in bytes of intermode call data buffer
	ES:EDX = protected-mode address of intermode call data buffer
Notes:	this function is also supported by FlashTek X-32VM
	X-32VM guarantees the intermode buffer to be at least 4 KB
SeeAlso: AX=250Eh

(Table 01358)
Call Phar Lap real-mode callback with:
	STACK:	DWORD	offset to protected-mode code
		WORD	placeholder for protected-mode CS
		DWORD	pointer to selector structure (see #01359)
			or 0000h:0000h for defaults
		var	parameters for protected-mode procedure
Return: via FAR return

Format of Phar Lap selector structure:
Offset	Size	Description	(Table 01359)
 00h	WORD	protected-mode GS selector
 02h	WORD	protected-mode FS selector
 04h	WORD	protected-mode ES selector
 06h	WORD	protected-mode DS selector

Top
21250E - INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
	AX = 250Eh
	EBX = CS:IP of real-mode procedure to call
	ECX = number of two-byte words to copy from protected-mode stack
	      to real-mode stack
Return: CF clear if successful
	    all segment registers unchanged
	    all general registers contain values set by real-mode procedure
	    all other flags set as they were left by real-mode procedure
	    stack unchanged
	CF set on error
	    EAX = error code
		01h not enough real-mode stack space
Note:	this function is also supported by FlashTek X-32VM; under X-32VM, the
	  call will fail if ECX > 0000003Fh
SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h

Top
21250F - INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
	AX = 250Fh
	ES:EBX = 48-bit protected-mode address to convert
	ECX = 00000000h or length of data in bytes
Return: CF clear if successful (address < 1MB and contiguous)
	    ECX = 32-bit real-mode MS-DOS address
	CF set on error (address >= 1MB or not contiguous)
	    ECX = linear address
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2510h

Top
212510 - INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
	AX = 2510h
	EBX = CS:IP of real-mode procedure to call
	ECX = number of two-byte words to copy to protected-mode stack to
	      real-mode stack
	DS:EDX -> pointer to parameter block (see #01360)
Return: CF clear if successful
	    all segment registers unchanged,
	    EDX unchanged
	    all other general registers contain values set by real-mode proc
	    all other flags are set as they were left by real-mode procedure
	    real-mode register values are returned in the parameter block
	CF set on error
	    EAX = error code
		01h not enough real-mode stack space
Note:	unlike most of the preceding 25xxh functions, this one is not
	  supported by FlashTek X-32VM
SeeAlso: AX=250Eh,AX=250Fh

Format of Phar Lap real-mode call parameter block:
Offset	Size	Description	(Table 01360)
 00h	WORD	real-mode DS value
 02h	WORD	real-mode ES value
 04h	WORD	real-mode FS value
 06h	WORD	real-mode GS value
 08h	DWORD	real-mode EAX value
 0Ch	DWORD	real-mode EBX value
 10h	DWORD	real-mode ECX value
 14h	DWORD	real-mode EDX value

Top
212511 - INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
	AX = 2511h
	DS:EDX -> parameter block (see #01361)
Return: all segment registers unchanged
	EDX unchanged
	all other registers contain values set by the real-mode int handler
	the flags are set as they were left by the real-mode interrupt handler
	real-mode register values are returned in the parameter block
Note:	this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h

Format of Phar Lap real-mode interrupt parameter block:
Offset	Size	Description	(Table 01361)
 00h	WORD	interrupt number
 02h	WORD	real-mode DS value
 04h	WORD	real-mode ES value
 06h	WORD	real-mode FS value
 08h	WORD	real-mode GS value
 0Ah	DWORD	real-mode EAX value
 0Eh	DWORD	real-mode EDX value
Note: all other real-mode values set from protected-mode registers

Top
212512 - INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
	AX = 2512h
	DS:EDX -> pointer to ASCIZ program name
	ES:EBX -> pointer to parameter block (see #01363)
	ECX = size in bytes of LDT buffer
Return: CF clear if successful
	    EAX = number of segment descriptors in LDT
	CF set on error
	    EAX = error code (see #01362)
SeeAlso: AX=2517h

(Table 01362)
Values for Phar Lap error code:
 02h	file not found or path invalid
 05h	access denied
 08h	insufficient memory
 0Ah	environment invalid
 0Bh	invalid file format
 80h	LDT too small

Format of Phar Lap program load parameter block:
Offset	Size	Description	(Table 01363)
Input:
 00h	DWORD	32-bit offset of environment string
 04h	WORD	segment of environment string
 06h	DWORD	32-bit offset of command-tail string
 0Ah	WORD	segment of command-tail string
 0Ch	DWORD	32-bit offset of LDT buffer (size in ECX)
 10h	WORD	segment of LDT buffer
Output:
 12h	WORD	real-mode paragraph address of PSP (see also AH=26h)
 14h	WORD	real/protected mode flag
		0000h  real mode
		0001h  protected mode
 16h	DWORD	initial EIP value
 1Ah	WORD	initial CS value
 1Ch	DWORD	initial ESP value
 20h	WORD	initial SS value
 22h	WORD	initial DS value
 24h	WORD	initial ES value
 26h	WORD	initial FS value
 28h	WORD	initial GS value

Top
212513 - INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
	AX = 2513h
	BX = segment selector of descriptor in GDT or LDT
	CL = access-rights byte for alias descriptor
	CH = use-type bit (USE16 or USE32) for alias descriptor
Return: CF clear if successful
	    AX = segment selector for created alias
	CF set on error
	    EAX = error code
		08h insufficient memory (can't grow LDT)
		09h invalid segment selector in BX

Top
212514 - INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
	AX = 2514h
	BX = segment selector of descriptor in GDT or LDT
	CL = new access-rights byte
	CH = new use-type bit (USE16 or USE32)
Return: CF clear if successful
	CF set on error
	    EAX = error code
		09h invalid selector in BX
SeeAlso: AX=2515h,INT 31/AX=0009h

Top
212515 - INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
	AX = 2515h
	BX = segment selector of descriptor in GDT or LDT
Return: CF clear if successful
	    CL = access-rights byte for segment
	    CH = use-type bit (USE16 or USE32)
	ECX<16-31> destroyed
	CF set on error
	    EAX = error code
		09h invalid segment selector in BX
SeeAlso: AX=2514h

Top
212516 - INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
	AX = 2516h
Return: CF clear
Note:	this function must be called from Ring 0 or the CS descriptor is freed

Top
212517 - INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
	AX = 2517h
Return: CF clear
	ES:EBX -> data buffer (protected mode address)
	ECX -> data buffer (real mode address)
	EDX = size of data buffer in bytes
Note:	the data buffer's address changes after calls to AX=2512h and AX=252Ah
SeeAlso: AX=2512h,AX=252Ah,AX=2530h

Top
212518 - INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
	AX = 2518h
	ES:EBX -> function to call when a segment is moved
Return: CF clear
	ES:EBX -> previous handler

Top
212519 - INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
	AX = 2519h
Return: CF clear
	EAX = error code
	    0000h  no error
	    0001h  out of physical memory
	    0002h  out of swap space (unable to grow swap file)
	    0003h  out of LDT entries and unable to grow LDT
	    0004h  unable to change extended memory allocation mark
	    FFFFFFFFh	paging disabled
Note:	VMM is the Virtual Memory Manager option

Top
21251A - INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
	AX = 251Ah
	EDX = number of 4k pages to lock
	if BL = 00h
	    ECX = linear address of first page to lock
	if BL = 01h
	    ES:ECX -> pointer to first page to lock
Return: CF clear if successful
	CF set on error
	    EAX = error code
		08h insufficient memory
		09h invalid address range
SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h

Top
21251B - INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
	AX = 251Bh
	EDX = number of pages to unlock
	if BL = 00h
	    ECX = linear address of first page to unlock
	if BL = 01h
	    ES:ECX -> pointer to first page to unlock
Return: CF clear if successful
	CF set on error
	    EAX = error code
		09h invalid address range
SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h

Top
21251C - INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
	AX = 251Ch
	BH = preservation flag (00h preserve contents, 01h discard contents)
	EDX = number of pages to free
	BL = address type
	    00h linear address
		ECX = linear address of first page to be freed
	    01h pointer
		ES:ECX -> first page to be freed
Return: CF clear if successful
	CF set on error
	    EAX = error code
		08h memory error, swap space full, no VMM or DPMI
		09h invalid address

Top
21251D - INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
	AX = 251Dh
	BL = address type
	    00h linear address
		ECX = linear address of page table entry to read
	    01h pointer
		ES:ECX -> page table entry to read
Return: CF clear if successful
	    EAX = contents of page table entry
	CF set on error
	    EAX = error code
		09h invalid address or NOPAGE option set
		78h invalid under DPMI
Note:	this function is obsolete; use AX=252Bh/BH=09h instead
SeeAlso: AX=251Eh,AX=252Bh/BH=09h,AX=EB00h,INT 31/AX=0506h

Top
21251E - INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
	AX = 251Eh
	BL = address type
	    00h linear address
		ECX = linear address of page table entry to read
	    01h pointer
		ES:ECX -> page table entry to read
	EDX = new value for page table entry
Return: CF clear if successful
	CF set on error
	    EAX = error code
		09h invalid address or NOPAGE option set
		82h not compatible with DPMI
Note:	this call is obsolete; use AX=252Bh/BH=0Ah instead
SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah,INT 31/AX=0507h

Top
21251F - INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
	AX = 251Fh
	BL = address type
	    00h linear address
		ECX = linear address of first page table entry
		EDX = linear address of second page table entry
	    01h pointer
		ES:ECX -> first page table entry
		ES:EDX -> second page table entry
Return: CF clear if successful
	CF set on error
	    EAX = error code
		09h invalid address or NOPAGE option set
		82h not compatible with DPMI
SeeAlso: AX=251Dh,AX=251Eh

Top
212520 - INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
	AX = 2520h
	DS:EDX -> pointer to buffer at least 100 bytes in size (see #01364)
	BL = 0 (don't reset VM stats), 1 (reset VM stats)
Return: carry flag clear

Format of Phar Lap VM statistics buffer:
Offset	Size	Description	(Table 01364)
 00h	DWORD	VM status
		0001h VM subsystem is present
		0000h VM not present
 04h	DWORD	"nconvpg" number of conventional memory pages available
 08h	DWORD	"nbimpg" number of Compaq built-in memory pages available
 0Ch	DWORD	"nextpg" total number of extended memory pages
 10h	DWORD	"extlim" extender memory pages limit
 14h	DWORD	"aphyspg" number of physical memory pages allocated to appl
 18h	DWORD	"alockpg" number of locked pages owned by application
 1Ch	DWORD	"sysphyspg" number physical memory pages allocated to system
 20h	DWORD	"nfreepg" number of free physical pages; approx if EMS VCPI
 24h	DWORD	linear address of beginning of application address space
 28h	DWORD	linear address of end of application address space
 2Ch	DWORD	number of seconds since last time VM stats were reset
 30h	DWORD	number of page faults since last time
 34h	DWORD	number of pages written to swap file since last time
 38h	DWORD	number of reclaimed pages (page faults on swapped pages)
 3Ch	DWORD	number of virtual pages allocated to the application
 40h	DWORD	size in pages of swap file
 44h	DWORD	number of system pages allocated with EMS calls
 48h	DWORD	minimum number of conventional memory pages
 4Ch	DWORD	maximum size in pages to which swap file can be increased
 50h	DWORD	"vmflags"
		bit 0 = 1 if page fault in progress
---v4.0+ ---
 54h	DWORD	number of physical pages guaranteed to be free
 58h	DWORD	number of free physical pages currently available
 5Ch	DWORD	size in pages of largest free block of memory (including disk
		  swap space)
 60h	DWORD	reserved

Top
212521 - INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
	AX = 2521h
	EBX = max 4k pages of physical extended memory which program may use
Return: CF clear if successful
	   EBX = maximum limit in pages
	   ECX = minimum limit in pages
	CF set on error
	    EAX = error code
		08h insufficient memory or -nopage switch used
SeeAlso: AX=2522h

Top
212522 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
	AX = 2522h
	ES:EBX -> alternate handler for page faults
Return: CF clear
	ES:EBX -> previous page-fault handler
SeeAlso: AX=2523h

Top
212523 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
	AX = 2523h
	???
Return: ???
Note:	this function takes a DWORD pointer and a DWORD pointer to a DWORD
	  pointer as arguments
SeeAlso: AX=2522h

Top
212524 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
	AX = 2524h
	???
Return: ???
Note:	this function takes three DWORD pointers and three DWORD pointers to
	  DWORD pointers as arguments

Top
212525 - INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
	AX = 2525h
	EBX = limit in 4k pages of physical conventional memory which program
	      may use
Return: CF clear if successful
	    EBX = maximum limit in pages
	    ECX = minimum limit in pages
	CF set on error
	    EAX = error code
		08h insufficient memory or -nopage switch used
SeeAlso: AX=2521h

Top
212526 - INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
	AX = 2526h
	???
Return: ???
Notes:	details are not yet available
	this function takes a pointer to the configuration buffer (see #01365)
	  and a poitner to a BYTE as arguments

Format of Phar Lap configuration buffer:
Offset	Size	Description	(Table 01365)
 00h	DWORD	flags 1 (see #01366)
 04h	DWORD	flags 2 (unused through v5.0)
 08h	DWORD	flags 3 (unused through v5.0)
 0Ch	DWORD	386|DOS-Extender major version
 10h	DWORD	386|DOS-Extender minor version
 14h	DWORD	first letter of text after minor version number in version str
 18h	DWORD	beta flag (00h normal release, 01h beta release)
 1Ch	DWORD	processor (3 = 386, 4 = 486)
 20h	DWORD	coprocessor (4 = none, 6 = 287, 7 = 387/486)
 24h	DWORD	Weitek coprocessor flag (0 = none, 1 = present)
 28h	DWORD	machine type (0 = IBM PC compatible, 1 = NEC 9800 series)
 2Ch	DWORD	machine class
		IBM: bus type (0=ISA, 1=MCA, 2=XT, 3=EISA)
		NEC: 0=normal mode, 1=high-res mode
 30h	DWORD	VCPI flag (0 = none, 1 = present)
 34h	DWORD	-WEITEK/-1167 switch (0 = AUTO, 1 = ON, 2 = OFF)
 38h	DWORD	-MINREAL setting
 3Ch	DWORD	-MAXREAL setting
 40h	DWORD	-MINIBUF setting
 44h	DWORD	-MAXIBUF setting
 48h	DWORD	size in bytes of DOS call data buffer
 4Ch	DWORD	number of interrupt stacks (-NISTACK)
 50h	DWORD	interrupt stack size (-ISTKSIZE)
 54h	DWORD	-REALBREAK setting
 58h	DWORD	-CALLBUFS
 5Ch	DWORD	-HWIVEC
 60h	DWORD	-PRIVEC
 64h	DWORD	-INTMAP
 68h	DWORD	-PRIMAP
 6Ch	DWORD	VCPI: master 8259 interrupt vector base (IRQ0 mapping)
 70h	DWORD	VCPI: slave 8259 interrupt vector base (IRQ8 mapping)
 74h	DWORD	BIOS print screen interrupt vector (0 if NEC)
 78h	DWORD	-EXTLOW setting
 7Ch	DWORD	-EXTHIGH setting
 80h	DWORD	lowest physical extended-memory address allocatable
 84h	DWORD	highest physical extended-memory address allocatable + 1
 88h	DWORD	special memory's physical base address (00000000h if none)
 8Ch	DWORD	special memory size in bytes (00000000h if none)
 90h	DWORD	-MAXVCPIMEM setting
 94h	DWORD	-VSCAN
 98h	DWORD	-SWAPCHK (0 = OFF, 1 = ON, 2 = FORCE, 3 = MAX)
 9Ch	DWORD	-CODESIZE setting
 A0h	DWORD	minimum swap file size (-MINSWFSIZE)
 A4h	DWORD	maximum swap fiel size (-MAXSWFSIZE)
 A8h	DWORD	page replacement policy (0 = LFU, 1 = NUR)
 ACh	DWORD	number of GDT entries (-NGDTENT)
 B0h	DWORD	number of LDT entries (-NLDTENT)
 B4h	DWORD	program's privilege level (0-3)
---386|DOS-Extender v3.0+ ---
 B8h	DWORD	-LOCKSTACK setting
 BCh	DWORD	-MAXEXTMEM
 C0h	DWORD	-MAXXMSMEM
 C4h	DWORD	-MAXPGMMEM
 C8h	DWORD	-DATATHRESHOLD
 CCh	DWORD	virtual memory manager flag (0 = not present, 1 = present)
 D0h	DWORD	Cyrix coprocessor flag (0 = no Cyrix EMC387, 1 = present)
 D4h	DWORD	-CYRIX setting (0 = AUTO, 1 = ON, 2 = OFF)
 D8h	DWORD	DPMI flag (0 = not present, 1 = present)
 DCh	DWORD	DPMI major version
 E0h	DWORD	DPMI minor version
 E4h	DWORD	DPMI capabilities flags (see #01367)
 E8h	DWORD	VCPI major version
 ECh	DWORD	VCPI minor version
 F0h	WORD	VCPI: IRQ0-7 physical base interrupt vector
 F2h	WORD	VCPI: IRQ8-15 physical base interrupt vector
 F4h	DWORD	XMS flag (0 = none, 1 = present)
 F8h	DWORD	XMS major version
 FCh	DWORD	XMS minor version
100h	WORD	application's CS selector
102h	WORD	application's DS selector
104h	WORD	application's PSP selector
106h	WORD	application's environment selector
108h	WORD	selector mapping entire first megabyte
10Ah	WORD	selector mapping text video memory
10Ch	WORD	selector mapping video memory (text for IBM, graphics for NEC)
10Eh	WORD	selector mapping Weitek address space, 0000h if not present
110h	WORD	selector mapping Cyrix EMC387 address space, 0000h if none
112h	WORD	reserved (0)
114h	DWORD	real-mode FAR entry point to call to switch to protected mode
		  with no saved context
118h	DWORD	size of LDT in bytes
---386|DOS-Extender v5.0+ ---
11Ch	DWORD	Windows flag (0 = not present, 1 = Windows present)
120h	DWORD	Windows major version
124h	DWORD	Windows minor version
128h	DWORD	Windows mode (0 = real/standard, 1 = enhanced)
12Ch	DWORD	OS/2 flag (0 = not present, 1 = OS/2 present)
130h	DWORD	OS/2 major version
134h	DWORD	OS/2 minor version
138h 50 DWORDs	reserved (0)

Bitfields for flags 1:
Bit(s)	Description	(Table 01366)
 0	-NOPAGE specified
 1	-A20 specified
 2	-VDISK specified
 3	-XT specified
 4	-AT specified
 5	-MCA specified
 6	-EISA specified
 7	-NORMRES specified (NEC only)
 8	-HIGHRES specified (NEC only)
 9	set if -SWFGROW1ST, clear if -NOSWFGROW1ST
 10	-NOVM specified
 11	-SAVEREGS specified
 12	unused (clear)
 13	-NOVCPI specified
 14	-NOMUL specified
 15	-NOBMCHK specified
 16	-NOSPCLMEM or -NOBIM
 17	-NOPGEXP specified
 18	-SWAPDEFDISK specified
---v3.0+ ---
 19	-SAVEINTS specified
 20	-NOLOAD specified
 21	-PAGELOG specified
 22	-OPENDENY specified
 23	-ERRATA17 specified
---v4.1+ ---
 24	-NESTDPMI specified
 25	-NONESTDPMI specified
 26	-NODPMI specified
 27	-NOPCDWEITEK specified
---v4.2+ ---
 28	-WININT21 specified

Bitfields for DPMI capabilities flags:
Bit(s)	Description	(Table 01367)
 0	paging supported
 1	physical device mapping
 2	conventional memory mapping
 3	exceptions restartable

Top
212527 - INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
	AX = 2527h
	EBX = new status (00h disabled, 01h enabled)
Return: CF clear
	EBX = previous state save flag
SeeAlso: AX=2528h

Top
212528 - INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
	AX = 2528h
	DS:EBX -> buffer for registers (see #01368)
Return: CF clear if successful
	    DS:EBX buffer filled
	CF set on error
	    EAX = error code
		83h interrupt state save not enabled
		84h no active interrupt
SeeAlso: AX=2527h

Format of Phar Lap buffer for registers:
Offset	Size	Description	(Table 01368)
 00h  8 BYTEs	unused
 08h  4	DWORDs	EAX,EBX,ECX,EDX
 18h  4 DWORDs	ESI,EDI,EBP,ESP
 28h  6 WORDs	CS,DS,SS,ES,FS,GS
 34h	DWORD	EIP
 38h	DWORD	EFLAGS

Top
212529 - INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
	AX = 2529h
	???
Return: ES:EBX -> parameter block (see #01369)
	???
Note:	details not available at this time
SeeAlso: AX=252Ah

Format of Phar Lap program load parameter block:
Offset	Size	Description	(Table 01369)
 00h	DWORD	initial EIP
 04h	WORD	initial CS
 06h	DWORD	initial ESP
 0Ah	WORD	initial SS
 0Ch  4 WORDs	initial DS, ES, FS, GS
 14h	DWORD	minimum size in bytes of program segment
 18h	DWORD	bytes of additional memory allocated
 1Ch	DWORD	flags
		bit 0: child linked with -UNPRIVILEGED
		---v6.0+ ---
		bit 1: child is PE file instead of .EXP
		bit 2: loaded file is a DLL
		bits 3-31 reserved
---v6.0+ ---
 20h	DWORD	module handles (PE files only)
 24h  7 DWORDs	reserved (0)

Top
21252A - INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
	AX = 252Ah
	DS:EDX -> ASCIZ program name
	ES:EBX -> parameter block (see #01363)
	ECX = size of LDT buffer in bytes
	ESI = bit flags
	    bit 0: allow demand paging rather than loading entire program
	    bit 1: demand page from swap file rather than from .EXP
Return: CF clear if successful
	    EAX = VMM handle or FFFFFFFFh if none
	    ECX = number of descriptors in LDT buffer
	CF set on error
	    EAX = error code
		02h file error
		    EBX = file error code (see #01370)
		    ECX = DOS error code if EBX=1,2,3, or 8
		08h insufficient memory
		    EBX = memory error code (see #01371)
		80h LDT buffer too small
		87h called twice without intervening call to AX=2531h
SeeAlso: AX=2512h,AX=2517h,AX=2529h,AX=2531h

(Table 01370)
Values for Phar Lap file error code:
 01h	DOS open error
 02h	DOS seek error
 03h	DOS read error
 04h	not an .EXP or .REX file
 05h	invalid file format
 06h	-OFFSET is not a multiple of 64K
 07h	-NOPAGE incompatible with -REALBREAK/-OFFSET
 08h	DOS error loading .EXE file

(Table 01371)
Values for Phar Lap memory error code:
 01h	out of physical memory
 02h	out of swap space
 04h	unable to change extended memory allocation
 05h	-MAXPGMMEM exceeded
 06h	insufficient low memory to REALBREAK value
 07h	insufficient low memory for PSP and environment

Top
21252BBH00 - INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
	AX = 252Bh
	BH = 00h
	???
Return: ???

Top
21252BBH01 - INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
	AX = 252Bh
	BH = 01h
	???
Return: ???

Top
21252BBH02 - INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
	AX = 252Bh
	BH = 02h
	???
Return: ???

Top
21252BBH03 - INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
	AX = 252Bh
	BH = 03h
	???
Return: ???
SeeAlso: AX=252Bh/BH=0Bh

Top
21252BBH04 - INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
	AX = 252Bh
	BH = 04h
	???
Return: ???
Note:	returns one word per page
SeeAlso: #01372

Bitfields for Phar Lap page information:
Bit(s)	Description	(Table 01372)
 7	mapped to read/write data file
 6	mapped to read-only data file
 5	swapped to disk
 4	locked
 3-0	page type
	0 unmapped
	1 allocated
	2 physical device page

Top
21252B - INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
	AX = 252Bh
	BH = function
	    05h lock pages
	    06h unlock pages
	BL = address type
	    00h linear address
		ECX = linear start address of memory region
	    01h segmented address
		ES:ECX -> start of memory region
	EDX = size of memory region in bytes
Return: CF clear if successful
	CF set on error
Note:	this function is also supported by FlashTek X-32VM; if X-32 is not
	  using virtual memory, this function always succeeds

Top
21252B - INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
	AX = 252Bh
	BH = function (07h,08h)
	???
Return: ???

Top
21252BBH09 - INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
	AX = 252Bh
	BH = 09h
	BL = subfunction
	    00h get page table entry by linear address
		ECX = linear address for which to get page table entry
	    01h get page table entry by logical address
		ES:ECX = address for which to get page table entry
Return: CF clear if successful
	    EAX = page table entry
	    EBX = additional page table information
	CF set on error
	    EAX = error code
		0009h invalid address
		0082h running under DPMI
SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah

Top
21252BBH0A - INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
	AX = 252Bh
	BH = 0Ah
	BL = subfunction
	    00h set page table entry for linear address
		ECX = linear address for which to get page table entry
	    01h set page table entry for logical address
		ES:ECX = address for which to get page table entry
	ESI = page table entry
	EDI = additional page table information
Return: CF clear if successful
	CF set on error
	    EAX = error code
		0009h invalid address
		0082h running under DPMI
SeeAlso: AX=252Bh/BH=09h

Top
21252BBH0B - INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
	AX = 252Bh
	BH = 0Bh
	BL = subfunction
	    00h by linear address
		ECX = linear address at which to map data file
	    01h by logical address
		ES:ECX = logical address at which to map data file
	EDX = number of bytes to map
	DS:ESI -> mapping structure (see #01373)
	DS:EDI -> ASCIZ filename
Return: CF clear if successful
	CF set on error
	    EAX = error code
		0002h file error
		    ECX = phase (01h opening file, 02h seeking, 03h reading)
		    EDX = error code returned by DOS
		0009h invalid address
		0081h invalid parameters or 386|VMM not present
		0086h all 386|VMM file handles already in use
SeeAlso: AX=252Bh/BH=03h,AX=252Bh/BH=09h

Format of Phar Lap mapping structure:
Offset	Size	Description	(Table 01373)
 00h	DWORD	starting file offset to be mapped
 04h	DWORD	DOS file access and sharing modes (see #01403 at INT 21/AH=3Dh)

Top
21252C - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
	AX = 252Ch
	BX = segment selector
	ECX = number of 4K pages to add
Return: CF clear if successful
	    EAX = offset in segment of beginning of unmapped pages
	CF set on error
	    EAX = error code
		08h insufficent memory
		09h invalid selector
		82h not supported by current DPMI

Top
21252D - INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
	AX = 252Dh
	EBX = VMM file handle
Return: CF clear if successful
	CF set on error
	    EAX = error code (81h invalid VMM handle)

Top
21252E - INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
	AX = 252Eh
	CL = direction (00h get parameters, 01h set parameters)
	DS:EBX -> parameter buffer (see #01374)
Return: CF clear if successful
	CF set on error
	    EAX = error code (81h bad parameter value)

Format of Phar Lap VMM parameter buffer:
Offset	Size	Description	(Table 01374)
 00h	DWORD	flags
		bit 0: page fault logging enabled
		---v5.0+ ---
		bit 1: swap extender to disk during DOS EXEC call
		bit 2: don't zero allocated memory
 04h	DWORD	scan period for page aging, in milliseconds
 08h	DWORD	maximum size (in bytes) to check on each page scan
 0Ch 52 BYTEs	unused

Top
21252F - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
	AX = 252Fh
	DS:EBX -> data to be written
	CX = size of data in bytes
Return: CF clear if successful
	CF set on error
	    EAX = error code (85h no page log file or not 386/VMM)

Top
212530 - INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
	AX = 2530h
	ECX = size of data buffer in bytes (1024 to 65536)
Return: CF clear if successful
	CF set on error
	    EAX = error code
		08h insufficient low memory
		81h invalid size
SeeAlso: AX=2517h

Top
212531 - INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
	AX = 2531h
	BX = segment selector
	ECX = direction (00h read, 01h write)
	DS:EDX -> 8-byte buffer for descriptor contents
Return: CF clear if successful
	CF set on error
	    EAX = error code
		81h invalid selector
		82h DPMI running, or not a code or data segment

Top
212532 - INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
	AX = 2532h
	CL = exception number (00h-0Fh)
Return: CF clear if successful
	    ES:EBX = CS:EIP of current exception handler
	CF set on error (CL > 0Fh)
Notes:	this call is also supported by the FlashTek X-32VM extender
	this function is incompatible with 386|VMM; use AX=2522h instead
SeeAlso: AX=2522h,AX=2533h

Top
212533 - INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
	AX = 2533h
	CL = exception number (00h-0Fh)
	DS:EDX = CS:EIP of new exception handler
Return: CF clear if successful
	CF set on error (CL > 0Fh)
Notes:	this call is also supported by the FlashTek X-32VM extender
	this function is incompatible with 386|VMM; use AX=2522h instead
SeeAlso: AX=2522h,AX=2532h

Top
212534 - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
	AX = 2534h
Return: CF clear
	EAX = interrupt state (00h disabled, 01h enabled)

Top
212535 - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
	AX = 2535h
	EBX = direction (00h read registers, 01h write)
	DS:EDX -> system register record (see #01375)
Return: CF clear
Note:	this call is only available under MS Windows if PHARLAP.386 VDD is
	  installed

Format of Phar Lap system register record:
Offset	Size	Description	(Table 01375)
 00h	DWORD	CR0
 04h  4 DWORDs	DR0,DR1,DR2,DR3
 14h  2 DWORDs	reserved
 1Ch  2 DWORDs	DR6,DR7
 24h  3 DWORDs	reserved

Top
212536 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
	AX = 2536h
	EBX = bit flags
	    bit 0: modifying conventional memory rather than extended memory
	    bit 1: setting maximum memory usage rather than minimum
	ECX = new limit in 4K pages
Return: CF clear if successful
	    EAX = new limit
	CF set on error
	    EAX = error code (08h memory error or -NOPAGE set)
	    EBX = maximum limit in pages
	    ECX = minimum limit in pages

Top
212537 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
	AX = 2537h
	BX = number of paragraphs to allocate
Return: CF clear if successful
	    AX = real-mode segment of allocated block
	CF set on error
	    AX = error code
		07h MS-DOS memory chain corrupted
		08h insufficient low memory
	    BX = size in paragraphs of largest free block
SeeAlso: AH=48h

Top
212538 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
	AX = 2538h
	DS:EBX -> buffer for registers (see #01368)
	ECX = register record to retrieve
	    00h first interrupt state
	    01h next interrupt state
		EDX = handle for current interrupt state
Return: CF clear if successful
	    DS:EBX buffer filled
	    EDX = handle of current interrupt state
	    ESI = number of interrupt which occurred
	CF set on error
	    EAX = error code
		81h invalid handle in EDX
		83h register saving not enabled
		84h no more interrupt states
SeeAlso: AX=2527h,AX=2528h

Top
212539 - INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
	AX = 2539h
	BX = MS-DOS file handle for open file
Return: CF clear if successful
	    EAX = offset of .EXP header in file
	CF set on error
	    EAX = error code (02h file error)
	    EBX = file error code
		02h DOS error seeking
		03h DOS error reading
		04h invalid file type
		05h invalid file format
	    ECX = DOS error code if EBX=02h or 03h
	current file position in file modified

Top
21253A - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
	AX = 253Ah
	ES:EBX -> function to be called when INT 21/AH=4Ah is about to return
		an error
Return: CF clear
	ES:EBX -> previous handler
SeeAlso: AH=4Ah

Top
21253B - INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
	AX = 253Bh
	DS:EBX -> buffer containing register contents (see #01368)
Return: never returns
SeeAlso: AX=2528h

Top
21253C - INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
	AX = 253Ch
Return: CF clear
	EAX = old size of swap file in bytes
	EBX = new size of swap file in bytes

Top
21253D - INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
	AX = 253Dh
	BL = interrupt number
	ECX = direction (0 = read, 1 = write)
	DS:EDX -> 8-byte buffer for descriptor
Return: CF clear if successful
	    DS:EDX filled if reading
	CF set on error
	    EAX = error code (0082h if running under DPMI)
Desc:	access hardware-level IDT rather than the internal 386/DOS-Extender
	  shadow IDT
Notes:	this call will always fail under DPMI because it is not possible to
	  access the IDT
	the descriptor is not checked when writing
	this call can normally be used only by programs running in ring 0
	  because the processor does not allow an interrupt to be vectored to
	  a less privileged ring

Top
21253F - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
	AX = 253Fh
	BX = LDT descriptor to allocate (0000h for any)
	???
Return: ???

Top
212540 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
	AX = 2540h
	???
Return: ???

Top
212544 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
	AX = 2544h
	???
Return: ???

Top
212545 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
	AX = 2545h
	ECX = direction (00h get, 01h set)
	???
Return: ???

Top
212546 - INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
	AX = 2546h
	???
Return: ???

Top
2125C0 - INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
	AX = 25C0h
	BX = number of 16-byte paragraphs of MS-DOS memory requested
Return: CF clear if successful
	    AX = real-mode paragraph address of memory
	CF set on error
	    AX = error code
		07h MS-DOS memory control blocks destroyed
		08h insufficient memory
	    BX = size in paragraphs of largest available memory block
SeeAlso: AX=25C1h,AX=25C2h

Top
2125C1 - INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
	AX = 25C1h
	CX = real-mode paragraph address of memory block to free
Return: CF clear if successful
	    EAX destroyed
	CF set on error
	    AX = error code
		07h MS-DOS memory control blocks destroyed
		09h invalid memory block address in CX
SeeAlso: AX=25C0h,AX=25C2h

Top
2125C2 - INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
	AX = 25C2h
	BX = new requested block size in paragraphs
	CX = real-mode paragraph address of memory block to modify
Return: CF clear if successful
	    EAX destroyed
	CF set on error
	    AX = error code
		07h MS-DOS memory control blocks destroyed
		08h insufficient memory
		09h invalid memory block address in CX
	    BX = size in paragraphs of largest available memory block
SeeAlso: AX=25C0h,AX=25C1h

Top
2125C3 - INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
	AX = 25C3h
	ES:EBX -> pointer to parameter block (see #01377)
	DS:EDX -> pointer to ASCIZ program filename
Return: CF clear if successful
	    all registers unchanged
	CF set on error
	    EAX = error code (see #01376)

(Table 01376)
Values for Phar Lap error code:
 01h	function code in AL is invalid ???
 02h	file not found or path invalid
 05h	access denied
 08h	insufficient memory to load program
 0Ah	environment invalid
 0Bh	invalid file format

Format of parameter block:
Offset	Size	Description	(Table 01377)
 00h	DWORD	32-bit offset of environment string
 04h	WORD	segment selector of environment string
 06h	DWORD	32-bit offset of command-tail string
 0Ah	WORD	segment selector of command-tail string

Top
2126 - INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
	AH = 26h
	DX = segment at which to create PSP (see #01378)
Return: AL destroyed
Notes:	new PSP is updated with memory size information; INTs 22h, 23h, 24h
	  taken from interrupt vector table; the parent PSP field is set to 0
	(DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
	  copy
BUG:	DR DOS 6.0 original releases 05/1991 & 08/1991 had a problem where the
	  segment from which the PSP was copied was incorrect so that the PSP
	  was not filled correctly and did not contain the command tail.  The
	  DR DOS 6.0 BDOS patch "PAT312" English (1992/01/07, XDIR /C: A0C6h)
	  and later "full" rebuilds fix this problem (see INT 21/AX=4452h).
SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h

Format of Program Segment Prefix (PSP):
Offset	Size	Description	(Table 01378)
 00h  2 BYTEs	INT 20 instruction for CP/M CALL 0 program termination
		the CDh 20h here is often used as a signature for a valid PSP
 02h	WORD	segment of first byte beyond memory allocated to program
 04h	BYTE	(DOS) unused filler
		(OS/2) count of fake DOS version returns
 05h	BYTE	CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
		BUG: (DOS 2+ DEBUG) PSPs created by DEBUG point at 000BEh
 06h	WORD	CP/M compatibility--size of first segment for .COM files
 08h  2 BYTEs	remainder of FAR JMP at 05h
 0Ah	DWORD	stored INT 22 termination address
 0Eh	DWORD	stored INT 23 control-Break handler address
 12h	DWORD	DOS 1.1+ stored INT 24 critical error handler address
 16h	WORD	segment of parent PSP
 18h 20 BYTEs	DOS 2+ Job File Table, one byte per file handle, FFh = closed
 2Ch	WORD	DOS 2+ segment of environment for process (see #01379)
 2Eh	DWORD	DOS 2+ process's SS:SP on entry to last INT 21 call
 32h	WORD	DOS 3+ number of entries in JFT (default 20)
 34h	DWORD	DOS 3+ pointer to JFT (default PSP:0018h)
 38h	DWORD	DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
		used by SHARE in DOS 3.3
 3Ch	BYTE	DOS 4+ (DBCS) interim console flag (see AX=6301h)
		Novell DOS 7 DBCS interim flag as set with AX=6301h
		(possibly also used by Far East MS-DOS 3.2-3.3)
 3Dh	BYTE	(APPEND) TrueName flag (see INT 2F/AX=B711h)
 3Eh	BYTE	(Novell NetWare) flag: next byte initialized if CEh
		(OS/2) capabilities flag
 3Fh	BYTE	(Novell NetWare) Novell task number if previous byte is CEh
 40h  2 BYTEs	DOS 5+ version to return on INT 21/AH=30h
 42h	WORD	(MSWindows3) selector of next PSP (PDB) in linked list
		Windows keeps a linked list of Windows programs only
 44h	WORD	(MSWindows3) "PDB_Partition"
 46h	WORD	(MSWindows3) "PDB_NextPDB"
 48h	BYTE	(MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
 49h	BYTE	unused by DOS versions <= 6.00
 4Ch	WORD	(MSWindows3) "PDB_EntryStack"
 4Eh  2 BYTEs	unused by DOS versions <= 6.00
 50h  3 BYTEs	DOS 2+ service request (INT 21/RETF instructions)
 53h  2 BYTEs	unused in DOS versions <= 6.00
 55h  7 BYTEs	unused in DOS versions <= 6.00; can be used to make first FCB
		  into an extended FCB
 5Ch 16 BYTEs	first default FCB, filled in from first commandline argument
		overwrites second FCB if opened
 6Ch 16 BYTEs	second default FCB, filled in from second commandline argument
		  overwrites beginning of commandline if opened
 7Ch  4 BYTEs	unused
 80h 128 BYTEs	commandline / default DTA
		command tail is BYTE for length of tail, N BYTEs for the tail,
		  followed by a BYTE containing 0Dh
Notes:	in DOS v3+, the limit on simultaneously open files may be increased by
	  allocating memory for a new open file table, filling it with FFh,
	  copying the first 20 bytes from the default table, and adjusting the
	  pointer and count at 34h and 32h.  However, DOS will only copy the
	  first 20 file handles into a child PSP (including the one created on
	  EXEC).
	in an OS/2 DOS box, values of D0h-FEh in the open file table indicate
	  device drivers
	network redirectors based on the original MS-Net implementation use
	  values of 80h-FEh in the open file table to indicate remote files;
	  Novell NetWare also uses values from FEh down to 80h or one more than
	  FILES= (whichever is greater) to indicate remote files (except on
	  OS/2, where is uses CFh down to 80h)
	MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
	  high; the first FCB is empty and the second contains the first
	  parameter
	some DOS extenders place protected-mode values in various PSP fields
	  such as the "parent" field, which can confuse PSP walkers.  Always
	  check either for the CDh 20h signature or that the suspected PSP is
	  at the beginning of a memory block which owns itself (the preceding
	  paragraph should be a valid MCB with "owner" the same as the
	  suspected PSP).
	Novell NetWare updates the fields at offsets 3Eh and 3Fh without
	  checking that a legal PSP segment is current; see AH=50h for further
	  discussion
	for 4DOS and Windows95, the command tail may be more than 126
	  characters; in that case, the length byte will be set to 7Fh (with
	  an 0Dh in the	 127th position at offset FFh), and the first 126
	  characters will be stored in the PSP, with the entire command line
	  in the environment variable CMDLINE; under at least some versions
	  of 4DOS, the byte at offset FFh is *not* set to 0Dh, so there is no
	  terminating carriage return in the PSP's command tail.
BUG:	When shelling out from the Borland Pascal 7.00 IDE, overly-long
	  command lines will not be delimited by a 0Dh character, and the
	  length byte is set to 80h!  A workaround is to always patch in a
	  0Dh at the last position of the command line buffer before scanning
	  the command line.

Format of environment block:
Offset	Size	Description	(Table 01379)
 00h  N BYTEs	first environment variable, ASCIZ string of form "var=value"
      N BYTEs	second environment variable, ASCIZ string
	...
      N BYTEs	last environment variable, ASCIZ string of form "var=value"
	BYTE	00h
---DOS 3.0+ ---
	WORD	number of strings following environment (normally 1)
      N BYTEs	ASCIZ full pathname of program owning this environment
		other strings may follow

Top
2127 - INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
	AH = 27h
	CX = number of records to read
	DS:DX -> opened FCB (see #01345)
Return: AL = status
	    00h successful, all records read
	    01h end of file, no data read
	    02h segment wrap in DTA, no data read
	    03h end of file, partial read
	Disk Transfer Area filled with records read from file
	CX = number of records read (return AL = 00h or 03h)
Notes:	read begins at current file position as specified in FCB; the file
	  position is updated after reading
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=21h,AH=28h,AH=3Fh"DOS"

Top
2128 - INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
	AH = 28h
	CX = number of records to write
	DS:DX -> opened FCB (see #01345)
	Disk Transfer Area contains records to be written
Return: AL = status
	    00h successful
	    01h disk full or file read-only
	    02h segment wrap in DTA
	CX = number of records written
Notes:	write begins at current file position as specified in FCB; the file
	  position is updated after writing
	if CX = 0000h on entry, no data is written; instead the file size is
	  adjusted to be the same as the file position specified by the random
	  record and record size fields of the FCB
	if the data to be written is less than a disk sector, it is copied into
	  a DOS disk buffer, to be written out to disk at a later time
	not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h/BX=0000h

Top
2129 - INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
	AH = 29h
	AL = parsing options (see #01380)
	DS:SI -> filename string (both '*' and '?' wildcards OK)
	ES:DI -> buffer for unopened FCB
Return: AL = result code
	    00h successful parse, no wildcards encountered
	    01h successful parse, wildcards present
	    FFh failed (invalid drive specifier)
	DS:SI -> first unparsed character
	ES:DI buffer filled with unopened FCB (see #01345)
Notes:	asterisks in the name are expanded to question marks in the FCB
	all processing stops when a filename terminator is encountered
	cannot be used with filespecs which include a path (DOS 2+)
	Novell NetWare monitors the result code since an 'invalid drive' may
	  signal an attempt to reconnect a network drive; if there are no
	  connections to the specified drive, NetWare attempts to build a
	  connection and map the drive to the SYS:LOGIN directory
SeeAlso: AH=0Fh,AH=16h,AH=26h

Bitfields for parsing options:
Bit(s)	Description	(Table 01380)
 0	skip leading separators
 1	use existing drive number in FCB if no drive is specified, instead of
	  setting field to zero
 2	use existing filename in FCB if no base name is specified, instead of
	  filling field with blanks
 3	use existing extension in FCB if no extension is specified, instead of
	  filling field with blanks
 4-7	reserved (0)

Top
212A - INT 21 - DOS 1+ - GET SYSTEM DATE
INT 21 - DOS 1+ - GET SYSTEM DATE
	AH = 2Ah
Return: CX = year (1980-2099)
	DH = month
	DL = day
---DOS 1.10+---
	AL = day of week (00h=Sunday)
SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h"Novell",INT 1A/AH=04h,INT 2F/AX=120Dh

Top
212B - INT 21 - DOS 1+ - SET SYSTEM DATE
INT 21 - DOS 1+ - SET SYSTEM DATE
	AH = 2Bh
	CX = year (1980-2099)
	DH = month (1-12)
	DL = day (1-31)
Return: AL = status
	    00h successful
	    FFh invalid date, system date unchanged
Note:	DOS 3.3+ also sets CMOS clock; due to the limitations of the CLOCK$
	  driver interface, the CMOS time is also updated to the current
	  DOS time (which is the BIOS time-of-day clock with the default
	  CLOCK$ driver)
SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h

Top
212B--CX4149 - INT 21 - AI Architects - ??? - INSTALLATION CHECK
INT 21 - AI Architects - ??? - INSTALLATION CHECK
	AH = 2Bh
	CX = 4149h ('AI')
	DX = 413Fh ('A?')
Return: AL <> FFh if installed
Note:	Borland's TKERNEL makes this call

Top
212B--CX4358 - INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
	AH = 2Bh
	CX = 4358h ('CX')
Return: AL = FFh if PC-Kwik/PC-Cache not installed
	AL = 00h if installed
	    CF clear
	    CX = 6378h ('cx')
	    BX = ???
	    DX = version (DH = major version, DL = binary minor version)
Note:	PC Tools PC-Cache v5.x and Qualitas Qcache v4.00 are OEM versions of
	  Super PC-Kwik, and thus support this call (PC-Cache 5.1 corresponds
	  to PC-Kwik v3.20)
SeeAlso: INT 13/AH=A0h,INT 13/AH=B0h,INT 16/AX=FFA5h/CX=1111h
Index:	PC-Cache;installation check|Qualitas Qcache;installation check
Index:	installation check;PC-Cache 5.x|installation check;Qualitas Qcache

Top
212B--CX4445 - INT 21 - DESQview - INSTALLATION CHECK
INT 21 - DESQview - INSTALLATION CHECK
	AH = 2Bh
	CX = 4445h ('DE')
	DX = 5351h ('SQ')
	AL = subfunction (DV v2.00+)
	    01h get version
		Return: BX = version (BH = major, BL = minor)
		Note: early copies of v2.00 return 0002h
	    02h get shadow buffer info, and start shadowing
		Return: BH = rows in shadow buffer
			BL = columns in shadow buffer
			DX = segment of shadow buffer
	    04h get shadow buffer info
		Return: BH = rows in shadow buffer
			BL = columns in shadow buffer
			DX = segment of shadow buffer
	    05h stop shadowing
Return: AL = FFh if DESQview not installed
Notes:	in DESQview v1.x, there were no subfunctions; this call only identified
	  whether or not DESQview was loaded.  DESQview v2.52 performs function
	  01h for all subfunction requests 0Ch and higher and appears to ignore
	  all lower-numbered functions not listed here.
	DESQview versions 2.50-2.52 are part of DESQview/X v1.0x; version 2.53
	  is part of DESQview/X v1.10; and version 2.63 is part of DESQview/X
	  v2.00.
BUG:	subfunction 05h does not appear to work correctly in DESQview 2.52
SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h

Top
212B--CX454C - INT 21 - ELRES v1.1 - INSTALLATION CHECK
INT 21 - ELRES v1.1 - INSTALLATION CHECK
	AH = 2Bh
	CX = 454Ch ('EL')
	DX = 5253h ('RS')
Return: ES:BX -> ELRES history structure (see #01381)
	DX = DABEh (signature, DAve BEnnett)
Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
	  Bennett which stores recent errorlevel values, allows them to be
	  retrieved for use in batch files, and can place them in an
	  environment variable
SeeAlso: AH=4Bh"ELRES",AH=4Dh

Format of ELRES history structure:
Offset	Size	Description	(Table 01381)
 00h	WORD	number of return codes which can be stored by following buffer
 02h	WORD	current position in buffer (treated as a ring)
 04h  N BYTEs	ELRES buffer

Top
212B00CX5643 - INT 21 - The Volkov Commander - GET POINTER TO LEFT PANEL DATA STRUCTURE
INT 21 - The Volkov Commander - GET POINTER TO LEFT PANEL DATA STRUCTURE
	AX = 2B00h
	CX = 5643h ('VC')
	DX = 4F4Dh ('OM')
Return: AL = 0
	ES:BX -> left panel data structure
Program: Volcov Commander is a shell for MS-DOS by Vsevolod V. Volkov
SeeAlso: AX=2B01h/CX=5643h,AX=2B02h/CX=5643h

Top
212B01CX5643 - INT 21 - The Volkov Commander - GET POINTER TO RIGHT PANEL DATA STRUCTURE
INT 21 - The Volkov Commander - GET POINTER TO RIGHT PANEL DATA STRUCTURE
	AX = 2B01h
	CX = 5643h ('VC')
	DX = 4F4Dh ('OM')
Return: AL = 0
	ES:BX -> right panel data structure
SeeAlso: AX=2B00h/CX=5643h,AX=2B02h/CX=5643h

Top
212B02CX5643 - INT 21 - The Volkov Commander - GET POINTER TO GLOBAL VARIABLES
INT 21 - The Volkov Commander - GET POINTER TO GLOBAL VARIABLES
	AX = 2B02h
	CX = 5643h ('VC')
	DX = 4F4Dh ('OM')
Return: AL = 0
	ES:BX -> global variables
SeeAlso: AX=2B00h/CX=5643h,AX=2B01h/CX=5643h

Top
212B01CX444D - INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
	AX = 2B01h
	CX = 444Dh ('DM')
	DX = 4158h ('AX')
Return: AX = 0000h if installed
	    BX = DOS-UP version (BH = minor, BL = major)
	    CX = 4845h ('HE')
	    DX = 5245h ('RE')
	    ES = DOS-UP driver segment

Top
212B01CX5441 - INT 21 - TAME v2.10+ - INSTALLATION CHECK
INT 21 - TAME v2.10+ - INSTALLATION CHECK
	AX = 2B01h
	CX = 5441h ('TA')
	DX = 4D45h ('ME')
---v2.60---
	BH = ???
	    00h skip ???, else do
Return: AL = 02h if installed
	ES:DX -> data area in TAME-RES (see #01382,#01386,#01388)
Program: TAME is a shareware program by David G. Thomas which gives up CPU
	  time to other partitions under a multitasker when the current
	  partition's program incessantly polls the keyboard or system time

Format of TAME 2.10-2.20 data area:
Offset	Size	Description	(Table 01382)
 00h	BYTE	data structure minor version number (01h in TAME 2.20)
 01h	BYTE	data structure major version number (07h in TAME 2.20)
 02h	DWORD	number of task switches
 06h	DWORD	number of keyboard polls
 0Ah	DWORD	number of time polls
 0Eh	DWORD	number of times DESQview told program runs only in foreground
 12h	DWORD	original INT 10h
 16h	DWORD	original INT 14h
 1Ah	DWORD	original INT 15h
 1Eh	DWORD	original INT 16h
 22h	DWORD	original INT 17h
 26h	DWORD	original INT 21h
 2Ah	DWORD	original INT 28h
 2Eh	WORD	offset of TAME INT 10h handler
 30h	WORD	offset of TAME INT 14h handler
 32h	WORD	offset of TAME INT 15h handler
 34h	WORD	offset of TAME INT 16h handler
 36h	WORD	offset of TAME INT 17h handler
 38h	WORD	offset of TAME INT 21h handler
 3Ah	WORD	offset of TAME INT 28h handler
 3Ch	WORD	X in /max:X,Y or /freq:X,Y
 3Eh	WORD	Y in /max:X,Y or /freq:X,Y
 40h	WORD	number of polls remaining before next task switch
 42h	WORD	/KEYIDLE value
 44h	BYTE	interrupts already grabbed by TAME (see #01383)
 45h	BYTE	flags for interrupts which may be acted on (same bits as above)
 46h	BYTE	TAME enabled (01h) or disabled (00h)
 47h	BYTE	/TIMEPOLL (01h) or /NOTIMEPOLL (00h)
 48h	BYTE	/NOTIMER (01h) or /TIMER (00h)
 49h	BYTE	window or task number for this task
 4Ah	BYTE	multitasker type (see #01384)
 4Bh	BYTE	type of task switching selected
		bit 0: DESQview???
		bit 1: DoubleDOS???
		bit 2: TopView???
		bit 3: KeySwitch
		bit 4: HLT instruction
 4Ch	BYTE	???
 4Dh	BYTE	flags
		bit 1: /FREQ instead of /MAX
 4Eh	BYTE	/FG: value
 4Fh	BYTE	task switches left until next FGONLY DESQview API call
 50h	BYTE	???

Bitfields for interrupts already grabbed by TAME:
Bit(s)	Description	(Table 01383)
 0	INT 10h
 1	INT 14h
 2	INT 15h
 3	INT 16h
 4	INT 17h
 5	INT 21h
 6	INT 28h

(Table 01384)
Values for multitasker type:
 01h	DESQview
 02h	DoubleDOS
 03h	TopView
 04h	OmniView
 05h	VM/386

Bitfields for type of task switching selected:
Bit(s)	Description	(Table 01385)
 0	DESQview
 1	DoubleDOS
 2	TopView
 3	OmniView
 4	KeySwitch
 5	HLT instruction

Format of TAME 2.30 data area:
Offset	Size	Description	(Table 01386)
 00h	BYTE	data structure minor version number (02h in TAME 2.30)
 01h	BYTE	data structure major version number (0Ah in TAME 2.30)
 02h	DWORD	number of task switches
 06h	DWORD	number of keyboard polls
 0Ah	DWORD	number of time polls
 0Eh	DWORD	number of times DESQview told program runs only in foreground
 12h	DWORD	time of last /CLEAR or TAME-RES load
 16h	DWORD	time yielded
 1Ah	DWORD	time spent polling
 1Eh	DWORD	time spent waiting on key input with INT 16/AH=01h,11h
 22h	DWORD	original INT 10h
 26h	DWORD	original INT 14h
 2Ah	DWORD	original INT 15h
 2Eh	DWORD	original INT 16h
 32h	DWORD	original INT 17h
 36h	DWORD	original INT 21h
 3Ah	DWORD	original INT 28h
 3Eh	WORD	offset of TAME INT 10h handler
 40h	WORD	offset of TAME INT 14h handler
 42h	WORD	offset of TAME INT 15h handler
 44h	WORD	offset of TAME INT 16h handler
 46h	WORD	offset of TAME INT 17h handler
 48h	WORD	offset of TAME INT 21h handler
 4Ah	WORD	offset of TAME INT 28h handler
 4Ch	WORD	X in /max:X,Y or /freq:X,Y
 4Eh	WORD	Y in /max:X,Y or /freq:X,Y
 50h	WORD	number of polls remaining before next task switch
 52h	WORD	/KEYIDLE value
 54h	WORD	/FG: value
 56h	WORD	task switches left until next FGONLY DESQview API call
 58h	WORD	multitasker version
 5Ah	WORD	virtual screen segment
 5Ch	BYTE	interrupts already grabbed by TAME (see #01383)
 5Dh	BYTE	flags for interrupts which may be acted on (same bits as above)
 5Eh	BYTE	window or task number for this task
 5Fh	BYTE	multitasker type (see #01384)
 60h	BYTE	type of task switching selected (bit flags) (see #01385)
 61h	BYTE	watch_DOS
 62h	BYTE	action flags (see #01387)
 63h	BYTE	old status
 64h	WORD	signature DA34h

Bitfields for TAME action flags:
Bit(s)	Description	(Table 01387)
 0	TAME enabled
 1	/FREQ instead of /MAX (X and Y count fields are per tick)
 2	/TIMEPOLL
 3	/KEYPOLL
 4	inhibit timer
 5	enable status monitoring
SeeAlso: #01386,#01388

Format of TAME 2.60 data area:
Offset	Size	Description	(Table 01388)
 00h	BYTE	data structure minor version number (02h in TAME 2.60)
 01h	BYTE	data structure major version number (0Bh in TAME 2.60)
 02h	DWORD	number of task switches
 06h	DWORD	number of keyboard polls
 0Ah	DWORD	number of time polls
 0Eh	DWORD	number of times DESQview told program runs only in foreground
 12h	DWORD	time of last /CLEAR or TAME-RES load
 16h	DWORD	time yielded
 1Ah	DWORD	time spent polling
 1Eh	DWORD	time spent waiting on key input with INT 16/AH=01h,11h
 22h  4 BYTEs	???
 26h	DWORD	original INT 10h
 2Ah	DWORD	original INT 14h
 2Eh	DWORD	original INT 15h
 32h	DWORD	original INT 16h
 36h	DWORD	original INT 17h
 3Ah	DWORD	original INT 21h
 3Eh	DWORD	original INT 28h
 42h	WORD	offset of TAME INT 10h handler
 44h	WORD	offset of TAME INT 14h handler
 46h	WORD	offset of TAME INT 15h handler
 48h	WORD	offset of TAME INT 16h handler
 4Ah	WORD	offset of TAME INT 17h handler
 4Ch	WORD	offset of TAME INT 21h handler
 4Eh	WORD	offset of TAME INT 28h handler
 50h	WORD	X in /max:X,Y or /freq:X,Y
 52h	WORD	Y in /max:X,Y or /freq:X,Y
 54h	WORD	number of polls remaining before next task switch
 56h	WORD	/KEYIDLE value
 58h  4 BYTEs	???
 5Ch	WORD	X in /boost:X,Y
 5Eh	WORD	Y in /boost:X,Y
 60h	WORD	/FG: value
 62h	WORD	task switches remaining until next FGONLY DESQview API call
 64h	WORD	multitasker version ???
 66h	WORD	virtual screen segment
 68h	BYTE	interrupts already grabbed by TAME (see #01383)
 69h	BYTE	flags for interrupts which may be acted on (same bits as above)
 6Ah	BYTE	window or task number for this task
 6Bh	BYTE	multitasker type (see #01384)
 6Ch	BYTE	type of task switching selected (bit flags) (see #01385)
 6Dh	BYTE	watch_DOS
 6Eh	BYTE	action flags (see #01387)
 6Fh	BYTE	old status
 70h	WORD	signature DA34h

Top
212B16CX0643 - INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
	AX = 2B16h
	CX = 0643h
Return: AX = 1603h if installed

Top
212B44BX4D41 - INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
	AX = 2B44h ('D')
	BX = 4D41h ('MA')
	CX = 7063h ('pc')
	DX = 4157h ('AW')
Return: AX = resident program
	    4F4Bh ('OK') if large host resident
	    6F6Bh ('ok') if small host resident
	CX:DX -> API entry point (see #01389)
SeeAlso: INT 16/AH=79h

(Table 01389)
Call pcANYWHERE API entry point with:
	AX = 0000h get pcANYWHERE IV version
	    DS:SI -> BYTE buffer for host type code
	    Return: AH = version number
		    AL = revision number
		    DS:DI buffer byte filled with
			00h full-featured host
			01h limited-feature LAN host
			other API may not be supported
	AX = 0001h initialize operation
	    DS:SI -> initialization request structure (see #01390)
	    Return: AX = function status (see #01393)
	AX = 0002h get status
	    Return: AH = current operating mode (see #01390)
		    AL = current connection status (see #01392)
	AX = 0003h suspend remote screen updates
	    Return: AX = function status (see #01393)
	AX = 0004h resume screen updates
	    Return: AX = function status (see #01393)
	AX = 0005h end current remote access session
	    DS:SI -> termination request structure (see #01391)
	    Return: AX = function status (see #01393)
	AX = 0006h remove pcANYWHERE IV from memory
	    Return: AX = status (see #01393)
	AX = 8000h read data from communications channel
	    DS:BX -> buffer
	    CX = buffer size
	    Return: AX >= number of characters read/available
		    AX < 0 on error
	AX = 8001h write data to communications channel
	    DS:BX -> buffer
	    CX = buffer size
	    Return: AX >= number of characters written
		    AX < 0 on error
	AX = 8002h get connection status
	    Return: AX = status
			> 0000h if connection active
			= 0000h if connection lost
			< 0000h on error

Format of pcANYWHERE initialization request structure:
Offset	Size	Description	(Table 01390)
 00h	BYTE	operating mode
		00h wait for a call
		01h hot key activates
		02h incoming call activates
		03h initiate a call
 01h  3 BYTEs	user ID to append to config file names
 04h	WORD	DS-relative pointer to path for config files
 06h	WORD	DS-relative pointer to path for program files

Format of pcANYWHERE termination request structure:
Offset	Size	Description	(Table 01391)
 00h	BYTE	operating mode after termination
		00h wait for a call
		01h hot key activates
		02h incoming call activates
		80h use current mode
		FFh remove from memory

Bitfields for current connection status:
Bit(s)	Description	(Table 01392)
 0	a physical connection is active
 1	remove screen updating is active
 2	connection checking is active
 3	hot key detection is active
 4	background file transfer is active

(Table 01393)
Values for pcANYWHERE function status:
 0000h	function completed successfully
 FFD1h	unable to release interrupt vectors
 FFD2h	unable to release allocated memory
 FFF2h	unable to establish a connection when operating mode is
	  "Initiate a call"
 FFF3h	modem configuration is invalid (corrupt config)
 FFF4h	modem initialization failed (no modem response)
 FFF5h	the communications device could not be initialized
 FFF6h	the host operator aborted the function
 FFF7h	the communications driver type specified in the configuration file is
	  different than the one loaded when pcANYWHERE IV was started
 FFF9h	the configuration file is invalid
 FFFAh	the configuration file could not be found
 FFFBh	no session is active
 FFFCh	a remote access session is active
 FFFDh	the specified operating mode is invalid

Top
212B--CX5643 - INT 21 - Volkov Commander - INSTALLATION CHECK
INT 21 - Volkov Commander - INSTALLATION CHECK
	AH = 2Bh
	CX = 5643h ('VC')
	DX = 4F4Dh ('OM')
	AL = function number
	    00h get left window data address
	    01h get right window data address
	    02h get address of general variables
Return: AL = 00h if Volkov Commander installed
	    AH = version code (27h for v4.00.039)
	    ES:BX -> requested data
Program: Volkov Commander is a Norton Commander-like DOS shell

Top
212B--CX6269 - INT 21 - WDTSR.COM - INSTALLATION CHECK
INT 21 - WDTSR.COM - INSTALLATION CHECK
	AH = 2Bh
	CX = 6269h ('bi')
	DX = 742Dh ('t-')
Return: AL = FFh if not installed
	AL = 77h ('w') if WDTSR is installed
	    CX = 6174h ('at')
	    DX = 6368h ('ch')
	    ES = resident code segment
	    ES:DI -> identification and configuration data
Program: WDTSR is a driver for the bitWatch watchdog hardware by bit-design
	  GmbH
SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 14/AH=14h"FOSSIL",INT 15/AH=C3h

Top
212B--CX6269 - INT 21 - bitFOSS - INSTALLATION CHECK
INT 21 - bitFOSS - INSTALLATION CHECK
	AH = 2Bh
	CX = 6269h ('bi')
	DX = 7446h ('tF')
Return: AL = FFh if not installed
	AL = 4Fh ('O') if bitFOSS is installed
	    CX = 5353h ('SS')
	    DX = 494Ch ('IL')
	    ES = resident code segment
	    ES:DI -> identification data
Program: bitFOSS is a revision 5 FOSSIL driver
SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 11/AH=BCh

Top
212B--CX6269 - INT 21 - bitFOSSI - INSTALLATION CHECK
INT 21 - bitFOSSI - INSTALLATION CHECK
	AH = 2Bh
	CX = 6269h ('bi')
	DX = 7449h ('tI')
Return: AL = FFh if not installed
	AL = 53h ('S') if bitFOSSI is installed
	    CX = 444Eh ('DN')
	    DX = 2D46h ('-F')
	    ES = resident code segment
	    ES:DI -> identification data
Program: bitFOSSI is a revision 5 FOSSIL driver for ???'s ISDN board
SeeAlso: AH=2Bh/CX=6269h"bitFOSS",INT 11/AH=BCh

Top
212C - INT 21 - DOS 1+ - GET SYSTEM TIME
INT 21 - DOS 1+ - GET SYSTEM TIME
	AH = 2Ch
Return: CH = hour
	CL = minute
	DH = second
	DL = 1/100 seconds
Note:	on most systems, the resolution of the system clock is about 5/100sec,
	  so returned times generally do not increment by 1
	on some systems, DL may always return 00h
SeeAlso: AH=2Ah,AH=2Dh,AH=E7h"Novell",INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
SeeAlso: INT 2F/AX=120Dh

Top
212C - INT 21 - VIRUS - "Anti Pode 2.0" - INSTALLATION CHECK
INT 21 - VIRUS - "Anti Pode 2.0" - INSTALLATION CHECK
	AH = 2Ch
Return: DL = F2h if resident
SeeAlso: AX=1812h"VIRUS",AX=2C2Ch

Top
212C00CX534B - INT 21 - SKUDO - INSTALLATION CHECK
INT 21 - SKUDO - INSTALLATION CHECK
	AX = 2C00h
	CX = 534Bh ('SK')
	DX = 5544h ('UD')
	BX = 4F21h ('O!')
Return: AX = 5349h ('SI') if installed
	    CH = version number
	    CL = subversion
Program: SKUDO is an antivirus TSR by Jordi Mas

Top
212C2C - INT 21 - VIRUS - "LockJaw/Proto-T" - INSTALLATION CHECK
INT 21 - VIRUS - "LockJaw/Proto-T" - INSTALLATION CHECK
	AX = 2C2Ch
Return: AX = 0DCDh if resident
SeeAlso: AH=2Ch"VIRUS",AX=3000h"VIRUS"

Top
212D - INT 21 - DOS 1+ - SET SYSTEM TIME
INT 21 - DOS 1+ - SET SYSTEM TIME
	AH = 2Dh
	CH = hour
	CL = minute
	DH = second
	DL = 1/100 seconds
Return: AL = result
	    00h successful
	    FFh invalid time, system time unchanged
Note:	DOS 3.3+ also sets CMOS clock; due to the limitations of the CLOCK$
	  driver interface, the CMOS date is also updated to the current
	  DOS date
SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"

Top
212D01CX7820 - INT 21 - PC-Mix - INSTALLATION CHECK
INT 21 - PC-Mix - INSTALLATION CHECK
	AX = 2D01h
	CX = 7820h ('X ')
	DX = 6D69h ('MI')
Return: AL = 00h if installed

Top
212E--DL00 - INT 21 - DOS 1+ - SET VERIFY FLAG
INT 21 - DOS 1+ - SET VERIFY FLAG
	AH = 2Eh
	DL = 00h (DOS 1.x/2.x only)
	AL = new state of verify flag
	    00h off
	    01h on
Notes:	default state at system boot is OFF
	when ON, all disk writes are verified provided the device driver
	  supports read-after-write verification
SeeAlso: AH=54h

Top
212F - INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
	AH = 2Fh
Return: ES:BX -> current DTA
Note:	under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
SeeAlso: AH=1Ah

Top
2130 - INT 21 - DOS 2+ - GET DOS VERSION
INT 21 - DOS 2+ - GET DOS VERSION
	AH = 30h
---DOS 5+ ---
	AL = what to return in BH
	    00h OEM number (see #01394)
	    01h version flag
Return: AL = major version number (00h if DOS 1.x)
	AH = minor version number
	BL:CX = 24-bit user serial number (most versions do not use this)
---if DOS <5 or AL=00h---
	BH = MS-DOS OEM number (see #01394)
---if DOS 5+ and AL=01h---
	BH = version flag
	    bit 3: DOS is in ROM
	    other: reserved (0)
Notes:	the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
	the OS/2 v2.x Compatibility Box returns major version 14h (20)
	OS/2 Warp 3.0 Virtual DOS Machines report v20.30; Warp 4 VDMs report
	  v20.40.
	the Windows NT DOS box returns version 5.00, subject to SETVER
	DOS 4.01 and 4.02 identify themselves as version 4.00; use
	  INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
	  and the later PC-DOS 4.0x and MS-DOS 4.0x
	IBM DOS 6.1 reports its version as 6.00; use the OEM number to
	  distinguish between MS-DOS 6.00 and IBM DOS 6.1 (there was never an
	  IBM DOS 6.0)
	IBM's PC DOS 7 and Y2K updates report themselves as IBM 7.0 to be
	  distinguished from the MS-DOS 7.0 portion of Windows 95.
	MS-DOS 6.21 reports its version as 6.20; version 6.22 returns the
	  correct value
	Windows95 returns version 7.00 (the underlying MS-DOS), as did the
	  "Chicago" beta (reported in _Microsoft_Systems_Journal_,August 1994);
	  Windows95 OSR2 and OSR2.5 (OPK3) return MS version 7.10
	DR DOS 5.0 and 6.0 report version 3.31; Novell DOS 7 reports IBM v6.00,
	  which some software displays as IBM DOS v6.10 (because of the version
	  mismatch in true IBM DOS, as mentioned above).  The Novell DOS 7
	  SETVER.EXE has an undocumented option /G x.y which sets the "global"
	  DOS version returned by this function for all executables not given
	  a specific version number in SETVER to major version x and minor
	  version y.
	Heiko Goeman's Advanced WinDOS 2.10/2.11/2.21 returns "IBM" DOS 5.00
	  (subject to SETVER) and serial number 0.
	All versions of CCI Multiuser DOS up to "CCI Multiuser DOS 7.22 Gold"
	  as of 1997-02-10 report DOS 3.31.
	DR DOS 3.31, 3.32, 3.33, 3.34, 3.35, 3.40, 3.41, 5.0, 6.0 and
	  DR PalmDOS/NetWare PalmDOS 1.0 report version 3.31;
	  DR DOS "Panther" BETA 1 and "StarTrek" report as 5.0.
	  Novell DOS 7, OpenDOS 7.01, DR-OpenDOS 7.02, DR-DOS 7.02, DR-DOS 7.03
	  all report themselves as IBM 6.00, which some software displays as
	  IBM DOS 6.10 (because of the version mismatch in true IBM DOS,
	  as mentioned above). Use INT 21/AX=4452h to distinguish the DR-DOS
	  family from PC DOS.
	The Novell DOS 7 and OpenDOS 7.01 SETVER.EXE has an undocumented
	  option /G x.y which sets the "global" DOS version returned by this
	  function for all executables not given a specific version number in
	  SETVER to major version x >= 5 and minor version y = 0..254,
	  y = 255 is used to disable the BDOS version check at INT 21/AX=4452h.
	A slightly modified option has been documented for DR-OpenDOS 7.02+:
	  in /X mode it now allows for x >= 1, while y >= 100 requires /X mode,
	  and y >= 128 is used to control advanced version control means now
	  (see below).
	DR-DOS 7.02+ IBMDOS.COM (since 1998-01-10) now recognizes optional
	  paths to filenames stored in the SETVER list. Previously such entries
	  were never found. This allows for a three staged model for SETVERed
	  versions:
	  highest priority = entry with path is matching.
	  middle priority = entry without path is matching.
	  lowest priority = use global version (SETVER /G).
	The DR-DOS 7.02+ SETVER 1.01+ (1998-01-12) has also been enhanced to
	  allow DOS *and* BDOS version faking (see INT 21/AX=4452h): In /X mode,
	  setting a sub-version of y = 128..255 will be reported as 0..127 DOS
	  sub-version, sub-versions of y = 100..127 will instead be used to
	  report this value as BDOS version (64h..7Fh) via INT 21/AX=4452h, and
	  the DOS revision stored in PCM_HEADER in the IBMDOS.COM file will
	  be used to report the DOS sub-version (usually this holds 0, but it
	  can be patched to other values, see INT 21/AX=4452h !!!).
	  Note, that DR-DOS SHARE 2.05+ (1998-01-05) has relaxed version
	  checking, and will install on any DOS revision 0..127, as long as
	  run on a DR-DOS 72h+ kernel (formerly it was bound to a revision
	  byte of 0 only).
	Under Novell DOS 7+, the SETVERing also affects the version number
	  WORD stored at offset +40h in each program's PSP (see #01378).
	  This holds true even for special sub-versions of 100..255
	  (see INT 21/AX=4452h).
	generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
	  as PC-DOS by returning OEM number 00h
	the version returned under DOS 4.0x may be modified by entries in
	  the special program list (see #01662 at AH=52h); the version returned
	  under DOS 5+ may be modified by SETVER--use AX=3306h to get the true
	  version number
SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
SeeAlso: AH=20h"S/DOS",INT 2F/AX=122Fh,INT 2F/AX=4010h,INT 2F/AX=4A33h
SeeAlso: INT 2F/AX=E002h

(Table 01394)
Values for DOS OEM number:
 00h *	IBM
     -	(Novell DOS, Caldera OpenDOS, DR-OpenDOS, and DR-DOS 7.02+ report IBM
	  as their OEM)
 01h *	Compaq
 02h *	MS Packaged Product
 04h *	AT&T
 05h *	ZDS (Zenith Electronics, Zenith Electronics)
	Note:	Zenith DOS 3.30 supports >32MB hard disks; this OEM ID can be
		  used to detect that support
 06h *	Hewlett-Packard
 07h *	Zenith Data Systems (ZDS, Groupe Bull), for DOS 5.0+
 08h *	Tandon
 09h *	AST (AST Europe Ltd.)
 0Ah *	Asem
 0Bh *	Hantarex
 0Ch *	SystemsLine
 0Dh *	Packard-Bell
 0Eh *	Intercomp
 0Fh *	Unibit
 10h *	Unidata
 16h *	DEC
 17h *	Olivetti DOS
 23h *	Olivetti (may have been a typo, since 23 = 17h)
 28h *	Texas Instruments
 29h *	Toshiba
 33h -	Novell (Windows/386 device IDs only)
 34h *	MS Multimedia Systems (Windows/386 device IDs only)
 35h *	MS Multimedia Systems (Windows/386 device IDs only)
 4Dh *	Hewlett-Packard (HP)
 5Eh -	RxDOS (Api Software & Mike Podanoffsky)	 http://www.freedos.org/
 66h -	PhysTechSoft (PTS-DOS)	http://www.phystechsoft.com/
	probably Paragon Technology Systems Corporation PTS-DOS as well
 99h -	General Software's Embedded DOS
 CDh -	Paragon Technology Systems Corporation ("Source DOS" S/DOS 1.0+)
	(see also INT 21/AH=20h"S/DOS")
 EDh -	reserved for future OpenDOS/DR-DOS based projects  http://www.drdos.org
 EEh	DR DOS
 EFh	Novell DOS
	Note:	released versions of Novell DOS 7 use OEM ID 00h instead
 FDh	FreeDOS	 http://www.freedos.org/
 FFh *	Microsoft, Phoenix (listed as "undefined" by Microsoft)
Notes:	'*' indicates an OEM release of MS-DOS, while '-' indicates an OEM
	  number used by a non-Microsoft DOS
	known OEM releases of MS-DOS:
	    AT&T DOS 3.10 (uses DOS 2.x cluster sizes and FAT structures)
	    Commodore DOS 3
	    Compaq DOS 3.31 (>32MB partitions similar to MS-DOS 4+)
	    Computerland DOS 3.10 (mix of DOS 2.x and 3.x disk mechanisms)
	    Eagle MS-DOS 1.25 (DOS 1.x with some hard disk support and built-in
		  ANSI.SYS functionality)
	    Epson Equity III DOS 3.10 (different clustering)
	    Leading Edge
	    NEC DOS 3.3
	    Olivetti DOS 2.11
	    Phoenix DOS 3.3, 4.01
	    Sanyo DOS 3.2
	    Tandy
	    Toshiba DOS
	    Unisys
	    Wyse MS-DOS 3
	    Zenith DOS 2.x (uses Zenith disk mechanism, extra drives at G:)
	    Zenith DOS 3.x (can be configured for Zenith or MS-DOS mechanism)
	    Zenith DOS 3.3 PLUS (>32MB partitions similar to MS-DOS 4+)

Top
2130 - INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
	AH = 30h
	EAX = 00003000h
	EBX = 50484152h ("PHAR")
Return: AL = major DOS version
	AH = minor DOS version
	EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
	    BL = ASCII major version number
	EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
	    EDX = address of GDA
SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h

Top
2130--DXABCD - INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
	AH = 30h
	DX = ABCDh
Return: DX = DCBAh if installed
SeeAlso: AX=0D20h,AH=30h/SI=1234h,AX=3000h"VIRUS",AX=30F1h

Top
2130--SI1234 - INT 21 - VIRUS - "ANDROMEDA-758" -INSTALLATION CHECK
INT 21 - VIRUS - "ANDROMEDA-758" -INSTALLATION CHECK
	AH = 30h
	SI = 1234h
Return: AX = FFDDh if resident
SeeAlso: AH=30h/DX=ABCDh,AX=3000h"VIRUS"

Top
213000BX1234 - INT 21 - CTask 2.0+ - INSTALLATION CHECK
INT 21 - CTask 2.0+ - INSTALLATION CHECK
	AX = 3000h
	BX = 1234h
	DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
Return: AL = DOS major version
	AH = DOS minor version
	CX:BX -> Ctask global data block
Program: CTask is a multitasking kernel for C written by Thomas Wagner
Note:	if first eight bytes of returned data block equal eight bytes passed
	  in, CTask is resident

Top
213000BX3000 - INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
	AX = 3000h
	BX = 3000h
	CX = DX = 3000h
Return: AX = PC-MOS version
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
	  system by The Software Link, Inc.
SeeAlso: AH=30h,INT D4/AH=02h,INT D4/AH=10h

Top
213000BX614A - INT 21 - VIRUS - "Jackal" - INSTALLATION CHECK
INT 21 - VIRUS - "Jackal" - INSTALLATION CHECK
	AX = 3000h
	BX = 614Ah ('aJ')
	CX = 6B63h ('kc')
	DX = 6C61h ('la')
Return: BX = ???
SeeAlso: AX=2C2Ch"VIRUS",AX=3030h"VIRUS"

Top
213022 - INT 21 - StopPrg v2.0 - INSTALLATION CHECK
INT 21 - StopPrg v2.0 - INSTALLATION CHECK
	AX = 3022h
Return: AX = DOS version (see AH=30h)
	CX = 1112h if StopPrg installed
	    BX = segment of resident code
Program: StopPrg is a resident program aborter by MAK-TRAXON's Prophet
Note:	StopPrg may be temporarily disabled by storing 9090h in the word at
	  0000h:04FEh

Top
213030BX694D - INT 21 - VIRUS - "IMTC" -INSTALLATION CHECK
INT 21 - VIRUS - "IMTC" -INSTALLATION CHECK
	AX = 3030h
	BX = 694Dh
Return: DX = 7443h if resident
SeeAlso: AX=3000h/BX=614Ah"VIRUS",AX=3032h"VIRUS"

Top
213032DX1234 - INT 21 - VIRUS - "Uruguay" - INSTALLATION CHECK
INT 21 - VIRUS - "Uruguay" - INSTALLATION CHECK
	AX = 3032h
	DX = 1234h
Return: AX = 5678h if resident
SeeAlso: AX=3030h"VIRUS",AX=30F1h"VIRUS"

Top
2130F1 - INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
	AX = 30F1h
Return: AL = 00h if resident
SeeAlso: AH=30h/DX=ABCDh,AX=3032h,AX=330Fh,AX=33DAh

Top
2130FFCX4445 - INT 21 - DESQ??? - INSTALLATION CHECK
INT 21 - DESQ??? - INSTALLATION CHECK
	AX = 30FFh
	CX = 4445h ("DE")
	DX = 5351h ("SQ")
Return: BH = 05h if installed
	???
Note:	called by DUBLDISK.COM v2.6; this function is not supported by
	  DESQview, so it may be for DESQview's precursor DESQ.
SeeAlso: AX=4404h"DUBLDISK"

Top
2131 - INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
	AH = 31h
	AL = return code
	DX = number of paragraphs to keep resident
Return: never
Notes:	the value in DX only affects the memory block containing the PSP;
	  additional memory allocated via AH=48h is not affected
	the minimum number of paragraphs which will remain resident is 11h
	  for DOS 2.x and 06h for DOS 3.0+
	most TSRs can save some memory by releasing their environment block
	  before terminating (see #01378 at AH=26h,AH=49h)
	any open files remain open, so one should close any files which will
	  not be used before going resident; to access a file which is left
	  open from the TSR, one must switch PSP segments first (see AH=50h)
SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27

Top
2132 - INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
	AH = 32h
	DL = drive number (00h = default, 01h = A:, etc)
Return: AL = status
	    00h successful
		DS:BX -> Drive Parameter Block (DPB) (see #01395) for specified
			  drive
	    FFh invalid or network drive
Notes:	the OS/2 compatibility box supports the DOS 3.3 version of this call
	  except for the DWORD at offset 12h
	this call updates the DPB by reading the disk; the DPB may be accessed
	  via the DOS list of lists (see #01627 at AH=52h) if disk access is not
	  desirable.
	undocumented prior to the release of DOS 5.0; only the DOS 4.0+
	  version of the DPB has been documented, however
	supported by DR DOS 3.41+; DR DOS 3.41-6.0 return the same data as
	  MS-DOS 3.31
	IBM ROM-DOS v4.0 also reports invalid/network (AL=FFh) on the ROM drive
SeeAlso: AH=1Fh,AH=52h,AX=7302h

Format of DOS Drive Parameter Block:
Offset	Size	Description	(Table 01395)
 00h	BYTE	drive number (00h = A:, 01h = B:, etc)
 01h	BYTE	unit number within device driver
 02h	WORD	bytes per sector
 04h	BYTE	highest sector number within a cluster
 05h	BYTE	shift count to convert clusters into sectors
 06h	WORD	number of reserved sectors at beginning of drive
 08h	BYTE	number of FATs
 09h	WORD	number of root directory entries
 0Bh	WORD	number of first sector containing user data
 0Dh	WORD	highest cluster number (number of data clusters + 1)
		16-bit FAT if greater than 0FF6h, else 12-bit FAT
 0Fh	BYTE	number of sectors per FAT
 10h	WORD	sector number of first directory sector
 12h	DWORD	address of device driver header (see #01646)
 16h	BYTE	media ID byte (see #01356)
 17h	BYTE	00h if disk accessed, FFh if not
 18h	DWORD	pointer to next DPB
---DOS 2.x---
 1Ch	WORD	cluster containing start of current directory, 0000h=root,
		FFFFh = unknown
 1Eh 64 BYTEs	ASCIZ pathname of current directory for drive
---DOS 3.x---
 1Ch	WORD	cluster at which to start search for free space when writing
 1Eh	WORD	number of free clusters on drive, FFFFh = unknown
---DOS 4.0-6.0---
 0Fh	WORD	number of sectors per FAT
 11h	WORD	sector number of first directory sector
 13h	DWORD	address of device driver header (see #01646)
 17h	BYTE	media ID byte (see #01356)
 18h	BYTE	00h if disk accessed, FFh if not
 19h	DWORD	pointer to next DPB
 1Dh	WORD	cluster at which to start search for free space when writing,
		usually the last cluster allocated
 1Fh	WORD	number of free clusters on drive, FFFFh = unknown
SeeAlso: #01357,#01663,#01787 at AX=7302h,#04039 at INT E0/CL=71h

Top
2133 - INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
	AH = 33h
	AL = subfunction
	    00h get current extended break state
		Return: DL = current state, 00h = off, 01h = on
	    01h set state of extended ^C/^Break checking
		DL = new state
		    00h off, check only on character I/O functions
		    01h on, check on all DOS functions
		Return: (Novell DOS 7) DL = old state of extended Break checks
Note:	under DOS 3.1+ and DR DOS, this function does not use any of the
	  DOS-internal stacks and may thus be called at any time
SeeAlso: AX=3302h

Top
213302 - INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
	AX = 3302h
	DL = new state (00h for OFF, 01h for ON)
Return: DL = old state of extended BREAK checking
Notes:	this function does not use any of the DOS-internal stacks and may thus
	  be called at any time; one possible use is modifying Control-Break
	  checking from within an interrupt handler or TSR
	not supported by DR DOS through version 6.0 (error code 01h);
	  newly-supported by Novell DOS 7
SeeAlso: AH=33h

Top
213303 - INT 21 - DOS 3.4/4.0 - GET CURRENT CPSW STATE
INT 21 - DOS 3.4/4.0 - GET CURRENT CPSW STATE
	AX = 3303h
Return: DL = current CPSW
Notes:	this function and AX=3304h were intended to support a proposed
	  code-page switching flag (using the WORD at offset 0Ch in the DOS
	  directory entry for codepage information); however, this function
	  has always been a NOP in public releases of DOS and OS/2.
	  See _DOS_Internals_ Chapter 2 for more information.
	the released MS-DOS 4.00 IO.SYS has an undocumented CONFIG.SYS
	  directive named CPSW= and that beside others the MS-DOS 4.00 ATTRIB
	  supported a number of undocumented special parameters for
	  "predefined" Extended Attributes (EAs) e.g.
	  ATTRIB filename [(CODEPAGE|CP)[=new_value]].
	this function does not use any of the DOS-internal stacks and may
	   thus be called at any time. It is directly dispatched from
	   the INT 21h entry point with interrupts disabled.
SeeAlso: AX=3304h

Top
213304 - INT 21 - DOS 3.4/4.0 - SET CPSW STATE
INT 21 - DOS 3.4/4.0 - SET CPSW STATE
	AX = 3304h
	DL = new CPSW state
Return: nothing
Notes:	this function and AX=3303h were intended to support a proposed
	  code-page switching flag (using the WORD at offset 0Ch in the DOS
	  directory entry for codepage information); however, this function
	  has always been a NOP in public releases of DOS and OS/2.
	  See _DOS_Internals_ Chapter 2 for more information.
	the released MS-DOS 4.00 IO.SYS has an undocumented CONFIG.SYS
	  directive named CPSW= and that beside others the MS-DOS 4.00 ATTRIB
	  supported a number of undocumented special parameters for
	  "predefined" Extended Attributes (EAs) e.g.
	  ATTRIB filename [(CODEPAGE|CP)[=new_value]].
	this function does not use any of the DOS-internal stacks and may
	   thus be called at any time. It is directly dispatched from
	   the INT 21h entry point with interrupts disabled.
SeeAlso: AX=3303h,AH=11h,AX=5702h

Top
213305 - INT 21 - DOS 4.0+ - GET BOOT DRIVE
INT 21 - DOS 4.0+ - GET BOOT DRIVE
	AX = 3305h
Return: DL = boot drive (1=A:,...)
Notes:	This function does not use any of the DOS-internal stacks and may
	   thus be called at any time.  It is directly dispatched from
	   the INT 21h entry point with interrupts disabled.
	NEC 9800-series PCs always call the boot drive A: and assign the other
	  drive letters sequentially to the other drives in the system
	this call is supported by OS/2 Warp 3.0, but not earlier versions of
	  OS/2; it is also supported by Novell DOS 7

Top
213306 - INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
	AX = 3306h
Return: BL = major version
	BH = minor version
	DL = revision (bits 2-0, all others 0)
	DH = version flags
	    bit 3: DOS is in ROM
	    bit 4: DOS is in HMA
	AL = FFh if true DOS version < 5.0
Notes:	this function always returns the true version number, unlike AH=30h,
	  whose return value may be changed with SETVER
	because of the conflict from the CBIS redirector (see next
	  entry), programs should check whether BH is less than 100 (64h)
	  and BL is at least 5 before accepting the returned BX as the true
	  version number; however, even this is not entirely reliable when
	  that redirector is loaded
	Under MS-DOS/PC DOS, DR DOS, PTS-DOS, S/DOS this function does not
	  use any of the DOS internal stacks and thus is fully reentrant
	OS/2 v2.1 will return BX=0A14h (version 20.10)
	Windows 95 and Windows 95 SP1 return version 7.00; Windows 95 OSR2
	  and OPK3 (OSR2.5) return version MS 7.10.
	the Windows NT DOS box returns BX=3205h (version 5.50)
	Novell DOS 7 returns IBM v6.00, which some software displays as
	  IBM DOS v6.10 (because of the version mismatch in true IBM DOS
	  mentioned for INT 21/AH=30h); versions through Update 15 all
	  return revision code 00h
	Windows95 and Windows95 SP1 return version 7.00; Windows95 OSR2 returns
	  version 7.10
	Heiko Goeman's Advanced WinDOS 2.10/2.11/2.21 returns DOS 5.00, 
	  revision 0.
	Novell DOS 7, OpenDOS 7.01, DR-OpenDOS 7.02, DR-DOS 7.02, DR-DOS 7.03
	  all return IBM 6.00, which some software displays as IBM DOS 6.10
	  (because of the version mismatch in true IBM DOS mentioned for
	  INT 21/AH=30h); versions through Novell DOS 7 Update 15.2 (01/1996)
	  all return revision code 00h. The DOS revision is stored in bits 7-0
	  of the "patch_version" field in the PCM_HEADER structure in the
	  IBMDOS.COM file (see also INT 21/AX=4452h !!!). The version
	  flags (DH) are stored in bits 15-8 of "patch_version", but is updated
	  at runtime to reflect the actual status. "patch_version" is also
	  reported as DX in INT 21/AX=4452h.
	Unlike MS-DOS, under Novell DOS 7+ IBMDOS.COM will also allow to
	  SETVER the returned "true" DOS version same as with INT 21/AX=3000h
	  and INT 21/AX=3001h.
	DR-DOS 7.02+ IBMDOS.COM (since 1998-01-10) now recognizes optional
	  paths to filenames stored in the SETVER list. Previously such
	  entries were never found. This enables a three staged model of
	  SETVERed versions:
	  highest priority = entry with path is matching.
	  middle priority = entry without path is matching.
	  lowest priority = use global version (SETVER /G).
	The DR-DOS 7.02+ SETVER 1.01+ (1998-01-12) has also been enhanced to
	  allow BDOS and DOS version faking (see INT 21/AX=4452h). In /X mode,
	  a set sub-version of y = 128..255 will be reported as 0..127 DOS
	  sub-version, sub-versions of y = 100..127 will be used to report this
	  value as BDOS version (64h..7Fh) with INT 21/AX=4452h instead while
	  bits 6-0 of the DOS revision stored in PCM_HEADER in the IBMDOS.COM
	  file will be used to report the BH DOS sub-version 0..127 (usually
	  this holds 0, but it can be patched to other values).
	DR-DOS SHARE 2.05 (1998-01-05) has relaxed version checking now, and
	  will install on any DOS revision 0..127 (formerly it was bound to
	  DOS revision 0 only), as long as run on a DR-DOS 72h or 73h BDOS
	  kernel.  Hence, if there will be changes in the SHARE implementation
	  without changing the BDOS version, DR-DOS SHARE 2.05 can still be
	  stopped from installing by changing the DOS revision in PCM_HEADER
	  to something in the range 128..255.
	Under Novell DOS 7+, the version SETVERing also affects the version
	  number WORD stored at offset +40h in each program's PSP (see
	  Table xxxx at INT 21/AH=26h). This holds true even for special
	  sub-versions of 100..255 (see INT 21/AX=4452h).
	S/DOS 1.0 (1995) returns a DOS revision of 9, while its own PTS OEM
	  revision still defaults to 0 (see also INT 21/AH=20h"S/DOS").
BUG:	DR DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
	  subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
	  for invalid subfunctions
SeeAlso: AH=30h,INT 2F/AX=122Fh,INT 2F/AX=E000h"SETDRVER"

Top
213306 - INT 21 - CBIS network - NETWORK REDIRECTOR - ???
INT 21 - CBIS network - NETWORK REDIRECTOR - ???
	AX = 3306h
Return: AX = 3306h
	BL = ??? (usually 00h)
	BH = ??? (usually 00h or FFh)
Note:	unknown function, is in conflict with DOS 5+ version call
SeeAlso: AX=3306h"DOS"

Top
213307 - INT 21 - Windows95 - SET/CLEAR DOS_FLAG
INT 21 - Windows95 - SET/CLEAR DOS_FLAG
	AX = 3307h
	DL = subfunction
	    00h clear bit 5 of "DOS_FLAG"
	    01h set bit 5 of "DOS_FLAG"
Return: ???

Top
21330F - INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
	AX = 330Fh
Return: AL = 0Fh if resident (DOS returns AL=FFh)
SeeAlso: AX=30F1h,AX=33DAh,AX=33E0h

Top
213341 - INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
	AX = 3341h
Return: DX = 1234h if installed
	    CX = resident code segment
Program: Diet Disk is a public domain transparent data file compressor by
	  Barry Nance

Top
2133DA - INT 21 - VIRUS - "CoffeeShop" - INSTALLATION CHECK
INT 21 - VIRUS - "CoffeeShop" - INSTALLATION CHECK
	AX = 33DAh
Return: AH = A5h if resident
	    AL = virus version
SeeAlso: AX=33DB,AX=33DCh,AX=330Fh,AX=33E0h,AX=5643h"VIRUS"

Top
2133DB - INT 21 - VIRUS - "CoffeeShop" - GENERATE RANDOM NUMBER
INT 21 - VIRUS - "CoffeeShop" - GENERATE RANDOM NUMBER
	AX = 33DBh
Return:	???
SeeAlso: AX=33DAh,AX=33DCh

Top
2133DC - INT 21 - VIRUS - "CoffeeShop" - DISPLAY "LEGALIZE CANNABIS" GRAPHIC
INT 21 - VIRUS - "CoffeeShop" - DISPLAY "LEGALIZE CANNABIS" GRAPHIC
	AX = 33DCh
Return:	???
SeeAlso: AX=33DAh,AX=33DBh

Top
2133E0 - INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
	AX = 33E0h
Return: AL = E0h if resident (DOS returns AL=FFh)
SeeAlso: AX=330Fh,AX=33DAh,AX=357Fh

Top
2134 - INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
	AH = 34h
Return: ES:BX -> one-byte InDOS flag
Notes:	this function executes on the DOS stack, and thus cannot be called
	  while another DOS function is already executing; you should use
	  this function once at the beginning of the program and store the
	  returned pointer rather than calling it when requiring DOS access
	the value of InDOS is incremented whenever an INT 21 function begins
	  and decremented whenever one completes
	during an INT 28 call, it is safe to call some INT 21 functions even
	  though InDOS may be 01h instead of zero
	InDOS alone is not sufficient for determining when it is safe to
	  enter DOS, as the critical error handling decrements InDOS and
	  increments the critical error flag for the duration of the critical
	  error.  Thus, it is possible for InDOS to be zero even if DOS is
	  busy.
	SMARTDRV 4.0 sets the InDOS flag while flushing its buffers to disk,
	  then zeros it on completion
	the critical error flag is the byte immediately following InDOS in
	  DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3.0+ and
	  DR DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
	  is located 1AAh bytes BEFORE the critical section flag)
	for DOS 3.1+, an undocumented call exists to get the address of the
	  critical error flag (see AX=5D06h)
	this function was undocumented prior to the release of DOS 5.0.
SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28

Top
2135 - INT 21 - DOS 2+ - GET INTERRUPT VECTOR
INT 21 - DOS 2+ - GET INTERRUPT VECTOR
	AH = 35h
	AL = interrupt number
Return: ES:BX -> current interrupt handler
Note:	under DR DOS 5.0+, this function does not use any of the DOS-internal
	  stacks and may thus be called at any time
SeeAlso: AH=25h,AX=2503h

Top
213501 - INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
	AX = 3501h
Return: CF clear if successful
	    BX = new selector
	CF set on error (no more selectors available)
Note:	the new selector will be an expand-up read/write data selector with
	  undefined base and limit
SeeAlso: AX=3502h,INT 31/AX=0000h

Top
213502 - INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
	AX = 3502h
	BX = selector
Return: CF clear if successful
	CF set on error (invalid selector)
Note:	only selectors allocated via AX=3501h should be deallocated
SeeAlso: AX=3501h,INT 31/AX=0001h

Top
213503 - INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
	AX = 3503h
	BX = selector
	ECX = base address
Return: CF clear if successful
	CF set on error (invalid selector)
SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h

Top
213504 - INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
	AX = 3504h
	BX = selector
Return: CF clear if successful
	    ECX = absolute base address of selector
	CF set on error (invalid selector)
SeeAlso: AX=3503h,INT 31/AX=0006h

Top
213505 - INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
	AX = 3505h
	BX = selector
	ECX = desired limit
Return: CF clear if successful
	    ECX = actual limit set
	CF set on error (no more selectors available)
Note:	the limit will be rounded down to nearest 4K boundary if the requested
	  limit is greater than 1MB
SeeAlso: AX=3503h,INT 31/AX=0008h

Top
21350A - INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
	AX = 350Ah
	EBX = absolute physical address
	ECX = size in bytes of area to map
Return: CF clear if successful
	CF set on error (insufficient memory or service refused by DPMI host)
Notes:	should not make repeated calls for the same physical address
	there is no provision for unmapping memory

Top
21350B - INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
	AX = 350Bh
	DS = default selector for DS
Return: CF clear
	EAX = maximum amount of memory which can be allocated via AX=350Ch
SeeAlso: AX=350Ch

Top
21350C - INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
	AX = 350Ch
	ECX = size of block in bytes
	DS = default DS
Return: CF clear if successful
	    EAX = near pointer to new block
	    EDX = new lowest legal value for stack
	CF set on error (requested size not multiple of 4K)
SeeAlso: AX=350Bh,AX=350Dh

Top
21350D - INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
	AX = 350Dh
	EBX = current ESP value
	ECX = size of block in bytes
	DS = default DS
Return: CF clear if successful
	    EBX = new value for ESP
	    EDX = suggested new limit for SS
	CF set on error
Note:	this function should only be called once during initialization
SeeAlso: AX=350Bh,AX=350Ch

Top
21357F - INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
	AX = 357Fh
Return: DX = FFFFh if installed
SeeAlso: AX=33E0h,AX=3DFFh

Top
2136 - INT 21 - DOS 2+ - GET FREE DISK SPACE
INT 21 - DOS 2+ - GET FREE DISK SPACE
	AH = 36h
	DL = drive number (00h = default, 01h = A:, etc)
Return: AX = FFFFh if invalid drive
	else
	    AX = sectors per cluster
	    BX = number of free clusters
	    CX = bytes per sector
	    DX = total clusters on drive
Notes:	free space on drive in bytes is AX * BX * CX
	total space on drive in bytes is AX * CX * DX
	"lost clusters" are considered to be in use
	according to Dave Williams' MS-DOS reference, the value in DX is
	  incorrect for non-default drives after ASSIGN is run
	this function does not return proper results on CD-ROMs;
	  use AX=4402h"CD-ROM" instead
	(FAT32 drive) the reported total and free space are limited to 2G-32K
	  should they exceed that value
SeeAlso: AH=1Bh,AH=1Ch,AX=4402h"CD-ROM",AX=7303h

Top
213700 - INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
	AX = 3700h
Return: AL = status
	    00h successful
		DL = current switch character
	    FFh unsupported subfunction
Desc:	Determine the character which is used to introduce command switches.
	  This setting is ignored by MS-DOS commands in version 4.0 and higher,
	  but is honored by many third-party programs and by Novell DOS 7
	  external commands
BUG:	Novell DOS 7's COMMAND.COM (prior to Update 15) fails to honor the
	  SwitChar setting for internal commands even though COMMAND.COM
	  honors it in its own command tail (i.e. COMMAND /?); even in Update
	  15, internal commands fail to honor SwitChar for the /? help option
Notes:	documented in some OEM versions of some releases of DOS
	supported by OS/2 compatibility box
	always returns AL=00h/DL=2Fh for MS-DOS 5+ and DR DOS 3.41-6.0
	Novell DOS 7 COMMAND.COM indicates switch characters other than '/'
	  by changing the first backslash (and only the first one) in the
	  path it prints for PROMPT $p with a forward slash
SeeAlso: AX=3701h

Top
213701 - INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
	AX = 3701h
	DL = new switch character
Return: AL = status
	    00h successful
	    FFh unsupported subfunction
Notes:	documented in some OEM versions of some releases of DOS; DOS 2.x had
	  a SWITCHAR=c setting in CONFIG.SYS
	supported by OS/2 compatibility box and Novell DOS 7
	ignored by MS-DOS 5+ and DR DOS 3.41-6.0; DR DOS 6.0 and Novell DOS 7
	  leave AX unchanged
SeeAlso: AX=3700h

Top
2137 - INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
	AH = 37h
	AL = subfunction
	    02h get availdev flag
		Return: DL = 00h \DEV\ must precede character device names
			   = nonzero \DEV\ is optional
	    03h set availdev flag
		DL = new state
		    00h		\DEV\ is mandatory
		    nonzero	\DEV\ is optional
Return: AL = status
	    00h successful
	    FFh unsupported subfunction
Notes:	all versions of DOS from 2.00 allow \DEV\ to be prepended to device
	  names without generating an error even if the directory \DEV does
	  not actually exist (other paths generate an error if they do not
	  exist); DOS 2.x has an AVAILDEV= option in CONFIG.SYS to make \DEV
	  mandatory
	although MS-DOS 3.3+, DR DOS 3.41+, and Novell DOS 7 accept these
	  calls, they have no effect, and AL=02h always returns DL=FFh (except
	  for Novell DOS 7, which leaves AX unchanged for both subfunctions)

Top
2137A0BX6A6D - INT 21 - XPACK v1.52+ - TSR INSTALLATION CHECK
INT 21 - XPACK v1.52+ - TSR INSTALLATION CHECK
	AX = 37A0h
	BX = 6A6Dh ('jm')
Return: AL = FFh if not present as TSR (default return value from DOS)
	AX = 0000h if installed as a TSR
	    CX = 6A6Dh ('jm')
	    DX = version ID (0152h)
Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
SeeAlso: AX=37A1h/BX=6A6Dh,AX=37A3h/BX=6A6Dh

Top
2137A1BX6A6D - INT 21 - XPACK v1.52+ - UNINSTALL
INT 21 - XPACK v1.52+ - UNINSTALL
	AX = 37A1h
	BX = 6A6Dh ('jm')
Return: AX = status
	    0000h successful
	    FFFFh failed
Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
SeeAlso: AX=37A0h/BX=6A6Dh

Top
2137A2BX6A6D - INT 21 - XPACK v1.52+ - GET TSR STATUS
INT 21 - XPACK v1.52+ - GET TSR STATUS
	AX = 37A2h
	BX = 6A6Dh ('jm')
Return: AX = 0000h (successful)
	DL = status (01h active, 00h disabled)
SeeAlso: AX=37A3h/BX=6A6Dh

Top
2137A3BX6A6D - INT 21 - XPACK v1.52+ - SET TSR STATUS
INT 21 - XPACK v1.52+ - SET TSR STATUS
	AX = 37A3h
	BX = 6A6Dh ('jm')
	DL = status (01h active, 00h disabled)
Return: AX = 0000h (successful)
SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A2h/BX=6A6Dh

Top
2137A6BX6A6D - INT 21 - XPACK v1.65 - GET TEMPORARY DIRECTORY NAME
INT 21 - XPACK v1.65 - GET TEMPORARY DIRECTORY NAME
	AX = 37A6h
	BX = 6A6Dh ('jm')
Return: AX = 0000h
	DS:DX -> name of temporary directory
Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A7h/BX=6A6Dh

Top
2137A7BX6A6D - INT 21 - XPACK v1.65 - SET TEMPORARY DIRECTORY NAME
INT 21 - XPACK v1.65 - SET TEMPORARY DIRECTORY NAME
	AX = 37A7h
	BX = 6A6Dh ('jm')
	DS:DX -> ASCIZ name of temporary directory (max 64 chars)
Return: AX = 0000h
Note:	the specified directory name must include a drive letter and end with
	  a backslash (e.g. 'c:\dos\',0)
SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A6h/BX=6A6Dh

Top
2137D0BX899D - INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
	AX = 37D0h
	BX = 899Dh ('DI' + 'ET')
Return: AL = FFh if not present as TSR (default return value from DOS)
	AX = 0000h if installed as a TSR
	    CX = 899Dh
	    DX = version ID
Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
SeeAlso: AX=37D1h,AX=37D2h,AX=37D4h,AX=37D6h,AX=37DFh,AX=4BF0h,AX=4BF1h

Top
2137D1BX899D - INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
	AX = 37D1h
	BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
	CX = code segment of TSR part of DIET.EXE
	DX = memory block segment of TSR DIET.EXE
		(0000h if installed as device driver)
SeeAlso: AX=37D0h,AX=37DFh

Top
2137D2BX899D - INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
	AX = 37D2h
	BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
	DL = control flag (00h active, else disabled)
	DH = skip flag (nonzero while TSR active)
SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h

Top
2137D3BX899D - INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
	AX = 37D3h
	BX = 899Dh ('DI' + 'ET')
	DL = control flag (00h active, else disabled)
	DH = skip flag (00h)
Return: AX = 0000h
SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h

Top
2137D4BX899D - INT 21 - DIET v1.43e - GET TSR OPTIONS
INT 21 - DIET v1.43e - GET TSR OPTIONS
	AX = 37D4h
	BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
	DX = TSR options (see #01396)
SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h

Bitfields for DIET TSR options:
Bit(s)	Description	(Table 01396)
 0	automated compression of DIETed file
 1	automated compression of newly-created file
 2	suppress DIET message
 3	display original file size
 4-15	reserved (0)

Top
2137D5BX899D - INT 21 - DIET v1.43e - SET TSR OPTIONS
INT 21 - DIET v1.43e - SET TSR OPTIONS
	AX = 37D5h
	BX = 899Dh ('DI' + 'ET')
	DX = TSR options (see #01396)
Return: AX = 0000h
Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h

Top
2137D6BX899D - INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
	AX = 37D6h
	BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
	DS:DX -> name of temporary directory or 0000h:0000h for current dir
SeeAlso: AX=37D0h,AX=37D7h

Top
2137D7BX899D - INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
	AX = 37D7h
	BX = 899Dh ('DI' + 'ET')
	DS:DX -> ASCIZ name of temporary directory (max 61 chars)
		0000h:0000h for current directory
Return: AX = 0000h
Note:	the specified directory name must include a drive letter and end with
	  a backslash
SeeAlso: AX=37D0h,AX=37D6h

Top
2137DCBX899D - INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
	AX = 37DCh
	BX = 899Dh ('DI' + 'ET')
	DS:DX -> external procedure (see #01397)
Return: AX = 0000h
Note:	the resident code will call the specified external procedure at the
	  beginning of decompression and when compression is exited on failure
SeeAlso: AX=37DDh

(Table 01397)
Values DIET external procedure is called with:
	STACK:	WORD	class
			FFFDh creation failed for unknown reasons
			FFFEh creation failed due to lack of space
			FFFFh file creation error
			else file handle of DIETed file to be decompressed
		DWORD	-> compressed filename
		DWORD	-> decompressed or temporary filename
Return: SI,DI,BP,DS,ES must be preserved by external procedure

Top
2137DDBX899D - INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
	AX = 37DDh
	BX = 899Dh ('DI' + 'ET')
Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
Note:	unlinks the external procedure specified by AX=37DCh
SeeAlso: AX=37DCh

Top
2137DEBX899D - INT 21 - DIET v1.43e - READ EMS STATUS
INT 21 - DIET v1.43e - READ EMS STATUS
	AX = 37DEh
	BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
	CX = EMS status
	    0000h not used
	    0001h used as work area
	    0002h used for code and as work area
	DX = EMM handle when EMS is in use

Top
2137DFBX899D - INT 21 - DIET v1.43e - UNINSTALL TSR
INT 21 - DIET v1.43e - UNINSTALL TSR
	AX = 37DFh
	BX = 899Dh ('DI' + 'ET')
Return: AX = status
	    0000h successful
	    00FFh failed
Program: DIET is a transparent file compressor/decompressor by Teddy Matsumoto
SeeAlso: AX=37D0h
Index:	uninstall;DIET

Top
2138 - INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
	AH = 38h
--DOS 2.x--
	AL = 00h get current-country info
	DS:DX -> buffer for returned info (see #01398,#01399)
Return: CF set on error
	    AX = error code (02h)
	CF clear if successful
	    AX = country code (MS-DOS 2.11 only)
	    buffer at DS:DX filled
--DOS 3.0+--
	AL = 00h for current country
	AL = 01h thru 0FEh for specific country with code <255 (see #01400)
	AL = 0FFh for specific country with code >= 255
	   BX = 16-bit country code (see #01400)
	DS:DX -> buffer for returned info (see #01399)
Return: CF set on error
	    AX = error code (02h)
	CF clear if successful
	    AX = country code (Novell NWDOS v7.0)
	    BX = country code
	    DS:DX buffer filled
Note:	this function is not supported by the Borland DPMI host, but no error
	  is returned; as a workaround, one should allocate a buffer in
	  conventional memory with INT 31/AX=0100h and simulate an INT 21 with
	  INT 31/AX=0300h
SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=1404h

Format of DOS 2.00-2.10 country info:
Offset	Size	Description	(Table 01398)
 00h	WORD	date format  0 = USA	mm dd yy
			     1 = Europe dd mm yy
			     2 = Japan	yy mm dd
 02h	BYTE	currency symbol
 03h	BYTE	00h
 04h	BYTE	thousands separator char
 05h	BYTE	00h
 06h	BYTE	decimal separator char
 07h	BYTE	00h
 08h 24 BYTEs	reserved

Format of DOS 2.11+ country info:
Offset	Size	Description	(Table 01399)
 00h	WORD	date format (see #01398)
 02h  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

(Table 01400)
Values for country code:
 001h (1)	United States
 002h (2)	Canadian-French
 003h (3)	Latin America
 004h (4)	Canada (English)
 007h (7)	Russia
 014h (20)	Egypt
 01Bh (27)	South Africa
 01Eh (30)	Greece
 01Fh (31)	Netherlands
 020h (32)	Belgium
 021h (33)	France
 022h (34)	Spain
 023h (35)	Bulgaria???
 024h (36)	Hungary (not supported by DR DOS 5.0)
 026h (38)	Yugoslavia (not supported by DR DOS 5.0) -- obsolete
 027h (39)	Italy / San Marino / Vatican City
 028h (40)	Romania
 029h (41)	Switzerland / Liechtenstein
 02Ah (42)	Czechoslovakia / Tjekia / Slovakia (not supported by DR DOS 5.0)
 02Bh (43)	Austria (DR DOS 5.0)
 02Ch (44)	United Kingdom
 02Dh (45)	Denmark
 02Eh (46)	Sweden
 02Fh (47)	Norway
 030h (48)	Poland (not supported by DR DOS 5.0)
 031h (49)	Germany
 033h (51)	Peru
 034h (52)	Mexico
 035h (53)	Cuba
 036h (54)	Argentina
 037h (55)	Brazil (not supported by DR DOS 5.0)
 038h (56)	Chile
 039h (57)	Columbia
 03Ah (58)	Venezuela
 03Ch (60)	Malaysia
 03Dh (61)	International English / Australia
 03Eh (62)	Indonesia / East Timor
 03Fh (63)	Philippines
 040h (64)	New Zealand
 041h (65)	Singapore
 042h (66)	Thailand (or Taiwan???)
 051h (81)	Japan (DR DOS 5.0, MS-DOS 5.0+)
 052h (82)	South Korea (DR DOS 5.0)
 054h (84)	Vietnam
 056h (86)	China (MS-DOS 5.0+)
 058h (88)	Taiwan (MS-DOS 5.0+)
 05Ah (90)	Turkey (MS-DOS 5.0+)
 05Bh (91)	India
 05Ch (92)	Pakistan
 05Dh (93)	Afghanistan
 05Eh (94)	Sri Lanka
 062h (98)	Iran
 063h (99)	Asia (English)
 066h (102)	??? (Hebrew MS-DOS 5.0)
 070h (112)	Belarus
 0C8h (200)	Thailand (PC DOS 6.1+)
		(reported as 01h due to a bug in PC DOS COUNTRY.SYS)
 0D4h (212)	Morocco
 0D5h (213)	Algeria
 0D8h (216)	Tunisia
 0DAh (218)	Libya
 0DCh (220)	Gambia
 0DDh (221)	Senegal
 0DEh (222)	Maruitania
 0DFh (223)	Mali
 0E0h (224)	African Guinea
 0E1h (225)	Ivory Coast
 0E2h (226)	Burkina Faso
 0E3h (227)	Niger
 0E4h (228)	Togo
 0E5h (229)	Benin
 0E6h (230)	Mauritius
 0E7h (231)	Liberia
 0E8h (232)	Sierra Leone
 0E9h (233)	Ghana
 0EAh (234)	Nigeria
 0EBh (235)	Chad
 0ECh (236)	Centra African Republic
 0EDh (237)	Cameroon
 0EEh (238)	Cape Verde Islands
 0EFh (239)	Sao Tome and Principe
 0F0h (240)	Equatorial Guinea
 0F1h (241)	Gabon
 0F2h (242)	Congo
 0F3h (243)	Zaire
 0F4h (244)	Angola
 0F5h (245)	Guinea-Bissau
 0F6h (246)	Diego Garcia
 0F7h (247)	Ascension Isle
 0F8h (248)	Seychelles
 0F9h (249)	Sudan
 0FAh (250)	Rwhanda
 0FBh (251)	Ethiopia
 0FCh (252)	Somalia
 0FDh (253)	Djibouti
 0FEh (254)	Kenya
 0FFh (255)	Tanzania
 100h (256)	Uganda
 101h (257)	Burundi
 103h (259)	Mozambique
 104h (260)	Zambia
 105h (261)	Madagascar
 106h (262)	Reunion Island
 107h (263)	Zimbabwe
 108h (264)	Namibia
 109h (265)	Malawi
 10Ah (266)	Lesotho
 10Bh (267)	Botswana
 10Ch (268)	Swaziland
 10Dh (269)	Comoros
 10Eh (270)	Mayotte
 122h (290)	St. Helena
 129h (297)	Aruba
 12Ah (298)	Faroe Islands
 12Bh (299)	Greenland
 15Eh (350)	Gibraltar
 15Fh (351)	Portugal
 160h (352)	Luxembourg
 161h (353)	Ireland
 162h (354)	Iceland
 163h (355)	Albania
 164h (356)	Malta
 165h (357)	Cyprus
 166h (358)	Finland
 167h (359)	Bulgaria
 172h (370)	Lithuania (reported as 372 due to a bug in MS-DOS COUNTRY.SYS)
 173h (371)	Latvia (reported as 372 due to a bug in MS-DOS COUNTRY.SYS)
 174h (372)	Estonia
 175h (373)	Moldova
 177h (375)	??? (MS-DOS 7.10 / Windows98)
 17Ch (380)	Ukraine
 17Dh (381)	Serbia / Montenegro
 180h (384)	Croatia
 181h (385)	Croatia (PC DOS 7+)
 182h (386)	Slovenia
 183h (387)	Bosnia-Herzegovina (Latin)
 184h (388)	Bosnia-Herzegovina (Cyrillic) (PC DOS 7+)
		(reported as 381 due to a bug in PC DOS COUNTRY.SYS)
 185h (389)	FYR Macedonia
 1A5h (421)	Czech Republic / Tjekia (PC DOS 7+)
 1A6h (422)	Slovakia
		(reported as 421 due to a bug in COUNTRY.SYS)
 1F4h (500)	Falkland Islands
 1F5h (501)	Belize
 1F6h (502)	Guatemala
 1F7h (503)	El Salvador
 1F8h (504)	Honduras
 1F9h (505)	Nicraragua
 1FAh (506)	Costa Rica
 1FBh (507)	Panama
 1FCh (508)	St. Pierre and Miquelon
 1FDh (509)	Haiti
 24Eh (590)	Guadeloupe
 24Fh (591)	Bolivia
 250h (592)	Guyana
 251h (593)	Ecuador
 252h (594)	rench Guiana
 253h (595)	Paraguay
 254h (596)	Martinique / French Antilles
 255h (597)	Suriname
 256h (598)	Uruguay
 257h (599)	Netherland Antilles
 29Ah (666)	Russia??? (PTS-DOS 6.51 KEYB)
 29Bh (667)	Poland??? (PTS-DOS 6.51 KEYB)
 29Ch (668)	Poland??? (Slavic???) (PTS-DOS 6.51 KEYB)
 29Eh (670)	Saipan / N. Mariana Island
 29Fh (671)	Guam
 2A0h (672)	Norfolk Island (Australia) / Christmas Island/Cocos Islands / Antartica
 2A1h (673)	Brunei Darussalam
 2A2h (674)	Nauru
 2A3h (675)	Papua New Guinea
 2A4h (676)	Tonga Islands
 2A5h (677)	Solomon Islands
 2A6h (678)	Vanuatu
 2A7h (679)	Fiji
 2A8h (680)	Palau
 2A9h (681)	Wallis & Futuna
 2AAh (682)	Cook Islands
 2ABh (683)	Niue
 2ACh (684)	American Samoa
 2ADh (685)	Western Samoa
 2AEh (686)	Kiribati
 2AFh (687)	New Caledonia
 2B0h (688)	Tuvalu
 2B1h (689)	French Polynesia
 2B2h (690)	Tokealu
 2B3h (691)	Micronesia
 2B4h (692)	Marshall Islands
 2C7h (711)	??? (currency = EA$, code pages 437,737,850,852,855,857)
 311h (785)	Arabic (Middle East/Saudi Arabia/etc.)
 324h (804)	Ukraine
 329h (809)	Antigua and Barbuda / Anguilla / Bahamas / Barbados / Bermuda
		British Virgin Islands / Cayman Islands / Dominica
		Dominican Republic / Grenada / Jamaica / Montserra
		St. Kitts and Nevis / St. Lucia / St. Vincent and Grenadines
		Trinidad and Tobago / Turks and Caicos
 352h (850)	North Korea
 354h (852)	Hong Kong
 355h (853)	Macao
 357h (855)	Cambodia
 358h (856)	Laos
 370h (880)	Bangladesh
 376h (886)	Taiwan (MS-DOS 6.22+)
 3C0h (960)	Maldives
 3C1h (961)	Lebanon
 3C2h (962)	Jordan
 3C3h (963)	Syria / Syrian Arab Republic
 3C4h (964)	Iraq
 3C5h (965)	Kuwait
 3C6h (966)	Saudi Arabia
 3C7h (967)	Yemen
 3C8h (968)	Oman
 3C9h (969)	Yemen??? (Arabic MS-DOS 5.0)
 3CBh (971)	United Arab Emirates
 3CCh (972)	Israel (Hebrew) (DR DOS 5.0,MS-DOS 5.0+)
 3CDh (973)	Bahrain
 3CEh (974)	Qatar
 3CFh (975)	Bhutan
 3D0h (976)	Mongolia
 3D1h (977)	Nepal
 3E3h (995)	Myanmar (Burma)
      (10xxx)	reserved for ISO 28601/ISO 8601 or derivative national stds
      (11xxx)	reserved for Euro currency support
      (12xxx)	reserved for ISO 28601 + Euro currency
      (1xxxx)	not yet defined
      (20xxx)	reserved for ISO 28601/ISO 8601 or derivative national stds
      (21xxx)	reserved for Euro currency support
      (22xxx)	reserved for ISO 28601 + Euro currency
      (2xxxx)	not yet defined
      (30xxx)	reserved for user-definable country codes
      (31xxx)	reserved for OEM-defined country codes
      (32000+)	reserved for future expansion
Note:	not all country codes are supported by all versions of DOS

Top
2138--DXFFFF - INT 21 - DOS 3.0+ - SET COUNTRY CODE
INT 21 - DOS 3.0+ - SET COUNTRY CODE
	AH = 38h
	DX = FFFFh
	AL = 01h thru FEh for specific country with code <255
	AL = FFh for specific country with code >= 255
	   BX = 16-bit country code (see #01400)
Return: CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
Note:	not supported by OS/2
SeeAlso: INT 2F/AX=1403h

Top
2139 - INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
	AH = 39h
	DS:DX -> ASCIZ pathname
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (03h,05h) (see #01680 at AH=59h/BX=0000h)
Notes:	all directories in the given path except the last must exist
	fails if the parent directory is the root and is full
	DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
	  it is not possible to make that directory the current directory
	  because the path would exceed 64 characters
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=3Ah,AH=3Bh,AH=6Dh,AX=7139h,AH=E2h/SF=0Ah,AX=43FFh/BP=5053h
SeeAlso: INT 2F/AX=1103h,INT 60/DI=0511h

Top
213A - INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
	AH = 3Ah
	DS:DX -> ASCIZ pathname of directory to be removed
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (03h,05h,06h,10h) (see #01680 at AH=59h/BX=0000h)
Notes:	directory must be empty (contain only '.' and '..' entries)
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=39h,AH=3Bh,AX=713Ah,AH=E2h/SF=0Bh,INT 2F/AX=1101h,INT 60/DI=0512h

Top
213B - INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
	AH = 3Bh
	DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (03h) (see #01680 at AH=59h/BX=0000h)
Notes:	if new directory name includes a drive letter, the default drive is
	  not changed, only the current directory on that drive
	changing the current directory also changes the directory in which
	  FCB file calls operate
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=47h,AX=713Bh,INT 2F/AX=1105h

Top
213C - INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
	AH = 3Ch
	CX = file attributes (see #01401)
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	    AX = file handle
	CF set on error
	    AX = error code (03h,04h,05h) (see #01680 at AH=59h/BX=0000h)
Notes:	if a file with the given name exists, it is truncated to zero length
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
	DR DOS checks the system password or explicitly supplied password at
	  the end of the filename against the reserved field in the directory
	  entry before allowing access
SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h,INT 2F/AX=1117h

Bitfields for file attributes:
Bit(s)	Description	(Table 01401)
 0	read-only
 1	hidden
 2	system
 3	volume label (ignored)
 4	reserved, must be zero (directory)
 5	archive bit
 7	if set, file is shareable under Novell NetWare

Top
213D - INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
	AH = 3Dh
	AL = access and sharing modes (see #01402)
	DS:DX -> ASCIZ filename
	CL = attribute mask of files to look for (server call only)
Return: CF clear if successful
	    AX = file handle
	CF set on error
	    AX = error code (01h,02h,03h,04h,05h,0Ch,56h) (see #01680 at AH=59h)
Notes:	file pointer is set to start of file
	if SHARE or a network is loaded, the file open may fail if the file
	  is already open, depending on the combination of sharing modes
	  (see #01403,#01404)
	file handles which are inherited from a parent also inherit sharing
	  and access restrictions
	files may be opened even if given the hidden or system attributes
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
	DR DOS checks the system password or explicitly supplied password at
	  the end of the filename (following a semicolon) against the reserved
	  field in the directory entry before allowing access
	sharing modes are only effective on local drives if SHARE is loaded
BUG:	Novell DOS 7 SHARE v1.00 would refuse file access in the cases in
	  #01403 marked with [1] (read-only open of a read-only file
	  which had previously been opened in compatibility mode); this was
	  fixed in SHARE v1.01 of 09/29/94
SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h

Bitfields for access and sharing modes:
Bit(s)	Description	(Table 01402)
 2-0	access mode
	000 read only
	001 write only
	010 read/write
	011 (DOS 5+ internal) passed to redirector on EXEC to allow
		case-sensitive filenames
 3	reserved (0)
 6-4	sharing mode (DOS 3.0+) (see #01403)
	000 compatibility mode
	001 "DENYALL" prohibit both read and write access by others
	010 "DENYWRITE" prohibit write access by others
	011 "DENYREAD" prohibit read access by others
	100 "DENYNONE" allow full access by others
	111 network FCB (only available during server call)
 7	inheritance
	if set, file is private to current process and will not be inherited
	  by child processes
SeeAlso: #01782,#01403

(Table 01403)
Values of DOS 2-6.22 file sharing behavior:
	  |	Second and subsequent Opens
 First	  |Compat  Deny	  Deny	 Deny	Deny
 Open	  |	   All	  Write	 Read	None
	  |R W RW R W RW R W RW R W RW R W RW
 - - - - -| - - - - - - - - - - - - - - - - -
 Compat R |Y Y Y  N N N	 1 N N	N N N  1 N N
	W |Y Y Y  N N N	 N N N	N N N  N N N
	RW|Y Y Y  N N N	 N N N	N N N  N N N
 - - - - -|
 Deny	R |C C C  N N N	 N N N	N N N  N N N
 All	W |C C C  N N N	 N N N	N N N  N N N
	RW|C C C  N N N	 N N N	N N N  N N N
 - - - - -|
 Deny	R |2 C C  N N N	 Y N N	N N N  Y N N
 Write	W |C C C  N N N	 N N N	Y N N  Y N N
	RW|C C C  N N N	 N N N	N N N  Y N N
 - - - - -|
 Deny	R |C C C  N N N	 N Y N	N N N  N Y N
 Read	W |C C C  N N N	 N N N	N Y N  N Y N
	RW|C C C  N N N	 N N N	N N N  N Y N
 - - - - -|
 Deny	R |2 C C  N N N	 Y Y Y	N N N  Y Y Y
 None	W |C C C  N N N	 N N N	Y Y Y  Y Y Y
	RW|C C C  N N N	 N N N	N N N  Y Y Y
Legend: Y = open succeeds, N = open fails with error code 05h
	C = open fails, INT 24 generated
	1 = open succeeds if file read-only, else fails with error code
	2 = open succeeds if file read-only, else fails with INT 24
SeeAlso: #01636,#01404

(Table 01404)
Values for DOS 7.x file sharing behavior:
	  |	Second and subsequent Opens
 First	  |Compat    Deny      Deny	 Deny	   Deny
 Open	  |	     All       Write	 Read	   None
	  |R W RW A  R W RW A  R W RW A	 R W RW A  R W RW A
 - - - - -| - - - - - - - - - - - - - - - - - - - - - - - -
 Compat R |Y Y Y Y   N N N N   Y N N Y	 N N N Y   Y N N Y
	W |Y Y Y C   N N N N   N N N N	 N N N Y   Y N N Y
	RW|Y Y Y C   N N N N   N N N N	 N N N Y   Y N N Y
	NA|Y C C Y   N N N N   Y N N Y	 N N N Y   Y N N Y
 - - - - -|
 Deny	R |C C C C   N N N N   N N N N	 N N N N   N N N N
 All	W |C C C C   N N N N   N N N N	 N N N N   N N N N
	RW|C C C C   N N N N   N N N N	 N N N N   N N N N
	NA|C C C C   N N N N   N N N N	 N N N N   N N N N
 - - - - -|
 Deny	R |Y C C Y   N N N N   Y N N Y	 N N N Y   Y N N Y
 Write	W |C C C C   N N N N   N N N N	 Y N N Y   Y N N Y
	RW|C C C C   N N N N   N N N N	 N N N Y   Y N N Y
	NA|Y C C Y   N N N N   Y N N Y	 N N N Y   Y N N Y
 - - - - -|
 Deny	R |C C C C   N N N N   N Y N N	 N N N N   N Y N N
 Read	W |C C C C   N N N N   N N N N	 N Y N N   N Y N N
	RW|C C C C   N N N N   N N N N	 N N N N   N Y N N
	NA|Y Y Y Y   N N N N   Y Y Y Y	 N N N Y   Y Y Y Y
 - - - - -|
 Deny	R |Y Y Y Y   N N N N   Y Y Y Y	 N N N Y   Y Y Y Y
 None	W |C C C C   N N N N   N N N N	 Y Y Y Y   Y Y Y Y
	RW|C C C C   N N N N   N N N N	 N N N Y   Y Y Y Y
	NA|Y Y Y Y   N N N N   Y Y Y Y	 N N N Y   Y Y Y Y
Legend: R -> reading, W -> writing, RW -> both reading & writing,
	A/NA -> reading without access time update
	Y = open succeeds, N = open fails with error code 05h
	C = open fails, INT 24 generated
SeeAlso: #01403,#01636

Top
213D76 - INT 21 - VIRUS - "GT-SPOOF" -INSTALLATION CHECK
INT 21 - VIRUS - "GT-SPOOF" -INSTALLATION CHECK
	AX = 3D76h
Return: AX = 763Dh if resident
SeeAlso: AX=357Fh,AX=3DFFh

Top
213DFF - INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
	AX = 3DFFh
Return: AX = 4A44h if resident
SeeAlso: AX=3D76h,AX=4203h

Top
213E - INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
	AH = 3Eh
	BX = file handle
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (06h) (see #01680 at AH=59h/BX=0000h)
Notes:	if the file was written to, any pending disk writes are performed, the
	  time and date stamps are set to the current time, and the directory
	  entry is updated
	recent versions of DOS preserve AH because some versions of Multiplan
	  had a bug which depended on AH being preserved
SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h

Top
213F - INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
	AH = 3Fh
	BX = file handle
	CX = number of bytes to read
	DS:DX -> buffer for data
Return: CF clear if successful
	    AX = number of bytes actually read (0 if at EOF before call)
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	data is read beginning at current file position, and the file position
	  is updated after a successful read
	the returned AX may be smaller than the request in CX if a partial
	  read occurred
	if reading from CON, read stops at first CR
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
BUG:	Novell NETX.EXE v3.26 and 3.31 do not set CF if the read fails due to
	  a record lock (see AH=5Ch), though it does return AX=0005h; this
	  has been documented by Novell
SeeAlso: AH=27h,AH=40h,AH=93h,INT 2F/AX=1108h,INT 2F/AX=1229h

Top
213F - INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
	AH = 3Fh
	BX = handle for character device "TDHDEBUG"
	CX = number of bytes to read
	DS:DX -> buffer for status block (see #01406)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AH=40h"Turbo Debug"

(Table 01405)
Values for status of Turbo Debugger command:
 00h	successful
 01h	invalid handle
 02h	no more breakpoints available
 03h	hardware does not support specified breakpoint type
 04h	previous command prevents execution
 05h	debugger hardware not found
 06h	hardware failure
 07h	invalid command
 08h	driver not initialized yet
 FEh	recursive entry (hardware breakpoint inside hw bp handler)

Format of Turbo Debugger status block:
Offset	Size	Description	(Table 01406)
 00h	BYTE	status of command (see #01405)
---status for command 01h---
 01h	WORD	device driver interface version number (currently 1)
 03h	WORD	device driver software version
 05h	BYTE	maximum simultaneous hardware breakpoints
 06h	BYTE	configuration bits (see #01407)
 07h	BYTE	supported breakpoint types (see #01408)
 08h	WORD	supported addressing match modes (see #01409)
 0Ah	WORD	supported data matches (see #01410)
 0Ch	BYTE	maximum data match length (01h, 02h, or 04h)
 0Dh	WORD	size of onboard memory (in KB)
 0Fh	WORD	maximum number of trace-back events
 11h	WORD	hardware breakpoint enable byte address segment (0000h if not
		  supported)
---status for command 04h---
 01h	BYTE	handle to use when referring to the just-set breakpoint

Bitfields for Turbo Debugger configuration bits:
Bit(s)	Description	(Table 01407)
 0	CPU and DMA accesses are distinct
 1	can detect DMA transfers
 2	supports data mask
 3	hardware pass counter on breakpoints
 4	can match on data as well as addresses

Bitfields for Turbo Debugger supported breakpoint types:
Bit(s)	Description	(Table 01408)
 0	memory read
 1	memory write
 2	memory read/write
 3	I/O read
 4	I/O write
 5	I/O read/write
 6	instruction fetch

Bitfields for Turbo Debugger supported addressing match modes:
Bit(s)	Description	(Table 01409)
 0	any address
 1	equal to test value
 2	not equal
 3	above test value
 4	below test value
 5	below or equal
 6	above or equal
 7	within range
 8	outside range

Bitfields for Turbo Debugger supported data matches:
Bit(s)	Description	(Table 01410)
 0	any data
 1	equal to test value
 2	not equal
 3	above test value
 4	below test value
 5	below or equal
 6	above or equal
 7	within range
 8	outside range

Top
213F - INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
	AH = 3Fh
	BX = handle for character device "$IPCUST"
	CX = number of bytes to read
	DS:DX -> buffer for configuration data (see #01411)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	if less than the entire data is read or written, the next read/write
	  continues where the previous one ended; IOCTL calls AX=4402h and
	  AX=4403h both reset the location at which the next operation starts
	  to zero
	the data pointer is also reset to zero if the previous read or write
	  reached or exceeded the end of the data, when the current function
	  is read and the previous was write, or vice versa
	v2.1+ uses a new configuration method, but allows the installation
	  of IPCUST.SYS for backward compatibility with other software which
	  must read the PC/TCP configuration
SeeAlso: AH=40h"IPCUST",AX=4402h"IPCUST",AX=4402h"FTPSOFT"

Format of PC/TCP configuration data:
Offset	Size	Description	(Table 01411)
 00h 12 BYTEs	IPCUST.SYS device driver header (see #01646)
 12h	BYTE	???
 13h	BYTE	???
 14h	WORD	???
 16h	BYTE	bit flags
		bit 0: send BS rather than DEL for BackSpace key
		bit 1: wrap long lines
 17h	BYTE	???
 18h 64 BYTEs	ASCIZ hostname
 58h 64 BYTEs	ASCIZ domain name
		(fully qualified domain name is hostname.domain-name)
 98h 16 BYTEs	ASCIZ username
 A8h 64 BYTEs	ASCIZ full name
 E8h 64 BYTEs	ASCIZ office address
128h 32 BYTEs	ASCIZ phone number
148h	WORD	offset from GMT in minutes
14Ah  4 BYTEs	ASCIZ timezone name
14Eh	WORD	number of time servers
150h  ? DWORDs	(big-endian) IP addresses for time servers
	???
164h	WORD	number of old-style name servers
166h  3 DWORDs	(big-endian) IP addresses for name servers
172h	WORD	number of domain name servers
174h  3 DWORDs	(big-endian) IP addresses for domain name servers
180h	DWORD	(big-endian) IP address of default gateway
184h	DWORD	(big-endian) IP address of log server
188h	DWORD	(big-endian) IP address of cookie server
18Ch	DWORD	(big-endian) IP address of lpr server
190h	DWORD	(big-endian) IP address of imagen print server
194h 54 BYTEs	???
1E8h	WORD	TCP default window size in bytes
1EAh	WORD	TCP low window size
1ECh 64 BYTEs	ASCIZ host tabel filename
22Ch  2 BYTEs	???
22Eh 80 BYTEs	ASCIZ mail relay host name
27Eh	BYTE	???
27Fh	BYTE	??? bit flags
280h 44 BYTEs	???
2ACh	WORD	???
2AEh 202 BYTEs	???

Top
213F - INT 21 - WORKGRP.SYS - GET ENTRY POINT
INT 21 - WORKGRP.SYS - GET ENTRY POINT
	AH = 3Fh
	BX = file handle for device "NET$HLP$"
	CX = 0008h
	DS:DX -> buffer for entry point record (see #01485)
Return: CF clear if successful
	    AX = number of bytes actually read (0 if at EOF before call)
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
	  permits communication with PCs running Windows for Workgroups or
	  LAN Manager
SeeAlso: AX=4402h"WORKGRP.SYS",INT 2F/AX=9400h

Top
213F - INT 21 - BW-TCP - GET DRIVER INFO
INT 21 - BW-TCP - GET DRIVER INFO
	AH = 3Fh
	BX = file handle for device "ETHDEV27"
	CX = 002Bh
	DS:DX -> buffer for driver info (see #01412)
Return: CF clear if successful
	    AX = number of bytes actually read (0 if at EOF before call)
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Program: BW-TCP is a TCP/IP protocol stack by Beame & Whiteside Software
InstallCheck:	for the TCP/IP stack, test for the existence of the character
	  device UDP-IP10
Note:	the B&W socket library performs an INT 21/AX=4401h with DX=0060h before
	  making this call to retrieve the driver information; one should also
	  call the private API interrupt with AH=15h
SeeAlso: INT 14/AH=56h,INT 62/AH=00h"ETHDEV",INT 63/AH=03h,INT 64/AH=01h
Index:	installation check;BW-TCP hardware driver
Index:	installation check;BW-TCP TCPIP.SYS

Format of BW-TCP driver info:
Offset	Size	Description	(Table 01412)
 00h	WORD	I/O base address
 02h	BYTE	shared memory page (01h = segment 0100h, etc.)
 03h	BYTE	interrupt vector for private API
 04h	BYTE	IRQ used by board
 05h	WORD	size of data buffer
 07h	WORD	maximum transfer window
 09h	WORD	time zone
 0Bh	BYTE	address type (01h user, 04h RARP, 05h BOOTP)
 0Ch	DWORD	internet address
 10h	WORD	"value" ???
 12h	BYTE	subnet mask
 13h	WORD	"ether_pointer" ???
 15h	WORD	offset in device driver of log server records (see #01413)
 17h	WORD	offset in device driver of name server records (see #01413)
 19h	WORD	offset in device driver of print server records (see #01413)
 1Bh	WORD	offset in device driver of time server records (see #01413)
 1Dh	WORD	offset in device driver of gateway records (see #01413)
 1Fh	WORD	segment address of device driver
 21h	BYTE	transfer size
 22h  9 BYTEs	network adapter board name
---11/21/91+ ---
 23h	BYTE	ETHDEV version (major in high nybble, minor in low nybble)
 24h	BYTE	ETHDEV revision
 25h	BYTE	TCPIP version (major in high nybble, minor in low nybble)
 26h	BYTE	TCPIP revision
 27h	BYTE	BWRPC version (major in high nybble, minor in low nybble)
 28h	BYTE	BWRPC revision
 29h	BYTE	BWNFS version (major in high nybble, minor in low nybble)
 2Ah	BYTE	BWNFS revision
 2Bh	BYTE	Telnet version (major in high nybble, minor in low nybble)
 2Ch	BYTE	Telnet revision
 2Dh	BYTE	NETBIOS version (major in high nybble, minor in low nybble)
 2Eh	BYTE	NETBIOS revision
Note:	for each driver, if version=0, the driver is not installed or does
	  not support the version check

Format of BW-TCP server records:
Offset	Size	Description	(Table 01413)
 00h	BYTE	number of server records following
 01h  N DWORDs	internet addresses of servers

Top
213F - INT 21 - Trusted Access - NB.SYS - GET STATE
INT 21 - Trusted Access - NB.SYS - GET STATE
	AH = 3Fh
	BX = file handle for device "$$NB$$NB"
	CX = 0002h (size of state)
	DS:DX -> buffer for state record (see #01414)
Return: CF clear if successful
	    AX = number of bytes actually read (0 if at EOF before call)
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Program: Trusted Access is a security and access-control package by Lassen
	  Software, Inc.; NB.SYS is a device driver to prevent the user from
	  terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
SeeAlso: AH=40h"NB.SYS",AX=4101h

Format of Trusted Access state record:
Offset	Size	Description	(Table 01414)
 00h	BYTE	00h off, 01h on
 01h	BYTE	keys being disabled
		bit 0: Ctrl-Break
		bit 1: SysReq
		bit 2: Ctrl and Alt
		bit 3: Ctrl-Alt-Del
		bit 7: all keys (overrides other bits)

Top
213F - INT 21 U - IFSHLP.SYS - GET ENTRY POINT
INT 21 U - IFSHLP.SYS - GET ENTRY POINT
	AH = 3Fh
	BX = file handle for device "IFS$HLP$"
	CX = 0008h (size of buffer in bytes)
	DS:DX -> buffer for entry point record (see #01415)
Return: CF clear if successful
	    AX = number of bytes actually read (0 if at EOF before call)
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Program: IFSHLP.SYS is a support driver for Microsoft Windows for Workgroups
SeeAlso: AX=4402h"IFSHLP"

Format of IFSHLP.SYS entry point record:
Offset	Size	Description	(Table 01415)
 00h  4 BYTEs	(call) required signature if called via IOCTL
			70h E9h 34h 37h for Windows 3.11
			70h E9h 35h 37h for Windows 3.11
		(ret) signature 34h 37h 70h EFh (Windows 3.11)
		(ret) signature 35h 37h 70h EFh (Windows95)
 04h	DWORD	(ret) pointer to FAR call entry point (see #01416)

(Table 01416)
Call IFSHLP.SYS entry point with:
	STACK:	WORD	function number (00h-0Ch)
			00h get ??? data
			01h set interrupt intercepts (trap)
			02h remove interrupt intercepts (untrap)
			03h ??? LPT2
			04h ??? LPT1
			05h revector INT 2F to trap and remove trap for others
			06h set ??? flag
			07h clear ??? flag
			08h get ??? flag word
			---Windows 3.11 only---
			09h ???
			0Ah ???
			0Bh ???
			0Ch get ???
---if function 00h---
Return: DX:AX -> ??? data (see #01417)
	BX destroyed
---if function 01h---
	STACK:	DWORD	new intercept (trap) address
Return: AX = status
	    0000h successful
	    0001h failed (already set)
		DX = 0000h
	BX destroyed
Note:	the trap handler is called with a function number in BX, and the
	  original BX on top of the stack; a null handler must perform a
	  POP BX and an IRET
---if function 02h---
Return: AX = status
	    0000h successful
	    0001h failed (not set)
	DX = 0000h
	BX destroyed
---if function 03h,04h---
	STACK:	WORD	???
Return: AX = 0000h
	DX = 0000h
	BX destroyed
---if function 05h---
	???
Return:	BX destroyed
---if function 06h---
Return: AX = 0001h and DX = 0000h if already set
	AX,DX unchanged if successful
	BX destroyed
---if function 07h---
Return: AX = 0001h and DX = 0000h if not set
	AX,DX unchanged if successful
	BX destroyed
---if function 08h---
Return: DX = 0000h
	AX = flags
	    bit 0: set/cleared by functions 06h and 07h
	    bit 1: trap is currently set (refer to functions 01h/02h)
	BX destroyed
---if function 09h---
Return: AX = status
	    0000h successful
	    0001h failed (already called)
	BX destroyed
---if function 0Ah---
	STACK:	WORD	???
	???
Return:	BX destroyed
---if function 0Bh---
Return: AX = status
	    0000h successful
	    0001h failed (not set)
	BX destroyed
---if function 0Ch---
Return: AX = 0000h
	ES:BX -> ??? data
---if function > 0Ch---
Return: AX = 0001h
	DX = 0000h
	BX destroyed

Format of IFSHLP ??? data:
Offset	Size	Description	(Table 01417)
 00h	DWORD	-> DOS Swappable Data Area (see #01687,#01689)
 02h	WORD	??? offset in DOS data segment?
 04h	WORD	offset in DOS data segment of current-PSP WORD
 06h	WORD	???
 08h	WORD	???
 0Ah	WORD	???
 0Ch	DWORD	-> DOS List of Lists (see #01627)
 10h	???
SeeAlso: #01416

Top
213F--BXFEB0 - INT 21 - VIRUS - "KYZ/LieWait" - INSTALLATION CHECK
INT 21 - VIRUS - "KYZ/LieWait" - INSTALLATION CHECK
	AH = 3Fh
	BX = FEB0h
Return: BX = 1212h if resident
SeeAlso: AX=3032h"VIRUS",AX=4BF1h"VIRUS"

Top
2140 - INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
	AH = 40h
	BX = file handle
	CX = number of bytes to write
	DS:DX -> data to write
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	if CX is zero, no data is written, and the file is truncated or
	  extended to the current position
	data is written beginning at the current file position, and the file
	  position is updated after a successful write
	for FAT32 drives, the file must have been opened with AX=6C00h with
	  the "extended size" flag in order to expand the file beyond 2GB;
	  otherwise the write will fail with error code 0005h (access denied)
	the usual cause for AX < CX on return is a full disk
BUG:	a write of zero bytes will appear to succeed when it actually failed
	  if the write is extending the file and there is not enough disk
	  space for the expanded file (DOS 5.0-6.0); one should therefore check
	  whether the file was in fact extended by seeking to 0 bytes from
	  the end of the file (INT 21/AX=4202h/CX=0000h/DX=0000h)
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=28h,AH=3Fh"DOS",AH=93h,INT 2F/AX=1109h

Top
2140 - INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
	AH = 40h
	BX = handle for character device "TDHDEBUG"
	CX = number of bytes to write
	DS:DX -> hardware breakpoint command (see #01418)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Note:	results are retrieved by reading from the device
SeeAlso: AH=3Fh"Turbo Debug"

Format of Turbo Debugger hardware breakpoint commands:
Offset	Size	Description	(Table 01418)
 00h	BYTE	command code
		00h install interrupt vectors
		01h get hardware capabilities
		02h enable hardware breakpoints
		03h disable hardware breakpoints
		04h set hardware breakpoint
		05h clear hardware breakpoint
		06h set I/O base address and reset hardware
		07h restore interrupt vectors
---command code 00h---
 01h	DWORD	pointer to Turbo Debugger entry point to be jumped to on
		  hardware breakpoint; call with CPU state the same as on
		  the breakpoint except for pushing AX and placing an entry
		  code (FFh if breakout button or breakpoint handle) in AH
---command code 04h---
 01h	BYTE	breakpoint type
		00h memory read
		01h memory write
		02h memory read/write
		03h I/O read
		04h I/O write
		05h I/O read/write
		06h instruction fetch
 02h	BYTE	address matching mode (see #01419)
 03h	DWORD	32-bit linear low address
 07h	DWORD	32-bit linear high address
 0Bh	WORD	pass count
 0Dh	BYTE	data size (01h, 02h, or 04h)
 0Eh	BYTE	source of matched bus cycle (01h CPU, 02h DMA, 03h either)
 0Fh	BYTE	data-matching mode (see #01419)
 10h	DWORD	low data value
 14h	DWORD	high data value
 18h	DWORD	data mask specifying which bits of the data are tested
---command code 05h---
 01h	BYTE	handle of breakpoint to clear (breakpoint returned from command
		  04h)
---command code 06h---
 01h	WORD	base address of hardware debugger board

(Table 01419)
Values for Turbo Debugger address/data matching mode:
 00h	match any
 01h	equal to test value
 02h	different from test value
 03h	above test value
 04h	below test value
 05h	below or equal to test value
 06h	above or equal to test value
 07h	within inclusive range
 08h	outside specified range

Top
2140 - INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
	AH = 40h
	BX = handle for character device "$IPCUST"
	CX = number of bytes to write
	DS:DX -> buffer for configuration data (AH=3Fh"IPCUST")
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	if less than the entire data is read or written, the next read/write
	  continues where the previous one ended; IOCTL calls AX=4402h and
	  AX=4403h both reset the location at which the next operation starts
	  to zero
	the data pointer is also reset to zero if the previous read or write
	  reached or exceeded the end of the data, when the current function
	  is read and the previous was write, or vice versa
	v2.1+ uses a new configuration method, but allows the installation
	  of IPCUST.SYS for backward compatibility with other software which
	  must read the PC/TCP configuration
SeeAlso: AH=3Fh"IPCUST",AX=4402h"IPCUST"

Top
2140 - INT 21 U - Trusted Access - NB.SYS - SET STATE
INT 21 U - Trusted Access - NB.SYS - SET STATE
	AH = 40h
	BX = handle for character device "$$NB$$NB"
	DS:DX -> state record (see #01414)
	CX ignored
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (05h,06h) (see #01680 at AH=59h/BX=0000h)
Program: Trusted Access is a security and access-control package by Lassen
	  Software, Inc.; NB.SYS is a device driver to prevent the user from
	  terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
SeeAlso: AH=3Fh"NB.SYS"

Top
214000BX0002 - INT 21 - FARTBELL.EXE - INSTALLATION CHECK
INT 21 - FARTBELL.EXE - INSTALLATION CHECK
	AX = 4000h
	BX = 0002h
	CX = 0000h
	DS:DX = 0000h:0000h
Return: CF clear if installed
	    AX = CS of resident code
Program: FARTBELL is a joke program by Guenther Thiele which makes various
	  noises when programs output a bell
SeeAlso: AX=4001h

Top
214001BX0002 - INT 21 - FARTBELL.EXE - FORCE NOISE
INT 21 - FARTBELL.EXE - FORCE NOISE
	AX = 4001h
	BX = 0002h
	CX = 0000h
	DS:DX = 0000h:0000h
Program: FARTBELL is a joke program by Guenther Thiele which makes various
	  noises when programs output a bell
SeeAlso: AX=4000h

Top
2141 - INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
	AH = 41h
	DS:DX -> ASCIZ filename (no wildcards, but see notes)
	CL = attribute mask for deletion (server call only, see notes)
Return: CF clear if successful
	    AX destroyed (DOS 3.3) AL seems to be drive of deleted file
	CF set on error
	    AX = error code (02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
Notes:	(DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
	  the filespec must be canonical (as returned by AH=60h), and only
	  files matching the attribute mask in CL are deleted
	DR DOS 5.0-6.0 returns error code 03h if invoked via AX=5D00h; DR DOS
	  3.41 crashes if called via AX=5D00h with wildcards
	DOS does not erase the file's data; it merely becomes inaccessible
	  because the FAT chain for the file is cleared
	deleting a file which is currently open may lead to filesystem
	  corruption.  Unless SHARE is loaded, DOS does not close the handles
	  referencing the deleted file, thus allowing writes to a nonexistant
	  file.
	under DR DOS and DR Multiuser DOS, this function will fail if the file
	  is currently open
	under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
BUG:	DR DOS 3.41 crashes if called via AX=5D00h
SeeAlso: AH=13h,AX=4301h,AX=4380h,AX=5D00h,AH=60h,AX=7141h,AX=F244h
SeeAlso: INT 2F/AX=1113h

Top
214101DXFFFE - INT 21 - SoftLogic Data Guardian - ???
INT 21 - SoftLogic Data Guardian - ???
	AX = 4101h
	DX = FFFEh
Return: AX = 0000h if installed
Note:	resident code sets several internal variables on this call
SeeAlso: AH=3Fh"NB.SYS",INT 16/AX=FFA3h/BX=0000h

Top
2142 - INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
	AH = 42h
	AL = origin of move
	    00h start of file
	    01h current file position
	    02h end of file
	BX = file handle
	CX:DX = (signed) offset from origin of new file position
Return: CF clear if successful
	    DX:AX = new file position in bytes from start of file
	CF set on error
	    AX = error code (01h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	for origins 01h and 02h, the pointer may be positioned before the
	  start of the file; no error is returned in that case (except under
	  Windows NT), but subsequent attempts at I/O will produce errors
	if the new position is beyond the current end of file, the file will
	  be extended by the next write (see AH=40h); for FAT32 drives, the
	  file must have been opened with AX=6C00h with the "extended size"
	  flag in order to expand the file beyond 2GB
BUG:	using this method to grow a file from zero bytes to a very large size
	  can corrupt the FAT in some versions of DOS; the file should first
	  be grown from zero to one byte and then to the desired large size
SeeAlso: AH=24h,INT 2F/AX=1228h

Top
214203 - INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
	AX = 4203h
Return: AX = 1234h if resident
SeeAlso: AX=3DFFh,AX=4243h

Top
214243 - INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
	AX = 4243h
Return: AX = 5678h if resident
SeeAlso: AX=4203h,AX=44A0h,AX=4B04h

Top
214300 - INT 21 - DOS 2+ - GET FILE ATTRIBUTES
INT 21 - DOS 2+ - GET FILE ATTRIBUTES
	AX = 4300h
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	    CX = file attributes (see #01420)
	    AX = CX (DR DOS 5.0)
	CF set on error
	    AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h)
Notes:	under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
	under DR DOS 3.41 and 5.0, attempts to change the subdirectory bit are
	  simply ignored without an error
BUG:	Windows for Workgroups returns error code 05h (access denied) instead
	  of error code 02h (file not found) when attempting to get the
	  attributes of a nonexistent file.  This causes open() with O_CREAT
	  and fopen() with the "w" mode to fail in Borland C++.
SeeAlso: AX=4301h,AX=4310h,AX=7143h,AH=B6h,INT 2F/AX=110Fh,INT 60/DI=0517h

Top
214301 - INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
	AX = 4301h
	CX = new file attributes (see #01420)
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h)
Notes:	will not change volume label or directory attribute bits, but will
	  change the other attribute bits of a directory (the directory
	  bit must be cleared to successfully change the other attributes of a
	  directory, but the directory will not be changed to a normal file as
	  a result)
	MS-DOS 4.01 reportedly closes the file if it is currently open
	for security reasons, the Novell NetWare execute-only bit can never
	  be cleared; the file must be deleted and recreated
	under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
	DOS 5.0 SHARE will close the file if it is currently open in sharing-
	  compatibility mode, otherwise a sharing violation critical error is
	  generated if the file is currently open
	DR DOS 3.41/5.0 will silently ignore attempts to change the 'directory'
	  attribute bit
SeeAlso: AX=4300h,AX=4311h,AX=7143h,INT 2F/AX=110Eh

Bitfields for file attributes:
Bit(s)	Description	(Table 01420)
 7	shareable (Novell NetWare)
 7	pending deleted files (Novell DOS, OpenDOS)
 6	unused
 5	archive
 4	directory
 3	volume label
	execute-only (Novell NetWare)
 2	system
 1	hidden
 0	read-only

Top
214302 - INT 21 - MS-DOS 7 - GET COMPRESSED FILE SIZE
INT 21 - MS-DOS 7 - GET COMPRESSED FILE SIZE
	AX = 4302h
	DS:DX -> ASCIZ pathname for file or directory
Return: CF clear if successful
	    ??? = compressed size of file/directory in bytes
	CF set on error
	    AX = error code
Note:	on volumes which do not support compression, the returned size is the
	  actual file size rounded up to the next cluster boundary
SeeAlso: AH=71h,AH=72h

Top
214302 - INT 21 - DR DOS 3.41+ internal - GET ACCESS RIGHTS
INT 21 - DR DOS 3.41+ internal - GET ACCESS RIGHTS
	AX = 4302h
	DS:DX -> ASCIZ pathname
Return: CF clear if successful
	    CX = access rights (see #01421)
	    AX = CX (DR DOS 5.0)
	CF set on error
	    AX = error code
Desc:	Determine which operations the calling program may perform on a
	  specified file without being required to provide a password.
Notes:	this protection scheme has been coordinated on all current Digital
	  Research/Novell operating systems (DR DOS 3.41+, DRMDOS 5.x, and
	  FlexOS 2+)
	this function is documented in DR DOS 6.0 and corresponds to the
	  "Get/Set File Attributes" function, subfunction 2, documented in
	  Concurrent DOS.
	only FlexOS actually uses the "execution" bits; DR DOS 3.41+ treats
	  them as "read" bits.
	DR DOS 3.41-5.x only use bits 0-3.  Only DR DOS 6.0 using a
	  DRMDOS 5.x security system allowing for users and groups uses bits
	  4-11.
SeeAlso: AX=4303h,#01354 at INT 21/AH=11h

Bitfields for DR DOS file access rights:
Bit(s)	Description	(Table 01421)
 0	owner delete requires password
 1	owner execution requires password (FlexOS)
 2	owner write requires password
 3	owner read requires password
 4	group delete requires password
 5	group execution requires password (FlexOS)
 6	group write requires password
 7	group read requires password
 8	world delete requires password
 9	world execution requires password (FlexOS)
 10	world write requires password
 11	world read requires password

Top
214303 - INT 21 - DR DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
INT 21 - DR DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
	AX = 4303h
	CX = access rights
	     bits 11-0: access rights (see #01421)
	     bit 15: new password is to be set
	DS:DX -> ASCIZ pathname
	[DTA] = new password if CX bit 15 is set (blank-padded to 8 characters)
Return: CF clear if successful
	CF set on error
	    AX = error code
Notes:	if the file is already protected, the old password must be added after
	  the pathname, separated by a ";".  As with all password handling in
	  DR DOS, the old password is processed by the kernel, not any
	  applications or utilities making the call.
	this function is documented in DR DOS 6.0 and corresponds to the
	  "Get/Set File Attributes" function, subfunction 3, documented in
	  Concurrent DOS.
SeeAlso: AH=0Fh,AH=17h,AX=4302h"DR DOS",AX=4305h,AX=4454h

Top
214304 - INT 21 U - DR DOS 5.0-6.0 internal - GET ENCRYPTED PASSWORD
INT 21 U - DR DOS 5.0-6.0 internal - GET ENCRYPTED PASSWORD
	AX = 4304h
	DS:DX -> ASCIZ filename
	???
Return: CF clear if successful
	    CX = AX = 0000h if no password assigned to file
	CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
Note:	this function is only supported by DR DOS 5.0 and 6.0 and DRMDOS 5.1
SeeAlso: AX=4303h,AX=4305h

Top
214305 - INT 21 U - DR DOS 5.0-6.0 internal - SET EXTENDED FILE ATTRIBUTES
INT 21 U - DR DOS 5.0-6.0 internal - SET EXTENDED FILE ATTRIBUTES
	AX = 4305h
	DS:DX -> ASCIZ filename
	???
Return: CF clear if successful
	CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
Desc:	this function allows the extended attributes, and optionally the
	  encrypted password, of a file to be set.
Note:	this function is only supported by DR DOS 5.0 and 6.0 and DRMDOS 5.1
SeeAlso: AX=4304h,AX=4311h

Top
214306 - INT 21 O - DR DOS 6.0 - GET FILE OWNER
INT 21 O - DR DOS 6.0 - GET FILE OWNER
	AX = 4306h
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	    AX = CX = value set with AX=4307h
	CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
Note:	no longer supported by Novell DOS 7 / OpenDOS
SeeAlso: AX=4307h

Top
214307 - INT 21 O - DR DOS 6.0 - SET FILE OWNER
INT 21 O - DR DOS 6.0 - SET FILE OWNER
	AX = 4307h
	CX = ??? (owner identification number?)
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
Note:	no longer supported by Novell DOS 7 / OpenDOS
SeeAlso: AX=4306h

Top
214310 - INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
	AX = 4310h
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	    CH = attributes (see #01422)
	CF set on error
	    AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
Note:	the filename may be a directory but must be on a VINES file service
SeeAlso: AX=4300h,AX=4311h,AH=B6h,INT 2F/AX=110Fh

Top
214311 - INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
	AX = 4311h
	CH = new attributes (see #01422)
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	CF set on error
	    AX = error code (01h,02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
Note:	the filename may be a directory but must be on a VINES file service
SeeAlso: AX=4301h,AX=4305h,AX=4310h,INT 2F/AX=110Eh

Bitfields for VINES extended file attributes:
Bit(s)	Description	(Table 01422)
 7	unused
 6	shareable
 5	execute-only
 4-0	unused

Top
214321BX0000 - INT 21 - Q87, Q387 - INSTALLATION CHECK
INT 21 - Q87, Q387 - INSTALLATION CHECK
	AX = 4321h
	BX = 0000h
	EAX = 87654321h (entire EAX value is required, not just AX)
Return: EAX = 12345678h if installed
Program: Q387 (renamed to Q87 as of v3.7) is a math coprocessor emulator from
	  Quickware
Note:	this function is available only in virtual-86 mode in older versions;
	  newer versions also provide it in MS Windows 16- and 32-bit protected
	  mode
SeeAlso: AX=4321h/BX=0001h,AX=4321h/BX=0002h,INT 67/AX=4321h

Top
214321BX0001 - INT 21 - Q87, Q387 - ENABLE EMULATOR
INT 21 - Q87, Q387 - ENABLE EMULATOR
	AX = 4321h
	BX = 0001h
	EAX = 87654321h (entire EAX value is required, not just AX)
Desc:	enable the emulator by setting the CPU MSW's EM bit and updating
	  the BIOS equipment list
Note:	this function is available only in virtual-86 mode in older versions;
	  newer versions also provide it in MS Windows 16- and 32-bit protected
	  mode
SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0002h

Top
214321BX0002 - INT 21 - Q87, Q387 - DISABLE EMULATOR
INT 21 - Q87, Q387 - DISABLE EMULATOR
	AX = 4321h
	BX = 0002h
	EAX = 87654321h (entire EAX value is required, not just AX)
Desc:	disable the emulator by clearing the CPU MSW's EM bit and updating
	  the BIOS equipment list
Note:	this function is available only in virtual-86 mode in older versions;
	  newer versions also provide it in MS Windows 16- and 32-bit protected
	  mode
SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0001h

Top
214380 - INT 21 - Novell DOS 7 - UNDELETE PENDING DELETE FILE
INT 21 - Novell DOS 7 - UNDELETE PENDING DELETE FILE
	AX = 4380h
	???
Return: ???
SeeAlso: AH=41h,AX=4381h

Top
214381 - INT 21 - Novell DOS 7 - PURGE PENDING DELETE FILE
INT 21 - Novell DOS 7 - PURGE PENDING DELETE FILE
	AX = 4381h
	???
Return: ???
SeeAlso: AH=41h,AX=4380h

Top
214382 - INT 21 - DR-DOS >7.03 - RESERVED
INT 21 - DR-DOS >7.03 - RESERVED
	AX = 4382h-438Fh
Notes:	These previously unused functions are reserved for future versions of
	  DR-DOS (post 7.03).
	AX=4382h will be identical to the previous AX=4302h, which is now also
	  used by MS-DOS 7+ for a different purpose.
SeeAlso: INT 21h/4302h

Top
2143FFBP5053 - INT 21 - MS-DOS 7.20 (Win98) - EXTENDED-LENGTH FILENAME OPERATIONS
INT 21 - MS-DOS 7.20 (Win98) - EXTENDED-LENGTH FILENAME OPERATIONS
	AX = 43FFh
	BP = 5053h ('PS')
	CL = function
	    39h "mkdir" create directory
		DS:DX -> ASCIZ pathname
	    56h rename file
		DS:DX -> ASCIZ filename of existing file (no wildcards)
		ES:DI -> ASCIZ new filename (no wildcards)
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (03h,05h) (see #01680 at AH=59h/BX=0000h)
Note:	these functions are equivalent to INT 21/AH=39h and INT 21/AH=56h,
	  but with a maximum path length of 128 characters instead of 67;
	  unlike INT 21/AX=71xxh, these functions are available under bare
	  DOS and not just in a Windows DOS box
SeeAlso: AH=39h,AH=56h,AX=7139h,AX=7156h

Top
214400 - INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
	AX = 4400h
	BX = handle
Return: CF clear if successful
	    DX = device information word (see #01423)
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	value in DH corresponds to high byte of device driver's attribute word
	  if handle refers to a character device
	Novell NetWare reportedly does not return a drive number in bits 5-0
	  for a disk file
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4401h,INT 2F/AX=122Bh

Bitfields for device information word:
Bit(s)	Description	(Table 01423)
 character device
  14	device driver can process IOCTL requests (see AX=4402h"DOS 2+")
  13	output until busy supported
  11	driver supports OPEN/CLOSE calls
   8	??? (set by MS-DOS 6.2x KEYB)
   7	set (indicates device)
   6	EOF on input
   5	raw (binary) mode
   4	device is special (uses INT 29)
   3	clock device
   2	NUL device
   1	standard output
   0	standard input
 disk file
  15	file is remote (DOS 3.0+)
  14	don't set file date/time on closing (DOS 3.0+)
  11	media not removable
   8	(DOS 4 only) generate INT 24 if no disk space on write or read past
	  end of file
   7	clear (indicates file)
   6	file has not been written
  5-0	drive number (0 = A:)
SeeAlso: INT 29

Top
214401 - INT 21 - DOS 2+ - IOCTL - SET DEVICE INFORMATION
INT 21 - DOS 2+ - IOCTL - SET DEVICE INFORMATION
	AX = 4401h
	BX = handle (must refer to character device)
	DX = device information word (see #01423)
	    (DH must be zero for DOS version prior to 6.x)
Return: CF clear if successful
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4400h,INT 2F/AX=122Bh

Top
214402 - INT 21 - DOS 2+ - IOCTL - READ FROM CHARACTER DEVICE CONTROL CHANNEL
INT 21 - DOS 2+ - IOCTL - READ FROM CHARACTER DEVICE CONTROL CHANNEL
	AX = 4402h
	BX = file handle referencing character device
	CX = number of bytes to read
	DS:DX -> buffer
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	format of data is driver-specific
	  (also see separate entries below for some specific cases)
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4400h,AX=4403h"DOS",AX=4404h"DOS",INT 2F/AX=122Bh

Top
214402 - INT 21 - Network Driver Interface Specification (NDIS) 2.0.1 - PROTOCOL MANAGER
INT 21 - Network Driver Interface Specification (NDIS) 2.0.1 - PROTOCOL MANAGER
	AX = 4402h
	BX = file handle for device "PROTMAN$"
	CX = 000Eh (size of request block)
	DS:DX -> request block (see #01424,#01425,#01426,#01427,#01428,#01432,#01433)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4402h"FTPSOFT"

Format of NDIS request block for GetProtocolManagerInfo:
Offset	Size	Description	(Table 01424)
 00h	WORD	01h
 02h	WORD	returned status (see #01434)
 04h	DWORD	returned pointer to structure representing parsed user config
 08h	DWORD	unused
 0Ch	WORD	returned BCD version of NDIS on which Protocol Manager is based
SeeAlso: #01425,#01426,#01427,#01428,#01429,#01430,#01431,#01432,#01433

Format of NDIS request block for RegisterModule:
Offset	Size	Description	(Table 01425)
 00h	WORD	02h
 02h	WORD	returned status (see #01434)
 04h	DWORD	pointer to module's common characteristics table (see #01435)
 08h	DWORD	pointer to list of modules to which the module is to be bound
 0Ch	WORD	unused
SeeAlso: #01424,#01426,#01427,#01428,#01429,#01430,#01431,#01432,#01433

Format of NDIS request block for BindAndStart:
Offset	Size	Description	(Table 01426)
 00h	WORD	03h
 02h	WORD	returned status (see #01434)
 04h	DWORD	caller's virtual address in FailingModules structure
 08h	DWORD	unused
 0Ch	WORD	unused
SeeAlso: #01424,#01425,#01427,#01428,#01429,#01430,#01431,#01432,#01433

Format of NDIS request block for GetProtocolManagerLinkage:
Offset	Size	Description	(Table 01427)
 00h	WORD	04h
 02h	WORD	returned status (see #01434)
 04h	DWORD	returned dispatch point
 08h	DWORD	unused
 0Ch	WORD	returned protocol manager DS
Note:	the dispatch point may be called as follows instead of using this IOCTL
	STACK: WORD  protocol manager DS
	       DWORD pointer to request block
	Return: AX = returned status
		STACK popped
SeeAlso: #01424,#01425,#01426,#01428,#01429,#01430,#01431,#01432,#01433

Format of NDIS request block for GetProtocolIniPath:
Offset	Size	Description	(Table 01428)
 00h	WORD	05h
 02h	WORD	returned status (see #01434)
 04h	DWORD	pointer to a buffer for the ASCIZ pathname of PROTOCOL.INI
 08h	DWORD	unused
 0Ch	WORD	buffer length
SeeAlso: #01424,#01425,#01426,#01427,#01429,#01430,#01431,#01432,#01433

Format of NDIS request block for RegisterProtocolManagerInfo:
Offset	Size	Description	(Table 01429)
 00h	WORD	06h
 02h	WORD	returned status (see #01434)
 04h	DWORD	pointer to structure containing parsed user config file
 08h	DWORD	unused
 0Ch	WORD	length of structure
SeeAlso: #01424,#01425,#01426,#01427,#01428,#01430,#01431,#01432,#01433

Format of NDIS request block for InitAndRegister:
Offset	Size	Description	(Table 01430)
 00h	WORD	07h
 02h	WORD	returned status (see #01434)
 04h	DWORD	unused
 08h	DWORD	poitner to ASCIZ name of the module to be prebind initialized
 0Ch	WORD	unused
SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01431,#01432,#01433

Format of NDIS request block for UnbindAndStop:
Offset	Size	Description	(Table 01431)
 00h	WORD	08h
 02h	WORD	returned status (see #01434)
 04h	DWORD	failing modules as for BindAndStart
 08h	DWORD	if not 0000h:0000h, pointer to ASCIZ name of module to unbind
		if 0000h:0000h, terminate a set of previously dynamically
		  bound protocol modules
 0Ch	WORD	unused
SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01430,#01432,#01433

Format of NDIS request block for BindStatus:
Offset	Size	Description	(Table 01432)
 00h	WORD	09h
 02h	WORD	returned status (see #01434)
 04h	DWORD	must be 0000h:0000h
		on return, points to root tree
 08h	DWORD	0000h:0000h
 0Ch	WORD	unused under DOS
SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01430,#01431,#01433

Format of NDIS request block for RegisterStatus:
Offset	Size	Description	(Table 01433)
 00h	WORD	0Ah
 02h	WORD	returned status (0000h, 0008h, 002Ch) (see #01434)
 04h	DWORD	0000h:0000h
 08h	DWORD	pointer to 16-byte ASCIZ module name
 0Ch	WORD	0000h
Note:	not supported by the 10NET v5.0 PROTMAN$ driver
SeeAlso: #01424,#01425,#01426,#01427,#01428,#01429,#01430,#01431,#01432

(Table 01434)
Values for NDIS status code:
 0000h	success
 0001h	wait for release--protocol has retained control of the data buffer
 0002h	request queued
 0003h	frame not recognized
 0004h	frame rejected
 0005h	frame should be forwarded
 0006h	out of resource
 0007h	invalid parameter
 0008h	invalid function
 0009h	not supported
 000Ah	hardware error
 000Bh	transmit error
 000Ch	unrecognized destination
 000Dh	buffer too small
 0020h	already started
 0021h	binding incomplete
 0022h	driver not initialized
 0023h	hardware not found
 0024h	hardware failure
 0025h	configuration failure
 0026h	interrupt conflict
 0027h	MAC incompatible
 0028h	initialization failed
 0029h	no binding
 002Ah	network may be disconnected
 002Bh	incompatible OS version
 002Ch	already registered
 002Dh	path not found
 002Eh	insufficient memory
 002Fh	info not found
 00FFh	general failure
 F000h-FFFFh reserved for vendor-specific codes, treated as general failure

Format of NDIS common characteristics table:
Offset	Size	Description	(Table 01435)
 00h	WORD	size of table in bytes
 02h	BYTE	NDIS major version
 03h	BYTE	NDIS minor version
 04h	WORD	reserved
 06h	BYTE	module major version
 07h	BYTE	module minor version
 08h	DWORD	module function flag bits
		bit 0: binding at upper boundary supported
		bit 1: binding at lower boundary supported
		bit 2: dynamically bound
		bits 3-31 reserved, must be 0
 0Ch 16 BYTEs	ASCIZ module name
 1Ch	BYTE	upper boundary protocol level (see #01436)
 1Dh	BYTE	upper boundary interface type
		for MACs: 1 = MAC
		for data links and transports: to be defined
		for session: 1 = NCB
		any level: 0 = private (ISV-defined)
 1Eh	BYTE	lower boundary protocol level (see #01436)
 1Fh	BYTE	lower boundary interface type
		same as offset 1Dh
 20h	WORD	module ID filled in by protocol manager
 22h	WORD	module DS
 24h	DWORD	system request entry point
 28h	DWORD	pointer to service-specific characteristics (see #01438,#01440)
		0000h:0000h if none
 2Ch	DWORD	pointer to service-specific status, or 0000h:0000h if none
		  (see #01441)
 30h	DWORD	pointer to upper dispatch table (see #01437)
		0000h:0000h if none
 34h	DWORD	pointer to lower dispatch table (see #01437)
		0000h:0000h if none
 38h  2 DWORDs	reserved, must be 0
Note:	for compatibility with NDIS 1.x.x, a major version of 00h is
	  interpreted as 01h

(Table 01436)
Values for NDIS boundary protocol level:
 00h	physical
 01h	Media Access Control
 02h	Data link
 03h	network
 04h	transport
 05h	session
 FFh	not specified

Format of NDIS dispatch table:
Offset	Size	Description	(Table 01437)
 00h	DWORD	-> common characteristics table (see #01435)
 04h  4 BYTEs	???
 08h	DWORD	-> ??? function (called with 12 bytes of stack arguments)
 0Ch	DWORD	-> ??? function (called with 10 bytes of stack arguments)
 10h	DWORD	-> ??? function (called with 16 bytes of stack arguments)
 14h	DWORD	-> ??? function (called with 4 bytes of stack arguments)
 18h	DWORD	-> ??? function (called with 18 bytes of stack arguments)
 1Ch	DWORD	-> ??? function (called with 12 bytes of stack arguments)

Format of MAC Service-Specific Characteristics Table:
Offset	Size	Description	(Table 01438)
 00h	WORD	length of table in bytes
 02h 16 BYTEs	ASCIZ MAC type name, "802.3", "802.4", "802.5", "802.6", "DIX",
		  "DIX+802.3", "APPLETALK", "ARCNET", "FDDI", "SDLC", "BSC",
		  "HDLC", or "ISDN"
 12h	WORD	length of station addresses in bytes
 14h 16 BYTEs	permanent station address
 24h 16 BYTEs	current station address
 34h	DWORD	current functional adapter address (00000000h if none)
 38h	DWORD	pointer to multicast address list
 3Ch	DWORD	link speed in bits/sec
 40h	DWORD	service flags (see #01439)
 44h	WORD	maximum frame size which may be both sent and received
 46h	DWORD	total transmit buffer capacity in bytes
 4Ah	WORD	transmit buffer allocation block size in bytes
 4Ch	DWORD	total receive buffer capacity in bytes
 50h	WORD	receive buffer allocation block size in bytes
 52h  3 BYTEs	IEEE vendor code
 55h	BYTE	vendor adapter code
 56h	DWORD	pointer to ASCIZ vendor adapter description
 5Ah	WORD	IRQ used by adapter
 5Ch	WORD	transmit queue depth
 5Eh	WORD	maximum supported number of data blocks in buffer descriptors
 60h  N BYTEs	vendor-specific info
SeeAlso: #01440

Bitfields for service flags:
Bit(s)	Description	(Table 01439)
 0	supports broadcast
 1	supports multicast
 2	supports functional/group addressing
 3	supports promiscuous mode
 4	station address software settable
 5	statistics always current
 6	supports InitiateDiagnostics
 7	supports loopback
 8	MAC does primarily ReceiveChain indications instead of ReceiveLookahead
	indications
 9	supports IBM source routing
 10	supports MAC reset
 11	supports Open/Close adapter
 12	supports interrupt request
 13	supports source routing bridge
 14	supports GDT virtual addresses (OS/2 version)
 15	multiple TransferDatas allowed durign a single indication
 16	MAC normally sets FrameSize = 0 in ReceiveLookahead
 17-31	reserved, must be 0

Format of NetBIOS Service-Specific Characteristics Table:
Offset	Size	Description	(Table 01440)
 00h	WORD	length of table in bytes
 02h 16 BYTEs	ASCIZ type name of NetBIOS module
 12h	WORD	NetBIOS module code
 14h  N BYTEs	vendor-specific info
SeeAlso: #01438

Format of MAC Service-Specific Status Table:
Offset	Size	Description	(Table 01441)
 00h	WORD	length of table in bytes
 02h	DWORD	seconds since 0:00 1/1/70 when diagnostics last run
		(FFFFFFFFh = never)
 06h	DWORD	MAC status bits (see #01442)
 0Ah	WORD	current packet filter flags (see #01443)
 0Ch	DWORD	pointer to media-specific status table or 0000h:0000h
 10h	DWORD	seconds past 0:00 1/1/70 of last ClearStatistics
 14h	DWORD	total frames received (FFFFFFFFh = not counted)
 18h	DWORD	frames with CRC error (FFFFFFFFh = not counted)
 1Ch	DWORD	total bytes received (FFFFFFFFh = not counted)
 20h	DWORD	frames discarded--no buffer space (FFFFFFFFh = not counted)
 24h	DWORD	multicast frames received (FFFFFFFFh = not counted)
 28h	DWORD	broadcast frames received (FFFFFFFFh = not counted)
 2Ch	DWORD	frames with errors (FFFFFFFFh = not counted)
 30h	DWORD	overly large frames (FFFFFFFFh = not counted)
 34h	DWORD	frames less than minimum size (FFFFFFFFh = not counted)
 38h	DWORD	multicast bytes received (FFFFFFFFh = not counted)
 3Ch	DWORD	broadcast bytes received (FFFFFFFFh = not counted)
 40h	DWORD	frames discarded--hardware error (FFFFFFFFh = not counted)
 44h	DWORD	total frames transmitted (FFFFFFFFh = not counted)
 48h	DWORD	total bytes transmitted (FFFFFFFFh = not counted)
 4Ch	DWORD	multicast frames transmitted (FFFFFFFFh = not counted)
 50h	DWORD	broadcast frames transmitted (FFFFFFFFh = not counted)
 54h	DWORD	broadcast bytes transmitted (FFFFFFFFh = not counted)
 58h	DWORD	multicast bytes transmitted (FFFFFFFFh = not counted)
 5Ch	DWORD	frames not transmitted--timeout (FFFFFFFFh = not counted)
 60h	DWORD	frames not transmitted--hardware error (FFFFFFFFh = not countd)
 64h  N BYTEs	vendor-specific info

Bitfields for MAC status bits:
Bit(s)	Description	(Table 01442)
 0-2	operational status
	000 hardware not installed
	001 hardware failed startup diagnostics
	010 hardware configuration problem
	011 hardware fault
	100 operating marginally due to soft faults
	101 reserved
	110 reserved
	111 hardware fully operational
 3	MAC bound
 4	MAC open
 5	diagnostics in progress
 6-31	reserved

Bitfields for packet filter flags:
Bit(s)	Description	(Table 01443)
 0	directed/multicast or group/functional
 1	broadcast
 2	promiscuous
 3	all source routing
 4-15	reserved, must be zero

Top
214402 - INT 21 U - MS-DOS 7.0+ - CONFIG$ device - GET CONFIGURATION INFORMATION
INT 21 U - MS-DOS 7.0+ - CONFIG$ device - GET CONFIGURATION INFORMATION
	AX = 4402h
	BX = file handle for character device "CONFIG$"
	CX = number of bytes to read (at least 5)
	DS:DX -> buffer for ??? data (see #01444)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4403h"CONFIG$"

Format of MS-DOS 7.0 CONFIG$ ??? data:
Offset	Size	Description	(Table 01444)
 00h	WORD	??? (0000h)
 02h	WORD	??? (0000h or value read from IO.SYS segment 70h)
 04h	BYTE	??? (value read from IO.SYS segment 70h)

Top
214402 - INT 21 U - IBM SYSTEM 36/38 WORKSTATION EMULATION - VDI.SYS - GET ???
INT 21 U - IBM SYSTEM 36/38 WORKSTATION EMULATION - VDI.SYS - GET ???
	AX = 4402h
	BX = handle for character device "GDMS"
	CX = number of bytes to read (>= 4)
	DS:DX -> buffer (see #01445)
Return: CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AX = number of bytes read

Format of System 36/38 emulator returned data:
Offset	Size	Description	(Table 01445)
 00h  4 BYTEs	???
 04h	DWORD	pointer to ???
 08h  4 BYTEs	???

Top
214402 - INT 21 U - LASTBYTE.SYS v1.19 - IOCTL - GET ??? TABLE
INT 21 U - LASTBYTE.SYS v1.19 - IOCTL - GET ??? TABLE
	AX = 4402h
	BX = handle for device "LA$TBYTE"
	CX = 0004h
	DS:DX -> DWORD to hold address of 39-byte table of ???
Return: CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AX = number of bytes read
Program: LASTBYTE.SYS is part of the shareware "The Last Byte" memory
	  management package by Key Software Products
SeeAlso: AX=4402h"HIGHUMM"

Top
214402 - INT 21 - HIGHUMM.SYS v1.17+ - IOCTL - GET API ADDRESS
INT 21 - HIGHUMM.SYS v1.17+ - IOCTL - GET API ADDRESS
	AX = 4402h
	BX = handle for device "KSP$UMM"
	CX = 0004h
	DS:DX -> DWORD to hold entry point (see #01446)
Return: CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AX = number of bytes read
Program: HIGHUMM.SYS is part of the shareware "The Last Byte" memory
	  management package by Key Software Products
SeeAlso: AX=4402h"LASTBYTE"

(Table 01446)
Call HIGHUMM.SYS entry point with:
	AH = 00h allocate UMB (same as XMS function 10h) (see INT 2F/AX=4310h)
	    DX = size in paragraphs
	    Return: BX = segment number (if successful)
		    DX = size of requested block/size of largest block
	AH = 01h deallocate UMB (same as XMS func 11h) (see INT 2F/AX=4310h)
	    DX = segment number of UMB
	AH = 02h request a bank-switched memory block
	    DX = size in paragraphs
	    Return: BX = segment number (if successful)
		    DX = size of requested block/size of largest block
	AH = 03h release a bank-switched memory block
	    DX = segment number
	AH = 04h transfer data to/from high memory
	    DS:SI -> source
	    ES:DI -> destination
	    CX = length in bytes
	    Note: enables bank-switched memory, does the copy, then disables
		bank-switched memory
	AH = 05h get a word from bank-switched memory
	    ES:DI -> word to read
	    Return: DX = word
	AH = 06h put a word to bank-switched memory
	    ES:DI -> word to write
	    DX = word
	AH = 07h put a byte to bank-switched memory
	    ES:DI -> byte to write
	    DL = byte
	AH = 08h enable bank-switched memory
	    DS:SI -> 6-byte status save area
	AH = 09h disable bank-switched memory
	    DS:SI -> 6-byte save area from enable call (AH=08h)
	AH = 0Ah assign name to UMB or high bank-switched block
	    DX = segment number
	    DS:SI -> 8-byte blank-padded name
	AH = 0Bh locate UMB block by name
	    DS:SI -> 8-byte blank-padded name
	    Return: BX = segment number (if successful)
		    DX = size of block
	AH = 0Ch locate bank-switched block by name
	    DS:SI -> 8-byte blank-padded name
	    Return: BX = segment number (if successful)
		    DX = size of block
Return: AX = status code
	    0001h successful
	    0000h failed
		BL = error code
		    80h not implemented
		    B0h insufficient memory, smaller block available
		    B1h insufficient memory, no blocks available
		    B2h invalid segment number
Note:	only functions 00h and 01h are always available; the remaining
	  functions are only enabled if the proper commandline switch is given

Top
214402 - INT 21 - SMARTDRV.SYS v3.x only - IOCTL - GET CACHE STATUS
INT 21 - SMARTDRV.SYS v3.x only - IOCTL - GET CACHE STATUS
	AX = 4402h
	BX = file handle for device "SMARTAAR"
	CX = number of bytes to read (min 28h)
	DS:DX -> buffer for status record (see #01447)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	NCache2 (from the Norton Utilities v8.0) attempts to support this
	  interface, but does not do so correctly, often hanging the system;
	  one should use the SmartDrive v4.x or NCache private interfaces
	  (see INT 2F/AX=4A10h/BX=0000h,INT 2F/AX=FE00h/DI=4E55h)
SeeAlso: AX=4403h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h

Format of SMARTDRV status record:
Offset	Size	Description	(Table 01447)
 00h	BYTE	write-through flag (always 01h)
 01h	BYTE	writes should be buffered (always 00h)
 02h	BYTE	cache enabled if 01h
 03h	BYTE	driver type (01h extended memory, 02h expanded)
 04h	WORD	clock ticks between cache flushes (currently unused)
 06h	BYTE	cache contains locked tracks if nonzero
 07h	BYTE	flush cache on INT 19 reboot if nonzero
 08h	BYTE	cache full track writes if nonzero
 09h	BYTE	double buffering (for VDS) state (00h off, 01h on, 02h dynamic)
 0Ah	DWORD	original INT 13 vector
 0Eh	BYTE	minor version number
 0Fh	BYTE	major version number
 10h	WORD	unused
 12h	WORD	sectors read			\
 14h	WORD	sectors already in cache	 > may be scaled rather than
 16h	WORD	sectors already in track buffer /  absolute counts
 18h	BYTE	cache hit rate in percent
 19h	BYTE	track buffer hit rate in percent
 1Ah	WORD	total tracks in cache
 1Ch	WORD	number of tracks in use
 1Eh	WORD	number of locked tracks
 20h	WORD	number of dirty tracks
 22h	WORD	current cache size in 16K pages
 24h	WORD	original (maximum) cache size in 16K pages
 26h	WORD	minimum cache size in 16K pages
 28h	DWORD	pointer to byte flag to increment for locking cache contents

Top
214402 - INT 21 - CD-ROM device driver - IOCTL INPUT
INT 21 - CD-ROM device driver - IOCTL INPUT
	AX = 4402h
	BX = file handle referencing character device for CD-ROM driver
	CX = number of bytes to read
	DS:DX -> control block (see #01449)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	the data returned depends on the first byte of the control block
	  (two bytes for functions 01h/07h/0Bh, see #01449); the remainder of
	  the control block is filled by the driver
	some device drivers support several subunits (that is more than one
	  drive) but it is not possible to distinguish between them with this
	  function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
	under Windows95, the "mscd$$$$" device cannot be opened so you cannot
	  obtain the handle required by this function: use INT 2F/AX=1510h
	  or INT 2F/AX=0802h instead
SeeAlso: AX=4403h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h

(Table 01448)
Values for CD-ROM data being requested:
 00h	device driver header address
 01h	drive head location
 02h	reserved
 03h	error statistics
 04h	audio channel info
 05h	raw drive bytes (uninterpreted and device-specific)
 06h	device status
 07h	sector size
 08h	volume size
 09h	media change status
 0Ah	audio disk info
 0Bh	audio track info
 0Ch	audio Q-Channel info
 0Dh	audio sub-channel info
 0Eh	UPC code
 0Fh	audio status info

Format of CD-ROM control block:
Offset	Size	Description	(Table 01449)
 00h	BYTE	data being requested (see #01448)
---function 00h---
 01h	DWORD	device driver header address (see also AH=52h,#01646)
---function 01h---
 01h	BYTE	(call) addressing mode
		00h HSG
		01h Red Book
 02h	DWORD	current location of drive's head
		logical sector number in HSG mode
		frame/second/minute/unused in Red Book mode
		(HSG sector = minute * 4500 + second * 75 + frame - 150)
---function 03h---
 01h  N BYTEs	undefined as of 5 Aug 88 specification
---function 04h---
 01h	BYTE	input channel (0-3) for output channel 0
 02h	BYTE	volume for output channel 0
 03h	BYTE	input channel (0-3) for output channel 1
 04h	BYTE	volume for output channel 1
 05h	BYTE	input channel (0-3) for output channel 2
 06h	BYTE	volume for output channel 2
 07h	BYTE	input channel (0-3) for output channel 3
 08h	BYTE	volume for output channel 3
Notes:	output channels 0 and 1 are left and right, 2 and 3 are left prime and
	  right prime; a volume of 00h is off
	the default setting is for each input channel to be assigned to the
	  same-numbered output channel at full (FFh) volume
---function 05h---
 01h	BYTE	number of bytes read
 02h 128 BYTEs	buffer for drive bytes
---function 06h---
 01h	DWORD	device parameters (see #01450)
---function 07h---
 01h	BYTE	(call) read mode
		00h cooked
		01h raw
 02h	WORD	(return) sector size in bytes
---function 08h---
 01h	DWORD	volume size in sectors
BUGS:	Aztech device driver v1.10 and v1.27 (at least) return the last sector
	  number, i.e. total number of sectors - 1
	Windows95 returns the total number of sectors + 150 (see the Red Book
	  to HSG conversion formula at function 01h to understand why this
	  happens)
---function 09h---
 01h	BYTE	media change status
		00h don't know
		01h media unchanged
		FFh media has been changed
---function 0Ah---
 01h	BYTE	lowest audio track number
 02h	BYTE	highest audio track number
 03h	DWORD	start address of lead-out track (Red Book format)
--function 0Bh---
 01h	BYTE	(call) track number
 02h	DWORD	starting point of track (Red Book format)
 06h	BYTE	track control info
		bits 15,14,12: track type (notice: bits not contiguous!)
			000 two audio channels, no pre-emphasis
			001 two audio channels with pre-emphasis
			010 data track
			100 four audio channels, no pre-emphasis
			101 four audio channels with pre-emphasis
			other reserved
		bit 13: digital copy permitted
---function 0Ch---
 01h	BYTE	CONTROL and ADR byte (as received from drive)
 02h	BYTE	track number
 03h	BYTE	point or index
 04h	BYTE	minute	\
 05h	BYTE	second	 > running time within track
 06h	BYTE	frame	/
 07h	BYTE	zero
 08h	BYTE	"AMIN" or "PMIN"     \
 09h	BYTE	"ASEC" or "PSEC"      > running time on disk
 0Ah	BYTE	"AFRAME" or "PFRAME" /
---function 0Dh---
 01h	DWORD	starting frame address (Red Book format)
 05h	DWORD	transfer address
 09h	DWORD	number of sectors to read
Note:	copies 96 bytes of sub-channel info per sector into buffer
---function 0Eh---
 01h	BYTE	CONTROL and ADR byte
 02h  7 BYTEs	UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0)
 09h	BYTE	zero
 0Ah	BYTE	"AFRAME"
---function 0Fh---
 ??? documentation not yet available
 01h	WORD	pause status (0000h not paused, 0001h paused)
 03h	DWORD	audio play start address
 07h	DWORD	??? audio play length or end address

Bitfields for CD-ROM device parameters:
Bit(s)	Description	(Table 01450)
 0	door open
 1	door unlocked
 2	supports raw reading in addition to cooked
 3	writable
 4	can play audio/video tracks
 5	supports interleaving
 6	reserved
 7	supports prefetch requests
 8	supports audio channel control
 9	supports Red Book addressing in addition to HSG
 10	audio is playing
 11	no disk in drive
 12	supports R-W subchannels

Top
214402 - INT 21 - Quarterdeck - QEMM-386 v5+ - GET API ENTRY POINT
INT 21 - Quarterdeck - QEMM-386 v5+ - GET API ENTRY POINT
	AX = 4402h
	BX = file handle for device "QEMM386$"
	CX = 0004h
	DS:DX -> DWORD buffer for API entry point
Return: CF clear if successful
	    buffer filled (refer to INT 67/AH=3Fh for entry point parameters)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	Quarterdeck recently (June 1993) documented this function, but the
	  documentation incorrectly states that it is only available for
	  QEMM 6+
SeeAlso: AX=4402h"HOOKROM",INT 2F/AX=D201h/BX=5145h,INT 67/AH=3Fh

Top
214402 - INT 21 U - Quarterdeck - HOOKROM.SYS - GET HOOKED VECTOR TABLE
INT 21 U - Quarterdeck - HOOKROM.SYS - GET HOOKED VECTOR TABLE
	AX = 4402h
	BX = file handle for device "HOOKROM$"
	CX = 0004h
	DS:DX -> DWORD buffer for address of hooked vector table (see #01451)
Return: CF clear if successful
	    DS:DX buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4402h/SF=01h

Format of HOOKROM.SYS hooked vector table entry:
Offset	Size	Description	(Table 01451)
 00h  5 BYTEs	FAR jump to actual interrupt handler
		(end of table if first byte is not EAh)
 05h	BYTE	interrupt vector number

Top
214402 - INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
	AX = 4402h
	BX = file handle for device "SCSIMGR$"
	CX = 0004h or 0005h (refer to notes below)
	DS:DX -> buffer for result (see #01452), set to zeros before call
Return: CF clear if successful
	    AX = 0004h or 0005h (refer to notes below)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	the variant of the call requesting five bytes is an UNDOCUMENTED
	  extension supported by Adaptec's ASPI2DOS.SYS, ASPI4DOS.SYS, and
	  ASPI7DOS.SYS; if made of a host manager which does not support the
	  variant, only four bytes will be returned.  If the variant is
	  supported, Adaptec's WINASPI.DLL assumes that the host manager is
	  an "advanced" one which operates in either real or protected mode
	  (and thus does not require a DPMI INT 31/AX=0301h call to be invoked
	  from protected mode).	 Support of the five-byte variant also appears
	  to imply that an advanced ASPI host manager uses no temporary
	  storage space except the SRB (see #01454) and the stack, and that it
	  is fully reentrant.
	if called with a standard request for four bytes, even Adaptec's
	  advanced drivers return only the requested four bytes containing the
	  ASPI entry point address
	the function address is called with the address of a SCSI Request
	  Block (see #01454) on the stack and the caller must clean up the
	  stack
SeeAlso: AX=440Ch"ASPITAPE",INT 11/AH=FFh"WD7000"

Format of ASPI IOCTL result:
Offset	Size	Description	(Table 01452)
 00h	DWORD	function address
 04h	BYTE	number of SCSI host adapters supported by host manager

(Table 01453)
Values for ASPI request number:
 00h	"HA_INQ"	host adapter inquiry / extended host adapter inquiry
 01h	"GET_TYPE"	get device type
 02h	"EXEC_SIO"	execute SCSI I/O
 03h	"ABORT_SRB"	abort SRB
 04h	"RESET_DEV"	reset SCSI device
 05h	"SET_HAPRMS"	set host adapter parameters
 06h	get disk drive information
 7Fh	(Adaptec) get ASPI manager info?
Note:	request 7Fh is supported by all the Adaptec's DOS ASPI managers:
	  ASPI2DOS.SYS (for AHA-152x), ASPI4DOS.SYS (for AHA-154x/164x),
	  ASPI7DOS.SYS (for AIC-77xx), and ASPI8DOS.SYS (for AIC-78xx)

Format of SCSI Request Block (64 bytes):
Offset	Size	Description	(Table 01454)
 00h	BYTE	request number (see #01453)
 01h	BYTE	request status (see #01455)
 02h	BYTE	host adapter ID
 03h	BYTE	request flags (see #01456)
 04h	DWORD	reserved (0)
---request 00h---
 08h	BYTE	(ret) number of host adapters
 09h	BYTE	(ret) target adapter ID
 0Ah 16 BYTEs	(ret) SCSI manager ID
 1Ah 16 BYTEs	(ret) host adapter ID
 2Ah 16 BYTEs	(ret) host adapter-unique parameters (see #90010,#90011)
---extended request 00h---
 04h  2 BYTEs	(call) extended request signature 55h AAh
		(ret) if extended request supported, reply AAh 55h
 06h	WORD	(call) length of extended buffer at offset 3Ah
		(ret) number of bytes returned in extended buffer
 08h	BYTE	(ret) number of host adapters
 09h	BYTE	(ret) target adapter ID
 0Ah 16 BYTEs	(ret) SCSI manager ID
 1Ah 16 BYTEs	(ret) host adapter ID
 2Ah 16 BYTEs	(ret) host adapter-unique parameters
 3Ah  N BYTEs	extended buffer
		3Ah	WORD	features (see #01457)
		3Ch	WORD	maximum scatter/gather list length
		3Eh	DWORD	maximum SCIS data transfer size (0 = unlimited)
---request 01h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah	BYTE	(ret) device type (see #01460)
---request 02h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah	DWORD	data allocation length
		(ret) residual byte length (if supported and requested)
 0Eh	BYTE	sense allocation length
 0Fh	DWORD	data buffer pointer
 13h	DWORD	next request pointer (for linking)
 17h	BYTE	CDB length
 18h	BYTE	(ret) host adapter status (see #01454)
 19h	BYTE	(ret) target status (see #01459)
 1Ah	DWORD	post routine address (see #01466)
 1Eh	WORD	real mode Post DS
 20h	DWORD	SRB pointer
 24h	WORD	reserved
 26h	DWORD	SRB physical address
 2Ah 22 BYTEs	SCSIMGR$ workspace
 40h  N BYTEs	CCB, including sense data (20-24 bytes)
---request 03h---
 08h	DWORD	address of SRB to abort
---request 04h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah 14 BYTEs	reserved
 18h	BYTE	(ret) host adapter status (see #01458)
 19h	BYTE	(ret) target status (see #01459)
 1Ah	DWORD	post routine address
 1Eh 34 BYTEs	workspace
---request 05h---
 08h 16 BYTEs	host adapter-unique parameters
---request 06h---
 08h	BYTE	target ID
 09h	BYTE	logical unit number
 0Ah	BYTE	disk drive flags (see #01461)
 0Bh	BYTE	INT 13h drive number
 0Ch	BYTE	preferred head number translation
 0Dh	BYTE	preferred sector size translation
 0Eh 10 BYTEs	reserved
---request 7Fh---
 08h	WORD	base I/O port address
 0Ah	BYTE	number of I/O ports used
 0Bh	BYTE	??? (01h returned for AHA-152x)
 0Ch	BYTE	interrupt level
 0Dh	BYTE	DMA channel
 0Eh	BYTE	(ASPI7DOS.SYS) EISA slot  number
		(ASPI8DOS.SYS) PCI device number
 0Fh	BYTE	bits 7-1: reserved (0)
		bit 0: (AHA-152x) ???
 10h	DWORD	ASPI entry point address
 14h	DWORD	previous ASPI entry point address
 18h	WORD	offset to "ASPI request dispatcher" procedure
 1Ah	WORD	offset to "interrupt handler" procedure
 1Ch	WORD	offset to some procedure
 1Eh	WORD	offset to some procedure
 20h	WORD	offset to host adapter data
 22h	BYTE	??? (apparently always 02h)
 23h	BYTE	reserved??? (0)
 24h	BYTE	(ASPI8DOS.SYS) PCI bus number?
 25h  11 BYTEs	reserved??? (0)
SeeAlso: #01462

(Table 01455)
Values for ASPI request status:
 00h	not done yet
 01h	completed successfully
 02h	aborted by host
 04h	SCSI I/O error
 80h	invalid
 81h	no adapter
 82h	no device attached
 else	status
SeeAlso: #01454

Bitfields for ASPI request flags:
Bit(s)	Description	(Table 01456)
 0	posting enabled
 1	linking enabled
 2	residual byte length reported in Data Allocation Length field
 3	transfer from SCSI target to host
 4	transfer from host to SCSI target
 5	scatter/gather
 7-6	reserved
Note:	no data is transferred if both bits 3 and 4 are set; if neither is
	  set, the direction is determined by the SCSI command
SeeAlso: #01454

Bitfields for ASPI extended features:
Bit(s)	Description	(Table 01457)
 0	scatter/gather supported
 1	residual byte length reported
 2	Wide SCSI 16 host adapter
 3	Wide SCSI 32 host adapter
 15-4	reserved
SeeAlso: #01454

(Table 01458)
Values for host adapter status:
 00h	no error detected
 11h	select timeout
 12h	data overrun
 13h	bus error
 14h	bus failure

(Table 01459)
Values for target status:
 00h	no status
 02h	sense data stored in SRB
 08h	target busy
 18h	reservation error

(Table 01460)
Values for device type:
 00h	disk drive
 01h	tape drive (streamer)
 02h	printer
 03h	processor
 04h	WORM drive
 05h	CD-ROM drive
 06h	scanner
 07h	optical drive
 08h	autochanger
 09h	communications device

(Table 01461)
Values for disk drive flags:
 00h	no INT 13 access
 01h	INT 13 with DOS access
 02h	INT 13 without DOS access
 03h	invalid flags

Format of CCB:
Offset	Size	Description	(Table 01462)
 00h	BYTE	command code (see #01463)
 01h	BYTE	flags
		bits 4-0: vary by function
		bits 7-5: logical unit number
 02h	BYTE	"adr_1"
 03h	BYTE	"adr_0"
 04h	BYTE	length
 05h	BYTE	control
	...
 06h/0Ah 14 BYTEs buffer for sense data (see #01464)
SeeAlso: #01454

(Table 01463)
Values for CCB command code:
 00h	test unit ready
 01h	rewind
 03h	request sense data
 05h	get block size limits
 08h	Group 0 read
 0Ah	Group 0 write
 10h	write file marks
 11h	SCSI Space (set position?)
 12h	SCSI Inquire
 15h	set mode information
 16h	reserve SCSI device
 17h	release SCSI device
 19h	erase
 1Ah	request mode information
 1Bh	load/unload media
 1Dh	request target self-check
 24h	set window parameters
 25h	get window parameters
 28h	Group 1 read
 2Ah	Group 1 write
 31h	document feeder control
 34h	get scan data status
---vendor-specific commands---
 D3h	get document feeder status
 D4h	set document feeder mode

Format of sense data:
Offset	Size	Description	(Table 01464)
 00h	BYTE	error code (bit 7 set if valid)
 01h	BYTE	segment number
 02h	BYTE	sense key
		bit 6: EOM
		bit 5: ILI
		bits 0-3: sense key (see #01465)
 03h  4 BYTEs	information bytes
 07h	BYTE	additional sense length (0Ah)
 08h  4 BYTEs	command-specific information
 0Ch	BYTE	additional sense code
 0Dh	BYTE	additional sense code qualifier
 0Eh	BYTE	field replaceable unit code
 0Fh  3 BYTEs	sense key specific bytes

(Table 01465)
Values for sense key:
 00h	no sense data
 02h	SCSI unit not ready
 03h	media error
 04h	unrecoverable hardware error
 05h	illegal parameter in CDB
 06h	target has been reset
 0Bh	target aborted command

(Table 01466)
Values ASPI post function is called with:
	STACK:	DWORD -> SRB (see #01454) which completed
	interrupts disabled
Return: EBP, EBX, ESI, EDI must be preserved
	interrupts disabled
Note:	the post function may issue any ASPI function except an abort; it
	  should complete as quickly as possible

Format of ASPI2DOS.SYS v3.65 host adapter unique parameters:
Offset	Size	Description	(Table 90010)
 00h	WORD	reserved? (0)
 02h	WORD	reserved? (0)
 04h	WORD	base I/O port address
 06h	BYTE	interrupt level
 07h  9 BYTEs	reserved  (0)
SeeAlso: #90011,#01454

Format of ASPI4DOS.SYS v3.35 host adapter unique parameters:
Offset	Size	Description	(Table 90011)
 00h	WORD	offset to "ASPI request dispatcher" procedure
 02h	WORD	offset to "interrupt handler" procedure
 04h 12 BYTEs	reserved  (0)
SeeAlso: #90010,#01454

Top
214402 - INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
	AX = 4402h
	BX = file handle for device "386MAX$$"
	CX = number of bytes to read
	DS:DX -> BYTE 03h followed by 386MAX state buffer (see #01467)
Return: CF clear if successful
	    buffer at DS:DX+1 filled
	    AX = number of bytes actually copied
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	if the value given in CX is less than the size of the state record
	  (5Ah for v6.01, 66h for v7.00), only a partial state record will be
	  returned
	the state is 40h bytes for 386MAX (actually ASTEMM) v2.20 ("386MAX$$"
	  did not exist yet, use "QMMXXXX0" and then "EMMXXXX0" instead) and
	  56h bytes for v5.11.
	to invoke 386MAX API functions, push DX onto the stack, load DX with
	  the word at offset 25h in the returned state, load all other
	  registers as needed for the desired function, and execute an
	  OUT DX,AL or OUT DX,AX; DX will be set to the pushed value on return
	  if it is not otherwise modified by the API function.	For safety,
	  in case a function is not supported or 386MAX is not present, SP
	  should be saved and restored around the API call.
	Windows 3.1 Standard mode, LAN Manager, and Windows for Workgroups all
	  use the 386MAX API; LAN Manager and Windows for Workgroups reportedly
	  make some calls incorrectly
SeeAlso: AX=4403h/SF=03h"386MAX",INT 67/AH=3Fh

Format of 386MAX v6.01+ state:
Offset	Size	Description	(Table 01467)
 -1	BYTE	(call) 03h
 00h  6 BYTEs	signature "386MAX"
 06h  4 BYTEs	version string "N;NN" or "N.NN" (i.e. "6;01" for v6.01)
		(';' by default; apparently changed to a period when 386MAX
		has linked high RAM into DOS's memory chain)
 0Ah	WORD	segment of low-memory portion of 386MAX.SYS
 0Ch  2 BYTEs	???
 0Eh	WORD	segment of ??? memory block or 0000h
 10h	WORD	bit flags 1 (see #01468)
 12h	WORD	starting address of video memory in KB
 14h  2 BYTEs	???
 16h	WORD	total high DOS memory in KB
 18h  2 BYTEs	???
 1Ah	WORD	available shared memory in KB
 1Ch	WORD	KBytes extended memory used by 386MAX
 1Eh  2 BYTEs	???
 20h	WORD	total extended memory in KB
 22h	WORD	IO port to write (OUT DX,AL) to invoke 386MAX INT 15 functions
 24h	WORD	IO port to write (OUT DX,AL) to invoke 386MAX API functions
		  (see #01481)
 26h	WORD	??? (depends on DOS version)
 28h	WORD	size of ??? in paragraphs
 2Ah	DWORD	machine type (see #01476)
 2Eh	DWORD	-> first DOS memory control block
 32h	WORD	system configuration flags (see #01469)
 34h	WORD	debugging flags 1 (see #01470)
 36h	WORD	debugging flags 2 (see #01471)
 38h  2 BYTEs	???
 3Ah	WORD	segment of first MCB in high memory chain
 3Ch	WORD	feature flags 1 (see #01473)
 3Eh	WORD	feature flags 2 (see #01474)
 40h	WORD	feature flags 3 (see #01475)
 42h	WORD	segment of first 386MAX control block??? (see #01477)
 44h	WORD	amount of memory to report available on INT 15/AH=88h
 46h  4 BYTEs	???
 4Ah	WORD	number of K at start of address space swapped with fast
		  extended memory (SWAP= parameter)
 4Ch  2 BYTEs	???
 4Eh	WORD	segment address of ???
 50h	WORD	debugging flags 3 (see #01472)
 52h	DWORD	old INT 21h
 56h	DWORD	pointer to 386MAX's EMS (INT 67h) handler
---386MAX v7.00---
 5Ah	DWORD	KB of extended memory managed by 386MAX
 5Eh	DWORD	bytes of extended memory (EXT= parameter)
 62h  4 BYTEs	???

Bitfields for 386MAX bit flags 1:
Bit(s)	Description	(Table 01468)
 1	???
 2	allow A20 to be enabled/disabled???
 3	??? (cleared by calling INT 67 functions or starting MSWindows)
 4	high RAM present???
 5	386MAX in AUTO mode
 6	386MAX enabled
 7	386MAX is providing EMS services
 8	??? (affects API function 08h)
 9	A20 gate closed (A20 disabled) (see INT 15/AX=2402h)
 10	Weitek support enabled
 11	???
 12	ROMs not shadowed???
 13	QPMS has been used
 14	???
 15	???

Bitfields for 386MAX system configuration flags:
Bit(s)	Description	(Table 01469)
 1	ROM compressed???
 3	???
 5	386MAX loaded into high memory
 6	Microchannel bus
 7	Weitek math coprocessor detected
 9	??? (also generates INT 01 on ??? and INT 03 on ???)
 11	PC/XT (thus only single 8259 interrupt controller present, DMA only
		in 1st megabyte, etc)
 13	LMLTOP= specified
 14	enable A20 control???
 15	???

Bitfields for 386MAX debugging flags 1:
Bit(s)	Description	(Table 01470)
 0	DEBUG=LED
 1	DEBUG=X67
 2	DEBUG=INV
 3	DEBUG=EMSPTED
 4	DEBUG=JMP
 5	DEBUG=CALL
 6	DEBUG=HLT
 7	DEBUG=PMR
 8	DEBUG=CR3
 9	DEBUG=CAPS or DEBUG=INT
 10	DEBUG=RC
 11	DEBUG=ROM
 12	DEBUG=XM
 13	DEBUG=SOR
 14	DEBUG=XR
 15	DEBUG=EMSERR (generate INT 01 on returning error from EMS call)

Bitfields for 386MAX debugging flags 2:
Bit(s)	Description	(Table 01471)
 0	DEBUG=ROMSWAP
 1	DEBUG=UNSHADOWROM
 2	DEBUG=COMPROM
 3	DEBUG=DPMIPHYS
 4	DEBUG=ALLROM
 5	DEBUG=VMS
 6	DEBUG=XMS (generate INT 01 on XMS calls)
 7	DEBUG=I06
 8	DEBUG=VCPI
 9	DEBUG=XDMA
 10	DEBUG=X09
 13	DEBUG=I67 (generate INT 01 on every INT 67 call)
 14	DEBUG=EVM (generate INT 01 on entering V86 mode)
 15	DEBUG=EMSSAVE or DEBUG=VDS

Bitfields for 386MAX debugging flags 3:
Bit(s)	Description	(Table 01472)
 10	DEBUG=EPM
 12	DEBUG=ABIOS
 13	DEBUG=XMSPTED
 14	DEBUG=TIME
 15	DEBUG=SCRUB

Bitfields for 386MAX feature flags 1:
Bit(s)	Description	(Table 01473)
 1	Weitek present
 2	no DPMI services
 3	NODMA
 4	TERSE
 5	NOROM
 6	NOPARITY
 8	NOFLEX (IGNOREFLEXFRAME)
 11	don't create UMBs
 12	don't backfill below video memory (NOLOW)
 13	FRAME= specified
 14	EXT= specified
 15	NOEMS, allow prior expanded memory manager to provide EMS

Bitfields for 386MAX feature flags 2:
Bit(s)	Description	(Table 01474)
 0	UNSHIFT specified (FORCEA20 disabled)
 1	NOXRAM
 2	NOSCSI specified
 3	SCREEN specified
 4	enabled EISADMA
 5	slow DMA
 6	RESETKEYB specified
 7	???
 9	TOP384
 10	???
 11	NOWARMBOOT
 12	USE= specified
 13	ROM= specified

Bitfields for 386MAX feature flags 3:
Bit(s)	Description	(Table 01475)
 0	Windows3 support enabled
 1	SHADOWROM
 2	don't compress ROM (NOCOMPROM)
 3	??? (related to PRGREG=)
 4	??? (related to PRGREG=)
 5	SHADOWRAM
 6	DOS4 specified
 7	NOLOADHIGH
 8	NOPULSE
 11	FORCEA20
 12	DMA buffer enabled
 13	NOSCRUB
 15	NOFRAME

Bitfields for 386MAX machine type:
Bit(s)	Description	(Table 01476)
 12	Amstrad
 13	Epson
 14	Zenith Data Systems
 15	"ASEM"
 16	NEC
 17	"HPRS" model codes 69h and 6Ah
 18	Dell
 19	"CA"
 20	ITT (Xtra Business Systems/Alcatel)
 21	Toshiba 5100
 22	Olivetti
 23	Quadram Quad386 (BIOS model FEh, submodel A6h)
 24	Tandy???
 25	AST 386
 26	INBOARD, ??? version
 27	INBOARD, ??? version
 28	INBOARD, ??? version
 29	"HPRS"
 30	Compaq 386
 31	JET386

Format of 386MAX control block:
Offset	Size	Description	(Table 01477)
 00h	WORD	segment of next block (FFFFh if last)
 02h	WORD	segment of previous block (FFFFh if first)
 04h 12 BYTEs	filename
 10h	WORD	resident size in paragraphs
 12h	WORD	environment size???
 14h	WORD	real prsent environment size + 1 (0000h if ENVSAVE used)
 16h  2 BYTEs	???
 18h	DWORD	initial size or SIZE=n in 386LOAD commandline
 1Ch	DWORD	SIZE=-1 ???
 20h	DWORD	SIZE= ???
 24h	BYTE	PRGREG= if specified, else FFh
 25h	BYTE	ENVREG= if specified, else FFh
 26h	BYTE	FlexFrame (00h not present, 01h present)
 27h  3 BYTEs	???
 2Ah	BYTE	GROUP= or 00h if not present
 2Bh	BYTE	???
 2Ch	WORD	PSP

Format of 386MAX high memory info record:
Offset	Size	Description	(Table 01478)
 00h	WORD	segment address of memory region
 02h	WORD	size of memory region in paragraphs
 04h	BYTE	type or flags???
		00h if locked out
		02h if EMS page frame
		04h if high RAM
		42h if ROM
 05h	BYTE	???

Format of 386MAX ROM shadowing record:
Offset	Size	Description	(Table 01479)
 00h	WORD	logical start segment of ROM??? (may be used by BlueMAX when it
		  squeezes together the ROMs to make room)
 02h	WORD	physical start segment of ROM
 04h  2 BYTEs	???
 06h	WORD	size of shadowed ROM in paragraphs
 08h  2 BYTEs	???
 0Ah	WORD	flags
		bit 15: shadowing enabled for this ROM???
		bit 14: ???
		bit 13: ???
		bit 12: ???
		bit 10: ???

(Table 01480)
Values for 386MAX memory type:
 00h	unused by EMS
 01h	DOS
 04h	page frame overlapping ROM???
 80h	high memory
 84h	page frame???
 87h	video ROM???
Note:	the type may be 00h (unused) if the 16K page is split among different
	  uses (such as ROM and high RAM)

(Table 01481)
Call 386MAX API (via OUT DX,AL) with:
	STACK: WORD value for DX
	AH = 00h unused
		Return: AH = 84h (unsupported function)
	AH = 01h get high memory information
		ES:DI -> buffer for array of high memory info records
			(see #01478)
		Return: CX = number of records placed in buffer
	AH = 02h get shadowed ROM info
		ES:DI -> buffer for array of ROM shadowing records (see #01479)
		Return: CX = number of records placed in buffer
	AH = 03h get 386MAX state
		ES:DI -> 90-byte buffer for state (see #01467)
		Return: AH = 00h (successful)
			buffer filled
	AH = 04h get memory types???
		ES:DI -> buffer for memory type info (array of bytes, one per
			16K page) (see #01480)
		Return:	CX = number of bytes placed in buffer
	AH = 05h get page table entries
		AL = A20 control (00h enable A20 first, 01h leave unchanged)
		CX = buffer size in bytes (0000h = enough for all memory from
			given start to end of memory managed by 386MAX)
		SI = first K to report (rounded down to 4K page)
		ES:DI -> buffer for returned page table entries
		Return: CX = number of bytes returned (four per 4K page)
			ES:DI buffer filled
	AH = 06h get memory speed info
		ES:DI -> buffer for memory speed records (see #01482)
		Return: AH = 00h (successful)
			CX = number of bytes placed in buffer
		Note:	this function can take over a second to execute
	AH = 07h map/unmap multiple handle pages
		DX = EMS handle (on stack)
		STACK: DWORD -> EMS mapping record
		Return:	AH = status (00h,80h,83h,8Ah,8Bh)
		Format of EMS mapping record:
		Offset	Size	Description
		 00h	WORD	function
				0000h use physical page numbers
				0001h use segment addresses
		 02h	WORD	EMS handle
		 04h	WORD	number of mapping entries following
		 06h 2N WORDs	logical page number and physical page/segment
				logical page FFFFh means unmap physical page
		SeeAlso: INT 67/AH=50h
	AH = 08h "EMM2_GOREAL" check whether possible to disable 386MAX
		AL = ??? (00h or nonzero)
		Return: AH = status (00h OK, A4h not possible at this time)
		Note:	if AL=00h, this function always returns success
	AH = 09h toggle Bit Flags 1 flags
		BX = bitmask of bit flags 1's flags to toggle (see #01468)
		Return: AH = 00h (successful)
		Note:	enables A20 first
	AH = 0Ah toggle Debugging Flags 1 flags
		BX = bitmask of Debugging Flags 1's bits to toggle (see #01470)
		Return: AH = 00h (successful)
		Notes:	enables A20 first
			does ??? if bit 3 on after specified bits are toggled
	AH = 0Bh toggle Debugging Flags 2 flags
		BX = bitmask of Debugging Flags 2's bits to toggle (see #01471)
		Return: AH = 00h (successful)
		Note:	enables A20 first
	AH = 0Ch toggle feature flags 3
		BX = bitmask of feature flags 3's bits to toggle (see #01475)
		Return: AH = 00h (successful)
		Note:	enables A20 first
	AH = 0Dh specify 386MAX high-memory location
		BX = segment address of high-memory real-mode portion of 386MAX
		CX = current segment of real-mode stub???
		Return: AH = status (00h successful)
			???
	AH = 0Eh CRT controller register virtualization
		AL = subfunction
		    00h allow access to CRTC I/O ports 03B4h/03B5h, 03D4h/03D5h
		    01h trap accesses to CRTC I/O ports
	AH = 0Fh reboot system
		Return: never
	AH = 10h unused
		Return: AH = 84h (unsupported function)
	AH = 11h get high memory information
		ES:DI -> 96-byte buffer for high memory info
		Return: AH = 00h (successful)
			ES:DI buffer filled
		Notes:	each byte in buffer contains bit flags for a 4K page in
			  the A000h-FFFFh region
				bit 0: page is writeable
				bit 1: physical address same as linear address
				bit 2: EMS page frame
				bit 6: page is part of the QPMS window
			this function can take over a second to execute,
			  because it does a 128K read for each page in an
			  attempt to flush any RAM cache the system may have
	AH = 12h shadow RAM mapping
		AL = subfunction
		    00h unshadow ROMs (except page FFh if NOWARMBOOT set)
		    01h map shadow RAM into ROM regions???
		Return: AH = 00h (successful) if AL=00h or 01h
			AH = 8Fh otherwise
	AH = 13h shadow RAM page protection
		AL = subfunction
		    00h set all shadowed ROM 4K pages to read-only
		    01h set all shadowed ROM 4K pages to read-write
		Return: AH = 00h (successful) if AL=00h or 01h
			AH = 8Fh otherwise
	AH = 14h get Programmable Option Select info???
		ES:DI -> 54-byte buffer for POS data???
		Return: AH = 00h if successful
			AH = A4h on error
		Note:	the buffer consists of nine 6-byte fields; the first
			  eight for slots 1-8, the last for the system board
	AH = 15h ???
		???
		Return: ???
	AH = 16h get 386MAX memory usage screen
		ES:DI -> buffer for memory info display
		CX = size of buffer in bytes
		Return:	ES:DI buffer filled with '$'-terminated string (if
				large enough to hold entire usage screen)
		Note:	the screen is 0303h bytes in v7.00
	AH = 17h Windows 3 startup/termination
		AL = subfunction
		    00h Windows3 initializing
			DX (on stack) = Windows startup flags
			DI = Windows version number (major in upper byte)
			ES:BX = 0000h:0000h
			DS:SI = 0000h:0000h
			Return: CX = 0000h if OK for Windows to load
				   <> 0 if Windows should not load
				ES:BX -> startup info structure
				DS:SI -> Virtual86 mode enable/disable callback
		    01h Windows3 terminating
			ES:BX -> ???
			DX (on stack) = Windows exit flags
			Return: ???
	AH = 18h QPMS (Qualitas Protected Memory Services)
		AL = subfunction
		    00h get QPMS configuration
			Return: BX = starting segment of QPMS memory window
				CX = number of 4K pages reserved for QPMS???
				DX = number of 4K pages in QPMS window???
		    01h map QPMS memory page???
			BX = 4K page number within memory reserved for QPMS???
			CL = 4K page number within QPMS memory window???
		    02h mark all QPMS memory read-only
		    03h mark all QPMS memory read-write
		Return: AH = status (00h,8Ah,8Bh,8Fh)
	AH = 19h get linear address for physical address
		EDX = physical address (low word on stack)
		Return: AH = status
			    00h successful
				EDX = linear address at which physical address
					may be accessed
			    8Bh physical address currently not addressable
		Note:	enables A20 first
	AH = 1Ah set page table entry
		EDX = new page table entry (low word on stack)
		ESI = linear address of page to map (bits 0-11 clear)
		Return: AH = status (00h,8Bh)
		Note:	enables A20 first
	AH = 1Bh get ???
		Return: AH = status
			BX = ???
			CX = number of ???
			EDX = physical address of ???
	AH = 1Ch get original interrupt vector
		AL = interrupt vector (00h-7Fh)
		Return: AH = 00h (successful)
			EDX = original vector before 386MAX loaded (segment in
				high word, offset in low word)
		Note:	no range checking is performed; requests for INTs 80h-
			  FFh will return random values
	AH = 1Dh display string???
		SI = ???
		Return: AH = 00h (successful)
			???
		Note:	this function appears to be broken in v7.00
	AH = 1Eh get memory info
		ES:DI -> memory info (see #01483)
		Return: ???
	AH = 1Fh get DPMI host information
		Return: AX = 0000h if successful
			BX = DPMI flags (see #03152 at INT 31/AX=0400h)
			CL = CPU type (02h = 80286, 03h = 80386, etc.)
			DX = DPMI ver supported (DH=major, DL=2-digit minor)
			SI = ???
			ES???:DI -> ???
		Note:	NOP if NODPMI switch specified
	AH = 20h (v7.00) get ???
	    AL = index of ???
	    Return: EDX = ??? for specified ???
	AH = 21h (v7.00) STACKS support
	    AL = 00h get STACKS parameters
		Return: BX = ??? (0060h for v7.00)
			CX = number of stacks for hardware interrupts
			DX = size of each stack in bytes
			SI = ??? (low and high bytes are separate values)
			DI = ??? (low and high bytes are separate values)
			    low byte = logical page number set by subfn 02h
			ES = ???
	    AL = 01h set ??? "EMM2_DSTKS"
		EBX = ???
		ECX = ???
	    AL = 02h set ???
		BL = logical page number for ??? (00h-03h)
		Return: AH = status (00h,8Ah)
	AH = 22h (v7.00) call ??? for every load module
	    AL = which function to call
		00h call ???
		else call ????
	    Return: AH = 00h
	    Note: if AL=00h, calls the protected-mode function pointed at by
		the DWORD at offset 22h from the start of each module installed
		by a LOAD= directive; if AL<>00h, it calls the function
		pointed at by the DWORD at offset 28h of the load module
	AH = 23h (v7.00) ???
	    AL = 00h set ???
		BL = ???
		Return:	AH = 00h or unchanged (depending on ???)
	    AL = 01h set ???
		BL = ???
		BH = ???
		CX = ???
		DX = ??? (on top of stack)
		Return: AH = status (00h if successful, 8Fh once table full)
		Note:	this call adds one entry to an internal table on each
			  call, until the table is full
	    AL = 02h get ???
		CX = size of buffer
		ES:DI -> buffer for ??? (60 bytes total data)
		Return: CX = number of bytes actually returned
		Note:	returns the array storing the values set with AX=2301h
		Format of one entry in array:
		Offset	Size	Description
		 00h	BYTE	??? (BL from subfn 01h)
		 01h	WORD	??? (CX from subfn 01h)
		 03h	BYTE	??? (BH from subfn 01h)
		 04h	WORD	??? (DX from subfn 01h)
	    AL = 03h set ??? name/path
		ES:DI -> buffer containing ASCIZ ???
	    AL = 04h get ???
		ES:DI -> buffer for ASCIZ ???
	    Note: the ASCIZ string for subfunctions 03h and 04h does not appear
		to be used by 386MAX, and may serve merely for communication
		between two other Qualitas programs
	AH = 24h (v7.00) high memory control
	    AL = 00h get high memory state
		Return: BX = current state
			    00h high memory removed from DOS memory chain
			    01h high memory included in DOS memory chain
	    AL = 01h set high memory state
		BX = new state
		    00h high memory removed from DOS memory chain
		    01h high memory included in DOS memory chain
		    else
			Return: ??? (error, but return varies according to ???)
	AH = 25h (v7.00) remove high RAM from DOS memory chain
	AH = 26h (v7.00) ???
	    BX = ???
	    CX = ???
	    SI = ???
	    DI = ???
	    Return: AH = status
		    BX = ???
		    CX = ???
	AH = 27h (v7.00) ???
	    AL = 00h get ???
		Return: BX = number of paragraphs for ???
	    AL = 01h ???
		BX = ???
		ES??? = ???
	    AL = 02h ???
		???
	    AL = 03h ???
		CX = ???
		DX = ???
		ES??? = ???
		Return: ???
	AH = 28h (v7.00) get ???
		Return: AH = status (00h,8Fh) (see #03648 at INT 67/AH=40h)
			if AH=00h,
			    CX = ???
			    DX = ???
	AH = 29h (v7.00) get ???
		Return: AX = ???
	AH = 40h-5Dh EMS services (see INT 67/AH=40h, etc.)
	AH = DEh VCPI services (see INT 67/AX=DE00h, etc.)
Return: AH = status (as for EMS INT 67 calls)
	    00h successful
	    80h internal error
	    81h hardware malfunction
	    83h invalid handle
	    84h	undefined function
	    8Ah invalid logical page nuber
	    8Bh illegal physical page number
	    8Fh undefined subfunction
	    A4h access denied
	    etc.
	STACK popped (value placed in DX if no specific return value for DX)

Format of 386MAX memory speed record:
Offset	Size	Description	(Table 01482)
 00h	DWORD	page table entry for 4K page
 04h	WORD	number of microticks (840ns units) required for REP LODSD of
		  entire 4K page

Format of 386MAX memory info [array]:
Offset	Size	Description	(Table 01483)
 00h	DWORD	linear start address
 04h	DWORD	size in bytes
 08h	WORD	XMS handle (if next byte = 04h)
		??? (if next byte = 05h)
		??? (if next byte = 06h)
		??? (if next byte = 13h)
		??? (if next byte = 14h)
		??? (if next byte = 15h)
		??? (if next byte = 23h)
		??? (if next byte = 24h)
		??? (if next byte = 26h)
		else unused
 0Ah	BYTE	type
		00h = ???, 01h = VDISK,
		02h = INT 15h extended memory, 03h = ??? extended,
		04h = XMS handle's memory, 05h = ???, 06h = ???, 07h = ???,
		08h = ???, 09h = ???, 0Ah = ???, 0Bh = ???,
		11h = ???, 12h = ???, 14h = ???, 15h = ???,
		19h = ???, 1Ah = ???, 1Bh = ???,
		1Ch = ???, 1Dh = ???, 1Eh = ???, 1Fh = ???,
		20h = ???, 21h = ???, 23h = ???, 24h = ???,
		26h = ???
 0Bh	BYTE	??? (00h for types 00h-03h, 07h-0Bh, 19h-21h;
		     80h for types 04h/13h-15h/23h-26h;
			??? for type 05h)

Top
214402 - INT 21 - PGS1600.DEV - IOCTL - GET CONFIGURATION INFO
INT 21 - PGS1600.DEV - IOCTL - GET CONFIGURATION INFO
	AX = 4402h
	BX = file handle for device "PGS1600$"
	CX = 0018h (size of buffer)
	DS:DX -> configuration buffer (see #01484)
Return: CF clear if successful
	    buffer filled
	    AX = number of bytes actually copied
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
	  display adapter, which provides a 1600x1200 monochrome display as
	  well as one of two emulations, MDA or CGA.
SeeAlso: AX=4403h"PGS1600"

Format of PGS1600.DEV configuration information:
Offset	Size	Description	(Table 01484)
 00h	WORD	version (high byte = major, low byte = minor)
 02h	WORD	board initialisation mode
 04h	WORD	board I/O address
		03D0h CGA emulation
		03B0h MDA emulation
		0390h no emulation
		0350h no emulation, alternate
 06h	WORD	emulation buffer segment
		B800h	CGA emulation
		B000h	MDA emulation
		0000h	no emulation
 08h	WORD	PG1600 graphics buffer segment
 0Ah	WORD	number of bytes between consecutive graphic rows
 0Ch	WORD	horizontal pixel size
 0Eh	WORD	vertical pixel size
 10h	WORD	horizontal dots per inch
 12h	WORD	vertical dots per inch
 14h	WORD	graphics buffer bits per pixel
 16h	WORD	monitor bits per pixel

Top
214402 - INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
	AX = 4402h
	BX = file handle referencing device "$IPCUST"
	CX, DS:DX ignored
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	there are a total of 378h bytes of configuration data for IPCUST.SYS
	  version 2.05.	 If less than the entire data is read or written,
	  the next read/write continues where the previous one ended; this
	  call and AX=4403h both reset the location at which the next
	  operation starts to zero
	v2.1+ uses a new configuration method, but allows the installation
	  of IPCUST.SYS for backward compatibility with other software which
	  must read the PC/TCP configuration
SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4403h"IPCUST"

Top
214402 - INT 21 - WORKGRP.SYS - GET API ENTRY POINT
INT 21 - WORKGRP.SYS - GET API ENTRY POINT
	AX = 4402h
	BX = file handle for device "NET$HLP$"
	CX = 0008h
	DS:DX -> buffer for entry point record (see #01485)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code
Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
	  permits communication with PCs running Windows for Workgroups or
	  LAN Manager
SeeAlso: AH=3Fh"WORKGRP.SYS"

Format of WORKGRP.SYS entry point record:
Offset	Size	Description	(Table 01485)
 00h	WORD	3633h  \ signature???
 02h	WORD	EF6Fh  /
 04h	DWORD	address of entry point (see #01486)
Note:	first four bytes of buffer must be 6Fh E9h 33h 36h on entry when using
	  IOCTL rather than READ to get the entry point record

(Table 01486)
Call WORKGRP entry point with:
	STACK:	WORD	function number (0000h-0009h)
Return: STACK unchanged
SeeAlso: #01487,#01488,#01489,#01490,#01491,#01492,#01493,#01494

(Table 01487)
Call WORKGRP function 00h with:
	STACK:	WORD	0000h (function "get ???")
Return: DX:AX -> data table

(Table 01488)
Call WORKGRP function 01h with:
	STACK:	WORD	0001h (function "hook ???")
Return: STACK:	DWORD	pointer to ???
		WORD	0001h (function number)

(Table 01489)
Call WORKGRP function 02h with:
	STACK:	WORD	0002h (function "unhook ???")
	???
Return: ???

(Table 01490)
Call WORKGRP function 03h with:
	STACK:	WORD	0003h (function "reenable printer port")
		WORD	LPT port number
Return: ???

(Table 01491)
Call WORKGRP function 04h with:
	STACK:	WORD	0004h (function "disable printer port")
		WORD	LPT port number
Return: ???

(Table 01492)
Call WORKGRP function 05h with:
	STACK:	WORD	0005h (function "???")
		???
Return: ???

(Table 01493)
Call WORKGRP function 06h with:
	STACK:	WORD	0006h (function "???")
Return: STACK unchanged
	AX = 0000h
	DX = 0000h

(Table 01494)
Call WORKGRP functions 07h-09h with:
	STACK:	WORD	0007h-0009h (NOP functions)
Return: STACK unchanged
	AX = 0001h
	DX = 0000h

Top
214402 - INT 21 - 10NET v5.0 - 10BEUI.DOS - API
INT 21 - 10NET v5.0 - 10BEUI.DOS - API
	AX = 4402h
	BX = file handle referencing device "10BEUI$"
	DS:DX -> parameter record (see #01495)
	CX ignored
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4402h"10MEMMGR",INT 6F/AH=00h"10NET"

Format of 10NET 10BEUI.DOS parameter record:
Offset	Size	Description	(Table 01495)
 00h	WORD	000Ah (function number???)
 02h	WORD	???
 04h	DWORD	pointer to buffer for ???
 08h  4 BYTEs	???
 0Ch	WORD	transfer size

Top
214402 - INT 21 - 10NET v5.0 - 10MEMMGR.SYS - API
INT 21 - 10NET v5.0 - 10MEMMGR.SYS - API
	AX = 4402h
	BX = file handle referencing device "MEMMGR0$"
	DS:DX -> 6-byte buffer for interface info (see #01496)
	CX ignored
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4402h"10BEUI",INT 6F/AH=00h"10NET"

Format of 10NET 10MEMMGR.SYS interface info:
Offset	Size	Description	(Table 01496)
 00h	DWORD	address of entry point (see #01497)
 04h	WORD	version (0500h for v5.00)

(Table 01497)
Call 10NET 10MEMMGR.SYS entry point with:
	AL = 01h ???
	    BX = ???
	    Return: CF clear if successful
		    CF set on error
			AX = error code
	AL = 02h ???
	    ???
	AL = 03h ???
	    ???
	AL = 04h set/restore memory allocation strategy
	    BX = subfunction
		0000h set strategy
		0001h restore strategy
	    Return: CF clear if successful
		    CF set on error (if function disabled)
		    various registers destroyed
	AL = other
	    Return: CF set
		    AX = 0000h
		    BL = 01h

Top
214402 - INT 21 - Compaq AG1024.SYS - RGDI - GET DRIVER LOCATION
INT 21 - Compaq AG1024.SYS - RGDI - GET DRIVER LOCATION
	AX = 4402h
	BX = file handle for device "$$$$RGDI"
	CX = 0006h (size of returned data)
	DS:DX -> location record (see #01498)
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
SeeAlso: AX=4403h"RGDI"

Format of Compaq AG1024.SYS location record:
Offset	Size	Description	(Table 01498)
 00h	WORD	signature 55AAh
 02h	WORD	segment of ???
 04h	WORD	segment of device driver's code

Top
214402 - INT 21 - FTPSOFT.DOS v3.1 - GET ???
INT 21 - FTPSOFT.DOS v3.1 - GET ???
	AX = 4402h
	BX = file handle for device "FTPSOFT$"
	CX = size of buffer
	DS:DX -> buffer for data (see #01499)
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: FTPSOFT.DOS is a device driver for Protocol Manager support from
	   FTP Software, Inc.
SeeAlso: AH=3Fh"PC/TCP",AX=4402h"NDIS"

Format of FTPSOFT.DOS data:
Offset	Size	Description	(Table 01499)
 00h	WORD	(call) BA98h (if different, no data returned)
 02h	DWORD	-> NDIS common characteristics table
		  (see #01435 at AX=4402h"NDIS")
 06h	DWORD	(call) -> new dispatch table (see #01437 at AX=4402h"NDIS")
 0Ah	DWORD	-> 28-byte buffer for ??? data
 0Eh	DWORD	???
 12h	DWORD	-> FAR function to reset dispatch jump table to defaults
 16h	BYTE	???
Note:	the addresses in the new dispatch table are copied into an internal
	  jump table which may be reset by calling the function pointed at by
	  offset 12h

Top
214402 - INT 21 U - PenDOS PENDEV.SYS - GET ENTRY POINTS
INT 21 U - PenDOS PENDEV.SYS - GET ENTRY POINTS
	AX = 4402h
	BX = file handle for device "$$PENDOS" or "$$PD_REG"
	CX = size of buffer (4 for $$PENDOS and a 4,8,12, or 16 for $$PD_REG)
	DS:DX -> buffer for entry point record (see #01500)
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: A limited version of PenDOS by Communication Intelligence Corporation,
	  which provides pen capability to keyboard-based programs, is bundled
	  with IBM DOS 6.1
SeeAlso: AX=4403h"PENDEV.SYS"

Format of PENDEV.SYS entry point record:
Offset	Size	Description	(Table 01500)
 00h	DWORD	-> array of jumps
 04h	WORD	offset of function to retrieve entry point (see #01501)
 06h  2 BYTEs	signature "Pe"
 08h	WORD	offset of function to set entry point (see #01502)
 0Ah  2 BYTEs	signature "nD"
 0Ch	WORD	offset of function to clear entry point (see #01503)
 0Eh	WORD	signature "OS"

(Table 01501)
Call PENDEV.SYS function to retrieve entry point with:
	AX = index of entry point (0-9)
Return: CF clear if successful
	    DX:AX -> desired entry point
	CF set on error (AX out of range)

(Table 01502)
Call PENDEV.SYS function to set entry point with:
	AX = index of entry point (0-9)
	DX:SI -> new handler
Return: CF clear if successful
	CF set on error (AX out of range)

(Table 01503)
Call PENDEV.SYS function to clear entry point with:
	AX = index of entry point (0-9)
Return: CF clear if successful
	CF set on error (AX out of range)
Note:	resets the jump at the specified entry point to its default target,
	  which simply returns

Top
214402 - INT 21 U - LAN Manager - TCPDRV.DOS - API
INT 21 U - LAN Manager - TCPDRV.DOS - API
	AX = 4402h
	BX = file handle referencing device "TCPDRV$"
	CX = 0019h
	DS:DX -> buffer containing request block (see #01504)
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: TCPDRV.DOS is the low-level device driver supporting LAN Manager's
	  TCP/IP protocol stack

Format of TCPDRV.DOS request block:
Offset	Size	Description	(Table 01504)
 00h	BYTE	(call) function number
		00h initialize ???
		06h get ???
		07h get ???
 01h	BYTE	(call) 00h
		(ret) error code if error, unchanged if successful
 02h	WORD	signature 4354h ('CT')
---function 00h---
 04h	DWORD	(call) pointer to ??? FAR function
		function is called with ES:BX -> device driver request used to
		  invoke this function
 08h  4 BYTEs	???
 0Ch	DWORD	(call) pointer to ??? record, WORD at offset 22h is read
 10h	DWORD	(ret) -> ??? buffer if 0000h:0000h on call
---function 06h---
 04h  4 BYTEs	???
 08h	DWORD	(ret) pointer to ???
---function 07h---
 04h	DWORD	(ret) pointer to ??? record

Top
214402 - INT 21 U - PC Tools 9 CPRLOW.EXE - GET CODE AND DATA ADDRESSES
INT 21 U - PC Tools 9 CPRLOW.EXE - GET CODE AND DATA ADDRESSES
	AX = 4402h
	BX = file handle referencing device "RECLOWLD"
	DS:DX -> buffer for address list (see #01505)
	CX ignored
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)

Format of CPRLOW address list:
Offset	Size	Description	(Table 01505)
 00h	WORD	segment of CPRLOW code
 02h	WORD	offset in code segment of ??? entry point
		(switches into protected mode)
 04h	WORD	offset in code segment of jump array (see #01506)
 06h	WORD	segment of copy of interrupt vector table at CPRLOW load time
Note:	neither the entry point nor the jump array is valid until after a
	  CPR /LOAD, because CPR.EXE installs the code into CPRLOW at runtime.

Format of CPRLOW jump array:
Offset	Size	Description	(Table 01506)
 00h  3 BYTEs	initialize CPRLOW interrupt hooks
 03h  3 BYTEs	reset timers and enable CPR (hotkey enable)
 06h  3 BYTEs	disable CPR (hotkey disable)
 09h  3 BYTEs	clear ??? flag, hotkey disable, and ???
 0Ch  3 BYTEs	initialize delay loop counter (destroys AX,BX,CX,DX)
 0Fh  3 BYTEs	disable CPR completely (commandline /DISABLE)
 12h  3 BYTEs	enable ??? if CPR enabled by both cmdline and hotkey
 15h  3 BYTEs	enable CPR (commandline /ENABLE)

Top
214402 - INT 21 U - Creative Technology CTMMSYS.SYS v1.00.01 - API
INT 21 U - Creative Technology CTMMSYS.SYS v1.00.01 - API
	AX = 4402h
	BX = file handle for device "CTMMSYS$"
	CX = 0004h (size of data)
	DS:DX -> buffer for entry point (see #01507)
Return: CF clear if successful
	    buffer updated
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
	  driver
SeeAlso: AX=4402h"CTSB2",INT 80/BX=0000h"SBFM"

Format of CTMMSYS.SYS entry point record:
Offset	Size	Description	(Table 01507)
 00h	DWORD	(call) signature 4D6D7443h (ASCII "CtmM")
		(ret) pointer to CTMMSYS entry point (see #01508)
SeeAlso: #01509

(Table 01508)
Call CTMMSYS.SYS entry point with:
	AX = ???
	STACK:	WORD	???
		WORD	???
		WORD	??? (0001h,0002h,0005h,0006h)
		WORD	???
		DWORD	-> ???
		WORD	???
		WORD	???
Return: DX:AX = ??? or error code
		0000h:000Bh invalid value for ???
		0000h:000Fh API call already in progress
SeeAlso: #01507

Top
214402 - INT 21 U - Creative Technology CTSB2.SYS v1.01.01 - API
INT 21 U - Creative Technology CTSB2.SYS v1.01.01 - API
	AX = 4402h
	BX = file handle for device "CTSOUND0"
	CX = 0004h (size of data)
	DS:DX -> buffer for entry point (see #01509)
Return: CF clear if successful
	    buffer updated
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
	  driver
SeeAlso: AX=4402h"CTMMSYS",INT 80/BX=0000h"SBFM"

Format of CTSB2.SYS entry point record:
Offset	Size	Description	(Table 01509)
 00h	DWORD	(call) signature 4D6D7443h (ASCII "CtmM")
		(ret) pointer to CTSB2 entry point (see #01510)
SeeAlso: #01507

(Table 01510)
Call CTSB2.SYS entry point with:
	AX = ???
	STACK:	DWORD	-> ???
		WORD	function number
			(0100h,0200h,0300h,0400h,0500h,0600h,0701h)
		DWORD	-> ???
		WORD	???
		WORD	???
Return: DX:AX = ??? or error code
		0000h:0004h invalid subfunction???
		0000h:000Bh invalid value for ???
		0000h:000Fh API call already in progress
SeeAlso: #01509

Top
214402 - INT 21 U - Novell DOS 7+ EMM386.EXE - GET STATE RECORD
INT 21 U - Novell DOS 7+ EMM386.EXE - GET STATE RECORD
	AX = 4402h
	BX = file handle for device "EMMXXXX0" or "EMMQXXX0"
	CX = 003Eh (size of state record)
	DS:DX -> buffer for state record (see #01511)
Return: CF clear if successful
	    buffer filled (see #03603 at INT 67/AH=3Fh)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	This function is called by the Novell DOS 7+ MEM utility.

Format of Novell DOS 7 - DR-DOS 7.03 EMM386.EXE state record:
Offset	Size	Description	(Table 01511)
 00h	WORD	signature EDC0h
 02h 12 BYTEs	(ret) bitmap for include range
 0Eh 12 BYTEs	(ret) bitmap for auto range
 1Ah 12 BYTEs	(ret) bitmap for BIOS range
 26h 12 BYTEs	(ret) bitmap for ROM range
 32h 12 BYTEs	(ret) bitmap for map range
Note:	each bitmap covers the upper-memory address range A000h-FFFFh, where
	  offset X bit B within the bitmap indicates the state of the 4K page
	  starting at segment A000h + (8X + B) * 100h

Top
214402SF00 - INT 21 U - Memory Managers - GET API ENTRY POINT
INT 21 U - Memory Managers - GET API ENTRY POINT
	AX = 4402h subfn 00h
	BX = file handle for device "EMMXXXX0"
	CX = 0006h (size of buffer in bytes)
	DS:DX -> buffer for API entry point record (see #01512)
		first byte must be 00h on entry
Return: CF clear if successful
	    buffer filled (see #03603 at INT 67/AH=3Fh)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	this function is supported by Microsoft EMM386.EXE v4.45+ and
	  CEMM v5.10+, and is intended for use by MS Windows as it starts up
	if no other program has hooked INT 67, an alternate installation
	  check for CEMM is testing for the string
	  "COMPAQ EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
	  handler's segment; if present, the word at offset 12h contains the
	  offset of the API entry point
SeeAlso: AX=4402h/SF=01h,AX=4402h/SF=02h,AX=4402h"EMM386",INT 67/AH=3Fh

Format of memory manager API entry point record:
Offset	Size	Description	(Table 01512)
 00h	WORD	??? (0022h for CEMM 5.11, 0025h for MS EMM386 v4.45)
 02h	DWORD	manager's private API entry point
		(see #01513,#03666 at INT 67/AX=FFA5h)

(Table 01513)
Call CEMM v5.10+ entry point with:
	AH = 00h get memory manager's state
	    Return: AH = state
			bit 0: turned OFF
			bit 1: AUTO mode enabled
	AH = 01h set memory manager's state
	    AL = new state (00h ON, 01h OFF, 02h AUTO)
	    Return: CF clear if successful
		    CF set on error
	AH = 02h Weitek coprocessor support
	    AL = subfunction
		00h get Weitek support state
		    Return: AL = status
				bit 0: Weitek coprocessor is present
				bit 1: Weitek support is enabled
		01h turn on Weitek support
		02h turn off Weitek support
	    Return: CF clear if successful
		    CF set on error
			AH = error code (01h invalid subfunc, 02h no Weitek)
	AH = 05h get statistics
	    ???
	AH > 06h
	    Return: CF set
		    AH = 01h (invalid function)
Notes:	AH=03h,04h,06h are NOPs which return CF clear, presumably for backwards
	  compatibility with earlier versions of CEMM
	in v5.11, AH=05h merely prints an error message (using INT 21/AH=09h)
	  stating that a different version of CEMM is installed and it is
	  therefore not possible to display the statistics

Top
214402SF01 - INT 21 U - Memory Managers - GET EMM IMPORT STRUCTURE ADDRESS
INT 21 U - Memory Managers - GET EMM IMPORT STRUCTURE ADDRESS
	AX = 4402h subfn 01h
	BX = file handle for device "EMMXXXX0"
	CX = 0006h (size of buffer in bytes)
	DS:DX -> buffer for EMM import structure record (see #01514)
		first byte must be 01h on entry
Return: CF clear if successful
	    buffer filled (see also #03603 at INT 67/AH=3Fh)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	this function is supported by Microsoft EMM386.EXE v4.45+,
	  QEMM-386 v6+, and CEMM v5.10+, and is intended for use by MS Windows
	  as it starts up
	for QEMM-386, this call always returns an error if Windows3 support
	  has been disabled with the NW3 switch
SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 2F/AX=D201h/BX=5145h
SeeAlso: INT 67/AH=3Fh

Format of EMM import structure record:
Offset	Size	Description	(Table 01514)
 00h	DWORD	physical address of EMM import structure (see #01515)
 04h	BYTE	EMM import structure major version
 05h	BYTE	EMM import structure minor version
Note:	vession 1.00 contains only EMS information (Windows 3.0+)
	version 1.10 contains UMB/XMS/HMA/EMS information (Windows 3.1)
	version 1.11 is version 1.10 plus memory manager maker/product name
SeeAlso: #03643

Format of Global EMM Import record:
Offset	Size	Description	(Table 01515)
 00h	BYTE	bit flags
		bit 2: ???
		bit 3: free EMM386 virtual HMA only if hma_page_table_paddr!=0
		bit 4: no UMB???
 01h	BYTE	reserved (0)
 02h	WORD	size of structure in bytes
 04h	WORD	structure version
 06h	DWORD	reserved
 0Ah 384 BYTEs	64 EMS frame status records (see #01516), one per 16K of
		  real-mode 1M address space
18Ah	BYTE	??? (must be at least 3*number_of_EMS_frames+4)
18Bh	BYTE	number of UMB frame descriptors following
18Ch 4N DWORDs	UMB frame descriptors
		each is 4 DWORDs giving physical page numbers for the four
		  4K pages of a 16K EMS frame (00000000h if non-UMB page)
var	BYTE	number of EMS handle info records following
    16N BYTEs	EMS handle info records (see #01518)
---version 1.10+ ---
	DWORD	realmode INT 67 vector (used by Windows to set breakpoints)
	DWORD	physical address of HMA page table values
	BYTE	number of free page entries following
     2N DWORDs	free page entries
		each is:
		    DWORD	physical page number
		    DWORD	number of consecutive physical pages
	BYTE	number of XMS handle info records following
		00h if memory manager does not emulate XMS or has real mode
		  XMS code which can execute in the Windows environment
    12N BYTEs	XMS handle info records (see #01519)
	BYTE	number of free UMB info records following
     2N WORDs	free UMB info records
		each is:
		    WORD	real mode start segment
		    WORD	size in paragraphs
---version 1.11---
     20 BYTEs	blank-padded maker name
     20 BYTEs	blank-padded product name

Format of EMS frame status record:
Offset	Size	Description	(Table 01516)
 00h	BYTE	frame type (see #01517)
 01h	BYTE	owner handle (00h/FFh = none) from frame including UMB
		index to UMB frame descriptors
 02h	WORD	logical page for frame, 7FFFh if none, FFFFh if non-EMS frame
 04h	BYTE	EMS physical page number (FFh for non-EMS = don't care???)
 05h	BYTE	flags for non-EMS frames (00h for EMS frame)
		bits 0,1 for first 4K, bits 2,3 for second 4K, etc:
		  10: direct mapping (linear address = physical address)
		  01: UMB mapping

Bitfields for EMS frame type:
Bit(s)	Description	(Table 01517)
 0	EMS frame
 1	(if EMS frame) in standard 64K page frame
 2	first 4K of frame is UMB
 3	second 4K of frame is UMB
 4	third 4K of frame is UMB
 5	last 4K of frame is UMB

Format of EMS handle info record:
Offset	Size	Description	(Table 01518)
 00h	BYTE	handle number (00h = system handle)
 01h	BYTE	flags
		bit 0: normal handle rather than system handle
		bit 2: ??? (set by some EMS managers)
 02h  8 BYTEs	EMS handle's name
 0Ah	WORD	number of 16K pages for handle
 0Ch	DWORD	physical address of page table entries forming page map
Note:	all values should be zero for the system handle if no large frame
	  support is present

Format of XMS handle info record:
Offset	Size	Description	(Table 01519)
 00h	WORD	handle
 02h	WORD	flags
		bit 0: handle usable by Windows
			(already in use when Windows started if clear)
		bit 1: reserved (0)
 04h	DWORD	size in KB (may be zero, used only if flags bit 0 set)
 08h	DWORD	physical address (only if flags bit 0 set)

Top
214402SF02 - INT 21 U - Memory Managers - GET MEMORY MANAGER VERSION
INT 21 U - Memory Managers - GET MEMORY MANAGER VERSION
	AX = 4402h subfn 02h
	BX = file handle for device "EMMXXXX0"
	CX = 0002h (size of buffer in bytes)
	DS:DX -> buffer for memory manager version (see #01520)
		first byte must be 02h on entry
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	this function is supported by Microsoft EMM386.EXE v4.45+ and
	  CEMM v5.10+, and is intended for use by MS Windows as it starts up
SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 67/AH=3Fh

Format of memory manager version:
Offset	Size	Description	(Table 01520)
 00h	BYTE	major version
 01h	BYTE	minor version (binary)

Top
214402 - INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION
INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION
	AX = 4402h
	BX = file handle for device "EMMXXXX0"
	CX = size of buffer in bytes (varies, see #01521)
	DS:DX -> buffer for returned data (see #01521)
		first byte must be set on entry to indicate desired data
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	an error is returned if the number of bytes to be read does not match
	  the number of bytes returned for the specified data item
	this function is part of the interface which allows MS Windows to
	  cooperate with memory managers
SeeAlso: AX=4402h/SF=00h,AX=4402h/SF=01h,AX=4402h/SF=02h,INT 67/AX=FFA5h

Format of EMM386.EXE data buffer:
Offset	Size	Description	(Table 01521)
 00h	BYTE	(call) function
		03h get ???
		04h get ???
---function 03h---
 00h	WORD	???
 02h	WORD	???
---function 04h---
 00h	WORD	segment of UMB containing EMM386 code/data
 02h	WORD	number of paragraphs of EMM386 code/data in UMB
 04h	WORD	???

Top
214402 - INT 21 U - IFSHLP.SYS - GET ENTRY POINT
INT 21 U - IFSHLP.SYS - GET ENTRY POINT
	AX = 4402h
	BX = file handle for device "IFS$HLP$"
	CX = 0008h (size of buffer in bytes)
	DS:DX -> buffer for entry point record (see #01415 at AH=3Fh"IFSHLP")
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AH=3Fh"IFSHLP"

Top
214402 - INT 21 - ATA Software Programming Interface (ATASPI) - INTERFACE
INT 21 - ATA Software Programming Interface (ATASPI) - INTERFACE
	AX = 4402h
	BX = file handle for device "$ATAMGR$"
	CX = 0004h (size of buffer in bytes)
	DS:DX -> buffer for result (see #90000), set to zeros before call
Return: CF clear if successful
	    AX = 0004h
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	ATASPI is an API to control IDE, EIDE, and ATAPI devices, proposed by
	  Future Domain; there's at least one driver in existence which
	  conforms to this specification: ATASPI16.SYS by Future Domain
	(see #90002) on the stack and the caller must clean up the stack
	Future Domain ATASPI16.SYS v2.2 performs ATASPI calls using INT 4Fh
	  interface instead of this INT 21/4402h interface and itself supports
	  both interfaces
SeeAlso: AX=4402h"ASPI",INT 4F/AX=0081h,INT 4F/AX=0082h,PORT 01F0h-01F7h"HDC1"

Format of ATASPI IOCTL result:
Offset	Size	Description	(Table 90000)
 00h	DWORD	ATASPI entry point address

(Table 90001)
Call ATASPI entry point with:
	STACK:	DWORD -> ATA Request Block (ARB) (see #90003)
Notes:	caller must clean up the stack
	the large-model C declaration is
	  void (*entry)(ARB_Struct *);
SeeAlso: #90000

(Table 90002)
Values for ATASPI command code:
 00h	ATA controller inquiry
 01h	get ATA device type
 02h	execute ATA I/O
 03h	abort ATA request
 04h	reset ATA device
 05h	set ATA controller parameter
 06h	get ATA disk drive information
SeeAlso: #90003

Format of ATA Request Block (ARB):
Offset	Size	Description	(Table 90003)
 00h	BYTE	command code (see #90002)
 01h	BYTE	(ret) status (see #90004)
 02h	BYTE	ATA controller number
 03h	BYTE	request flags (see #90005)
 04h	DWORD	reserved (0)
---request 00h---
 08h	BYTE	(ret) total number of ATA controllers
		valid only if ATA controller number = 0FFh
 09h	BYTE	reserved (0)
 0Ah 16 BYTEs	(ret) ATA manager ID
 1Ah 16 BYTEs	(ret) ATA controller ID
 2Ah 16 BYTEs	(ret) controller unique parameters (see #90010)
---request 01h---
 08h	BYTE	device ID (00h = master, 01h = slave)
 09h	BYTE	reserved (0)
 0Ah	BYTE	(ret) peripheral device type (see #90007)
---request 02h---
 08h	BYTE	device ID
 09h	BYTE	reserved (0)
 0Ah	DWORD	data  transfer length
		(ret) residual byte length
 0Eh	BYTE	sense allocation length (N)
 0Fh	DWORD	data  buffer pointer
 13h	DWORD	reserved (0)
 17h	BYTE	ACB length (M)
		for Task File requests must be set to 07h, for ATAPI Packet
		  requests must match the number of bytes in the packet
 18h	BYTE	(ret) ATA controller status (see #90006)
 19h	BYTE	(ret) device status
		value of the error register, 00h if no error (see #P0512)
 1Ah	DWORD	post routine  address (see #90009)
 1Eh	WORD	data transfer block size (in bytes)
		number of data bytes to transfer per hardware interrupt for Task
		  File requests; number of data bytes host prefers to transfer
		  per hardware interrupt for ATAPI Packet commands
 20h 32 BYTEs	reserved for ATASPI workspace
 40h  M BYTEs	ATA/ATAPI command block (ACB)
		contains AT Task File Structure (see #90008) if bit 2 of the
		  request flags is set, ATAPI packet (see #03236,#03237,#03238)
		  if bit 2 is cleared
40h+M N BYTEs	sense allocation area
---request 03h---
 08h	DWORD	address of ARB to be aborted
---request 04h---
 08h	BYTE	device ID
 09h 15 BYTEs	reserved (0)
 18h	BYTE	(ret) ATA controller status (see #90006)
 19h	BYTE	(ret) device status
 1Ah	DWORD	post routine address (see #90009)
 1Eh 34 BYTEs	reserved for ATASPI workspace
---request 05h---
 08h 16 BYTEs	controller unique parameters (vendor unique)
---request 06h---
 08h	BYTE	device ID
 09h	BYTE	reserved (0)
 0Ah	BYTE	(ret) drive flags (see #01461)
 0Bh	BYTE	(ret) INT 13h drive
 0Ch	BYTE	(ret) preferred head   translation
 0Dh	BYTE	(ret) preferred sector translation
 0Eh 10 BYTEs	reserved (0)

(Table 90004)
Values for ATASPI request status:
 00h	request in progress
 01h	request completed without error
 02h	request aborted by host
 04h	request completed with error
 80h	invalid	request
 81h	invalid ATA controller number
 82h	ATA device not installed
 83h	ATA controller/device busy
Note:	if ATASPI ever returns 83h as the status, it is the responsibility of
	  the driver/applications to re-send the request at a later time
SeeAlso: #90003

Bitfields for request flags:
Bit(s)	Description	(Table 90005)
 7	reserved (0)
 6	"ByteXfer"
	=0 use word transfer mode
	=1 use byte transfer mode
 5	(ATAPI device) DSC unavailable action (DUA)
	=0 queue the request and service it when DSC bit is set
	=1 return with status 83h
 4-3	direction
	00 direction determined by device
	01 data in
	10 data out
	11 no data transfer
 2	request type
	=0 ATAPI Packet Command
	=1 AT Task File Structure
 1	reserved (0)
 0	"Post"
	=0 disable posting
	=1 enable  posting
SeeAlso: #90003

(Table 90006)
Values for ATA controller status:
 00h	no error
 11h	device not present
 12h	data overrun/underrun
SeeAlso: #90003

(Table 90007)
Values for peripheral device type:
 00h	direct-access device (e.g. magnetic disk)
 01h	tape device (QIC-121 SCSI Architectural Model)
 02h-04h reserved
 05h	CD-ROM device
 06h	reserved
 07h	optical memory device (e.g. some optical disks)
 08h-0Bh reserved
 0Ch	tape device (Cost Sensitive Architectural Model)
 0Dh-1Eh reserved
 1Fh	unknown or no device type
 80h	non-ATAPI device
SeeAlso: #90003

Format of AT Task File Structure:
Offset	Size	Description	(Table 90008)
 00h	features register
 01h	sector count register
 02h	cylinder LSB register
 04h	cylinder MSB register
 05h	device/head  register (see #P0513)
 06h	command register (see #P0515)
SeeAlso: #90005

(Table 90009)
Values ATASPI post function is called with:
	STACK:	DWORD -> ARB (see #90003) which completed
	interrupts disabled
Return: EBP, EBX, ESI, EDI must be preserved
	interrupts disabled
Notes:	the post function may issue any ATASPI function except an abort; it
	  should complete as quickly as possible
	the large-model C declaration is
	  void (*post)(ARB_Struct *);
SeeAlso: #90003

Format of Future Domain controller unique parameters:
Offset	Size	Description	(Table 90010)
 00h	WORD	controller features
 02h	WORD	controller main I/O port
 04h	WORD	controller alternate I/O port
 06h	BYTE	controller IRQ
 07h	BYTE	??? (00h or 01h)
 08h	BYTE	??? (00h or 01h)
 09h  7 BYTEs	reserved (0)
SeeAlso: #90003

Top
214402 - INT 21 - DRFAT32.SYS device driver - IOCTL INPUT
INT 21 - DRFAT32.SYS device driver - IOCTL INPUT
	AX = 4402h
	BX = file handle referencing character device for DRFAT32.SYS driver
	    (e.g. "FAT32XXX" in the default configuration)
	CX = number of bytes to read
	DS:DX -> control block (see #04108)
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	 the data returned depends on the first byte of the control block
	   the remainder of the control block is filled by the driver
	 one DRFAT32.SYS device driver supports up to 8 subunits (that is up
	   to 8 FAT32 partitions). By default, DRFAT32.SYS logs in all FAT32
	   partitions it finds, however, by using command line options /C (CHS),
	   /L (LBA), /H (Hidden) and /P:1..4 (Primary), /E:1..255 (Logical
	   Drive), and /U:min[,max] (Unit 128..255) it can be directed to
	   attach only to one or a specific range of partitions. Multiple
	   DRFAT32.SYS drivers can be loaded in a system when using the
	   /D:name option. To assign them to the redirector, the /D:name option
	   must be repeated for each of the DRFAT32.SYS drivers in the
	   DRFAT32.EXE command line.
SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h

Format of DRFAT32 control block:
Offset	Size	Description	(Table 04108)
 00h	BYTE	data being requested
		00h device driver header address
		09h media change status
		48h address of DRFAT32 geometry table
		else error
---function 00h---
 01h	DWORD	device driver header address (see also AH=52h,#01646)
---function 09h---
 01h	BYTE	media change status
		00h don't know
		01h media unchanged
		FFh media has been changed
---DRFAT32 function 48h---
 01h	DWORD	address of DRFAT32 geometry table (see #04109)

Format of DRFAT32 Geometry Table:
Offset	Size	Description	(Table 04109)
 00h 8*59 BYTEs	eight DRFAT32 partition data tables (see #04110)
 1D8h	BYTE	DRFAT32 access flags (see #04111)
 1D9h	BYTE	DRFAT32 status flags (see #04112)
Note:	This is the table layout used by DRFAT32.SYS 1.00 which supports up
	  to 8 sub-units. The layout of this table and its records may change,
	  so the version indicator in the device driver's signature ("FAT320")
	  and the size of the public data structure should be checked first.
SeeAlso: #04108

Format of DRFAT32 partition data table:
Offset	Size	Description	(Table 04110)
 00h	BYTE	size of following public data structure (9)
	--- public data (needed by the DRFAT32.EXE redirector) ---
 01h	WORD	bytes per sector
 03h	BYTE	sectors per cluster
 04h	WORD	reserved sectors
 06h	DWORD	root directory start cluster
	--- private data ---
 0Ah	DWORD	sectors per track
 0Eh	DWORD	root directory sector
 12h	DWORD	partition start sector
 16h	DWORD	highest partition sector allowed
		(only if range checking enabled)
 1Ah	DWORD	absolute cluster start sector
		(cluster start sector+partition start sector)
 1Eh	DWORD	total sectors per track (number of heads * sectors per track)
 22h	BYTE	drive unit (default 80h)
 23h	BYTE	temp buffer: CHS sectors to write (if verify enabled)
 24h	BYTE	INT 13h extension version
	--- CHS data ---
 25h	WORD	cylinder
 27h	WORD	head
 29h	WORD	sector
	--- LBA data ---
 2Bh 16 BYTEs disk address packet (see #00272 at INT 13/AH=42h)
SeeAlso: #04109

Bitfields for DRFAT32 access flags:
Bit(s)	Description	(Table 04111)
 7	using LBA addressing instead of CHS
 6	using INT 13h extensions (see also INT 13/AH=48h)
 5	multi-sector access allowed
 4	force media change indication on removable drives
 3	force verify after every write (/W)
 2	more than 1024 cylinders, less than 64 heads (/A)
 1	client-side asynchronous buffering allowed (/B), normally =0
 0	read-only access (/R)
SeeAlso: #04109,#04112

Bitfields for DRFAT32 status flags:
Bit(s)	Description	(Table 04112)
 7-2	reserved (0)
 1	Save Guard enabled (blocks any further writes after a fault)
 0	volume may have dirty sectors (set after write operations)
SeeAlso: #04109,#04111

Top
214403 - INT 21 - DOS 2+ - IOCTL - WRITE TO CHARACTER DEVICE CONTROL CHANNEL
INT 21 - DOS 2+ - IOCTL - WRITE TO CHARACTER DEVICE CONTROL CHANNEL
	AX = 4403h
	BX = file handle referencing character device
	CX = number of bytes to write
	DS:DX -> data to write
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	format of data is driver-specific
	  (also see separate entries below for some specific cases)
	if the file handle refers to "4DOSSTAK", the 4DOS (v2.x-3.03)
	  KEYSTACK.SYS driver will push the specified characters on the
	  keyboard stack; similarly for "NDOSSTAK", the NDOS KEYSTACK.SYS
	  driver will push the characters onto the keyboard stack
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4400h,AX=4402h"DOS 2+",AX=4405h"DOS",INT 2F/AX=122Bh
SeeAlso: INT 2F/AX=D44Dh,INT 2F/AX=D44Fh

Top
214403 - INT 21 - SMARTDRV.SYS v3.x only - IOCTL - CACHE CONTROL
INT 21 - SMARTDRV.SYS v3.x only - IOCTL - CACHE CONTROL
	AX = 4403h
	BX = handle for device "SMARTAAR"
	CX = number of bytes to write
	DS:DX -> SMARTDRV control block (see #01523)
Return: CF clear if successful
	    AX = number of bytes actually written
		0000h if control block too small for given command
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	NCache2 (from the Norton Utilities v8.0) attempts to support this
	  interface, but does not do so correctly, often hanging the system;
	  one should use the SmartDrive v4.x or NCache private interfaces
	  (see INT 2F/AX=4A10h/BX=0000h,INT 2F/AX=FE00h/DI=4E55h)
SeeAlso: AX=4402h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h

(Table 01522)
Values for SMARTDRV function code:
 00h	flush cache
 01h	flush and discard cache
 02h	disable caching (flushes and discards cache first)
 03h	enable caching
 04h	control write caching
 05h	set flushing tick count
 06h	lock cache contents
 07h	unlock cache contents
 08h	set flush-on-reboot flag
 09h	unused
 0Ah	control full-track caching
 0Bh	reduce cache size
 0Ch	increase cache size
 0Dh	set INT 13 chain address

Format of SMARTDRV control block:
Offset	Size	Description	(Table 01523)
 00h	BYTE	function code (see #01522)
---functions 00h-03h,06h,07h---
 no additional fields
---function 04h---
 01h	BYTE	write caching control action
		00h turn off write-through
		01h turn on write-through
		02h turn off write buffering (also flushes cache)
		03h turn on write buffering (also flushes cache)
---function 05h---
 01h	WORD	number of timer ticks between cache flushes
---function 08h---
 01h	BYTE	new flush-on-reboot flag (00h off, 01h on)
---function 0Ah---
 01h	BYTE	full-track writes are
		00h not cached
		01h cached
---functions 0Bh,0Ch---
 01h	WORD	number of 16K pages by which to increase/reduce cache size
---function 0Dh---
 01h	DWORD	new address to which to chain on INT 13
Note:	the previous address is not preserved

Top
214403 - INT 21 - CD-ROM device driver - IOCTL OUTPUT
INT 21 - CD-ROM device driver - IOCTL OUTPUT
	AX = 4403h
	BX = file handle referencing character device for CD-ROM driver
	CX = number of bytes to write
	DS:DX -> control block (see #01524)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	some device drivers support several subunits (that is more than one
	  drive) but it is not possible to distinguish between them with this
	  function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
	under Windows95, the "mscd$$$$" device cannot be opened so you cannot
	  obtain the handle required by this function: use INT 2F/AX=1510h
	  or INT 2F/AX=0802h instead
SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h

Format of CR-ROM control block:
Offset	Size	Description	(Table 01524)
 00h	BYTE	function code
		00h eject disk
		01h lock/unlock door
		02h reset drive
		03h control audio channel
		04h write device control string
		05h close tray
---functions 00h,02h,05h---
 no further fields
---function 01h---
 01h	BYTE	lock function
		00h unlock door
		01h lock door
---function 03h---
 01h	BYTE	input channel (0-3) for output channel 0
 02h	BYTE	volume for output channel 0
 03h	BYTE	input channel (0-3) for output channel 1
 04h	BYTE	volume for output channel 1
 05h	BYTE	input channel (0-3) for output channel 2
 06h	BYTE	volume for output channel 2
 07h	BYTE	input channel (0-3) for output channel 3
 08h	BYTE	volume for output channel 3
Note:	output channels 0 and 1 are left and right, 2 and 3 are left prime and
	  right prime; a volume of 00h is off
---function 04h---
 01h  N BYTEs	bytes to send directly to the CD-ROM drive without
		  interpretation

Top
214403 - INT 21 U - MS-DOS 7.0+ - CONFIG$ device - SET??? CONFIGURATION INFORMATION
INT 21 U - MS-DOS 7.0+ - CONFIG$ device - SET??? CONFIGURATION INFORMATION
	AX = 4403h
	BX = file handle for character device "CONFIG$"
	CX = number of bytes to write
	DS:DX -> buffer containing ???
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	IOCTL Output to CONFIG$ is only available while IO.SYS is booting
	  the system; once CONFIG.SYS has been processed, this call always
	  succeeds, ignoring any input
SeeAlso: AX=4403h"CONFIG$"

Top
214403 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
	AX = 4403h
	BX = handle for device "SCSITAPE"
	CX = number of bytes to write
	DS:DX -> SCSITAPE control block (see #01525)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4405h"ST-01",INT 78/AH=10h

Format of SCSITAPE control block:
Offset	Size	Description	(Table 01525)
 00h	WORD	command type
		'F' Format (argument 1 = interleave, argument 2 = format type)
		'E' Erase
		'R' Rewind
		'L' Load
		'N' No Load
		'S' Space (argument 1 = count, argument 2 = type)
		'M' File Mark (argument 1 = count)
		'A' Reassign
 02h	WORD	argument 1
 04h	WORD	argument 2
 06h	WORD	segment of command buffer
 08h	WORD	offset of command buffer
 0Ah	WORD	length of command buffer

Top
214403 - INT 21 U - AI Architects - OS/x86??? - API
INT 21 U - AI Architects - OS/x86??? - API
	AX = 4403h
	BX = handle for device "AIA_OS"
	CX = number of bytes to write (ignored)
	DS:DX -> 12-byte buffer (see #01526), first byte is command:
		  81h installation check
		  82h get API entry point
		  84h uninstall
Return: CF clear if successful
	    AX = number of bytes actually written
	    DS:DX buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Ch,0Dh) (see #01680 at AH=59h)
Notes:	these functions are only available if the DOS extender was loaded as a
	  device driver in CONFIG.SYS
	called by TKERNEL (a licensed version of AI Architects/Ergo OS/x86)
SeeAlso: INT 2F/AX=FBA1h/BX=0081h,INT 2F/AX=FBA1h/BX=0082h
Index:	installation check;OS/x86|entry point;OS/x86|uninstall;OS/x86

Format of buffer on return:
Offset	Size	Description	(Table 01526)
 00h  4 BYTEs	signature "IABH"
---if function 81h---
 (no additional fields)
---if function 82h---
 04h	DWORD	pointer to API entry point (see INT 2F/AX=FBA1h/BX=0082h)
---if function 84h---
 04h	WORD	success indicator
 06h	WORD	segment of ???
 08h	WORD	segment of ??? memory block to free if nonzero
 0Ah	WORD	segment of ??? memory block to free if nonzero

Top
214403 - INT 21 - PGS1600.DEV - IOCTL - SET CONFIGURATION???
INT 21 - PGS1600.DEV - IOCTL - SET CONFIGURATION???
	AX = 4403h
	BX = file handle for device "PGS1600$"
	CX = 0018h (size of buffer)
	DS:DX -> configuration buffer (see #01484 at AX=4402h"PGS1600")
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
	  display adapter, which provides a 1600x1200 monochrome display as
	  well as one of two emulations, MDA or CGA.
SeeAlso: AX=4402h"PGS1600"

Top
214403 - INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
	AX = 4403h
	BX = file handle referencing device "$IPCUST"
	CX, DS:DX ignored
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	there are a total of 378h bytes of configuration data for IPCUST.SYS
	  version 2.05.	 If less than the entire data is read or written,
	  the next read/write continues where the previous one ended; this
	  call and AX=4402h both reset the location at which the next
	  operation starts to zero
	v2.1+ uses a new configuration method, but allows the installation
	  of IPCUST.SYS for backward compatibility with other software which
	  must read the PC/TCP configuration
SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4402h"IPCUST"

Top
214403 - INT 21 - Compaq AG1024.SYS - CPQ_MGES - IOCTL OUTPUT
INT 21 - Compaq AG1024.SYS - CPQ_MGES - IOCTL OUTPUT
	AX = 4403h
	BX = file handle referencing device "CPQ_MGES"
	DS:DX -> request packet (see #01527)
	CX ignored
Return: CF clear if successful
	    AX destroyed
	    data buffer filled (if applicable)
	    first word of request packet set to number of bytes of data
	      available (amount returned is smaller of this and requested
	      amount)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
SeeAlso: AX=4403h"RGDI"

Format of Compaq AG1024.SYS request packet:
Offset	Size	Description	(Table 01527)
 00h	WORD	function
		0000h get ??? (26h bytes)
		0001h get ??? (36h bytes)
		0002h set ??? (same as returned by function 0001h)
		0003h get ??? (6 bytes)
		0004h get ???
		0005h get ???
		0006h get ??? (10h bytes)
		0007h set ??? (same as returned by function 0006h)
---functions 00h-03h,06h,07h---
 02h	WORD	size of data buffer
 04h	DWORD	-> buffer for function's data
 ---functions 04h,05h---
 02h	WORD	???
 04h	WORD	size of data buffer
 06h	DWORD	-> buffer to receive data

Top
214403 - INT 21 - Compaq AG1024.SYS - RGDI - IOCTL OUTPUT
INT 21 - Compaq AG1024.SYS - RGDI - IOCTL OUTPUT
	AX = 4403h
	BX = file handle referencing device "$$$$RGDI"
	DS:DX -> request packet (see #01528)
	CX ignored
Return: CF clear if successful
	    AX destroyed
	    data buffer filled (if applicable)
	    first word of request packet set to number of bytes of data
	      available (amount returned is smaller of this and requested
	      amount)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
SeeAlso: AX=4402h"RGDI",AX=4403h"CPQ_MGES"

Format of Compaq AG1024.SYS request packet:
Offset	Size	Description	(Table 01528)
 00h	WORD	function
		0000h get entry points
		0001h get ???
 02h	DWORD	address of buffer for returned data

Top
214403SF01 - INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX OFF
INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX OFF
	AX = 4403h subfn 01h
	BX = handle for device "386MAX$$"
	DS:DX -> BYTE 01h
	CX ignored
Return: DS:DX -> BYTE status (00h = successful)
	CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	this function will fail if any EMS or UMBs are in use
SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=05h

Top
214403SF02 - INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX ON
INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX ON
	AX = 4403h subfn 02h
	BX = handle for device "386MAX$$"
	DS:DX -> BYTE 02h
	CX ignored
Return: DS:DX -> BYTE status (00h = successful)
	CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h

Top
214403SF03 - INT 21 U - Qualitas 386MAX v6.01+ - SET STATE
INT 21 U - Qualitas 386MAX v6.01+ - SET STATE
	AX = 4403h subfn 03h
	BX = handle for device "386MAX$$"
	CX = number of bytes to copy (up to size of state buffer)
	DS:DX -> BYTE 03h followed by state buffer
		  (see #01467 at AX=4402h"386MAX")
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	the first byte of the buffer must be either 01h, 02h, or 03h
	  (specifying the version of the state record) and the buffer must
	  contain CX bytes AFTER the initial byte
SeeAlso: AX=4402h"386MAX"

Top
214403SF05 - INT 21 U - Qualitas 386MAX v7.00+ - LIMIT AUTOMATIC ACTIVATION TO STD EMS CALLS
INT 21 U - Qualitas 386MAX v7.00+ - LIMIT AUTOMATIC ACTIVATION TO STD EMS CALLS
	AX = 4403h subfn 05h
	BX = handle for device "386MAX$$"
	DS:DX -> BYTE 05h
	CX ignored
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Desc:	specifies that 386MAX will only shift from AUTO to ON mode on standard
	  EMS calls INT 67/AH=40h-5Dh
SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=06h

Top
214403SF06 - INT 21 U - Qualitas 386MAX v7.00+ - ALLOW AUTOMATIC ACTIVATION ON ANY INT 67
INT 21 U - Qualitas 386MAX v7.00+ - ALLOW AUTOMATIC ACTIVATION ON ANY INT 67
	AX = 4403h subfn 06h
	BX = handle for device "386MAX$$"
	DS:DX -> BYTE 06h
	CX ignored
Return: CF clear if successful
	    AX destroyed
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Desc:	specified that 386MAX should shift from AUTO to ON mode on any INT 67
	  call other than INT 67/AH=3Fh
SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h

Top
214403 - INT 21 U - PenDOS PENDEV.SYS - ???
INT 21 U - PenDOS PENDEV.SYS - ???
	AX = 4403h
	BX = file handle for device "$$PENDOS" or "$$PD_REG"
	CX = size of buffer
	DS:DX -> buffer containing ???
Return: CF clear if successful
	    buffer filled
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: A limited version of PenDOS by Communication Intelligence Corporation,
	  which provides pen capability to keyboard-based programs, is bundled
	  with IBM DOS 6.1
Note:	this call sets the WORD at offset 1Ah into the device driver request
	  header used to call the driver to 0000h.
SeeAlso: AX=4402h"PENDEV.SYS"

Top
214403 - INT 21 - DR DOS $IDLE$ - IOCTL - DYNAMIC IDLE DETECTION CONTROL
INT 21 - DR DOS $IDLE$ - IOCTL - DYNAMIC IDLE DETECTION CONTROL
	AX = 4403h
	BX = file handle referencing character device $IDLE$
	CX = number of bytes to write (0004h)
	DS:DX -> $IDLE$ IOCTL structure (see #04113)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	When the DR DOS IBMBIO.COM detects the presence of the $IDLE$ device
	  during startup, it will retrieve the address of the idle state
	  data area via INT 21/AX=4458h and pass it along to the $IDLE$ device
	  driver by calling this function.

Format of DR DOS $IDLE$ IOCTL structure:
Offset	Size	Description	(Table 04113)
 00h	DWORD	-> idle state data area (see Table !!! at INT 21/AX=4458h)

Top
214404 - INT 21 - DOS 2+ - IOCTL - READ FROM BLOCK DEVICE CONTROL CHANNEL
INT 21 - DOS 2+ - IOCTL - READ FROM BLOCK DEVICE CONTROL CHANNEL
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc.)
	CX = number of bytes to read
	DS:DX -> buffer
Return: CF clear if successful
	    AX = number of bytes actually read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	format of data is driver-specific
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4402h"DOS 2+",AX=4405h"DOS",INT 2F/AX=122Bh

Top
214404 - INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER
INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc.)
	CX = 0004h
	DS:DX -> DWORD buffer to receive device driver address
Return: buffer filled with pointer into Stacker device driver (see #02550):
	  driver + 19h if Stacker Anywhere controls this drive
	  driver + 1Ah if Stacker controls this drive
	  unchanged else
Notes:	in addition to returning the address of the Stacker device driver,
	  this call also sets the volume number at offset 58h in the device
	  driver (see #02550 at INT 25/AX=CDCDh)
	Stacker Anywhere does not link its built-in device driver into
	  the standard device driver chain, but it can be found via CDS/DPB
	this call can be used as an installation check for all versions of
	  Stacker and Stacker Anywhere to avoid the INT 25 call
SeeAlso: AX=4408h,AX=440Eh,AH=52h,INT 25/AX=CDCDh

Top
214404 - INT 21 - Stacker - GET STACVOL FILE SECTORS
INT 21 - Stacker - GET STACVOL FILE SECTORS
	AX = 4404h
	BL = drive number (0 is current drive)
	CX = byte count (i.e., 200h = 1 sector)
	DS:DX -> buffer (see #01529)
Return: Data Buffer contains the number of sectors requested from the
	  STACVOL physical file for the drive specified.

Format of Stacker buffer:
Offset	Size	Description	(Table 01529)
 00h	WORD	01CDh
 02h	WORD	sector count
 04h	DWORD	number of starting sector
 08h	DWORD	far pointer to Data Buffer

Top
214404 - INT 21 - DUBLDISK.SYS v2.6 - GET INFO
INT 21 - DUBLDISK.SYS v2.6 - GET INFO
	AX = 4404h
	BL = drive number of DoubleDisk drive (00h = default, 01h = A:, etc.)
	CX = number of bytes (000Ah-0014h, call ignored otherwise)
	DS:DX -> data record (see #01530)
Return: CF clear if successful
	    AX = number of bytes read
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: DUBLDISK.SYS is the device driver portion of DoubleDisk, a disk
	  expander by Vertisoft Systems, Inc.
InstallCheck:	for v2.6, scan memory for the signature "FAT 2.6  byte:",
	  which is immediately followed by a data table (see #01531)
BUG:	VOPT (a disk optimizer by Golden Bow Software) assumes that any driver
	  which returns the "correct" number of bytes when the first word of
	  the buffer for the data record contains the signature value 4444h is
	  DoubleDisk; a workaround is for the non-DoubleDisk driver to return
	  no data if the signature is present
SeeAlso: AX=440Dh"DOS 3.2+"
Index:	installation check;DUBLDISK.SYS

Format of DUBLDISK data record:
Offset	Size	Description	(Table 01530)
 00h	WORD	(call) signature 4444h
 02h	BYTE	(call) function
			00h ???
			01h ???
---function 00h---
 02h	BYTE	(ret) ???
 03h	BYTE	(ret) ???
---function 01h---
 02h	WORD	(ret) 4444h
 04h	WORD	allocation unit size???
 06h	WORD	???
 08h	WORD	???
 0Ah	BYTE	???

Format of DUBLDISK signature data table:
Offset	Size	Description	(Table 01531)
 00h  5 BYTEs	???
 05h	BYTE	first drive number
 06h	BYTE	number of drives
 07h	???

Top
214404 - INT 21 - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
INT 21 - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 000Ah (size of DSPACKET structure)
	DS:DX -> DSPACKET structure (see #01532)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h

Format of DoubleSpace DSPACKET structure:
Offset	Size	Description	(Table 01532)
 00h	WORD	signature 444Dh ("DM")
 02h	BYTE	command code
		46h ('F') flush internal caches
		49h ('I') flush and invalidate internal caches
 03h	WORD	result code
		(ret) 4F4Bh ("OK") if successful, else unchanged
 05h  5 BYTEs	padding

Top
214404 - INT 21 - DBLSPACE.BIN v6.2 - IOCTL - GET ??? FOR SPECIFIED DRIVE
INT 21 - DBLSPACE.BIN v6.2 - IOCTL - GET ??? FOR SPECIFIED DRIVE
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = size of DSPACKET structure (ignored in DOS 6.2)
	DS:DX -> DSPACKET structure (see #01533)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h

Format of DoubleSpace DSPACKET structure:
Offset	Size	Description	(Table 01533)
 00h	WORD	signature 444Dh ("DM")
 02h	BYTE	command code
		53h ('S') get ??? for specified drive
 03h	WORD	result code
		(ret) 4F4Bh ("OK") if successful, else unchanged
 05h	DWORD	(ret) pointer to 96-byte ??? data
 09h	DWORD	(ret) pointer to ??? data
 0Dh  3 BYTEs	reserved

Top
214404 - INT 21 U - DoubleTools v1.0 - GET ???
INT 21 U - DoubleTools v1.0 - GET ???
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 0006h
	DS:DX -> DoubleTools structure (see #01534)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	the Transporter device driver has the signature 55h 61h 50h 74h
	  ("DaPt") twelve bytes after it beginning

Format of DoubleTools structure:
Offset	Size	Description	(Table 01534)
 00h	WORD	(call) signature 55h AAh
		(ret) signature 78h 70h ("xp")
 02h	WORD	(call) signature 52h 16h
		(ret) ???
 04h	WORD	(ret) segment of driver's DS (same as its PSP)

Top
214404 - INT 21 U - xDISK v3.31 - CONFIGURE
INT 21 U - xDISK v3.31 - CONFIGURE
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 0047h (length of version string)
	DS:DX -> 79-byte buffer for version string and ???
	DS:0081h = commandline containing new switches for driver
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
SeeAlso: AX=4405h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"

Top
214404 - INT 21 - COMBI-disk v1.13 - GET DATA RECORD
INT 21 - COMBI-disk v1.13 - GET DATA RECORD
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 0032h (length of data packet)
	DS:DX -> buffer for data packet (see #01535)
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: COMBI-disk is a shareware combination cache and RAMdisk sharing a
	  single pool of memory by Vadim V. Vlasov
InstallCheck:	scan the valid drives for one which returns a correctly-sized
	  data packet with the proper signature in the first field
SeeAlso: AX=4405h"COMBI"
Index:	installation check;COMBI-disk

Format of COMBI-disk data packet:
Offset	Size	Description	(Table 01535)
 00h  6 BYTEs	ASCIZ signature "COMBI"
 06h	WORD	version (high byte = major, low = decimal minor version)
 08h	BYTE	current options
 09h	BYTE	sectors per allocation block
 0Ah	WORD	maximum buffer in KB
 0Ch	WORD	current buffer in KB (less than max if XMS memory being lent)
 0Eh	WORD	total number of allocation blocks
 10h	WORD	current number of allocation blocks
 12h	WORD	number of blocks being used by RAM disk
 14h	WORD	number of blocks being used by cache or unused
 16h	WORD	number of dirty cache blocks
 18h	WORD	number of blocks which could not be written out due to errors
 1Ah	WORD	total number of read requests
 1Ch	WORD	total number of sectors read
 1Eh	WORD	number of BIOS read requests (cache misses)
 20h	WORD	number of sectors read via BIOS (cache misses)
 22h	WORD	total number of write requests
 24h	WORD	total number of sectors written
 26h	WORD	number of BIOS write requests
 28h	WORD	number of sectors written via BIOS
 2Ah	WORD	number of RAM disk read requests
 2Ch	WORD	number of sectors read from RAM disk
 2Eh	WORD	number of RAM disk write requests
 30h	WORD	number of sectors written to RAM disk

Top
214404 - INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
	AX = 4404h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 001Ah (length of data packet)
	DS:DX -> buffer for data packet (see #01536)
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
	  Peter C. Gutmann
SeeAlso: AX=4405h"SFS"

Format of SFS data packet:
Offset	Size	Description	(Table 01536)
 00h  4 BYTEs	signature string "SFS1"
 04h	WORD	SFS unit number (0-based)
 06h	WORD	drive on which the SFS volume is mounted
 08h	DWORD	sector offset of logical volume from start of physical volume
		0 if logical volume = physical volume
 0Ch	WORD	flag: 00h = no disk mounted, 01h = disk mounted
 0Eh	WORD	flag: 00h read/write, 01h read-only
 10h	WORD	quick-unmount hotkey
		(high byte = shift state, low = scan code) (see #00006)
 12h	WORD	auto-unmount time in minutes, or 0000h if already expired, or
		FFFFh if not set
 14h	WORD	time in minutes remaining before auto-unmount
 16h	WORD	internal driver check code
		0000h no error
		0001h driver consistency check failed
		0002h unit consistency check failed
 18h	WORD	disk access mode
		0000h BIOS
		0001h IDE direct access
		0002h SCSI direct access

Top
214405 - INT 21 - DOS 2+ - IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL
INT 21 - DOS 2+ - IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = number of bytes to write
	DS:DX -> data to write
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	format of data is driver-specific
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4403h"DOS",AX=4404h"DOS",INT 2F/AX=122Bh

Top
214405 - INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
	AX = 4405h
	BX = drive number (00h = default, 01h = A:, etc)
	CX = number of bytes to write
	DS:DX -> SCSIDISK control block (see also #01525 at AX=4403h"ST-01")
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4403h"ST-01"

Top
214405 - INT 21 U - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
INT 21 U - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = 000Ah (size of DSPACKET structure)
	DS:DX -> DSPACKET structure (see #01537)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	this call is identical to the documented AX=4404h
SeeAlso: AX=4404h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h

Format of DoubleSpace DSPACKET structure:
Offset	Size	Description	(Table 01537)
 00h	WORD	signature 444Dh ("DM")
 02h	BYTE	command code
		46h ('F') flush internal caches
		49h ('I') flush and invalidate internal caches
 03h	WORD	result code
		(ret) 4F4Bh ("OK") if successful, else unchanged
 05h  5 BYTEs	padding

Top
214405 - INT 21 U - xDISK v3.31 - ???
INT 21 U - xDISK v3.31 - ???
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = number of bytes to write
	DS:DX -> buffer containing version string
	???
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
SeeAlso: AX=4404h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"

Top
214405 - INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc) for RAM disk
	CX = number of bytes to write
	DS:DX -> buffer containing command packet (see #01539)
Return: CF clear if successful
	    AX = number of bytes actually transferred
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
SeeAlso: AX=4404h"COMBI"

(Table 01538)
Values for COMBI-disk command code:
 80h	flush cache
 81h	change options byte
 82h	shrink memory
 83h	expand memory
 84h	get dirty block information
 85h	reset write errors
 86h	reset counters

Format of COMBI-disk command packet:
Offset	Size	Description	(Table 01539)
 00h	WORD	version
 02h	BYTE	command code (see #01538)
---command code 80h---
 no additional fields
---command code 81h---
 03h	BYTE	new options byte (see #01540)
---command code 82h---
 03h	WORD	number of KB to release
---command code 83h---
 03h	WORD	number of KB to expand
---command code 84h---
 03h	DWORD	-> buffer for block info (see #01541)
---command code 85h---
 03h	DWORD	block ID
---command code 86h---
 03h	BYTE	which counters to reset
		bit 0: hard disk read counts
		bit 1: hard disk write counts
		bit 2: RAM disk read/write counts
Note:	multiple commands may be placed in a single packet by stringing
	  together as many command/argument pairs as desired

Bitfields for COMBI-disk options byte:
Bit(s)	Description	(Table 01540)
 0	cache off
 1	cache frozen
 2	write caching enabled
 3	delayed writing disabled
 5	fix memory allocation (no XMS lending)
 6	no 'sector not found' error

Format of COMBI-disk block info:
Offset	Size	Description	(Table 01541)
 00h	DWORD	block ID
 04h	BYTE	bitmask of valid sectors in block
 05h	BYTE	bitmask of dirty sectors in block
 06h	BYTE	last error returned by BIOS
 07h	BYTE	number of errors

Top
214405 - INT 21 - SFS v1.00 - DRIVER CONTROL
INT 21 - SFS v1.00 - DRIVER CONTROL
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc)
	CX = number of bytes to write
	DS:DX -> data to write (see #01543)
Return: CF clear if successful
	    AX = number of bytes actually written
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
	  Peter C. Gutmann
SeeAlso: AX=4404h"SFS"

(Table 01542)
Values for SFS control function:
 00h	"PACKET_SET_DISKINFO"	 set disk parameters
 01h	"PACKET_SET_KEYINFO"	 set keying information
 02h	"PACKET_SET_READONLY"	 select read/write or read-only
 03h	"PACKET_SET_DRIVENO"	 set drive number to mount
 04h	"PACKET_SET_MOUNTSTATUS" set mount status
 05h	"PACKET_SET_UNMOUNT"	 set/clear quick-unmount hotkey
 06h	"PACKET_SET_TIMEOUT"	 set/clear auto-unmount timeout

Format of SFS control data packet:
Offset	Size	Description	(Table 01543)
 00h	WORD	signature 4330h ('C0')
 02h	WORD	function (see #01542)
---function 00h---
 04h	WORD	sector size in bytes
 06h	BYTE	sectors per cluster
 07h	WORD	number of boot sectors
 09h	BYTE	number of copies of FAT
 0Ah	WORD	size of root directory in entries
 0Ch	WORD	number of sectors on disk, 16-bit
 0Eh	BYTE	media descriptor byte
 0Fh	WORD	sectors per FAT
 11h	WORD	sectors per track
 13h	WORD	number of heads
 15h	DWORD	number of hidden sectors
 19h	DWORD	number of sectors on disk, 32-bit
---function 01h---
 04h 20 BYTEs	master IV for encrypted disk
 18h 64 BYTEs	NDC/SHS keying information
---function 02h---
 04h	WORD	read-only state: 00h read-only, 01h read/write
---function 03h---
 04h	WORD	drive number (see #01544)
 06h	DWORD	sector offset of logical volume from start of physical volume
		0 if logical volume = physical volume
---function 04h---
 04h	WORD	mount status (00h unmounted, 01h mounted)
---function 05h---
 04h	WORD	hotkey (high byte = shift state, low byte = scan code or 00h)
		(see #00006)
		0000h to disable hotkey
---function 06h---
 04h	WORD	timeout in minutes before automatic unmount
		0000h to disable auto-unmount
Notes:	the data for function 00h corresponds to a DOS BPB (see AH=53h)
	functions 00h, 01h, and 03h automatically unmount the encrypted drive
	unmounting a drive with function 04h also destroys the encryption
	  information in the driver and forces all dirty buffers to be flushed

Bitfields for SFS drive number:
Bit(s)	Description	(Table 01544)
 15-12	drive access mode
	0000 BIOS access
	0001 direct IDE access
	0010 direct SCSI access
---if BIOS access---
 11-8	unused (0)
 7-0	BIOS drive number
---if IDE access---
 11-8	unused (0)
 7-0	IDE drive number
---if SCSI access---
 11-8	SCSI host number
 7-4	SCSI target ID
 3-0	SCSI logical unit number

Top
214405 - INT 21 U - SUPERSTOR - IOCTL - INSTALL CHECK
INT 21 U - SUPERSTOR - IOCTL - INSTALL CHECK
	AX = 4405h
	BL = drive number (00h = default, 01h = A:, etc)
	(BH = 0???)
	CX = 000Ch (size of SuperStor packet structure)
	DS:DX -> SuperStor packet structure (see #04114)
Return: CF clear if IOCTL successful -- check SuperStor packet for actual
	      status
	    AX = number of bytes actually transferred???
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Note:	This function is called with CX = 0008h for command 06h by NWCACHE
	  although the Request Packet can be larger.  WINSWAP.SYS calls it
	  with 000Ch - also for command 06h.

Format of SuperStor packet:
Offset	Size	Description	(Table 04114)
 00h	WORD	(call) product signature AA55h
		(ret) result code, 0000h if successful
 02h	BYTE	(call) SuperStor product ID (01h)
 03h	BYTE	(call) SuperStor command parameter:
		06h = get compressed drive structure / drive parameters
		07h = return the compressed length of a file
		08h = return real drive ID for swapped drive
		09h = validate the contents of the cluster
		0Bh = checks whether deleted cluster is free
		0Ch = reallocate previously deleted cluster
		0Dh = read absolute sector from the drive
		0Eh = write absolute sector to the drive
		0Fh = instruct the driver to rebuild tables
		10h = flush any cached Replacement Block Table (RBT) sectors
		      to the drive
---command 06h---
 04h	DWORD	(ret) pointer to SuperStor CVF's compressed unit structure
		      (see #04115)
 08h	DWORD	(ret) pointer to internal status structure
---command 07h---
 04h	DWORD	(ret) size of file in bytes
 08h	WORD	(ret) first cluster number
---command 08h---
 04h	BYTE	(ret) swapped drive (0-based)
---commands 09h,0Bh,0Ch---
 04h	WORD	(call) cluster
---commands 0Dh,0Eh---
 04h	DWORD	(call) first logical sector to transfer
 08h	WORD	(call) number of logical sectors to transfer
 0Ah	DWORD	(call) pointer to buffer
---command 0Fh---
 04h	WORD	(call) temporary buffer area
---command 10h---
 no additional parameters

Format of SuperStor CVF compressed unit structure:
Offset	Size	Description	(Table 04115)
 00h 31 BYTEs	BIOS parameter block for compressed drive (see #01663)
 1Fh  5 BYTEs	reserved for future expansion of the BPB
 24h 33 BYTEs   DOS 4-6 style drive parameter block for compressed drive
		  (see #01395)
 45h  2 BYTEs	reserved for future expansion of the DPB
 47h	WORD	first sector of relocation table (RBT)
 49h	WORD	first sector of file allocation table
 4Bh	WORD	first sector of the data area
 4Dh	BYTE	sec2byteshift
 4Eh  2 BYTEs	???
		Note:	Reportedly these two bytes did not exist in ADDSTOR's
			  specification, so the whole structure would have
			  been documented differently.
 50h	WORD	sectors per cluster
 52h	BYTE	sector shift
 53h	WORD	compression ratio
 55h	DWORD	number of physical sectors in the host file
 59h	WORD	OS version
 5Bh	BYTE	SuperStor level
 5Ch	BYTE	unknown???
 5Dh	BYTE	flags
		bits 7-1: ???
		bit 0: drive is mounted
 5Eh	BYTE	unknown???
 5Fh	DWORD	pointer to CVF's underlaying host DCB
		this should be the physical DPB for this unit
		    ->  +00h BYTE host unit DOS unit number
		        +01h BYTE CVF's driver host subunit number
Note:	As this SuperStor compressed unit structure's structure is located
	  within the segment the SuperStor driver has occupied, the segment
	  value of its address can be used as an installation check, since it
	  contains the signature "ADDSTOR" at offset 20h in the SuperStor
	  driver.  This is used by Novell DOS 7 WINSWAP.SYS to check for the
	  presence of SuperStor.
SeeAlso: #04114
Index:	installation check;SuperStor

Top
214406 - INT 21 - DOS 2+ - IOCTL - GET INPUT STATUS
INT 21 - DOS 2+ - IOCTL - GET INPUT STATUS
	AX = 4406h
	BX = file handle
Return: CF clear if successful
	    AL = input status
		00h not ready (device) or at EOF (file)
		FFh ready
	    AH may be destroyed (refer to note)
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	files may not register as being at EOF if positioned there by AH=42h
	under DOS 5.0, on a successful return, AH contains either the next
	  character which will be read or 1Ah if at EOF; under a Windows95
	  DOS box, AH seems to be either unchanged or 00h
	this function was not supported by Digital Research's DOS Plus
BUG:	the CLOCK$ device under DR DOS 3.41 always indicates 'Ready'; this was
	  corrected in v5.0
SeeAlso: AX=4407h,INT 2F/AX=122Bh

Top
214407 - INT 21 - DOS 2+ - IOCTL - GET OUTPUT STATUS
INT 21 - DOS 2+ - IOCTL - GET OUTPUT STATUS
	AX = 4407h
	BX = file handle
Return: CF clear if successful
	    AL = input status
		00h not ready
		FFh ready
	CF set on error
	    AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes:	for DOS 2+, files are always ready for output, even if the disk is
	  full or no media is in the drive
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4406h,INT 2F/AX=122Bh

Top
214408 - INT 21 - DOS 3.0+ - IOCTL - CHECK IF BLOCK DEVICE REMOVABLE
INT 21 - DOS 3.0+ - IOCTL - CHECK IF BLOCK DEVICE REMOVABLE
	AX = 4408h
	BL = drive number (00h = default, 01h = A:, etc)
Return: CF clear if successful
	    AX = media type (0000h removable, 0001h fixed)
	CF set on error
	    AX = error code (01h,0Fh) (see #01680 at AH=59h/BX=0000h)
Notes:	in addition to the normal operation, if Stacker is installed, this
	  call also sets the volume number at offset 58h in the Stacker
	  device driver (except under DR DOS 3.41-5.0, which do not pass
	  through this call to the driver; use AX=440Eh instead)
	  (see AX=4404h"Stacker",AX=440Eh,INT 25/AX=CDCDh)
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4400h,AX=4404h"Stacker",AX=4409h,INT 2F/AX=122Bh

Top
214409 - INT 21 - DOS 3.1+ - IOCTL - CHECK IF BLOCK DEVICE REMOTE
INT 21 - DOS 3.1+ - IOCTL - CHECK IF BLOCK DEVICE REMOTE
	AX = 4409h
	BL = drive number (00h = default, 01h = A:, etc)
Return: CF clear if successful
	    DX = device attribute word
		bit 15: drive is SUBSTituted
		bit 13: (DR DOS 3.41/5.0 local drives only) always set
			media ID needed
		bit 12: drive is remote
		bit  9: direct I/O not allowed
	CF set on error
	    AX = error code (01h,0Fh,15h) (see #01680 at AH=59h/BX=0000h)
Notes:	on local drives, DX bits not listed above are the attribute word from
	  the device driver header (see #01646 at AH=52h); for remote drives,
	  the other bits appear to be undefined for MS-DOS versions prior to
	  5.0 (they are all cleared in DOS 5+)
	checking whether DX=0800h on return appears to be a fairly reliable
	  method for detecting Microsoft's RAMDRIVE, though not for other
	  ramdisks (there appears to be no simple yet foolproof method for
	  detecting ramdisks, although the presence of only a single copy of
	  the FAT and only a single head on non-removable devices is a fairly
	  good indicator); for Windows95, RAMDRIVE returns DX=4800h
	for non-existent remote drives, this function sometimes returns
	  AX=0015h (drive not ready) instead of AX=000Fh (invalid drive) on
	  the first call; a subsequent call will return the correct error
	  code
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4400h,AX=4408h,AX=440Ah,INT 2F/AX=122Bh

Top
21440A - INT 21 - DOS 3.1+ - IOCTL - CHECK IF HANDLE IS REMOTE
INT 21 - DOS 3.1+ - IOCTL - CHECK IF HANDLE IS REMOTE
	AX = 440Ah
	BX = handle
Return: CF clear if successful
	    DX = attribute word (as stored in SFT)
		bit 15: set if remote
		bit 14: date/time not set on close
	CF set on error
	    AX = error code (01h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	if file is remote, Novell Advanced NetWare 2.0 returns the number of
	  the file server on which the handle is located in CX
	DR DOS 3.41 and 5.0 clear all bits of DX except bit 15; Novell DOS 7
	  fully supports this function
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AX=4400h,AX=4409h,AH=52h,INT 2F/AX=122Bh

Top
21440B - INT 21 - DOS 3.1+ - IOCTL - SET SHARING RETRY COUNT
INT 21 - DOS 3.1+ - IOCTL - SET SHARING RETRY COUNT
	AX = 440Bh
	CX = pause between retries (default 1)
	DX = number of retries (default 3)
Return: CF clear if successful
	CF set on error
	    AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
Notes:	delay is dependent on processor speed (value in CX specifies number of
	  64K-iteration empty loops to execute)
	if DX=0000h on entry, the retry count is left unchanged
	this function was not supported by Digital Research's DOS Plus
SeeAlso: AH=52h,INT 2F/AX=1224h,INT 2F/AX=122Bh

Top
21440C - INT 21 - DOS 3.2+ - IOCTL - GENERIC CHARACTER DEVICE REQUEST
INT 21 - DOS 3.2+ - IOCTL - GENERIC CHARACTER DEVICE REQUEST
	AX = 440Ch
	BX = device handle
	CH = category code (see #01545)
	CL = function number (see #01546)
	DS:DX -> parameter block (see #01547,#01548,#01549,#01550,#01551,#01552)
	SI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
	DI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
Return: CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    DS:DX -> iteration count if CL=65h
	    SI = returned value (European MS-DOS 4.0, OS/2 comp box)
	    DI = returned value (European MS-DOS 4.0, OS/2 comp box)
Note:	DR DOS 3.41 and 5.0 return error code 16h on CL=45h,65h if the device
	  does not support a retry counter
SeeAlso: AX=440Dh"DOS 3.2+",INT 2F/AX=0802h,INT 2F/AX=122Bh,INT 2F/AX=14FFh
SeeAlso: INT 2F/AX=1A01h

(Table 01545)
Values for IOCTL category code:
 00h	unknown (DOS 3.3+)
 01h	COMn: (DOS 3.3+)
 02h	reserved for terminal control
 03h	CON (DOS 3.3+)
 04h	reserved for keyboard control
 05h	LPTn:
 07h	mouse control (European MS-DOS 4.0)
 08h	reserved for disk control -- same as for block devices
	(see INT 21/AX=440Dh)
 9Eh	Media Access Control driver (STARLITE)
 00h-7Fh reserved for Microsoft
 80h-FFh reserved for OEM/user-defined
SeeAlso: #01558

(Table 01546)
Values for generic character IOCTL function:
 00h	MAC driver Bind (STARLITE) (see #01547)
 40h	DOS 3??? only: was reserved for set screen mode (see #04116)
 45h	set iteration (retry) count (see #01548)
 4Ah	select code page (see #01549)
 4Ch	start code-page preparation (see #01550)
 4Dh	end code-page preparation (see #01551)
 5Fh	set display information (DOS 4.0+) (see #01552)
 60h	DOS 3??? only: was reserved for get screen mode (see #04116)
 65h	get iteration (retry) count
 6Ah	query selected code page (see #01549)
 6Bh	query codepage prepare list (DOS 4.0+) (see #01553)
 7Fh	get display information (DOS 4.0+) (see #01552)
Note:	bit assignments for function code:
	    bit 7: set to ignore if unsupported, clear to return error
	    bit 6: set if passed to driver, clear if intercepted by DOS
	    bit 5: set if queries data from device, clear if sends command
		(by convention, if a function both queries and sends data,
		  bit 5 should be clear)
	    bits 4-0: subfunction

Format of parameter block for function 00h:
Offset	Size	Description	(Table 01547)
 00h  8 BYTEs	ASCIZ signature "STARMAC"
 08h	WORD	version
 0Ah	WORD	flags
		bit 0: media requires connect or listen request before use
		bit 1: network is a LAN (broadcast/multicast supported)
		bit 2: point-to-point network
 0Ch	WORD	handle for use with MAC driver's private interface (filled in
		by MAC driver)
 0Eh	WORD	context
 10h	WORD	approximate speed in KB/sec (filled in by MAC driver)
 12h	WORD	approximate cost in cents per hour (filled in by MAC driver)
 14h	WORD	maximum packet size in bytes (filled in by MAC driver)
 16h	WORD	addressing format (filled in by MAC driver)
		0000h general addressing
		0001h Ethernet addressing
		0002h Token Ring addressing
		0003h Token Bus addressing
 18h	DWORD	Send entry point (filled in by MAC driver)
 1Ch	DWORD	RegisterEventHandler entry point (filled in by MAC driver)
 20h	DWORD	SetPacketFilter entry point (filled in by MAC driver)
 24h	DWORD	UnBind entry point (filled in by MAC driver)

Format of parameter block for DOS 3??? screen mode functions 40h and 60h:
Offset	Size	Description	(Table 04116)
 00h	WORD	length of folowing data (0009h)
 02h	BYTE	mode type
 03h	WORD	number of colors
 05h	WORD	width
 07h	WORD	height
Note:	these functions appear never to have been released to the public
SeeAlso: #01546

Format of parameter block for function 45h:
Offset	Size	Description	(Table 01548)
 00h	WORD	number of times output is attempted before driver assumes
		  device is busy

Format of parameter block for functions 4Ah and 6Ah:
Offset	Size	Description	(Table 01549)
 00h	WORD	length of data
 02h	WORD	code page ID (see #01757 at INT 21/AX=6602h)
 04h 2N BYTEs	DCBS (double byte character set) lead byte range
		  start/end for each of N ranges (DOS 4.0)
	WORD	0000h  end of data (DOS 4.0)

Format of parameter block for function 4Ch:
Offset	Size	Description	(Table 01550)
 00h	WORD	flags
		DISPLAY.SYS = 0000h
		PRINTER.SYS bit 0 clear to prepare downloaded font, set to
			prepare cartridge selection
 02h	WORD	length of remainder of parameter block
 04h	WORD	number of code pages following
 06h  N WORDs	code page 1,...,N

Format of parameter block for function 4Dh:
Offset	Size	Description	(Table 01551)
 00h	WORD	length of data
 02h	WORD	code page ID (see #01757 at INT 21/AX=6602h)

Format of parameter block for functions 5Fh and 7Fh:
Offset	Size	Description	(Table 01552)
 00h	BYTE	level (0 for DOS 4.x-6.0)
 01h	BYTE	reserved (0)
 02h	WORD	length of following data (14)
 04h	WORD	control flags
		bit 0 set for blink, clear for intensity
		bits 1-15 reserved
 06h	BYTE	mode type (1=text, 2=graphics)
 07h	BYTE	reserved (0)
 08h	WORD	colors
		0000h = monochrome
		else N bits per pixel
 0Ah	WORD	pixel columns
 0Ch	WORD	pixel rows
 0Eh	WORD	character columns
 10h	WORD	character rows

Format of parameter block for function 6Bh:
Offset	Size	Description	(Table 01553)
 00h	WORD	length of following data
 02h	WORD	number of hardware code pages
 04h  N WORDs	hardware code pages 1,...,N
	WORD	number of prepared code pages
      N WORDs	prepared code pages 1,...,N

Top
21440C - INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
	AX = 440Ch
	BX = device handle
	CH = category code
	    07h tape (ASPITAPE.SYS)
	CL = function
	    01h "mtop" - perform tape operation
	    02h "mtget" - get tape status
	    03h ignore end-of-tape errors
	    04h enable end-of-tape errors
	DS:DX -> parameter block (see #01554,#01555)
Return: CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    DS:DX -> data block
Notes:	This device driver is a simple DOS interface to the Adaptec Advanced
	  SCSI Programming Interface (ASPI).  It provides the following device
	  names as access to the SCSI tape, 'RMTx' (rewind on close) and
	  'NRMTx' (NO rewind on close) where x can go from 0 to 3.  There may
	  also be the following names 'MTx' and 'NMTx' which default to 1024
	  byte blocks.	The names may also have a '$' appended to try and make
	  them unique from file names of 'RMT0' etc.
	once opend these devices must be put into RAW mode
SeeAlso: AX=4402h"ASPI"

Format of ASPITAPE.SYS mtop parameter block:
Offset	Size	Description	(Table 01554)
 00h	WORD	operation code
		00h "MTWEOF" - write an end-of-file record
		01h "MTFSF" - forward space file
		02h "MTBSF" - backward space file
		03h "MTFSR" - forward space record
		04h "MTBSR" - backward space record
		05h "MTREW" - rewind
		06h "MTOFFL" - rewind and unload
		07h "MTNOP" - perform TEST UNIT READY
 02h	DWORD	repetition count

Format of ASPITAPE.SYS mtget parameter block:
Offset	Size	Description	(Table 01555)
 00h	BYTE	ASPI host ID
 01h	BYTE	SCSI target ID
 02h	BYTE	SCSI logical unit number
 03h	BYTE	device parameters
		bit 0: drive must use fixed-block read and write
		bit 7: drive is an ASPI device
 04h	BYTE	current device state (see #01556)
 05h	BYTE	unit number within driver
 06h	WORD	fixed block blocksize
 08h	BYTE	last SCSI status
 09h	BYTE	last SCSI sense key
 0Ah	WORD	last SCSI opcode (packed) (see #01557)
 0Ch	WORD	residual bytes from SCSI opcode

Bitfields for ASPITAPE.SYS current device state:
Bit(s)	Description	(Table 01556)
 0	device currently opened in buffered mode
 1	drive currently opened in nonbuffered mode
 2	rewind drive on last close
 3	drive has been written on
 4	drive has been read from
 5	next read will return 0 bytes
 6	EOM will resemble EOF
 7	drive may be busy rewinding

Bitfields for SCSI opcode:
Bit(s)	Description	(Table 01557)
 0-7	SCSI operation (SCSI packet byte 0)
 8-10	SCSI flags (SCSI packet byte 1)
 11-12	ASPI "Direction Bits" (ASPI SRB byte 3)

Top
21440D - INT 21 - DOS 3.2+ - IOCTL - GENERIC BLOCK DEVICE REQUEST
INT 21 - DOS 3.2+ - IOCTL - GENERIC BLOCK DEVICE REQUEST
	AX = 440Dh
	BL = drive number (00h=default,01h=A:,etc)
	CH = category code (see #01558)
	CL = minor code (function) (see #01559)
	DS:DX -> (DOS) parameter block (see #01560,#01562,#01563,#01564,#01565)
	SI:DI -> (OS/2 comp box) parameter block (see #01566,#01568,#01569,#01572)
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    DS:DX -> data block if CL=60h or CL=61h
Notes:	DOS 4.01 seems to ignore the high byte of the number of directory
	  entries in the BPB for diskettes.
	functions 46h and 66h undocumented in DOS 4.x, documented for DOS 5+
	the DUBLDISK.SYS v2.6 driver only supports minor codes 60h and 67h
	DR DOS 3.41-6.0 only support minor codes 40h-42h and 60h-62h; all
	  other minor codes return error code 16h
	some PCMCIA calls reportedly appear to be dangerous for MS-DOS versions
	  prior to 5.0
	minor code 60h normally produces no I/O except with AutoMount=1 for
	  DBLSPACE/DRVSPACE
SeeAlso: AX=440Ch,AX=440Dh/CX=084Ah,AX=440Dh/CX=0871h,AH=69h,INT 2F/AX=0802h
SeeAlso: INT 2F/AX=122Bh

(Table 01558)
Values for block device IOCTL category code:
 08h	disk drive
 48h	FAT32 disk drive
 00h-7Fh reserved for Microsoft
 80h-FFh reserved for OEM/user-defined

(Table 01559)
Values for generic block IOCTL minor code:
 00h	(OS/2)	\ used to lock/unlock a drive
 01h	(OS/2)	/
 40h	set device parameters (see #01560)
 41h	write logical device track (see #01562)
 42h	format and verify logical device track (see #01563)
 46h	(DOS 4.0+) set volume serial number (see #01565,AH=69h)
 47h	(DOS 4.0+) set access flag (see #01566)
 48h	(Enh. Disk Drive Spec) set media lock state (see #01567,INT 13/AH=45h)
 49h	(Enh. Disk Drive Spec) eject media in drive (see INT 13/AH=49h)
	no parameter block required
 4Ah	(MS-DOS 7.0) lock logical volume (see AX=440Dh/CX=084Ah)
 4Bh	(MS-DOS 7.0) lock physical volume (see AX=440Dh/CX=084Bh)
 50h	(PCMCIA) attribute memory write
 51h	(PCMCIA) common memory write
 52h	(PCMCIA) force media change (DOS 5+ ???) (see #01568)
 53h	(PCMCIA) erase drive
 54h	(PCMCIA) erase media
 56h	(PCMCIA) set erase status callback
 57h	(PCMCIA) append Card Information Structure (CIS) tuple
 58h	(PCMCIA) erase CIS tuples
 60h	get device parameters (see #01560)
 61h	read logical device track (see #01562)
 62h	verify logical device track (see #01564)
 66h	(DOS 4.0+) get volume serial number (see #01565,AH=69h)
 67h	(DOS 4.0+) get access flag (see #01566)
 68h	(DOS 5.0+) sense media type (see #01569)
 6Ah	(MS-DOS 7.0) unlock logical volume (see AX=440Dh/CX=086Ah)
	no parameter block required
 6Bh	(MS-DOS 7.0) unlock physical volume (see AX=440Dh/CX=086Bh)
	no parameter block required
 6Ch	(MS-DOS 7.0) get lock flag (see AX=440Dh/CX=086Ch)
	no parameter block required
 6Dh	(MS-DOS 7.0) enumerate open files (see AX=440Dh/CX=086Dh)
 6Eh	(MS-DOS 7.0) find swap file (see AX=440Dh/CX=086Eh)
 6Fh	(MS-DOS 7.0) get drive map information (see #01570)
 70h	(PCMCIA) attribute memory read
 70h	(MS-DOS 7.0) get current lock state (see AX=440Dh/CX=0870h)
	no parameter block required
 71h	(MS-DOS 7.0) get first cluster (see AX=440Dh/CX=0871h)
 73h	(PCMCIA) get memory media information (DOS 5+ ???) (see #01572)
 76h	(PCMCIA) get erase status callback
 77h	(PCMCIA) get first Card Information Structure (CIS) tuple
 78h	(PCMCIA) get next CIS tuple
 7Fh	(PCMCIA) get ??? information (see #01573,#01574)

Format of parameter block for functions 40h, 60h:
Offset	Size	Description	(Table 01560)
 00h	BYTE	special functions
		bit 0 set if function to use current BPB, clear if Device
			  BIOS Parameter Block field contains new default BPB
		bit 1 set if function to use track layout fields only
			must be clear if CL=60h
		bit 2 set if all sectors in track same size (should be set)
		bits 3-7 reserved (MS-DOS, Novell DOS 7)
		bit 5: skip head settling time (WinDOS 2.11)
		bit 6: format access flag (WinDOS 2.11)
 01h	BYTE	device type (see #01561)
 02h	WORD	device attributes
		bit 0 set if nonremovable medium
		bit 1 set if door lock ("changeline") supported
		bits 2-15 reserved
 04h	WORD	number of cylinders
 06h	BYTE	media type
		for 1.2M drive
		    00h 1.2M disk (default)
		    01h 320K/360K disk
		F8h for DUBLDISK.SYS v2.6 expanded drives
		always 00h for other drive types
 07h 31 BYTEs	device BPB (see #01663 at AH=53h), bytes after BPB offset 1Eh
		  omitted; final six bytes only transferred on function 40h
		  with BYTE 00h bit 0 set for MS-DOS 5.0
---function 40h only---
 26h	WORD	number of sectors per track (start of track layout field)
		(maximum 63)
 28h  N word pairs: number,size of each sector in track
---category code 48h (FAT32), function 40h---
 07h 53 BYTEs	extended BPB (see #01664)
 3Ch 32 BYTEs	reserved
 5Ch	WORD	number of track table entries
 5Eh 2N WORDs	sector table (word pairs: number/size of each sector in track)
---category code 48h (FAT32), function 60h---
 07h 53 BYTEs	extended BPB (see #01664)
 3Ch 32 BYTEs	reserved

(Table 01561)
Values for device type:
 00h	320K/360K 5.25-inch floppy disk
 01h	1.2M 5.25-inch floppy disk
 02h	720K floppy disk
 03h	single-density 8-inch disk
 04h	double-density 8-inch disk
 05h	fixed disk
 06h	tape drive
 07h	(DOS 3.3+) other type of block device, normally 1.44M floppy
 08h	read/write optical disk
 09h	(DOS 5+) 2.88M 3.5-inch floppy
 FFh	(some DOS 5 betas) 2.88M 3.5-inch floppy

Format of parameter block for functions 41h, 61h:
Offset	Size	Description	(Table 01562)
 00h	BYTE	special functions (reserved, must be zero)
 01h	WORD	number of disk head
 03h	WORD	number of disk cylinder
 05h	WORD	number of first sector to read/write
 07h	WORD	number of sectors
 09h	DWORD	transfer address
Note:	under Windows95, a volume must be locked (see AX=440Dh/CX=084Bh) in
	  order to perform direct accesses such as track reads and writes
	  with this IOCTL function

Format of parameter block for function 42h:
Offset	Size	Description	(Table 01563)
 00h	BYTE	reserved, must be zero (DOS <3.2)
		  bit 0=0: format/verify track
			1: format status call (DOS 3.2+), don't actually format
		  bit 1: format multiple tracks, require additional WORD
			  (hard disks only)
		  bits 2-7 reserved, must be zero
		value on return (DOS 3.3+):
		  00h	specified tracks, sectors/track supported by BIOS
		  01h	function not supported by BIOS
		  02h	specified tracks, sectors/track not allowed for drive
		  03h	no disk in drive
 01h	WORD	number of disk head
 03h	WORD	number of disk cylinder
---BYTE 00h bit 1 set---
 05h	WORD	number of tracks to format

Format of parameter block for function 62h:
Offset	Size	Description	(Table 01564)
 00h	BYTE	reserved, must be zero (DOS <3.2)
		  bit 0=0: verify single track
			1: verify multiple tracks
		  bits 1-7 reserved, must be zero
		value on return (DOS 3.3+):
		  00h	specified tracks, sectors/track supported by BIOS
		  01h	function not supported by BIOS
		  02h	specified tracks, sectors/track not allowed for drive
		  03h	no disk in drive
 01h	WORD	number of disk head
 03h	WORD	number of disk cylinder
 05h	WORD	number of tracks to verify (equivalent to 255 or fewer sectors)

Format of parameter block for functions 46h, 66h:
Offset	Size	Description	(Table 01565)
 00h	WORD	(call) info level (should be 0000h)
 02h	DWORD	disk serial number (binary)
 06h 11 BYTEs	volume label or "NO NAME    "
 11h  8 BYTEs	filesystem type "FAT12	 " or "FAT16   "
		  (generally CL=66h only, but MS-DOS 5.0 will write the
		  given filesystem type to the disk)
Note:	under MS-DOS 7.0 or a Windows95 DOS box, the volume label field can
	  return as 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=69h

Format of parameter block for functions 47h, 67h:
Offset	Size	Description	(Table 01566)
 00h	BYTE	special-function field (must be zero)
 01h	BYTE	disk-access flag, nonzero if access allowed by driver

Format of parameter block for function 48h:
Offset	Size	Description	(Table 01567)
 00h	BYTE	(call) locking operation
		00h lock media in drive
		01h unlock media
		02h get locking status
 01h	BYTE	(ret) drive's lock status (number of pending locks on drive)
Note:	also supported by MS-DOS 7.0+

Format of parameter block for function 52h:
 00h	BYTE	(call) unused???	(Table 01568)
		(ret) 00h if flash/ATA drive but no card inserted
			unchanged otherwise
Notes:	the absense of a flash card should be tested by checking the DOS error
	  code rather than the returned byte
	the parameter byte is cleared to 00h erroneously by the Award
	  PCDISK.EXE v1.02c PCMCIA/ATA driver if no ATA card is inserted
	  (bug corrected in PCDISK.EXE v1.02h and later)
	not supported by the SystemSoft ATADRV.EXE and the Phoenix PCMATA.SYS
	  PCMCIA/ATA drivers

Format of parameter block for function 68h:
Offset	Size	Description	(Table 01569)
 00h	BYTE	01h for default media type, 00h for any other media type
		(see also INT 13/AH=20h"Compaq")
 01h	BYTE	02h for 720K, 07h for 1.44M, 09h for 2.88M

Format of parameter block for function 6Fh:
Offset	Size	Description	(Table 01570)
 00h	BYTE	(call) length of this buffer (in bytes)
 01h	BYTE	(ret) number of bytes in parameter block actually used
 02h	BYTE	(ret) drive flags (see #01571)
 03h	BYTE	(ret) physical drive number
		00h-7Fh floppy
		80h-FEh hard
		FFh no physical drive
 04h	DWORD	(ret) bitmap of logical drives associated with physical drive
		bit 0 = drive A:, etc.
 08h	QWORD	(ret) relative block address of partition start

Bitfields for Get Drive Map Information drive flags:
Bit(s)	Description	(Table 01571)
 0	protected-mode driver for logical drive
 1	protected-mode driver in use for physical drive corresponding to the
	  logical drive
 2	drive available only in protected mode
 3	protected-mode drive supports media ejection
 4	drive issues media insertion and removal notifications
SeeAlso: #01570

Format of parameter block for function 73h:
Offset	Size	Description	(Table 01572)
 00h	BYTE	???
		00h ATA card inserted ???
		80h ATA card not inserted ???
 01h	BYTE	length of parameter block ???
		apparently always 40h
 02h	BYTE	???
		00h ATA card not inserted ???
		0Dh ATA card inserted ???
 03h  2 BYTEs	??? (apparently always 00h)
 05h	BYTE	drive number (0=first) ???
 06h	BYTE	total number of drives ???
 07h	BYTE	???
		00h ATA card not inserted ???
		01h ATA card inserted ???
 08h 17 BYTEs	???
 19h	BYTE	???
		00h ATA card not inserted ???
		01h ATA card inserted ???
 1Ah	BYTE	??? (apparently always 01h)
 1Bh	BYTE	???
		00h ATA card not inserted ???
		01h ATA card inserted ???
 1Ch  2 BYTEs	??? (apparently always 0015h)
 1Eh  2 BYTEs	???
 20h  2 BYTEs	??? (apparently always 0110h)
 22h 15 BYTEs	???
 31h  2 BYTEs	??? (apparently always 7000h)
 33h 11 BYTEs	driver signature
		"AWARD PDISK" for Award PCDISK.EXE PCMCIA/ATA driver
		"MS-BIOS    " for HP 200LX generic ATA driver
 3Eh  2 BYTEs	???
Notes:	parameter structure possibly depends on driver
	this function is not supported by the SystemSoft ATADRV.EXE and the
	  Phoenix PCMATA.SYS PCMCIA/ATA drivers

Format of parameter block for function 7Fh for SystemSoft ATADRV.EXE:
Offset	Size	Description	(Table 01573)
 00h	DWORD	-> unknown location within driver
Note:	function supported by the SystemSoft ATADRV.EXE PCMCIA/ATA driver
	  but not by the Award PCDISK.EXE PCMCIA/ATA driver
SeeAlso: #01574

Format of parameter block for function 7Fh for Phoenix PCMATA.SYS:
Offset	Size	Description	(Table 01574)
 00h  8 BYTEs	???
Note:	this function supported by the Phoenix PCMATA.SYS PCMCIA/ATA driver
	  but not by the Award PCDISK.EXE PCMCIA/ATA driver
SeeAlso: #01573

Top
21440DCX084A - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK LOGICAL VOLUME
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK LOGICAL VOLUME
	AX = 440Dh
	CX = 084Ah / 484Ah
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 4Ah)
	BL = drive number (01h=A:,02h=B:,etc)
	BH = lock level (00h-04h)
	DX = drive permissions (see #01575) for Level 1 lock or second
	    Level 0 lock when formatting
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
Notes:	the logical volume must be locked before direct disk accesses are
	  permitted by Windows95/98
	the commandline LOCK issues a level 4 lock
	Windows98 only permits lock levels 0 and 4
BUG:	Windows98 will return an error (invalid function) if the specified
	  drive number is zero or more than 32, but only allocated 26 bytes
	  for recording locks, so BL=1Bh..20h will trash internal data
	  structures
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Bh,AX=440Dh/CX=086Ah
SeeAlso: AX=440Dh/CX=086Ch

Bitfields for drive permissions:
Bit(s)	Description	(Table 01575)
 0	allow writes
 1	disallow new file mappings
 2	volume locked for formatting

Top
21440DCX084B - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK PHYSICAL VOLUME
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - LOCK PHYSICAL VOLUME
	AX = 440Dh
	CX = 084Bh / 484Bh
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 4Bh)
	BH = logical drive number (00h = default, 01h = A:, etc.)
	BL = lock level (00h-03h)
	DX = drive permissions (see #01575) for Level 1 lock or second
	    Level 0 lock when formatting
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
Desc:	lock all logical volumes on the same physical volume as the indicated
	  drive
Note:	the physical volume must be locked before direct disk writes via
	  INT 13 are permitted by Windows95
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Bh
SeeAlso: AX=440Dh/CX=086Ch

Top
21440DCX086A - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK LOGICAL VOLUME
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK LOGICAL VOLUME
	AX = 440Dh
	CX = 086Ah / 486Ah
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 6Ah)
	BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
Note:	the logical volume must be locked before direct disk accesses via
	  INT 13 are permitted by Windows95
BUG:	Windows98 will return an error (invalid function) if the specified
	  drive number is zero or more than 32, but only allocated 26 bytes
	  for recording locks, so BL=1Bh..20h will trash internal data
	  structures
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Bh

Top
21440DCX086B - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK PHYSICAL VOLUME
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - UNLOCK PHYSICAL VOLUME
	AX = 440Dh
	CX = 086Bh / 486Bh
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 6Bh)
	BH = logical drive number (00h = default, 01h = A:, etc.)
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
Desc:	lock all logical volumes on the same physical volume as the indicated
	  drive
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Bh,AX=440Dh/CX=086Ah

Top
21440DCX086C - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET LOCK FLAG STATE
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET LOCK FLAG STATE
	AX = 440Dh
	CX = 086Ch / 486Ch
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 6Ch)
	BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AX = access flag (see #01576)
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=084Bh
SeeAlso: AX=440Dh/CX=0870h

(Table 01576)
Values for drive access flag:
 0000h	no writes/file mappings since last call
 0001h	write operation has occurred since last call
 0002h	file mapping has occurred since last call
Note:	function 6Ch resets the access flag every time it is called

Top
21440DCX086D - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - ENUMERATE OPEN FILES
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - ENUMERATE OPEN FILES
	AX = 440Dh
	CX = 086Dh / 486Dh
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 6Dh)
	BL = drive number (00h=default,01h=A:,etc)
	DS:DX -> buffer for ASCIZ pathname
	SI = file index (0000h to number of open files-1)
	DI = enumeration type (0000h all files, 0001h unmovable files)
Return: CF set on error
	    AX = error code (01h,02h,12h,etc.) (see #01680 at AH=59h/BX=0000h)
		0012h if file index is out of range
	CF clear if successful
	    AX = file open mode (BX from AX=6C00h or AX=716Ch)
	    CX = file type (see #01577)
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Ch
SeeAlso: AX=440Dh/CX=086Eh,AX=6C00h,AX=716Ch

(Table 01577)
Values for file type:
 0000h	normal file
 0001h	memory-mapped file (unmovable)
 0002h	unmovable file
 0004h	swap file

Top
21440DCX086E - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - FIND SWAP FILE
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - FIND SWAP FILE
	AX = 440Dh
	CX = 086Eh / 486Eh
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 6Eh)
	BL = drive number (00h=default,01h=A:,etc)
	DS:DX -> buffer for ASCIZ pathname
	SI = file index
	DI = enumeration type
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AX = pager type
		0001h no pager
		0002h paging through MS-DOS
		0003h protected-mode pager
	    CX:BX = swap file size in 4K pages
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Dh

Top
21440DCX0870 - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET CURRENT LOCK STATE
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET CURRENT LOCK STATE
	AX = 440Dh
	CX = 0870h / 4870h
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 70h)
	BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AX = current lock level (0-3) or FFFFh if not locked
	    CX = lock permissions if AX<>FFFFh (see #01575)
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Ch

Top
21440DCX0871 - INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET FIRST CLUSTER
INT 21 - MS-DOS 7.0+ - GENERIC IOCTL - GET FIRST CLUSTER
	AX = 440Dh
	CX = 0871h / 4871h
	    (category code 08h for FAT12/16, 48h for FAT32; minor code 71h)
	BX = filename character set (see #01578)
	DS:DX -> ASCIZ pathname for file or directory
Return: CF set on error
	    AX = error code (01h,02h,etc.) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    DX:AX = first cluster number
Note:	this function finds any file or directory regardless of attributes,
	  except that it will not find volume labels
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Ch,#01352

(Table 01578)
Values for character set:
 00h	Windows ANSI
 01h	current OEM character set
 02h	Unicode

Top
21440DCXEDC1 - INT 21 - DR PalmDOS - GENERIC IOCTL - LOGIN SECURITY
INT 21 - DR PalmDOS - GENERIC IOCTL - LOGIN SECURITY
	AX = 440Dh
	CX = EDC1h (category code EDh, minor code C1h)
	BL = boot drive number (01h=A:,02h=B:,etc)
Return: AL = 0 if already logged in
	AL <> 0 if system is still secured (not logged in)
	ES:DI -> ???
Notes:	This function is called by DR PalmDOS IBMBIO.COM after CONFIG.SYS
	  processing has finished and it has launched the LOGIN.SYS utility
	  (if this is not in the root of the boot drive, the undocumented
	  CONFIG.SYS LOGIN directive can be used to change the path and the
	  moment when the login prompt will be displayed).
	If security is active and the user has still not logged in,
	  IBMBIO.COM will display an error message and halt the system.

Top
21440E - INT 21 - DOS 3.2+ - IOCTL - GET LOGICAL DRIVE MAP
INT 21 - DOS 3.2+ - IOCTL - GET LOGICAL DRIVE MAP
	AX = 440Eh
	BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
	    AX = error code (01h,0Fh) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AL = 00h block device has only one logical drive assigned
		 1..26 the last letter used to reference the drive (1=A:,etc)
Notes:	DR DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
	  always returns AL=00h; Windows NT 4.0 also always returns AL=00h
	in addition to the normal operation, if Stacker is installed, this
	  call also sets the volume number at offset 58h in the Stacker
	  device driver (DR DOS 3.41-5.0 only; use AX=4408h otherwise)
	  (see AX=4404h"Stacker",INT 25/AX=CDCDh)
SeeAlso: AX=4408h,AX=440Fh,INT 2F/AX=122Bh

Top
21440F - INT 21 - DOS 3.2+ - IOCTL - SET LOGICAL DRIVE MAP
INT 21 - DOS 3.2+ - IOCTL - SET LOGICAL DRIVE MAP
	AX = 440Fh
	BL = physical drive number (00h=default,01h=A:,etc))
Return: CF set on error
	    AX = error code (01h,0Fh) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    drive now responds to next logical drive number
Notes:	maps logical drives to physical drives, similar to DOS's treatment of
	  a single physical floppy drive as both A: and B:
	DR DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
	  always returns an error on this function
SeeAlso: AX=440Eh,INT 2F/AX=122Bh

Top
214410 - INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (HANDLE)
INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (HANDLE)
	AX = 4410h
	BX = handle for device
	CH = category code (see #01545)
	CL = function code (see #01546)
Return: CF clear if successful
	    AX = 0000h	specified IOCTL function is supported
	CF set on error
	    AL = 01h	IOCTL capability not available
Note:	a program which wishes to use Generic IOCTL calls beyond those in the
	  standard DOS 3.2 set may use this call first to see whether a
	  particular call is supported
SeeAlso: AX=440Ch,AX=440Dh"DOS 3.2+",AX=4411h

Top
214410BXFFFF - INT 21 U - NewSpace - ENABLE DRIVER
INT 21 U - NewSpace - ENABLE DRIVER
	AX = 4410h
	BX = FFFFh
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
	  all files as they are written and decompresses them as they are read
Note:	compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4411h/BX=FFFFh

Top
214411 - INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (DRIVE)
INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (DRIVE)
	AX = 4411h
	BL = drive number
	CH = category code (see #01558)
	CL = function code (see #01559)
Return: CF clear if successful
	    AX = 0000h	specified IOCTL function is supported
	CF set on error
	    AL = 01h	IOCTL capability not available
Note:	a program which wishes to use Generic IOCTL calls beyond those in the
	  standard DOS 3.2 set may use this call first to see whether a
	  particular call is supported
SeeAlso: AX=440Ch,AX=440Dh"DOS 3.2+",AX=4410h

Top
214411BXFFFF - INT 21 U - NewSpace - DISABLE DRIVER
INT 21 U - NewSpace - DISABLE DRIVER
	AX = 4411h
	BX = FFFFh
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
	  all files as they are written and decompresses them as they are read
Note:	compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4410h/BX=FFFFh

Top
214412 - INT 21 O - DR DOS 5.0-6.0 - DETERMINE DOS TYPE
INT 21 O - DR DOS 5.0-6.0 - DETERMINE DOS TYPE
	AX = 4412h
	CF set
Return: CF set if not DR DOS
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if DR DOS
	    DX = AX = version code (see #01580)
Note:	this obsolete call, which is no longer supported in Novell DOS 7, is
	  identical to AX=4452h
SeeAlso: AX=4452h

Top
214412BXFFFF - INT 21 U - NewSpace - INSTALLATION CHECK???
INT 21 U - NewSpace - INSTALLATION CHECK???
	AX = 4412h
	BX = FFFFh
Return: AX = PSP segment of NewRes (resident driver for NewSpace)
	BX:DX -> ???
	CX = ???
SeeAlso: AX=4411h/BX=FFFFh

Top
214413BXFFFF - INT 21 U - NewSpace - GET ???
INT 21 U - NewSpace - GET ???
	AX = 4413h
	BX = FFFFh
Return: AX = code segment of NewRes (resident driver for NewSpace)
	BX = offset of ???
SeeAlso: AX=4412h/BX=FFFFh

Top
214414 - INT 21 OU - DR DOS 5.0-6.0 - SET GLOBAL PASSWORD
INT 21 OU - DR DOS 5.0-6.0 - SET GLOBAL PASSWORD
	AX = 4414h
	DS:DX -> password string (blank-padded to 8 characters)
Desc:	Specify the master password for accessing files.
Note:	this obsolete call, which is no longer supported in Novell DOS 7, is
	  identical to AX=4454h
SeeAlso: AX=4454h

Top
214414BXFFFF - INT 21 U - NewSpace - DEBUGGING DUMP
INT 21 U - NewSpace - DEBUGGING DUMP
	AX = 4414h
	BX = FFFFh
Return: debugging dump written to X:\NEWSPACE.SMP
SeeAlso: AX=4413h/BX=FFFFh,AX=44FFh/BX=FFFFh

Top
214416 - INT 21 OU - DR DOS 5.0-6.0 - HISTORY BUFFER, SHARE, AND HILOAD CONTROL
INT 21 OU - DR DOS 5.0-6.0 - HISTORY BUFFER, SHARE, AND HILOAD CONTROL
	AX = 4416h to 4418h
Note:	these obsolete subfunctions (which are no longer supported in Novell
	  DOS 7) are identical to AX=4456h through 4458h
SeeAlso: AX=4456h,AX=4457h,AX=4458h

Top
214451 - INT 21 - Concurrent DOS v3.2+ - INSTALLATION CHECK
INT 21 - Concurrent DOS v3.2+ - INSTALLATION CHECK
	AX = 4451h
Return: CF set if not Concurrent DOS
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
	    AH = single-user/multiuser nature (see #01581)
		10h single-user
		    AL = operating system version ID (see #01580)
		14h multiuser
		    AL = operating system version ID (see #01579)
Notes:	as of Concurrent DOS/XM 5.0 (possibly earlier), the version is stored
	  in the environment variable VER and the OS type in variable OS
	use this function if you are looking for multiuser capabilities,
	  AX=4452h for single-user
	this function should never return the single-user values; however, an
	  application should be prepared to accept single-user values, i.e. it
	  should check the returned AH and AL separately
	CCI Multiuser DOS 7.22 returns AX=DX=1466h.
	DR DOS 3.31+ error returns with AX=0001h
SeeAlso: AX=4452h,AX=4459h

(Table 01579)
Values for Digital Research operating system version ID:
 32h	Concurrent PC DOS 3.2
 41h	Concurrent DOS 4.1
 50h	Concurrent DOS/XM 5.0 or Concurrent DOS/386 1.1
 60h	Concurrent DOS/XM 6.0 or Concurrent DOS/386 2.0
 62h	Concurrent DOS/XM 6.2 or Concurrent DOS/386 3.0
 66h	DR Multiuser DOS 5.1, CCT Multiuser DOS 7.x
 67h	Concurrent DOS 5.1
SeeAlso: #01581,#04023

Top
214452 - INT 21 - DR DOS 3.41+ - DETERMINE DOS TYPE/GET DR DOS VERSION
INT 21 - DR DOS 3.41+ - DETERMINE DOS TYPE/GET DR DOS VERSION
	AX = 4452h ("DR")
	CF set
Return: CF set if not DR DOS
	    AX = error code (see #01680 at AH=59h/BX=0000h)
	CF clear if DR DOS
	    AX = version code
	    AH = single-user/multiuser nature (see #01581)
		10h single-user
		    AL = operating system version ID (see #01580)
		14h multiuser
		    AL = operating system version ID (see #01579)
	    DX modified (refer to note below)
Notes:	the DR DOS version is stored in the environment variable VER
	use this function if looking for single-user capabilities, AX=4451h
	  if looking for multiuser; this call should never return multiuser
	  values
	in DR DOS 3.41-6.0, DX=AX on return; for Novell DOS 7, DH=AH but DL=00h
	  (reportedly, DH=00h when booting NWDOS7 from installation disks)
	Novell DOS 7 returns error code 0001h if SETVER x.255 is in effect for
	  the calling program, or SETVER /G x.255 is in effect
	although based on DR DOS, CCI Multiuser DOS 7.xx,
	  IMS Multiuser DOS 7.x, and IMS REAL/32 7.50+ do not support this call
	With OpenDOS 7.02 BETA 2 and DR-OpenDOS 7.02+, the install check
	  in most tools has been changed to run with both, AH=10h and AH=14h
	  to support possible future "client side" multiuser releases of
	  DR-DOS which may return 14h instead of 10h. Tools should also strip
	  off the CP/Net bit before checking the kernel version.
	  Often used version checks like >= 1070h are invalid, therefore,
	  hence the AH and AL must be checked seperately.
	In DR DOS 3.31-6.0, and DR PalmDOS, DX=AX on return.
	For Novell DOS 7 - DR DOS 7.03 the DX value returned by this function
	  is the same as the DX value returned by INT 21/AX=3306h, and
	  represents the DOS revision (bits 7-0, currently always DL=00h) and
	  the version flags (bits 15-8, with bit 12 = DOS in HMA, bit 11 = DOS
	  in ROM) of the "patch_version" field in the PCM_HEADER structure in
	  the IBMDOS.COM file. The version flags, however, are updated at
	  runtime to reflect the actual system status, resulting, for example,
	  in DH=10h for DOS in HMA, and DH=0 when booting Novell DOS 7 from
	  installation disks.
	The operating system version ID represents the BDOS (Basic Disk
	  Operating System) kernel version (of the DRBDOS.SYS aka IBMDOS.COM
	  file), and the two nibbles can actually be read as CP/M version
	  and sub-version, that is DR-DOS 7.03 (version code 1073h) is
	  actually CP/M-86 version 7.3.
	Due to lost original patch sources from the backups, Caldera OpenDOS
	  7.01 merely represented Novell DOS 7 Update 10 with minor changes.
	For Caldera DR-OpenDOS 7.02, all the Novell DOS 7 patches up to
	  including Update 15.2 have been re-incorporated into the system
	  from other sources, while the missing patches for IBMBIO.COM were
	  independently re-implemented by Matthias Paul in 07/1997-10/1997.
	Novell DOS 7 (since 1993-11-08), OpenDOS 7.01 and OpenDOS 7.02 BETA
	  IBMDOS.COM return error code 0001h if SETVER x.255 is in effect
	  for the calling program, or SETVER /G x.255 is in effect.
	Since Caldera DR-OpenDOS 7.02 the SHARE 2.05+ (1998-01-05) driver
	  uses INT 21/AX=65A2h as an *additional* BDOS version check: If the
	  "FUCASE char" function is functional on a DR-DOS BDOS kernel 72h+,
	  SHARE assumes it is running on an OpenDOS 7.02 BETA 1 (73h) kernel
	  (or later) even if the BDOS version returned by INT 21/AX=4452h would
	  indicate an earlier issue of the kernel. Some 3rd party drivers
	  (like HPFS_DOS.EXE) were hardwired to detect Novell DOS 7 only,
	  and so the kernel version had to be patched back on such systems
	  to allow such drivers to work properly. The BDOS version and DOS
	  revision are stored in PCM_HEADER of the IBMDOS.COM file, see
	  table XXXX below.
	However, this is no longer necessary with the introduction of the
	  DR-DOS 7.02+ IBMDOS.COM (since 1998-01-10) and SETVER 1.01+
	  (since 1998-01-12) because they allow to fake BDOS versions as well
	  as faking DOS versions. In /X mode, a set sub-version of y = 100..127
	  will be used as BDOS version instead (64h..7Fh), while the DOS
	  revision will be used to report the DOS sub-version instead. For
	  example, given a DOS revision of 0, SETVER 6.114 would be the proper
	  value to fake Novell DOS 7 (114=72h) on a DR-DOS 7.02+ system,
	  reporting a DOS version of "IBM" 6.00. Sub-versions 128..255 will
	  completely disable this BDOS version check, and report a DOS sub-
	  version of 0..127. This is to work around problems with possibly
	  hostile programs, that try to detect DR-DOS to not run on this OS.
	Additional version check for 1072h kernels: At API level, there
	  is no known way to distinguish Novell DOS 7 from OpenDOS 7.01,
	  however, an IBMBIO.COM/IBMDOS.COM file date since 1997 and the
	  existance of an environment variable %OS%=OPENDOS usually indicates
	  an OpenDOS system (but not the other way around; some OpenDOS
	  BETAs still used %OS%=NWDOS!).
	Additional version checks for 1073h kernels: A functional test of
	  INT 21/AX=65A2h (see above for SHARE) can be used to distinguish
	  OpenDOS 7.02 BETA 1 from the later (OpenDOS 7.02 BETA 2+ and)
	  DR-OpenDOS 7.02 and DR-DOS 7.02 releases, which are both the
	  same, except for the name change and minor bug fixes. Testing
	  for the INT 21/AX=6601h/BX=0000h bug can be used to differentiate the
	  original release of DR-DOS 7.02 from later 7.02 updates and
	  DR-DOS 7.03.
	The DR DOS version is stored in the environment variable VER.
SeeAlso: AX=4412h,AX=4451h,AX=4459h

(Table 01580)
Values for Digital Research operating system version ID:
 41h	DOS Plus 1.2
 60h	DOS Plus 2.0 or 2.1
 63h	DR DOS 3.41
 64h	DR DOS 3.42
 65h	DR DOS 5.0
 67h	DR DOS 6.0
 70h	PalmDOS
 71h	DR DOS 6.0 March 1993 "business update"
 72h	Novell DOS 7.0
 73h	OpenDOS 7.02
SeeAlso: #01579,#01581,#04088,#04023

(Table 04088)
Values for Digital Research operating system ID codes (full AX return value):
 ??41h	- DOS Plus 1.2
 1060h	- DOS Plus 2.0 or 2.1 (1988-03-09???)
	  (this was basically a Concurrent CP/M-86 with built-in DOS emulation
	   developed between 1983-1986)
 1060h	- DR DOS 3.31 (OEM) (1988-04-27???, 06/1988)
	- DR DOS 3.32 (OEM) (1988-08-17)
	- DR DOS 3.33 (OEM) (1988-09-01)
	- DR DOS 3.34 (OEM)
	- DR DOS 3.35 (OEM) (1988-10-21)
	  for example: at least an issue for "Prism System 232" (10/1988)
	  and a French issue existed.
 106?h	- DR DOS 3.40 BETA 1 (1988-11-11)
	- DR DOS 3.40
	  (This is the first issue for sure known to be ROMmable, although
	  DR DOS should have been ROMmable right from the start (1987).)
 1063h	- DR DOS 3.41 various OEM and retail releases (06/1989-07/1989)
	- DR DOS 3.41T
 1064h	- DR DOS 3.42
	  (It is not clear, if this issue was actually released, since Lineo
	  recently (fall 1999) released some historical kernels, and one of
	  them is sailing under the name DR DOS 5.0 "Leopard" BETA 1 and has
	  copyright strings from 1990, while it still identifies itself as
	  being DR DOS 3.41... Unfortunately the uploaded archive is broken,
	  hence it is not possible to find out easily. Maybe DR DOS 3.42 was
	  nothing more than this early "Leopard" BETA???)
 1065h	- DR DOS ??? (1990-02-01)
	- DR DOS 5.0 "Leopard" BETA 2 (1990-03-16),
	- DR DOS 5.0 "Leopard" BETA 2B
	  (This was the first issue to use the new IBMBIO.COM/IBMDOS.COM
	  names instead of DRBIOS.SYS/DRBDOS.SYS.)
	- DR DOS 5.0 "Leopard" BETA 3
	  (This issue still uses separate boot sectors for floppies and
	  harddisks. The boot sector OEM label is still "DIGITAL".)
	- DR DOS 5.0 release (06/1990, 08/1990)
	  (This issue has a combined boot sector for both, floppies and
	  harddisks. The boot sector OEM label has changed to "IBM  3.3".
	  DR DOS 5.0 was the first DOS to introduce high-load capabilities.)
 1066h	- DR DOS ??? (1990-08-09)
	- DR DOS 6.0 "Buxton" ALPHA (02/1991-03/1991)
 1067h	- DR DOS ??? (1991-03-15)
 106?h	- DR DOS 6.0 "Buxton" BETA 2 (??/1991)
 106?h	- DR DOS 6.0 "Buxton" BETA 3 (05/1991, 1991-06-27, 1991-06-28)
 1067h	- DR DOS 6.0 release (05/1991, 08/1991)
	- DR DOS 6.0 BDOS patch "PAT304" English (1991-11-29, XDIR /C: 9D8Ch)
	  fix for "\\" in cmdline by Quick Basic 4.5/MS PDS 7.1 on Lantastic 4.0
	- DR DOS 6.0 BDOS patch "PAT303" English (1991-12-03, XDIR /C: 66B0h)
	  This patch makes INT 21/AH=4Eh (Search First) compatible with MS-DOS
	  when the Volume Label attribute is set. Previously under DR DOS the
	  volume label was only searched for if bit 3 was the only bit set in
	  the attribute whereas MS-DOS searches for the volume label if bit 3
	  is set, irrespective of any other bits in the attribute.
	- DR DOS 6.0 BDOS patch "PAT306" English (1991-12-11, XDIR /C: 8DE5h)
	  This patch fixes a problem with OPTASM which would give error 8
	  if there were not enough handles available. This patch forces the
	  system to check for available handles before it opens a file.
	- DR DOS 6.0 BDOS patch "PAT312" English (1992-01-07, XDIR /C: A0C6h)
	  This patch fixes a problem with INT 21/AH=26h (create PSP) the
	  segment from which the PSP was copied was incorrect so the the PSP
	  was not filled correctly and did not contain the command tail.
	- DR DOS 6.0 BDOS patch "PAT314" English (1992-01-10, XDIR /C: C964h)
	  This patch modifies INT 21/AX=33xxh, the Ctrl Break handler to
	  support undocumented MS-DOS function INT 21/AX=3302h.
	- DR DOS 6.0 BIOS patch "PAT315" English (1992-01-10, XDIR /C: DBAAh)
	  This patch fixes a problem where, when booting from a Bernoulli
	  drive, any DEVICE= statement in CONFIG.SYS failed if it was placed
	  after the device driver RCD.SYS v7.x and DOSOAD.SYS v1.x
	- DR DOS 6.0 BDOS patch "PAT317" English (1992-01-27, XDIR /C: B701h)
	  This patch fixes a problem where attempting to close a changed file
	  on a write protected disk seems to work after the first retry.
	  This was caused because when the retry is attempted the file has been
	  marked as not changed, so the attempt to write to disk is not made.
	- DR DOS 6.0 BDOS patch "PAT321" English (1992-02-19, XDIR /C: 947Bh)
	  This patch fixes a problem where the error codes returned from
	  INT 25h and INT 26h for "drive not ready" and "write protect"
	  errors were incorrect.
	- DR DOS 6.0 BDOS patch "PAT323" English (1992-02-20, XDIR /C: E1B0h)
	  This patch fixes a problem where, if the first command entered after
	  booting the machine is a single character, any use of the command
	  line recall keys will only recall the first command.
	- DR DOS 6.0 ??? German (1992-02-21)
	- DR DOS 6.0 update (02/1992)
	- DR DOS 6.0 BDOS patch "PAT326" English (1992-03-05, XDIR /C: 8EF2h)
	  This is an optional patch to prevent DRDOS from padding the
	  environment of EXEPACKed applications or utilities.
	- DR DOS 6.0 ??? German (1992-03-27)
	- DR DOS 6.0 BDOS patch "PAT334" English (1992-03-27, XDIR /C: 2AFEh)
	  This patch fixes a problem where selecting (R)etry after hitting ^P
	  while the printer is offline caused the system to hang.
	- DR DOS 6.0 "Windows 3.1 update, April 1992" "dr6win" (03/1992,
	  1992-04-07). This public update only includes patches addressing
	  full Windows 3.1 compatiblity. There should have been a full
	  "business update" for registered users, shipping a little bit later.
	- DR DOS 6.0 ??? English (1992-04-07)
	- DR DOS 6.0 BDOS patch "pat354" English (1992-07-28, XDIR /C: 3398h)
	  This patch for Beame and Whiteside Networks: On opening a duplicate
	  file handle which describes a device, a device open call is made to
	  inform the device driver that a new file handle has been opened.
	  This patch is current and up to date as of 1992-11-10.
	- DR DOS 6.0 update (07/1992)
	- DR DOS 6.0 BDOS patch "PAT301" English (1992-10-28, XDIR /C: 959Bh)
	  This patch fixes a problem with apps that opens a file, with Share
	  loaded, but then cannot delete the file until the file is closed.
	  This causes "Money Manager" to fail.
	- DR DOS 6.0 update (11/1992)
	Note: There is no known method to distinguish these different kernels
	       at runtime, except for - maybe - checksumming the IBMBIO.COM/
	       IBMDOS.COM files.
	      The listed patches only address a single problem, while the
	       listed updates are full rebuilds, also including all previous
	       fixes.
 1070h	- multitasking "Vladivar" kernel architecture and introduction of
	  DOS-like structures (1991-07-26, 08/1991)
	- DR DOS ??? (1991-09-26)
	- DR PalmDOS "Merlin" BETA 1-2
	- DR PalmDOS "Merlin" BETA 3 (1992-06-23)
	- DR PalmDOS "Merlin" Evaluation Release (1992-08-25)
	- DR PalmDOS Release Candidates 1-2 (1992-08-26)
	- DR PalmDOS/NetWare PalmDOS 1.0 (06/1992-11/1992)
	  (DR PalmDOS was the first DR DOS re-incarnation that supported
	  a genuine CDS, but still pretended to be DOS 3.31. Much of the
	  former CP/M stuff was stripped out to reduce the code size to meet
	  early Palmtop PC requirements. It introduced the patented dynamic
	  idle detection method (by Roger Gross), a special issue of the
	  TASKMAX program switcher (MINIMAX) to support Personal Information
	  Modules (PIM) plug-in executables, supported Flash/ROM disk,
	  XIP "Execute in Place" applications, and came with PCMCIA Card
	  Services and Service Stack (SS) partially written by Ian Cullimore
	  (ex-Poquet Computer Corporation founder).
	- DR DOS "Panther" BETA 1 (1992-10-16)
	  (This issue already supported DPMS, had the "Vladivar" pre-emptive
	  multitasker, DPMS-SuperStor disk compression, Multiuser-security
	  (World/Group/Owner), and much improved multi-windowing ViewMAX/3 GUI
	  which looked alot more like Windows than GEM. It pretended to be
	  PC DOS 5. However, this issue was never released and later partially
	  merged into the Novell DOS 7 project (without Multiuser-security and
	  ViewMAX/3). In 1999, Caldera Thin Clients released ViewMAX/3 under
	  GPL, see http://www.gemworld.com.)
 1070h??? - DR DOS "StarTrek" (STDOS) (07/1992-05/1993)
	  (A never released, though reportedly fully functional result of
	  a Novell and Apple team-up utilizing the DR DOS "Vladivar" multi-
	  tasker to run Apple's Intel-port of MacOS 7.1 on an issue of DR DOS
	  "Panther", even emulating HFS and Mac resources on DOS FAT file-
	  systems.)
 1071h	- DR DOS ??? (1992-11-26)
	- DR DOS 6.0 "business update" "DRDOS493" English for
	  Windows for Workgroups 3.1 (1993-03-19)
	- DR DOS 6.0 patch "PATDR6" English (1993-03-19) for NetWare
	- DR DOS 6.0 patch "PAT394" English (1993-09-17)
	- Apparently also some issues of DR DOS "Panther"???
 1072h	- Novell DOS 7/PNW "Smirnoff" BETA 1 (??/1993, probably 1993-04-26)
	- Novell DOS 7 "Panther" BETA 2 (08/1993)
	  (This "Panther" issue is much different from the early 10/1992
	  "Panther" BETA 1.)
	- Novell DOS 7 "Panther/Smirnoff" BETA 2 (08/1993)
	- Novell DOS 7 "Panther/Smirnoff" BETA 3 (09/1993)
	  (This issue does not have workarounds for Windows 3.1 "AARD" code)
	- Novell DOS 7 "Panther/Smirnoff" BETA 4 (10/1993)
	- Novell DOS 7 code freeze 1993-12-03???)
	- Novell DOS 7 release (12/1993-04/1994)
	  (also known as NWDOS or ND7, sometimes erroneously called NDOS)
	- Novell DOS 7 German release (1994-02-22)
	  (This issue is known to have workarounds for Windows 3.1 "AARD" code)
	- Novell DOS 7 updates 1-3 (???/1994)
	- Novell DOS 7 update 4 (1994-05-31)
	- Novell DOS 7 updates 5-9 (???/1994)
	- Novell DOS 7 update 10 (12/1994)
	- Novell DOS 7 update 11 (01/1995)
	- Novell DOS 7 update 12 (04/1995)
	- Novell DOS 7 update 13 (05/1995)
	- Novell DOS 7 update 14 (08-09/1995)
	- Novell DOS 7 update 15 (12/1995)
	- Novell DOS 7 update 15.2 (01/1996)
	  Note: The Novell DOS 7 updates 4-15.2 are full rebuilds, not patched
	   binaries.
	- Caldera OpenDOS 7.01 BETA (02/1997)
	  (basically representing Novell DOS 7 update 10 with minor
	  changes here and there)
	- Caldera OpenDOS 7.01 (02-03/1997)
	- Caldera OpenDOS 7.01 M.R.S. (05/1997)
	  (release of the kernel source code)
	- Matthias Paul's enhanced OpenDOS 7.02 ALPHA 1-4 kernels (07-11/1997)
 1073h	- Caldera OpenDOS 7.02 BETA 1 (09/1997)
	  (incorporating most the Novell DOS 7 update 15.2 changes,
	  except for IBMBIO.COM changes, plus a few other enhancements)
	- Caldera OpenDOS 7.02 BETA 2 (11/1997)
	  (now also incorporating Matthias Paul's ALPHA 4 enhancements,
	  the Novell DOS update 15.2 IBMBIO.COM patches have been
	  re-implemented)
	- Caldera OpenDOS 7.02 BETA 2A (12/1997)
	  (now incorporating all Novell DOS 7 update 15.2 changes)
	- Caldera DR-OpenDOS 7.02 (1997-12-2x)
	  (now for the first time the product name is written with a hyphen!!!)
	- Caldera DR-DOS 7.02 internal build (02/1998)
	- Caldera DR-DOS 7.02 release (03/1998)
	- Caldera DR-DOS 7.02A release (06/1998)
	- DR-DOS 7.02 Update 1 (08/1998)
	- DR-DOS 7.02 Update 2 (09/1998)
	- Caldera (Thin Clients) DR-DOS 7.03 BETA (1998-12-03),
	  sometimes referred to as "DR-DOS 7.03 BETA 3"
	- Caldera (Thin Clients) DR-DOS 7.03 release (1998-12-24, 1999-01-06)
	- Lineo DR-DOS 7.03 release (1999-06-07, 1999-09-09)
	  (this issue has no functional changes compared to the 1999-01-06
	  issue of DR-DOS 7.03)
SeeAlso: #01580,#01579,#01581,#04023

Bitfields for CP/M type indicator:
Bit(s)	Description	(Table 01581)
 7-4	CPU type
	0000 = 8080
	0001 = 8086
 3-0	OS type
	0000 = CP/M
	0001 = MP/M
	0002 = CP/Net
	0004 = multiuser
Notes:	Usually 10h (single-user) or 14h (multi-user).
	While earlier releases of the system utilities performed a test for
	  a version code of (>)= (10)xxh, this was changed with
	  DR-OpenDOS 7.02+ (now taking a possible multi-user version into
	  account): Most utilities now test for AH being either 10h or 14h,
	  and a BDOS version >=xxh to allow them to properly run on possible
	  future multi-user releases of DR-DOS. Before doing this test, some
	  of them strip off the CP/Net bit.
SeeAlso: #01580

Top
214454 - INT 21 U - DR DOS 3.41+ - SET GLOBAL PASSWORD
INT 21 U - DR DOS 3.41+ - SET GLOBAL PASSWORD
	AX = 4454h
	DS:DX -> password string (blank-padded to 8 characters)
Desc:	Specify the master password for accessing files.
SeeAlso: AX=4303h,AX=4414h

Top
214456 - INT 21 U - DR DOS 5.0+ - HISTORY BUFFER CONTROL
INT 21 U - DR DOS 5.0+ - HISTORY BUFFER CONTROL
	AX = 4456h
	DL = control flags (see #01582)
Return: AL = previous value of state flags (see #01583)
Note:	DR DOS 6.0 only checks bit 0 and ignores the rest of DL
SeeAlso: #01584

Bitfields for control flags:
Bit(s)	Description	(Table 01582)
 0	whose buffer: 0=application, 1=COMMAND.COM
---Novell DOS 7---
 1	toggle HISTORY usage
 2	toggle INSERT state
Note:	only one bit at a time may be used

Bitfields for state flags:
Bit(s)	Description	(Table 01583)
 0	HISTORY buffer enabled
 1	INSERT enabled
 2-5	unused
 7	whose buffer: 0=application, 1=COMMAND.COM

Top
214457 - INT 21 U - DR DOS 5.0-6.0 - SHARE/HILOAD CONTROL
INT 21 U - DR DOS 5.0-6.0 - SHARE/HILOAD CONTROL
	AX = 4457h
	DH = subfunction
	    00h enable/disable SHARE
		DL = 00h disable
		   = 01h enable
		   else Return: AX = ???
	    01h get HILOAD status
		Return: AX = status
			    0000h off
			    0001h on
	    02h set HILOAD status
		DL = new state (00h off, 01h on)
		Return: AX = ???
	    other
		Return: AX = ???
Note:	This was seen called by COMMAND.COM of DR DOS 6.0; it does not seem
	  to be supported by Novell DOS 7
SeeAlso: AX=4457h/DX=FFFFh

Top
214457DXFFFF - INT 21 OU - DR DOS 6.0 - GET SHARE STATUS
INT 21 OU - DR DOS 6.0 - GET SHARE STATUS
	AX = 4457h
	DX = FFFFh
Return: AX = SHARE status
Note:	not supported by Novell DOS 7
SeeAlso: INT 2F/AX=1000h

Top
214458 - INT 21 U - DR DOS 5.0+ internal - GET POINTER TO INTERNAL VARIABLE TABLE
INT 21 U - DR DOS 5.0+ internal - GET POINTER TO INTERNAL VARIABLE TABLE
	AX = 4458h
Return: ES:BX -> internal variable table (see #01584,#01585)
	AX = ??? (0B50h for DR DOS 5.0, 0A56h for DR DOS 6.0, 0FE4h for
		  Novell DOS 7)
SeeAlso: AX=4452h

Format of DR DOS 5.0-6.0 internal variable table:
Offset	Size	Description	(Table 01584)
 00h	WORD	???
 02h	WORD	segment of ???
 04h	WORD	offset within DOS data segment of history control structure
		  for COMMAND.COM history buffer (see #01586)
 06h	WORD	offset within DOS data segment of history control structure
		  for application history buffer (see #01586)
 08h	BYTE	initial history state flags (see #01583)
 09h  2 BYTEs	???
 0Bh	WORD	KB of extended memory at startup
 0Dh	BYTE	number of far jump entry points
 0Eh	WORD	segment containing far jumps to DR DOS entry points (see #01587)
 10h	WORD	(only if kernel loaded in HMA) offset in HMA of first free HMA
		  memory block (see #01588) or 0000h if none; segment is FFFFh
 12h	WORD	pointer to segment of environment variables set in CONFIG,
		  or 0000h if already used
---DR DOS 6.0---
 14h	WORD	(only if kernel loaded in HMA) offset in HMA of first used HMA
		memory block (see #01588) or 0000h if none; segment is FFFFh
 16h  8 BYTEs	???
 1Eh	WORD	offset in DOS data segment of full COUNTRY.SYS filename
 20h  8 BYTEs	???
 28h	WORD	offset in DOS data segment of SHARE hook table
 2Ah  2 BYTEs	???
 2Ch	WORD	offset in DOS data segment of far pointer to INT 2F/AX=1000h
		  handler
Notes:	the segment used for the DR DOS 6.0 CONFIG environment variables
	  (excluding COMSPEC, VER and OS) is only useful for programs/drivers
	  called from CONFIG.SYS. The word is set to zero later when the area
	  is copied to the COMMAND.COM environment space.  This allows
	  CONFIG.SYS to pass information to AUTOEXEC.BAT.
	the Novell DOS 7 KEYB uses offsets 10h,14h, and 2Ch in the same was
	  as for DR DOS 6.0, so it is likely that the entire table is the same

Format of Novell DOS 7 internal variable table:
Offset	Size	Description	(Table 01585)
 00h	???
 1Eh	WORD	offset of COUNTRY.SYS filename
 42h 16 DWORDs	pointers to ??? entry points
	???

Format of history control structure:
Offset	Size	Description	(Table 01586)
 00h	WORD	segment of buffer
 02h	WORD	size of buffer in bytes
 04h	WORD	???

Format of kernel entry jump table for DR DOS 5.0-6.0:
Offset	Size	Description	(Table 01587)
 00h  5 BYTEs	far jump to kernel entry point for CP/M CALL 5
 05h  5 BYTEs	far jump to kernel entry point for INT 20
 0Ah  5 BYTEs	far jump to kernel entry point for INT 21
 0Fh  5 BYTEs	far jump to kernel entry point for INT 22 (RETF)
 14h  5 BYTEs	far jump to kernel entry point for INT 23 (RETF)
 19h  5 BYTEs	far jump to kernel entry point for INT 24
 1Eh  5 BYTEs	far jump to kernel entry point for INT 25
 23h  5 BYTEs	far jump to kernel entry point for INT 26
 28h  5 BYTEs	far jump to kernel entry point for INT 27
 2Dh  5 BYTEs	far jump to kernel entry point for INT 28
 32h  5 BYTEs	far jump to kernel entry point for INT 2A (IRET)
 37h  5 BYTEs	far jump to kernel entry point for INT 2B (IRET)
 3Ch  5 BYTEs	far jump to kernel entry point for INT 2C (IRET)
 41h  5 BYTEs	far jump to kernel entry point for INT 2D (IRET)
 46h  5 BYTEs	far jump to kernel entry point for INT 2E (IRET)
 4Bh  5 BYTEs	far jump to kernel entry point for INT 2F
Notes:	all of these entry points are indirected through this jump table
	  to allow the kernel to be relocated into high memory while leaving
	  the actual entry addresses in low memory for maximum compatibility
	some of these entry points (22h,23h,24h,2Eh,2Fh) are replaced as soon
	  as COMMAND.COM is loaded, and return immediately to the caller, some
	  returning an error code (the original handler for INT 2F returns
	  AL=03h [fail]).

Format of HMA Memory Block (DR DOS 6.0 kernel loaded in HMA):
Offset	Size	Description	(Table 01588)
 00h	WORD	offset of next HMA Memory Block (0000h if last block)
 02h	WORD	size of this block in bytes (at least 10h)
 04h	BYTE	type of HMA Memory Block (interpreted by MEM)
		00h system
		01h KEYB
		02h NLSFUNC
		03h SHARE
		04h TaskMAX
		05h COMMAND
 05h	var	TSR (or system) code and data. DR DOS TSR's, such as KEYB,
		  hooks interrupts using segment FFFEh instead FFFFh.

Top
214459 - INT 21 - DR Multiuser DOS 5.0 - API
INT 21 - DR Multiuser DOS 5.0 - API
	AX = 4459h
	CL = function (see #04019 at INT E0"CP/M-86")
	DS,DX = parameters
Notes:	DR DOS 5.0 and Novell DOS 7 return CF set and AX=0001h
	this API is also available on INT E0
SeeAlso: AX=4452h,INT E0"CP/M-86"

Top
21445A - INT 21 U - Concurrent DOS etc. - USER GROUP SUPPORT
INT 21 U - Concurrent DOS etc. - USER GROUP SUPPORT
	AX = 445Ah
	CX = operation type
	    00h get default file access rights
	    01h set default file access rights
	    02h get user/group
	    03h get security version
	    04h set security key (needs key)
	    05h set user/group (needs key)
	DX = data for operation if set
	BX = key (if required)
Return: AX = result
Note:	This function was introduced on 1990/06/04 for CDOS.  It has been
	  supported by DR PalmDOS and DR DOS "Panther" (BDOS 1070h),
	  but it is not supported by Novell DOS 7 - DR-DOS 7.03.

Top
2144A0 - INT 21 - VIRUS - "Horns" - INSTALLATION CHECK
INT 21 - VIRUS - "Horns" - INSTALLATION CHECK
	AX = 44A0h
Return: AH = FFh if installed
SeeAlso: AX=4243h"VIRUS",AX=4B04h"VIRUS"

Top
2144E0 - INT 21 U - Sun PC-NFS - API???
INT 21 U - Sun PC-NFS - API???
	AX = 44E0h
	DS:DX -> ???
	SS:BP -> stack frame (see #01589)
Return: ???
Note:	this function is also supported by Beame&Whiteside's BWPCNFS shim; the
	  description presented here was derived from that shim

Format of PC-NFS stack frame:
Offset	Size	Description	(Table 01589)
 00h	WORD	-> previous stack frame
 02h	DWORD	return address

Top
2144FFBXFFFF - INT 21 U - NewSpace - ???
INT 21 U - NewSpace - ???
	AX = 44FFh
	BX = FFFFh
	DX = ???
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
	  all files as they are written and decompresses them as they are read
SeeAlso: AX=4414h/BX=FFFFh

Top
2145 - INT 21 - DOS 2+ - "DUP" - DUPLICATE FILE HANDLE
INT 21 - DOS 2+ - "DUP" - DUPLICATE FILE HANDLE
	AH = 45h
	BX = file handle
Return: CF clear if successful
	    AX = new handle
	CF set on error
	    AX = error code (04h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	moving file pointer for either handle will also move it for the other,
	  because both will refer to the same system file table
	for DOS versions prior to 3.3, file writes may be forced to disk by
	  duplicating the file handle and closing the duplicate
SeeAlso: AH=3Dh,AH=46h

Top
2146 - INT 21 - DOS 2+ - "DUP2", "FORCEDUP" - FORCE DUPLICATE FILE HANDLE
INT 21 - DOS 2+ - "DUP2", "FORCEDUP" - FORCE DUPLICATE FILE HANDLE
	AH = 46h
	BX = file handle
	CX = file handle to become duplicate of first handle
Return: CF clear if successful
	CF set on error
	    AX = error code (04h,06h) (see #01680 at AH=59h/BX=0000h)
Notes:	closes file with handle CX if it is still open
	DOS 3.30 hangs if BX=CX on entry
	moving file pointer for either handle will also move it for the other,
	  because both will refer to the same system file table
SeeAlso: AH=3Dh,AH=45h

Top
2147 - INT 21 - DOS 2+ - "CWD" - GET CURRENT DIRECTORY
INT 21 - DOS 2+ - "CWD" - GET CURRENT DIRECTORY
	AH = 47h
	DL = drive number (00h = default, 01h = A:, etc)
	DS:SI -> 64-byte buffer for ASCIZ pathname
Return: CF clear if successful
	    AX = 0100h (undocumented)
	CF set on error
	    AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
Notes:	the returned path does not include a drive or the initial backslash
	many Microsoft products for Windows rely on AX being 0100h on success
	under the FlashTek X-32 DOS extender, the buffer pointer is in DS:ESI
SeeAlso: AH=19h,AH=3Bh,AH=71h,INT 15/AX=DE25h

Top
2148 - INT 21 - DOS 2+ - ALLOCATE MEMORY
INT 21 - DOS 2+ - ALLOCATE MEMORY
	AH = 48h
	BX = number of paragraphs to allocate
Return: CF clear if successful
	    AX = segment of allocated block
	CF set on error
	    AX = error code (07h,08h) (see #01680 at AH=59h/BX=0000h)
	    BX = size of largest available block
Notes:	DOS 2.1-6.0 coalesces free blocks while scanning for a block to
	  allocate
	.COM programs are initially allocated the largest available memory
	  block, and should free some memory with AH=49h before attempting any
	  allocations
	under the FlashTek X-32 DOS extender, EBX contains a protected-mode
	  near pointer to the allocated block on a successful return
SeeAlso: AH=49h,AH=4Ah,AH=58h,AH=83h

Top
2149 - INT 21 - DOS 2+ - FREE MEMORY
INT 21 - DOS 2+ - FREE MEMORY
	AH = 49h
	ES = segment of block to free
Return: CF clear if successful
	CF set on error
	    AX = error code (07h,09h) (see #01680 at AH=59h/BX=0000h)
Notes:	apparently never returns an error 07h, despite official docs; DOS 2.1+
	  code contains only an error 09h exit
	DOS 2.1-6.0 does not coalesce adjacent free blocks when a block is
	  freed, only when a block is allocated or resized
	the code for this function is identical in DOS 2.1-6.0 except for
	  calls to start/end a critical section in DOS 3.0+
SeeAlso: AH=48h,AH=4Ah

Top
214A - INT 21 - DOS 2+ - RESIZE MEMORY BLOCK
INT 21 - DOS 2+ - RESIZE MEMORY BLOCK
	AH = 4Ah
	BX = new size in paragraphs
	ES = segment of block to resize
Return: CF clear if successful
	CF set on error
	    AX = error code (07h,08h,09h) (see #01680 at AH=59h/BX=0000h)
	    BX = maximum paragraphs available for specified memory block
Notes:	under DOS 2.1-6.0, if there is insufficient memory to expand the block
	  as much as requested, the block will be made as large as possible
	DOS 2.1-6.0 coalesces any free blocks immediately following the block
	  to be resized
SeeAlso: AH=48h,AH=49h,AH=83h

Top
214A--BX00B6 - INT 21 - VIRUS???
INT 21 - VIRUS???
	AH = 4Ah
	BX = 00B6h
	ES = CX
Return: ???
Note:	this call is intercepted by the Search&Destroy SDRes v27.03 bundled
	  with Novell DOS 7, and is presumably some virus's installation check
SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=FFFFh,AH=D2h"VIRUS"

Top
214A--BXFFFF - INT 21 - VIRUS???
INT 21 - VIRUS???
	AH = 4Ah
	BX = FFFFh
	CX = 0568h
	SI = 0129h
	DI = 0000h
	ES = BP
Return: ???
Note:	this call is intercepted by the Search&Destroy SDRes v27.03 bundled
	  with Novell DOS 7, and is presumably some virus's installation check
SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=00B6h

Top
214B - INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
	AH = 4Bh
	AL = type of load
	    00h load and execute
	    01h load but do not execute
	    03h load overlay (see #01591)
	    04h load and execute in background (European MS-DOS 4.0 only)
		"Exec & Go" (see also AH=80h)
	DS:DX -> ASCIZ program name (must include extension)
	ES:BX -> parameter block (see #01590,#01591,#01592)
	CX = mode (subfunction 04h only)
		0000h child placed in zombie mode after termination
		0001h child's return code discarded on termination
Return: CF clear if successful
	    BX,DX destroyed
	    if subfunction 01h, process ID set to new program's PSP; get with
		INT 21/AH=62h
	CF set on error
	    AX = error code (01h,02h,05h,08h,0Ah,0Bh) (see #01680 at AH=59h)
Notes:	DOS 2.x destroys all registers, including SS:SP
	under ROM-based DOS, if no disk path characters (colons or slashes)
	  are included in the program name, the name is searched for in the
	  ROM module headers (see #01595) before searching on disk
	for functions 00h and 01h, the calling process must ensure that there
	  is enough unallocated memory available; if necessary, by releasing
	  memory with AH=49h or AH=4Ah
	for function 01h, the AX value to be passed to the child program is put
	  on top of the child's stack
	for function 03h, DOS assumes that the overlay is being loaded into
	  memory allocated by the caller
	function 01h was undocumented prior to the release of DOS 5.0
	some versions (such as DR DOS 6.0) check the parameters and parameter
	  block and return an error if an invalid value (such as an offset of
	  FFFFh) is found
	background programs under European MS-DOS 4.0 must use the new
	  executable format
	this function ignores the filename extension, instead checking the
	  first two bytes of the file to determine whether there is a valid
	  .EXE header (see #01594); if not, the file is assumed to be in .COM
	  format.  If present, the file may be in any of several formats which
	  are extensions of the original .EXE format (see #01593)
	.COM-format executables begin running with the following register
	  values:
		AL = 00h if first FCB has valid drive letter, FFh if not
		AH = 00h if second FCB has valid drive letter, FFh if not
		CS,DS,ES,SS = PSP segment
		SP = offset of last word available in first 64K segment
		(note: AX is always 0000h under DESQview)
	old-format executables begin running with the following register
	  values:
		AL = 00h if first FCB has valid drive letter, FFh if not
		AH = 00h if second FCB has valid drive letter, FFh if not
		DS,ES = PSP segment
		SS:SP as defined in .EXE header
		(note: AX is always 0000h under DESQview)
	new executables begin running with the following register values
		AX = environment segment
		BX = offset of command tail in environment segment
		CX = size of automatic data segment (0000h = 64K)
		ES,BP = 0000h
		DS = automatic data segment
		SS:SP = initial stack
	  the command tail corresponds to an old executable's PSP:0081h and
	  following, except that the 0Dh is turned into a NUL (00h); new
	  format executables have no PSP
	under the FlashTek X-32 DOS extender, only function 00h is supported
	  and the pointers are passed in DS:EDX and ES:EBX
	DR DOS 6 always loads .EXE-format programs with no fixups and
	  .COM-format programs starting with 9Ch 55h (PUSHF/PUSH BP) above the
	  64K mark to avoid the EXEPACK bug, by extending the memory block
	  containing the program's environment; this code is disabled if the
	  name of the parent program as stored in the MCB is 'WIN'.
	DR DOS 3.41 and 5.0 check for a valid filename before testing the
	  subfunction number, so the otherwise invalid subfunction 02h will
	  only return error code 01h if the given filename actually exists;
	  otherwise, errors 02h, 03h, or 05h are returned
BUGS:	DOS 2.00 assumes that DS points at the current program's PSP
	Load Overlay (subfunction 03h) loads up to 512 bytes too many if the
	  file contains additional data after the actual overlay
	Load but Do Not Execute (subfunction 01h) is reported to corrupt the
	  top word of the caller's stack if the loaded module terminates with
	  INT 21/AH=4Ch in some versions of MS-DOS, including v5.00.
SeeAlso: AX=4B05h,AH=4Ch,AH=4Dh,AH=64h/BX=0025h,AH=8Ah,INT 2E,INT 60/DI=0604h

Format of EXEC parameter block for AL=00h,01h,04h:
Offset	Size	Description	(Table 01590)
 00h	WORD	segment of environment to copy for child process (copy caller's
		  environment if 0000h)
 02h	DWORD	pointer to command tail to be copied into child's PSP
 06h	DWORD	pointer to first FCB to be copied into child's PSP
 0Ah	DWORD	pointer to second FCB to be copied into child's PSP
 0Eh	DWORD	(AL=01h) will hold subprogram's initial SS:SP on return
 12h	DWORD	(AL=01h) will hold entry point (CS:IP) on return
SeeAlso: #01591,#01592

Format of EXEC parameter block for AL=03h:
Offset	Size	Description	(Table 01591)
 00h	WORD	segment at which to load overlay
 02h	WORD	relocation factor to apply to overlay if in .EXE format
SeeAlso: #01590,#01592

Format of EXEC parameter block for FlashTek X-32:
Offset	Size	Description	(Table 01592)
 00h	PWORD	48-bit far pointer to environment string
 06h	PWORD	48-bit far pointer to command tail string
SeeAlso: #01590,#01591

(Table 01593)
Values for the executable types understood by various environments:
 MZ	old-style DOS executable (see #01594)
 ZM	used by some very early DOS linkers, and still supported as an
	  alternate to the MZ signature by MS-DOS, PC DOS, PTS-DOS, and S/DOS
 NE	Windows or OS/2 1.x segmented ("new") executable (see #01596)
 LE	Windows virtual device driver (VxD) linear executable (see #01609)
 LX	variant of LE used in OS/2 2.x (see #01609)
 W3	Windows WIN386.EXE file; a collection of LE files
 W4	Windows95 VMM32.VXD file
 PE	Win32 (Windows NT and Win32s) portable executable based on Unix COFF
 DL	HP 100LX/200LX system manager compliant executable (.EXM)
 MP	old PharLap .EXP (see #01619)
 P2	PharLap 286 .EXP (see #01620)
 P3	PharLap 386 .EXP (see #01620)

Format of .EXE file header:
Offset	Size	Description	(Table 01594)
 00h  2 BYTEs	.EXE signature, either "MZ" or "ZM" (5A4Dh or 4D5Ah)
		  (see also #01593)
 02h	WORD	number of bytes in last 512-byte page of executable
 04h	WORD	total number of 512-byte pages in executable (includes any
		partial last page)
 06h	WORD	number of relocation entries
 08h	WORD	header size in paragraphs
 0Ah	WORD	minimum paragraphs of memory required to allocate in addition
		  to executable's size
 0Ch	WORD	maximum paragraphs to allocate in addition to executable's size
 0Eh	WORD	initial SS relative to start of executable
 10h	WORD	initial SP
 12h	WORD	checksum (one's complement of sum of all words in executable)
 14h	DWORD	initial CS:IP relative to start of executable
 18h	WORD	offset within header of relocation table
		40h or greater for new-format (NE,LE,LX,W3,PE,etc.) executable
 1Ah	WORD	overlay number (normally 0000h = main program)
---new executable---
 1Ch  4 BYTEs	???
 20h	WORD	behavior bits
 22h 26 BYTEs	reserved for additional behavior info
 3Ch	DWORD	offset of new executable (NE,LE,etc) header within disk file,
		or 00000000h if plain MZ executable
---Borland TLINK---
 1Ch  2 BYTEs	??? (apparently always 01h 00h)
 1Eh	BYTE	signature FBh
 1Fh	BYTE	TLINK version (major in high nybble, minor in low nybble)
 20h  2 BYTEs	??? (v2.0 apparently always 72h 6Ah, v3.0+ seems always 6Ah 72h)
---ARJ self-extracting archive---
 1Ch  4 BYTEs	signature "RJSX" (older versions, new signature is "aRJsfX" in
		the first 1000 bytes of the file)
---LZEXE 0.90 compressed executable---
 1Ch  4 BYTEs	signature "LZ09"
---LZEXE 0.91 compressed executable---
 1Ch  4 BYTEs	signature "LZ91"
---PKLITE compressed executable---
 1Ch	BYTE	minor version number
 1Dh	BYTE	bits 0-3: major version
		bit 4: extra compression
		bit 5: huge (multi-segment) file
 1Eh  6 BYTEs	signature "PKLITE" (followed by copyright message)
---LHarc 1.x self-extracting archive---
 1Ch  4 BYTEs	unused???
 20h  3 BYTEs	jump to start of extraction code
 23h  2 BYTEs	???
 25h 12 BYTEs	signature "LHarc's SFX "
---LHA 2.x self-extracting archive---
 1Ch  8 BYTEs	???
 24h 10 BYTEs	signature "LHa's SFX " (v2.10) or "LHA's SFX " (v2.13)
---TopSpeed C 3.0 CRUNCH compressed file---
 1Ch	DWORD	018A0001h
 20h	WORD	1565h
---PKARCK 3.5 self-extracting archive---
 1Ch	DWORD	00020001h
 20h	WORD	0700h
---BSA (Soviet archiver) self-extracting archive---
 1Ch	WORD	000Fh
 1Eh	BYTE	A7h
---LARC self-extracting archive---
 1Ch  4 BYTEs	???
 20h 11 BYTEs	"SFX by LARC "
---LH self-extracting archive---
 1Ch  8 BYTEs	???
 24h  8 BYTEs	"LH's SFX "
---RAR self-extracting archive---
 1Ch  4 BYTEs	signature "RSFX"
---other linkers---
 1Ch	var	optional information
---
  N   N DWORDs	relocation items
		each is the segment:offset from start of load image at which
		  to add the actual load segment to the indicated WORD
Notes:	if the word at offset 02h is 4, it should be treated as 00h, since
	  pre-1.10 versions of the MS linker set it that way
	if both minimum and maximum allocation (offset 0Ah/0Ch) are zero, the
	  program is loaded as high in memory as possible (DOS only checks
	  the maximum allocation, however)
	the maximum allocation is set to FFFFh by default
	additional data may be contained in the file beyond the end of the
	  load image described by the .EXE header; this data may be overlays,
	  the actual executable for newer-format executables, or debugging
	  information (see #01600,#01624)
	relocations entries need not be in any particular order, although they
	  are typically stored in order from beginning to end of the load
	  image
SeeAlso: #01596

Format of ROM Module Header:
Offset	Size	Description	(Table 01595)
 00h  2 BYTEs	ROM signature 55h, AAh
 02h	BYTE	size of ROM in 512-byte blocks
 03h  3 BYTEs	POST initialization entry point (near JMP instruction)
 06h	ROM Program Name List [array]
	Offset	Size	Description
	 00h	BYTE	length of ROM program's name (00h if end of name list)
	 01h  N BYTEs	program name
	 N+1  3 BYTEs	program entry point (near JMP instruction)

Format of new executable header:
Offset	Size	Description	(Table 01596)
 00h  2 BYTEs	"NE" (4Eh 45h) signature
 02h  2 BYTEs	linker version (major, then minor)
 04h	WORD	offset from start of this header to entry table (see #01603)
 06h	WORD	length of entry table in bytes
 08h	DWORD	file load CRC (0 in Borland's TPW)
 0Ch	BYTE	program flags (see #01597)
 0Dh	BYTE	application flags (see #01598)
 0Eh	WORD	auto data segment index
 10h	WORD	initial local heap size
 12h	WORD	initial stack size (added to data seg, 0000h if SS <> DS)
 14h	DWORD	program entry point (CS:IP), "CS" is index into segment table
 18h	DWORD	initial stack pointer (SS:SP), "SS" is segment index
		if SS=automatic data segment and SP=0000h, the stack pointer is
		  set to the top of the automatic data segment, just below the
		  local heap
 1Ch	WORD	segment count
 1Eh	WORD	module reference count
 20h	WORD	length of nonresident names table in bytes
 22h	WORD	offset from start of this header to segment table (see #01601)
 24h	WORD	offset from start of this header to resource table
 26h	WORD	offset from start of this header to resident names table
 28h	WORD	offset from start of this header to module reference table
 2Ah	WORD	offset from start of this header to imported names table
		(array of counted strings, terminated with a string of length
		  00h)
 2Ch	DWORD	offset from start of file to nonresident names table
 30h	WORD	count of moveable entry point listed in entry table
 32h	WORD	file alignment size shift count
		0 is equivalent to 9 (default 512-byte pages)
 34h	WORD	number of resource table entries
 36h	BYTE	target operating system
		00h unknown
		01h OS/2
		02h Windows
		03h European MS-DOS 4.x
		04h Windows 386
		05h BOSS (Borland Operating System Services)
		81h PharLap 286|DOS-Extender, OS/2
		82h PharLap 286|DOS-Extender, Windows
 37h	BYTE	other EXE flags (see #01599)
 38h	WORD	offset to return thunks or start of gangload area
 3Ah	WORD	offset to segment reference thunks or length of gangload area
 3Ch	WORD	minimum code swap area size
 3Eh  2 BYTEs	expected Windows version (minor version first)
Note:	this header is documented in detail in the Windows 3.1 SDK Programmer's
	  Reference, Vol 4.
SeeAlso: #01594

Bitfields for new executable program flags:
Bit(s)	Description	(Table 01597)
 0-1	DGROUP type
	  0 = none
	  1 = single shared
	  2 = multiple (unshared)
	  3 = (null)
 2	global initialization
 3	protected mode only
 4	8086 instructions
 5	80286 instructions
 6	80386 instructions
 7	80x87 instructions

Bitfields for new executable application flags:
Bit(s)	Description	(Table 01598)
 0-2	application type
	001 full screen (not aware of Windows/P.M. API)
	010 compatible with Windows/P.M. API
	011 uses Windows/P.M. API
 3	is a Family Application (OS/2)
 5	0=executable, 1=errors in image
 6	non-conforming program (valid stack is not maintained)
 7	DLL or driver rather than application
	(SS:SP info invalid, CS:IP points at FAR init routine called with
	  AX=module handle which returns AX=0000h on failure, AX nonzero on
	  successful initialization)

Bitfields for other new .EXE flags:
Bit(s)	Description	(Table 01599)
 0	supports long filenames
 1	2.X protected mode
 2	2.X proportional font
 3	gangload area

Format of Codeview trailer (at end of executable):
Offset	Size	Description	(Table 01600)
 00h	WORD	signature 4E42h ('NB')
 02h	WORD	Microsoft debug info version number
 04h	DWORD	Codeview header offset
SeeAlso: #01624

Format of new executable segment table record:
Offset	Size	Description	(Table 01601)
 00h	WORD	offset in file (shift left by alignment shift to get byte offs)
 02h	WORD	length of image in file (0000h = 64K)
 04h	WORD	segment attributes (see #01602)
 06h	WORD	number of bytes to allocate for segment (0000h = 64K)
Note:	the first segment table entry is entry number 1
SeeAlso: #01604

Bitfields for segment attributes:
Bit(s)	Description	(Table 01602)
 0	data segment rather than code segment
 1	unused???
 2	real mode
 3	iterated
 4	movable
 5	sharable
 6	preloaded rather than demand-loaded
 7	execute-only (code) or read-only (data)
 8	relocations (directly following code for this segment)
 9	debug info present
 10,11	80286 DPL bits
 12	discardable
 13-15	discard priority

Format of new executable entry table item (list):
Offset	Size	Description	(Table 01603)
 00h	BYTE	number of entry points (00h if end of entry table list)
 01h	BYTE	segment number (00h if end of entry table list)
 02h 3N BYTEs	entry records
		Offset	Size	Description
		 00h	BYTE	flags
				bit 0: exported
				bit 1: single data
				bits 2-7: unused???
		 01h	WORD	offset within segment

Format of new executable relocation data (immediately follows segment image):
Offset	Size	Description	(Table 01604)
 00h	WORD	number of relocation items
 02h 8N BYTEs	relocation items
		Offset	Size	Description
		 00h	BYTE	relocation type
				00h LOBYTE
				02h BASE
				03h PTR
				05h OFFS
				0Bh PTR48
				0Dh OFFS32
		 01h	BYTE	flags
				bit 2: additive
		 02h	WORD	offset within segment
		 04h	WORD	target address segment
		 06h	WORD	target address offset
SeeAlso: #01601,#01605

Format of new executable resource data:
Offset	Size	Description	(Table 01605)
 00h	WORD	alignment shift count for resource data
 02h  N RECORDs resources
	Format of resource record:
	Offset	Size	Description
	 00h	WORD	type ID
			0000h if end of resource records
			>= 8000h if integer type
			else offset from start of resource table to type string
	 02h	WORD	number of resources of this type
	 04h	DWORD	reserved for runtime use
	 08h  N Resources (see #01606)
Note:	resource type and name strings are stored immediately following the
	  resource table, and are not null-terminated
SeeAlso: #01606

Format of new executable resource entry:
Offset	Size	Description	(Table 01606)
 00h	WORD	offset in alignment units from start of file to contents of
		the resource data
 02h	WORD	length of resource image in bytes
 04h	WORD	flags
		bit 4: moveable
		bit 5: shareable
		bit 6: preloaded
 06h	WORD	resource ID
		>= 8000h if integer resource
		else offset from start of resource table to resource string
 08h	DWORD	reserved for runtime use
Notes:	resource type and name strings are stored immediately following the
	  resource table, and are not null-terminated
	strings are counted strings, with a string of length 0 indicating the
	  end of the resource table
SeeAlso: #01605,#01607

Format of new executable module reference table [one bundle of entries]:
Offset	Size	Description	(Table 01607)
 00h	BYTE	number of records in this bundle (00h if end of table)
 01h	BYTE	segment indicator
		00h unused
		FFh movable segment, segment number is in entry
		else segment number of fixed segment
 02h  N RECORDs
	Format of segment record
	Offset	Size	Description
	 00h	BYTE	flags
			bit 0: entry is exported
			bit 1: entry uses global (shared) data
			bits 7-3: number of parameter words
	---fixed segment---
	 01h	WORD	offset
	---moveable segment---
	 01h  2 BYTEs	INT 3F instruction (CDh 3Fh)
	 03h	BYTE	segment number
	 05h	WORD	offset
Note:	table entries are numbered starting from 1
SeeAlso: #01608

Format of new executable resident/nonresident name table entry:
Offset	Size	Description	(Table 01608)
 00h	BYTE	length of string (00h if end of table)
 01h  N BYTEs	ASCII text of string
 N+1	WORD	ordinal number (index into entry table)
Notes:	the first string in the resident name table is the module name; the
	  first entry in the nonresident name table is the module description
	the strings are case-sensitive; if the executable was linked with
	  /IGNORECASE, all strings are in uppercase
SeeAlso: #01607

Format of Linear Executable (enhanced mode executable) header:
Offset	Size	Description	(Table 01609)
 00h  2 BYTEs	"LE" (4Ch 45h) signature (Windows)
		"LX" (4Ch 58h) signature (OS/2)
 02h	BYTE	byte order (00h = little-endian, nonzero = big-endian)
 03h	BYTE	word order (00h = little-endian, nonzero = big-endian)
 04h	DWORD	executable format level
 08h	WORD	CPU type (see also INT 15/AH=C9h)
		01h Intel 80286 or upwardly compatible
		02h Intel 80386 or upwardly compatible
		03h Intel 80486 or upwardly compatible
		04h Intel Pentium (80586) or upwardly compatible
		20h Intel i860 (N10) or compatible
		21h Intel "N11" or compatible
		40h MIPS Mark I (R2000, R3000) or compatible
		41h MIPS Mark II (R6000) or compatible
		42h MIPS Mark III (R4000) or compatible
 0Ah	WORD	target operating system
		01h OS/2
		02h Windows
		03h European DOS 4.0
		04h Windows 386
 0Ch	DWORD	module version
 10h	DWORD	module type (see #01610)
 14h	DWORD	number of memory pages
 18h	Initial CS:EIP
	DWORD	object number
	DWORD	offset
 20h	Initial SS:ESP
	DWORD	object number
	DWORD	offset
 28h	DWORD	memory page size
 2Ch	DWORD	(Windows LE) bytes on last page
		(OS/2 LX) page offset shift count
 30h	DWORD	fixup section size
 34h	DWORD	fixup section checksum
 38h	DWORD	loader section size
 3Ch	DWORD	loader section checksum
 40h	DWORD	offset of object table (see #01611)
 44h	DWORD	object table entries
 48h	DWORD	object page map table offset (see #01613)
 4Ch	DWORD	object iterate data map offset
 50h	DWORD	resource table offset
 54h	DWORD	resource table entries
 58h	DWORD	resident names table offset (see #01614)
 5Ch	DWORD	entry table offset (see #01615,#01616)
 60h	DWORD	module directives table offset
 64h	DWORD	Module Directives entries
 68h	DWORD	Fixup page table offset
 6Ch	DWORD	Fixup record table offset (see #01618)
 70h	DWORD	imported modules name table offset
 74h	DWORD	imported modules count
 78h	DWORD	imported procedures name table offset
 7Ch	DWORD	per-page checksum table offset
 80h	DWORD	data pages offset
 84h	DWORD	preload page count
 88h	DWORD	non-resident names table offset
 8Ch	DWORD	non-resident names table length
 90h	DWORD	non-resident names checksum
 94h	DWORD	automatic data object
 98h	DWORD	debug information offset
 9Ch	DWORD	debug information length
 A0h	DWORD	preload instance pages number
 A4h	DWORD	demand instance pages number
 A8h	DWORD	extra heap allocation
 ACh 12 BYTEs	reserved
 B8h	DWORD	offset of VERSIONINFO resource (MS-Windows VxD only)
 BCh	DWORD	pointer to ??? (dynamically-loadable VxDs only???)
 C0h	WORD	device ID (MS-Windows VxD only)
 C2h	WORD	DDK version (MS-Windows VxD only)
Note:	used by EMM386.EXE, QEMM, and Windows 3.0 Enhanced Mode drivers

Bitfields for Linear Executable module type:
Bit(s)	Description	(Table 01610)
 2	initialization (only for DLLs) 0 = global, 1 = per-process
 4	no internal fixups in executable image
 5	no external fixups in executable image
 8-10	API compatibility
	0 = unknown
	1 = incompatible with PM windowing \
	2 = compatible with PM windowing    > (only for
	3 = uses PM windowing API	   /	programs)
 13	module not loadable (only for programs)
 15-17	module type
	000 program
	001 library (DLL)
	011 protected memory library module
	100 physical device driver
	110 virtual device driver
 30	per-process library termination
	(requires valid CS:EIP, can't be set for .EXE)

Format of object table entry:
Offset	Size	Description	(Table 01611)
 00h	DWORD	virtual size in bytes
 04h	DWORD	relocation base address
 08h	DWORD	object flags (see #01612)
 0Ch	DWORD	page map index
 10h	DWORD	page map entries (see #01613)
 14h  4 BYTEs	reserved??? (apparently always zeros)

Bitfields for object flags:
Bit(s)	Description	(Table 01612)
 0	readable
 1	writable
 2	executable
 3	resource
 4	discardable
 5	shared
 6	preloaded
 7	invalid
 8-9	type
	00 normal
	01 zero-filled
	10 resident
	11 resident and contiguous
 10	resident and long-lockable
 11	reserved
 12	16:16 alias required
 13	"BIG" (Huge: 32-bit)
 14	conforming
 15	"OBJECT_I/O_PRIVILEGE_LEVEL"
 16-31	reserved

Format of object page map table entry:
Offset	Size	Description	(Table 01613)
 00h	BYTE	??? (usually 00h)
 01h	WORD	(big-endian) index to fixup table
		0000h if no relocation info
 03h	BYTE	type (00h hard copy in file, 03h some relocation needed)

Format of resident names table entry:
Offset	Size	Description	(Table 01614)
 00h	BYTE	length of name
 01h  N BYTEs	name
 N+1  3 BYTEs	???

Format of LE linear executable entry table:
Offset	Size	Description	(Table 01615)
 00h	BYTE	number of entries in table
 01h 10 BYTEs per entry
		Offset	Size	Description
		 00h	BYTE	bit flags
				bit 0: non-empty bundle
				bit 1: 32-bit entry
		 01h	WORD	object number
		 03h	BYTE	entry type flags
				bit 0: exported
				bit 1: uses single data rather than instance
				bit 2: reserved
				bits 3-7: number of stack parameters
		 04h	DWORD	offset of entry point
		 08h  2 BYTEs	???
Note:	empty bundles (bit flags at 00h = 00h) are used to skip unused indices,
	  and do not contain the remaining nine bytes

Format of LX linear executable entry table [array]:
Offset	Size	Description	(Table 01616)
 00h	BYTE	number of bundles following (00h = end of entry table)
 01h	BYTE	bundle type
		00h empty
		01h 16-bit entry
		02h 286 callgate entry
		03h 32-bit entry
		04h forwarder entry
		bit 7 set if additional parameter typing information is present
---bundle type 00h---
 no additional fields
---bundle type 01h---
 02h	WORD	object number
 04h	BYTE	entry flags
		bit 0: exported
		bits 7-3: number of stack parameters
 05h	WORD	offset of entry point in object (shifted by page size shift)
---bundle type 02h---
 02h	WORD	object number
 04h	BYTE	entry flags
		bit 0: exported
		bits 7-3: number of stack parameters
 05h	WORD	offset of entry point in object
 07h	WORD	reserved for callgate selector (used by loader)
---bundle type 03h---
 02h	WORD	object number
 04h	BYTE	entry flags
		bit 0: exported
		bits 7-3: number of stack parameters
 05h	DWORD	offset of entry point in object
---bundle type 04h---
 02h	WORD	reserved
 04h	BYTE	forwarder flags
		bit 0: import by ordinal
		bits 7-1 reserved
 05h	WORD	module ordinal
		(forwarder's index into Import Module Name table)
 07h	DWORD	procedure name offset or import ordinal number
Note:	all fields after the first two bytes are repeated N times

Bitfields for linear executable fixup type:
Bit(s)	Description	(Table 01617)
 7	ordinal is BYTE rather than WORD
 6	16-rather than 8-object number/module ordinal
 5	addition with DWORD rather than WORD
 4	relocation info has size with new two bytes at end
 3	reserved (0)
 2	set if add to destination, clear to replace destination
 1-0	type
	00 internal fixup
	01 external fixup, imported by ordinal
	10 external fixup, imported by name
	11 internal fixup via entry table

Format of linear executable fixup record:
Offset	Size	Description	(Table 01618)
 00h	BYTE	type
		bits 7-4: modifier (0001 single, 0011 multiple)
		bits 3-0: type
			0000 byte offset
			0010 word segment
			0011 16-bit far pointer (DWORD)
			0101 16-bit offset
			0110 32-bit far pointer (PWORD)
			0111 32-bit offset
			1000 near call or jump, WORD/DWORD based on seg attrib
 01h	BYTE	linear executable fixup type (see #01617)
---if single type---
 02h	WORD	offset within page
 04h	relocation information
	---internal fixup---
	BYTE	object number
	---external,ordinal---
	BYTE	one-based module number in Import Module table
	BYTE/WORD ordinal number
	WORD/DWORD value to add (only present if modifier bit 4 set)
	---external,name---
	BYTE	one-based module number in Import Module table
	WORD	offset in Import Procedure names
	WORD/DWORD value to add (only present if modifier bit 4 set)
---if multiple type---
 02h	BYTE	number of items
 03h	var	relocation info as for "single" type (above)
      N WORDs	offsets of items to relocate

Format of old Phar Lap .EXP file header:
Offset	Size	Description	(Table 01619)
 00h  2 BYTEs	"MP" (4Dh 50h) signature
 02h	WORD	remainder of image size / page size (page size = 512h)
 04h	WORD	size of image in pages
 06h	WORD	number of relocation items
 08h	WORD	header size in paragraphs
 0Ah	WORD	minimum number of extra 4K pages to be allocated at the end
		  of program, when it is loaded
 0Ch	WORD	maximum number of extra 4K pages to be allocated at the end
		  of program, when it is loaded
 0Eh	DWORD	initial ESP
 12h	WORD	word checksum of file
 14h	DWORD	initial EIP
 18h	WORD	offset of first relocation item
 1Ah	WORD	overlay number
 1Ch	WORD	??? (wants to be 1)
SeeAlso: #01620

Format of new Phar Lap .EXP file header:
Offset	Size	Description	(Table 01620)
 00h  2 BYTEs	signature ("P2" for 286 .EXP executable, "P3" for 386 .EXP)
 02h	WORD	level (01h flat-model file, 02h multisegmented file)
 04h	WORD	header size
 06h	DWORD	file size in bytes
 0Ah	WORD	checksum
 0Ch	DWORD	offset of run-time parameters within file (see #01622)
 10h	DWORD	size of run-time parameters in bytes
 14h	DWORD	offset of relocation table within file
 18h	DWORD	size of relocation table in bytes
 1Ch	DWORD	offset of segment information table within file (see #01621)
 20h	DWORD	size of segment information table in bytes
 24h	WORD	size of segment information table entry in bytes
 26h	DWORD	offset of load image within file
 2Ah	DWORD	size of load image on disk
 2Eh	DWORD	offset of symbol table within file or 00000000h
 32h	DWORD	size of symbol table in bytes
 36h	DWORD	offset of GDT within load image
 3Ah	DWORD	size of GDT in bytes
 3Eh	DWORD	offset of LDT within load image
 42h	DWORD	size of LDT in bytes
 46h	DWORD	offset of IDT within load image
 4Ah	DWORD	size of IDT in bytes
 4Eh	DWORD	offset of TSS within load image
 52h	DWORD	size of TSS in bytes
 56h	DWORD	minimum number of extra bytes to be allocated at end of program
		(level 1 executables only)
 5Ah	DWORD	maximum number of extra bytes to be allocated at end of program
		(level 1 executables only)
 5Eh	DWORD	base load offset (level 1 executables only)
 62h	DWORD	initial ESP
 66h	WORD	initial SS
 68h	DWORD	initial EIP
 6Ch	WORD	initial CS
 6Eh	WORD	initial LDT
 70h	WORD	initial TSS
 72h	WORD	flags
		bit 0: load image is packed
		bit 1: 32-bit checksum is present
		bits 4-2: type of relocation table
 74h	DWORD	memory requirements for load image
 78h	DWORD	32-bit checksum (optional)
 7Ch	DWORD	size of stack segment in bytes
 80h 256 BYTEs	reserved (0)
SeeAlso: #01619,#01623

Format of Phar Lap segment information table entry:
Offset	Size	Description	(Table 01621)
 00h	WORD	selector number
 02h	WORD	flags
 04h	DWORD	base offset of selector
 08h	DWORD	minimum number of extra bytes to be allocated to the segment

Format of 386|DOS-Extender run-time parameters:
Offset	Size	Description	(Table 01622)
 00h  2 BYTEs	signature "DX" (44h 58h)
 02h	WORD	minimum number of real-mode params to leave free at run time
 04h	WORD	maximum number of real-mode params to leave free at run time
 06h	WORD	minimum interrupt buffer size in KB
 08h	WORD	maximum interrupt buffer size in KB
 0Ah	WORD	number of interrupt stacks
 0Ch	WORD	size in KB of each interrupt stack
 0Eh	DWORD	offset of byte past end of real-mode code and data
 12h	WORD	size in KB of call buffers
 14h	WORD	flags
		bit 0: file is virtual memory manager
		bit 1: file is a debugger
 16h	WORD	unprivileged flag (if nonzero, executes at ring 1, 2, or 3)
 18h 104 BYTEs	reserved (0)

Format of Phar Lap repeat block header:
Offset	Size	Description	(Table 01623)
 00h	WORD	byte count
 02h	BYTE	repeat string length

Format of Borland debugging information header (following load image):
Offset	Size	Description	(Table 01624)
 00h	WORD	signature 52FBh
 02h	WORD	version ID
 04h	DWORD	size of name pool in bytes
 08h	WORD	number of names in name pool
 0Ah	WORD	number of type entries
 0Ch	WORD	number of structure members
 0Eh	WORD	number of symbols
 10h	WORD	number of global symbols
 12h	WORD	number of modules
 14h	WORD	number of locals (optional)
 16h	WORD	number of scopes in table
 18h	WORD	number of line-number entries
 1Ah	WORD	number of include files
 1Ch	WORD	number of segment records
 1Eh	WORD	number of segment/file correlations
 20h	DWORD	size of load image after removing uninitialized data and debug
		  information
 24h	DWORD	debugger hook; pointer into debugged program whose meaning
		  depends on program flags
 28h	BYTE	program flags
		bit 0: case-sensitive link
		bit 1: pascal overlay program
 29h	WORD	no longer used
 2Bh	WORD	size of data pool in bytes
 2Dh	BYTE	padding
 2Eh	WORD	size of following header extension (currently 00h, 10h, or 20h)
 30h	WORD	number of classes
 32h	WORD	number of parents
 34h	WORD	number of global classes (currently unused)
 36h	WORD	number of overloads (currently unused)
 38h	WORD	number of scope classes
 3Ah	WORD	number of module classes
 3Ch	WORD	number of coverage offsets
 3Eh	DWORD	offset relative to symbol base of name pool
 42h	WORD	number of browser information records
 44h	WORD	number of optimized symbol records
 46h	WORD	debugging flags
 48h  8 BYTEs	padding
Note:	additional information on the Borland debugging info may be found in
	  Borland's Open Architecture Handbook
SeeAlso: #01600

Top
214B - INT 21 - ELRES v1.0 only - INSTALLATION CHECK
INT 21 - ELRES v1.0 only - INSTALLATION CHECK
	AH = 4Bh
	DS:DX = 0000h:0000h
Return: ES:BX -> ELRES history structure (see #01381 at AH=2Bh/CX=454Ch)
	DX = DABEh (signature, DAve BEnnett)
Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
	  Bennett
SeeAlso: AH=2Bh/CX=454Ch

Top
214B04 - INT 21 - VIRUS - "MG", "699"/"Thirteen Minutes" - INSTALLATION CHECK
INT 21 - VIRUS - "MG", "699"/"Thirteen Minutes" - INSTALLATION CHECK
	AX = 4B04h
Return: CF clear if "MG" resident
	AX = 044Bh if "699"/"Thirteen Minutes" resident
SeeAlso: AX=4243h,AH=4Ah/BX=FFFFh,AX=4B21h

Top
214B05 - INT 21 - DOS 5+ - SET EXECUTION STATE
INT 21 - DOS 5+ - SET EXECUTION STATE
	AX = 4B05h
	DS:DX -> execution state structure (see #01625)
Return: CF clear if successful
	    AX = 0000h
	CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
Note:	used by programs which intercept AX=4B00h to prepare new programs for
	  execution (including setting the DOS version number).	 No DOS, BIOS
	  or other software interrupt may be called after return from this call
	  before commencement of the child process.  If DOS is running in the
	  HMA, A20 is turned off on return from this call.
SeeAlso: AH=4Bh

Format of execution state structure:
Offset	Size	Description	(Table 01625)
 00h	WORD	reserved (00h)
 02h	WORD	type flags
		bit 0: program is an .EXE
		bit 1: program is an overlay
 04h	DWORD	pointer to ASCIZ name of program file
 08h	WORD	PSP segment of new program
 0Ah	DWORD	starting CS:IP of new program
 0Eh	DWORD	program size including PSP

Top
214B18DX0010 - INT 21 U - FBOOT v2.13 - PERFORM FAST BOOTSTRAP
INT 21 U - FBOOT v2.13 - PERFORM FAST BOOTSTRAP
	AX = 4B18h
	DX = 0010h
	BX = disk selector
	    0000h boot from floppy
	    0080h boot from hard disk
Return: never if FastBoot installed
Program: CyberWare FastBoot allows fast warm boots by skipping CMOS
	  checking, ROM scan, RAM & peripheral components test
InstallCheck:	search for a character device driver called "FBOOT$$$"

Top
214B20 - INT 21 - VIRUS - "Holocaust"/"Telefonica" - ???
INT 21 - VIRUS - "Holocaust"/"Telefonica" - ???
	AX = 4B20h
SeeAlso: AX=4B04h,AX=4B21h

Top
214B21 - INT 21 C - VIRUS - "Holocaust"/"Telefonica" - ???
INT 21 C - VIRUS - "Holocaust"/"Telefonica" - ???
	AX = 4B21h
Note:	called at completion of virus installation
SeeAlso: AX=4B04h,AX=4B20h,AX=4B25h

Top
214B25 - INT 21 - VIRUS - "1063"/"Mono" - INSTALLATION CHECK
INT 21 - VIRUS - "1063"/"Mono" - INSTALLATION CHECK
	AX = 4B25h
Return: DI = 1234h if resident
SeeAlso: AX=4B21h,AX=4B40h

Top
214B40 - INT 21 - VIRUS - "Plastique"/"AntiCad" - INSTALLATION CHECK
INT 21 - VIRUS - "Plastique"/"AntiCad" - INSTALLATION CHECK
	AX = 4B40h
Return: AX = 5678h if resident
SeeAlso: AX=4B25h,AX=4B41h,AX=4B4Ah

Top
214B41 - INT 21 - VIRUS - "Plastique"/"AntiCad" - ???
INT 21 - VIRUS - "Plastique"/"AntiCad" - ???
	AX = 4B41h
	???
Return: ???
SeeAlso: AX=4B40h

Top
214B4A - INT 21 - VIRUS - "Jabberwocky" - INSTALLATION CHECK
INT 21 - VIRUS - "Jabberwocky" - INSTALLATION CHECK
	AX = 4B4Ah
Return: AL = 57h if resident
SeeAlso: AX=4B40h,AX=4B4Bh

Top
214B4B - INT 21 - VIRUS - "Horse-2" - INSTALLATION CHECK
INT 21 - VIRUS - "Horse-2" - INSTALLATION CHECK
	AX = 4B4Bh
Return: CF clear if resident
SeeAlso: AX=4B4Ah,AX=4B4Dh

Top
214B4D - INT 21 - VIRUS - "Murphy-2", "Patricia"/"Smack" - INSTALLATION CHECK
INT 21 - VIRUS - "Murphy-2", "Patricia"/"Smack" - INSTALLATION CHECK
	AX = 4B4Dh
Return: CF clear if resident
SeeAlso: AX=4B4Ah,AX=4B50h

Top
214B50 - INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - INSTALLATION CHECK
INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - INSTALLATION CHECK
	AX = 4B50h
Return: AX = 1234h if resident
SeeAlso: AX=4B4Dh,AX=4B53h,AX=4B60h

Top
214B53 - INT 21 - VIRUS - "Horse" - INSTALLATION CHECK
INT 21 - VIRUS - "Horse" - INSTALLATION CHECK
	AX = 4B53h
Return: CF clear if resident
SeeAlso: AX=4B50h,AX=4B53h/BX=2121h,AX=4B55h

Top
214B53BX2121 - INT 21 - VIRUS - "One Half" - INSTALLATION CHECK
INT 21 - VIRUS - "One Half" - INSTALLATION CHECK
	AX = 4B53h
	BX = 2121h
	CX = 1212h
	DX = 0236h
Return: AX = 454Bh if installed
SeeAlso: AX=4B50h,AX=4B53h,AX=4B55h

Top
214B55 - INT 21 - VIRUS - "Sparse" - INSTALLATION CHECK
INT 21 - VIRUS - "Sparse" - INSTALLATION CHECK
	AX = 4B55h
Return: AX = 1231h if resident
SeeAlso: AX=4B53h,AX=4B59h

Top
214B59 - INT 21 - VIRUS - "Murphy-1", "Murphy-4" - INSTALLATION CHECK
INT 21 - VIRUS - "Murphy-1", "Murphy-4" - INSTALLATION CHECK
	AX = 4B59h
Return: CF clear if resident
SeeAlso: AX=4B50h,AX=4B5Eh

Top
214B5E - INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
	AX = 4B5Eh
Return: CF clear if resident
SeeAlso: AX=4B59h,AX=4B87h

Top
214B60 - INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - ???
INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - ???
	AX = 4B60h
	???
Return: ???
SeeAlso: AX=4B50h

Top
214B80 - INT 21 - DR DOS v3.31+ - RUN ALREADY-LOADED KERNEL FILE
INT 21 - DR DOS v3.31+ - RUN ALREADY-LOADED KERNEL FILE
	AX = 4B80h
	DS:DX -> ASCIZ name of program to EXEC
	ES = segment of PSP for kernel file
Return: only if call failed
Note:	DR DOS uses this call after an AX=4B01h to load the kernel file into
	  memory and patch the program's parent-PSP field to point at itself
SeeAlso: AH=4Bh"EXEC"

Top
214B87 - INT 21 - VIRUS - "Shirley" - INSTALLATION CHECK
INT 21 - VIRUS - "Shirley" - INSTALLATION CHECK
	AX = 4B87h
Return: AX = 6663h if resident
SeeAlso: AX=4B5Eh,AX=4B95h

Top
214B95 - INT 21 - VIRUS - "Zherkov-1882" - INSTALLATION CHECK
INT 21 - VIRUS - "Zherkov-1882" - INSTALLATION CHECK
	AX = 4B95h
Return: AX = 1973h if resident
SeeAlso: AX=4B87h,AX=4BA7h

Top
214BA7 - INT 21 - VIRUS - "1876"/"Dash-em" - INSTALLATION CHECK
INT 21 - VIRUS - "1876"/"Dash-em" - INSTALLATION CHECK
	AX = 4BA7h
Return: AX = B459h if resident
SeeAlso: AX=4B95h,AX=4BAAh

Top
214BAA - INT 21 - VIRUS - "Nomenklatura" - INSTALLATION CHECK
INT 21 - VIRUS - "Nomenklatura" - INSTALLATION CHECK
	AX = 4BAAh
Return: CF clear if resident
SeeAlso: AX=4BA7h,AX=4BAFh

Top
214BAF - INT 21 - VIRUS - "948"/"Screenplus1", "Magnitogorsk" - INSTALLATION CHECK
INT 21 - VIRUS - "948"/"Screenplus1", "Magnitogorsk" - INSTALLATION CHECK
	AX = 4BAFh
Return: AL = AFh if "Magnitogorsk" resident
	AL = FAh if "948"/"Screenplus1" resident
SeeAlso: AX=4BAAh,AX=4BB1h"VIRUS"

Top
214BB1 - INT 21 - VIRUS - "UZZY" -INSTALLATION CHECK
INT 21 - VIRUS - "UZZY" -INSTALLATION CHECK
	AX = 4BB1h
Return: CL = 04h if resident
SeeAlso: AX=4BAFh"VIRUS",AX=4BDDh"VIRUS"

Top
214BDD - INT 21 - VIRUS - "Lozinsky"/"Zherkov" - INSTALLATION CHECK
INT 21 - VIRUS - "Lozinsky"/"Zherkov" - INSTALLATION CHECK
	AX = 4BDDh
Return: AX = 1234h
SeeAlso: AX=4BB1h"VIRUS",AX=4BFEh

Top
214BEE - INT 21 - F-DRIVER.SYS v1.14+ - GRAB INT 21
INT 21 - F-DRIVER.SYS v1.14+ - GRAB INT 21
	AX = 4BEEh
Return: AX = status
	    1234h grab was successful
	    2345h failed (INT 21 grabbed previously)
Program: F-DRIVER.SYS is part of the shareware F-PROT virus/trojan protection
	  package by Fridrik Skulason
Note:	when called the first time, this function moves the INT 21 monitoring
	  code from its original location in the INT 21 chain to be the first
	  thing called by INT 21.  This is the mechanism used by F-NET.
SeeAlso: INT 2F/AX=4653h/CX=0002h,INT 2F/AX=4653h/CX=0007h

Top
214BF0 - INT 21 - DIET v1.10+ (Overlay Mode) - INSTALLATION CHECK
INT 21 - DIET v1.10+ (Overlay Mode) - INSTALLATION CHECK
	AX = 4BF0h
Return: CF clear if installed
	    AX = 899Dh
Program: DIET is an executable-compression program by Teddy Matsumoto
SeeAlso: AX=37D0h,AX=4BF1h

Top
214BF1 - INT 21 - DIET v1.10+ (Overlay Mode) - EXPAND PROGRAM???
INT 21 - DIET v1.10+ (Overlay Mode) - EXPAND PROGRAM???
	AX = 4BF1h
Return: ???
SeeAlso: AX=37D0h,AX=4BF0h

Top
214BF1 - INT 21 - VIRUS - "Jerusalem 2" - INSTALLATION CHECK
INT 21 - VIRUS - "Jerusalem 2" - INSTALLATION CHECK
	AX = 4BF1h
Return: AX = 1FB4h if resident
SeeAlso: AH=3Fh/BX=FEB0h"VIRUS",AX=4BDDh"VIRUS",AX=4BFEh"VIRUS"

Top
214BFE - INT 21 - VIRUS - "Hitchcock", "Dark Avenger-1028", "1193" - INSTALLATION CHECK
INT 21 - VIRUS - "Hitchcock", "Dark Avenger-1028", "1193" - INSTALLATION CHECK
	AX = 4BFEh
Return: AX = 1234h if "Hitchcock" or "Storm" resident
	AX = ABCDh if "1193"/"Copyright" resident
	DI = 55BBh if "Dark Avenger-1028" resident
SeeAlso: AX=4BDDh,AX=4BF1h"VIRUS",AX=4BFFh"Justice"

Top
214BFF - INT 21 - VIRUS - "USSR-707", "Justice", "Europe 92" - INSTALLATION CHECK
INT 21 - VIRUS - "USSR-707", "Justice", "Europe 92" - INSTALLATION CHECK
	AX = 4BFFh
Return: BL = FFh if "USSR-707" resident
	DI = 55AAh if "Justice" resident
	AX = 1234h if "Hitchcock.1238" resident
	CF clear if "Europe 92" resident
SeeAlso: AX=4BFEh,AX=4BFFh"Cascade",AX=5252h

Top
214BFFSI0000 - INT 21 - VIRUS - "Cascade" - INSTALLATION CHECK
INT 21 - VIRUS - "Cascade" - INSTALLATION CHECK
	AX = 4BFFh
	SI = 0000h
	DI = 0000h
Return: DI = 55AAh if installed
SeeAlso: AX=4BFFh"Justice",AX=5252h

Top
214C - INT 21 - DOS 2+ - "EXIT" - TERMINATE WITH RETURN CODE
INT 21 - DOS 2+ - "EXIT" - TERMINATE WITH RETURN CODE
	AH = 4Ch
	AL = return code
Return: never returns
Notes:	unless the process is its own parent
	  (see #01378 [offset 16h] at AH=26h), all open files are closed and
	  all memory belonging to the process is freed
	all network file locks should be removed before calling this function
SeeAlso: AH=00h,AH=26h,AH=4Bh,AH=4Dh,INT 15/AH=12h/BH=02h,INT 20,INT 22
SeeAlso: INT 60/DI=0601h

Top
214C57 - INT 21 - Headroom - ???
INT 21 - Headroom - ???
	AX = 4C57h
	DS:DX -> target address
Note:	jumps to target address instead of terminating program
SeeAlso: AX=5758h

Top
214D - INT 21 - DOS 2+ - GET RETURN CODE (ERRORLEVEL)
INT 21 - DOS 2+ - GET RETURN CODE (ERRORLEVEL)
	AH = 4Dh
Return: AH = termination type
	    00h normal (INT 20,INT 21/AH=00h, or INT 21/AH=4Ch)
	    01h control-C abort
	    02h critical error abort
	    03h terminate and stay resident (INT 21/AH=31h or INT 27)
	AL = return code
	CF clear
Notes:	the word in which DOS stores the return code is cleared after being
	  read by this function, so the return code can only be retrieved once
	COMMAND.COM stores the return code of the last external command it
	  executed as ERRORLEVEL
	this call should not be used if the child was started with AX=4B04h;
	  use AH=8Ah instead
	the following sequence will close a Virtual DOS Machine under OS/2 2.0
	  through OS/2 Merlin (but may change in the future):
	    MOV	AH,4Dh
	    INT	21h
	    HLT
	    DB	02h,0FDh
	  This sequence is the only way to close a specific VDM which was
	  booted from floppy or a disk image.
SeeAlso: AH=4Bh,AH=4Ch,AH=8Ah

Top
214E - INT 21 - DOS 2+ - "FINDFIRST" - FIND FIRST MATCHING FILE
INT 21 - DOS 2+ - "FINDFIRST" - FIND FIRST MATCHING FILE
	AH = 4Eh
	AL = special flag for use by APPEND (refer to note below)
	CX = file attribute mask (see #01420 at AX=4301h) (bits 0 and 5 ignored)
	    0088h (Novell DOS 7) find first deleted file
	DS:DX -> ASCIZ file specification (may include path and wildcards)
Return: CF clear if successful
	    Disk Transfer Area filled with FindFirst data block (see #01626)
	CF set on error
	    AX = error code (02h,03h,12h) (see #01680 at AH=59h/BX=0000h)
Notes:	for search attributes other than 08h, all files with at MOST the
	  specified combination of hidden, system, and directory attributes
	  will be returned.  Under DOS 2.x, searching for attribute 08h
	  (volume label) will also return normal files, while under DOS 3.0+
	  only the volume label (if any) will be returned.
	this call also returns successfully if given the name of a character
	  device without wildcards.  DOS 2.x returns attribute 00h, size 0,
	  and the current date and time.  DOS 3.0+ returns attribute 40h and
	  the current date and time.
	immediately after an INT 2F/AX=B711h (APPEND return found name), the
	  name at DS:DX will be overwritten; if AL=00h on entry, the actual
	  found pathname will be stored, otherwise, the actual found path
	  will be prepended to the original filespec without a path.
	under LANtastic, this call may be used to obtain a list of a server's
	  shared resources by searching for "\\SERVER\*.*"; a list of printer
	  resources may be obtained by searching for "\\SERVER\@*.*"
	under the FlashTek X-32 DOS extender, the filespec pointer is in DS:EDX
BUGS:	under DOS 3.x and 4.x, the second and subsequent calls to this function
	  with a character device name (no wildcards) and search attributes
	  which include the volume-label bit (08h) will fail unless there is
	  an intervening DOS call which implicitly or explicity performs a
	  directory search without the volume-label bit.  Such implicit
	  searches are performed by CREATE (AH=3Ch), OPEN (AH=3Dh), UNLINK
	  (AH=41h), and RENAME (AH=56h)
	DR DOS 3.41 and 5.0 return the Directory attribute for the volume label
SeeAlso: AH=11h,AH=4Fh,AX=4301h,AX=714Eh,AX=71A1h,AX=F257h/SF=02h
SeeAlso: INT 2F/AX=111Bh,INT 2F/AX=B711h

Format of FindFirst data block:
Offset	Size	Description	(Table 01626)
---PC-DOS 3.10, PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
 00h	BYTE	drive letter (bits 0-6), remote if bit 7 set
 01h 11 BYTEs	search template
 0Ch	BYTE	search attributes
---DOS 2.x (and some DOS 3.x???)---
 00h	BYTE	search attributes
 01h	BYTE	drive letter
 02h 11 BYTEs	search template
---WILDUNIX.COM---
 00h 12 BYTEs	15-character wildcard search pattern and drive letter (packed)
 0Ch	BYTE	search attributes
---DOS 2.x and most 3.x---
 0Dh	WORD	entry count within directory
 0Fh	DWORD	pointer to DTA???
 13h	WORD	cluster number of start of parent directory
---PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
 0Dh	WORD	entry count within directory
 0Fh	WORD	cluster number of start of parent directory
 11h  4 BYTEs	reserved
---OS/2 MVDM---
 00h	WORD	"OS2_BMP_handle"
 02h	WORD	"OS2_LastEnt"
 04h	DWORD	"OS2_Checksum"
 08h	BYTE	"OS2_usi_flag"
 09h	DWORD	used by DOS emulator for second pass for volume-label searches
 0Dh	WORD	(ret) "DOS_LastEnt" entry count within directory
 0Fh	BYTE	OS/2 Processed-FindFirst flag
		00h FindFirst processed by DOS
		42h FindFirst processed by OS/2
 10h  5 BYTEs	reserved for future use
---all versions, documented fields---
 15h	BYTE	attribute of file found
 16h	WORD	file time (see #01665 at AX=5700h)
 18h	WORD	file date (see #01666 at AX=5700h)
 1Ah	DWORD	file size
 1Eh 13 BYTEs	ASCIZ filename+extension

Top
214E - INT 21 - WILDUNIX.COM internal - INSTALLATION CHECK
INT 21 - WILDUNIX.COM internal - INSTALLATION CHECK
	AH = 4Eh
	DS:DX = 0000h:0000h
Return: AH = 99h if installed
Program: WILDUNIX.COM is a resident Unix-style wildcard expander by Steve
	  Hosgood and Terry Barnaby

Top
214F - INT 21 - DOS 2+ - "FINDNEXT" - FIND NEXT MATCHING FILE
INT 21 - DOS 2+ - "FINDNEXT" - FIND NEXT MATCHING FILE
	AH = 4Fh
	Disk Transfer Area contains data block from previous FindFirst or
	  FindNext call
Return: CF clear if successful
	    Disk Transfer Area updated
	CF set on error
	    AX = error code (12h) (see #01680 at AH=59h/BX=0000h)
Notes:	under Novell DOS 7, if the FindFirst call (AH=4Eh) had CX=0088h, then
	  the next matching deleted file will be returned
	since the entire state of a FindFirst/FindNext sequence is contained
	  in the data block in the DTA, other disk operations such as renaming,
	  moving, deleting, or creating files can cause inaccurate directory
	  searches, such as finding the same file twice
BUG:	DR DOS 3.41 and 5.0 return the Directory attribute for the volume label
SeeAlso: AH=12h,AH=4Eh,AX=714Fh,AX=71A1h

Top
2150 - INT 21 - DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS)
INT 21 - DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS)
	AH = 50h
	BX = segment of PSP for new process
Notes:	DOS uses the current PSP address to determine which processes own files
	  and memory; it corresponds to process identifiers used by other OSs
	under DOS 2.x, this function cannot be invoked inside an INT 28h
	  handler without setting the Critical Error flag
	under MS-DOS 3.0+ and DR DOS 3.41+, 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
	some Microsoft applications such as Quick C 2.51 use segments of 0000h
	  and FFFFh and direct access to the SDA (see #01687 at AX=5D06h) to
	  test whether they are running under MS-DOS rather than a compatible
	  OS; although one should only call this function with valid PSP
	  addresses, any program hooking it should be prepared to handle
	  invalid addresses
	this function is supported by the OS/2 compatibility box
	this call was undocumented prior to the release of DOS 5.0
SeeAlso: AH=26h,AH=51h,AH=62h

Top
2150FD - INT 21 - VIRUS - "Predator 2" - INSTALLATION CHECK
INT 21 - VIRUS - "Predator 2" - INSTALLATION CHECK
	AX = 50FDh
Return: AX = FD50h if resident
SeeAlso: AX=4BFFh"VIRUS",AX=5454h"VIRUS"

Top
2151 - INT 21 - DOS 2+ internal - GET CURRENT PROCESS ID (GET PSP ADDRESS)
INT 21 - DOS 2+ internal - GET CURRENT PROCESS ID (GET PSP ADDRESS)
	AH = 51h
Return: BX = segment of PSP for current process
Notes:	DOS uses the current PSP address to determine which processes own files
	  and memory; it corresponds to process identifiers used by other OSs
	under DOS 2.x, this function cannot be invoked inside an INT 28h
	  handler without setting the Critical Error flag
	under DOS 3.0+, 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
	supported by OS/2 compatibility box
	identical to the documented AH=62h
	this call was undocumented prior to the release of DOS 5.0
SeeAlso: AH=26h,AH=50h,AH=62h

Top
2152 - INT 21 U - DOS 2+ internal - "SYSVARS" - GET LIST OF LISTS
INT 21 U - DOS 2+ internal - "SYSVARS" - GET LIST OF LISTS
	AH = 52h
Return: ES:BX -> DOS list of lists (see #01627)
Notes:	partially supported by OS/2 v1.1 compatibility box (however, most
	  pointers are FFFFh:FFFFh, LASTDRIVE is FFh, and the NUL header "next"
	  pointer is FFFFh:FFFFh).
	partially supported by the Windows NT DOS box; contains only a
	  rudimentary Current Directory Structure (see #01645)
	on return, ES points at the DOS data segment (see also INT 2F/AX=1203h)
	Quarterdeck's suggested check for the use of its DOSDATA.SYS or
	  DOS-UP.SYS is to test whether the list-of-lists segment is greater
	  than the segment of the first memory block; a better check for
	  DOS-UP.SYS is INT 21/AX=2B01h/CX=444Dh
	because not all DOS workalikes support all fields in the List of Lists,
	  applications should ensure that pointers are neither 0000h:0000h
	  nor FFFFh:FFFFh before using them
	Windows for Workgroups 3.11 network and Windows95 set the path to
	  the local drive and directory even for network drives; in that
	  case the UNC form \\SERVER\SHARE can be obtained with
	  INT 21/AX=5F02h or INT 21/AX=5F46h. LapLink RemoteAccess does the
	  same even for INT 21/AX=5F02h
	Windows95 GUI no longer returns the true path for a SUBSTed drive,
	  but MS-DOS 7.00 does; use INT 21/AH=60h to obtain the true name
SeeAlso: INT 2F/AX=1203h

Format of List of Lists:
Offset	Size	Description	(Table 01627)
 -24	WORD	(DOS 3.1+) contents of CX from INT 21/AX=5E01h
 -22	WORD	(DOS ???+) LRU counter for FCB caching
 -20	WORD	(DOS ???+) LRU counter for FCB opens
 -18	DWORD	(DOS ???+) address of OEM function handler (see INT 21/AH=F8h)
			FFFFh:FFFFh if not installed or not available
 -14	WORD	(DOS ???+) offset in DOS CS of code to return from INT 21 call
 -12	WORD	(DOS 3.1+) sharing retry count (see AX=440Bh)
 -10	WORD	(DOS 3.1+) sharing retry delay (see AX=440Bh)
 -8	DWORD	(DOS 3.0+) pointer to current disk buffer
 -4	WORD	(DOS 3.0+) pointer in DOS data segment of unread CON input
		when CON is read via a handle, DOS reads an entire line,
		  and returns the requested portion, buffering the rest
		  for the next read.  0000h indicates no unread input
 -2	WORD	segment of first memory control block (see #01628)
 00h	DWORD	pointer to first Drive Parameter Block (see #01395 at AH=32h)
 04h	DWORD	-> first System File Table (see #01639,#01640,#01641,#01642)
 08h	DWORD	pointer to active CLOCK$ device's header (most recently loaded
		  driver with CLOCK bit set)
 0Ch	DWORD	pointer to active CON device's header (most recently loaded
		  driver with STDIN bit set)
---DOS 2.x---
 10h	BYTE	number of logical drives in system
 11h	WORD	maximum bytes/block of any block device
 13h	DWORD	pointer to first disk buffer (see #01649,#01650)
 17h 18 BYTEs	actual NUL device driver header (not a pointer!)
		NUL is always the first device on DOS's linked list of device
		  drivers. (see #01646)
---DOS 3.0---
 10h	BYTE	number of block devices
 11h	WORD	maximum bytes/block of any block device
 13h	DWORD	pointer to first disk buffer (see #01650,#01652)
 17h	DWORD	pointer to array of current directory structures (see #01643)
 1Bh	BYTE	value of LASTDRIVE command in CONFIG.SYS (default 5)
 1Ch	DWORD	pointer to STRING= workspace area
 20h	WORD	size of STRING area (the x in STRING=x from CONFIG.SYS)
 22h	DWORD	pointer to FCB table
 26h	WORD	the y in FCBS=x,y from CONFIG.SYS
 28h 18 BYTEs	actual NUL device driver header (not a pointer!)
		NUL is always the first device on DOS's linked list of device
		  drivers. (see #01646)
---DOS 3.1-3.3---
 10h	WORD	maximum bytes per sector of any block device
 12h	DWORD	pointer to first disk buffer in buffer chain (see #01650)
 16h	DWORD	pointer to array of current directory structures (see #01643)
 1Ah	DWORD	pointer to system FCB tables (see #01640,#01641,#01642)
 1Eh	WORD	number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
 20h	BYTE	number of block devices installed
 21h	BYTE	number of available drive letters (largest of 5, installed
		  block devices, and CONFIG.SYS LASTDRIVE=).  Also size of
		  current directory structure array.
 22h 18 BYTEs	actual NUL device driver header (not a pointer!)
		NUL is always the first device on DOS's linked list of device
		  drivers. (see #01646)
 34h	BYTE	number of JOIN'ed drives
---DOS 4.x---
 10h	WORD	maximum bytes per sector of any block device
 12h	DWORD	pointer to disk buffer info record (see #01652,#01653)
		Note: although the initialization code in IO.SYS uses this
		  pointer, MSDOS.SYS does not, instead using the hardcoded
		  address of the info record
 16h	DWORD	pointer to array of current directory structures
		(see #01643,#01644)
 1Ah	DWORD	pointer to system FCB tables (see #01640,#01641,#01642)
 1Eh	WORD	number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
		(always 00h for DOS 5.0)
 20h	BYTE	number of block devices installed
 21h	BYTE	number of available drive letters; also size of current
		  directory structure array.
		For DOS 4.0-6.0: largest of 5, installed block devices,
		  and CONFIG.SYS LASTDRIVE=
		For DOS 7.x (Windows9X), set to 32 if no LASTDRIVE= or
		  LASTDRIVEHIGH=, else set to larger of installed block
		  devices and LASTDRIVE(HIGH)=
 22h 18 BYTEs	actual NUL device driver header (not a pointer!)
		NUL is always the first device on DOS's linked list of device
		  drivers. (see #01646)
 34h	BYTE	number of JOIN'ed drives
 35h	WORD	pointer within IBMDOS code segment to list of special program
		  names (see #01662)
		(always 0000h for DOS 5.0)
 37h	DWORD	pointer to FAR routine for resident IFS utility functions
		(see #01658)
		may be called by any IFS driver which does not wish to
		  service functions 20h or 24h-28h itself
 3Bh	DWORD	pointer to chain of IFS (installable file system) drivers
 3Fh	WORD	the x in BUFFERS x,y (rounded up to multiple of 30 if in EMS)
 41h	WORD	number of lookahead buffers (the y in BUFFERS x,y)
 43h	BYTE	boot drive (1=A:)
 44h	BYTE	flag: 01h to use DWORD moves (80386+), 00h otherwise
 45h	WORD	extended memory size in KB
---DOS 5.0-6.0---
 10h 39 BYTEs	as for DOS 4.x (above)
 37h	DWORD	pointer to SETVER program list or 0000h:0000h
 3Bh	WORD	(DOS=HIGH) offset in DOS CS of function to fix A20 control
		  when executing special .COM format
 3Dh	WORD	PSP of most-recently EXECed program if DOS in HMA, 0000h if low
		used for maintaining count of INT 21 calls which disable A20
		  on return
 3Fh  8 BYTEs	as for DOS 4.x (above)
---Windows NT DOS Box---
 10h  6 BYTEs	???
 16h	DWORD	pointer to array of current directory structures (see #01645)
 1Ah  6 BYTEs	???
 20h	BYTE	number of block devices installed
 21h	BYTE	number of local drive letters (= installed block devices)
		Also size of current directory structure array.
 22h 18 BYTEs	actual NUL device driver header (not a pointer!)
		NUL is always the first device on DOS's linked list of device
		  drivers. (see #01646)
---DOS 7.x---
 10h 55 BYTEs	as for DOS 5.0-6.0 (above)
 47h 25 BYTEs	???
 60h	BYTE	"DOS_FLAG" (see also INT 26)

Format of DOS memory control block:
Offset	Size	Description	(Table 01628)
 00h	BYTE	block type: 5Ah if last block in chain, otherwise 4Dh
 01h	WORD	PSP segment of owner or special flag value (see #01629)
 03h	WORD	size of memory block in paragraphs
 05h  3 BYTEs	unused by MS-DOS
		(386MAX) if locked-out block, region start/prev region end
---DOS 2.x,3.x---
 08h  8 BYTEs	unused
---DOS 4.0+ ---
 08h  8 BYTEs	ASCII program name if PSP memory block or DR DOS UMB,
		  else garbage
		null-terminated if less than 8 characters
Notes:	the next MCB is at segment (current + size + 1)
	under DOS 3.1+, the first memory block is the DOS data segment,
	  containing installable drivers, buffers, etc.	 Under DOS 4.0+ it is
	  divided into subsegments, each with its own memory control block
	  (see #01633), the first of which is at offset 0000h.
	for DOS 5+, blocks owned by DOS may have either "SC" or "SD" in bytes
	  08h and 09h.	"SC" is system code or locked-out inter-UMB memory,
	  "SD" is system data, device drivers, etc.
	Some versions of DR DOS use only seven characters of the program name,
	  placing a NUL in the eighth byte.
SeeAlso: #01630,#01632,#01633

(Table 01629)
Values for special flag PSP segments:
 0000h	free
 0006h	DR DOS XMS UMB
 0007h	DR DOS excluded upper memory ("hole")
 0008h	belongs to DOS
 FFF7h	386MAX v6.01+ ???
 FFFAh	386MAX UMB control block (see #01477 at AX=4402h"386MAX")
 FFFDh	386MAX locked-out memory
 FFFEh	386MAX UMB (normally immediately follows its control block)
 FFFFh	386MAX v6.01+ device driver

Format of MS-DOS 5+ UMB control block:
Offset	Size	Description	(Table 01630)
 00h	BYTE	type: 5Ah if last block in chain, 4Dh otherwise
 01h	WORD	first available paragraph in UMB if control block at start
		  of UMB, 000Ah if control block at end of UMB
 03h	WORD	length in paragraphs of following UMB or locked-out region
 05h  3 BYTEs	unused
 08h  8 BYTEs	block type name: "UMB" if start block, "SM" if end block in UMB
SeeAlso: #01628,#01631

Format of MS-DOS 7.0 HMA memory control block:
Offset	Size	Description	(Table 01631)
 00h	WORD	signature "MS" (4Dh 53h)
 02h	WORD	usage flag???
		0000h free
		else ???
 04h	WORD	size of memory block in bytes (not counting MCB)
 06h	WORD	offset of next memory block in HMA or 0000h
 08h  8 BYTEs	unused (0)
SeeAlso: #01628,#01630,#01632

Format of STARLITE (General Software's Embedded DOS) memory control block:
Offset	Size	Description	(Table 01632)
 00h	BYTE	block type: 5Ah if last block in chain, otherwise 4Dh
 01h	WORD	PSP segment of owner, 0000h if free, 0008h if belongs to DOS
 03h	WORD	size of memory block in paragraphs
 05h	BYTE	unused
 06h	WORD	segment address of next memory control block (0000h if last)
 08h	WORD	segment address of previous memory control block or 0000h
 0Ah  6 BYTEs	reserved

Format of DOS 4.0+ data segment subsegment control blocks:
Offset	Size	Description	(Table 01633)
 00h	BYTE	subsegment type (blocks typically appear in this order)
		"D"  device driver
		"E"  device driver appendage
		"I"  IFS (Installable File System) driver
		     (MS-DOS 7) high-loaded drive data table array (see #02603)
		"F"  FILES=  control block storage area (for FILES>5)
		"X"  FCBS=   control block storage area, if present
		"C"  BUFFERS EMS workspace area (if BUFFERS /X option used)
		"B"  BUFFERS=  storage area
		"L"  LASTDRIVE=	 current directory structure array storage area
		"S"  STACKS=  code and data area, if present (see #01634,#01635)
		"T"  INSTALL= transient code
 01h	WORD	paragraph of subsegment start (usually the next paragraph)
 03h	WORD	size of subsegment in paragraphs
 05h  3 BYTEs	unused
 08h  8 BYTEs	for types "D" and "I", base name of file from which the driver
		  was loaded (unused for other types)

Format of data at start of STACKS code segment (if present):
Offset	Size	Description	(Table 01634)
 00h	WORD	???
 02h	WORD	number of stacks (the x in STACKS=x,y)
 04h	WORD	size of stack control block array (should be 8*x)
 06h	WORD	size of each stack (the y in STACKS=x,y)
 08h	DWORD	pointer to STACKS data segment
 0Ch	WORD	offset in STACKS data segment of stack control block array
 0Eh	WORD	offset in STACKS data segment of last element of that array
 10h	WORD	offset in STACKS data segment of the entry in that array for
		  the next stack to be allocated (initially same as value in
		  0Eh and works its way down in steps of 8 to the value in
		  0Ch as hardware interrupts pre-empt each other)
Note:	the STACKS code segment data may, if present, be located as follows:
    DOS 3.2:	The code segment data is at a paragraph boundary fairly early
		  in the IBMBIO segment (seen at 0070:0190h)
    DOS 3.3:	The code segment is at a paragraph boundary in the DOS data
		  segment, which may be determined by inspecting the segment
		  pointers of the vectors for those of interrupts 02h, 08h-0Eh,
		  70h, 72-77h which have not been redirected by device drivers
		  or TSRs.
    DOS 4.0+	Identified by sub-segment control block type "S" within the DOS
		  data segment.
SeeAlso: #01636,INT B4"STACKMAN"

Format of array elements in STACKS data segment:
Offset	Size	Description	(Table 01635)
 00h	BYTE	status: 00h=free, 01h=in use, 03h=corrupted by overflow of
		  higher stack.
 01h	BYTE	not used
 02h	WORD	previous SP
 04h	WORD	previous SS
 06h	WORD	ptr to word at top of stack (new value for SP). The word at the
		  top of the stack is preset to point back to this control
		  block.

Format of SHARE.EXE hooks (DOS 3.1-6.00):
Offset	Size	Description	(Table 01636)
(offsets from first system file table--pointed at by ListOfLists+04h)
-3Ch	DWORD	pointer to FAR routine for ???
		Note: not called by MS-DOS 3.3, set to 0000h:0000h by
			SHARE 3.3+
-38h	DWORD	pointer to FAR routine called on opening file
		on call, internal DOS location points at filename
		  (see #01687 at AX=5D06h)
		Return: CF clear if successful
			CF set on error
			    AX = DOS error code (24h)
				  (see #01680 at AH=59h/BX=0000h)
		Note: SHARE directly accesses DOS-internal data to get name of
			file just opened
-34h	DWORD	pointer to FAR routine called on closing file
		ES:DI -> system file table
		Note: does something to every Record Lock Record for file
-30h	DWORD	pointer to FAR routine to close all files for given computer
		(called by AX=5D03h)
-2Ch	DWORD	pointer to FAR routine to close all files for given process
		(called by AX=5D04h)
-28h	DWORD	pointer to FAR routine to close file by name
		(called by AX=5D02h)
		DS:SI -> DOS parameter list (see #01686 at AX=5D00h)
		   DPL's DS:DX -> name of file to close
		Return: CF clear if successful
			CF set on error
			    AX = DOS error code (03h)
				  (see #01680 at AH=59h/BX=0000h)
-24h	DWORD	pointer to FAR routine to lock region of file
		call with BX = file handle
			  ---DOS 3.x---
			  CX:DX = starting offset
			  SI:AX = size
			  ---DOS 4.0+ ---
			  DS:DX -> lock range
					DWORD start offset
					DWORD size in bytes
		Return: CF set on error
			    AL = DOS error code (21h) (see #01680 at AH=59h)
		Note: not called if file is marked as remote
-20h	DWORD	pointer to FAR routine to unlock region of file
		call with BX = file handle
			  ---DOS 3.x---
			  CX:DX = starting offset
			  SI:AX = size
			  ---DOS 4.0+ ---
			  DS:DX -> lock range
					DWORD start offset
					DWORD size in bytes
		Return: CF set on error
			    AL = DOS error code (21h) (see #01680 at AH=59h)
		Note: not called if file is marked as remote
-1Ch	DWORD	pointer to FAR routine to check if file region is locked
		call with ES:DI -> system file table entry for file
			CX = length of region from current position in file
		Return: CF set if any portion of region locked
			    AX = 0021h
-18h	DWORD	pointer to FAR routine to get open file list entry
		(called by AX=5D05h)
		call with DS:SI -> DOS parameter list (see #01686 at AX=5D00h)
			DPL's BX = index of sharing record
			DPL's CX = index of SFT in SFT chain of sharing rec
		Return: CF set on error or not loaded
			    AX = DOS error code (12h) (see #01680 at AH=59h)
			CF clear if successful
			    ES:DI -> filename
			    CX = number of locks owned by specified SFT
			    BX = network machine number
			    DX destroyed
-14h	DWORD	pointer to FAR routine for updating FCB from SFT???
		call with DS:SI -> unopened FCB
			  ES:DI -> system file table entry
		Return: BL = C0h???
		Note: copies following fields from SFT to FCB:
		   starting cluster of file	  0Bh	 1Ah
		   sharing record offset	  33h	 1Ch
		   file attribute		  04h	 1Eh
-10h	DWORD	pointer to FAR routine to get first cluster of FCB file ???
		call with ES:DI -> system file table entry
			  DS:SI -> FCB
		Return: CF set if SFT closed or sharing record offsets
				mismatched
			CF clear if successful
			    BX = starting cluster number from FCB
-0Ch	DWORD	pointer to FAR routine to close file if duplicate for process
		DS:SI -> system file table
		Return: AX = number of handle in JFT which already uses SFT
		Note: called during open/create of a file
		Note: if SFT was opened with inheritance enabled and sharing
			mode 111, does something to all other SFTs owned by
			same process which have the same file open mode and
			sharing record
-08h	DWORD	pointer to FAR routine for closing file
		Note: closes various handles referring to file most-recently
			opened
-04h	DWORD	pointer to FAR routine to update directory info in related SFT
		  entries
		call with ES:DI -> system file table entry for file (see #01641)
			  AX = subfunction (apply to each related SFT)
				00h: update time stamp (offset 0Dh) and date
				     stamp (offset 0Fh)
				01h: update file size (offset 11h) and starting
				     cluster (offset 0Bh).  Sets last-accessed
				     cluster fields to start of file if file
				     never accessed
				02h: as function 01h, but last-accessed fields
				     always changed
				03h: do both functions 00h and 02h
		Note: follows ptr at offset 2Bh in system file table entries
		Note: NOP if opened with no-inherit or via FCB
Notes:	most of the above hooks (except -04h, -14h, -18h, and -3Ch) assume
	  either that SS=DOS DS or SS=DS=DOS DS and directly access
	  DOS-internal data
	sharing hooks are not supported by DR DOS 5-6; they appear to be
	  supported by Novell DOS 7, with a segment of 0000h indicating the
	  DOS data segment
SeeAlso: #01637,#01638

Format of sharing record:
Offset	Size	Description	(Table 01637)
 00h	BYTE	flag
		00h free block
		01h allocated block
		FFh end marker
 01h	WORD	size of block
 03h	BYTE	checksum of pathname (including NUL)
		if sum of ASCII values is N, checksum is (N/256 + N%256)
 04h	WORD	offset in SHARE's DS of first Record Lock Record (see #01638)
 06h	DWORD	pointer to start of system file table chain for file
 0Ah	WORD	unique sequence number
 0Ch	var	ASCIZ full pathname
Note:	not supported by DR DOS SHARE 1.1 and 2.0; will reportedly be
	  supported by Novell DOS 7
SeeAlso: #01636,#01638

Format of SHARE.EXE Record Lock Record:
Offset	Size	Description	(Table 01638)
 00h	WORD	offset in SHARE's DS of next lock table in list or 0000h
 02h	DWORD	offset in file of start of locked region
 06h	DWORD	offset in file of end of locked region
 0Ah	DWORD	pointer to System File Table entry for this file
 0Eh	WORD	PSP segment of lock's owner
---DOS 5+ ---
 10h	WORD	lock type: (00h lock all, 01h lock writes only)
SeeAlso: #01636,#01637,#01639,#01642

Format of DOS 2.x system file tables:
Offset	Size	Description	(Table 01639)
 00h	DWORD	pointer to next file table (offset FFFFh if last)
 04h	WORD	number of files in this table
 06h  28h bytes per file
	Offset	Size	Description
	 00h	BYTE	number of file handles referring to this file
	 01h	BYTE	file open mode (see #01402 at AH=3Dh)
	 02h	BYTE	file attribute
	 03h	BYTE	drive (0 = character device, 1 = A, 2 = B, etc)
	 04h 11 BYTEs	filename in FCB format (no path,no period,blank-padded)
	 0Fh	WORD	???
	 11h	WORD	???
	 13h	DWORD	file size???
	 17h	WORD	file date in packed format (see #01666 at AX=5700h)
	 19h	WORD	file time in packed format (see #01665 at AX=5700h)
	 1Bh	BYTE	device attribute (see #01423 at AX=4400h)
	---character device---
	 1Ch	DWORD	pointer to device driver
	---block device---
	 1Ch	WORD	starting cluster of file
	 1Eh	WORD	relative cluster in file of last cluster accessed
	------
	 20h	WORD	absolute cluster number of current cluster
	 22h	WORD	???
	 24h	DWORD	current file position???
SeeAlso: #01640,#01641,#01642

Format of DOS 3.0 system file tables and FCB tables:
Offset	Size	Description	(Table 01640)
 00h	DWORD	pointer to next file table (offset FFFFh if last)
 04h	WORD	number of files in this table
 06h  38h bytes per file
	Offset	Size	Description
	 00h-1Eh as for DOS 3.1+ (see #01641)
	 1Fh	WORD	byte offset of directory entry within sector
	 21h 11 BYTEs	filename in FCB format (no path/period, blank-padded)
	 2Ch	DWORD	(SHARE.EXE) pointer to previous SFT sharing same file
	 30h	WORD	(SHARE.EXE) network machine number which opened file
			(Windows Enhanced mode DOSMGR uses the virtual machine
			  ID as the machine number; see INT 2F/AX=1683h)
	 32h	WORD	PSP segment of file's owner (first three entries for
			  AUX/CON/PRN contain segment of IO.SYS startup code)
	 34h	WORD	(SHARE.EXE) offset in SHARE code seg of share record
	 36h	WORD	??? apparently always 0000h
SeeAlso: #01639,#01641,#01642

Format of DOS 3.1-3.3x, DR DOS 5.0-6.0 system file tables and FCB tables:
Offset	Size	Description	(Table 01641)
 00h	DWORD	pointer to next file table (offset FFFFh if last)
 04h	WORD	number of files in this table
 06h  35h bytes per file
	Offset	Size	Description
	 00h	WORD	number of file handles referring to this file
	 02h	WORD	file open mode (see AX=6C00h, #01402 at AH=3Dh)
			bit 15 set if this file opened via FCB
	 04h	BYTE	file attribute (see #01420 at AX=4301h)
	 05h	WORD	device info word (see #01423 at AX=4400h)
			bit 15 set if remote file
			bit 14 set means do not set file date/time on closing
			bit 12 set means don't inherit on EXEC
			bits 5-0 drive number for disk files
	 07h	DWORD	pointer to device driver header if character device
			else pointer to DOS Drive Parameter Block
			  (see #01395 at AH=32h)
	 0Bh	WORD	starting cluster of file
	 0Dh	WORD	file time in packed format (see #01665 at AX=5700h)
			not used for character devices in DR DOS
	 0Fh	WORD	file date in packed format (see #01666 at AX=5700h)
			not used for character devices in DR DOS
	 11h	DWORD	file size
	---system file table---
	 15h	DWORD	current offset in file (may be larger than size of
			  file; INT 21/AH=42h does not check new position)
	---FCB table---
	 15h	WORD	counter for last I/O to FCB
	 17h	WORD	counter for last open of FCB
			(these are separate to determine the times of the
			  latest I/O and open)
	---
	 19h	WORD	relative cluster within file of last cluster accessed
	 1Bh	WORD	absolute cluster number of last cluster accessed
			0000h if file never read or written???
	 1Dh	WORD	number of sector containing directory entry
			(see #01352)
	 1Fh	BYTE	number of dir entry within sector (byte offset/32)
	 20h 11 BYTEs	filename in FCB format (no path/period, blank-padded)
	 2Bh	DWORD	(SHARE.EXE) pointer to previous SFT sharing same file
	 2Fh	WORD	(SHARE.EXE) network machine number which opened file
			(Windows Enhanced mode DOSMGR uses the virtual machine
			  ID as the machine number; see INT 2F/AX=1683h)
	 31h	WORD	PSP segment of file's owner (see #01378 at AH=26h)
			  (first three entries for AUX/CON/PRN contain segment
			  of IO.SYS startup code)
	 33h	WORD	offset within SHARE.EXE code segment of
			  sharing record (see #01637) 0000h = none
SeeAlso: #01639,#01640,#01642

Format of DOS 4.0-6.0 system file tables and FCB tables:
Offset	Size	Description	(Table 01642)
 00h	DWORD	pointer to next file table (offset FFFFh if last)
 04h	WORD	number of files in this table
 06h  3Bh bytes per file
	Offset	Size	Description
	 00h	WORD	number of file handles referring to this file
			FFFFh if in use but not referenced
	 02h	WORD	file open mode (see AX=6C00h,#01402 at AH=3Dh)
			bit 15 set if this file opened via FCB
	 04h	BYTE	file attribute (see #01420 at AX=4301h)
	 05h	WORD	device info word (see also #01423 at AX=4400h)
			bit 15 set if remote file
			bit 14 set means do not set file date/time on closing
			bit 13 set if named pipe
			bit 12 set if no inherit
			bit 11 set if network spooler
			bit 7  set if device, clear if file (only if local)
			bits 6-0 as for AX=4400h
	 07h	DWORD	pointer to device driver header if character device
			else pointer to DOS Drive Parameter Block
			  (see #01395 at AH=32h) or REDIR data
	 0Bh	WORD	starting cluster of file (local files only)
			not set for FAT32-capable versions of Windows95
			  (since they allow 32-bit cluster numbers)
	 0Dh	WORD	file time in packed format (see #01665)
	 0Fh	WORD	file date in packed format (see #01666)
	 11h	DWORD	file size
	 15h	DWORD	current offset in file (SFT)
			LRU counters (FCB table, two WORDs)
	---local file---
	 19h	WORD	relative cluster within file of last cluster accessed
	 1Bh	DWORD	number of sector containing directory entry
	 1Fh	BYTE	number of dir entry within sector (byte offset/32)
	---network redirector---
	 19h	DWORD	pointer to REDIRIFS record
	 1Dh  3 BYTEs	???
	------
	 20h 11 BYTEs	filename in FCB format (no path/period, blank-padded)
	 2Bh	DWORD	(SHARE.EXE) pointer to previous SFT sharing same file
	 2Fh	WORD	(SHARE.EXE) network machine number which opened file
			(Windows Enhanced mode DOSMGR uses the virtual machine
			  ID as the machine number; see INT 2F/AX=1683h)
	 31h	WORD	PSP segment of file's owner (see #01378 at AH=26h)
			  (first three entries for AUX/CON/PRN contain segment
			  of IO.SYS startup code)
	 33h	WORD	offset within SHARE.EXE code segment of
			sharing record (see #01595)  0000h = none
	 35h	WORD	(local) absolute cluster number of last clustr accessed
			(redirector) ???
	 37h	DWORD	pointer to IFS driver for file, 0000000h if native DOS
Note:	the OS/2 2.0 DOS Boot Session does not properly fill in the filename
	  field due to incomplete support for SFTs; the OS/2 2.0 DOS Window
	  does not appear to support SFTs at all
SeeAlso: #01639,#01640,#01641

Format of current directory structure (CDS) (array, LASTDRIVE entries):
Offset	Size	Description	(Table 01643)
 00h 67 BYTEs	ASCIZ path in form X:\PATH (local) or UNC form
		  \\SERVER\PATH (network, see notes below)
 43h	WORD	drive attributes (also see note below) (see also AX=5F07h)
		bit 15: uses network redirector	 \ invalid if 00, installable
		bit 14: physical drive		 / file system if 11
		bit 13: JOIN'ed	  \ path above is true path that would be
		bit 12: SUBST'ed  / needed if not under SUBST or JOIN
		bit 11: removable media (WinNT4.0)
		bit 10: hard disk??? (WinNT4.0)
		bit  7: remote drive hidden from redirector's assign-list and
			  exempt from network connection make/break commands;
			  set for CD-ROM drives by MSCDEX (not supported by
			  CORELCDX)
 45h	DWORD	pointer to Drive Parameter Block for drive
		  (see #01395 at AH=32h)
---local drives---
 49h	WORD	starting cluster of current directory
		0000h = root, FFFFh = never accessed
 4Bh	WORD	??? seems to be FFFFh always
 4Dh	WORD	??? seems to be FFFFh always
---network drives---
 49h	DWORD	pointer to redirector or REDIRIFS record, or FFFFh:FFFFh
		(DOS 4 only) available for use by IFS driver
 4Dh	WORD	stored user data from INT 21/AX=5F03h
------
 4Fh	WORD	offset in current directory path of backslash corresponding to
		  root directory for drive
		this value specifies how many characters to hide from the
		  "CHDIR" and "GETDIR" calls; normally set to 2 to hide the
		  drive letter and colon, SUBST, JOIN, and networks change it
		  so that only the appropriate portion of the true path is
		  visible to the user
---DOS 4.0+ ---
 51h	BYTE	(DOS 4 only, remote drives) device type
		04h network drive
 52h	DWORD	pointer to IFS driver (DOS 4) or redirector block (DOS 5+) for
		  this drive, 00000000h if native DOS
 56h	WORD	available for use by IFS driver
Notes:	the path for invalid drives is normally set to X:\, but may be empty
	  after JOIN x: /D in DR DOS 5.0 or NET USE x: /D in older LAN versions
	normally, only one of bits 13&12 may be set together with bit 14, but
	  DR DOS 5.0 uses other combinations for bits 15-12: 0111 JOIN,
	  0001 SUBST, 0101 ASSIGN (see #01644)
	Windows for Workgroups 3.11 network sets the path to the local
	  drive and directory even for network drives; in that case the
	  UNC form \\SERVER\SHARE can be obtained with INT 21/AX=5F02h
	  or INT 21/AX=5F46h. LapLink RemoteAccess does the same even for
	  INT 21/AX=5F02h
	Window NT 4.0 always uses X:\PATH, even for substituted drives (i.e.
	  the CDS will *not* contain the original path prior to SUBST)
	SoftWindows on the Macintosh PowerPC sets \\E for the host drive
SeeAlso: #01644,INT 21/AX=71AAh/BL=00h

Format of DR DOS 5.0-6.0 current directory structure entry (array):
Offset	Size	Description	(Table 01644)
 00h 67 BYTEs	ASCIZ pathname of actual root directory for this logical drive
 43h	WORD	drive attributes
		1000h SUBSTed drive
		3000h??? JOINed drive
		4000h physical drive
		5000h ASSIGNed drive
		7000h JOINed drive
		8000h network drive
 45h	BYTE	physical drive number (0=A:) if this logical drive is valid
 46h	BYTE	??? apparently flags for JOIN and ASSIGN
 47h	WORD	cluster number of start of parent directory (0000h = root)
 49h	WORD	entry number of current directory in parent directory
 4Bh	WORD	cluster number of start of current directory
 4Dh	WORD	used for media change detection (details not available)
 4Fh	WORD	cluster number of SUBST/JOIN "root" directory
		0000h if physical root directory
SeeAlso: #01643

Format of Windows NT Current Directory Structure (CDS) (array):
Offset	Size	Description	(Table 01645)
 00h 67 BYTEs	ASCIZ path in form X:\ (does not show either current directory
		  or network path)
 43h  4 BYTEs	???
Note:	the WinNT CDS contains only as many entries as there are local drives,
	  not LASTDRIVE entries.

Format of DOS device driver header:
Offset	Size	Description	(Table 01646)
 00h	DWORD	pointer to next driver, offset=FFFFh if last driver
 04h	WORD	device attributes (see #01647,#01648)
 06h	WORD	device strategy entry point
		call with ES:BX -> request header
		  (see #02597 at INT 2F/AX=0802h)
 08h	WORD	device interrupt entry point
---character device---
 0Ah  8 BYTEs	blank-padded character device name
---block device---
 0Ah	BYTE	number of subunits (drives) supported by driver
 0Bh  7 BYTEs	normally unused; sometimes contains signature to indicate
		  specific drivers:
		"$PCMATA"   PCMCIA driver PCMATA.SYS (see AX=440Dh"DOS 3.2+")
		"AHADDVR"   Adaptec SCSI disk driver ASPIDISK.SYS
		"DBLSPAC"   MS DoubleSpace or DriveSpace
		"DSKREET"   NortonUtils v5+ Diskreet (see INT 2F/AX=FE00h)
		"GFS	"   LapLink III device driver DD.BIN
		"SIDExxx"   PCMCIA driver ATADRV.EXE (see AX=440Dh"DOS 3.2+")
		"STAC-CD"   Stacker/Stacker Anywhere (see AX=4404h"Stacker")
---DoubleSpace/DriveSpace---
 12h  2 BYTEs	signature ",." (2Ch 2Eh)
 14h	var	preloading API entry point
---CD-ROM---
 12h	WORD	reserved, must be 0000h
		appears to be another device chain
 14h	BYTE	drive letter, 01h=A:, etc. (must initially be 00h; this byte
		  is set by MSCDEX when it loads)
 15h	BYTE	number of units
 16h  6 BYTEs	signature 'MSCDnn' where 'nn' is version (currently '00')
		(this field does not exist in most drivers)
SeeAlso: #02550 at INT 25/AX=CDCDh,#02845 at INT 2F/AX=5600h

Bitfields for device attributes (character device):
Bit(s)	Description	(Table 01647)
 15	set (indicates character device)
 14	IOCTL supported (see AH=44h)
 13	(DOS 3.0+) output until busy supported
 12	reserved
 11	(DOS 3.0+) OPEN/CLOSE/RemMedia calls supported
 10-8	reserved
 7	(DOS 5.0+) Generic IOCTL check call supported (driver command 19h)
	(see AX=4410h,AX=4411h)
 6	(DOS 3.2+) Generic IOCTL call supported (driver command 13h)
	(see AX=440Ch,AX=440Dh"DOS 3.2+")
 5	reserved
 4	device is special (use INT 29 "fast console output")
 3	device is CLOCK$ (all reads/writes use transfer record described
	  below)
 2	device is NUL
 1	device is standard output
 0	device is standard input
Note:	for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
	  version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
	  010 = European DOS 4.0)
SeeAlso: #01648,#01646

Bitfields for device attributes (block device):
Bit(s)	Description	(Table 01648)
 15	clear (indicates block device)
 14	IOCTL supported
 13	non-IBM format
 12	network device (device is remote)
 11	(DOS 3.0+) OPEN/CLOSE/RemMedia calls supported
 10	reserved
 9	direct I/O not allowed??? (set by DOS 3.3 DRIVER.SYS for "new" drives)
 8	??? set by DOS 3.3 DRIVER.SYS for "new" drives
 7	(DOS 5.0+) Generic IOCTL check call supported (driver command 19h)
	(see AX=4410h,AX=4411h)
 6	(DOS 3.2+) Generic IOCTL call supported (driver command 13h)
	implies support for commands 17h and 18h
	  (see AX=440Ch,AX=440Dh"DOS 3.2+",AX=440Eh,AX=440Fh)
 5-2	reserved
 1	driver supports 32-bit sector addressing (DOS 3.31+)
 0	 reserved
Note:	for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
	  version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
	  010 = European DOS 4.0)
SeeAlso: #01647,#01646

Format of DOS 2.x disk buffer:
Offset	Size	Description	(Table 01649)
 00h	DWORD	pointer to next disk buffer, offset = FFFFh if last
		least-recently used buffer is first in chain
 04h	BYTE	drive (0=A, 1=B, etc), FFh if not in use
 05h  3 BYTEs	unused??? (seems always to be 00h 00h 01h)
 08h	WORD	logical sector number
 0Ah	BYTE	number of copies to write (1 for non-FAT sectors)
 0Bh	BYTE	sector offset between copies if multiple copies to be written
 0Ch	DWORD	pointer to DOS Drive Parameter Block (see #01395 at AH=32h)
 10h		buffered data
SeeAlso: #01650,#01652,#01653,#01655

Format of DOS 3.x disk buffer:
Offset	Size	Description	(Table 01650)
 00h	DWORD	pointer to next disk buffer, offset = FFFFh if last
		least-recently used buffer is first in chain
 04h	BYTE	drive (0=A,1=B, etc), FFh if not in use
 05h	BYTE	buffer flags (see #01651)
 06h	WORD	logical sector number
 08h	BYTE	number of copies to write (1 for non-FAT sectors)
 09h	BYTE	sector offset between copies if multiple copies to be written
 0Ah	DWORD	pointer to DOS Drive Parameter Block (see #01395 at AH=32h)
 0Eh	WORD	unused??? (almost always 0)
 10h		buffered data
SeeAlso: #01649,#01652,#01653,#01655

Bitfields for DOS 3.x disk buffer flags:
Bit(s)	Description	(Table 01651)
 7	???
 6	buffer dirty
 5	buffer has been referenced
 4	???
 3	sector in data area
 2	sector in a directory, either root or subdirectory
 1	sector in FAT
 0	boot sector??? (guess)
SeeAlso: #01656

Format of DOS 4.00 (pre UR 25066) disk buffer info:
Offset	Size	Description	(Table 01652)
 00h	DWORD	pointer to array of disk buffer hash chain heads (see #01654)
 04h	WORD	number of disk buffer hash chains (referred to as NDBCH below)
 06h	DWORD	pointer to lookahead buffer, zero if not present
 0Ah	WORD	number of lookahead sectors, else zero (the y in BUFFERS=x,y)
 0Ch	BYTE	00h if buffers in EMS (/X), FFh if not
 0Dh	WORD	EMS handle for buffers, zero if not in EMS
 0Fh	WORD	EMS physical page number used for buffers (usually 255)
 11h	WORD	??? seems always to be 0001h
 13h	WORD	segment of EMS physical page frame
 15h	WORD	??? seems always to be zero
 17h  4 WORDs	EMS partial page mapping information???
SeeAlso: #01649,#01650,#01653,#01657

Format of DOS 4.01 (from UR 25066 Corrctive Services Disk on) disk buffer info:
Offset	Size	Description	(Table 01653)
 00h	DWORD	pointer to array of disk buffer hash chain heads (see #01654)
 04h	WORD	number of disk buffer hash chains (referred to as NDBCH below)
 06h	DWORD	pointer to lookahead buffer, zero if not present
 0Ah	WORD	number of lookahead sectors, else zero (the y in BUFFERS=x,y)
 0Ch	BYTE	01h, possibly to distinguish from pre-UR 25066 format
 0Dh	WORD	??? EMS segment for BUFFERS (only with /XD)
 0Fh	WORD	??? EMS physical page number of EMS seg above (only with /XD)
 11h	WORD	??? EMS segment for ??? (only with /XD)
 13h	WORD	??? EMS physical page number of above (only with /XD)
 15h	BYTE	??? number of EMS page frames present (only with /XD)
 16h	WORD	segment of one-sector workspace buffer allocated in main memory
		  if BUFFERS/XS or /XD options in effect, possibly to avoid DMA
		  into EMS
 18h	WORD	EMS handle for buffers, zero if not in EMS
 1Ah	WORD	EMS physical page number used for buffers (usually 255)
 1Ch	WORD	??? appears always to be 0001h
 1Eh	WORD	segment of EMS physical page frame
 20h	WORD	??? appears always to be zero
 22h	BYTE	00h if /XS, 01h if /XD, FFh if BUFFERS not in EMS
SeeAlso: #01649,#01650,#01652,#01657

Format of DOS 4.x disk buffer hash chain head (array, one entry per chain):
Offset	Size	Description	(Table 01654)
 00h	WORD	EMS logical page number in which chain is resident, -1 if not
		  in EMS
 02h	DWORD	pointer to least recently used buffer header.  All buffers on
		  this chain are in the same segment.
 06h	BYTE	number of dirty buffers on this chain
 07h	BYTE	reserved (00h)
Notes:	buffered disk sectors are assigned to chain N where N is the sector's
	  address modulo NDBCH,	 0 <= N <= NDBCH-1
	each chain resides completely within one EMS page
	this structure is in main memory even if buffers are in EMS

Format of DOS 4.0-6.0 disk buffer:
Offset	Size	Description	(Table 01655)
 00h	WORD	forward ptr, offset only, to next least recently used buffer
 02h	WORD	backward pointer, offset only
 04h	BYTE	drive (0=A,1=B, etc) if bit 7 clear
		SFT index if bit 7 set
		FFh if not in use
 05h	BYTE	buffer flags (see #01656)
 06h	DWORD	logical sector number (local buffers only)
 0Ah	BYTE	number of copies to write
		for FAT sectors, same as number of FATs
		for data and directory sectors, usually 1
 0Bh	WORD	offset in sectors between copies to write for FAT sectors
 0Dh	DWORD	pointer to DOS Drive Parameter Block (see #01395 at AH=32h)
 11h	WORD	size of data in buffer if remote buffer (see also #01656)
 13h	BYTE	reserved (padding)
 14h		buffered data
Note:	for DOS 4.x, all buffered sectors which have the same hash value
	  (computed as the sum of high and low words of the logical sector
	  number divided by the number of disk buffer chains) are on the same
	  doubly-linked circular chain; for DOS 5+, only a single circular
	  chain exists.
	the links consist of offset addresses only, the segment being the same
	  for all buffers in the chain.
SeeAlso: #01649,#01650,#01652

Bitfields for DOS 4.0-6.0 disk buffer flags:
Bit(s)	Description	(Table 01656)
 7	remote buffer
 6	buffer dirty
 5	buffer has been referenced (reserved in DOS 5+)
 4	search data buffer (only valid if remote buffer)
 3	sector in data area
 2	sector in a directory, either root or subdirectory
 1	sector in FAT
 0	reserved
SeeAlso: #01651

Format of DOS 5.0-6.0 disk buffer info:
Offset	Size	Description	(Table 01657)
 00h	DWORD	pointer to least-recently-used buffer header (may be in HMA)
		(see #01655)
 04h	WORD	number of dirty disk buffers
 06h	DWORD	pointer to lookahead buffer, zero if not present
 0Ah	WORD	number of lookahead sectors, else zero (the y in BUFFERS=x,y)
 0Ch	BYTE	buffer location
		00h base memory, no workspace buffer
		01h HMA, workspace buffer in base memory
 0Dh	DWORD	pointer to one-segment workspace buffer in base memory
 11h  3 BYTEs	unused
 14h	WORD	???
 16h	BYTE	flag: INT 24 fail while making an I/O status call
 17h	BYTE	temp storage for user memory allocation strategy during EXEC
 18h	BYTE	counter: number of INT 21 calls for which A20 is off
 19h	BYTE	bit flags
		bit 0: ???
		bit 1: SWITCHES=/W specified in CONFIG.SYS (don't load
			WINA20.SYS when MS Windows 3.0 starts)
		bit 2: in EXEC state (INT 21/AX=4B05h)
 1Ah	WORD	offset of unpack code start (used only during INT 21/AX=4B05h)
 1Ch	BYTE	bit 0 set iff UMB MCB chain linked to normal MCB chain
 1Dh	WORD	minimum paragraphs of memory required by program being EXECed
 1Fh	WORD	segment of first MCB in upper memory blocks or FFFFh if DOS
		  memory chain in base 640K only (first UMB MCB usually at
		  9FFFh, locking out video memory with a DOS-owned memory
		  block)
		the MCB this word points at contains a valid link into high
		  memory even if it is marked with a 'Z' indicating the last
		  memory block
 21h	WORD	paragraph from which to start scanning during memory allocation
SeeAlso: #01652,#01653

(Table 01658)
Call IFS utility function entry point with:
	AH = 20h miscellaneous functions
	    AL = 00h get date
		Return: CX = year
			DH = month
			DL = day
	    AL = 01h get process ID and computer ID
		Return: BX = current PSP segment
			DX = active network machine number
	    AL = 05h get file system info
		ES:DI -> 16-byte info buffer
		Return: buffer filled
			Offset	Size	Description
			 00h  2 BYTEs	unused
			 02h	WORD	number of SFTs (actually counts only
					the first two file table arrays)
			 04h	WORD	number of FCB table entries
			 06h	WORD	number of proctected FCBs
			 08h  6 BYTEs	unused
			 0Eh	WORD	largest sector size supported
	    AL = 06h get machine name
		ES:DI -> 18-byte buffer for name
		Return: buffer filled with name starting at offset 02h
	    AL = 08h get sharing retry count
		Return: BX = sharing retry count
	    AL = other
		Return: CF set
	AH = 21h get redirection state
		BH = type (03h disk, 04h printer)
		Return: BH = state (00h off, 01h on)
	AH = 22h ??? some sort of time calculation
		AL = 00h ???
		    nonzero ???
	AH = 23h ??? some sort of time calculation
	AH = 24h compare filenames
	    DS:SI -> first ASCIZ filename
	    ES:DI -> second ASCIZ filename
	    Return: ZF set if files are same ignoring case and / vs \
	AH = 25h normalize filename
	    DS:SI -> ASCIZ filename
	    ES:DI -> buffer for result
	    Return: filename uppercased, forward slashes changed to backslashes
	AH = 26h get DOS stack
	    Return: DS:SI -> top of stack
		    CX = size of stack in bytes
	AH = 27h increment InDOS flag
	AH = 28h decrement InDOS flag
Note:	IFS drivers which do not wish to implement functions 20h or 24h-28h may
	  pass them on to the default handler pointed at by [LoL+37h]
SeeAlso: #01659,#01660

Format of IFS driver list:
Offset	Size	Description	(Table 01659)
 00h	DWORD	pointer to next driver header
 04h  8 BYTEs	IFS driver name (blank padded), as used by FILESYS command
 0Ch  4 BYTEs	???
 10h	DWORD	pointer to IFS utility function entry point (see #01658)
		call with ES:BX -> IFS request (see #01660)
 14h	WORD	offset in header's segment of driver entry point
	???
SeeAlso: #01658,#01660

Format of IFS request block:
Offset	Size	Description	(Table 01660)
 00h	WORD	total size in bytes of request
 02h	BYTE	class of request
		02h ???
		03h redirection
		04h ???
		05h file access
		06h convert error code to string
		07h ???
 03h	WORD	returned DOS error code
 05h	BYTE	IFS driver exit status
		00h success
		01h ???
		02h ???
		03h ???
		04h ???
		FFh internal failure
 06h 16 BYTEs	???
---request class 02h---
 16h	BYTE	function code
		04h ???
 17h	BYTE	unused???
 18h	DWORD	pointer to ???
 1Ch	DWORD	pointer to ???
 20h  2 BYTEs	???
---request class 03h---
 16h	BYTE	function code
 17h	BYTE	???
 18h	DWORD	pointer to ???
 1Ch	DWORD	pointer to ???
 22h	WORD	returned ???
 24h	WORD	returned ???
 26h	WORD	returned ???
 28h	BYTE	returned ???
 29h	BYTE	unused???
---request class 04h---
 16h	DWORD	pointer to ???
 1Ah	DWORD	pointer to ???
---request class 05h---
 16h	BYTE	function code
		01h flush disk buffers
		02h get disk space
		03h MKDIR
		04h RMDIR
		05h CHDIR
		06h delete file
		07h rename file
		08h search directory
		09h file open/create
		0Ah LSEEK
		0Bh read from file
		0Ch write to file
		0Dh lock region of file
		0Eh commit/close file
		0Fh get/set file attributes
		10h printer control
		11h ???
		12h process termination
		13h ???
	---class 05h function 01h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h  4 BYTEs	???
	 26h	BYTE	???
	 27h	BYTE	???
	---class 05h function 02h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h  4 BYTEs	???
	 26h	WORD	returned total clusters
	 28h	WORD	returned sectors per cluster
	 2Ah	WORD	returned bytes per sector
	 2Ch	WORD	returned available clusters
	 2Eh	BYTE	returned ???
	 2Fh	BYTE	???
	---class 05h functions 03h,04h,05h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h  4 BYTEs	???
	 26h	DWORD	pointer to directory name
	---class 05h function 06h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h  4 BYTEs	???
	 26h	WORD	attribute mask
	 28h	DWORD	pointer to filename
	---class 05h function 07h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h  4 BYTEs	???
	 26h	WORD	attribute mask
	 28h	DWORD	pointer to source filespec
	 2Ch	DWORD	pointer to destination filespec
	---class 05h function 08h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h  4 BYTEs	???
	 26h	BYTE	00h FINDFIRST
			01h FINDNEXT
	 28h	DWORD	pointer to FindFirst search data + 01h if FINDNEXT
	 2Ch	WORD	search attribute if FINDFIRST
	 2Eh	DWORD	pointer to filespec if FINDFIRST
	---class 05h function 09h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h	DWORD	pointer to IFS open file structure (see #01661)
	 26h	WORD	???  \ together, specify open vs. create, whether or
	 28h	WORD	???  / not to truncate
	 2Ah  4 BYTEs	???
	 2Eh	DWORD	pointer to filename
	 32h  4 BYTEs	???
	 36h	WORD	file attributes on call
			returned ???
	 38h	WORD	returned ???
	---class 05h function 0Ah---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h	DWORD	pointer to IFS open file structure (see #01661)
	 26h	BYTE	seek type (02h = from end)
	 28h	DWORD	offset on call
			returned new absolute position
	---class 05h functions 0Bh,0Ch---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h	DWORD	pointer to IFS open file structure (see #01661)
	 28h	WORD	number of bytes to transfer
			returned bytes actually transferred
	 2Ah	DWORD	transfer address
	---class 05h function 0Dh---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h	DWORD	pointer to IFS open file structure (see #01661)
	 26h	BYTE	file handle???
	 27h	BYTE	unused???
	 28h	WORD	???
	 2Ah	WORD	???
	 2Ch	WORD	???
	 2Eh	WORD	???
	---class 05h function 0Eh---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h	DWORD	pointer to IFS open file structure (see #01661)
	 26h	BYTE	00h commit file
			01h close file
	 27h	BYTE	unused???
	---class 05h function 0Fh---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h  4 BYTEs	???
	 26h	BYTE	02h GET attributes
			03h PUT attributes
	 27h	BYTE	unused???
	 28h 12 BYTEs	???
	 34h	WORD	search attributes???
	 36h	DWORD	pointer to filename
	 3Ah	WORD	(GET) returned ???
	 3Ch	WORD	(GET) returned ???
	 3Eh	WORD	(GET) returned ???
	 40h	WORD	(GET) returned ???
	 42h	WORD	(PUT) new attributes
			(GET) returned attributes
	---class 05h function 10h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h	DWORD	pointer to IFS open file structure (see #01661)
	 26h	WORD	???
	 28h	DWORD	pointer to ???
	 2Ch	WORD	???
	 2Eh	BYTE	???
	 2Fh	BYTE	subfunction
			01h get printer setup
			03h ???
			04h ???
			05h ???
			06h ???
			07h ???
			21h set printer setup
	---class 05h function 11h---
	 17h  7 BYTEs	???
	 1Eh	DWORD	pointer to ???
	 22h	DWORD	pointer to IFS open file structure (see #01661)
	 26h	BYTE	subfunction
	 27h	BYTE	unused???
	 28h	WORD	???
	 2Ah	WORD	???
	 2Ch	WORD	???
	 2Eh	BYTE	???
	 2Fh	BYTE	???
	---class 05h function 12h---
	 17h 15 BYTEs	unused???
	 26h	WORD	PSP segment
	 28h	BYTE	type of process termination
	 29h	BYTE	unused???
	---class 05h function 13h---
	 17h 15 BYTEs	unused???
	 26h	WORD	PSP segment
---request class 06h---
 16h	DWORD	returned pointer to string corresponding to error code at 03h
 1Ah	BYTE	returned ???
 1Bh	BYTE	unused
---request class 07h---
 16h	DWORD	pointer to IFS open file structure (see #01661)
 1Ah	BYTE	???
 1Bh	BYTE	unused???
SeeAlso: #01659,#01658,#01661

Format of IFS open file structure:
Offset	Size	Description	(Table 01661)
 00h	WORD	???
 02h	WORD	device info word
 04h	WORD	file open mode
 06h	WORD	???
 08h	WORD	file attributes
 0Ah	WORD	owner's network machine number
 0Ch	WORD	owner's PSP segment
 0Eh	DWORD	file size
 12h	DWORD	current offset in file
 16h	WORD	file time
 18h	WORD	file date
 1Ah 11 BYTEs	filename in FCB format
 25h	WORD	???
 27h	WORD	hash value of SFT address
		(low word of linear address + segment&F000h)
 29h  3 WORDs	network info from SFT
 2Fh	WORD	???

Format of one item in DOS 4.0+ list of special program names:
Offset	Size	Description	(Table 01662)
 00h	BYTE	length of name (00h = end of list)
 01h  N BYTEs	name in format name.ext
 N    2 BYTEs	DOS version to return for program (major,minor)
		(see AH=30h,INT 2F/AX=122Fh)
---DOS 4 only---
 N+2	BYTE	number of times to return fake version number (FFh = always)
Note:	if the name of the executable for the program making the DOS "get
	  version" call matches one of the names in this list, DOS returns the
	  specified version rather than the true version number

Top
215252 - INT 21 - VIRUS - "516"/"Leapfrog" - INSTALLATION CHECK
INT 21 - VIRUS - "516"/"Leapfrog" - INSTALLATION CHECK
	AX = 5252h
Return: BX = FFEEh if resident
SeeAlso: AX=4BFFh"Cascade",AX=58CCh

Top
2153 - INT 21 - DOS 2+ internal - TRANSLATE BIOS PARAMETER BLOCK TO DRIVE PARAM BLOCK
INT 21 - DOS 2+ internal - TRANSLATE BIOS PARAMETER BLOCK TO DRIVE PARAM BLOCK
	AH = 53h
	DS:SI -> BIOS Parameter Block (see #01663)
	ES:BP -> buffer for Drive Parameter Block (see #01395 at AH=32h)
	    DBP drive byte must be set to valid drive (Windows95-OSR2)
	---Windows95---
	CX = signature 4558h ('EX') for FAT32 extended BPB/DPB (see #01664)
	DX = signature 4152h ('AR') for FAT32 extended BPB/DPB
Return: ES:BP buffer filled
Notes:	for DOS 3.0+, the cluster at which to start searching is set to 0000h
	  and the number of free clusters is set to FFFFh (unknown)
	if the number of sectors per cluster is set to zero, MS-DOS will hang
	  at startup because it computes the internally-used shift count by
	  shifting this value right until the carry flag is set; since this
	  will never happen when the field is zero, MS-DOS hangs
	not supported by Windows NT 3.1

Format of BIOS Parameter Block:
Offset	Size	Description	(Table 01663)
 00h	WORD	number of bytes per sector
 02h	BYTE	number of sectors per cluster
 03h	WORD	number of reserved sectors at start of disk
 05h	BYTE	number of FATs
 06h	WORD	number of entries in root directory
 08h	WORD	total number of sectors
		for DOS 4.0+, set to zero if partition >32M, then set DWORD at
		  15h to actual number of sectors
 0Ah	BYTE	media ID byte (see #01356)
 0Bh	WORD	number of sectors per FAT
---DOS 2.13---
 0Dh	WORD	number of sectors per track
 0Fh	WORD	number of heads
 11h	WORD	number of hidden sectors
---DOS 3.0+ ---
 0Dh	WORD	number of sectors per track
 0Fh	WORD	number of heads
 11h	DWORD	number of hidden sectors
 15h 11 BYTEs	reserved
---DOS 4.0+ ---
 15h	DWORD	total number of sectors if word at 08h contains zero
 19h  6 BYTEs	???
 1Fh	WORD	number of cylinders
 21h	BYTE	device type
 22h	WORD	device attributes (removable or not, etc)
---DR DOS 5+ ---
 15h	DWORD	total number of sectors if word at 08h contains zero
 19h  6 BYTEs	reserved
---European MS-DOS 4.00---
 15h	DWORD	total number of sectors if word at 08h contains zero
		(however, this DOS does not actually implement >32M partitions)
SeeAlso: #01395,#01664

Format of Extended BIOS Parameter Block:
Offset	Size	Description	(Table 01664)
 00h 25 BYTEs	same as standard DOS 4-6 BPB (see #01663)
 19h	DWORD	sectors per FAT if WORD at 0Bh is 0000h
 1Dh	WORD	extended flags
		bit 7: do not mirror active FAT to inactive FATs
		bits 6-4: reserved (0)
		bits 3-0: the 0-based FAT number of the active FAT
		    (if mirroring disabled)
 1Fh	WORD	file system version (high byte=major, low byte=minor)
		0000h = Win95-OSR2
 21h	DWORD	starting cluster number of root directory
 25h	WORD	file system information sector number (see also #01788)
		FFFFh if none
 27h	WORD	sector number of backup boot sector (FFFFh if none)
 29h  6 WORDs	reserved
SeeAlso: #01560,#01787

Top
2154 - INT 21 - DOS 2+ - GET VERIFY FLAG
INT 21 - DOS 2+ - GET VERIFY FLAG
	AH = 54h
Return: AL = verify flag
	    00h off
	    01h on (all disk writes verified after writing)
SeeAlso: AH=2Eh

Top
2154--BX4475 - INT 21 - VIRUS - "Dual_GtM"/"Ganeu" - INSTALLATION CHECK
INT 21 - VIRUS - "Dual_GtM"/"Ganeu" - INSTALLATION CHECK
	AH = 54h
	BX = 4475h ("Du")
	CX = 616Ch ("al")
Return: BX = 4774h ("Gt") and CX = 4D21h ("M!") if resident
SeeAlso: AX=50FDh"VIRUS",AX=5454h"VIRUS"

Top
215454 - INT 21 - VIRUS - "Dudley" - INSTALLATION CHECK
INT 21 - VIRUS - "Dudley" - INSTALLATION CHECK
	AX = 5454h
Return: AX = 0000h if resident
SeeAlso: AX=50FDh"VIRUS",AH=54h/BX=4475h"VIRUS",AX=7BCEh"VIRUS"

Top
2155 - INT 21 - DOS 2+ internal - CREATE CHILD PSP
INT 21 - DOS 2+ internal - CREATE CHILD PSP
	AH = 55h
	DX = segment at which to create new PSP
	SI = (DOS 3.0+) value to place in memory size field at DX:[0002h]
Return: AL destroyed
Notes:	creates a "child" PSP rather than making an exact copy of the current
	  PSP; the new PSP's parent pointer is set to the current PSP and the
	  reference count for each inherited file is incremented
	(DOS 2.0+) sets current PSP to DX
	(DOS 3.0+) marks "no inherit" file handles as closed in child PSP
	this function is implemented using the same code as AH=26h, so unlike
	  other DOS 2+ functions, it does not return status in CF, instead
	  returning status in AL as DOS 1.x functions do (but it never puts an
	  explicit return value in AL)
SeeAlso: AH=26h,AH=50h

Top
2156 - INT 21 - DOS 2+ - "RENAME" - RENAME FILE
INT 21 - DOS 2+ - "RENAME" - RENAME FILE
	AH = 56h
	DS:DX -> ASCIZ filename of existing file (no wildcards, but see below)
	ES:DI -> ASCIZ new filename (no wildcards)
	CL = attribute mask (server call only, see below)
Return: CF clear if successful
	CF set on error
	    AX = error code (02h,03h,05h,11h) (see #01680)
Notes:	allows move between directories on same logical volume
	this function does not set the archive attribute
	  (see #01420 at AX=4301h), which results in incremental backups not
	  backing up the file under its new name
	open files should not be renamed
	(DOS 2.x only) this function renames file by creating a new directory
	  entry with the new name, then marking the old entry deleted
	(DOS 3.0+) allows renaming of directories
	(DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
	  error 12h (no more files) is returned on success, and both source and
	  destination specs must be canonical (as returned by AH=60h).
	  Wildcards in the destination are replaced by the corresponding char
	  of each source file being renamed.  Under DOS 3.x, the call will fail
	  if the destination wildcard is *.* or equivalent; under DR DOS 5.0,
	  the call will fail with error code 03h if any wildcards are used.
	  When invoked via AX=5D00h, only those files matching the attribute
	  mask in CL are renamed.
	under the FlashTek X-32 DOS extender, the old-name pointer is in DS:EDX
	  and the new-name pointer is in ES:EDI (DS must equal ES)
BUG:	(DR DOS 3.41) when invoked via AX=5D00h, this function will generate
	  a new directory entry with the new name (including any wildcards)
	  which can only be removed with a sector editor
SeeAlso: AH=17h,AX=4301h,AX=43FFh/BP=5053h,AX=5D00h,AH=60h,AX=7156h
SeeAlso: AX=F257h/SF=04h

Top
215643 - INT 21 - VIRUS - "PS-MPC.Gold" - INSTALLATION CHECK
INT 21 - VIRUS - "PS-MPC.Gold" - INSTALLATION CHECK
	AX = 5643h  ('VC')
Return: AX = 5053h  ('PS') if resident
SeeAlso: AX=33E0h"VIRUS",AX=5741h"VIRUS",AX=6303h"VIRUS"

Top
215700 - INT 21 - DOS 2+ - GET FILE'S LAST-WRITTEN DATE AND TIME
INT 21 - DOS 2+ - GET FILE'S LAST-WRITTEN DATE AND TIME
	AX = 5700h
	BX = file handle
Return: CF clear if successful
	    CX = file's time (see #01665)
	    DX = file's date (see #01666)
	CF set on error
	    AX = error code (01h,06h) (see #01680)
Note:	under DR DOS 3.41 and 5.0, this function returns 0 (no date/time) for
	  character devices; MS-DOS returns date and time of opening
SeeAlso: AX=5701h,AX=5704h"Windows95"

Bitfields for file time:
Bit(s)	Description	(Table 01665)
 15-11	hours (0-23)
 10-5	minutes
 4-0	seconds/2

Bitfields for file date:
Bit(s)	Description	(Table 01666)
 15-9	year - 1980
 8-5	month
 4-0	day

Top
215701 - INT 21 - DOS 2+ - SET FILE'S LAST-WRITTEN DATE AND TIME
INT 21 - DOS 2+ - SET FILE'S LAST-WRITTEN DATE AND TIME
	AX = 5701h
	BX = file handle
	CX = new time (see #01665)
	DX = new date (see #01666)
Return: CF clear if successful
	CF set on error
	    AX = error code (01h,06h) (see #01680)
SeeAlso: AX=5700h,AX=5705h"Windows95",AX=5707h"Windows95"

Top
215702 - INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTES FOR FILE
INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTES FOR FILE
	AX = 5702h
	BX = file handle
	CX = size of result buffer or 0000h
	DS:SI -> EAP list (see #01667)
	ES:DI -> buffer for returned EAV list (see #01670)
Return: CF clear if successful
	    CX = size of returned data
	CF set on error
	    AX = error code (see #01680)
Desc:	get the current value of one or more extended attributes
Notes:	if CX=0000h on entry, ES:DI is ignored and no data is actually
	  returned, only the amount of data which is available
	the default DOS 4 behavior is to return a single word of 0000h (no
	  structures) in the result buffer if CX>=0002h on entry; this
	  functionality was apparently never released to the public
SeeAlso: AX=5703h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh

Format of EAP (extended attribute properties) list:
Offset	Size	Description	(Table 01667)
 00h	WORD	number of EAP structures following
 02h	var	array of EAP structures (see #01668)
SeeAlso: #01670

Format of EAP (extended attribute property) structure:
Offset	Size	Description	(Table 01668)
 00h	BYTE	attribute type
		01h boolean (either 00h or 01h)
		02h number (BYTE, WORD, or DWORD)
		03h string
		04h date stamp
		05h time stamp
 01h	WORD	EAP flags (see #01669)
 03h	BYTE	size of reference string (name)
 04h  N BYTEs	reference string

Bitfields for EAP flags:
Bit(s)	Description	(Table 01669)
 12	unchangeable
 13	ignore
 14	unchangeable
 15	used by COMMAND.COM for code page, but not understood by ATTRIB

Format of EAV (extended attribute value) list:
Offset	Size	Description	(Table 01670)
 00h	WORD	number of EAV structures following
 02h	var	array of Extended Attribute Value structures (see #01671)
SeeAlso: #01667

Format of Extended Attribute Value structures:
Offset	Size	Description	(Table 01671)
 00h  4 BYTEs	???
 04h	BYTE	size of reference string
 05h	WORD	size of value
 07h	var	reference string
	var	value

Top
215702 - INT 21 - OS/2 v1.1+ Family API - DosQFileInfo
INT 21 - OS/2 v1.1+ Family API - DosQFileInfo
	AX = 5702h
	BX = file handle
	CX = size of buffer for information
	DX = level of information
	    0001h standard file information (see #01672)
	    0002h Query EA Size (see #01672)
	    0003h Query EAs from List (see #01673)
	    0004h Query All EAs (see #01673)
	ES:DI -> buffer for information (see #01672,#01673)
Return: CF clear if successful
	CF set on error
	    AX = error code
SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2",AH=6Dh"OS/2"

Format of OS/2 DosQFileInfo:
Offset	Size	Description	(Table 01672)
 00h	WORD	creation date
 02h	WORD	creation time
 04h	WORD	last access date
 06h	WORD	last access time
 08h	WORD	last write date
 0Ah	WORD	last write time
 0Ch	DWORD	file size in bytes
 10h	DWORD	allocated space in bytes
 14h	WORD	file attributes
---level 2 only---
 16h	DWORD	size of Extended Attributes in byte
SeeAlso: #01673,#01676

Format of OS/2 DosQFileInfo, EAOP structure:
Offset	Size	Description	(Table 01673)
 00h	DWORD	pointer to general EA list (see #01674)
 04h	DWORD	pointer to buffer for full EA list, with length field set
 08h	DWORD	(ret) error
Note:	for info level 3, the first pointer must contain the address of a
	  list of the Extended Attributes to be retrieved; for info level 4,
	  it should be 0000h:0000h
SeeAlso: #01672,#01676

Format of OS/2 DosQFileInfo, General EA List:
Offset	Size	Description	(Table 01674)
 00h	DWORD	(call) total size of list in bytes (including this field)
		(ret) number of bytes actually used (including this field)
 04h	var	Extended Attribute entries (see #01675) [packed arrray]

Format of OS/2 DosQFileInfo, General EA entry:
Offset	Size	Description	(Table 01675)
 00h	BYTE	length of Extended Attribute name (excluding terminating NUL)
 01h  N BYTEs	EA name
	BYTE	00h
SeeAlso: #01674

Format of OS/2 DosQFileInfo, Full EA List:
Offset	Size	Description	(Table 01676)
 00h	DWORD	(call) total size of list in bytes (including this field)
		(ret) number of bytes actually used (including this field)
 04h	var	Extended Attribute data (see #01677) [packed array]
SeeAlso: #01672,#01673

Format of OS/2 Extended Attribute data (struct FEA):
Offset	Size	Description	(Table 01677)
 00h	BYTE	flags
		bit 7: critical EA
 01h	BYTE	length of Extended Attribute name (excluding terminating NUL)
 02h	WORD	length of Extended Attribute value
 04h  N BYTEs	EA name
	BYTE	00h
      M BYTEs	EA value

Top
215702BXFFFF - INT 21 - OS/2 v1.1+ Compatibility Box Family API - DosQPathInfo
INT 21 - OS/2 v1.1+ Compatibility Box Family API - DosQPathInfo
	AX = 5702h
	BX = FFFFh
	CX = size of buffer for information
	DX = level of information (0002h)
	DS:SI -> filename
	ES:DI -> buffer for FAPI path information (see #01678)
Return: CF clear if successful
	    AL = 00h
	CF set on error
	    AX = error code
SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh

Format of FAPI path information:
Offset	Size	Description	(Table 01678)
 00h 22 BYTEs	???
 16h	DWORD	extended attribute size (none present if less than 5)

Top
215703 - INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTE PROPERTIES
INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTE PROPERTIES
	AX = 5703h
	BX = file handle
	CX = size of result buffer or 0000h
	ES:DI -> result buffer
Return: CF clear if successful
	    CX = size of returned data
	CF set on error
	    AX = error code (see #01680)
	ES:DI -> zero word (DOS 4.0) if CX >= 2 on entry
Desc:	get a list of the extended attributes which are defined for the
	  specified file
Notes:	if CX=0000h on entry, ES:DI is ignored and no data is actually
	  returned, only the amount of data which is available
	the default DOS 4 behavior is to return a trivial EAP list consisting
	  of the single word 0000h (no EAP structures) if CX>=0002h on entry;
	  this functionality was apparently never released to the public
SeeAlso: AX=5702h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh

Top
215703 - INT 21 - OS/2 v1.1+ Family API - DosSetFileInfo
INT 21 - OS/2 v1.1+ Family API - DosSetFileInfo
	AX = 5703h
	BX = file handle
	CX = size of information buffer
	DX = level of information
	ES:DI -> information buffer
Return: CF clear if successful
	CF set on error
	    AX = error code
SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh

Top
215703BXFFFF - INT 21 - OS/2 v1.1+ Family API - DosSetPathInfo
INT 21 - OS/2 v1.1+ Family API - DosSetPathInfo
	AX = 5703h
	BX = FFFFh
	CX = size of information buffer
	DX = level of information
	DS:SI -> filename
	ES:DI -> information buffer
Return: CF clear if successful
	CF set on error
	    AX = error code
SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2"

Top
215704 - INT 21 - DOS 4.x only - SET EXTENDED ATTRIBUTES
INT 21 - DOS 4.x only - SET EXTENDED ATTRIBUTES
	AX = 5704h
	BX = file handle
	ES:DI -> EAV list (see #01670)
Return: CF clear if successful
	CF set on error
	    AX = error code (see #01680)
Note:	the default DOS 4 behavior is to do nothing and return successfully;
	  this functionality was apparently never released to the public
SeeAlso: AX=5702h,AX=5703h,INT 2F/AX=112Dh

Top
215704 - INT 21 - MS-DOS 7/Windows95 - GET LAST ACCESS DATE AND TIME
INT 21 - MS-DOS 7/Windows95 - GET LAST ACCESS DATE AND TIME
	AX = 5704h
	BX = file handle
Return: CF clear if successful
	    DX = last access date (see #01666)
	    CX = last access time (currently always 0000h)
	CF set on error
	    AX = error code
SeeAlso: AX=5701h,AX=5705h,AX=5706h

Top
215705 - INT 21 - MS-DOS 7/Windows95 - SET LAST ACCESS DATE AND TIME
INT 21 - MS-DOS 7/Windows95 - SET LAST ACCESS DATE AND TIME
	AX = 5705h
	BX = file handle
	CX = new last-access time (currently not supported, must be 0000h)
	DX = new last-access date (see #01666)
Return: CF clear if successful
	CF set on error
	    AX = error code
SeeAlso: AX=5700h,AX=5704h"Windows95",AX=5707h

Top
215706 - INT 21 - MS-DOS 7/Windows95 - GET CREATION DATE AND TIME
INT 21 - MS-DOS 7/Windows95 - GET CREATION DATE AND TIME
	AX = 5706h
	BX = file handle
Return: CF clear if successful
	    CX = creation time (see #01665)
	    DX = creation date (see #01666)
	    SI = number of 10-millisecond units past time in CX (0-199)
	CF set on error
	    AX = error code
SeeAlso: AX=5701h,AX=5704h"Windows95",AX=5707h

Top
215707 - INT 21 - MS-DOS 7/Windows95 - SET CREATION DATE AND TIME
INT 21 - MS-DOS 7/Windows95 - SET CREATION DATE AND TIME
	AX = 5707h
	BX = file handle
	CX = new creation time (see #01665)
	DX = new creation date (see #01666)
	SI = new creation time: 10-millisecond units past time in CX (0-199)
Return: CF clear if successful
	CF set on error
	    AX = error code
SeeAlso: AX=5700h,AX=5705h,AX=5706h

Top
215741 - INT 21 - VIRUS - "WARP" -INSTALLATION CHECK
INT 21 - VIRUS - "WARP" -INSTALLATION CHECK
	AX = 5741h
Return: AX = 5250h if resident
SeeAlso: AX=5643h"VIRUS",AX=58CCh"VIRUS"

Top
215757BX5757 - INT 21 U - IBM Genie - Resident Manager - INSTALLATION CHECK
INT 21 U - IBM Genie - Resident Manager - INSTALLATION CHECK
	AX = 5757h
	BX = 5757h
Return: AX = 0000h if installed
	    BX = ???
	    DX = ???
	    DS:SI -> list of 27 DWORD entry point addresses
Program: IBM Genie is a set of utility TSRs by Helix Software
Note:	other functions possible if BX <> 5757h, but details not yet available

Top
215758 - INT 21 U - Headroom - API
INT 21 U - Headroom - API
	AX = 5758h
	BL = function
	    00h ???
	    01h get Headroom location
		Return: CF clear if installed
			    AX = PSP segment of Headroom TSR
			    BX = paragraphs of memory used by Headroom
			CF set if not (normal DOS return)
		Note:	this function is also used as an installation check
	    02h get INT 21 handler
		Return: CF clear
			ES:BX -> Headroom's INT 21 handler
		Note: also sets unknown flag
	    03h launch application???
		DS:SI -> 233-byte application record
		Return: ???
	    04h ???
		???
		Return: CF clear
	    05h get swap directory
		Return: CF clear
			DX:AX -> ASCIZ swap directory name
	    06h ???
		DX = ???
		Return: CF clear
	    07h ???
	    08h ???
	    09h get current application
		Return: BX = application number
	    0Ah ???
		DX = application number
		DS:SI = ???
		Return: ???
	    0Bh ???
	    0Ch ???
		DX = application number
		???
		Return: ???
	    0Dh ???
		DX = application number
		???
		Return: ???
	    0Eh get ???
		Return: CF clear
			AX = ???
	    0Fh set ??? flag
	    10h clear ??? flag
	    11h find application by name
		DS:SI -> ASCIZ application name
		Return: CF clear
			AX = application number or FFFFh if not loaded
	    12h ???
		DX = application number
		Return: CF clear
			???
	    13h ???
		Return: CF clear
	    14h ???
		same as function 13h
	    15h set ???
		DX = ???
	    16h get ???
		Return: AX = ??? set by function 15h
	    17h get ???
		Return: BX = ???
			CX = ??? (may be pointer in BX:CX)
	    18h BUG: branches incorrectly due to fencepost error
Program: Headroom is a TSR/task switcher by Helix Software
SeeAlso: AX=4C57h,AX=5757h,INT 2F/AX=5758h

Top
2158 - INT 21 - DOS 2.11+ - GET OR SET MEMORY ALLOCATION STRATEGY
INT 21 - DOS 2.11+ - GET OR SET MEMORY ALLOCATION STRATEGY
	AH = 58h
	AL = subfunction
	    00h get allocation strategy
		Return: AX = current strategy (see #01679)
	    01h set allocation strategy
		BL = new allocation strategy (see #01679)
		BH = 00h (DOS 5+)
Return: CF clear if successful
	CF set on error
	    AX = error code (01h) (see #01680)
Notes:	the Set subfunction accepts any value in BL for DOS 3.x and 4.x;
	  2 or greater means last fit
	the Get subfunction returns the last value set
	setting an allocation strategy involving high memory does not
	  automatically link in the UMB memory chain; this must be done
	  explicitly with AX=5803h in order to actually allocate high memory
	a program which changes the allocation strategy should restore it
	  before terminating
	Toshiba MS-DOS v2.11 supports subfunctions 00h and 01h, as does the
	  TI Professional MS-DOS v2.13
	DR DOS 3.41 reportedly reverses subfunctions 00h and 01h
SeeAlso: AH=48h,AH=49h,AH=4Ah,INT 2F/AX=4310h"XMS",INT 67/AH=3Fh

(Table 01679)
Values for DOS memory allocation strategy:
 00h low memory first fit
 01h low memory best fit
 02h low memory last fit
---DOS 5+ ---
 40h high memory first fit
 41h high memory best fit
 42h high memory last fit
 80h first fit, try high then low memory
 81h best fit, try high then low memory
 82h last fit, try high then low memory

Top
2158 - INT 21 - DOS 5+ - GET OR SET UMB LINK STATE
INT 21 - DOS 5+ - GET OR SET UMB LINK STATE
	AH = 58h
	AL = subfunction
	    02h get UMB link state
		Return: AL = current link state
			    00h UMBs not part of DOS memory chain
			    01h UMBs in DOS memory chain
	    03h set UMB link state
		BX = new link state
		    0000h remove UMBs from DOS memory chain
		    0001h add UMBs to DOS memory chain
Return: CF clear if successful
	CF set on error
	    AX = error code (01h) (see #01680)
Notes:	a program which changes the UMB link state should restore it before
	  terminating
	UMBs will only be available if CONFIG.SYS contains the line DOS=UMB,
	  the UMBs have been linked into the memory chain with AX=5803h, and
	  the allocation strategy has been set to include high memory with
	  AX=5801h
SeeAlso: #01687,#02766 at INT 2F/AX=4310h

Top
2158CC - INT 21 - VIRUS - "1067"/"Headcrash" - INSTALLATION CHECK
INT 21 - VIRUS - "1067"/"Headcrash" - INSTALLATION CHECK
	AX = 58CCh
Return: CF clear if resident
SeeAlso: AX=5741h"VIRUS",AX=5643h,AX=5252h,AX=58DDh,AX=6303h"VIRUS",AX=6969h

Top
2158DD - INT 21 - VIRUS - "1067"/"Headcrash" - GET ORIGINAL INT 21h VECTOR
INT 21 - VIRUS - "1067"/"Headcrash" - GET ORIGINAL INT 21h VECTOR
	AX = 58DDh
Return: CX = code segment of virus
	ES:BX = old INT 21h vector
SeeAlso: AX=5252h,AX=58CCh,AX=6969h

Top
2159--BX0000 - INT 21 - DOS 3.0+ - GET EXTENDED ERROR INFORMATION
INT 21 - DOS 3.0+ - GET EXTENDED ERROR INFORMATION
	AH = 59h
	BX = 0000h
Return: AX = extended error code (see #01680)
	BH = error class (see #01682)
	BL = recommended action (see #01683)
	CH = error locus (see #01684)
	ES:DI may be pointer (see #01681, #01680)
	CL, DX, SI, BP, and DS destroyed
Notes:	functions available under DOS 2.x map the true DOS 3.0+ error code into
	  one supported under DOS 2.x
	you should call this function to retrieve the true error code when an
	  FCB or DOS 2.x call returns an error
	under DR DOS 5.0, this function does not use any of the DOS-internal
	  stacks and may thus be called at any time
SeeAlso: AH=59h/BX=0001h,AX=5D0Ah,INT 2F/AX=122Dh,INT 24

(Table 01680)
Values for DOS extended error code:
---DOS 2.0+ ---
 00h (0)   no error
 01h (1)   function number invalid
 02h (2)   file not found
 03h (3)   path not found
 04h (4)   too many open files (no handles available)
 05h (5)   access denied
 06h (6)   invalid handle
 07h (7)   memory control block destroyed
 08h (8)   insufficient memory
 09h (9)   memory block address invalid
 0Ah (10)  environment invalid (usually >32K in length)
 0Bh (11)  format invalid
 0Ch (12)  access code invalid
 0Dh (13)  data invalid
 0Eh (14)  reserved
 0Eh (14)  (PTS-DOS 6.51+, S/DOS 1.0+) fixup overflow
 0Fh (15)  invalid drive
 10h (16)  attempted to remove current directory
 11h (17)  not same device
 12h (18)  no more files
---DOS 3.0+ (INT 24 errors)---
 13h (19)  disk write-protected
 14h (20)  unknown unit
 15h (21)  drive not ready
 16h (22)  unknown command
 17h (23)  data error (CRC)
 18h (24)  bad request structure length
 19h (25)  seek error
 1Ah (26)  unknown media type (non-DOS disk)
 1Bh (27)  sector not found
 1Ch (28)  printer out of paper
 1Dh (29)  write fault
 1Eh (30)  read fault
 1Fh (31)  general failure
 20h (32)  sharing violation
 21h (33)  lock violation
 22h (34)  disk change invalid (ES:DI -> media ID structure)(see #01681)
 23h (35)  FCB unavailable
 23h (35)  (PTS-DOS 6.51+, S/DOS 1.0+) bad FAT
 24h (36)  sharing buffer overflow
 25h (37)  (DOS 4.0+) code page mismatch
 26h (38)  (DOS 4.0+) cannot complete file operation (EOF / out of input)
 27h (39)  (DOS 4.0+) insufficient disk space
 28h-31h   reserved
---OEM network errors (INT 24)---
 32h (50)  network request not supported
 33h (51)  remote computer not listening
 34h (52)  duplicate name on network
 35h (53)  network name not found
 36h (54)  network busy
 37h (55)  network device no longer exists
 38h (56)  network BIOS command limit exceeded
 39h (57)  network adapter hardware error
 3Ah (58)  incorrect response from network
 3Bh (59)  unexpected network error
 3Ch (60)  incompatible remote adapter
 3Dh (61)  print queue full
 3Eh (62)  queue not full
 3Fh (63)  not enough space to print file
 40h (64)  network name was deleted
 41h (65)  network: Access denied
	  (DOS 3.0+ [maybe 3.3+???]) codepage switching not possible
	    (see also INT 21/AX=6602h,INT 2F/AX=AD42h)
 42h (66)  network device type incorrect
 43h (67)  network name not found
 44h (68)  network name limit exceeded
 45h (69)  network BIOS session limit exceeded
 46h (70)  temporarily paused
 47h (71)  network request not accepted
 48h (72)  network print/disk redirection paused
 49h (73)  network software not installed
	    (LANtastic) invalid network version
 4Ah (74)  unexpected adapter close
	    (LANtastic) account expired
 4Bh (75)  (LANtastic) password expired
 4Ch (76)  (LANtastic) login attempt invalid at this time
 4Dh (77)  (LANtastic v3+) disk limit exceeded on network node
 4Eh (78)  (LANtastic v3+) not logged in to network node
 4Fh (79)  reserved
---end of errors reportable via INT 24---
 50h (80)  file exists
 51h (81)  (undoc) duplicated FCB
 52h (82)  cannot make directory
 53h (83)  fail on INT 24h
---network-related errors (non-INT 24)---
 54h (84)  (DOS 3.3+) too many redirections / out of structures
 55h (85)  (DOS 3.3+) duplicate redirection / already assigned
 56h (86)  (DOS 3.3+) invalid password
 57h (87)  (DOS 3.3+) invalid parameter
 58h (88)  (DOS 3.3+) network write fault
 59h (89)  (DOS 4.0+) function not supported on network / no process slots
	      available
 5Ah (90)  (DOS 4.0+) required system component not installed / not frozen
 5Bh (91)  (DOS 4.0+,NetWare4) timer server table overflowed
 5Ch (92)  (DOS 4.0+,NetWare4) duplicate in timer service table
 5Dh (93)  (DOS 4.0+,NetWare4) no items to work on
 5Fh (95)  (DOS 4.0+,NetWare4) interrupted / invalid system call
 64h (100) (MSCDEX) unknown error
 64h (100) (DOS 4.0+,NetWare4) open semaphore limit exceeded
 65h (101) (MSCDEX) not ready
 65h (101) (DOS 4.0+,NetWare4) exclusive semaphore is already owned
 66h (102) (MSCDEX) EMS memory no longer valid
 66h (102) (DOS 4.0+,NetWare4) semaphore was set when close attempted
 67h (103) (MSCDEX) not High Sierra or ISO-9660 format
 67h (103) (DOS 4.0+,NetWare4) too many exclusive semaphore requests
 68h (104) (MSCDEX) door open
 68h (104) (DOS 4.0+,NetWare4) operation invalid from interrupt handler
 69h (105) (DOS 4.0+,NetWare4) semaphore owner died
 6Ah (106) (DOS 4.0+,NetWare4) semaphore limit exceeded
 6Bh (107) (DOS 4.0+,NetWare4) insert drive B: disk into A: / disk changed
 6Ch (108) (DOS 4.0+,NetWare4) drive locked by another process
 6Dh (109) (DOS 4.0+,NetWare4) broken pipe
 6Eh (110) (DOS 5.0+,NetWare4) pipe open/create failed
 6Fh (111) (DOS 5.0+,NetWare4) pipe buffer overflowed
 70h (112) (DOS 5.0+,NetWare4) disk full
 71h (113) (DOS 5.0+,NetWare4) no more search handles
 72h (114) (DOS 5.0+,NetWare4) invalid target handle for dup2
 73h (115) (DOS 5.0+,NetWare4) bad user virtual address / protection violation
 74h (116) (DOS 5.0+) VIOKBD request
 74h (116) (NetWare4) error on console I/O
 75h (117) (DOS 5.0+,NetWare4) unknown category code for IOCTL
 76h (118) (DOS 5.0+,NetWare4) invalid value for verify flag
 77h (119) (DOS 5.0+,NetWare4) level four driver not found by DOS IOCTL
 78h (120) (DOS 5.0+,NetWare4) invalid / unimplemented function number
 79h (121) (DOS 5.0+,NetWare4) semaphore timeout
 7Ah (122) (DOS 5.0+,NetWare4) buffer too small to hold return data
 7Bh (123) (DOS 5.0+,NetWare4) invalid character or bad file-system name
 7Ch (124) (DOS 5.0+,NetWare4) unimplemented information level
 7Dh (125) (DOS 5.0+,NetWare4) no volume label found
 7Eh (126) (DOS 5.0+,NetWare4) module handle not found
 7Fh (127) (DOS 5.0+,NetWare4) procedure address not found
 80h (128) (DOS 5.0+,NetWare4) CWait found no children
 81h (129) (DOS 5.0+,NetWare4) CWait children still running
 82h (130) (DOS 5.0+,NetWare4) invalid operation for direct disk-access handle
 83h (131) (DOS 5.0+,NetWare4) attempted seek to negative offset
 84h (132) (DOS 5.0+,NetWare4) attempted to seek on device or pipe
---JOIN/SUBST errors---
 85h (133) (DOS 5.0+,NetWare4) drive already has JOINed drives
 86h (134) (DOS 5.0+,NetWare4) drive is already JOINed
 87h (135) (DOS 5.0+,NetWare4) drive is already SUBSTed
 88h (136) (DOS 5.0+,NetWare4) can not delete drive which is not JOINed
 89h (137) (DOS 5.0+,NetWare4) can not delete drive which is not SUBSTed
 8Ah (138) (DOS 5.0+,NetWare4) can not JOIN to a JOINed drive
 8Bh (139) (DOS 5.0+,NetWare4) can not SUBST to a SUBSTed drive
 8Ch (140) (DOS 5.0+,NetWare4) can not JOIN to a SUBSTed drive
 8Dh (141) (DOS 5.0+,NetWare4) can not SUBST to a JOINed drive
 8Eh (142) (DOS 5.0+,NetWare4) drive is busy
 8Fh (143) (DOS 5.0+,NetWare4) can not JOIN/SUBST to same drive
 90h (144) (DOS 5.0+,NetWare4) directory must not be root directory
 91h (145) (DOS 5.0+,NetWare4) can only JOIN to empty directory
 92h (146) (DOS 5.0+,NetWare4) path is already in use for SUBST
 93h (147) (DOS 5.0+,NetWare4) path is already in use for JOIN
 94h (148) (DOS 5.0+,NetWare4) path is in use by another process
 95h (149) (DOS 5.0+,NetWare4) directory previously SUBSTituted
 96h (150) (DOS 5.0+,NetWare4) system trace error
 97h (151) (DOS 5.0+,NetWare4) invalid event count for DosMuxSemWait
 98h (152) (DOS 5.0+,NetWare4) too many waiting on mutex
 99h (153) (DOS 5.0+,NetWare4) invalid list format
 9Ah (154) (DOS 5.0+,NetWare4) volume label too large
 9Bh (155) (DOS 5.0+,NetWare4) unable to create another TCB
 9Ch (156) (DOS 5.0+,NetWare4) signal refused
 9Dh (157) (DOS 5.0+,NetWare4) segment discarded
 9Eh (158) (DOS 5.0+,NetWare4) segment not locked
 9Fh (159) (DOS 5.0+,NetWare4) invalid thread-ID address
-----
 A0h (160) (DOS 5.0+) bad arguments
 A0h (160) (NetWare4) bad environment pointer
 A1h (161) (DOS 5.0+,NetWare4) invalid pathname passed to EXEC
 A2h (162) (DOS 5.0+,NetWare4) signal already pending
 A3h (163) (DOS 5.0+) uncertain media
 A3h (163) (NetWare4) ERROR_124 mapping
 A4h (164) (DOS 5.0+) maximum number of threads reached
 A4h (164) (NetWare4) no more process slots
 A5h (165) (NetWare4) ERROR_124 mapping
 B0h (176) (MS-DOS 7.0) volume is not locked
 B1h (177) (MS-DOS 7.0) volume is locked in drive
 B2h (178) (MS-DOS 7.0) volume is not removable
 B4h (180) (MS-DOS 7.0) lock count has been exceeded
 B4h (180) (NetWare4) invalid segment number
 B5h (181) (MS-DOS 7.0) a valid eject request failed
 B5h (181) (DOS 5.0-6.0,NetWare4) invalid call gate
 B6h (182) (DOS 5.0+,NetWare4) invalid ordinal
 B7h (183) (DOS 5.0+,NetWare4) shared segment already exists
 B8h (184) (DOS 5.0+,NetWare4) no child process to wait for
 B9h (185) (DOS 5.0+,NetWare4) NoWait specified and child still running
 BAh (186) (DOS 5.0+,NetWare4) invalid flag number
 BBh (187) (DOS 5.0+,NetWare4) semaphore does not exist
 BCh (188) (DOS 5.0+,NetWare4) invalid starting code segment
 BDh (189) (DOS 5.0+,NetWare4) invalid stack segment
 BEh (190) (DOS 5.0+,NetWare4) invalid module type (DLL can not be used as
	      application)
 BFh (191) (DOS 5.0+,NetWare4) invalid EXE signature
 C0h (192) (DOS 5.0+,NetWare4) EXE marked invalid
 C1h (193) (DOS 5.0+,NetWare4) bad EXE format (e.g. DOS-mode program)
 C2h (194) (DOS 5.0+,NetWare4) iterated data exceeds 64K
 C3h (195) (DOS 5.0+,NetWare4) invalid minimum allocation size
 C4h (196) (DOS 5.0+,NetWare4) dynamic link from invalid Ring
 C5h (197) (DOS 5.0+,NetWare4) IOPL not enabled
 C6h (198) (DOS 5.0+,NetWare4) invalid segment descriptor privilege level
 C7h (199) (DOS 5.0+,NetWare4) automatic data segment exceeds 64K
 C8h (200) (DOS 5.0+,NetWare4) Ring2 segment must be moveable
 C9h (201) (DOS 5.0+,NetWare4) relocation chain exceeds segment limit
 CAh (202) (DOS 5.0+,NetWare4) infinite loop in relocation chain
 CBh (203) (NetWare4) environment variable not found
 CCh (204) (NetWare4) not current country
 CDh (205) (NetWare4) no signal sent
 CEh (206) (NetWare4) file name not 8.3
 CFh (207) (NetWare4) Ring2 stack in use
 D0h (208) (NetWare4) meta expansion is too long
 D1h (209) (NetWare4) invalid signal number
 D2h (210) (NetWare4) inactive thread
 D3h (211) (NetWare4) file system information not available
 D4h (212) (NetWare4) locked error
 D5h (213) (NetWare4) attempted to execute non-family API call in DOS mode
 D6h (214) (NetWare4) too many modules
 D7h (215) (NetWare4) nesting not allowed
 E6h (230) (NetWare4) non-existent pipe, or bad operation
 E7h (231) (NetWare4) pipe is busy
 E8h (232) (NetWare4) no data available for nonblocking read
 E9h (233) (NetWare4) pipe disconnected by server
 EAh (234) (NetWare4) more data available
 FFh (255) (NetWare4) invalid drive
Note:	there is a report that some Microsoft documentation shifts all DOS
	  error codes in the range BCh (188) through CAh (202) up by one
	  compared to what is listed here; that is probably a documentation
	  error
SeeAlso: #01682,#01683,#01684,#01961

Format of media ID structure:
Offset	Size	Description	(Table 01681)
 00h 12 BYTEs	ASCIZ volume label of required disk
 0Ch	DWORD	serial number (DOS 4.0+)
SeeAlso: #01680

(Table 01682)
Values for DOS Error Class:
 01h (1)  out of resource (storage space or I/O channels)
 02h (2)  temporary situation (file or record lock)
 03h (3)  authorization / permission problem (denied access)
 04h (4)  internal system error (system software bug)
 05h (5)  hardware failure
 06h (6)  system failure (configuration file missing or incorrect)
 07h (7)  application program error
 08h (8)  not found
 09h (9)  bad format
 0Ah (10) locked
 0Bh (11) media error
 0Ch (12) already exists / collision with existing item
 0Dh (13) unknown / other
 0Eh (14) (undoc) cannot
 0Fh (15) (undoc) time
SeeAlso: #01680,#01683,#01684

(Table 01683)
Values for DOS Suggested Action:
 01h	retry
 02h	delayed retry (after pause)
 03h	prompt user to reenter input
 04h	abort after cleanup
 05h	immediate abort ("panic")
 06h	ignore
 07h	retry after user intervention
SeeAlso: #01680,#01682,#01684

(Table 01684)
Values for DOS Error Locus:
 01h	unknown or not appropriate
 02h	block device (disk error)
 03h	network related
 04h	serial device (timeout)
 04h	(PTS-DOS 6.51+ & S/DOS 1.0+) character device
 05h	memory related
SeeAlso: #01680,#01682,#01683

Top
2159--BX0001 - INT 21 - European MS-DOS 4.0 - GET HARD ERROR INFORMATION
INT 21 - European MS-DOS 4.0 - GET HARD ERROR INFORMATION
	AH = 59h
	BX = 0001h
Return: ES:DI -> hard error information packet (see #01685) for most recent
		hard (critical) error
SeeAlso: AH=59h/BX=0000h,AH=95h,INT 24

Format of European MS-DOS 4.0 hard error information packet:
Offset	Size	Description	(Table 01685)
 00h	WORD	contents of AX at system entry
 02h	WORD	Process ID which encountered error
 04h	WORD	contents of AX at time of error
 06h	BYTE	error type
		00h physical I/O error
		01h disk change request
		02h file sharing violation
		03h FCB problem
		04h file locking violation
		05h bad FAT
		06h network detected error
 07h	BYTE	INT 24 error code
 08h	WORD	extended error code (see #01680)
 0Ah	DWORD	pointer to associated device

Top
215A - INT 21 - DOS 3.0+ - CREATE TEMPORARY FILE
INT 21 - DOS 3.0+ - CREATE TEMPORARY FILE
	AH = 5Ah
	CX = file attribute (see #01420 at AX=4301h)
	DS:DX -> ASCIZ path ending with a '\' + 13 zero bytes to receive the
		generated filename
Return: CF clear if successful
	    AX = file handle opened for read/write in compatibility mode
	    DS:DX pathname extended with generated name for temporary file
	CF set on error
	    AX = error code (03h,04h,05h) (see #01680)
Desc:	creates a file with a unique name which must be explicitly deleted
Notes:	under the FlashTek X-32 DOS extender, the path pointer is in DS:EDX
	MS-DOS 3.0-4.0 and DR DOS 3.4-5.0 generate the filename as a sequence
	  of hex digits based on the current date and time; MS-DOS 6+,
	  DR DOS 6, and Novell DOS 7 use letters A-P in place of hex digits
	MS-DOS 5.0 and DR DOS 3.41/5.0 will insert a missing trailing backslash
	  before appending the generated filename, but due to this, an empty
	  string results in a file in the root directory
BUGS:	COMPAQ DOS 3.31 hangs if the pathname is at XXXXh:0000h; it apparently
	  wraps around to the end of the segment
	MS-DOS 5.00 revisions A and B and PC-DOS 5.00 revision A reportedly
	  hang the system if the specified path is the root directory and the
	  root directory is full (no free directory entries)
	Mark Incley <mincley@krisalis.demon.co.uk> reports that this function
	  hangs in MS-DOS 6.2x if the name includes two consecutive path
	  separators (e.g. C:\\ )
SeeAlso: AH=3Ch,AH=5Bh

Top
215B - INT 21 - DOS 3.0+ - CREATE NEW FILE
INT 21 - DOS 3.0+ - CREATE NEW FILE
	AH = 5Bh
	CX = file attribute (see #01420 at AX=4301h)
	DS:DX -> ASCIZ filename
Return: CF clear if successful
	    AX = file handle opened for read/write in compatibility mode
	CF set on error
	    AX = error code (03h,04h,05h,50h) (see #01680)
Notes:	unlike AH=3Ch, this function will fail if the specified file exists
	  rather than truncating it; this permits its use in creating semaphore
	  files because it is an atomic "test and set" operation
	under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
SeeAlso: AH=3Ch,AH=5Ah

Top
215C - INT 21 - DOS 3.0+ - "FLOCK" - RECORD LOCKING
INT 21 - DOS 3.0+ - "FLOCK" - RECORD LOCKING
	AH = 5Ch
	AL = subfunction
	    00h lock region of file
	    01h unlock region of file
	BX = file handle
	CX:DX = start offset of region within file
	SI:DI = length of region in bytes
Return: CF clear if successful
	CF set on error
	    AX = error code (01h,06h,21h,24h) (see #01680)
Notes:	error returned unless SHARE or network installed
	an unlock call must specify the same region as some prior lock call
	locked regions become entirely inaccessible to other processes
	duplicate handles created with AH=45h or AH=46h inherit locks, but
	  handles inherited by child processes (see AH=4Bh) do not
	under DR DOS 3.41 and 5.0, if a process opens a file without the no-
	  inherit flag and then starts a child, any locks set by the parent
	  are ignored, and the child will only get an error if it tries to
	  lock an area previously locked by the parent process.	 Under Novell
	  DOS 7, this function is fully supported as in MS-DOS.
SeeAlso: AX=440Bh,AH=BCh,AH=BEh,INT 2F/AX=110Ah,INT 2F/AX=110Bh

Top
215D00 - INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
	AX = 5D00h
	DS:DX -> DOS parameter list (see #01686)
	DPL contains all register values for a call to INT 21h
Return: as appropriate for function being called
Notes:	does not check AH.  Out of range values will crash the system
	executes using specified computer ID and process ID
	sharing delay loops skipped
	a special sharing mode is enabled to handle FCBs opened across network
	wildcards are enabled for DELETE (AH=41h) and RENAME (AH=56h) under
	  MS-DOS; under DR DOS 3.41, wildcards corrupt the filesystem; and
	  under DR DOS 5.0-6.0, the call returns error code 03h due to improper
	  support for the server function call (refer to BUGS: section below)
	an extra file attribute parameter is enabled for OPEN (AH=3Dh),
	  DELETE (AH=41h), and RENAME (AH=56h)
	functions which take filenames require canonical names (as returned
	  by AH=60h); this is apparently to prevent multi-hop file forwarding
BUGS:	the OS/2 2.0 DOS Boot Session incorrectly maps DOS drive letters,
	  seemingly ignoring HPFS drives
	DR DOS 5.0-6.0 merely recursively call INT 21 after loading the
	  registers from the DPL, leading to problems for peer-to-peer
	  networks
SeeAlso: AH=3Dh,AH=41h,AH=56h,AH=60h

Format of DOS parameter list:
Offset	Size	Description	(Table 01686)
 00h	WORD	AX
 02h	WORD	BX
 04h	WORD	CX
 06h	WORD	DX
 08h	WORD	SI
 0Ah	WORD	DI
 0Ch	WORD	DS
 0Eh	WORD	ES
 10h	WORD	reserved (0)
 12h	WORD	computer ID (0 = current system)
 14h	WORD	process ID (PSP segment on specified computer)
Note:	under Windows Enhanced mode, the computer ID is normally the virtual
	  machine ID (see INT 2F/AX=1683h), though this can reportedly be
	  changed by setting UniqueDOSPSP= in SYSTEM.INI

Top
215D01 - INT 21 U - DOS 3.1+ internal - COMMIT ALL FILES FOR SPECIFIED COMPUTER/PROCESS
INT 21 U - DOS 3.1+ internal - COMMIT ALL FILES FOR SPECIFIED COMPUTER/PROCESS
	AX = 5D01h
	DS:DX -> DOS parameter list (see #01686), only computer ID and
		  process ID fields used
Return: CF set on error
	    AX = error code (see #01680)
	CF clear if successful
Notes:	flushes buffers and updates directory entries for each file which has
	  been written to; if remote file, calls INT 2F/AX=1107h
	the computer ID and process ID are stored but ignored under DOS 3.3
	not supported by DR DOS 3.41 and 5.0; returns error code 01h.  Fully
	  supported by Novell DOS 7
SeeAlso: AH=0Dh,AH=68h,INT 2F/AX=1107h

Top
215D02 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE FILE BY NAME
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE FILE BY NAME
	AX = 5D02h
	DS:DX -> DOS parameter list (see #01686), only fields DX, DS,
		  computer ID, and process ID used
	DPL's DS:DX -> ASCIZ name of file to close
Return: CF set on error
	    AX = error code (see #01680)
	CF clear if successful
Notes:	error unless SHARE is loaded (calls [SysFileTable-28h])
	  (see #01636 at AH=52h)
	name must be canonical fully-qualified, such as returned by AH=60h
	not supported by DR DOS 3.41 and 5.0; returns error code 01h
	not supported by Novell DOS 7, although in Update 15 it is reported
	  to no longer return an error code
SeeAlso: AX=5D03h,AX=5D04h,AH=3Eh,AH=60h

Top
215D03 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN COMPUTER
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN COMPUTER
	AX = 5D03h
	DS:DX -> DOS parameter list (see #01686), only computer ID used
Return: CF set on error
	    AX = error code (see #01680)
	CF clear if successful
Notes:	error unless SHARE is loaded (calls [SysFileTable-30h])
	  (see #01636 at AH=52h)
	not supported by DR DOS 3.41 and 5.0; returns error code 01h
	not supported by Novell DOS 7 (at least through Update 4; may be
	  supported in Update 15)
SeeAlso: AX=5D02h,AX=5D04h

Top
215D04 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN PROCESS
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN PROCESS
	AX = 5D04h
	DS:DX -> DOS parameter list (see #01686), only computer ID and
		  process ID fields used
Return: CF set on error
	    AX = error code (see #01680)
	CF clear if successful
Notes:	error unless SHARE is loaded (calls [SysFileTable-2Ch])
	   (see #01636 at AH=52h)
	not supported by DR DOS 3.41 and 5.0; returns error code 01h
	not supported by Novell DOS 7
SeeAlso: AX=5D02h,AX=5D03h,INT 2F/AX=111Dh

Top
215D05 - INT 21 U - DOS 3.1+ internal - SHARE.EXE - GET OPEN FILE LIST ENTRY
INT 21 U - DOS 3.1+ internal - SHARE.EXE - GET OPEN FILE LIST ENTRY
	AX = 5D05h
	DS:DX -> DOS parameter list (see #01686)
	DPL's BX = index of sharing record (see #01637 at AH=52h)
	DPL's CX = index of SFT in sharing record's SFT list
Return: CF clear if successful
	    ES:DI -> ASCIZ filename
	    BX = network machine number of SFT's owner
	    CX = number of locks held by SFT's owner
	CF set if either index out of range
	    AX = 0012h (no more files)
Notes:	error unless SHARE is loaded (calls [SysFileTable-18h])
	  (see #01636 at AH=52h)
	names are always canonical fully-qualified, such as returned by AH=60h
	not supported by DR DOS 3.41 and 5.0 and Novell DOS 7, but does not
	  return an error, instead destroying AX
SeeAlso: AH=5Ch,AH=60h

Top
215D06 - INT 21 U - DOS 3.0+ internal - GET ADDRESS OF DOS SWAPPABLE DATA AREA
INT 21 U - DOS 3.0+ internal - GET ADDRESS OF DOS SWAPPABLE DATA AREA
	AX = 5D06h
Return: CF set on error
	   AX = error code (see #01680)
	CF clear if successful
	    DS:SI -> nonreentrant data area (includes all three DOS stacks)
		(critical error flag is first byte) (see #01687)
	    CX = size in bytes of area which must be swapped while in DOS
	    DX = size in bytes of area which must always be swapped
Notes:	the Critical Error flag is used in conjunction with the InDOS flag
	  (see AH=34h) to determine when it is safe to enter DOS from a TSR
	setting CritErr flag allows use of functions 50h/51h from INT 28h under
	  DOS 2.x by forcing use of correct stack
	swapping the data area allows reentering DOS unless DOS is in a
	  critical section delimited by INT 2A/AH=80h and INT 2A/AH=81h,82h
	under DOS 4.0, AX=5D0Bh should be used instead of this function
	SHARE and other DOS utilities consult the byte at offset 04h in the
	  DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
	  in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
	DR DOS 3.41+ supports this function, but the SDA format beyond the
	  first 18h bytes is completely different from MS-DOS
BUG:	calling this function with certain values in DX crashes Novell DOS 7.0
	  prior to Update 14
SeeAlso: AX=5D0Bh,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h

Format of DOS 3.10-3.30 Swappable Data Area:
Offset	Size	Description	(Table 01687)
 -34	BYTE	(DOS 3.10+) printer echo flag (00h off, FFh active)
 -31	BYTE	(DOS 3.30) current switch character
 -30	BYTE	current memory allocation strategy (see AH=58h)
 -28	BYTE	(DOS 3.30) incremented on each INT 21/AX=5E01h call
 -27 16 BYTEs	(DOS 3.30) machine name set by INT 21/AX=5E01h
 -11  5 WORDs	zero-terminated list of offsets which need to be patched to
		  enable critical-section calls (see INT 2A/AH=80h)
 -1	BYTE	unused padding
---start of actual SDA---
 00h	BYTE	critical error flag ("ErrorMode")
 01h	BYTE	InDOS flag (count of active INT 21 calls)
 02h	BYTE	drive on which current critical error occurred, or FFh
		(DR DOS sets to drive number during INT 24, 00h otherwise)
 03h	BYTE	locus of last error
 04h	WORD	extended error code of last error
 06h	BYTE	suggested action for last error
 07h	BYTE	class of last error
 08h	DWORD	ES:DI pointer for last error
 0Ch	DWORD	current DTA (Disk Transfer Address)
		note: may point into SDA during the DOS EXEC function
		  (see AH=4Bh), so programs which swap the SDA must be
		  prepared to move the DTA to a private buffer if they
		  might be invoked during an EXEC
 10h	WORD	current PSP
 12h	WORD	stores SP across an INT 23
 14h	WORD	return code from last process termination (zerod after reading
		  with AH=4Dh)
 16h	BYTE	current drive
 17h	BYTE	extended break flag
---remainder need only be swapped if in DOS---
 18h	WORD	value of AX on call to INT 21
 1Ah	WORD	PSP segment for sharing/network
 1Ch	WORD	network machine number for sharing/network (0000h = us)
 1Eh	WORD	first usable memory block found when allocating memory
 20h	WORD	best usable memory block found when allocating memory
 22h	WORD	last usable memory block found when allocating memory
 24h	WORD	memory size in paragraphs (used only during initialization)
 26h	WORD	last entry checked during directory search
 28h	BYTE	flag: INT 24 returned Fail
 29h	BYTE	flags: allowable INT 24 actions (passed to INT 24 in AH)
 2Ah	BYTE	directory flag (00h directory, 01h file)
 2Bh	BYTE	flag: FFh if Ctrl-Break termination, 00h otherwise
 2Ch	BYTE	flag: allow embedded blanks in FCB
 2Dh	BYTE	padding (unused)
 2Eh	BYTE	day of month
 2Fh	BYTE	month
 30h	WORD	year - 1980
 32h	WORD	number of days since 01jan1980
 34h	BYTE	day of week (0 = Sunday)
 35h	BYTE	flag: console swapped during read from device
 36h	BYTE	flag: safe to call INT 28 if nonzero
 37h	BYTE	flag: if nonzero, INT 24 Abort turned into INT 24 Fail
		(set only during process termination)
 38h 26 BYTEs	device driver request header (see #02597 at INT 2F/AX=0802h)
 52h	DWORD	pointer to device driver entry point (used in calling driver)
 56h 22 BYTEs	device driver request header for I/O calls
 6Ch 14 BYTEs	device driver request header for disk status check
 7Ah	DWORD	pointer to device I/O buffer???
 7Eh	WORD	???
 80h	WORD	???
 82h	BYTE	type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
 83h	BYTE	padding (unused)
 84h  3 BYTEs	24-bit user number (see AH=30h)
 87h	BYTE	OEM number (see #01394 at AH=30h)
 88h	WORD	offset to error code conversion table for INT 25/INT 26
 8Ah  6 BYTEs	CLOCK$ transfer record (see #01688)
 90h	BYTE	device I/O buffer for single-byte I/O functions
 91h	BYTE	padding??? (unused)
 92h 128 BYTEs	buffer for filename
112h 128 BYTEs	buffer for filename
192h 21 BYTEs	findfirst/findnext search data block (see #01626 at AH=4Eh)
1A7h 32 BYTEs	directory entry for found file (see #01352 at AH=11h)
1C7h 81 BYTEs	copy of current directory structure for drive being accessed
218h 11 BYTEs	FCB-format filename for device name comparison
223h	BYTE	terminating NUL for above filename
224h 11 BYTEs	wildcard destination specification for rename (FCB format)
22Fh	BYTE	terminating NUL for above spec
230h	BYTE	???
231h	WORD	destination file/directory starting sector
233h  5 BYTEs	???
238h	BYTE	extended FCB file attribute
239h	BYTE	type of FCB (00h regular, FFh extended)
23Ah	BYTE	directory search attributes
23Bh	BYTE	file open/access mode
23Ch	BYTE	file found/delete flag
		bit 0: file found
		bit 4: file deleted
23Dh	BYTE	flag: device name found on rename, or file not found
23Eh	BYTE	splice flag (file name and directory name together)
23Fh	BYTE	flag indicating how DOS function was invoked
		(00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
240h	BYTE	sector position within cluster
241h	BYTE	flag: translate sector/cluster (00h no, 01h yes)
242h	BYTE	flag: 00h if read, 01h if write
243h	BYTE	current working drive number
244h	BYTE	cluster factor
245h	BYTE	flag: cluster split mode
246h	BYTE	line edit (AH=0Ah) insert mode flag (nonzero = on)
247h	BYTE	canonicalized filename referred to existing file/dir if FFh
248h	BYTE	volume ID flag
249h	BYTE	type of process termination (00h-03h) (see AH=4Dh)
24Ah	BYTE	file create flag (00h = no, search only)
24Bh	BYTE	value with which to replace first byte of deleted file's name
		  (normally E5h, but 00h as described under INT 21/AH=13h)
24Ch	DWORD	pointer to Drive Parameter Block for critical error invocation
		temp: used during process termination
250h	DWORD	pointer to stack frame containing user registers on INT 21
254h	WORD	stores SP across INT 24
256h	DWORD	pointer to DOS Drive Parameter Block for ???
25Ah	WORD	saving partial cluster number
25Ch	WORD	temp: sector of work current cluster
25Eh	WORD	high part of cluster number (only low byte referenced)
260h	WORD	??? temp
262h	BYTE	Media ID byte returned by AH=1Bh,1Ch
263h	BYTE	padding (unused)
264h	DWORD	pointer to device header when filename is character device
268h	DWORD	pointer to current SFT
26Ch	DWORD	pointer to current directory structure for drive being accessed
270h	DWORD	pointer to caller's FCB
274h	WORD	number of SFT to which file being opened will refer
276h	WORD	temporary storage for file handle
278h	DWORD	pointer to a JFT entry in process handle table
		  (see #01378 at AH=26h)
27Ch	WORD	offset in DOS DS of first filename argument
27Eh	WORD	offset in DOS DS of second filename argument
280h	WORD	offset of last component in pathname or FFFFh
282h	WORD	offset of transfer address to add
284h	WORD	last relative cluster within file being accessed
286h	WORD	temp: absolute cluster number being accessed
288h	WORD	directory sector number
28Ah	WORD	??? current cluster number
28Ch	WORD	current relative sector number within file
28Eh	WORD	current sector number
290h	WORD	current byte offset within sector
292h	DWORD	current offset in file
296h	DWORD	temp: file byte count
29Ah	WORD	temp: file byte count
29Ch	WORD	free file cluster entry
29Eh	WORD	last file cluster entry
2A0h	WORD	next file cluster number
2A2h	DWORD	number of bytes appended to file
2A6h	DWORD	pointer to current work disk buffer
2AAh	DWORD	pointer to working SFT
2AEh	WORD	used by INT 21 dispatcher to store caller's BX
2B0h	WORD	used by INT 21 dispatcher to store caller's DS
2B2h	WORD	temporary storage while saving/restoring caller's registers
2B4h	DWORD	pointer to prev call frame (offset 250h) if INT 21 reentered
		also switched to for duration of INT 24
2B8h 21 BYTEs	FindFirst search data for source file(s) of a rename operation
		(see #01626 at AH=4Eh)
2CDh 32 BYTEs	directory entry for file being renamed (see #01352 at AH=11h)
2EDh 331 BYTEs	critical error stack
   403h	 35 BYTEs scratch SFT
438h 384 BYTEs	disk stack (functions greater than 0Ch, INT 25,INT 26)
5B8h 384 BYTEs	character I/O stack (functions 01h through 0Ch)
---DOS 3.2,3.3x only---
738h	BYTE	device driver lookahead flag (usually printer)
		(see AH=64h"DOS 3.2+")
739h	BYTE	volume change flag
73Ah	BYTE	flag: virtual open
73Bh	BYTE	???
Note:	the only fields which remain valid BETWEEN calls to INT 21h are those
	  in the initial "swap-always" portion of the SDA
SeeAlso: #01690

Format of CLOCK$ transfer record:
Offset	Size	Description	(Table 01688)
 00h	WORD	number of days since 1-Jan-1980
 02h	BYTE	minutes
 03h	BYTE	hours
 04h	BYTE	hundredths of second
 05h	BYTE	seconds

Top
215D07 - INT 21 U - DOS 3.1+ network - GET REDIRECTED PRINTER MODE
INT 21 U - DOS 3.1+ network - GET REDIRECTED PRINTER MODE
	AX = 5D07h
Return: DL = mode
	    00h redirected output is combined
	    01h redirected output in separate print jobs
Note:	MS-DOS and DR DOS 3.41/5.0 simply push AX on the stack and call
	  INT 2F/AX=1125h
SeeAlso: AX=5D08h,AX=5D09h,INT 2F/AX=1125h

Top
215D08 - INT 21 U - DOS 3.1+ network - SET REDIRECTED PRINTER MODE
INT 21 U - DOS 3.1+ network - SET REDIRECTED PRINTER MODE
	AX = 5D08h
	DL = mode
	    00h redirected output is combined
	    01h redirected output placed in separate jobs, start new print job
		now
Return:	nothing
Note:	MS-DOS and DR DOS 3.41/5.0 simply push AX on the stack and call
	  INT 2F/AX=1125h
SeeAlso: AX=5D07h,AX=5D09h,INT 2F/AX=1125h

Top
215D09 - INT 21 U - DOS 3.1+ network - FLUSH REDIRECTED PRINTER OUTPUT
INT 21 U - DOS 3.1+ network - FLUSH REDIRECTED PRINTER OUTPUT
	AX = 5D09h
Return:	nothing
Desc:	forces redirected printer output to be printed, and starts a new print
	  job
Notes:	MS-DOS and DR DOS 3.41/5.0 simply push AX on the stack and call
	  INT 2F/AX=1125h
	this function is also supported by 10Net, which calls it Terminate All
	  Spool Jobs, and does not flush if in "combine" mode
SeeAlso: AX=5D07h,AX=5D08h,INT 2F/AX=1125h

Top
215D0A - INT 21 - DOS 3.1+ - SET EXTENDED ERROR INFORMATION
INT 21 - DOS 3.1+ - SET EXTENDED ERROR INFORMATION
	AX = 5D0Ah
	DS:DX -> 11-word DOS parameter list (see #01686)
Return: nothing.  next call to AH=59h will return values from fields AX,BX,CX,
	  DX,DI, and ES in corresponding registers
Notes:	documented for DOS 5+, but undocumented in earlier versions
	the MS-DOS Programmer's Reference incorrectly states that this call was
	  introduced in DOS 4, and fails to mention that the ERROR structure
	  passed to this function is a DOS parameter list.
BUGS:	DR DOS 3.41 and 5.0 read the value for ES from the DS field of the
	  DPL; fortunately, MS-DOS ignores the DS field, allowing a generic
	  routine which sets both DS and ES fields to the same value
	Novell DOS 7 (through at least Update 4) does not save the pointer,
	  which is always reported as 0000h:0000h by AH=59h; Update 15 fully
	  supports this function
SeeAlso: AH=59h/BX=0000h

Top
215D0B - INT 21 OU - DOS 4.x only - internal - GET DOS SWAPPABLE DATA AREAS
INT 21 OU - DOS 4.x only - internal - GET DOS SWAPPABLE DATA AREAS
	AX = 5D0Bh
Return: CF set on error
	    AX = error code (see #01680)
	CF clear if successful
	    DS:SI -> swappable data area list (see #01689)
Notes:	copying and restoring the swappable data areas allows DOS to be
	  reentered unless it is in a critical section delimited by calls to
	  INT 2A/AH=80h and INT 2A/AH=81h,82h
	SHARE and other DOS utilities consult the byte at offset 04h in the
	  DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
	  in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
	DOS 5+ use the SDA format listed below, but revert back to the DOS 3.x
	  call for finding the SDA (see #01687); Novell DOS 7 does not support
	  this function, either.
SeeAlso: AX=5D06h,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h,INT 2F/AX=1203h

Format of DOS 4.x swappable data area list:
Offset	Size	Description	(Table 01689)
 00h	WORD	count of data areas
 02h  N BYTEs	"count" copies of data area record
		Offset	Size	Description
		 00h	DWORD	address
		 04h	WORD	length and type
				bit 15 set if swap always, clear if swap in DOS
				bits 14-0: length in bytes
SeeAlso: #01690

Format of DOS 4.0-6.0 swappable data area:
Offset	Size	Description	(Table 01690)
 -34	BYTE	printer echo flag (00h off, FFh active)
 -31	BYTE	current switch character (ignored by DOS 5+)
 -30	BYTE	current memory allocation strategy (see AH=58h)
 -28	BYTE	incremented on each INT 21/AX=5E01h call
 -27 16 BYTEs	machine name set by INT 21/AX=5E01h
 -11  5 WORDs	zero-terminated list of offsets which need to be patched to
		  enable critical-section calls (see INT 2A/AH=80h)
		(all offsets are 0D0Ch, but this list is still present for
		  DOS 3.x compatibility)
 -1	BYTE	unused padding
Note:	the above data is not actually part of the SDA, and is much more likely
	  to change between DOS versions/OEMs than data in the SDA itself
---start of actual SDA---
 00h	BYTE	critical error flag ("ErrorMode")
 01h	BYTE	InDOS flag (count of active INT 21 calls)
 02h	BYTE	drive on which current critical error occurred or FFh
		(DR DOS 3.41/5.0 set this to 00h when no critical error)
 03h	BYTE	locus of last error
 04h	WORD	extended error code of last error
 06h	BYTE	suggested action for last error
 07h	BYTE	class of last error
 08h	DWORD	ES:DI pointer for last error
 0Ch	DWORD	current DTA (Disk Transfer Address)
		note: may point into SDA during the DOS EXEC function
		  (see AH=4Bh), so programs which swap the SDA must be
		  prepared to move the DTA to a private buffer if they
		  might be invoked during an EXEC
 10h	WORD	current PSP
 12h	WORD	stores SP across an INT 23
 14h	WORD	return code from last process termination (zerod after reading
		  with AH=4Dh)
 16h	BYTE	current drive
 17h	BYTE	extended break flag
 18h	BYTE	flag: code page switching
 19h	BYTE	flag: copy of previous byte in case of INT 24 Abort
---remainder need only be swapped if in DOS---
 1Ah	WORD	value of AX on call to INT 21
		Note:	does not contain correct value on functions 00h-0Ch,
			  50h, 51h, 59h, or 62h			
 1Ch	WORD	PSP segment for sharing/network (0000h = local)
 1Eh	WORD	network machine number for sharing/network (0000h = local)
 20h	WORD	first usable memory block found when allocating memory
 22h	WORD	best usable memory block found when allocating memory
 24h	WORD	last usable memory block found when allocating memory
 26h	WORD	memory size in paragraphs (used only during initialization)
 28h	WORD	last entry checked during directory search
 2Ah	BYTE	flag: nonzero if INT 24 Fail
 2Bh	BYTE	flags: allowable INT 24 responses (passed to INT 24 in AH)
 2Ch	BYTE	flag: do not set directory if nonzero
 2Dh	BYTE	flag: program aborted by ^C
 2Eh	BYTE	flag: allow embedded blanks in FCB
		may also allow use of "*" wildcard in FCBs
 2Fh	BYTE	padding (unused)
 30h	BYTE	day of month
 31h	BYTE	month
 32h	WORD	year - 1980
 34h	WORD	number of days since 01jan1980
 36h	BYTE	day of week (0 = Sunday)
 37h	BYTE	flag: console swapped during read from device
 38h	BYTE	flag: safe to call INT 28 if nonzero
 39h	BYTE	flag: abort currently in progress, turn INT 24 Abort into Fail
 3Ah 30 BYTEs	device driver request header (see #02597 at INT 2F/AX=0802h) for
		  device calls
 58h	DWORD	pointer to device driver entry point (used in calling driver)
 5Ch 22 BYTEs	device driver request header for I/O calls
 72h 14 BYTEs	device driver request header for disk status check (also
		  includes following eight bytes for some calls)
 80h	DWORD	pointer to device I/O buffer
 84h	WORD	part of request header at 72h
 86h	WORD	part of request header at 72h (0)
 88h	BYTE	type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
 89h	DWORD	start offset of file region to lock/unlock
 8Dh	DWORD	length of file region to lock/unlock
 91h	BYTE	padding (unused)
 92h  3 BYTEs	24-bit user number (see AH=30h)
 95h	BYTE	OEM number (see #01394 at AH=30h)
 96h  6 BYTEs	CLOCK$ transfer record (see #01688 at AX=5D06h)
 9Ch	BYTE	device I/O buffer for single-byte I/O functions
 9Dh	BYTE	padding
 9Eh 128 BYTEs	buffer for filename
11Eh 128 BYTEs	buffer for filename (rename destination name)
19Eh 21 BYTEs	findfirst/findnext search data block (see #01626 at AH=4Eh)
1B3h 32 BYTEs	directory entry for found file (see #01394 at AH=11h)
1D3h 88 BYTEs	copy of current directory structure for drive being accessed
22Bh 11 BYTEs	FCB-format filename for device name comparison
236h	BYTE	terminating NUL for above filename
237h 11 BYTEs	wildcard destination specification for rename (FCB format)
242h	BYTE	terminating NUL for above filespec
243h	BYTE	padding???
244h	WORD	destination starting sector (cluster???)
246h  5 BYTEs	extra space to allow a directory entry to be stored starting
		  at offset 22Bh
24Bh	BYTE	extended FCB file attributes
24Ch	BYTE	type of FCB (00h regular, FFh extended)
24Dh	BYTE	directory search attributes
24Eh	BYTE	file open/access mode
24Fh	BYTE	flag: nonzero if file was deleted
250h	BYTE	flag: device name found on rename, or file not found
251h	BYTE	flag: splice file name and directory name together
252h	BYTE	flag indicating how DOS function was invoked
		(00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
253h	BYTE	sector position within cluster
254h	BYTE	flag: translating sector/cluster
255h	BYTE	flag: 00h if read, 01h if write
256h	BYTE	current working drive number
257h	BYTE	cluster factor
258h	BYTE	"sda_CLUSSPLIT" flag: cluster split between two FAT sectors
259h	BYTE	line edit (AH=0Ah) insert mode flag (nonzero = on)
25Ah	BYTE	canonicalized filename referred to existing file/dir if FFh
25Bh	BYTE	volume ID flag
25Ch	BYTE	type of process termination (00h-03h) (see AH=4Dh)
25Dh	BYTE	unused (padding for alignment)
25Eh	BYTE	file create flag (00h = no, search only)
25Fh	BYTE	value for deleted file's first byte: 00h to delete all, else E5
260h	DWORD	pointer to Drive Parameter Block for critical error invocation
264h	DWORD	pointer to stack frame containing user registers on INT 21
268h	WORD	stores SP across INT 24
26Ah	DWORD	pointer to DOS Drive Parameter Block for ???
26Eh	WORD	segment of disk buffer
270h	DWORD	saving partial cluster number
274h	WORD	"sda_PREREAD" 00h if preread, 01h if optional
276h	WORD	temporary used in allocating disk space
278h	BYTE	Media ID byte returned by AH=1Bh,1Ch
279h	BYTE	unused
27Ah	DWORD	pointer to device header if filename is character device
27Eh	DWORD	pointer to current SFT
282h	DWORD	pointer to current directory structure for drive being accessed
286h	DWORD	pointer to caller's FCB
28Ah	WORD	SFT index to which file being opened will refer
28Ch	WORD	temporary storage for file handle
28Eh	DWORD	pointer to JFT entry (for file being opened) in process handle
		  table (see #01378 at AH=26h)
292h	WORD	"sda_WFP_START" offset in DOS DS of first filename argument
294h	WORD	"sda_REN_WFP" offset in DOS DS of second filename argument
296h	WORD	offset of last component in pathname or FFFFh
298h	WORD	offset of transfer address to add
29Ah	WORD	last relative cluster within file being accessed
29Ch	WORD	temp: absolute cluster number being accessed
29Eh	DWORD	directory sector number
2A2h	WORD	directory cluster number
2A4h	DWORD	current relative sector number within file
2A8h	DWORD	current sector number (number of previously written sectors)
2ACh	WORD	current byte offset within sector
2AEh	DWORD	current offset in file
2B2h	WORD	number of bytes in first sector
2B4h	WORD	bytes in partial last sector
2B6h	WORD	number of whole sectors
2B8h	WORD	free file cluster entry
2BAh	WORD	last file cluster entry
2BCh	WORD	next file cluster number
2BEh	DWORD	number of bytes appended to file
2C2h	DWORD	pointer to current work disk buffer
2C6h	DWORD	pointer to working SFT
2CAh	WORD	used by INT 21 dispatcher to store caller's BX
2CCh	WORD	used by INT 21 dispatcher to store caller's DS
2CEh	WORD	temporary storage while saving/restoring caller's registers
2D0h	DWORD	pointer to prev call frame (offset 264h) if INT 21 reentered
		also switched to for duration of INT 24
2D4h	WORD	open mode/action for INT 21/AX=6C00h
2D6h	BYTE	extended open conditional flag
		set to 00h by INT 21h dispatcher, 02h when a read is
		  performed, and 01h or 03h by INT 21/AX=6C00h
2D7h	WORD	extended open I/O mode
2D9h	DWORD	stored ES:DI for AX=6C00h
2DDh	WORD	extended file open action code (see #01770 at AX=6C00h)
2DFh	WORD	extended file open attributes (see #01769 at AX=6C00h)
2E1h	WORD	extended file open file mode (see AX=6C00h)
2E3h	DWORD	pointer to filename to open (see AX=6C00h)
2E7h	WORD	high word of 32-bit sector number, or temp data buffer size
		   from disk buffer
2E9h	WORD	"sda_OffsetMagicPatch"
2EBh	BYTE	disk full on >32M partition when set to 01h
2ECh	WORD	stores DS during call to [List-of-Lists + 37h]
2EEh	WORD	temporary storage (various uses)
2F0h	BYTE	storage for drive error
2F1h	WORD	DOS 3.4 (European MS-DOS 4.00) bit flags
2F3h	DWORD	pointer to user-supplied filename
2F7h	DWORD	pointer to user-supplied rename destination filename
2FBh	WORD	stores SS during call to [List-of-Lists + 37h] and INT 25,26 
2FDh	WORD	stores SP during call to [List-of-Lists + 37h] and INT 25,26
2FFh	BYTE	flag, nonzero if stack switched in calling [List-of-Lists+37h]
300h 21 BYTEs	FindFirst search data for source file(s) of a rename operation
		(see #01626 at AH=4Eh)
315h 32 BYTEs	directory entry for file being renamed (see #01352 at AH=11h)
335h 331 BYTEs	critical error stack
480h 384 BYTEs	disk stack (functions greater than 0Ch, INT 25,INT 26)
600h 384 BYTEs	character I/O stack (functions 01h through 0Ch)
780h	BYTE	device driver lookahead flag (usually printer)
		(see AH=64h"DOS 3.2+")
781h	BYTE	volume change flag
782h	BYTE	flag: virtual file open
783h	BYTE	fastseek drive
784h	WORD	fastseek first cluster number
786h	WORD	fastseek logical cluster number
788h	WORD	fastseek returned logical cluster number
78Ah	WORD	temporary location of DOS@SYSINIT
---MSDOS 7.1+ (FAT32)---
78Ch 47 BYTEs	???
7BBh	BYTE	flag: absolute disk read/write type
		00h = INT 25/INT 26
		01h = INT 21/AX=7305h
7BCh	WORD	high word of directory cluster number at offset 2A2h
7BEh	WORD	high word of cluster number at offset 29Ch
7C0h	WORD	high word of next file cluster number at offset 2BCh
7C2h	WORD	high word of last relative cluster number at offset 29Ah
7C4h	WORD	high word of temp at offset 276h
7C6h	WORD	high word of offset 244h
7C8h	WORD	high word of EBX
7CAh	WORD	high word of EDX used by "PACK"
7CCh	WORD	high word of EDI used by "UNPACK"
7CEh	WORD	high word of EBX used by "SETDIRSRCH"
7D0h	WORD	high word of ECX used by "FREECLUSTER"
7D2h	WORD	high word of EDI used by "GETEOF"
7D4h  3 WORDs	???
Note:	the only fields which remain valid BETWEEN calls to INT 21h are those
	  in the initial "swap-always" portion of the SDA
SeeAlso: #01687,#01689

Top
215E00 - INT 21 - DOS 3.1+ network - GET MACHINE NAME
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

Top
215E00 - INT 21 - 10NET v5.0 - GET MACHINE NAME
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"

Top
215E01CH00 - INT 21 - DOS 3.1+ network - SET MACHINE NAME
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

Top
215E01 - INT 21 - 10NET v5.0 - GET LOCAL 10NET CONFIGURATION TABLE
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

Top
215E02 - INT 21 - DOS 3.1+ network - SET NETWORK PRINTER SETUP STRING
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

Top
215E03 - INT 21 - DOS 3.1+ network - GET NETWORK PRINTER SETUP STRING
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

Top
215E04 - INT 21 - DOS 3.1+ network - SET PRINTER MODE
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

Top
215E04 - INT 21 - 10NET v5.0 - INITIATE PRINT JOB
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

Top
215E05 - INT 21 - DOS 3.1+ network - GET PRINTER MODE
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

Top
215E05 - INT 21 - 10NET v5.0 - TERMINATE PRINT JOB
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

Top
215E06 - INT 21 - 10NET v5.0 - GET/SET 10NET WORKSTATION PRINTER SETUP STRUCTURE
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"

Top
215F00 - INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
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

Top
215F01 - INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
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

Top
215F02 - INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
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"

Top
215F03 - INT 21 - DOS 3.1+ network - REDIRECT DEVICE
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

Top
215F04 - INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
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

Top
215F05 - INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
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

Top
215F05 - INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
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

Top
215F06 - INT 21 U - Network - GET FULL REDIRECTION LIST
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

Top
215F06 - INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
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

Top
215F07 - INT 21 - DOS 5+ - ENABLE DRIVE
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"

Top
215F07 - INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
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"

Top
215F08 - INT 21 - DOS 5+ - DISABLE DRIVE
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"

Top
215F08 - INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
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"

Top
215F09 - INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
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

Top
215F0A - INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
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

Top
215F30 - INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
	AX = 5F30h
Return: AX = version (AH=major,AL=minor)

Top
215F32 - INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
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

Top
215F33 - INT 21 u - Named Pipes - LOCAL DosQNmPHandState
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

Top
215F34 - INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
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

Top
215F35 - INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
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

Top
215F36 - INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
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

Top
215F37 - INT 21 u - Named Pipes - DosCallNmPipe
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

Top
215F38 - INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
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

Top
215F39 - INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
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

Top
215F3A - INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
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

Top
215F3B - INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
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

Top
215F3C - INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
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

Top
215F3D - INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
	AX = 5F3Dh
	???
Return: ???

Top
215F3E - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
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.

Top
215F3F - INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
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: ???

Top
215F40 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
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

Top
215F41 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
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

Top
215F42 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
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

Top
215F43 - INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
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

Top
215F44 - INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
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

Top
215F45 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
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

Top
215F46 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
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

Top
215F47 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
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

Top
215F48 - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
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

Top
215F49 - INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
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

Top
215F4A - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
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

Top
215F4B - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
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

Top
215F4C - INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
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

Top
215F4D - INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
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

Top
215F4E - INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
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

Top
215F4F - INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
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

Top
215F50 - INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
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

Top
215F51 - INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
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

Top
215F52 - INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
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

Top
215F53 - INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
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)

Top
215F55 - INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
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

Top
215F80 - INT 21 - LANtastic - GET LOGIN ENTRY
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

Top
215F81 - INT 21 - LANtastic - LOGIN TO SERVER
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

Top
215F82 - INT 21 - LANtastic - LOGOUT FROM SERVER
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

Top
215F83 - INT 21 - LANtastic - GET USERNAME ENTRY
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

Top
215F84 - INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
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

Top
215F85 - INT 21 - LANtastic - CHANGE PASSWORD
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

Top
215F86 - INT 21 - LANtastic - DISABLE ACCOUNT
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.

Top
215F87 - INT 21 - LANtastic v3+ - GET ACCOUNT
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

Top
215F88 - INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
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

Top
215F97 - INT 21 - LANtastic - COPY FILE
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

Top
215F98 - INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
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

Top
215F99 - INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
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

Top
215F9A - INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
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+)

Top
215F9B - INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
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

Top
215F9C - INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
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

Top
215F9D - INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
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

Top
215F9E - INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
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

Top
215FA0 - INT 21 - LANtastic - GET QUEUE ENTRY
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

Top
215FA1 - INT 21 - LANtastic - SET QUEUE ENTRY
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

Top
215FA2 - INT 21 - LANtastic - CONTROL QUEUE
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

Top
215FA3 - INT 21 - LANtastic v3+ - GET PRINTER STATUS
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

Top
215FA4 - INT 21 - LANtastic v3+ - GET STREAM INFO
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)

Top
215FA5 - INT 21 - LANtastic v3+ - SET STREAM INFO
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

Top
215FA7 - INT 21 - LANtastic - CREATE USER AUDIT ENTRY
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

Top
215FA9 - INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
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

Top
215FB0 - INT 21 - LANtastic - GET ACTIVE USER INFORMATION
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)

Top
215FB1 - INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
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

Top
215FB2 - INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
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

Top
215FB3 - INT 21 - LANtastic v3+ - TRANSLATE PATH
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

Top
215FB4 - INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
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

Top
215FB5 - INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
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

Top
215FB6 - INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
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

Top
215FB7 - INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
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

Top
215FC0 - INT 21 - LANtastic - GET TIME FROM SERVER
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

Top
215FC8 - INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
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

Top
215FC9 - INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
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

Top
215FCA - INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
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

Top
215FCB - INT 21 - LANtastic v4.1+ - TERMINATE USER
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

Top
215FCC - INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
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

Top
215FCD - INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
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.

Top
215FD0 - INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
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

Top
215FD1 - INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
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

Top
215FE0 - INT 21 C - LANtastic - GET DOS SERVICE VECTOR
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

Top
215FE1 - INT 21 - LANtastic - SET DOS SERVICE VECTOR
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

Top
215FE2 - INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
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

Top
215FE3 - INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
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

Top
2160 - INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
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

Top
2161 - INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
	AH = 61h
Return: AL = 00h
Note:	this function does nothing and returns immediately

Top
2161--BP6467 - INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
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

Top
2162 - INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
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

Top
216262SI1994 - INT 21 - ENVLOCK - INSTALLATION CHECK
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

Top
216300 - INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
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

Top
216300 - INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
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"

Top
216301 - INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
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

Top
216302 - INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
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

Top
216303 - INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
	AX = 6303h
Return: BX = 6303h if resident
SeeAlso: AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS"

Top
216304 - INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
	AX = 6304h
Return: BX = 6304h if resident
SeeAlso: AX=6303h"VIRUS",AX=6969h"VIRUS"

Top
2164 - INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
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

Top
2164--DX0000 - INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
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

Top
2164--DX0001 - INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
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

Top
2164--DX0002 - INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
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

Top
2164--DX0003 - INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
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

Top
2164--DX0004 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
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

Top
2164--DX0005 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
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

Top
2164--DX0006 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
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

Top
2164--DX0007 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
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

Top
2164--DX0008 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
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

Top
2164--CX636C - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
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

Top
2164--BX0025 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
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)

Top
2164--BX00B6 - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
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.

Top
2164--BX00CB - INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
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

Top
216500 - INT 21 - Windows95 (OSR2) - SET GENERAL INTERNATIONALIZATION INFO
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

Top
2165 - INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
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

Top
2165 - INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
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

Top
216523 - INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
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

Top
2165 - INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
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

Top
216601 - INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
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

Top
216602 - INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
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

Top
2167 - INT 21 - DOS 3.3+ - SET HANDLE COUNT
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

Top
2168 - INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
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

Top
2169 - INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
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

Top
2169 - INT 21 - DR DOS 5.0 - NULL FUNCTION
INT 21 - DR DOS 5.0 - NULL FUNCTION
	AH = 69h
Return: AL = 00h
SeeAlso: AH=18h

Top
216969 - INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
	AX = 6969h
Return: AX = 0666h if resident
SeeAlso: AX=58CCh,AX=6304h"VIRUS",AH=71h"VIRUS"

Top
2169FFDX0000 - INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
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

Top
2169FFDXCFBF - INT 21 U - CUBIT v4.00 - UNINSTALL
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

Top
216A - INT 21 U - DOS 4.0+ - COMMIT FILE
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

Top
216B - INT 21 U - DOS 4.0 internal - IFS IOCTL
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

Top
216B - INT 21 U - DOS 5+ - NULL FUNCTION
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"

Top
216C00 - INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
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

Top
216C01 - INT 21 U - OS/2 v2.0 - "DosOpen2"
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"

Top
216D - INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
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)

Top
216D - INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
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"

Top
216D - INT 21 U - Novell DOS 7 - NOP
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

Top
216E - INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
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

Top
216E - INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
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

Top
216F00 - INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
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

Top
216F00 - INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
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"

Top
216F01 - INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
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

Top
216F02 - INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
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

Top
216F03 - INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
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

Top
2170 - INT 21 - MS-DOS 7 (Windows95) - GET/SET INTERNATIONALIZATION INFORMATION
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

Top
217070BX6060 - INT 21 - PCW Weather Card interface - GET DATA SEGMENT
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)

Top
217070BX7070 - INT 21 - PCW Weather Card interface - INSTALLATION CHECK
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

Top
2171 - INT 21 - Windows95 - LONG FILENAME FUNCTIONS
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

Top
2171 - INT 21 - VIRUS - "1205" - INSTALLATION CHECK
INT 21 - VIRUS - "1205" - INSTALLATION CHECK
	AH = 71h
Return: AH = 17h if "1205" is resident
SeeAlso: AX=6969h"VIRUS",AH=76h"VIRUS"

Top
21710D - INT 21 - Windows95 - RESET DRIVE
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

Top
217139 - INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
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

Top
21713A - INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
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

Top
21713B - INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
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

Top
217141 - INT 21 - Windows95 - LONG FILENAME - DELETE FILE
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

Top
217143 - INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
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

Top
217147 - INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
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

Top
21714E - INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
	AX = 714Eh
	CL = allowable-attributes mask (see #01420 at AX=4301h)
	      (bits 0 and 5 ignored)
	CH = required-attributes mask (see #01420)
	SI = date/time format (see #01778)
	DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
	ES:DI -> FindData record (see #01779)
Return: CF clear if successful
	    AX = filefind handle (needed to continue search)
	    CX = Unicode conversion flags (see #01780)
	CF set on error
	    AX = error code
		7100h if function not supported
Notes:	this function is only available when IFSMgr is running, not under bare
	  MS-DOS 7
	the application should close the filefind handle with AX=71A1h as soon
	  as it has completed its search
	for compatibility with DOS versions prior to v7.00, the carry flag
	  should be set on call to ensure that it is set on exit
SeeAlso: AH=4Eh,AX=714Fh,AX=71A1h

(Table 01778)
Values for Windows95 date/time format:
 0000h	use 64-bit file time format
 0001h	use MS-DOS date/time values (see #01665,#01666) in low double-word of
	  file time QWORD (date is high word, time is low word of double-word)
SeeAlso: #01779

Format of Windows95 long filename FindData record:
Offset	Size	Description	(Table 01779)
 00h	DWORD	file attributes
		bits 0-6 standard DOS attributes (see #01420 at INT 21/AX=4301h)
		bit 8: temporary file
 04h	QWORD	file creation time (number of 100ns intervals since 1/1/1601)
 0Ch	QWORD	last access time
 14h	QWORD	last modification time
 1Ch	DWORD	file size (high 32 bits)
 20h	DWORD	file size (low 32 bits)
 24h  8 BYTEs	reserved (apparently unused)
 2Ch 260 BYTEs	ASCIZ full filename
130h 14 BYTEs	ASCIZ short filename (for backward compatibility)
Note:	under Windows95B, the ASCIZ short filename will be the empty string
	  if the directory does not contain a long filename entry for the
	  file; in that case, the application should use the full filename
SeeAlso: #01780

Bitfields for Windows95 Unicode conversion flags:
Bit(s)	Description	(Table 01780)
 0	the returned full filename contains underscores for un-convertable
	  Unicode characters
 1	the returned short filename contains underscores for un-convertable
	  Unicode characters
SeeAlso: #01779

Top
21714F - INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
	AX = 714Fh
	BX = filefind handle (from AX=714Eh)
	SI = date/time format (see #01778)
	ES:DI -> buffer for FindData record (see #01779)
Return: CF clear if successful
	    AH = 4Fh (undocumented)
	    AL destroyed (becomes low byte of filefind handle in Win95B)
	    CX = Unicode conversion flags (see #01780)
	CF set on error
	    AX = error code
		7100h if function not supported
Notes:	this function is only available when IFSMgr is running, not under bare
	  MS-DOS 7
	for compatibility with DOS versions prior to v7.00, the carry flag
	  should be set on call to ensure that it is set on exit
SeeAlso: AH=4Eh,AX=714Eh,AX=71A1h,AX=71A2h

Top
217156 - INT 21 - Windows95 - LONG FILENAME - RENAME FILE
INT 21 - Windows95 - LONG FILENAME - RENAME FILE
	AX = 7156h
	DS:DX -> ASCIZ old file or directory name (long names allowed)
	ES:DI -> ASCIZ new name (long names allowed)
Return: CF clear if successful
	CF set on error
	    AX = error code
		7100h if function not supported
Note:	the file may be renamed into a different directory, but not across
	  disks
SeeAlso: AH=56h,AX=7141h,AX=43FFh/BP=5053h

Top
217160CL00 - INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
	AX = 7160h
	CL = 00h
	CH = SUBST expansion flag
	    00h return a path containing true path for a SUBSTed drive letter
	    80h return a path containing the SUBSTed drive letter
	DS:SI -> ASCIZ filename or path (either long name or short name)
	ES:DI -> 261-byte buffer for canonicalized name
Return: CF set on error
	    AX = error code
		02h invalid component in directory path or drive letter only
		03h malformed path or invalid drive letter
	    ES:DI buffer unchanged
	CF clear if successful
	    ES:DI buffer filled with fully qualified name
	    AX destroyed
Desc:	determine the canonical name of the specified filename or path,
	  corresponding to the undocumented TRUENAME command in COMMAND.COM
Notes:	if a complete path is given, the result will be a short-form complete
	  path; otherwise, the given relative path is appended to the
	  short-form current directory name, '.'/'..'/'...'/etc. are resolved,
	  and the final result uppercased without converting any remaining
	  long-form names to short-form
	for compatibility with DOS versions prior to v7.00, the carry flag
	  should be set on call to ensure that it is set on exit
BUG:	Windows95 incorrectly treats filenames where the first two characters
	  after the drive letter and colon are both slashes (either forward
	  or backward) as a UNC (network name) and requires several seconds
	  to attempt to resolve the name before returning an unchanged
	  string
SeeAlso: AH=60h,AX=7160h/CL=01h

Top
217160CL01 - INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
	AX = 7160h
	CL = 01h
	CH = SUBST expansion flag
	    00h return a path containing true path for a SUBSTed drive letter
	    80h return a path containing the SUBSTed drive letter
	DS:SI -> ASCIZ long filename or path
	ES:DI -> 67-byte (possibly 128-byte) buffer for short filename
Return: CF set on error
	    AX = error code
		02h invalid component in directory path or drive letter only
		03h malformed path or invalid drive letter
	    ES:DI buffer unchanged
	CF clear if successful
	    ES:DI buffer filled with equivalent short filename (full path,
		  even if relative path given, and all uppercase)
Note:	this call returns the short name for any long-filename portions of
	  the provided pathname or filename
SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h

Top
217160CL02 - INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
	AX = 7160h
	CL = 02h
	CH = SUBST expansion flag
	    00h return a path containing true path for a SUBSTed drive letter
	    80h return a path containing the SUBSTed drive letter
	DS:SI -> ASCIZ short filename or path
	ES:DI -> 261-byte buffer for canonicalized long name
Return: CF set on error
	    AX = error code
		02h invalid component in directory path or drive letter only
		03h malformed path or invalid drive letter
	    ES:DI buffer unchanged
	CF clear if successful
	    ES:DI buffer filled with qualified long name (can contain
		  lowercase letters)
Desc:	determine the canonical name of the specified filename or path,
	  corresponding to the undocumented TRUENAME command in COMMAND.COM
BUGS:	even though the maximum length of a complete long pathname is 260
	  characters, Windows95 returns CF set/AX=0003h even if the file
	  exists whenever the full pathname is more than 255 characters
	Windows95 incorrectly treats filenames where the first two characters
	  after the drive letter and colon are both slashes (either forward
	  or backward) as a UNC (network name) and requires several seconds
	  to attempt to resolve the name before returning an unchanged
	  string
SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h

Top
21716C - INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
	AX = 716Ch
	BX = access mode and sharing flags (see #01782,also AX=6C00h)
	CX = attributes
	DX = action (see #01781)
	DS:SI -> ASCIZ filename
	DI = alias hint (number to append to short filename for disambiguation)
Return: CF clear if successful
	    AX = file handle
	    CX = action taken
		0001h file opened
		0002h file created
		0003h file replaced
	CF set on error
	    AX = error code (see #01680)
		7100h if function not supported
SeeAlso: AX=6C00h,AX=7141h,AX=7156h,AX=71A9h

Bitfields for Windows95 long-name open action:
Bit(s)	Description	(Table 01781)
 0	open file (fail if file does not exist)
 1	truncate file if it already exists (fail if file does not exist)
 4	create new file if file does not already exist (fail if exists)
Note:	the only valid combinations of multiple flags are bits 4&0 and 4&1

Bitfields for Windows95 file access/sharing modes:
Bit(s)	Description	(Table 01782)
 2-0	file access mode
	000 read-only
	001 write-only
	010 read-write
	100 read-only, do not modify file's last-access time
 6-4	file sharing modes
 7	no-inherit flag
 8	do not buffer data (requires that all reads/writes be exact physical
	  sectors)
 9	do not compress file even if volume normally compresses files
 10	use alias hint in DI as numeric tail for short-name alias
 12-11	unused??? (0)
 13	return error code instead of generating INT 24h if critical error
	  while opening file
 14	commit file after every write operation
SeeAlso: #01402

Top
2171A0 - INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
	AX = 71A0h
	DS:DX -> ASCIZ root name (e.g. "C:\")
	ES:DI -> buffer for file system name
	CX = size of ES:DI buffer
Return: CF clear if successful
	    AX destroyed (0000h and 0200h seen)
	    BX = file system flags (see #01783)
	    CX = maximum length of file name [usually 255]
	    DX = maximum length of path [usually 260]
	    ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
	CF set on error
	    AX = error code
		7100h if function not supported
Notes:	for the file system name buffer, 32 bytes should be sufficient; that's
	 what is used in some sample code by Walter Oney from Microsoft.
	this function accesses the disk the first time it is called
BUG:	this function returns DX=0000h for CD-ROM drives under Win95 SP1
SeeAlso: AX=714Eh,AX=7160h/CL=00h

Bitfields for long filename volume information flags:
Bit(s)	Description	(Table 01783)
 0	searches are case sensitive
 1	preserves case in directory entries
 2	uses Unicode characters in file and directory names
 3-13	reserved (0)
 14	supports DOS long filename functions
 15	volume is compressed

Top
2171A1 - INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
	AX = 71A1h
	BX = filefind handle (from AX=714Eh)
Return: CF clear if successful
	CF set on error
	   AX = error code
		7100h if function not supported
Notes:	this function must be called after starting a search with AX=714Eh,
	  to indicate that the search handle returned by that function will
	  no longer be used
	this function is only available when IFSMgr is running, not under bare
	  MS-DOS 7
SeeAlso: AH=4Eh,AX=714Eh,AX=714Fh

Top
2171A2 - INT 21 U - Windows95 - internal - LONG FILENAME - FIND NEXT MATCHING FILE
INT 21 U - Windows95 - internal - LONG FILENAME - FIND NEXT MATCHING FILE
	AX = 71A2h
	BX = filefind handle (from AX=714Eh)
	SI = date/time format (see #01778)
	ES:DI -> buffer for FindData record (see #01779)
Return: CF clear if successful
	    AX = 71A2h
	    CX = Unicode conversion flags (see #01780)
	CF set on error
	    AX = error code
		7100h if function not supported
Notes:	this function is only available when IFSMgr is running, not under bare
	  MS-DOS 7; it is functionally identical to AX=714Fh
	documented as "for internal use by Windows 95 only"

Top
2171A3 - INT 21 U - Windows95 - internal
INT 21 U - Windows95 - internal
	AX = 71A3h
	???
Return: ???
Note:	documented as "for internal use by Windows 95 only"

Top
2171A4 - INT 21 U - Windows95 - internal
INT 21 U - Windows95 - internal
	AX = 71A4h
	???
Return: ???
Note:	documented as "for internal use by Windows 95 only"

Top
2171A5 - INT 21 U - Windows95 - internal
INT 21 U - Windows95 - internal
	AX = 71A5h
	???
Return: ???
Note:	documented as "for internal use by Windows 95 only"

Top
2171A6 - INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
	AX = 71A6h
	BX = file handle
	DS:DX -> buffer for file information (see #01784)
	CF set
Return: CF clear if successful
	    file information record filled
	CF set on error
	    AX = error code
		7100h if function not supported
SeeAlso: AX=71A7h/BL=00h

Format of Windows95 file information:
Offset	Size	Description	(Table 01784)
 00h	DWORD	file attributes
 04h	QWORD	creation time (0 = unsupported)
 0Ch	QWORD	last access time (0 = unsupported)
 14h	QWORD	last write time
 1Ch	DWORD	volume serial number
 20h	DWORD	high 32 bits of file size
 24h	DWORD	low 32 bits of file size
 28h	DWORD	number of links to file
 2Ch	DWORD	unique file identifier (high 32 bits)
 30h	DWORD	unique file identifier (low 32 bits)
Note:	the file identifer and volume serial number together uniquely identify
	  a file while it is open; the identifier may change when the system
	  is restarted or the file is first opened

Top
2171A7BL00 - INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
	AX = 71A7h
	BL = 00h
	DS:SI -> QWORD file time
Return: CF clear if successful
	    CX = DOS time (see #01665)
	    DX = DOS date (see #01666)
	    BH = hundredths (10-millisecond units past time in CX)
	CF set on error
	    AX = error code
		7100h if function not supported
Desc:	convert Win95 64-bit file time (UTC) into DOS-style date and time
	  (local timezone)
Note:	the conversion fails if the file time's value is outside the range
	  01jan1980 and 31dec2107
SeeAlso: AX=71A6h,AX=71A7h/BL=01h

Top
2171A7BL01 - INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
	AX = 71A7h
	BL = 01h
	CX = DOS time (see #01665)
	DX = DOS date (see #01666)
	BH = hundredths (10-millisecond units past time in CX)
	ES:DI -> buffer for QWORD file time
Return: CF clear if successful
	    ES:DI buffer filled
	CF set on error
	    AX = error code
		7100h if function not supported
Desc:	convert DOS-style date and time (local timezone) into Win95 64-bit
	  file time (UTC)
SeeAlso: AX=71A6h,AX=71A7h/BL=00h

Top
2171A8 - INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
	AX = 71A8h
	DS:SI -> ASCIZ long filename (no path allowed!)
	ES:DI -> buffer for ASCIZ short filename
	DH = short name's format
	    00h 11-char directory entry/FCB filename format
	    01h DOS 8.3
	DL = character sets
	    bits 7-4: short name's character set (see #01785)
	    bits 3-0: long name's character set (see #01785)
Return: CF clear if successful
	    ES:DI buffer filled
	CF set on error
	    AX = error code
		7100h if function not supported
Note:	this function uses the same algorithm as the filesystem except that
	  the returned name never has a numeric tail for disambiguation
SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h

(Table 01785)
Values for Windows95 filename character set:
 00h	Windows ANSI
 01h	current OEM character set
 02h	Unicode

Top
2171A9 - INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
	AX = 71A9h
	BX = access mode and sharing flags (see #01782,also AX=6C00h)
	CX = attributes
	DX = action (see #01781)
	DS:SI -> ASCIZ filename
	DI = alias hint (number to append to short filename for disambiguation)
Return: CF clear if successful
	    AX = global file handle
	    CX = action taken
		0001h file opened
		0002h file created
		0003h file replaced
	CF set on error
	    AX = error code (see #01680)
		7100h if function not supported
Note:	for use by real-mode servers only
SeeAlso: AX=6C00h,AX=716Ch

Top
2171AABH00 - INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
	AX = 71AAh
	BH = 00h
	BL = drive number (00h = default, 01h = A:, etc.)
	DS:DX -> ASCIZ pathname to associate with drive letter
Return: CF clear if successful
	CF set on error
	    AX = error code (see #01680)
		7100h if function not supported
SeeAlso: AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643

Top
2171AABH01 - INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
	AX = 71AAh
	BH = 01h
	BL = drive number (01h = A:, etc.)
Return: CF clear if successful
	CF set on error
	    AX = error code (see #01680)
		7100h if function not supported
Note:	the specified drive number may not be 00h (default), and presumably not
	  the current drive either
SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643

Top
2171AABH02 - INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
	AX = 71AAh
	BH = 02h
	BL = drive number (01h = A:, etc.)
	DS:DX -> buffer for ASCIZ pathname associated with drive letter
Return: CF clear if successful
	    DS:DX buffer filled
	CF set on error
	    AX = error code (see #01680)
		7100h if function not supported
Note:	the specified drive number may not be 00h (default drive)
SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#01643

Top
2172 - INT 21 - Windows95 beta - LFN-FindClose
INT 21 - Windows95 beta - LFN-FindClose
	AH = 72h
	details not available
Return:	CF clear if successful
	CF set on error
	    AX = error code (see #01680)
		7200h if function not supported (e.g. under bare MS-DOS 7)
Note:	this function was present in beta versions of Windows95, but is
	  probably not present in the release version
SeeAlso: AX=71A1h

Top
2173 - INT 21 - MS-DOS 7 - DRIVE LOCKING AND FLUSHING
INT 21 - MS-DOS 7 - DRIVE LOCKING AND FLUSHING
	AH = 73h
	DL = drive (0=current, 1=A:, etc.)
	CL = which flag to get or set
	    00h drive flag???
	    01h drive's dirty-buffers flag
	AL = subfunction
	    00h get indicated flag
	    01h set ???
		CH = new value for indicated flag
		    bit 1: ??? (CL=00h only)
		    bit 3: dirty buffers exist for selected drive (CL=01h only)
Return: CF clear if successful
	    for AL=00h:
		AL = value of CL on entry
		for CL=00h: AH = new flag and 06h (i.e. bits 1 and 2 used)
		for CL=01h: AH = new flag and 08h (i.e. bit 3 used)
		(flag being taken from a table of bytes)
	CF set on error
	    AX = error code (01h,0Fh,etc.) (see #01680)
		7300h if function not supported
Note:	these two subfunctions are available even when only the MS-DOS kernel
	  is running

Top
217302 - INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
	AX = 7302h
	DL = drive number (00h=default, 01h=A:, etc.)
	ES:DI -> buffer for returned data (see #01786)
	CX = length of buffer (003Fh for Windows95)
	SI = signature (undocumented, must be F1A6h to get device driver
	      address and next-DBP pointer) (see #01787)
Return: CF clear if successful
	    ES:DI buffer filled
	CF set on error
	    AX = error code
	       0018h bad buffer length
SeeAlso: AX=7303h,AX=7304h,AH=1Fh,AH=32h

Format of Get_ExtDPB data buffer:
Offset	Size	Description	(Table 01786)
 00h	WORD	(call) length of following data (003Dh)
 02h 61 BYTEs	(ret) drive parameter block (DPB) (see #01787)
 
Format of Extended Drive Parameter Block:
Offset	Size	Description	(Table 01787)
 00h 24 BYTEs	standard DOS 4+ DPB
 18h	BYTE	"dpb_flags" (undocumented)
		FFh force media check
 19h	DWORD	pointer to next DPB (see note)
 1Dh	WORD	cluster at which to start search for free space when writing,
		usually the last cluster allocated
 1Fh	WORD	number of free clusters on drive, FFFFh = unknown
 21h	WORD	high word of free cluster count
 23h	WORD	active FAT/mirroring
		bit 7: do not mirror active FAT to inactive FATs
		bits 6-4: reserved (0)
		bits 3-0: the 0-based FAT number of the active FAT
		    (only meaningful if mirroring disabled)		
 25h	WORD	sector number of file system information sector, or
		  FFFFh for none (see also #01788)
 27h	WORD	sector number of backup boot sector, or FFFFh for none
 29h	DWORD	first sector number of the first cluster
 2Dh	DWORD	maximum cluster number
 31h	DWORD	number of sectors occupied by FAT
 35h	DWORD	cluster number of start of root directory
 39h	DWORD	cluster number at which to start searching for free space
Notes:	except for offset 18h, all of the first 33 bytes are identical to
	  the standard DOS 4-6 DPB
	unless the proper value is given in SI on entry to "Get_ExtDBP", the
	  next-DPB pointer and device driver address are set to 0000h:0000h
SeeAlso: #01786,#01395 at AH=32h,#01664

Format of File System Information structure:
Offset	Size	Description	(Table 01788)
 00h	DWORD	signature 61417272h
 04h	DWORD	number of free clusters (FFFFFFFFh if unknown)
 08h	DWORD	most recently allocated cluster
 0Ch 12 BYTEs	reserved
SeeAlso: #01787

Top
217303 - INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
	AX = 7303h
	DS:DX -> ASCIZ string for drive ("C:\" or "\\SERVER\Share")
	ES:DI -> buffer for extended free space structure (see #01789)
	CX = length of buffer for extended free space
Return: CF clear if successful
	    ES:DI buffer filled
	CF set on error
	    AX = error code
Notes:	on DOS versions which do not support the FAT32 calls, this function
	  returns CF clear/AL=00h (which is the DOS v1+ method for reporting
	  unimplemented functions)
	under DOS 7.x (i.e. "MSDOS Mode" under Windows95), the ASCIZ string
	  pointed at by DS:DX *must* include the drive letter, or this function
	  will return CF set/AX=0015h (invalid drive).	In a DOS box, omitting
	  the drive letter (DS:DX -> "\") results in the free space for the
	  current default drive, as expected
BUG:	this function returns a maximum of 2GB free space even on an FAT32
	  partition larger than 2GB under some versions of Win95 and Win98,
	  apparently by limiting the number of reported free clusters to no
	  more than 64K -- but only in a DOS window if a TSR has hooked INT 21h
SeeAlso: AX=7302h,AX=7304h,AX=7305h,AH=36h

Format of extended free space structure:
Offset	Size	Description	(Table 01789)
 00h	WORD	(ret) size of returned structure
 02h	WORD	(call) structure version (0000h)
		(ret) actual structure version (0000h)
 04h	DWORD	number of sectors per cluster (with adjustment for compression)
 08h	DWORD	number of bytes per sector
 0Ch	DWORD	number of available clusters
 10h	DWORD	total number of clusters on the drive
 14h	DWORD	number of physical sectors available on the drive, without
		  adjustment for compression
 18h	DWORD	total number of physical sectors on the drive, without
		  adjustment for compression
 1Ch	DWORD	number of available allocation units, without adjustment
		  for compression
 20h	DWORD	total allocation units, without adjustment for compression
 24h  8 BYTEs	reserved

Top
217304 - INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
	AX = 7304h
	DL = drive number (00h=default, 01h=A:, etc.)
	CX = size of buffer (must be at least 18h)
	ES:DI -> buffer for Set_DPBforFormat structure (see #01790)
Return: CF clear if successful
	    ES:DI buffer updated
	CF set on error
	    AX = error code (18h = bad length in CX)
SeeAlso: AX=7302h,AX=7303h,AX=7305h

Format of Set_DPBforFormat structure:
Offset	Size	Description	(Table 01790)
 00h	WORD	(call) size
 02h	WORD	(call) structure version???  (0000h)
		(ret) ???
 04h	DWORD	(call) function number
		00h invalidate DPB counts
		01h rebuild DPB from BPB
		02h force media change (next access to drive rebuild DPB)
		03h get/set active FAT number and mirroring
		04h get/set root directory cluster number
---function 00h---
 08h	DWORD	new DPB free count (00000000h=no change, FFFFFFFFh=unknown)
 0Ch	DWORD	new DPB next-free (00000000h=no change, FFFFFFFFh=unknown)
 10h	DWORD	unused
 14h	DWORD	unused
---function 01h---
 08h	DWORD	unused???
 0Ch	DWORD	(call) -> BIOS Parameter Block from which to rebuild DPB
 10h	DWORD	unused
 14h	DWORD	unused
---function 02h---
 08h	DWORD	unused
 0Ch	DWORD	unused
 10h	DWORD	unused
 14h	DWORD	unused
---function 03h---
 08h	DWORD	(call) new active FAT/mirroring state, or FFFFFFFFh to get
		bits 3-0: the 0-based FAT number of the active FAT
		bits 6-4: reserved (0)
		bit 7: do not mirror active FAT to inactive FATs
 0Ch	DWORD	(ret) previous active FAT/mirroring state (as above)
 10h	DWORD	unused
 14h	DWORD	unused
---function 04h---
 08h	DWORD	(call) new root directory cluster number
		    FFFFFFFFh to get current
 0Ch	DWORD	(ret) previous root directory cluster number
 10h	DWORD	unused
 14h	DWORD	unused

Top
217305CXFFFF - INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
	AX = 7305h
	CX = FFFFh
	DL = drive number (01h=A:, etc.)
	SI = read/write mode flags (see #01791)
	DS:BX -> disk I/O packet (see #02548 at INT 25)
Return: CF clear if successful
	CF set on error
	    AX = error code
Note:	one can not specify the default drive (DL=00h) for this function.
SeeAlso: AX=7302h,AX=7304h,INT 25,INT 26

Bitfields for Extended Absolute Disk Read/Write mode flags:
Bit(s)	Description	(Table 01791)
 0	direction (0=read, 1=write)
 12-1	reserved (0)
 14-13	write type (should be 00 on reads)
	00 unknown data
	01 FAT data
	10 directory data
	11 file data
 15	reserved (0)

Top
217575 - INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
	AX = 7575h
Return: AX = 4321h if resident
SeeAlso: AX=6969h,AH=76h"VIRUS"

Top
2176 - INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
	AH = 76h
Return: AL = 48h if resident
SeeAlso: AX=7575h,AX=7700h"VIRUS"

Top
217700 - INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
	AX = 7700h
Return: AX = 0920h if resident
SeeAlso: AH=76h,AX=7BCEh,AH=7Fh

Top
217734 - INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
	AX = 7734h
Return: DX = 3477h if installed
	    AX = segment of resident code
Program: ScrollIt is a shareware backscroll utility by Bromfield Software
	  Products

Top
217761 - INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
	AX = 7761h ('wa')
Return: AX = 6177h
Note:	WATCH.COM is part of the "TSR" package by TurboPower Software
SeeAlso: INT 16/AX=7761h

Top
217BCE - INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
	AX = 7BCEh
Return: AX = 7BCEh if resident (???)
SeeAlso: AX=5454h"VIRUS",AX=7700h,AX=7BCFh,AH=7Fh"VIRUS"

Top
217BCF - INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
	AX = 7BCFh
Return: AX = 7BCFh if resident
SeeAlso: AX=7BCEh"VIRUS",AH=7Dh"VIRUS"

Top
217D - INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
	AH = 7Dh
Return: AH = FAh if installed
SeeAlso: AX=7BCFh"VIRUS",AH=7Fh"VIRUS"

Top
217F - INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
	AH = 7Fh
Return: AH = 80h if resident
SeeAlso: AX=7BCEh,AH=83h"VIRUS"

Top
2180 - INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
	AH = 80h
	CX = mode
	    0000h place child in zombie mode on exit to preserve exit code
	    0001h discard child process and exit code on termination
	DS:DX -> ASCIZ full program name
	ES:BX -> parameter block (as for AX=4B00h)
Return: CF clear if successful
	    AX = Command Subgroup ID (CSID)
	CF set on error
	    AX = error code (see #01680 at AH=59h/BX=0000h)
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
	  by several other European OEMs; its release falls between mainstream
	  versions 3.2 and 3.3
Desc:	asynchronously execute a program, creating a new process for it
Notes:	this function is called by the DETACH command
	there is a system-wide limit of 32 processes
	the CSID is used to identify all processes that have been spawned by
	  a given process, whether directly or indirectly
	programs to be run in the background must use the new executable format
	  (see #01596 at AH=4Bh)
	background processes may only perform asynchronous (background) EXECs,
	  either this function or AX=4B04h
	background processes may execute INT 11, INT 12, INT 21, INT 2A, and
	  INT 2F at any time; they may execute INT 10 and INT 16 only while
	  they have opened a popup screen via INT 2F/AX=1401h; no other
	  interrupts may be executed from the background
	background processes may not use drive B: or overlay their code
	  segments
	see AX=8700h for an installation check
	the "NE" new executable format made its first appearance in European
	  MS-DOS 4.0
SeeAlso: AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"

Top
218080 - INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
	AX = 8080h
Return: ???
SeeAlso: AX=7070h/BX=7070h

Top
2181 - INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
	AH = 81h
	BX = flag (00h freeze command subtree, 01h only specified process)
	CX = Process ID of head of command subtree
Return: CF clear if successful
	CF set on error
	    AX = error code (no such process)
Desc:	temporarily suspend a process or a process and all of its children
Note:	if BX=0001h, this call will not return until the process is actually
	  frozen, which may not be until after it unblocks from an I/O
	  operation
SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh

Top
2182 - INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
	AH = 82h
	BX = flag (00h resume command subtree, 01h only specified process)
	CX = Process ID of head of command subtree
Return: CF clear if successful
	CF set on error
	    AX = error code (no such process)
Desc:	restart a previously-suspended process or a process and all of its
	  children
SeeAlso: AH=81h,INT 15/AX=101Eh

Top
2183 - INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
	AH = 83h
	AL = function
	    00h get size
	    01h set new size
		BX = new size in paragraphs
Return: CF clear if successful
	    BX = current size (function 00h) or old size (function 01h)
	CF set on error
	    AX = error code (01h,07h,0Dh)(see #01680 at AH=59h/BX=0000h)
Desc:	specify or determine how much memory may be allocated by the foreground
	  process
Note:	if the partition size is set to 0000h, no partition management is done
	  and all memory allocation is compatible with DOS 3.2.
	the partition size can be changed regardless of what use is being made
	  of the changed memory; subsequent allocations will follow the
	  partition rules (foreground processes may allocate only foreground
	  memory; background processes allocate background memory first, then
	  foreground memory)
SeeAlso: AH=48h,AH=4Ah

Top
2183 - INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
	AH = 83h
Return: DX = 1990h if resident
SeeAlso: AH=76h,AH=84h"VIRUS"

Top
2184 - INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
	AH = 84h
Return: DX = 1990h if resident
	    BH = version number (major in high nybble, minor in low)
SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"

Top
218400 - INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
	AX = 8400h
	BX = size in bytes (0000h = 65536)
	CX = flags
	    bit 6: zero-initialize segment
	DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
	    AX = segment address of shared memory global object
	CF set on error
	    AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
Desc:	create an area of memory which may be accessed by multiple processes
Notes:	shared memory objects are created as special files (thus the
	  restriction on the name)
	on successful creation, the reference count is set to 1
SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h

Top
218401 - INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
	AX = 8401h
	CX = flags
	    bit 7: writable segment (ignored by MS-DOS 4.0)
	DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
	    AX = segment address of shared memory global object
	    CX = size in bytes
	CF set on error
	    AX = error code (invalid name)
Desc:	get address of a previously-created area of memory which may be
	  accessed by multiple processes
Note:	this call increments the reference count for the shared memory area
SeeAlso: AX=8400h,AX=8402h

Top
218402 - INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
	AX = 8402h
	BX = handle (segment address of shared memory object)
Return: CF clear if successful
	CF set on error
	    AX = error code (no such name)
Desc:	indicate that the specified area of shared memory will no longer be
	  used by the caller
Note:	the reference count is decremented and the shared memory area is
	  deallocated if the new reference count is zero
SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h

Top
2185 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 85h
	???
Return: ???

Top
2186 - INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
	AH = 86h
	BX = total number of file handles in new table
Return: CF clear if successful
	CF set on error
	    AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
Desc:	adjust the size of the per-process open file table, thus raising or
	  lowering the limit on the number of files the caller can open
	  simultaneously
Notes:	any currently-open files are copied to the new table
	if the table is increased beyond the default 20 handles, only the
	  first 20 will be inherited by child processes
	error 06h is returned if the requested number of handles exceeds
	  system limits or would require closing currently-open files
SeeAlso: AH=26h,AH=67h

Top
2187 - INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
	AH = 87h
Return: AX = PID
	BX = parent process's PID
	CX = Command Subgroup ID (CSID)
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
	  by several other European OEMs; its release falls between mainstream
	  versions 3.2 and 3.3
Desc:	determine an identifier by which to access the calling process
Notes:	called by MS C v5.1 getpid() function
	this function apparently must return AX=0001h for INT 21/AH=80h to
	  succeed
	one possible check for European MS-DOS 4.0 is to issue this call with
	  AL=00h and check whether AL is nonzero on return
SeeAlso: AH=30h,AH=62h,AH=80h
Index:	installation check;European MS-DOS 4.0

Top
2188 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 88h
	???
Return: ???
SeeAlso: AH=87h

Top
2189 - INT 21 - European MS-DOS 4.0 - SLEEP
INT 21 - European MS-DOS 4.0 - SLEEP
	AH = 89h
	CX = time in milliseconds or 0000h to give up time slice
Return: CF clear if successful
	    CX = 0000h
	CF set on error
	    AX = error code (interrupted system call)
	    CX = sleep time remaining
Desc:	suspend the calling process for the specified duration
Notes:	the sleep interval is rounded up to the next higher increment of the
	  scheduler clock, and may be extended further if other processes are
	  running
	this call may be interrupted by signals (see AH=8Dh)
	reportedly called by Microsoft C 4.0 startup code
	background processes have higher priority than the foreground process,
	  and should thus periodically yield the CPU
SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah

Top
2189 - INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
	AH = 89h
Return: AX = 0123h if resident
SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"

Top
218A - INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
	AH = 8Ah
	BL = range (00h command subtree, 01h any child)
	BH = suspend flag
	    00h suspend if children exist but none are dead
	    01h return if no dead children
	CX = Process ID of head of command subtree
Return: CF clear if successful
	    AH = termination type (see #01792)
	    AL = return code from child or aborting signal
	    BX = PID of child (0000h if no dead children)
	CF set on error
	    AX = error code (no child,interrupted system call)
Desc:	get return code from an asynchronously-executed child program,
	  optionally waiting if no return code is available
SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh

(Table 01792)
Values for termination type:
 00h	normal termination
 01h	aborted by Control-C
 02h	aborted by I/O error
 03h	terminate and stay resident
 04h	aborted by signal
 05h	aborted by program error

Top
218B - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 8Bh
	???
Return: ???
SeeAlso: AH=87h

Top
218C - INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
	AH = 8Ch
	AL = signal number (see #01793)
	BL = action (see #01794)
	DS:DX -> signal handler (see #01795)
Return: CF clear if successful
	    AL = previous action
	    ES:BX -> previous signal handler
	CF set on error
	    AX = error code (01h,invalid SigNumber or Action)
		  (see #01680 at AH=59h/BX=0000h)
Desc:	set the routine which will be invoked on a number of exceptional
	  conditions
Note:	all signals will be sent to the most recently installed handler
SeeAlso: AH=8Dh

(Table 01793)
Values for European MS-DOS 4.0 signal number:
 01h	SIGINTR		Control-C or user defined interrupt key
 08h	SIGTERM		program termination
 09h	SIGPIPE		broken pipe
 0Dh	SIGUSER1	reserved for user definition
 0Eh	SIGUSER2	reserved for user definition

(Table 01794)
Values for signal action:
 00h	SIG_DFL		terminate process on receipt
 01h	SIG_IGN		ignore signal
 02h	SIG_GET		signal is accepted
 03h	SIG_ERR		sender gets error
 04h	SIG_ACK		acknowledge received signal and clear it, but don't
			  change current setting

(Table 01795)
Values signal handler is called with:
	AL = signal number (see #01793)
	AH = signal argument
Return: RETF, CF set: terminate process
	RETF, CF clear, ZF set: abort any interrupted system call with an error
	RETF, CF clear, ZF clear: restart any interrupted system call
	IRET: restart any interrupted system call
Note:	the signal handler may also perform a nonlocal GOTO by resetting the
	  stack pointer and jumping; before doing so, it should dismiss the
	  signal by calling this function with BL=04h

Top
218D - INT 21 - European MS-DOS 4.0 - SEND SIGNAL
INT 21 - European MS-DOS 4.0 - SEND SIGNAL
	AH = 8Dh
	AL = signal number (see #01793)
	BH = signal argument
	BL = action
	    00h send to entire command subtree
	    01h send only to specified process
	DX = Process ID
Return: CF clear if successful
	CF set on error
	    AX = error code (01h,06h)(see #01680 at AH=59h/BX=0000h)
Desc:	invoke the exceptional-condition handler for the specified process
Note:	error 06h may be returned if one or more of the affected processes
	  have an error handler for the signal
SeeAlso: AH=8Ch

Top
218E00BH00 - INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
	AX = 8E00h
	BH = 00h
	BL = action
	    00h set priority for command subtree
	    01h set priority for specified process only
	CX = Process ID
	DH = 00h
	DL = change in priority (00h to get priority)
Return: CF clear if successful
	    DL = process priority
	    DH destroyed
	CF set on error
	    AX = error code (01h,no such process)(see #01680 at AH=59h)
Desc:	specify or determine the execution priority of the specified process
	  or the process and all of its children
SeeAlso: AH=81h

Top
218F - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 8Fh
	???
Return: ???
SeeAlso: AH=87h

Top
2190 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 90h
	???
Return: ???
SeeAlso: AH=87h

Top
2190--CXFFFF - INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK READ
INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK READ
	AH = 90h
	CX = FFFFh (for partitions > 32 Mb)
	    DS:BX -> request block (see #04094)
	CX = sector count (for partitions < 32 Mb)
	    DX = starting sector number
	    DS:BX -> buffer
Return: CF set on error
	    AX error code
	CF clear on success
Notes:	This function is supported by Paragon Technology Systems S/DOS 1.0
	  (and most probably by PTS-DOS 6.51, maybe even earlier).
	To access big partitions (> 32 Mb), the CX != FFFFh is not allowed and
	  the buffer must always be used. Otherwise, the system will return
	  error code 0207h.
	It is currently unknown if this function is also supported by
	  PhysTechSoft PTS-DOS 6.60, 6.70, or 2000.
SeeAlso: INT 21/AH=91h"PTS",INT 25h,INT 26h

Format of PTS-DOS & S/DOS disk read/write request block:
Offset	Size	Description	(Table 04094)
 00h	DWORD	sector number
04h	WORD	counter
06h	DWORD	pointer to buffer

Top
2190 - INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
	AH = 90h
Return: AH = 01h if resident
SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"

Top
2191 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 91h
	???
Return: ???
SeeAlso: AH=87h

Top
2191--CXFFFF - INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK WRITE
INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - DIRECT DISK WRITE
	AH = 91h
	CX = FFFFh (for partitions > 32 Mb)
	    DS:BX -> request block (see #04094)
	CX = sector count (for partitions < 32 Mb)
	    DX = starting sector number
	    DS:BX -> buffer
Return: CF set on error
	    AX error code
	CF clear on success
Note:	This function is supported by Paragon Technology Systems S/DOS 1.0
	  (and most probably by PTS-DOS 6.51, maybe even earlier).
	To access big partitions (> 32 Mb), CX != FFFFh is not allowed and
	  the buffer must always be used. Otherwise, the system will return
	  error code 0207h.
	It is currently unknown if this function is also supported by
	  PhysTechSoft PTS-DOS 6.60, 6.70, or 2000.
SeeAlso: INT 21/Ah=90h"PTS",INT 25h,INT 26h

Top
2192 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 92h
	???
Return: ???
SeeAlso: AH=87h

Top
2192 - INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - ABORT CURRENT PROCESS VIA INT 23
INT 21 U - PTS-DOS 6.51 & S/DOS 1.0 - ABORT CURRENT PROCESS VIA INT 23
	AH = 92h
Desc:	This function is provided by Paragon Technology Systems S/DOS 1.0+
	  (and most probably also by PTS-DOS 6.51+, maybe even earlier).
	  It allows terminating programs via the CTRL+BREAK method.
Note:	It is currently unknown if this function is also supported by
	  PhysTechSoft PTS-DOS 6.60, 6.70, or 2000.
SeeAlso: INT 23,INT 24

Top
2193 - INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
	AH = 93h
	CX = size in bytes
Return: CF clear if successful
	    AX = read handle
	    BX = write handle
	CF set on error
	    AX = error code (08h) (see #01680 at AH=59h/BX=0000h)
Desc:	create a communications channel which may be used for interprocess
	  data and command exchanges
SeeAlso: AH=3Ch,AH=3Fh"DOS",AH=40h"DOS",AH=84h

Top
2194 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 94h
	???
Return: ???
SeeAlso: AH=87h

Top
2195 - INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
	AH = 95h
	AL = new state
	   00h enabled
	   01h disabled, automatically fail hard errors
Return: AX = previous setting
Desc:	specify whether hard (critical) errors should automatically fail the
	  system call or invoke an INT 24
SeeAlso: INT 24,INT 21/AH=59h/BX=0001h

Top
2196 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 96h
	???
Return: ???

Top
2197 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 97h
	???
Return: ???

Top
219753 - INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
	AX = 9753h
Return: never (executes original program) if virus resident
SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS",AX=9AD5h"VIRUS"

Top
2198 - INT 21 U - European MS-DOS 4.0 - ???
INT 21 U - European MS-DOS 4.0 - ???
	AH = 98h
	???
Return: ???

Top
2199 - INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
	AH = 99h
	DS:BX -> memory location to block on
	CX = timeout in milliseconds
	DH = nonzero if interruptable
Return: CF clear if awakened by event
	    AX = 0000h
	CF set if unusual wakeup
	    ZF set if timeout, clear if interrupted by signal
	    AX = nonzero
Desc:	suspend calling process until another process sends a "restart" signal
	  or a timeout occurs
SeeAlso: AH=9Ah,INT 2F/AX=0802h

Top
219A - INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
	AH = 9Ah
	DS:BX -> memory location processes may have blocked on
Return: AX = number of processes awakened
	ZF set if no processes awakened
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
	  by several other European OEMs; its release falls between mainstream
	  versions 3.2 and 3.3
Desc:	restart all processes waiting for the specified "restart" signal
SeeAlso: AH=99h,INT 2F/AX=0802h

Top
219AD5 - INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
	AX = 9AD5h
Return: AX = 9AD4h if resident
SeeAlso: AX=6969h"VIRUS",AX=A1D5h"VIRUS"

Top
21A0 - INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
	AH = A0h
Return: AL = display status (see #01796)
	BX = host window status (see #01797)
Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
SeeAlso: AH=A1h

Bitfields for Attachmate Extra! display status:
Bit(s)	Description	(Table 01796)
 7	0=windowed, 1=enlarged
 6-3	current screen profile number 0-9
 2-0	active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)

Bitfields for host window status:
Bit(s)	Description	(Table 01797)
 15	reserved
 14	0=host E window installed, 1=not
 13	0=host E terminal on, 1=off
 12	0=host E window displayed, 1=not
 11	reserved
 10	0=host D window installed, 1=not
 9	0=host D terminal on, 1=off
 8	0=host D window displayed, 1=not
 7	reserved
 6	0=host C window installed, 1=not
 5	0=host C terminal on, 1=off
 4	0=host C window displayed, 1=not
 3	reserved
 2	0=host B window installed, 1=not
 1	0=host B terminal on, 1=off
 0	0=host B window displayed, 1=not

Top
21A1 - INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
	AH = A1h
	AL = new display status byte (see #01796)
SeeAlso: AH=A0h,AH=A2h

Top
21A1D5 - INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
	AX = A1D5h
Return: AX = 900Dh if resident
SeeAlso: AX=9753h,AX=9AD5h,AX=A55Ah

Top
21A2 - INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
	AH = A2h
	AL = new host window status byte (see #01798)
SeeAlso: AH=A1h

Bitfields for Attachmate Extra! host window status:
Bit(s)	Description	(Table 01798)
 7	0=power off, 1=power on
 6	0=not installed, 1=installed
 5-3	reserved
 2-0	window number 1-4=host B-E

Top
21A3 - INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
	AH = A3h
	AL = window number (1-4=host B-E)
	CX = 0001h
	DS:BX -> keystroke buffer
	DL = zero if keystroke buffer contains host function code (see #01799),
	      non-zero if keystroke buffer contains ASCII character
Return: CX = zero if character sent, non-zero if not
	BX incremented if CX=0

(Table 01799)
Values for Attachmate Extra! host function code:
 00h=reserved	10h=PF16	20h=Clear	30h=SysReq
 01h=PF1	11h=PF17	21h=Print	31h=ErInp
 02h=PF2	12h=PF18	22h=Left	32h=ErEof
 03h=PF3	13h=PF19	23h=Right	33h=Ident
 04h=PF4	14h=PF20	24h=Up		34h=Test
 05h=PF5	15h=PF21	25h=Down	35h=Reset
 06h=PF6	16h=PF22	26h=Home	36h=DevCncl
 07h=PF7	17h=PF23	27h=Fast Left	37h=Dup
 08h=PF8	18h=PF24	28h=Fast Right	38h=FldMark
 09h=PF9	19h=Alt on	29h=Bksp	39h=Enter
 0Ah=PF10	1Ah=Alt off	2Ah=Insert	3Ah=CrSel
 0Bh=PF11	1Bh=Shift on	2Bh=Delete
 0Ch=PF12	1Ch=Shift off	2Ch=Backtab
 0Dh=PF13	1Dh=PA1		2Dh=Tab
 0Eh=PF14	1Eh=PA2		2Eh=Newline
 0Fh=PF15	1Fh=PA3		2Fh=Attn

Top
21A4 - INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
	AH = A4h
	AL = window number (1-4=host B-E)
Return: DS:BX -> 3270 display buffer
SeeAlso: AH=A5h,AH=B8h

Top
21A5 - INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
	AH = A5h
	AL = window number (1-4=host B-E)
Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
Note:	if the host window is configured with the Extended Attribute (EAB)
	  feature, multiply the cursor position by 2 to obtain the byte offset
	  into the display buffer
SeeAlso: AH=A4h

Top
21A55A - INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
	AX = A55Ah
Return: AX = 5AA5h if resident
SeeAlso: AX=A1D5h,AX=AA00h

Top
21AA00 - INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
	AX = AA00h
Return: AX = 00AAh if resident
SeeAlso: AX=A55Ah,AX=AA03h

Top
21AA03 - INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
	AX = AA03h
Return: AX = 03AAh if resident
SeeAlso: AX=AA00h,AH=ABh

Top
21AB - INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
	AH = ABh
Return: AX = 5555h if resident
SeeAlso: AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS"

Top
21ABCD - INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
	AX = ABCDh
Return: AX = 1234h if installed
SeeAlso: AH=ABh"VIRUS",AX=ABCDh"SuperVirus"

Top
21ABCD - INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
	AX = ABCDh
Return: AX = DCBAh if resident
SeeAlso: AX=ABCDh"VIRUS",AX=BBBBh"VIRUS"

Top
21AF - INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
	AH = AFh
Return: DS:BX -> translate tables (see #01800)

Format of Attachmate Extra! translate tables:
Offset	Size	Description	(Table 01800)
 00h 256 BYTEs	ASCII to 3270 buffer code translate table
100h 256 BYTEs	3270 buffer code to ASCII translate table
200h 256 BYTEs	3270 buffer code to EBCDIC translate table
300h 256 BYTEs	EBCDIC to 3270 buffer code translate table

Top
21B3 - INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
	AH = B3h
Return: AX = 9051h if resident
SeeAlso: AH=7Fh"VIRUS",AX=B974h"VIRUS"

Top
21B300 - INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
	AX = B300h
Return: AX = 0000h if supported???
Note:	this function appeared with the packet signing/Large Internet Packets/
	  IPX Checksum-aware NetWare shells
SeeAlso: AX=B301h,AX=B302h

Top
21B301 - INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
	AX = B301h
Return: AX = 0000h if supported???
	    BX:CX indicate signature level (see #01801)
Note:	this function appeared with the packet signing/Large Internet Packets/
	  IPX Checksum-aware NetWare shells
SeeAlso: AX=B300h,AX=B304h,#02875 at INT 2F/AX=7A20h/BX=0000h

(Table 01801)
Values for signature level indicator:
 0000h:0000h = signature level 0
 0002h:0000h = signature level 1
 0202h:0000h = signature level 2
 0202h:0202h = signature level 3

Top
21B302 - INT 21 U - Novell NetWare - START PACKET SIGNING
INT 21 U - Novell NetWare - START PACKET SIGNING
	AX = B302h
	CX = server connection (1-8)
	DS:SI -> 24-byte buffer containing ???
Return: ???
Notes:	this function appeared with the packet signing/Large Internet Packets/
	  IPX Checksum-aware NetWare shells
	if packet signing is active, this call is required if and only if the
	  last call successfully authenticated the workstation to the server
SeeAlso: AX=B300h,#02875

Top
21B304 - INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
	AX = B304h
	BX:CX = new signature level (see AX=B301h)
Return: ???
Note:	this function appeared with the packet signing/Large Internet Packets/
	  IPX Checksum-aware NetWare shells
SeeAlso: AX=B300h,AX=B301h,AX=B306h,#02875

Top
21B306 - INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
	AX = B306h
	CX = server connection number (01h-08h)
Return: ???
Note:	this function appeared with the packet signing/Large Internet Packets/
	  IPX Checksum-aware NetWare shells
SeeAlso: AX=B300h,AX=B304h,#02875

Top
21B4 - INT 21 U - Novell NetWare - "AttachHandle"
INT 21 U - Novell NetWare - "AttachHandle"
	AH = B4h
	DS:SI -> input buffer (see #01802)
Return: AX = DOS file handle or return code
Note:	this is an interface provided by NetWare to give DOS file access to
	  NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
SeeAlso: AX=E909h

Format of Novell NetWare input buffer:
Offset	Size	Description	(Table 01802)
 00h	BYTE	"WorkFileServer"
 01h	BYTE	access code
 02h	DWORD	"OpenHandle"
 06h	WORD	"OpenHandleCount"
 08h	DWORD	"OpenFileSize"
Note:	the six bytes at 02h-07h appear to be the six-byte NetWare handle
	  returned by AX=E909h

Top
21B500 - INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
	AX = B500h
Return: ES:BX -> data
	CX = length
SeeAlso: AX=B501h,AX=B502h

Top
21B501 - INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
	AX = B501h
SeeAlso: AX=B500h,AX=B502h

Top
21B502 - INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
	AX = B502h
SeeAlso: AX=B500h,AX=B501h

Top
21B5 - INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
	AH = B5h
	AL = subfunction
	    03h get task mode
		Return: AH = 00h
			AL = current task mode byte (see #01803)
	    04h get task mode pointer
		Return: ES:BX -> task mode byte
Notes:	the task mode byte specifies how task cleanup should be performed, but
	  is declared to be version-dependent
	allows a program to disable the automatic cleanup for programs managing
	  task swapping, etc.

(Table 01803)
Values for NetWare task mode byte in version 3.01:
 00h-03h reserved
 04h	 no task cleanup

Top
21B505 - INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
	AX = B505h
	???
Return: ???
SeeAlso: AX=B502h,AX=B506h

Top
21B506 - INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
	AX = B506h
Return: AX = ??? (0002h)
SeeAlso: AX=B505h

Top
21B507 - INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
	AX = B507h
Return: AL = number of packet burst buffers (configured at shell load time)

Top
21B6 - INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
	AH = B6h
	AL = subfunction
	    00h get extended file attributes
	    01h set extended file attributes
		CL = extended file attributes (see #01804)
	DS:DX -> ASCIZ pathname (max 255 bytes)
Return: CF set on error
	    AL = error code
		8Ch caller lacks privileges
		FEh not permitted to search directory
		FFh file not found
	CF clear if successful
	    AL = 00h (success)
	    CL = current extended file attributes (see #01804)
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=4300h,AH=E3h/SF=0Fh

Bitfields for NetWare extended file attributes:
Bit(s)	Description	(Table 01804)
 2-0	search mode (executables only)
	000 none (use shell's default search)
	001 search on all opens without path
	010 do not search
	011 search on read-only opens without path
	100 reserved
	101 search on all opens
	110 reserved
	111 search on all read-only opens
 3	reserved
 4	transactions on file tracked
 5	file's FAT indexed
 6	read audit (to be implemented)
 7	write audit (to be implemented)

Top
21B7 - INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
	AH = B7h
	AL = new value for HoldFileFlag
Return: AL = previous value of HoldFileFlag
Note:	this function provided backward compatibility with a bug in early
	  DOS versions and CP/M, but is no longer used or supported

Top
21B8 - INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
	AH = B8h
	AL = window number (1-4=host B-E)
	DL = 01h
Notes:	only valid in CUT mode
	next AID keystroke (eg Enter) enables host buffer updates
SeeAlso: AH=A4h

Top
21B800 - INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
	AX = B800h
	CX = size of reply buffer (01h-3Fh)
	ES:BX -> reply buffer for capture flags table (see #01805)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 2.0+
SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h

Format of NetWare capture flags table:
Offset	Size	Description	(Table 01805)
 00h	BYTE	status (used internally, should be set to 00h)
 01h	BYTE	print flags (see #01806)
 02h	BYTE	tab size (01h-12h, default 08h)
 03h	BYTE	printer number on server (00h-04h, default 00h)
 04h	BYTE	number of copies to print (00h-FFh, default 01h)
 05h	BYTE	form type required in printer (default 00h)
 06h	BYTE	reserved
 07h 13 BYTEs	text to be placed on banner page
 14h	BYTE	reserved
 15h	BYTE	default local printer (00h = LPT1)
 16h	WORD	(big-endian) timeout in clock ticks for flushing capture file
		  on inactivity, or 0000h to disable timeout
 18h	BYTE	flush capture file on LPT close if nonzero
 19h	WORD	(big-endian) maximum lines per page
 1Bh	WORD	(big-endian) maximum characters per line
 1Dh 13 BYTEs	name of form required in printer
 2Ah	BYTE	LPT capture flag
		00h inactive, FFh LPT device is being captured
 2Bh	BYTE	file capture flag
		00h if no file specified, FFh if capturing to file
 2Ch	BYTE	timing out (00h if no timeout in effect, FFh if timeout counter
		  running)
 2Dh	DWORD	(big-endian) address of printer setup string
 31h	DWORD	(big-endian) address of printer reset string
 35h	BYTE	target connection ID
 36h	BYTE	capture in progress if FFh
 37h	BYTE	job queued for printing if FFh
 38h	BYTE	print job valid if FFh
 39h	DWORD	bindery object ID of print queue if previous byte FFh
 3Dh	WORD	(big-endian) print job number (1-999)

Bitfields for NetWare print flags:
Bit(s)	Description	(Table 01806)
 2	print capture file if interrupted by loss of connection
 3	no automatic form feed after print job
 6	printing control sequences interpreted by print service
 7	print banner page before capture file

Top
21B801 - INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
	AX = B801h
	CX = size of buffer (01h-3Fh)
	ES:BX -> buffer containing capture flags table (see #01805)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 2.0+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h

Top
21B802 - INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
	AX = B802h
	CX = size of reply buffer (01h-3Fh)
	DH = LPT port (00h-02h)
	ES:BX -> reply buffer for capture flags table (see #01805)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h

Top
21B803 - INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
	AX = B803h
	CX = size of buffer (01h-3Fh)
	DH = LPT port (00h-02h)
	ES:BX -> buffer containing capture flags table (see #01805)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h

Top
21B804 - INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
	AX = B804h
Return: DH = default LPT port (00h-02h)
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h

Top
21B805 - INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
	AX = B805h
	DH = new default LPT port (00h-02h)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h

Top
21B806 - INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
	AX = B806h
	DH = LPT port (00h-02h)
	BX:CX = print queue's object ID
Return: AL = status
	    00h successful
	    FFh job already set
Desc:	specify the print queue on which a print job is to be placed the next
	  time a capture is started on the given printer port
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B801h,AX=B807h,AH=E0h/SF=09h

Top
21B807 - INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
	AX = B807h
	DH = LPT port (00h-02h)
	BX = job number (see AH=E3h/SF=68h)
	SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
Return: AL = status
	    00h successful
	    FFh job already queued
Desc:	specify the capture file and print job to be used for subsequent
	  output to the given printer port
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B801h,AX=B806h,AH=E0h/SF=09h,AH=E3h/SF=68h

Top
21B808 - INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
	AX = B808h
	ES:BX -> 12-byte buffer for user name
Return: AL = status
	    00h successful
Desc:	get the user name which is printed on the banner page
Notes:	this function is supported by Advanced NetWare 2.1+
	the default name is the login name of the user
SeeAlso: AX=B809h

Top
21B809 - INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
	AX = B809h
	ES:BX -> 12-byte buffer containing user name
Return: AL = status
	    00h successful
Desc:	specify the user name which is printed on the banner page
Notes:	this function is supported by Advanced NetWare 2.1+
	the default name is the login name of the user
SeeAlso: AX=B808h

Top
21B9 - INT 21 U - Novell NetWare - "SpecialAttachableFunction"
INT 21 U - Novell NetWare - "SpecialAttachableFunction"
	AH = B9h
	AL = FFh to hook this function
	    ES:BX -> function to invoke on AH=B9h when AL<>FFh
Note:	this function is no longer used or supported by current versions of
	  NetWare

Top
21B974 - INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
	AX = B974h
Return: AX = 2888h if resident
SeeAlso: AH=B3h"VIRUS",AH=D0h"VIRUS"

Top
21BA - INT 21 U - Novell NetWare - "ReturnCommandComPointers"
INT 21 U - Novell NetWare - "ReturnCommandComPointers"
	AH = BAh
Return: DX = environment segment
	ES:DI -> COMMAND.COM drive
Desc:	used to edit the COMSPEC and PATH variables in the master environment
	  when mapping network drives
Note:	this function was documented in older Novell documents which are no
	  longer available

Top
21BB - INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
	AH = BBh
	AL = new EOJ flag
	    00h disable EOJs
	    01h enable EOJs
Return: AL = old EOJ flag
Desc:	specify whether the network shell should automatically generate an
	  End of Job call when the root command processor regains control
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=19h,AH=D6h

Top
21BBBB - INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
	AX = BBBBh
Return: AX = 6969h
SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"

Top
21BC - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
	AH = BCh
	AL = flags (see #01808)
	BX = file handle
	CX:DX = starting offset in file
	SI:DI = length of region to lock
	BP = timeout in timer ticks (1/18 sec)
		0000h = don't wait if already locked
Return: AL = status (see #01807)
Desc:	add the specified physical record to the log table, optionally locking
	  it
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h

(Table 01807)
Values for NetWare status:
 00h	successful
 96h	no dynamic memory for file
 FEh	timed out
 FFh	failed

Bitfields for NetWare flags:
Bit(s)	Description	(Table 01808)
 0	lock as well as log record
 1	non-exclusive lock

Top
21BD - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
	AH = BDh
	BX = file handle
	CX:DX = starting offset in file
	SI:DI = length of record
Return: AL = status
	    00h successful
	    FFh record not locked
Desc:	unlock the specified physical record but do not remove it from log
	  table
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h

Top
21BE - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
	AH = BEh
	BX = file handle
	CX:DX = starting offset within file
	SI:DI = record length in bytes
Return: AL = status
	    00h successful
	    FFh specified record not locked
Desc:	unlock the physical record and remove it from the log table
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h

Top
21BE - INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
	AH = BEh
Return: AX = 1234h if resident
SeeAlso: AX=BBBBh,AX=BE00h

Top
21BE00 - INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
	AX = BE00h
	CF set
Return: CF clear if resident
SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"

Top
21BF - INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
	AH = BFh
	AL = flags (see #01808)
	DS:DX -> opened FCB (see #01345 at AH=0Fh)
	BX:CX = offset
	BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
	SI:DI = length
Return: AL = error code (see #01807)
Note:	this function was added in NetWare 4.6, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"

Top
21C0 - INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
	AH = C0h
	DS:DX -> non-extended FCB (see #01345 at AH=0Fh)
	BX:CX = offset
Return: AL = error code (see #01807)
Notes:	unlocks record but does not remove it from log table
	this function was added in NetWare 4.6, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h

Top
21C0 - INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
	AH = C0h
Return: AX = 0300h if "Slow"/"Zerotime" resident
	AX = 1234h if "Solano" resident
SeeAlso: AX=BE00h,AX=C000h"VIRUS",AX=C301h"VIRUS"

Top
21C000 - INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
	AX = C000h
	BX = most files infected by any other infected file
Return: AX = 76F3h if resident
SeeAlso: AH=C0h"VIRUS",AX=C001h,AX=C002h,AH=C1h"VIRUS"

Top
21C001 - INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
	AX = C001h
Return: nothing
Note:	if the virus is already memory resident this call disables any
	  further infections
SeeAlso: AX=C000h,AX=C002h

Top
21C002 - INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
	AX = C002h
Return: nothing
Note:	if the virus is already memory resident and infection is disabled,
	  this call re-enables it
SeeAlso: AX=C000h,AX=C001h

Top
21C1 - INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
	AH = C1h
	DS:DX -> opened FCB (see #01345 at AH=0Fh)
	BX:CX = offset
Return: AL = error code (see #01807)
Note:	unlocks record and removes it from log table
	this function was added in NetWare 4.6, but was removed some time prior
	  to Advanced NetWare, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h

Top
21C1 - INT 21 - VIRUS - "Solano" - ???
INT 21 - VIRUS - "Solano" - ???
	AH = C1h
	???
Return: ???
SeeAlso: AH=C0h"VIRUS"

Top
21C2 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
	AH = C2h
	AL = flags
	    bit 1: non-exclusive lock
	BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
Return: AL = status
	    00h successful
	    FEh timed out
	    FFh failed
Desc:	attempt to lock all physical records listed in the log table
Notes:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	status FFh will be returned if one or more physical records have been
	  exclusively locked by another process
SeeAlso: AH=BFh,AH=C3h,AH=D1h

Top
21C2 - INT 21 - VIRUS - "Scott's Valley" - ???
INT 21 - VIRUS - "Scott's Valley" - ???
	AH = C2h
	???
Return: ???
SeeAlso: AH=C0h"VIRUS"

Top
21C3 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
	AH = C3h
Desc:	unlock all currently-locked physical records in the log table, but do
	  not remove them from the table
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h

Top
21C301DXF1F1 - INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
	AX = C301h
	DX = F1F1h
Return: DX = 0E0Eh if resident
SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"

Top
21C4 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
	AH = C4h
Desc:	unlock all physical records in the log table and remove them from the
	  log table
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=BEh,AH=C1h,AH=D5h

Top
21C500 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
	AX = C500h
	DS:DX -> semaphore name (counted string, max 127 bytes)
	CL = initial value for semaphore
Return: AL = status
	    00h successful
		BL = number of processes having semaphore open
		CX:DX = semaphore handle
	    03h name length greater than 127
		(refer to Novell document FYI.A.4611)
	    FEh invalid name length
	    FFh invalid semaphore value
Notes:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	the semaphore's value is incremented by AX=C503h and decremented by
	  AX=C502h
SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h,AX=F220h/SF=00h

Top
21C500 - INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
	AX = C500h
Return: AX = 6731h if resident
SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"

Top
21C501 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
	AX = C501h
	CX:DX = semaphore handle
Return: AL = status
	    00h successful
		CX = semaphore value (-127 to 127)
		DL = count of processes which have the semaphore open
	    FFh invalid handle
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h,AX=F220h/SF=01h

Top
21C502 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
	AX = C502h
	CX:DX = semaphore handle
	BP = timeout limit in timer ticks (1/18 sec)
		0000h return immediately if semaphore already zero or negative
Return: AL = status
	    00h successful
	    FEh timeout
	    FFh invalid handle
Desc:	decrement the semaphore's value, optionally waiting until its value
	  becomes positive before decrementing
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h,AX=F220h/SF=02h

Top
21C503 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
	AX = C503h
	CX:DX = semaphore handle
Return: AL = status
	    00h successful
	    01h semaphore value overflowed
	    FFh invalid handle
Desc:	increment the semaphore's value and signal the first process (if any)
	  in the queue waiting on the semaphore
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C502h,AX=F220h/SF=03h

Top
21C504 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
	AX = C504h
	CX:DX = semaphore handle
Return: AL = status
	    00h successful
	    FFh invalid handle
Desc:	decrement the semaphore's open count, and delete the semaphore if the
	  count reaches zero
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C501h,AX=F220h/SF=04h

Top
21C6 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
	AH = C6h
	AL = subfunction
	    00h set old "compatibility" mode (default)
	    01h set new extended locks mode
	    02h get lock mode
Return: AL = current lock mode
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	the locking mode should be 01h for NetWare 4.61+ and Advanced
	  NetWare 1.0+ locking calls, and 00h for all older calls
SeeAlso: AH=BCh,AH=C4h,AH=D0h

Top
21C6 - INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
	AH = C6h
Return: AL = 55h if resident
SeeAlso: AX=C500h"VIRUS",AX=C603h

Top
21C603 - INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
	AX = C603h
	BX = version number (002Ch or 002Dh)
	CF set
Return: CF clear if resident
	ZF set if resident and input BX matches version
SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"

Top
21C700 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
	AX = C700h
Return: CF clear if successful
	    AL = 00h
	CF set on error
	    AL = error code
		96h out of memory
		FEh implicit transaction already active, converted to explicit
		FFh explicit transaction already active
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C701h,AX=C702h,AX=C703h,AX=F222h/SF=01h

Top
21C700 - INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
	AX = C700h
Return: AL = 07h if resident
SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"

Top
21C701 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
	AX = C701h
Return: AL = status (00h,FDh-FFh) (see #01809)
	    00h successful
		CX:DX = transaction number
	CF clear except when AL=FFh
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h"NetWare",AX=C703h,AX=F222h/SF=02h

(Table 01809)
Values for NetWare TTS status:
 00h	successful
 FDh	transaction tracking disabled
 FEh	transaction ended records locked
 FFh	no explicit transaction active

Top
21C702 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
	AX = C702h
Return: AL = status
	    00h not available
	    01h available
	    FDh available but disabled
Desc:	determine whether the default file server supports TTS
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h,AX=C701h,AX=C703h,AX=F222h/SF=00h

Top
21C703 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
	AX = C703h
Return: CF clear if successful
	    AL = 00h
	CF set on error
	    AL = error code (FDh-FFh) (see #01809)
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h,AX=F222h/SF=03h

Top
21C704 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
	AX = C704h
	CX:DX = transaction number (see AX=C701h)
Return: AL = status
	    00h successful
	    FFh not yet written to disk
Desc:	verify that a transaction has actually been written to disk
Notes:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
	transactions are written to disk in the order in which they are ended,
	  but it may take as much as five seconds for the data to be written
SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h,AX=F222h/SF=04h

Top
21C705 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
	AX = C705h
Return: AL = status
	    00h successful
	CL = maximum logical record locks (default 0)
	CH = maximum physical record locks (default 0)
Desc:	get the per-application limits on record locks allowed before an
	  implicit transaction is begun
Notes:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
	if either limit is FFh, implicit transactions are disabled for the
	  corresponding lock type
SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=05h

Top
21C706 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
	AX = C706h
	CL = maximum logical record locks (default 0)
	CH = maximum physical record locks (default 0)
Return: AL = status
	    00h successful
Desc:	specify the per-application limits on record locks allowed before an
	  implicit transaction is begun
Notes:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
	if either limit is set to FFh, implicit transactions are disabled for
	  the corresponding lock type
SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=06h

Top
21C707 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
	AX = C707h
Return: AL = status
	    00h successful
	CL = maximum logical record locks (default 0)
	CH = maximum physical record locks (default 0)
Desc:	get the per-workstation limits on record locks allowed before an
	  implicit transaction is begun
Notes:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
	if either limit is FFh, implicit transactions are disabled for the
	  corresponding lock type
SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=07h

Top
21C708 - INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
	AX = C708h
	CL = maximum logical record locks (default 0)
	CH = maximum physical record locks (default 0)
Return: AL = status
	    00h successful
Desc:	specify the per-workstation limits on record locks allowed before an
	  implicit transaction is begun
Notes:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
	if either limit is set to FFh, implicit transactions are disabled for
	  the corresponding lock type
SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=08h

Top
21C8 - INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
	AH = C8h
	if function C6h lock mode 00h:
	    DL = mode
		00h no wait
		01h wait
	if function C6h lock mode 01h:
	    BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
Desc:	used to provide TTS support for applications which are not aware of
	  Novell's Transaction Tracking System
Note:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=C9h

Top
21C9 - INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
	AH = C9h
Return: AL = error code
Desc:	used to provide TTS support for applications which are not aware of
	  Novell's Transaction Tracking System
Note:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=C8h

Top
21CA - INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
	AH = CAh
	DS:DX -> FCB (see #01345 at AH=0Fh)
	if function C6h lock mode 01h:
	    AL = log and lock flag
		00h log file only
		01h lock as well as log file
	    BP = lock timeout in timer ticks (1/18 sec)
Return: AL = error code
	    00h successful
	    96h no dynamic memory for file
	    FEh timeout
	    FFh failed
Desc:	provides file locking support for FCBs
Note:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=CBh

Top
21CA15 - INT 21 - VIRUS - "Piter" - ???
INT 21 - VIRUS - "Piter" - ???
	AX = CA15h
	???
Return: ???
SeeAlso: AH=CCh"VIRUS"

Top
21CB - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
	AH = CBh
	if function C6h lock mode 00h:
	    DL = mode (00h no wait, 01h wait)
	if function C6h lock mode 01h:
	    BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
Return: AL = status (00h,FEh,FFh) (see #01810)
Desc:	attempt to lock all files listed in the log table
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	status FFh will be returned if one or more of the files have already
	  been exclusively locked by another process
SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh

(Table 01810)
Values for NetWare status:
 00h	successful
 FEh	timed out
 FFh	failed

Top
21CB - INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
	AH = CBh
Return: AL = 07h if resident
SeeAlso: AX=C700h"VIRUS",AX=CB02h

Top
21CB02 - INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
	AX = CB02h
Return: AX = 02CBh if resident
SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"

Top
21CC - INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
	AH = CCh
	DS:DX -> FCB (see #01345 at AH=0Fh)
Return: none
Desc:	unlocks file, but does not remove it from the log table or close it
Note:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=CAh,AH=CDh

Top
21CC - INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
	AH = CCh
Return: AX = 0700h if resident
SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"

Top
21CD - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
	AH = CDh
Return: none
Desc:	unlock all files listed in the log table, but don't remove them from
	  the table
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h

Top
21CD - INT 21 - VIRUS - "Westwood" - ???
INT 21 - VIRUS - "Westwood" - ???
	AH = CDh
	???
Return: ???
SeeAlso: AH=CCh"VIRUS"

Top
21CE - INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
	AH = CEh
	DS:DX -> FCB (see #01345 at AH=0Fh)
Return: AL = error code
Desc:	unlocks file and removes it from log table, then closes all opened and
	  logged occurrences
Note:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"

Top
21CF - INT 21 - LANstep - ???
INT 21 - LANstep - ???
	AH = CFh
	???
Return: ???
Program: LANstep is a redesign of the Waterloo Microsystems PORT network

Top
21CF - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
	AH = CFh
Return: AL = 00h
Desc:	unlock and remove all files from log table
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"

Top
21D0 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
	AH = D0h
	DS:DX -> record string (counted string, max 99 data bytes)
	if function C6h lock mode 01h: (Novell, NTNX only)
	    AL = flags
		bit 0: lock as well as log the record
		bit 1: non-exclusive lock
	    BP = lock timeout in timer ticks (1/18 sec)
Return: AL = status
	    00h successful
	    96h no dynamic memory for file
	    FEh timed out
	    FFh unsuccessful
Desc:	add the specified logical record name to the log table, and optionally
	  lock the record
Notes:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
	  Banyan VINES, and Alloy NTNX
	locks on logical record names are advisory and may be ignored by other
	  applications
SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh

Top
21D0 - INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
	AH = D0h
Return: AX = 00D0h if resident
SeeAlso: AH=B3h"VIRUS",AH=D0h"ANTIARJ",AX=D000h"VIRUS"

Top
21D0 - INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
	AH = D0h
Return: AH = D1h if resident
SeeAlso: AH=D0h"MALAGA"

Top
21D000 - INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
	AX = D000h
Return: BX = 1234h if resident
SeeAlso: AH=CCh"VIRUS",AH=D0h"ANTIARJ",AX=D000h"Warlock",AH=D5h"VIRUS",AX=D5AAh

Top
21D000 - INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
	AX = D000h
	CF clear
Return: CF set if resident (normal DOS return would be CF clear)
SeeAlso: AX=D000h"VIRUS",AH=D5h"VIRUS"

Top
21D1 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
	AH = D1h
	AL = lock type (00h exclusive, 01h shareable)
	if function C6h lock mode 00h:
	    DL = mode (00h no wait, 01h wait)
	if function C6h lock mode 01h: (Novell only)
	    BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
Return: AL = status (see #01810)
Desc:	attempt to lock all logical record names listed in the log table
Notes:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
	  Banyan VINES, and Alloy NTNX
	status FFh will be returned if one or more logical records have been
	  exclusively locked by another process
	locks on logical record names are advisory and may be ignored by other
	  applications
SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h

Top
21D2 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
	AH = D2h
	DS:DX -> semaphore identifier (counted string up to 99 chars long)
Return: AL = status
	    00h successful
	    FFh no such record
Desc:	unlock the logical record name but do not remove it from the log table
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
	  Banyan VINES, and Alloy NTNX
	locks on logical record names are advisory and may be ignored by other
	  applications
SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h

Top
21D2 - INT 21 - VIRUS???
INT 21 - VIRUS???
	AH = D2h
	???
Return: ???
Note:	this call is intercepted by the Search&Destroy SDRes v27.03 bundled
	  with Novell DOS 7, and is presumably some virus's installation check
SeeAlso: AH=4Ah/BX=00B6h

Top
21D3 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
	AH = D3h
Desc:	unlock all currently-locked logical record names in the log table, but
	  do not remove them from the table
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
	  Banyan VINES, and Alloy NTNX
	locks on logical record names are advisory and may be ignored by other
	  applications
SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h

Top
21D4 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
	AH = D4h
	DS:DX -> logical record name (counted string up to 99 chars long)
Return: AL = status (00h,FFh) (see #01811)
Desc:	unlock and remove the logical record name from the log table
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
	  Banyan VINES, and Alloy NTNX
	locks on logical record names are advisory and may be ignored by other
	  applications
SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h

(Table 01811)
Values for NetWare status:
 00h	successful
 FFh	no such record name

Top
21D5 - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
	AH = D5h
Return: AL = error code (00h,FFh) (see #01811)
Desc:	unlock and remove all logical record name from the log table
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
	  Banyan VINES, and Alloy NTNX
	locks on logical record names are advisory and may be ignored by other
	  applications
SeeAlso: AH=D1h,AH=D3h,AH=D4h

Top
21D5 - INT 21 - VIRUS - "Carfield" - ???
INT 21 - VIRUS - "Carfield" - ???
	AH = D5h
	???
Return: ???
SeeAlso: AX=D5AAh,AH=F3h"Carfield"

Top
21D5AA - INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
	AX = D5AAh
Return: AX = 2A55h if "Diamond-A" resident
	AX = 2A03h if "Diamond-B"-family virus resident
SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh

Top
21D5AABPDEAA - INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
	AX = D5AAh
	BP = DEAAh
Return: SI = 4321h if resident
SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"

Top
21D6 - INT 21 - Novell NetWare - WORKSTATION - END OF JOB
INT 21 - Novell NetWare - WORKSTATION - END OF JOB
	AH = D6h
	BX = job flag (0000h current job, FFFFh all processes on workstation)
Return: AL = error code
Desc:	unlocks and clears all locked or logged files and records held by the
	  process(es), closes all files, resets error and lock modes, and
	  releases all network resources
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=BBh"NetWare",AH=D7h

Top
21D7 - INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
	AH = D7h
Return: AL = error code
Desc:	this function closes the caller's open files, logs it out from all
	  file servers, detaches the workstation from all non-default file
	  servers, and maps a drive to the default server's SYS:LOGIN directory
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h"NetWare"

Top
21D8 - INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
	AH = D8h
	DL = resource number
Return: AL = status (00h successful, FFh unsucessful)
Note:	this function is no longer used or supported by NetWare, and is not
	  documented in Novell documents
SeeAlso: AH=D9h

Top
21D9 - INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
	AH = D9h
	DL = resource number
Return: AL = status (00h successful, FFh unsucessful)
Note:	this function is no longer used or supported by NetWare, and is not
	  documented in Novell documents
SeeAlso: AH=D8h

Top
21DA - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
	AH = DAh
	DL = volume number
	ES:DI -> reply buffer (see #01812)
Return: AL = 00h
Notes:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
	operator console rights are not required to make this call
	reported total blocks and total unused blocks include the Hot Fix
	  Table; the NetWare shell's implementation of INT 21/AH=36h will
	  report values larger than 268MB as 268MB.
SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01812)
 00h	WORD	sectors/block
 02h	WORD	total blocks on volume
 04h	WORD	unused blocks
 06h	WORD	total directory entries
 08h	WORD	unused directory entries
 0Ah 16 BYTEs	volume name, null padded
 1Ah	WORD	removable flag, 0000h = not removable
Note:	all words are big-endian

Top
21DADA - INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
	AX = DADAh
Return: AH = A5h
SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS"

Top
21DAFE - INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
	AX = DAFEh
Return: AX = 1234h if resident
SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"

Top
21DB - INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
	AH = DBh
Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=0Eh

Top
21DC - INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
	AH = DCh
Return: AL = logical connection number
	    00h if NetWare not loaded or this machine is a non-dedicated server
	CX = station number in ASCII (CL = first digit)
Notes:	this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
	  NTNX
	station number only unique for those PCs connected to same semaphore
	  service
	this function is called with AX=DC00h on entry by the DR DOS (up to
	  including 7.03) command processor to retrieve the connection number.
	  Old releases used this call only when INT 21/AX=EF03h failed.
	  Current versions (probably since one of the Novell DOS 7 updates)
	  attempt to retrieve the connection number from VLM (INT 2F/AX=7A20h
	  via GENERAL: 0043h/0006h/0001h and CONN: 0010h/0007h/000Dh) first.
	  The connection number is only trusted, however, when CF is clear on
	  return.
SeeAlso: AH=F2h"NetWare",INT 21/AX=EF03h

Top
21DC - INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
	AH = DCh
	DX = state
	    0000h turn on
	    0001h turn off
SeeAlso: AX=FEDCh

Top
21DC28 - INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
	AX = DC28h
Return: AX = 1973h if resident
SeeAlso: AX=D000h"VIRUS",AX=DCBAh"VIRUS"

Top
21DCBA - INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
	AX = DCBAh
Return: AX = ABCDh if resident
SeeAlso: AX=DC28h"VIRUS",AX=DEFEh"VIRUS"

Top
21DD - INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
	AH = DDh
	DL = error mode
	    00h invoke INT 24 on critical I/O errors (default)
	    01h return NetWare extended error code in AL
	    02h return error code in AL, mapped to standard DOS error codes
Return: AL = previous error mode
Note:	this function is supported by Advanced NetWare 2.0+
SeeAlso: INT 24

Top
21DD - INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
	AH = DDh
	CX = number of bytes to copy
	DS:SI -> source of copy
	ES:DI -> destination of copy
Return: does not return normally; return address is caller's CS:0100h with
	  AX = ???
SeeAlso: AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS"

Top
21DDEF - INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
	AX = DDEFh
Return: AX = EFDDh if resident
SeeAlso: AH=DDh"VIRUS",AH=DEh"VIRUS"

Top
21DE - INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
	AH = DEh
Return: AH = DFh if resident
SeeAlso: AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210"

Top
21DE - INT 21 - VIRUS - "April 1st EXE" - ???
INT 21 - VIRUS - "April 1st EXE" - ???
	AH = DEh
	???
Return: ???
SeeAlso: AH=DEh"Durban",AX=DEADh"90210"

Top
21DE - INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
	AH = DEh
	DL = broadcast mode
	    00h receive server and workstation broadcasts (default)
	    01h receive server broadcasts, discard user messages
	    02h store server broadcasts for retrieval
	    03h store all broadcasts for retrieval
Return: AL = new broadcast mode
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+

Top
21DE--DL04 - INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
	AH = DEh
	DL = 04h
Return: AL = current broadcast mode
	    00h receive server and workstation broadcasts (default)
	    01h receive server broadcasts, discard user message
	    02h store server broadcasts for retrieval
	    03h store all broadcasts for retrieval
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+

Top
21DE - INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
	AH = DEh
	DL = function
	    05h disable shell timer interrupt checks
	    06h enable shell timer interrupt checks
Return: ???
Note:	this function was added in NetWare 4.0, but is not listed in current
	  Novell documentation and is probably no longer supported

Top
21DEAD - INT 21 - VIRUS - "90210" - INSTALLATION CHECK
INT 21 - VIRUS - "90210" - INSTALLATION CHECK
	AX = DEADh
Return: AX = AAAAh if resident
SeeAlso: AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS"

Top
21DEAD - INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
	AX = DEADh
SeeAlso: AX=FEADh
SeeAlso: AX=DEADh"90210",AX=DEDEh"VIRUS"

Top
21DEDE - INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
	AX = DEDEh
Return: AH = 41h if resident
SeeAlso: AX=DEADh"Shifting",AX=DEFEh"VIRUS"

Top
21DEFE - INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
	AX = DEFEh
Return: AX = ABCDh if resident
SeeAlso: AX=DCBAh"VIRUS",AX=DEDEh"VIRUS",AH=E0h"VIRUS"

Top
21DF--DL00 - INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
	AH = DFh
	DL = 00h
Return: AL = status
	    00h successful
Desc:	this function redirects the default LPT to a capture file on the file
	  server
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
	a print job is queued when the first character of output is captured
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
SeeAlso: AH=DFh/DL=04h,AX=F003h

Top
21DF--DL01 - INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
	AH = DFh
	DL = 01h
Return: AL = status
	    00h successful
Desc:	stop redirecting the default LPT, close the capture file, and release
	  the job in the print queue for printing
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
	after this call, the default LPT defaults to local printing
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h

Top
21DF--DL02 - INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
	AH = DFh
	DL = 02h
Return: AL = status
	    00h successful
Desc:	this function ends the capture of the default LPT, removes the job from
	  the print queue, and deletes the capture file unless it is a
	  permanent capture file
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
	after this call, the default LPT defaults to local printing
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h

Top
21DF--DL03 - INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
	AH = DFh
	DL = 03h
Return: AL = status
	    00h successful
Desc:	this function closes the current capture file for the default LPT
	  and starts printing it if it is not a permanent capture file
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
	if more data is sent to the LPT port after this call, a new capture
	  file will be opeend
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h

Top
21DF--DL04 - INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
	AH = DFh
	DL = 04h
	DH = LPT port (00h-02h)
Return: AL = status
	    00h successful
Desc:	this function redirects the specified LPT to a capture file on the file
	  server
Notes:	this function is supported by Advanced NetWare 2.1+
	a print job is queued when the first character of output is captured
SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
SeeAlso: AX=F003h

Top
21DF--DL05 - INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
	AH = DFh
	DL = 05h
	DH = LPT port (00h-02h)
Return: AL = status
	    00h successful
Desc:	stop redirecting the specified LPT, close the capture file, and release
	  the job in the print queue for printing
Notes:	this function is supported by Advanced NetWare 2.1+
	after this call, the specified LPT defaults to local printing
SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h

Top
21DF--DL06 - INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
	AH = DFh
	DL = 06h
	DH = LPT port (00h-02h)
Return: AL = status
	    00h successful
Desc:	this function ends the capture of the specified LPT, removes the job
	  from the print queue, and deletes the capture file unless it is a
	  permanent capture file
Notes:	this function is supported by Advanced NetWare 2.1+
	after this call, the specified LPT defaults to local printing
SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h

Top
21DF--DL07 - INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
	AH = DFh
	DL = 07h
	DH = LPT port (00h-02h)
Return: AL = status
	    00h successful
Desc:	this function closes the current capture file for the specified LPT
	  and starts printing it if it is not a permanent capture file
Notes:	this function is supported by Advanced NetWare 2.1+
	if more data is sent to the LPT port after this call, a new capture
	  file will be opeend
SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h

Top
21DF00DX534C - INT 21 U - Software Carousel - INSTALLATION CHECK
INT 21 U - Software Carousel - INSTALLATION CHECK
	AX = DF00h
	DX = 534Ch ("SL")
	DI = 534Ch ("SL")
Return: AX = 00FFh if installed
	    ???
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.

Top
21DF01 - INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
	AX = DF01h
	BL = task number (00h = next task)
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,02h) (see #01813)

(Table 01813)
Values for Software Carousel error code:
 00h	invalid subfunction in AL
 01h	invalid task number
 02h	tried to switch to task with no memory size
 03h	tried to kill program in partition with no program running
 04h	tried to change size of an active memory partition
 05h	invalid memory size
 06h	tried to send command to task with a pending previous command

Top
21DF02 - INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
	AX = DF02h
	BL = task number
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)

Top
21DF03 - INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
	AX = DF03h
	BL = task number
Return: AL = status
	    00h Carousel not running
	    01h successful
		BL = partition state (00h no program running, 01h prog running)
		DX = partition size in KB
	    FFh unsucessful
		AH = error code (01h) (see #01813)
SeeAlso: AX=DF05h

Top
21DF04 - INT 21 - Software Carousel - GET PARTITION NAME
INT 21 - Software Carousel - GET PARTITION NAME
	AX = DF04h
	BL = task number
Return: AL = status
	    00h Carousel not running
	    01h successful
		CX = length of name (00h if default partition name)
		ES:BX -> partition name (if CX nonzero)
	    FFh unsucessful
		AH = error code (01h) (see #01813)
SeeAlso: AX=DF06h

Top
21DF05 - INT 21 - Software Carousel - CHANGE PARTITION SIZE
INT 21 - Software Carousel - CHANGE PARTITION SIZE
	AX = DF05h
	BL = task number
	DX = new size in KB
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,04h,05h) (see #01813)
	BX = minimum size allowed
	CX = maximum size available
SeeAlso: AX=DF03h

Top
21DF06 - INT 21 - Software Carousel - CHANGE PARTITION NAME
INT 21 - Software Carousel - CHANGE PARTITION NAME
	AX = DF06h
	BL = task number
	CX = length of new name (00h to use default, max 18h)
	DS:SI -> new name
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h) (see #01813)
SeeAlso: AX=DF04h

Top
21DF07 - INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
	AX = DF07h
	BL = task number
	CX = length of command (max 8 chars)
	DS:SI -> command line
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,06h) (see #01813)
Note:	the maximum length seems too small and may be a typo for 80 characters

Top
21DF08 - INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
	AX = DF08h
	BL = new state of keyboard (00h disabled, 01h enabled)
Return: AL = status
	    00h Carousel not running
	    01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
Note:	when the keyboard is is disabled, the user may neither access the
	  Carousel menu nor switch to another memory section

Top
21DF09 - INT 21 - Software Carousel - BOOT THE SYSTEM
INT 21 - Software Carousel - BOOT THE SYSTEM
	AX = DF09h
Return: AL = status
	    00h Carousel not running
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)
Note:	this function never returns if successful

Top
21DF0A - INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
	AX = DF0Ah
Return: AL = status
	    00h Carousel not running
	    01h successful
		BL = task number
		DX = memory size in KB
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)

Top
21DF0B - INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
	AX = DF0Bh
	BH = interrupt number or 00h
	BL = function number to invoke on partition switch
	CL = function number to call when it is safe for resident programs
		to perform DOS calls
	DS:DX -> FAR function to call if BH=00h
Return: AL = status
	    00h Carousel not running
	    01h successful
	    FFh unsucessful
		AH = error code (01h,03h) (see #01813)
Notes:	the specified interrupt or FAR function is called with AH set to the
	  appropriate one of the values specified in BL and CL, and BL set to
	  the new task number
	the function specified by CL will not be called until the notification
	  is enabled with AX=DF0Ch
SeeAlso: AX=DF0Ch

Top
21DF0C - INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
	AX = DF0Ch
Return: AL = status
	    00h Carousel not running
	    01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
SeeAlso: AX=DF0Bh

Top
21E0 - INT 21 - Digital Research DOS Plus - CALL BDOS
INT 21 - Digital Research DOS Plus - CALL BDOS
	AH = E0h
	CL = BDOS function number (see #04019 at INT E0"CP/M-86")
	other registers as appropriate for function
Return: as appropriate for function
SeeAlso: AX=4459h,INT E0"CP/M-86"

Top
21E0 - INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
	AH = E0h
	???
Return: ???
SeeAlso: AH=E1h"OS/286"

Top
21E0 - INT 21 - DoubleDOS - MENU CONTROL
INT 21 - DoubleDOS - MENU CONTROL
	AH = E0h
	AL = subfunction
	    01h exchange tasks
	    73h resume invisible job if suspended
	    74h kill other job
	    75h suspend invisible job
Note:	identical to AH=F0h
SeeAlso: AH=F0h"DoubleDOS"

Top
21E0 - INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
	AH = E0h
Return: AX = 0300h if "Jerusalem" resident
	AX = DADAh if "Armagedon" resident
SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh

Top
21E0 - INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
	AH = E0h
	DS:SI -> request buffer (see #01814)
	ES:DI -> reply buffer
Return: AL = status
Note:	this function was added in NetWare 4.0, but is no longer listed in
	  current Novell documentation and may no longer be supported
SeeAlso: AH=E3h/SF=68h,AX=F211h/SF=06h,AX=F211h/SF=0Ah

Format of NetWare print spooling request buffer:
Offset	Size	Description	(Table 01814)
 00h	WORD	length of following data
 02h	BYTE	subfunction
		00h spool data to a capture file
		01h close and queue capture file
		02h set spool flags
		03h spool existing file
		04h get spool queue entry
		05h remove entry from spool queue
 03h	???
SeeAlso: #02101

Top
21E0--SF06 - INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
	AH = E0h subfn 06h
	DS:SI -> request buffer (see #01815)
	ES:DI -> reply buffer (see #01816)
Return: AL = status
	    00h successful
	    FFh no such printer
Desc:	get current state of specified printer attached to the server
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX

Format of NetWare "Get Printer Status" request buffer:
Offset	Size	Description	(Table 01815)
 00h	WORD	0002h (length of following data)
 02h	BYTE	06h (subfunction "Get Printer Status")
 03h	BYTE	printer number (00h-04h)
SeeAlso: #01816

Format of NetWare "Get Printer Status" reply buffer:
Offset	Size	Description	(Table 01816)
 00h	WORD	(call) 0004h (size of following results buffer)
 02h	BYTE	flag: 00h printer active, FFh printer halted
 03h	BYTE	flag: 00h printer online, 01h printer offline
 04h	BYTE	current form type
 05h	BYTE	target printer number (00h-04h)
		same as number in request buffer unless rerouted by server
		  console
SeeAlso: #01815

Top
21E0--SF09 - INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
	AH = E0h subfn 09h
	DS:SI -> request buffer (see #01817)
	ES:DI -> reply buffer (see #01818)
Return: AL = status
	    00h successful
	    9Ch invalid path
Desc:	create a permanent capture file for the next print capture to be
	  started
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	the caller must have read, write, and create rights for the directory
	  containing the capture file

Format of NetWare "Specify Capture File" request buffer:
Offset	Size	Description	(Table 01817)
 00h	WORD	length of following data (max 102h)
 02h	BYTE	09h (subfunction "Specify Capture File")
 03h	BYTE	directory handle or 00h
 04h	BYTE	length of filename
 05h  N BYTEs	name of capture file
SeeAlso: #01818

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01818)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01817

Top
21E00F - INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
	AX = E00Fh
Return: AX = 4C31h if resident
SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"

Top
21E1 - INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
	AH = E1h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h

Top
21E1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
	AH = E1h
SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F1h"DoubleDOS"

Top
21E1 - INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
	AH = E1h
Return: AX = 0300h if "Mendoza" resident
	AX = 0400h if "Fu Manchu" resident
SeeAlso: AX=E00Fh,AH=E4h"VIRUS"

Top
21E1--SF00 - INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
	AH = E1h subfn 00h
	DS:SI -> request buffer (see #01819)
	ES:DI -> reply buffer (see #01820)
Return: AL = status
	    00h successful
	    FEh I/O error or out of dynamic workspace
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
SeeAlso: AH=E1h/SF=09h

Format of NetWare "Send Broadcast Message" request buffer:
Offset	Size	Description	(Table 01819)
 00h	WORD	length of following data (max 9Eh)
 02h	BYTE	00h (subfunction "Send Broadcast Message")
 03h	BYTE	number of connections (01h-64h)
 04h  N BYTEs	list of connections to receive broadcast message
	BYTE	length of message (01h-37h)
      N BYTEs	broadcast message (no control characters or characters > 7Eh)
SeeAlso: #01820

Format of NetWare "Send Broadcast Message" reply buffer:
Offset	Size	Description	(Table 01820)
 00h	WORD	(call) size of following results buffer (max 65h)
 02h	BYTE	number of connections
 03h  N BYTEs	list of per-connection results
		00h successful
		FCh message rejected due to lack of buffer space
		FDh invalid connection number
		FFh blocked (see also AH=E1h/SF=02h)
SeeAlso: #01819

Top
21E1--SF01 - INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
	AH = E1h subfn 01h
	DS:SI -> request buffer (see #01821)
	ES:DI -> reply buffer (see #01822)
Return: AL = status
	    00h successful
	    FCh full message queue
	    FEh out of dynamic workspace
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
SeeAlso: AX=F215h/SF=01h,AX=F215h/SF=0Bh

Format of NetWare "Get Broadcast Message" request buffer:
Offset	Size	Description	(Table 01821)
 00h	WORD	0001h (length of following data)
 02h	BYTE	01h (subfunction "Get Broadcast Message")
SeeAlso: #01822,#02109

Format of NetWare "Get Broadcast Message" reply buffer:
Offset	Size	Description	(Table 01822)
 00h	WORD	(call) size of following results buffer (max 38h)
 02h	BYTE	length of message (00h-37h)
		00h if no broadcast messages pending
 03h  N BYTEs	message (no control characters or characters > 7Eh)
SeeAlso: #01821,#02107,#02110

Top
21E1--SF02 - INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
	AH = E1h subfn 02h
	DS:SI -> request buffer (see #01824)
	ES:DI -> reply buffer (see #01825)
Return: AL = error code
Note:	these functions are supported by NetWare 4.0+ but are not listed in
	  _NetWare_System_Calls--DOS_; they may be obsolete
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h
SeeAlso: AX=F215h/SF=02h

Format of NetWare "Disable Broadcasts" request packet:
Offset	Size	Description	(Table 01823)
 00h	WORD	0001h (length of following data)
 02h	BYTE	02h (subfunction "Enable Broadcast Messages")
SeeAlso: #01824,#01825

Top
21E1--SF03 - INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
	AH = E1h subfn 03h
	DS:SI -> request buffer (see #01824)
	ES:DI -> reply buffer (see #01825)
Return: AL = error code
Note:	these functions are supported by NetWare 4.0+ but are not listed in
	  _NetWare_System_Calls--DOS_; they may be obsolete
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h
SeeAlso: AX=F215h/SF=03h

Format of NetWare "Enable Broadcast Messages" request buffer:
Offset	Size	Description	(Table 01824)
 00h	WORD	0001h (length of following data)
 02h	BYTE	03h (subfunction "Enable Broadcast Messages")
SeeAlso: #01825,#01823

Format of NetWare "Enable/Disable Broadcast Messages" reply buffer:
Offset	Size	Description	(Table 01825)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01824,#01823

Top
21E1--SF04 - INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
	AH = E1h subfn 04h
	DS:SI -> request buffer (see #01826)
	ES:DI -> reply buffer (see #01827)
Return: AL = status
	    00h successful
	    FEh I/O error or out of dynamic workspace
Notes:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
	message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
	  connections should be used for peer-to-peer communications as these
	  protocols do not use file server time
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h

Format of NetWare "Send Personal Message" request buffer:
Offset	Size	Description	(Table 01826)
 00h	WORD	length of following data (max E5h)
 02h	BYTE	04h (subfunction "Send Personal Message")
 03h	BYTE	number of connections (01h-64h)
 04h  N BYTEs	list of connections to receive broadcast message
	BYTE	length of message (01h-7Eh)
      N BYTEs	message (no control characters or characters > 7Eh)
SeeAlso: #01827

Format of NetWare "Send Personal Message" reply buffer:
Offset	Size	Description	(Table 01827)
 00h	WORD	(call) size of following results buffer (max 65h)
 02h	BYTE	number of connections
 03h  N BYTEs	list of per-connection results
		00h successful
		FCh message rejected because queue is full (contains 6 msgs)
		FDh incomplete pipe
		FFh failed
SeeAlso: #01826

Top
21E1--SF05 - INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
	AH = E1h subfn 05h
	DS:SI -> request buffer (see #01828)
	ES:DI -> reply buffer (see #01829)
Return: AL = status
	    00h successful
	    FEh out of dynamic workspace
Desc:	return the oldest message in the default file server's message queue
	  for the calling workstation
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h

Format of NetWare "Get Personal Message" request buffer:
Offset	Size	Description	(Table 01828)
 00h	WORD	0001h (length of following data)
 02h	BYTE	05h (subfunction "Get Personal Message")
SeeAlso: #01829

Format of NetWare "Get Personal Message" reply buffer:
Offset	Size	Description	(Table 01829)
 00h	WORD	(call) size of following results buffer (max 80h)
 02h	BYTE	connection number of sending station
 03h	BYTE	length of message (00h-7Eh)
		00h if no personal messages pending
 04h  N BYTEs	message (no control characters or characters > 7Eh)
SeeAlso: #01828

Top
21E1--SF06 - INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
	AH = E1h subfn 06h
	DS:SI -> request buffer (see #01830)
	ES:DI -> reply buffer (see #01831)
Return: AL = status
	    00h successful
	    FEh out of dynamic workspace
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h

Format of NetWare "Open Message Pipe" request buffer:
Offset	Size	Description	(Table 01830)
 00h	WORD	length of following data (max 66h)
 02h	BYTE	06h (subfunction "Open Message Pipe")
 03h	BYTE	number of pipes to open (01h-64h)
 04h  N BYTEs	list of connection numbers
SeeAlso: #01831,#01832,#01835

Format of NetWare "Open Message Pipe" reply buffer:
Offset	Size	Description	(Table 01831)
 00h	WORD	(call) size of following results buffer (max 65h)
 02h	BYTE	number of connections
 03h  N BYTEs	list of results
		00h successful
		FEh incomplete (target half not yet created)
		FFh failed
SeeAlso: #01830,#01833,#01836

Top
21E1--SF07 - INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
	AH = E1h subfn 07h
	DS:SI -> request buffer (see #01832)
	ES:DI -> reply buffer (see #01833)
Return: AL = status
	    00h successful
	    FCh full message queue
	    FEh out of dynamic workspace
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h

Format of NetWare "Close Mesage Pipe" request buffer:
Offset	Size	Description	(Table 01832)
 00h	WORD	length of following data (max 66h)
 02h	BYTE	07h (subfunction "Close Message Pipe")
 03h	BYTE	number of pipes to close (01h-64h)
 04h  N BYTEs	list of connection numbers
SeeAlso: #01830,#01833

Format of NetWare "Close Message Pipe" reply buffer:
Offset	Size	Description	(Table 01833)
 00h	WORD	(call) size of following results buffer (max 65h)
 02h	BYTE	number of connections
 03h  N BYTEs	list of results
		00h successful
		FDh failed
		FFh no such pipe
SeeAlso: #01831,#01832

Top
21E1--SF08 - INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
	AH = E1h subfn 08h
	DS:SI -> request buffer (see #01835)
	ES:DI -> reply buffer (see #01836)
Return: AL = status (see #01834)
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h,AX=F215h/SF=08h

(Table 01834)
Values for NetWare function status:
 00h	successful
 FCh	full message queue
 FEh	out of dynamic workspace
SeeAlso: #01839

Format of NetWare "Check Pipe Status" request buffer:
Offset	Size	Description	(Table 01835)
 00h	WORD	length of following data (max 66h)
 02h	BYTE	08h (subfunction "Check Pipe Status")
 03h	BYTE	number of pipes to monitor (01h-64h)
 04h  N BYTEs	list of connection numbers
SeeAlso: #01830,#01836

Format of NetWare "Check Pipe Status" reply buffer:
Offset	Size	Description	(Table 01836)
 00h	WORD	(call) size of following results buffer (max 65h)
 02h	BYTE	number of connections
 03h  N BYTEs	list of pipe statuses
		00h open
		FEh incomplete
		FFh closed
SeeAlso: #01831,#01835,#02108

Top
21E1--SF09 - INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
	AH = E1h subfn 09h
	DS:SI -> request buffer (see #01837)
	ES:DI -> reply buffer (see #01838)
Return: AL = status (see #01834)
Desc:	send a one-line message to the system console on the default file
	  server
Note:	this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
SeeAlso: AX=F215h/SF=09h

Format of NetWare "Broadcast to Console" request buffer:
Offset	Size	Description	(Table 01837)
 00h	WORD	length of following data (max 3Eh)
 02h	BYTE	09h (subfunction "Broadcast to Console")
 03h	BYTE	length of message (01h-3Ch)
 04h  N BYTEs	message (no control characters or characters > 7Eh)
SeeAlso: #01838

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01838)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01837

Top
21E2 - INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
	AH = E2h
	???
Return: ???
SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"

Top
21E2 - INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
	AH = E2h
	AL = character
Return: AL = 00h successful
	     01h buffer full (128 characters)
SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F2h"DoubleDOS"

Top
21E2--SF00 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
	AH = E2h subfn 00h
	DS:SI -> request buffer (see #01840)
	ES:DI -> reply buffer (see #01841)
Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
Desc:	set the target handle to reference the directory specified by the
	  source handle and the source path; both handles must refer to the
	  same file server
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	the target handle is not changed if this function fails
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=00h

(Table 01839)
Values for NetWare function status:
 00h	successful
 84h	not permitted to create
 8Ah	not permitted to delete
 8Bh	not permitted to rename
 8Ch	not permitted to modify
 98h	nonexistent volume
 9Bh	invalid directory handle
 9Ch	invalid path
 9Eh	invalid filename
 9Fh	directory currently in use
 A0h	directory not empty
 C6h	no console rights
 FCh	no such bindery object
SeeAlso: #01834,#01866

Format of NetWare "Set Directory Handle" request buffer:
Offset	Size	Description	(Table 01840)
 00h	WORD	length of following data (max 103h)
 02h	BYTE	00h (subfunction "Set Directory Handle")
 03h	BYTE	directory handle of target
 04h	BYTE	directory handle of source
 05h	BYTE	length of source directory path (01h-FFh)
 06h  N BYTEs	source directory path
SeeAlso: #01841

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01841)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01840

Top
21E2--SF01 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
	AH = E2h subfn 01h
	DS:SI -> request buffer (see #01842)
	ES:DI -> reply buffer (see #01843)
Return: AL = status (00h,9Bh) (see #01839)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h,AX=F216h/SF=01h

Format of NetWare "Get Directory Path" request buffer:
Offset	Size	Description	(Table 01842)
 00h	WORD	0002h (length of following data)
 02h	BYTE	01h (subfunction "Get Directory Path")
 03h	BYTE	directory handle
SeeAlso: #01843,#01844

Format of NetWare "Get Directory Path" reply buffer:
Offset	Size	Description	(Table 01843)
 00h	WORD	(call) length of following data buffer
 02h	BYTE	length of directory path (01h-FFh)
 03h  N BYTEs	full directory path including volume
SeeAlso: #01842,#01845

Top
21E2--SF02 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
	AH = E2h subfn 02h
	DS:SI -> request buffer (see #01844)
	ES:DI -> reply buffer (see #01845)
Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
Desc:	get information about the first or next subdirectory of the specified
	  directory
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h,AX=F216h/SF=02h

Format of NetWare "Scan Directory Information" request buffer:
Offset	Size	Description	(Table 01844)
 00h	WORD	length of following data (max 104h)
 02h	BYTE	02h (subfunction "Scan Directory Information")
 03h	BYTE	directory handle
 04h	WORD	(big-endian) subdirectory number
		0000h for first call, returned subdir number + 1 on next call
 06h	BYTE	length of directory path
 07h  N BYTEs	directory path
SeeAlso: #01842,#01845

Format of NetWare "Scan Directory Information" reply buffer:
Offset	Size	Description	(Table 01845)
 00h	WORD	(call) 001Ch (length of following data buffer)
 02h 16 BYTEs	subdirectory name
 12h	DWORD	(big-endian) date and time of creation (see #01846)
 16h	DWORD	(big-endian) object ID of owner
 1Ah	BYTE	maximum directory rights (see #01849)
 1Bh	BYTE	unused
 1Ch	WORD	(big-endian) subdirectory number
SeeAlso: #01843,#01844,#02111 at AX=F216h/SF=02h

Bitfields for NetWare date and time:
Bit(s)	Description	(Table 01846)
 31-25	year-1980
 24-21	month
 20-16	day
 15-11	hour
 10-5	minute
 4-0	second

Top
21E2--SF03 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
	AH = E2h subfn 03h
	DS:SI -> request buffer (see #01847)
	ES:DI -> reply buffer (see #01848)
Return: AL = status (00h,98h,9Bh) (see #01839)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h,AX=F216h/SF=03h

Format of NetWare "Get Effective Directory Rights (old)" request buffer:
Offset	Size	Description	(Table 01847)
 00h	WORD	length of following data (max 102h)
 02h	BYTE	03h (subfunction "Get Effective Directory Rights (old)")
 03h	BYTE	directory handle
 04h	BYTE	length of directory path (00h-FFh)
 05h  N BYTEs	directory path
SeeAlso: #01848,#01850

Format of NetWare "Get Effective Directory Rights" reply buffer:
Offset	Size	Description	(Table 01848)
 00h	WORD	(call) 0001h (length of following data buffer)
 02h	BYTE	effective directory rights (see #01849)
SeeAlso: #01847

Bitfields for NetWare directory rights:
Bit(s)	Description	(Table 01849)
 0	reading allowed
 1	writing allowed
 2	opens allowed
 3	file creation allowed
 4	deletion allowed
 5	"parental" may create/delete subdirectories and grant/revoke trustee
	  rights
 6	directory search allowed
 7	file attributes may be changed
SeeAlso: #01848,#01850

Top
21E2--SF04 - INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
	AH = E2h subfn 04h
	DS:SI -> request buffer (see #01850)
	ES:DI -> reply buffer (see #01851)
Return: AL = status (00h,8Ch,98h,9Ch) (see #01839)
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh,AX=F216h/SF=04h

Format of NetWare "Modify Maximum Rights Mask" request buffer:
Offset	Size	Description	(Table 01850)
 00h	WORD	length of following data (max 104h)
 02h	BYTE	04h (subfunction "Modify Maximum Rights Mask")
 03h	BYTE	directory handle
 04h	BYTE	rights to grant (see #01849)
 05h	BYTE	rights to revoke (see #01849)
 06h	BYTE	length of directory path (00h-FFh)
 07h  N BYTEs	directory path
Note:	the rights specified at offset 05h are revoked first, and then the
	  rights specified at offset 04h are added to the resulting rights
	  mask
SeeAlso: #01847,#01851

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01851)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01850

Top
21E2--SF05 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
	AH = E2h subfn 05h
	DS:SI -> request buffer (see #01852)
	ES:DI -> reply buffer (see #01853)
Return: AL = status (00h,98h) (see #01839)
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
SeeAlso: AX=F216h/SF=05h

Format of NetWare "Get Volume Number" request buffer:
Offset	Size	Description	(Table 01852)
 00h	WORD	length of following data (max 12h)
 02h	BYTE	05h (subfunction "Get Volume Number")
 03h	BYTE	length of volume name (01h-10h)
 04h  N BYTEs	volume name
SeeAlso: #01853,#02113 at AX=F216h/SF=05h

Format of NetWare "Get Volume Number" reply buffer:
Offset	Size	Description	(Table 01853)
 00h	WORD	(call) 0001h (length of following results buffer)
 02h	BYTE	volume number
SeeAlso: #01852,#02113 at AX=F216h/SF=05h

Top
21E2--SF06 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
	AH = E2h subfn 06h
	DS:SI -> request buffer (see #01854)
	ES:DI -> reply buffer (see #01855)
Return: AL = status (00h,98h) (see #01839)
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
SeeAlso: AH=E3h/SF=E9h,AX=F216h/SF=06h

Format of NetWare "Get Volume Name" request buffer:
Offset	Size	Description	(Table 01854)
 00h	WORD	0002h (length of following data)
 02h	BYTE	06h (subfunction "Get Volume Name")
 03h	BYTE	volume number
SeeAlso: #01855,#02114 at AX=F216h/SF=06h

Format of NetWare "Get Volume Name" reply buffer:
Offset	Size	Description	(Table 01855)
 00h	WORD	(call) 0011h (length of following results buffer)
 02h	BYTE	length of volume name
 03h 16 BYTEs	NUL-padded volume name
SeeAlso: #01854,#02114 at AX=F216h/SF=06h

Top
21E2--SF0A - INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
	AH = E2h subfn 0Ah
	DS:SI -> request buffer (see #01856)
	ES:DI -> reply buffer (see #01857)
Return: AL = status (00h,84h,98h,FCh) (see #01839)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh,AX=F216h/SF=0Ah

Format of NetWare "Create Directory" request buffer:
Offset	Size	Description	(Table 01856)
 00h	WORD	length of following data (max 103h)
 02h	BYTE	0Ah (subfunction "Create Directory")
 03h	BYTE	directory handle
 04h	BYTE	maximum directory rights (see #01849)
 05h	BYTE	length of directory path (00h-FFh)
 06h  N BYTEs	directory path
SeeAlso: #01857,#01858

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01857)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01856,#01858

Top
21E2--SF0B - INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
	AH = E2h subfn 0Bh
	DS:SI -> request buffer (see #01858)
	ES:DI -> reply buffer (see #01857)
Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #01839)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh,AX=F216h/SF=0Bh

Format of NetWare "Delete Directory" request buffer:
Offset	Size	Description	(Table 01858)
 00h	WORD	length of following data (max 103h)
 02h	BYTE	0Bh (subfunction "Delete Directory")
 03h	BYTE	directory handle
 04h	BYTE	unused
 05h	BYTE	length of directory path (00h-FFh)
 06h  N BYTEs	directory path
SeeAlso: #01856,#01857

Top
21E2--SF0C - INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
	AH = E2h subfn 0Ch
	DS:SI -> request buffer (see #01859)
	ES:DI -> reply buffer (see #01860)
Return: AL = status (00h,9Ch) (see also #01839)
	    9Ch no more trustees
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Ch

Format of NetWare "Scan Directory For Trustees" request buffer:
Offset	Size	Description	(Table 01859)
 00h	WORD	length of following data (max 103h)
 02h	BYTE	0Ch (subfunction "Scan Directory For Trustees")
 03h	BYTE	directory handle
 04h	BYTE	sequence number
		00h on first call, increment for each subsequent call
 05h	BYTE	length of directory path (00h-FFh)
 06h  N BYTEs	directory path
SeeAlso: #01860,#01861,#02115 at AX=F216h/SF=0Ch

Format of NetWare "Scan Directory For Trustees" reply buffer:
Offset	Size	Description	(Table 01860)
 00h	WORD	(call) 0031h (length of following results buffer)
 02h 16 BYTEs	directory name
 12h  4 BYTEs	date and time of creation
 16h	DWORD	(big-endian) object ID of owner
 1Ah  5 DWORDs	(big-endian) object IDs of Trustees 0 through 4
		00000000h = end of group
 2Eh  5 BYTEs	directory rights for Trustees 0 through 4 (see #01849)
SeeAlso: #01859,#01863,#02115 at AX=F216h/SF=0Ch

Top
21E2--SF0D - INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
	AH = E2h subfn 0Dh
	DS:SI -> request buffer (see #01861)
	ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,8Ch,FCh) (see #01839)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Dh

Format of NetWare "Add Trustee To Directory" request buffer:
Offset	Size	Description	(Table 01861)
 00h	WORD	length of following data (max 107h)
 02h	BYTE	0Dh (subfunction "Add Trustee To Directory")
 03h	BYTE	directory handle
 04h	DWORD	(big-endian) object ID of trustee
 08h	BYTE	trustee directory rights (see #01849)
 09h	BYTE	length of directory path (00h-FFh)
 0Ah  N BYTEs	directory path
SeeAlso: #01863

Top
21E2--SF0E - INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
	AH = E2h subfn 0Eh
	DS:SI -> request buffer (see #01862)
	ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AX=F216h/SF=0Eh

Format of NetWare "Delete Trustee From Directory" request buffer:
Offset	Size	Description	(Table 01862)
 00h	WORD	length of following data (max 107h)
 02h	BYTE	0Eh (subfunction "Delete Trustee From Directory")
 03h	BYTE	directory handle
 04h	DWORD	(big-endian) object ID of trustee
 08h	BYTE	unused
 09h	BYTE	length of directory path (00h-FFh)
 0Ah  N BYTEs	directory path
SeeAlso: #01863

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01863)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01862,#01864,#01865

Top
21E2--SF0F - INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
	AH = E2h subfn 0Fh
	DS:SI -> request buffer (see #01864)
	ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #01839)
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh,AX=F216h/SF=0Fh

Format of NetWare "Rename Directory" request buffer:
Offset	Size	Description	(Table 01864)
 00h	WORD	length of following data (max 111h)
 02h	BYTE	0Fh (subfunction "Rename Directory")
 03h	BYTE	directory handle
 04h	BYTE	length of directory path (00h-FFh)
 05h  N BYTEs	directory path
	BYTE	length of new directory name (01h-0Eh)
      N BYTEs	new directory name
SeeAlso: #01863

Top
21E2--SF10 - INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
	AH = E2h subfn 10h
	DS:SI -> request buffer (see #01865)
	ES:DI -> reply buffer (see #01863)
Return: AL = status (00h,C6h) (see #01866)
Desc:	purges files marked for deletion on the file server by the calling
	  workstation
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h,AX=F216h/SF=10h

Format of NetWare "Purge Erased Files" request buffer:
Offset	Size	Description	(Table 01865)
 00h	WORD	0001h (length of following data)
 02h	BYTE	10h (subfunction "Purge Erased Files")
SeeAlso: #01863

Top
21E2--SF11 - INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
	AH = E2h subfn 11h
	DS:SI -> request buffer (see #01867)
	ES:DI -> reply buffer (see #01868)
Return: AL = status (00h,98h,FFh) (see #01866)
Desc:	restores one file marked for deletion which has not yet been purged
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h

(Table 01866)
Values for NetWare function status:
 00h	successful
 98h	nonexistent volume
 9Ch	invalid path
 C6h	no console rights
 FFh	no more erased files
SeeAlso: #01839,#01899

Format of NetWare "Restore Erased File" request buffer:
Offset	Size	Description	(Table 01867)
 00h	WORD	length of following data (max 13h)
 02h	BYTE	11h (subfunction "Restore Erased File")
 03h	BYTE	directory handle or 00h
 04h	BYTE	length of volume name
 05h  N BYTEs	volume name (including colon)
Note:	if both a directory handle and a volume name are specified, the volume
	  name overrides the handle
SeeAlso: #01868,#02116

Format of NetWare "Restore Erased File" reply buffer:
Offset	Size	Description	(Table 01868)
 00h	WORD	(call) 001Eh (size of following results buffer)
 02h 15 BYTEs	ASCIZ name of erased file
 11h 15 BYTEs	ASCIZ name under which file was restored
SeeAlso: #01867,#02116

Top
21E2--SF12 - INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
	AH = E2h subfn 12h
	DS:SI -> request buffer (see #01869)
	ES:DI -> reply buffer (see #01870)
Return: AL = status (00h,98h,9Ch) (see #01866)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=12h

Format of NetWare "Allocate Permanent Directory Handle" request buffer:
Offset	Size	Description	(Table 01869)
 00h	WORD	length of following data (max 103h)
 02h	BYTE	12h (subfunction "Allocate Permanent Directory Handle")
 03h	BYTE	directory handle
 04h	BYTE	drive ('A'-'Z')
 05h	BYTE	length of directory path
 06h  N BYTEs	directory path
SeeAlso: #01870,#01871,#02118

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01870)
 00h	WORD	(call) 0002h (size of following results buffer)
 02h	BYTE	new directory handle
 03h	BYTE	effective directory rights (see #01849)
SeeAlso: #01869,#02118

Top
21E2--SF13 - INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
	AH = E2h subfn 13h
	DS:SI -> request buffer (see #01871)
	ES:DI -> reply buffer (see #01870)
Return: AL = status (00h,98h,9Ch) (see #01866)
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	this call is the same as AH=E2h/SF=12h except that the directory handle
	  will be automatically deallocated when the calling application
	  executes an End of Job call (AH=D6h) or terminates
SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
SeeAlso: AX=F216h/SF=13h

Format of NetWare "Allocate Temporary Directory Handle" request buffer:
Offset	Size	Description	(Table 01871)
 00h	WORD	length of following data (max 103h)
 02h	BYTE	13h (subfunction "Allocate Temporary Directory Handle")
 03h	BYTE	directory handle
 04h	BYTE	drive ('A'-'Z')
 05h	BYTE	length of directory path
 06h  N BYTEs	directory path
SeeAlso: #01869,#01872

Top
21E2--SF14 - INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
	AH = E2h subfn 14h
	DS:SI -> request buffer (see #01872)
	ES:DI -> reply buffer (see #01873)
Return: AL = status (00h,9Bh) (see #01839)
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=14h

Format of NetWare "Deallocate Directory Handle" request buffer:
Offset	Size	Description	(Table 01872)
 00h	WORD	0002h (length of following data)
 02h	BYTE	14h (subfunction "Deallocate Directory Handle")
 03h	BYTE	directory handle
SeeAlso: #01873

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01873)
 00h	WORD	(call) 0000h (no returned data)
SeeAlso: #01872

Top
21E2--SF15 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
	AH = E2h subfn 15h
	DS:SI -> request buffer (see #01874)
	ES:DI -> reply buffer (see #01875)
Return: AL = status
	    00h successful
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
SeeAlso: AX=F216h/SF=15h

Format of NetWare "Get Volume Info with Handle" request buffer:
Offset	Size	Description	(Table 01874)
 00h	WORD	0002h (length of following data)
 02h	BYTE	15h (subfunction "Get Volume Info With Handle")
 03h	BYTE	directory handle
SeeAlso: #01875,#02119

Format of NetWare "Get Volume Info with Handle" reply buffer:
Offset	Size	Description	(Table 01875)
 00h	WORD	(call) 001Ch (length of following results buffer)
 02h	WORD	(big-endian) sectors per block
 04h	WORD	(big-endian) total blocks on volume
 06h	WORD	(big-endian) blocks available on volume
 08h	WORD	(big-endian) total directory slots
 0Ah	WORD	(big-endian) directory slots available
 0Ch 16 BYTEs	NUL-padded volume name
 1Ch	WORD	(big-endian) flag: volume removable if nonzero
SeeAlso: #01874,#02119

Top
21E2--SF16 - INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
	AH = E2h subfn 16h
	DS:SI -> request buffer (see #01876)
	ES:DI -> reply buffer (see #01873)
Return: AL = status
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
	  but is not described in _NetWare_System_Calls--DOS_
SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=16h

Format of NetWare "Alloc Special Temporary Directory Handle" request buffer:
Offset	Size	Description	(Table 01876)
 00h	WORD	length of following data
 02h	BYTE	16h (subfunction "Allocate Special Temporary Directory Handle")
 03h	BYTE	source directory handle
 04h	BYTE	drive name ('A'-'Z')
 05h	BYTE	path length
 06h  N BYTEs	directory path
SeeAlso: #01873

Top
21E2--SF17 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
	AH = E2h subfn 17h
	DS:SI -> request buffer (see #01877)
	ES:DI -> reply buffer (see #01878)
Return: AL = status
	    00h successful
	    else network error code
Note:	this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=17h

Format of NetWare "Save Directory Handle" request buffer:
Offset	Size	Description	(Table 01877)
 00h	WORD	0002h (length of following data)
 02h	BYTE	17h (subfunction "Save Directory Handle")
 03h	BYTE	directory handle
SeeAlso: #01878,#01879

Format of NetWare "Save Directory Handle" reply buffer:
Offset	Size	Description	(Table 01878)
 00h	WORD	(call) 0010h (length of following results buffer)
 02h 16 BYTEs	save buffer
SeeAlso: #01877,#01880

Top
21E2--SF18 - INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
	AH = E2h subfn 18h
	DS:SI -> request buffer (see #01879)
	ES:DI -> reply buffer (see #01880)
Return: AL = status
	    00h successful
	    else network error code
Desc:	restore a previously saved directory handle to reproduce an executing
	  environment, possibly on a different execution site
Note:	this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=18h

Format of NetWare "Restore Directory Handle" request buffer:
Offset	Size	Description	(Table 01879)
 00h	WORD	0011h (length of following data)
 02h	BYTE	18h (subfunction "Restore Directory Handle")
 03h 16 BYTEs	save buffer
SeeAlso: #01877,#01880

Format of NetWare "Restore Directory Handle" reply buffer:
Offset	Size	Description	(Table 01880)
 00h	WORD	(call) 0002h (length of following results buffer)
 02h	BYTE	new directory handle
 03h	BYTE	effective rights (see #01849)
SeeAlso: #01879

Top
21E2--SF19 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
	AH = E2h subfn 19h
	DS:SI -> request buffer (see #01881)
	ES:DI -> reply buffer (see #01882)
Return: AL = status (00h,9Bh,9Ch) (see #01839)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh,AX=F216h/SF=19h

Format of NetWare "Set Directory Information" request buffer:
Offset	Size	Description	(Table 01881)
 00h	WORD	length of following data (max 10Bh)
 02h	BYTE	19h (subfunction "Set Directory Information")
 03h	BYTE	directory handle
 04h	DWORD	(big-endian) date and time of creation
 08h	DWORD	(big-endian) object ID of owner
 0Ch	BYTE	maximum directory rights (see #01849)
 0Dh	BYTE	length of directory path
 0Eh  N BYTEs	directory path
SeeAlso: #01882

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01882)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01881

Top
21E2--SF1A - INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
	AH = E2h subfn 1Ah
	DS:SI -> request buffer (see #01883)
	ES:DI -> reply buffer (see #01884)
Return: AL = status
	    00h successful
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h,AX=F216h/SF=1Ah

Format of NetWare "Get Path from Directory Entry" request buffer:
Offset	Size	Description	(Table 01883)
 00h	WORD	0004h (length of following data)
 02h	BYTE	1Ah (subfunction "Get Path From Directory Entry")
 03h	BYTE	volume number (00h-1Fh)
 04h	WORD	(big-endian) directory entry number
SeeAlso: #01884,#02122

Format of NetWare "Get Path from Directory Entry" reply buffer:
Offset	Size	Description	(Table 01884)
 00h	WORD	(call) size of following results record (max 200h)
 02h 256 BYTEs	path
SeeAlso: #01883,#02122

Top
21E3 - INT 21 - OS/286, OS/386 - ISSUE REAL INTERRUPT
INT 21 - OS/286, OS/386 - ISSUE REAL INTERRUPT
	AH = E3h
	AL = interrupt number
	???
Return: ???
Note:	protected mode only???
SeeAlso: AH=E1h"OS/286",INT 31/AX=0300h

Top
21E3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
	AH = E3h
	AL = character
Return: AL = status
	    00h successful
	    01h buffer full (128 characters)
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"

Top
21E3 - INT 21 - Novell NetWare - CONNECTION CONTROL
INT 21 - Novell NetWare - CONNECTION CONTROL
	AH = E3h
	DS:SI -> request buffer (see #01885)
	ES:DI -> reply buffer (see #01886)
Return: AL = status
	    00h successful
	    else error code
Note:	supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h

Format of NetWare request buffer:
Offset	Size	Description	(Table 01885)
 00h	WORD	length of following data
 02h	BYTE	subfunction number (see also AH=E3h/SF=01h,AH=E3h/SF=02h)
		00h login
		03h map object to number
		04h map number to object
		05h get station's logged information
		06h get station's root mask (obsolete)
		07h map group name to number
		08h map number to group name
		09h get memberset M of group G
	var	depends on subfunction
Notes:	the above subfunctions are not described in _NetWare_System_Calls--DOS_
	see separate entries below for other subfunctions
SeeAlso: #01886,#01887,#01890

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01886)
 00h	WORD	(call) length of following buffer space for results
	var	depends on subfunction
SeeAlso: #01885

Format of NetWare object property:
Offset	Size	Description	(Table 01887)
 00h 1-16 BYTEs property name (see also #01888)
  N	BYTE	flags
		bit 0: property is dynamic
		bit 1: property is a set rather than an item
 N+1	BYTE	security levels (see #01889)
	???

(Table 01888)
Values for names of well-known NetWare properties:
 ACCOUNT_BALANCE
 ACCOUNT_SERVERS
 GROUP_MEMBERS
 GROUPS_I'M_IN
 IDENTIFICATION		user's name
 LOGIN_CONTROL
 NET_ADDRESS
 OPERATORS
 PASSWORD
 SECURITY_EQUALS

(Table 01889)
Values for NetWare security levels:
 00h	"anyone" everyone may access
 01h	"logged" only logged-in clients may access
 02h	"object" only clients logged-in with object's name, type, and password
 03h	"supervisor" only clients logged-in with supervisor privileges
 04h	"NetWare" only NetWare may access
Note:	the above values are stored in a nybble; the high half-byte is write
	  access and the low half-byte is read access

(Table 01890)
Values for NetWare object type:
 0000h	unknown
 0001h	user
 0002h	user group
 0003h	print queue / print server
 0004h	file server
 0005h	job server
 0006h	gateway
 0007h	print server
 0008h	archive queue
 0009h	archive server
 000Ah	job queue
 000Bh	administration
 0021h	NAS SNA gateway
 0024h	remote bridge server???
 0026h	remote bridge server
 0027h	TCPIP gateway
 002Dh	time synchronization server
 002Eh	archive server dynamic SAP
 0047h	advertising print server
 0053h	print queue uwer
 0048h-8000h reserved
 FFFFh	wild (used only for finding objects)

Top
21E3--SF01 - INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
	AH = E3h subfn 01h
	DS:SI -> request buffer (see #01891)
	ES:DI -> reply buffer (see #01895)
Return: AL = status
	    00h successful
	    else error code
Note:	supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h

Format of NetWare "Change User Password (old)" request packet:
Offset	Size	Description	(Table 01891)
 00h	WORD	length of following data
 02h	BYTE	01h (subfunction "Change User Password (old)")
 03h	BYTE	length of user name
 04h  N BYTEs	user name
	BYTE	length of old password
      N BYTEs	old password
	BYTE	length of new password
      N BYTEs	new password
SeeAlso: #01895

Top
21E3--SF02 - INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
	AH = E3h subfn 02h
	DS:SI -> request buffer (see #01892)
	ES:DI -> reply buffer (see #01893)
Return: AL = status
	    00h successful
	    else error code
Note:	supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=01h,AH=E3h/SF=03h,AH=E3h/SF=0Ah

Format of NetWare "Get User Connection List (old)" request packet:
Offset	Size	Description	(Table 01892)
 00h	WORD	length of following data
 02h	BYTE	02h (subfunction "Get User Connection List (old)")
 03h	BYTE	length of user name
 04h  N BYTEs	user name
SeeAlso: #01893,#02162

Format of NetWare "Get User Connection List (old)" reply packet:
Offset	Size	Description	(Table 01893)
 00h	WORD	(call) length of following buffer
 02h	BYTE	length of connection list
 03h	BYTE	number of bytes in connection list
 04h  N BYTEs	list of connection numbers in use by user
SeeAlso: #01892,#02162

Top
21E3--SF03 - INT 21 - Novell NetWare - CONNECTION SERVICES - MAP OBJECT TO NUMBER (OLD)
INT 21 - Novell NetWare - CONNECTION SERVICES - MAP OBJECT TO NUMBER (OLD)
	AH = E3h subfn 03h
	DS:SI -> request buffer
	ES:DI -> reply buffer
Return: AL = status
	    00h successful
	    else error code
Note:	supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=01h,AH=E3h/SF=02h,AH=E3h/SF=0Ah

Top
21E3--SF0A - INT 21 - Novell NetWare - CONNECTION SERVICES - ENTER LOGIN AREA
INT 21 - Novell NetWare - CONNECTION SERVICES - ENTER LOGIN AREA
	AH = E3h subfn 0Ah
	DS:SI -> request buffer (see #01894)
	ES:DI -> reply buffer (see #01895)
Return: AL = status
	    00h successful
Desc:	change the login directory for the calling workstation
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=D7h,AH=E3h/SF=14h

Format of NetWare "Enter Login Area" request buffer:
Offset	Size	Description	(Table 01894)
 00h	WORD	length of following data (max 102h)
 02h	BYTE	0Ah (subfunction "Enter Login Area")
 03h	BYTE	number of local drives
 04h	BYTE	length of subdirectory name (00h-FFh)
 05h  N BYTEs	name of subdirectory under SYS:LOGIN where to find the login
		  utility
SeeAlso: #01895

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01895)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01891,#01894,#01898

Top
21E3--SF0C - INT 21 U - Novell NetWare - VERIFY NETWORK SERIAL NUMBER
INT 21 U - Novell NetWare - VERIFY NETWORK SERIAL NUMBER
	AH = E3h subfn 0Ch
	DS:SI -> request buffer (see #01896)
	ES:DI -> reply buffer (see #01897)
Return: AL = status
	    00h successful
Note:	if the network serial number to be verified is correct, the reply
	  buffer will contain the corresponding application number
SeeAlso: AH=E3h/SF=12h,AX=F217h/SF=0Ch

Format of NetWare "Verify Network Serial Number" request buffer:
Offset	Size	Description	(Table 01896)
 00h	WORD	0005h (length of following data)
 02h	BYTE	0Ch (subfunction "Verify Network Serial Number")
 03h	DWORD	(big-endian) network serial number to verify
SeeAlso: #01897,#02163

Format of NetWare "Verify Network Serial Number" reply buffer:
Offset	Size	Description	(Table 01897)
 00h	WORD	(call) 0002h (size of following results buffer)
 02h	WORD	(big-endian) application number
SeeAlso: #01896,#02163

Top
21E3--SF0D - INT 21 - Novell NetWare - MESSAGE SERVICES - LOG NETWORK MESSAGE
INT 21 - Novell NetWare - MESSAGE SERVICES - LOG NETWORK MESSAGE
	AH = E3h subfn 0Dh
	DS:SI -> request buffer (see #01898)
	ES:DI -> reply buffer (see #01895)
Return: AL = status
	    00h successful
Desc:	append a line to the default file server's NET$LOG.MSG file
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E1h/SF=09h

Format of NetWare "Log Network Message" request buffer:
Offset	Size	Description	(Table 01898)
 00h	WORD	length of following data (max 52h)
 02h	BYTE	0Dh (subfunction "Log Network Message")
 03h	BYTE	length of message (01h-50h)
 04h  N BYTEs	message (no control characters or characters > 7Eh)
SeeAlso: #01895

Top
21E3--SF0E - INT 21 - Novell NetWare - FILE SERVER - GET DISK UTILIZATION
INT 21 - Novell NetWare - FILE SERVER - GET DISK UTILIZATION
	AH = E3h subfn 0Eh
	DS:SI -> request buffer (see #01900)
	ES:DI -> reply buffer (see #01901)
Return: AL = status (00h,98h,F2h) (see #01899)
Notes:	this function is supported by Advanced NetWare 2.1+
	the caller must have bindery object read privileges
SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
SeeAlso: AX=F217h/SF=0Eh

(Table 01899)
Values for NetWare function status:
 00h	successful
 98h	nonexistent volume
 F2h	not permitted to read object
SeeAlso: #01866,#01902

Format of NetWare "Get Disk Utilization" request buffer:
Offset	Size	Description	(Table 01900)
 00h	WORD	0005h (length of following data)
 02h	BYTE	0Eh (subfunction "Get Disk Utilization")
 03h	BYTE	volume number (00h-1Fh)
 04h	DWORD	(big-endian) object ID
SeeAlso: #01901,#02164

Format of NetWare "Get Disk Utilization" reply buffer:
Offset	Size	Description	(Table 01901)
 00h	WORD	(call) 000Bh (size of following results buffer)
 02h	BYTE	volume number (00h-1Fh)
 03h	DWORD	(big-endian) object ID
 07h	WORD	(big-endian) directories used by object
 09h	WORD	(big-endian) files created by object
 0Bh	WORD	(big-endian) disk blocks used by object-created files
SeeAlso: #01900,#02164

Top
21E3--SF0F - INT 21 - Novell NetWare - FILE SERVICES - SCAN FILE INFORMATION
INT 21 - Novell NetWare - FILE SERVICES - SCAN FILE INFORMATION
	AH = E3h subfn 0Fh
	DS:SI -> request buffer (see #01903)
	ES:DI -> reply buffer (see #01904)
Return: AL = status (see #01902)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=B6h,AH=E3h/SF=10h,AX=F217h/SF=0Fh

(Table 01902)
Values for NetWare function status:
 00h	successful
 89h	not permitted to search directory
 FFh	no more matching files
SeeAlso: #01899,#01920

Format of NetWare "Scan File Information" request buffer:
Offset	Size	Description	(Table 01903)
 00h	WORD	length of following data (max 105h)
 02h	BYTE	0Fh (subfunction "Scan File Information")
 03h	WORD	(big-endian) sequence number
		FFFFh on first call
 05h	BYTE	directory handle or 00h
 06h	BYTE	search attributes (see #01420 at AX=4301h)
 07h	BYTE	length of filespec
 08h  N BYTEs	ASCIZ uppercase filespec
SeeAlso: #01904,#02165

Format of NetWare "Scan File Information" reply buffer:
Offset	Size	Description	(Table 01904)
 00h	WORD	(call) 005Eh (size of following results buffer)
 02h	WORD	next sequence number (place in request buffer for next call)
 04h 14 BYTEs	ASCIZ filename
 12h	BYTE	file attributes (see #01420 at AX=4301h)
 13h	BYTE	extended file attributes (see #01804 at AH=B6h)
 14h	DWORD	(big-endian) file size in bytes
 18h	WORD	(big-endian) file's creation date (see #01666 at AX=5700h)
 1Ah	WORD	(big-endian) date of last access (see #01665 at AX=5700h)
 1Ch	DWORD	(big-endian) date and time of last update (see #01846)
 20h	DWORD	(big-endian) object ID of owner
 24h	DWORD	(big-endian) date and time last archived (see #01846)
 28h 55 BYTEs	reserved
Note:	the official documentation erroneously lists the field at offset 04h as
	  15 bytes and thus shifts the remaining fields by one byte
SeeAlso: #01903,#02165

Top
21E3--SF10 - INT 21 - Novell NetWare - FILE SERVICES - SET FILE INFORMATION
INT 21 - Novell NetWare - FILE SERVICES - SET FILE INFORMATION
	AH = E3h subfn 10h
	DS:SI -> request buffer (see #01905)
	ES:DI -> reply buffer (see #01906)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
	the caller must have modify privileges on the directory containing the
	  file
SeeAlso: AH=B6h,AH=E3h/SF=0Fh,AX=F217h/SF=10h

Format of NetWare "Set File Information" request buffer:
Offset	Size	Description	(Table 01905)
 00h	WORD	length of following data (max 151h)
 02h	BYTE	10h (subfunction "Set File Information")
 03h	BYTE	file attributes (see #01420 at AX=4301h)
 04h	BYTE	extended file attributes (see #01804 at AH=B6h)
 05h  4 BYTEs	reserved
 09h	WORD	(big-endian) file's creation date (see #01666 at AX=5700h)
 0Bh	WORD	(big-endian) date of last access (see #01665 at AX=5700h)
 0Dh	DWORD	(big-endian) date and time of last update (see #01846)
 11h	DWORD	(big-endian) object ID of owner
 15h	DWORD	(big-endian) date and time last archived (see #01846)
 19h 56 BYTEs	reserved
 51h	BYTE	directory handle or 00h
 52h	BYTE	search attributes (see #01420 at AX=4301h)
 53h	BYTE	length of filename
 54h  N BYTEs	filename
SeeAlso: #01906

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01906)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01905

Top
21E3--SF11 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER INFORMATION
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER INFORMATION
	AH = E3h subfn 11h
	DS:SI -> request buffer (see #01907)
	ES:DI -> reply buffer (see #01908)
Return: AL = status
	    00h successful
Desc:	determine the version of software installed on the file server and
	  how it is configured
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=12h,AH=E3h/SF=CDh,AH=E3h/SF=D3h,AH=E3h/SF=E7h
SeeAlso: AH=E7h"Novell",AX=F217h/SF=11h

Format of NetWare "Get File Server Information" request buffer:
Offset	Size	Description	(Table 01907)
 00h	WORD	0001h (length of following data)
 02h	BYTE	11h (subfunction "Get File Server Information")
SeeAlso: #01908,#02166 at AX=F217h/SF=11h

Format of NetWare "Get File Server Information" reply buffer:
Offset	Size	Description	(Table 01908)
 00h	WORD	(call) 0080h (size of following results buffer)
 02h 48 BYTEs	server's name
 32h	BYTE	NetWare version
 33h	BYTE	NetWare subversion (0-99)
 34h	WORD	(big-endian) number of connections supported
		NetWare 4.01 reportedly returns maximum simulataneously-used
		  connections
 36h	WORD	(big-endian) number of connections in use
 38h	WORD	(big-endian) maximum connected volumes
---Advanced NetWare 2.1+ ---
 3Ah	BYTE	operating system revision number
 3Bh	BYTE	fault tolerance (SFT) level
 3Ch	BYTE	TTS level
 3Dh	WORD	(big-endian) maximum simultaneously-used connections
		NetWare 4.01 reportedly returns number of connections in use
 3Fh	BYTE	accounting version
 40h	BYTE	VAP version
 41h	BYTE	queueing version
 42h	BYTE	print server version
 43h	BYTE	virtual console version
 44h	BYTE	security restrictions level
 45h	BYTE	internetwork bridge version
 46h 60 BYTEs	reserved
SeeAlso: #01907,#02166

Top
21E3--SF12 - INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
	AH = E3h subfn 12h
	AL = 00h
	BX = CX = DX = 0000h
	DS:SI -> request buffer (see #01909)
	ES:DI -> reply buffer (see #01910)
Return: AL = status
	    00h successful
Desc:	return the serial number and application number for the software
	  installed on the file server
Notes:	this function is supported by Advanced NetWare 2.1+
	reportedly, the workstation crashes if AL,BX,CX, and DX are not all
	  zero
SeeAlso: AH=E3h/SF=0Ch,AH=E3h/SF=11h,AX=F217h/SF=12h

Format of NetWare "Get Serial Number" request buffer:
offset	 size	description	(Table 01909)
 00h	 WORD	0001h (length of following data)
 02h	 BYTE	12h (subfunction "Get Serial Number")
SeeAlso: #01910,#02167

Format of NetWare "Get Serial Number" reply buffer:
offset	 size	description	(Table 01910)
 00h	 WORD	(call) 0006h (size of following results buffer)
 02h   4 BYTEs	(big-endian) NetWare server serial number
 06h   2 BYTEs	(big-endian) NetWare application serial number
SeeAlso: #01909,#02167

Top
21E3--SF13 - INT 21 - Novell NetWare - CONNECTION SERVICES - GET INTERNET ADDRESS (OLD)
INT 21 - Novell NetWare - CONNECTION SERVICES - GET INTERNET ADDRESS (OLD)
	AH = E3h subfn 13h
	DS:SI -> request buffer (see #01911)
	ES:DI -> reply buffer (see #01912)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AH=EEh"NetWare",AX=F217h/SF=13h

Format of NetWare "Get Internet Address (old)" request buffer:
Offset	Size	Description	(Table 01911)
 00h	WORD	0002h (length of following data)
 02h	BYTE	13h (subfunction "Get Internet Address")
 03h	BYTE	logical connection number (01h-64h)
SeeAlso: #01912,#02168

Format of NetWare "Get Internet Address (old)" reply buffer:
Offset	Size	Description	(Table 01912)
 00h	WORD	(call) 000Ch (length of following results buffer)
 02h  4 BYTEs	network number
 06h  6 BYTEs	physical node address
 0Ch  2 BYTEs	socket number
SeeAlso: #01911,#02168 at AX=F217h/SF=13h

Top
21E3--SF14 - INT 21 - Novell NetWare - CONNECTION SERVICES - LOGIN TO FILE SERVER
INT 21 - Novell NetWare - CONNECTION SERVICES - LOGIN TO FILE SERVER
	AH = E3h subfn 14h
	DS:SI -> request buffer (see #01913)
	ES:DI -> reply buffer (see #01914)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=D7h"NetWare",AH=F1h"NetWare",AX=F217h/SF=14h

Format of NetWare "Login to File Server" request buffer:
Offset	Size	Description	(Table 01913)
 00h	WORD	length of following data (max B3h)
 02h	BYTE	14h (subfunction "Login To File Server")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object's name
	BYTE	length of password
      N BYTEs	password
SeeAlso: #01914

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01914)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01913

Top
21E3--SF15 - INT 21 - Novell NetWare - CONNECTION SERVICES - GET OBJECT CONNECTION LIST(OLD)
INT 21 - Novell NetWare - CONNECTION SERVICES - GET OBJECT CONNECTION LIST(OLD)
	AH = E3h subfn 15h
	DS:SI -> request buffer (see #01915)
	ES:DI -> reply buffer (see #01916)
Return: AL = status
	    00h successful
Desc:	this function retrieves a list indicating the connection numbers under
	  which a bindery object is logged into the default file server
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AX=F217h/SF=15h

Format of NetWare "Get Object Connection Numbers" request buffer:
Offset	Size	Description	(Table 01915)
 00h	WORD	length of following data (max 33h)
 02h	BYTE	15h (subfunction "Get Object Connection Numbers")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object's name
SeeAlso: #01916,#02169

Format of NetWare "Get Object Connection Numbers" reply buffer:
Offset	Size	Description	(Table 01916)
 00h	WORD	(call) length of following results buffer (max 65h)
 02h	BYTE	number of connections
 03h  N BYTEs	connection list
SeeAlso: #01915,#02169

Top
21E3--SF16 - INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION INFORMATION
INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION INFORMATION
	AH = E3h subfn 16h
	DS:SI -> request buffer (see #01917)
	ES:DI -> reply buffer (see #01918)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=D7h,AH=DCh"NetWare",AH=E3h/SF=14h

Format of NetWare "Get Connection Information" request buffer:
Offset	Size	Description	(Table 01917)
 00h	WORD	0002h (length of following data)
 02h	BYTE	16h (subfunction "Get Connection Information")
 03h	BYTE	logical connection number (01h-64h)

Format of NetWare "Get Connection Information" reply buffer:
Offset	Size	Description	(Table 01918)
 00h	WORD	(call) 003Eh (length of following results buffer)
 02h	DWORD	(big-endian) object ID for object logged in on the connection
		00000000h if no object logged in
 06h	WORD	(big-endian) type of object
 08h 48 BYTEs	name of object
 38h  7 BYTEs	login time (see #01919)
Note:	much of the Novell documentation incorrectly states the reply buffer
	  length as 3Fh instead of 40h, which corresponds to a results length
	  of 3Dh (61) bytes instead of the correct 3Eh (62) bytes

Format of NetWare login time:
Offset	Size	Description	(Table 01919)
 00h	BYTE	year (80-99 = 1980-1999, 00-79 = 2000-2079)
 01h	BYTE	month (1-12)
 02h	BYTE	day (1-31)
 03h	BYTE	hour (0-23)
 04h	BYTE	minute (0-59)
 05h	BYTE	second (0-59)
 06h	BYTE	day of week (0 = Sunday)

Top
21E3--SF32 - INT 21 - Novell NetWare - BINDERY SERVICES - CREATE BINDERY OBJECT
INT 21 - Novell NetWare - BINDERY SERVICES - CREATE BINDERY OBJECT
	AH = E3h subfn 32h
	DS:SI -> request buffer (see #01921)
	ES:DI -> reply buffer (see #01922)
Return: AL = status (see #01920)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=33h,AH=E3h/SF=34h,AH=E3h/SF=38h,AH=E3h/SF=39h
SeeAlso: AX=F217h/SF=32h

(Table 01920)
Values for NetWare function status:
 00h	successful
 96h	server out of memory
 EEh	object already exists
 EFh	invalid name
 F0h	wildcard not allowed
 F1h	invalid bindery security level
 F3h	not permitted to rename object
 F4h	not permitted to delete objects
 F5h	not permitted to create objects
 FCh	no such object
 FEh	server bindery locked
 FFh	bindery failure
SeeAlso: #01902,#01927

Format of NetWare "Create Bindery Object" request buffer:
Offset	Size	Description	(Table 01921)
 00h	WORD	length of following data (max 35h)
 02h	BYTE	32h (subfunction "Create Bindery Object")
 03h	BYTE	object flag (00h static, 01h dynamic)
 04h	BYTE	object security levels
 05h	WORD	(big-endian) type of object
 07h	BYTE	length of object's name
 08h  N BYTEs	object's name
SeeAlso: #01922

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01922)
 00h	WORD	0000h (no data returned)
SeeAlso: #01921,#01923,#01924

Top
21E3--SF33 - INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT
	AH = E3h subfn 33h
	DS:SI -> request buffer (see #01923)
	ES:DI -> reply buffer (see #01922)
Return: AL = status (see #01920)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=34h,AX=F217h/SF=33h

Format of NetWare "Delete Bindery Object" request buffer:
Offset	Size	Description	(Table 01923)
 00h	WORD	length of following data (max 33h)
 02h	BYTE	33h (subfunction "Delete Bindery Object")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object's name
SeeAlso: #01922

Top
21E3--SF34 - INT 21 - Novell NetWare - BINDERY SERVICES - RENAME BINDERY OBJECT
INT 21 - Novell NetWare - BINDERY SERVICES - RENAME BINDERY OBJECT
	AH = E3h subfn 34h
	DS:SI -> request buffer (see #01924)
	ES:DI -> reply buffer (see #01922)
Return: AL = status (see #01920)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AX=F217h/SF=34h

Format of NetWare "Rename Bindery Object" request buffer:
Offset	Size	Description	(Table 01924)
 00h	WORD	length of following data (max 63h)
 02h	BYTE	34h (subfunction "Rename Bindery Object")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object's name
	BYTE	length of new name (01h-2Fh)
      N BYTEs	new name
SeeAlso: #01922

Top
21E3--SF35 - INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT ID
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT ID
	AH = E3h subfn 35h
	DS:SI -> request buffer (see #01925)
	ES:DI -> reply buffer (see #01926)
Return: AL = status (00h,96h,FCh,FEh,FFh) (see #01927)
Notes:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
	the requesting workstation must be logged into the file server with
	  read access to the bindery object
SeeAlso: AH=E3h/SF=36h,AH=E3h/SF=44h,AX=F217h/SF=35h

Format of NetWare "Get Bindery Object ID" request buffer:
Offset	Size	Description	(Table 01925)
 00h	WORD	length of following data (max 33h)
 02h	BYTE	35h (subfunction "Get Bindery Object ID")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name
 06h  N BYTEs	object's name
SeeAlso: #01926,#02184

Format of NetWare "Get Bindery Object ID" reply buffer:
Offset	Size	Description	(Table 01926)
 00h	WORD	(call) 0036h (length of following buffer space)
 02h	DWORD	(big-endian) object ID
 06h	WORD	(big-endian) type of object
 08h 48 BYTEs	object name
SeeAlso: #01925,#02184 at AX=F217h/SF=35h

Top
21E3--SF36 - INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT NAME
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT NAME
	AH = E3h subfn 36h
	DS:SI -> request buffer (see #01928)
	ES:DI -> reply buffer (see #01929)
Return: AL = status (see #01927)
Notes:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
	the requesting workstation must be logged into the file server with
	  read access to the bindery object
SeeAlso: AH=E3h/SF=35h,AH=E3h/SF=44h,AX=F217h/SF=36h

(Table 01927)
Values for NetWare function status:
 00h	successful
 96h	server out of memory
 EFh	invalid name
 F0h	wildcard not allowed
 FCh	no such object
 FEh	server bindery locked
 FFh	bindery failure
SeeAlso: #01920,#01933

Format of NetWare "Get Bindery Object Name" request buffer:
Offset	Size	Description	(Table 01928)
 00h	WORD	0005h (length of following data)
 02h	BYTE	36h (subfunction "Get Bindery Object Name")
 03h	DWORD	(big-endian) object ID
SeeAlso: #01929,#02185 at AX=F217h/SF=36h

Format of NetWare "Get Bindery Object Name" reply buffer:
Offset	Size	Description	(Table 01929)
 00h	WORD	(call) 0036h (length of following buffer space)
 02h	DWORD	(big-endian) object ID
 06h	WORD	(big-endian) type of object
 08h 48 BYTEs	object name
SeeAlso: #01928,#02185

Top
21E3--SF37 - INT 21 - Novell NetWare - BINDERY SERVICES - SCAN BINDERY OBJECT
INT 21 - Novell NetWare - BINDERY SERVICES - SCAN BINDERY OBJECT
	AH = E3h subfn 37h
	DS:SI -> request buffer (see #01930)
	ES:DI -> reply buffer (see #01931)
Return: AL = status (see #01927)
Notes:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
	the requesting workstation must be logged into the file server with
	  read access to the bindery object
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AH=E3h/SF=38h,AH=E3h/SF=3Ch
SeeAlso: AX=F217h/SF=37h

Format of NetWare "Scan Bindery Object" request buffer:
Offset	Size	Description	(Table 01930)
 00h	WORD	length of following data (max 37h)
 02h	BYTE	37h (subfunction "Scan Bindery Object")
 03h	DWORD	(big-endian) last object ID
 07h	WORD	(big-endian) type of object
 09h	BYTE	length of object's name
 0Ah  N BYTEs	object's name
SeeAlso: #01931,#02186

Format of NetWare "Scan Bindery Object" reply buffer:
Offset	Size	Description	(Table 01931)
 00h	WORD	(call) 0039h (length of following buffer space)
 02h	DWORD	(big-endian) object ID
		FFFFFFFFh for first call
 06h	WORD	(big-endian) type of object
 08h 48 BYTEs	object name (counted string)
 38h	BYTE	object flag (00h static, 01h dynamic)
 39h	BYTE	object's security levels
 3Ah	BYTE	object properties flag (00h no, FFh yes)
SeeAlso: #01930,#02186

Top
21E3--SF38 - INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT SECURITY
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT SECURITY
	AH = E3h subfn 38h
	DS:SI -> request buffer (see #01932)
	ES:DI -> reply buffer (see #01935)
Return: AL = status (00h,96h,F0h,F1h,FBh,FCh,FEh,FFh) (see #01933)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh,AX=F217h/SF=38h

Format of NetWare "Change Bindery Object Security" request buffer:
Offset	Size	Description	(Table 01932)
 00h	WORD	length of following data (max 34h)
 02h	BYTE	38h (subfunction "Change Bindery Object Security")
 03h	BYTE	new security levels
 04h	WORD	(big-endian) type of object
 06h	BYTE	length of object's name (01h-2Fh)
 07h  N BYTEs	object name
Note:	the object type may not be WILD (FFFFh)
SeeAlso: #01935

Top
21E3--SF39 - INT 21 - Novell NetWare - BINDERY SERVICES - CREATE PROPERTY
INT 21 - Novell NetWare - BINDERY SERVICES - CREATE PROPERTY
	AH = E3h subfn 39h
	DS:SI -> request buffer (see #01934)
	ES:DI -> reply buffer (see #01935)
Return: AL = status (see #01933)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh,AX=F217h/SF=39h

(Table 01933)
Values for NetWare function status:
 00h	successful
 96h	server out of memory
 EDh	property already exists
 EFh	invalid name
 F0h	wildcard not allowed
 F1h	invalid bindery security level
 F6h	not permitted to delete properties
 F7h	not permitted to create properties
 FBh	no such property
 FCh	no such object
 FEh	server bindery locked
 FFh	bindery failure
SeeAlso: #01927,#01937

Format of NetWare "Create Property" request buffer:
Offset	Size	Description	(Table 01934)
 00h	WORD	length of following data (max 45h)
 02h	BYTE	39h (subfunction "Create Property")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object's name
	BYTE	property flags
	BYTE	property security levels
	BYTE	length of property's name (01h-0Fh)
      N BYTEs	property's name
SeeAlso: #01935

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01935)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01932,#01935,#01936

Top
21E3--SF3A - INT 21 - Novell NetWare - BINDERY SERVICES - DELETE PROPERTY
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE PROPERTY
	AH = E3h subfn 3Ah
	DS:SI -> request buffer (see #01936)
	ES:DI -> reply buffer (see #01935)
Return: AL = status (see #01933)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=39h,AX=F217h/SF=3Ah

Format of NetWare "Delete Property" request buffer:
Offset	Size	Description	(Table 01936)
 00h	WORD	length of following data (max 43h)
 02h	BYTE	3Ah (subfunction "Delete Property")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object's name
	BYTE	length of property's name (01h-0Fh)
      N BYTEs	property's name
SeeAlso: #01935

Top
21E3--SF3B - INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE PROPERTY SECURITY
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE PROPERTY SECURITY
	AH = E3h subfn 3Bh
	DS:SI -> request buffer (see #01938)
	ES:DI -> reply buffer (see #01935)
Return: AL = status (see #01937)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=38h,AX=F217h/SF=3Bh

(Table 01937)
Values for NetWare function status:
 00h	successful
 96h	server out of memory
 F0h	wildcard not allowed
 F1h	invalid bindery security level
 FBh	no such property
 FCh	no such object
 FEh	server bindery locked
 FFh	bindery failure
SeeAlso: #01933,#01941

Format of NetWare "Change Property Security" request buffer:
Offset	Size	Description	(Table 01938)
 00h	WORD	length of following data (max 44h)
 02h	BYTE	3Bh (subfunction "Change Property Security")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object name
	BYTE	new property security levels
	BYTE	length of property's name
      N BYTEs	property name
Note:	the object type may not be WILD (FFFFh)

Top
21E3--SF3C - INT 21 - Novell NetWare - BINDERY SERVICES - SCAN PROPERTY
INT 21 - Novell NetWare - BINDERY SERVICES - SCAN PROPERTY
	AH = E3h subfn 3Ch
	DS:SI -> request buffer (see #01939)
	ES:DI -> reply buffer (see #01940)
Return: AL = status (00h,96h,F1h,FBh,FCh,FEh,FFh) (see #01937)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=37h,AH=E3h/SF=3Bh,AX=F217h/SF=3Ch

Format of NetWare "Scan Property" request buffer:
Offset	Size	Description	(Table 01939)
 00h	WORD	length of following data (max 47h)
 02h	BYTE	3Ch (subfunction "Scan Property")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object name
	DWORD	(big-endian) sequence number
		FFFFFFFFh for first call
	BYTE	length of property's name (01h-0Fh)
      N BYTEs	property's name
SeeAlso: #01940,#02187

Format of NetWare "Scan Property" reply buffer:
Offset	Size	Description	(Table 01940)
 00h	WORD	(call) 0018h (length of following results buffer)
 02h 16 BYTEs	property name
 12h	BYTE	property flags
 13h	BYTE	property security levels
 14h	DWORD	(big-endian) sequence number
 18h	BYTE	property value flag (00h no, FFh yes)
 19h	BYTE	more properties (00h no, FFh yes)
SeeAlso: #01939,#02187

Top
21E3--SF3D - INT 21 - Novell NetWare - BINDERY SERVICES - READ PROPERTY VALUE
INT 21 - Novell NetWare - BINDERY SERVICES - READ PROPERTY VALUE
	AH = E3h subfn 3Dh
	DS:SI -> request buffer (see #01942)
	ES:DI -> reply buffer (see #01943)
Return: AL = status (see #01941)
Desc:	retrieve one 128-byte segment of the specified property's value
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Eh,AX=F217h/SF=3Dh

(Table 01941)
Values for NetWare function status:
 00h	successful
 96h	server out of memory
 E8h	not item property
 ECh	no such segment
 F0h	wildcard not allowed
 F1h	invalid bindery security level
 F8h	not permitted to write property
 F9h	not permitted to read property
 FBh	no such property
 FCh	no such object
 FEh	server bindery locked
 FFh	bindery failure
SeeAlso: #01937,#01946

Format of NetWare "Read Property Value" request buffer:
Offset	Size	Description	(Table 01942)
 00h	WORD	length of following data (max 44h)
 02h	BYTE	3Dh (subfunction "Read Property Value")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object name
	BYTE	segment number (01h on first call, increment until done)
	BYTE	length of property's name (01h-0Fh)
      N BYTEs	property name
SeeAlso: #01943,#02188

Format of NetWare "Read Property Value" reply buffer:
Offset	Size	Description	(Table 01943)
 00h	WORD	(call) 0082h (length of following results buffer)
 02h 128 BYTEs	property's value
 82h	BYTE	more segments (00h no, FFh yes)
 83h	BYTE	property's flags
SeeAlso: #01942,#02188

Top
21E3--SF3E - INT 21 - Novell NetWare - BINDERY SERVICES - WRITE PROPERTY VALUE
INT 21 - Novell NetWare - BINDERY SERVICES - WRITE PROPERTY VALUE
	AH = E3h subfn 3Eh
	DS:SI -> request buffer (see #01944)
	ES:DI -> reply buffer (see #01945)
Return: AL = status (see #01941)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Dh,AX=F217h/SF=3Eh

Format of NetWare "Write Property Value" request buffer:
Offset	Size	Description	(Table 01944)
 00h	WORD	length of following data (max C5h)
 02h	BYTE	3Eh (subfunction "Write Property Value")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object name
	BYTE	segment number (01h on first call, increment until done)
	BYTE	erase remaining segments (00h no, FFh yes)
	BYTE	length of property's name (01h-0Fh)
      N BYTEs	property name
    128 BYTEs	property value segment
SeeAlso: #01945

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01945)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01944,#01947

Top
21E3--SF3F - INT 21 - Novell NetWare - BINDERY SERVICES - VERIFY BINDERY OBJECT PASSWORD
INT 21 - Novell NetWare - BINDERY SERVICES - VERIFY BINDERY OBJECT PASSWORD
	AH = E3h subfn 3Fh
	DS:SI -> request buffer (see #01947)
	ES:DI -> reply buffer (see #01945)
Return: AL = status (see #01946)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AX=F217h/SF=3Fh

(Table 01946)
Values for NetWare function status:
 00h	successful
 96h	server out of memory
 F0h	wildcard not allowed
 FBh	no such property
 FCh	no such object
 FEh	server bindery locked
 FFh	bindery failure: no such object, bad password, no password for object,
	  or invalid old password
SeeAlso: #01941,#01950

Format of NetWare "Verify Bindery Object Password" request buffer:
Offset	Size	Description	(Table 01947)
 00h	WORD	length of following data (max 133h)
 02h	BYTE	3Fh (subfunction "Verify Bindery Object Password")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object name
	BYTE	length of password (00h-7Fh)
      N BYTEs	password
SeeAlso: #01945

Top
21E3--SF40 - INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT PASSWORD
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT PASSWORD
	AH = E3h subfn 40h
	DS:SI -> request buffer (see #01948)
	ES:DI -> reply buffer (see #01949)
Return: AL = status (see #01946)
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=3Fh,AH=E3h/SF=41h,AX=F217h/SF=40h

Format of NetWare "Change Bindery Object Password" request buffer:
Offset	Size	Description	(Table 01948)
 00h	WORD	length of following data (max 133h)
 02h	BYTE	40h (subfunction "Change Bindery Object Password")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name (01h-2Fh)
 06h  N BYTEs	object name
	BYTE	length of old password (00h-7Fh)
      N BYTEs	old password
	BYTE	length of new password (00h-7Fh)
      N BYTEs	new password
SeeAlso: #01949,#02195

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01949)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01948,#01951

Top
21E3--SF41 - INT 21 - Novell NetWare - BINDERY SERVICES - ADD BINDERY OBJECT TO SET
INT 21 - Novell NetWare - BINDERY SERVICES - ADD BINDERY OBJECT TO SET
	AH = E3h subfn 41h
	DS:SI -> request buffer (see #01951)
	ES:DI -> reply buffer (see #01949)
Return: AL = status (see #01950)
Desc:	add the specified object to an object's group property
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h,AX=F217h/SF=41h

(Table 01950)
Values for NetWare function status:
 00h	successful
 96h	server out of memory
 E9h	member already exists
 EAh	member does not exist
 EBh	not a group property
 F0h	wildcard not allowed
 F8h	can't write property
 F9h	not permitted to read property
 FBh	no such property
 FCh	no such object
 FEh	server bindery locked
 FFh	bindery failure
SeeAlso: #01946,#01961

Format of NetWare "Add Bindery Object to Set" request buffer:
Offset	Size	Description	(Table 01951)
 00h	WORD	length of following data (max 75h)
 02h	BYTE	41h (subfunction "Add Bindery Object to Set")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name
 06h  N BYTEs	object name
	BYTE	length of property name (01h-0Fh)
      N BYTEs	property name
	WORD	(big-endian) type of member object
	BYTE	length of member object's name
      N BYTEs	member object's name
SeeAlso: #01949

Top
21E3--SF42 - INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT FROM SET
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT FROM SET
	AH = E3h subfn 42h
	DS:SI -> request buffer (see #01952)
	ES:DI -> reply buffer (see #01953)
Return: AL = status (see #01950)
Desc:	delete the specified object from a set property
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h,AX=F217h/SF=42h

Format of NetWare "Delete Bindery Object from Set" request buffer:
Offset	Size	Description	(Table 01952)
 00h	WORD	length of following data (max 75h)
 02h	BYTE	42h (subfunction "Delete Bindery Object from Set")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name
 06h  N BYTEs	object name
	BYTE	length of property name (01h-0Fh)
      N BYTEs	property name
	WORD	(big-endian) type of member object
	BYTE	length of member object's name
      N BYTEs	member object's name
SeeAlso: #01953

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01953)
 00h	WORD	(call) 0000h (no data returned)
SeeAlso: #01952,#01954,#01955,#01956

Top
21E3--SF43 - INT 21 - Novell NetWare - BINDERY SERVICES - IS BINDERY OBJECT IN SET
INT 21 - Novell NetWare - BINDERY SERVICES - IS BINDERY OBJECT IN SET
	AH = E3h subfn 43h
	DS:SI -> request buffer (see #01954)
	ES:DI -> reply buffer (see #01953)
Return: AL = status (see #01950)
Desc:	determine whether the specified object is a member of the given set
	  property
Notes:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
	the caller must have read access to the property
SeeAlso: AH=E3h/SF=41h,AH=E3h/SF=42h,AX=F217h/SF=43h

Format of NetWare "Is Bindery Object in Set?" request buffer:
Offset	Size	Description	(Table 01954)
 00h	WORD	length of following data (max 75h)
 02h	BYTE	43h (subfunction "Is Bindery Object In Set")
 03h	WORD	(big-endian) type of object
 05h	BYTE	length of object's name
 06h  N BYTEs	object's name
	BYTE	length of property's name
      N BYTEs	property's name
	WORD	(big-endian) type of member object
	BYTE	length of member object's name
      N BYTEs	member object's name
SeeAlso: #01953

Top
21E3--SF44 - INT 21 - Novell NetWare - BINDERY SERVICES - CLOSE BINDERY
INT 21 - Novell NetWare - BINDERY SERVICES - CLOSE BINDERY
	AH = E3h subfn 44h
	DS:SI -> request buffer (see #01955)
	ES:DI -> reply buffer (see #01953)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=45h,AX=F217h/SF=44h

Format of NetWare "Close Bindery" request buffer:
Offset	Size	Description	(Table 01955)
 00h	WORD	0001h (length of following data)
 02h	BYTE	44h (subfunction "Close Bindery")
SeeAlso: #01953,#01956

Top
21E3--SF45 - INT 21 - Novell NetWare - BINDERY SERVICES - OPEN BINDERY
INT 21 - Novell NetWare - BINDERY SERVICES - OPEN BINDERY
	AH = E3h subfn 45h
	DS:SI -> request buffer (see #01956)
	ES:DI -> reply buffer (see #01953)
Return: AL = status
	    00h successful
Notes:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
	the bindery may only be opened by the supervisor or an object with
	  equivalent privileges
SeeAlso: AH=E3h/SF=44h,AX=F217h/SF=45h

Format of NetWare "Open Bindery" request buffer:
Offset	Size	Description	(Table 01956)
 00h	WORD	0001h (length of following data)
 02h	BYTE	45h (subfunction "Open Bindery")
SeeAlso: #01953,#01955

Top
21E3--SF46 - INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY ACCESS LEVEL
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY ACCESS LEVEL
	AH = E3h subfn 46h
	DS:SI -> request buffer (see #01957)
	ES:DI -> reply buffer (see #01958)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AX=F217h/SF=46h

Format of NetWare "Get Bindery Access Level" request buffer:
Offset	Size	Description	(Table 01957)
 00h	WORD	0001h (length of following data)
 02h	BYTE	46h (subfunction "Get Bindery Access Level")
SeeAlso: #01958,#02189

Format of NetWare "Get Bindery Access Level" reply buffer:
Offset	Size	Description	(Table 01958)
 00h	WORD	0005h (length of following buffer)
 02h	BYTE	security levels
 03h	DWORD	(big-endian) object ID
SeeAlso: #01957,#02189

Top
21E3--SF47 - INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN BINDERY OBJ TRUSTEE PATHS
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN BINDERY OBJ TRUSTEE PATHS
	AH = E3h subfn 47h
	DS:SI -> request buffer (see #01959)
	ES:DI -> reply buffer (see #01960)
Return: AL = status (00h,96h,F0h,F1h,FCh,FEh,FFh) (see #01961)
Desc:	iterate through the directories to which an object is a trustee
Note:	this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AX=F217h/SF=47h

Format of NetWare "Scan Bindery Object Trustee Paths" request buffer:
Offset	Size	Description	(Table 01959)
 00h	WORD	0008h (length of following data)
 02h	BYTE	47h (subfunction "Scan Bindery Object Trustee Paths")
 03h	BYTE	volume number (00h-1Fh)
 04h	WORD	(big-endian) last sequence number (FFFFh on first call)
 06h	DWORD	(big-endian) object ID
SeeAlso: #01960,#02190

Format of NetWare "Scan Bindery Object Trustee Paths" reply buffer:
Offset	Size	Description	(Table 01960)
 00h	WORD	(call) length of following results buffer (max 107h)
 02h	WORD	(big-endian) next sequence number
 04h	DWORD	(big-endian) object ID
 08h	BYTE	trustee directory rights (see #01849 at AH=E2h/SF=03h)
 09h	BYTE	length of trustee path
 0Ah  N BYTEs	trustee path
SeeAlso: #01959,#02190

Top
21E3--SF64 - INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE
INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE
	AH = E3h subfn 64h
	DS:SI -> request buffer (see #01962)
	ES:DI -> reply buffer (see #01963)
Return: AL = status (00h,96h,99h,9Bh,9Ch,EDh-F1h,F5h,F7h,FCh,FEh,FFh)
	      (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on a workstation with supervisor privileges
SeeAlso: AH=E3h/SF=65h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Bh
SeeAlso: AX=F217h/SF=64h

(Table 01961)
Values for NetWare function status:
 00h (0)	successful
 96h (150)	server out of memory
 99h (153)	directory full
 9Bh (155)	invalid directory handle
 9Ch (156)	invalid path
 D0h (208)	queue error
 D1h (209)	no such queue
 D2h (210)	no server for queue
 D3h (211)	no queue rights
 D4h (212)	queue full
 D5h (213)	no queue job
 D6h (214)	no job rights
 D7h (215)	queue servicing error
 D8h (216)	queue not active
 D9h (217)	station is not a server
 DAh (218)	queue halted
 DBh (219)	too many queue servers
 EDh (237)	property already exists
 EEh (238)	object already exists
 EFh (239)	invalid name
 F0h (240)	wildcard not allowed
 F1h (241)	invalid bindery security level
 F5h (245)	not permitted to create object
 F7h (247)	not permitted to create property
 FCh (252)	no such object
 FEh (254)	server bindery locked
 FFh (255)	bindery failure
SeeAlso: #01950,#02002,#01680,#02860 at INT 2F/AX=7A20h/BX=0000h

Format of NetWare "Create Queue" request buffer:
Offset	Size	Description	(Table 01962)
 00h	WORD	length of following data (max ABh)
 02h	BYTE	64h (subfunction "Create Queue")
 03h	WORD	(big-endian) queue type
 05h	BYTE	length of queue's name (01h-2Fh)
 06h  N BYTEs	queue's name
	BYTE	directory handle or 00h
	BYTE	length of path name (01h-76h)
      N BYTEs	path name of directory in which to create queue subdirectory
SeeAlso: #01963,#02198

Format of NetWare "Create Queue" reply buffer:
Offset	Size	Description	(Table 01963)
 00h	WORD	(call) 0004h (size of following results buffer)
 02h	DWORD	(big-endian) object ID of queue
SeeAlso: #01962,#02198

Top
21E3--SF65 - INT 21 - Novell NetWare - QUEUE SERVICES - DESTROY QUEUE
INT 21 - Novell NetWare - QUEUE SERVICES - DESTROY QUEUE
	AH = E3h subfn 65h
	DS:SI -> request buffer (see #01964)
	ES:DI -> reply buffer (see #01969)
Return: AL = status (00h,96h,9Ch,D0h,D1h,FFh) (see also AH=E3h/SF=64h)
	    FFh hardware failure
Desc:	abort all active jobs, detach all job servers, remove all job entries,
	  delete all job files, remove the queue object and its properties
	  from the bindery, and delete the queue's subdirectory
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=70h
SeeAlso: AX=F217h/SF=65h

Format of NetWare "Destroy Queue" request buffer:
Offset	Size	Description	(Table 01964)
 00h	WORD	0005h (length of following data)
 02h	BYTE	65h (subfunction "Destroy Queue")
 03h	DWORD	(big-endian) object ID of queue
SeeAlso: #01969

Top
21E3--SF66 - INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE CURRENT STATUS (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE CURRENT STATUS (OLD)
	AH = E3h subfn 66h
	DS:SI -> request buffer (see #01965)
	ES:DI -> reply buffer (see #01966)
Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on a workstation which is security-equivalent to a
	  member of the queue's Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=67h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=66h

Format of NetWare "Read Queue Current Status (old)" request buffer:
Offset	Size	Description	(Table 01965)
 00h	WORD	0005h (length of following data)
 02h	BYTE	66h (subfunction "Read Queue Current Status")
 03h	DWORD	(big-endian) object ID of queue
SeeAlso: #01966,#02199 at AX=F217h/SF=66h

Format of NetWare "Read Queue Current Status (old)" reply buffer:
Offset	Size	Description	(Table 01966)
 00h	WORD	(call) 0085h (size of following results)
 02h	DWORD	(big-endian) object ID of queue
 06h	BYTE	status of queue (see #01967)
 07h	BYTE	number of jobs in queue (00h-FAh)
 08h	BYTE	number of servers attached to queue (00h-19h)
 09h 25 DWORDs	list of object IDs of attached servers
 6Dh 25 BYTEs	list of attached servers' stations
 86h	BYTE	(call) maximum number of servers to return
SeeAlso: #01965,#02199 at AX=F217h/SF=66h

Bitfields for NetWare queue status:
Bit(s)	Description	(Table 01967)
 0	operator disabled addition of new jobs
 1	operator refuses additional job servers attaching
 2	operator disabled job servicing
SeeAlso: #01966,#01968

Top
21E3--SF67 - INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE CURRENT STATUS (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE CURRENT STATUS (OLD)
	AH = E3h subfn 67h
	DS:SI -> request buffer (see #01968)
	ES:DI -> reply buffer (see #01969)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must have operator privileges
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=67h

Format of NetWare "Set Queue Current Status (old)" request buffer:
Offset	Size	Description	(Table 01968)
 00h	WORD	0006h (length of following data)
 02h	BYTE	67h (subfunction "Set Queue Current Status")
 03h	DWORD	(big-endian) object ID of queue
 07h	BYTE	queue status (see #01967)
SeeAlso: #01969

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01969)
 00h	WORD	(call) 0000h (no results returned)

Top
21E3--SF68 - INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE JOB AND FILE
INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE JOB AND FILE
	AH = E3h subfn 68h
	DS:SI -> request buffer (see #01970)
	ES:DI -> reply buffer (see #01972)
Return: AL = status (00h,96h,99h,9Ch,D0h-D4h,DAh,EDh,EFh-F1h,F7h,FCh,FEh,FFh)
		(see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on a workstation which is security-equivalent to a
	  member of the queue's Q_USER property
SeeAlso: AX=B807h,AH=E0h"SPOOLING",AH=E3h/SF=69h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
SeeAlso: AX=F217h/SF=68h

Format of NetWare "Create Queue Job and File" request buffer:
Offset	Size	Description	(Table 01970)
 00h	WORD	0107h (length of following data)
 02h	BYTE	68h (subfunction "Close File and Start Queue Job")
 03h	DWORD	(big-endian) object ID of queue
 07h 256 BYTEs	job structure (see #01971)
SeeAlso: #01972,#02200

Format of NetWare old-style job structure:
Offset	Size	Description	(Table 01971)
 00h	BYTE	client station
 01h	BYTE	client task number
 02h	DWORD	(big-endian) object ID of client
 06h	DWORD	(big-endian) object ID of target server
		FFFFFFFh if any server acceptable
 0Ah  6 BYTEs	target execution time (year,month,day,hour,minute,second)
		FFFFFFFFFFFFh to execute as soon as possible
 10h  6 BYTEs	job entry time (year,month,day,hour,minute,second)
 16h	WORD	(big-endian) job number
 18h	WORD	(big-endian) job type
 1Ah	BYTE	job position
 1Bh	BYTE	job control flags (see #01980)
 1Ch 14 BYTEs	ASCIZ job file name
 2Ah  6 BYTEs	job file handle
 30h	BYTE	server station
 31h	BYTE	server task number
 32h	DWORD	(big-endian) object ID of server
 36h 50 BYTEs	ASCIZ job description string
 68h 152 BYTEs	client record area
SeeAlso: #01970,#02210

Format of NetWare "Create Queue Job and File" reply buffer:
Offset	Size	Description	(Table 01972)
 00h	WORD	(call) 0036h (size of following results buffer)
 02h	BYTE	client station
 03h	BYTE	client task number
 04h	DWORD	(big-endian) object ID of client
 08h	DWORD	(big-endian) object ID of target server
 0Ch  6 BYTEs	target execution time (year,month,day,hour,minute,second)
 12h  6 BYTEs	job entry time (year,month,day,hour,minute,second)
 18h	WORD	(big-endian) job number
 1Ah	WORD	(big-endian) job type
 1Ch	BYTE	job position
 1Dh	BYTE	job control flags (see #01980)
 1Eh 14 BYTEs	ASCIZ job file name
 2Ch  6 BYTEs	job file handle
 32h	BYTE	server station
 33h	BYTE	server task number
 34h	DWORD	(big-endian) object ID of server or 00000000h
SeeAlso: #01970,#02200

Top
21E3--SF69 - INT 21 - Novell NetWare - QUEUE SERVICES - CLOSE FILE AND START QUEUE JOB (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - CLOSE FILE AND START QUEUE JOB (OLD)
	AH = E3h subfn 69h
	DS:SI -> request buffer (see #01973)
	ES:DI -> reply buffer (see #01974)
Return: AL = status (00h,96h,D0h,D1h,D3h,D5h,D6h,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on the workstation which created the job
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=69h

Format of NetWare "Close File and Start Queue Job (old)" request buffer:
Offset	Size	Description	(Table 01973)
 00h	WORD	0007h (length of following data)
 02h	BYTE	69h (subfunction "Close File and Start Queue Job")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
SeeAlso: #01974

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01974)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01973,#01975

Top
21E3--SF6A - INT 21 - Novell NetWare - QUEUE SERVICES - REMOVE JOB FROM QUEUE (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - REMOVE JOB FROM QUEUE (OLD)
	AH = E3h subfn 6Ah
	DS:SI -> request buffer (see #01975)
	ES:DI -> reply buffer (see #01974)
Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must have created the job or be an operator
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Ah

Format of NetWare "Remove Job From Queue (old)" request buffer:
Offset	Size	Description	(Table 01975)
 00h	WORD	0007h (length of following data)
 02h	BYTE	6Ah (subfunction "Remove Job From Queue (old)")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number

Top
21E3--SF6B - INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB LIST (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB LIST (OLD)
	AH = E3h subfn 6Bh
	DS:SI -> request buffer (see #01976)
	ES:DI -> reply buffer (see #01977)
Return: AL = status (00h,96h,9Ch,D0h-D3h,FCh,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on a workstation which is security-equivalent to a
	  member of the Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Bh

Format of NetWare "Get Queue Job List (old)" request buffer:
Offset	Size	Description	(Table 01976)
 00h	WORD	0005h (length of following data)
 02h	BYTE	6Bh (subfunction "Get Queue Job List (old)")
 03h	DWORD	(big-endian) object ID of queue
SeeAlso: #01977

Format of NetWare "Get Queue Job List (old)" reply buffer:
Offset	Size	Description	(Table 01977)
 00h	WORD	(call) size of following results buffer (max 1F6h)
 02h	WORD	(big-endian) job count
 04h  N WORDs	(big-endian) list of job numbers by position in queue
	WORD	maximum job numbers
SeeAlso: #01976

Top
21E3--SF6C - INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE JOB ENTRY (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE JOB ENTRY (OLD)
	AH = E3h subfn 6Ch
	DS:SI -> request buffer (see #01978)
	ES:DI -> reply buffer (see #01979)
Return: AL = status (00h,96h,D0h-D3h,D5h,FCh,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on a workstation which is security-equivalent to a
	  member of the Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Ch

Format of NetWare "Read Queue Job Entry (old)" request buffer:
Offset	Size	Description	(Table 01978)
 00h	WORD	0007h (length of following data)
 02h	BYTE	6Ch (subfunction "Read Queue Job Entry (old)")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
SeeAlso: #01979

Format of NetWare "Read Queue Job Entry (old)" reply buffer:
Offset	Size	Description	(Table 01979)
 00h	WORD	(call) 0100h (size of following results)
 02h	BYTE	client station number
 03h	BYTE	client task number
 04h	DWORD	object ID of client
 08h	DWORD	(big-endian) object ID of target server
		FFFFFFFFh if any server acceptable
 0Ch  6 BYTEs	target execution time (year,month,day,hour,minute,second)
		FFFFFFFFFFFFh if serviced as soon as possible
 12h  6 BYTEs	job entry time (year,month,day,hour,minute,second)
 18h	WORD	(big-endian) job number
 1Ah	WORD	(big-endian) job type
 1Ch	BYTE	job position
 1Dh	BYTE	job control flags (see #01980)
 1Eh 14 BYTEs	ASCIZ job filename
 2Ch  6 BYTEs	job file handle
 32h	BYTE	server station
 33h	BYTE	server task number
 34h	DWORD	object ID of server
 38h 50 BYTEs	ASCIZ job description string
 6Ah 152 BYTEs	client record area
SeeAlso: #01978

Bitfields for NetWare job control flags:
Bit(s)	Description	(Table 01980)
 3	job will be serviced automatically if connection broken
 4	job remains in queue after server aborts job
 5	client has not filled associated job file
 6	User Hold--job advances, but cannot be serviced until this is
	  cleared by user or operator
 7	Operator Hold--job advances, but cannot be serviced until this is
	  cleared by an operator
SeeAlso: #01979

Top
21E3--SF6D - INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB ENTRY (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB ENTRY (OLD)
	AH = E3h subfn 6Dh
	DS:SI -> request buffer (see #01981)
	ES:DI -> reply buffer (see #01983)
Return: AL = status (00h,96h,D0h,D1h,D5h,D7h,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be an operator or the user who created the job
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Eh
SeeAlso: AX=F217h/SF=6Dh

Format of NetWare "Change Queue Job Entry" request buffer:
Offset	Size	Description	(Table 01981)
 00h	WORD	0105h (length of following data)
 02h	BYTE	6Dh (subfunction "Change Queue Job Entry")
 03h	DWORD	(big-endian) object ID of queue
 07h 256 BYTEs	job structure (see #01971)
SeeAlso: #01983

Top
21E3--SF6E - INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB POSITION
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB POSITION
	AH = E3h subfn 6Eh
	DS:SI -> request buffer (see #01982)
	ES:DI -> reply buffer (see #01983)
Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be an operator
	if the specified position is greater than the number of jobs in the
	  queue, the job is placed at the end of the queue
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Dh
SeeAlso: AX=F217h/SF=6Eh

Format of NetWare "Change Queue Job Position" request buffer:
Offset	Size	Description	(Table 01982)
 00h	WORD	0008h (length of following data)
 02h	BYTE	6Eh (subfunction "Change Queue Job Position")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
 09h	BYTE	new position in queue
		(01h = first, FAh [250] = last position in full queue)
SeeAlso: #01983

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01983)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01981,#01982,#01984

Top
21E3--SF6F - INT 21 - Novell NetWare - QUEUE SERVICES - ATTACH QUEUE SERVER TO QUEUE
INT 21 - Novell NetWare - QUEUE SERVICES - ATTACH QUEUE SERVER TO QUEUE
	AH = E3h subfn 6Fh
	DS:SI -> request buffer (see #01984)
	ES:DI -> reply buffer (see #01983)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,DAh,DBh,FEh,FFh)
		(see also AH=E3h/SF=64h)
	    FFh bindery failure, or no such property, or no such member
Desc:	attach the calling job server to the specified queue
Notes:	this function is supported by Advanced NetWare 2.1+
	a queue may have up to 25 job servers attached
	the calling workstation must be security-equivalent to a member of the
	  queue's Q_SERVERS property
SeeAlso: AH=E3h/SF=70h,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=6Fh

Format of NetWare "Attach Queue Server to Queue" request buffer:
Offset	Size	Description	(Table 01984)
 00h	WORD	0005h (length of following data)
 02h	BYTE	6Fh (subfunction "Attach Queue Server To Queue")
 03h	DWORD	(big-endian) object ID of queue
SeeAlso: #01983,#01985

Top
21E3--SF70 - INT 21 - Novell NetWare - QUEUE SERVICES - DETACH QUEUE SERVER FROM QUEUE
INT 21 - Novell NetWare - QUEUE SERVICES - DETACH QUEUE SERVER FROM QUEUE
	AH = E3h subfn 70h
	DS:SI -> request buffer (see #01985)
	ES:DI -> reply buffer (see #01983)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D2h,FEh,FFh) (see #01961)
Desc:	remove the calling job server from the specified queue's list of
	  servers
Notes:	this function is supported by Advanced NetWare 2.1+
	the caller must have previously attached itself to the queue
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=70h

Format of NetWare "Detach Queue Server From Queue" request buffer:
Offset	Size	Description	(Table 01985)
 00h	WORD	0005h (length of following data)
 02h	BYTE	70h (subfunction "Detach Queue Server From Queue")
 03h	DWORD	(big-endian) object ID of queue
SeeAlso: #01983,#01984

Top
21E3--SF71 - INT 21 - Novell NetWare - QUEUE SERVICES - SERVICE QUEUE JOB AND OPEN FILE
INT 21 - Novell NetWare - QUEUE SERVICES - SERVICE QUEUE JOB AND OPEN FILE
	AH = E3h subfn 71h
	DS:SI -> request buffer (see #01986)
	ES:DI -> reply buffer (see #01972)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh)
		(see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	the caller must be on a workstation which is security-equivalent to a
	  member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=71h

Format of NetWare "Service Queue Job and Open File" request buffer:
Offset	Size	Description	(Table 01986)
 00h	WORD	0007h (length of following data)
 02h	BYTE	71h (subfunction "Service Queue Job and Open File")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) target job type
		FFFFh any
SeeAlso: #01972,#01987

Top
21E3--SF72 - INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB AND FILE
INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB AND FILE
	AH = E3h subfn 72h
	DS:SI -> request buffer (see #01987)
	ES:DI -> reply buffer (see #01989)
Return: AL = status (00h,96h,D0h,D1h,D6h) (see #01961)
Desc:	inform the Queue Management System (QMS) that the queue server has
	  completed a job
Notes:	this function is supported by Advanced NetWare 2.1+
	the caller must be a job server which has previously obtained a job
	  for servicing
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=72h

Format of NetWare "Finish Servicing Queue Job and File (old)" request buffer:
Offset	Size	Description	(Table 01987)
 00h	WORD	000Bh (length of following data)
 02h	BYTE	72h (subfunction "Finish Servicing Queue Job and File (old)")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
 09h	DWORD	(big-endian) charge
SeeAlso: #01989,#01986,#01998

Top
21E3--SF73 - INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB AND FILE
INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB AND FILE
	AH = E3h subfn 73h
	DS:SI -> request buffer (see #01988)
	ES:DI -> reply buffer (see #01989)
Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #01961)
Desc:	inform the Queue Management System (QMS) that the queue server is
	  unable to service a previously-accepted job
Notes:	this function is supported by Advanced NetWare 2.1+
	this is an old version of the call (see AH=E3h/SF=84h)
	only a job server which previously accepted a job for servicing may
	  call this function
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=76h,AH=E3h/SF=84h
SeeAlso: AX=F217h/SF=73h

Format of NetWare "Abort Servicing Queue Job and File (old)" request buffer:
Offset	Size	Description	(Table 01988)
 00h	WORD	0007h (length of following data)
 02h	BYTE	73h (subfunction "Abort Servicing Queue Job and File (old)")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
SeeAlso: #01989,#01987

Format of NetWare reply buffer:
Offset	Size	Description	(Table 01989)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01987,#01988,#01990,#01991

Top
21E3--SF74 - INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE TO CLIENT RIGHTS (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE TO CLIENT RIGHTS (OLD)
	AH = E3h subfn 74h
	DS:SI -> request buffer (see #01990)
	ES:DI -> reply buffer (see #01989)
Return: AL = status (00h,96h,D0h,D1h,D5h,D9h) (see #01961)
Desc:	temporarily assume the login identity of the client submitting the
	  job being serviced
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be a job server which has obtained a job for servicing
SeeAlso: AH=E3h/SF=75h,AX=F217h/SF=74h

Format of NetWare "Change to Client Rights (old)" request buffer:
Offset	Size	Description	(Table 01990)
 00h	WORD	0007h (length of following data)
 02h	BYTE	74h (subfunction "Change To Client Rights (old)")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
SeeAlso: #01989,#01991

Top
21E3--SF75 - INT 21 - Novell NetWare - QUEUE SERVICES - RESTORE QUEUE SERVER RIGHTS
INT 21 - Novell NetWare - QUEUE SERVICES - RESTORE QUEUE SERVER RIGHTS
	AH = E3h subfn 75h
	DS:SI -> request buffer (see #01991)
	ES:DI -> reply buffer (see #01989)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh) (see #01961)
Desc:	restore server's own identity after assuming the login identity of the
	  client submitting the job being serviced
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be a job server which has previously changed its identity
SeeAlso: AH=E3h/SF=74h,AX=F217h/SF=75h

Format of NetWare "Restore Queue Server Rights" request buffer:
Offset	Size	Description	(Table 01991)
 00h	WORD	0001h (length of following data)
 02h	BYTE	75h (subfunction "Change To Client Rights")
SeeAlso: #01989,#01990

Top
21E3--SF76 - INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS OLD
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS OLD
	AH = E3h subfn 76h
	DS:SI -> request buffer (see #01992)
	ES:DI -> reply buffer (see #01993)
Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on a workstation which is security-equivalent to a
	  member of the Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=77h,AH=E3h/SF=78h
SeeAlso: AX=F217h/SF=76h

Format of NetWare "Read Queue Server Current Status (old)" request buffer:
Offset	Size	Description	(Table 01992)
 00h	WORD	000Ah (length of following data)
 02h	BYTE	76h (subfunction "Read Queue Server Current Status (old)")
 03h	DWORD	(big-endian) object ID of queue
 07h	DWORD	(big-endian) object ID of server
 0Bh	BYTE	server station
SeeAlso: #01993

Format of NetWare "Read Queue Server Current Status (old)" reply buffer:
Offset	Size	Description	(Table 01993)
 00h	WORD	(call) 0040h (size of following results)
 02h 64 BYTEs	server status record (format depends on server)
		first four bytes should contain estimated "price" for an
		  average job
SeeAlso: #01992,#02203

Top
21E3--SF77 - INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE SERVER CURRENT STATUS
INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE SERVER CURRENT STATUS
	AH = E3h subfn 77h
	DS:SI -> request buffer (see #01994)
	ES:DI -> reply buffer (see #01995)
Return: AL = status (00h,96h,9Ch,D0h,D1h,FEh,FFh) (see #01961)
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be a job server which has attached itself to the queue
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=76h,AH=E3h/SF=78h
SeeAlso: AX=F217h/SF=77h

Format of NetWare "Set Queue Server Current Status" request buffer:
Offset	Size	Description	(Table 01994)
 00h	WORD	0045h (length of following data)
 02h	BYTE	77h (subfunction "Set Queue Server Current Status")
 03h	DWORD	(big-endian) object ID of queue
 07h 64 BYTEs	server status record (format depends on server)
		first four bytes should contain estimated "price" for an
		  average job
SeeAlso: #01995

Format of NetWare "Set Queue Server Current Status" reply buffer:
Offset	Size	Description	(Table 01995)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01994

Top
21E3--SF78 - INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB'S FILE SIZE (OLD)
INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB'S FILE SIZE (OLD)
	AH = E3h subfn 78h
	DS:SI -> request buffer (see #01996)
	ES:DI -> reply buffer (see #01997)
Return: AL = status (see also #01961)
	    00h successful
Notes:	this function is supported by Advanced NetWare 2.1+
	caller must be on a workstation which is security-equivalent to a
	  member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=71h,AX=F217h/SF=78h

Format of NetWare "Get Queue Job's File Size (old)" request buffer:
Offset	Size	Description	(Table 01996)
 00h	WORD	0007h (length of following data)
 02h	BYTE	78h (subfunction "Get Queue Job's File Size (old)")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
SeeAlso: #01997,#02204 at AX=F217h/SF=78h

Format of NetWare "Get Queue Job's File Size (old)" reply buffer:
Offset	Size	Description	(Table 01997)
 00h	WORD	(call) 000Ah (size of following results)
 02h	DWORD	(big-endian) object ID of queue
 06h	WORD	(big-endian) job number
 08h	DWORD	(big-endian) size of job file in bytes
SeeAlso: #01996,#02204 at AX=F217h/SF=78h

Top
21E3--SF83 - INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB
INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB
	AH = E3h subfn 83h
	DS:SI -> request buffer (see #01998)
	ES:DI -> reply buffer (see #01999)
Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #01961)
Desc:	inform the Queue Management System (QMS) that the queue server has
	 completed servicing a previously-accepted job
Notes:	this function is supported by Advanced NetWare 3.1+
	this variant of Abort Servicing Queue Job allows use of the high
	  connection byte in the NCP packet header, unlike AH=E3h/SF=73h
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=84h
SeeAlso: AX=F217h/SF=83h

Format of NetWare "Finish Servicing Queue Job" request buffer:
Offset	Size	Description	(Table 01998)
 00h	WORD	0007h (length of following data)
 02h	BYTE	84h (subfunction "Abort Servicing Queue Job")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
 09h	DWORD	(big-endian) charge for job
SeeAlso: #01999,#01987

Format of NetWare "Finish Servicing Queue Job" reply buffer:
Offset	Size	Description	(Table 01999)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #01998

Top
21E3--SF84 - INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB
INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB
	AH = E3h subfn 84h
	DS:SI -> request buffer (see #02000)
	ES:DI -> reply buffer (see #02001)
Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #01961)
Desc:	inform the Queue Management System (QMS) that the queue server is
	  unable to service a previously-accepted job
Notes:	this function is supported by Advanced NetWare 3.1+
	this variant of Abort Servicing Queue Job allows use of the high
	  connection byte in the NCP packet header, unlike AH=E3h/SF=73h
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=84h

Format of NetWare "Abort Servicing Queue Job" request buffer:
Offset	Size	Description	(Table 02000)
 00h	WORD	0007h (length of following data)
 02h	BYTE	84h (subfunction "Abort Servicing Queue Job")
 03h	DWORD	(big-endian) object ID of queue
 07h	WORD	(big-endian) job number
SeeAlso: #02001

Format of NetWare "Abort Servicing Queue Job" reply buffer:
Offset	Size	Description	(Table 02001)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #02000

Top
21E3--SF96 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - GET ACCOUNT STATUS
INT 21 - Novell NetWare - ACCOUNTING SERVICES - GET ACCOUNT STATUS
	AH = E3h subfn 96h
	DS:SI -> request buffer (see #02003)
	ES:DI -> reply buffer (see #02004)
Return: AL = status (00h,C0h,C1h) (see #02002)
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=97h,AH=E3h/SF=98h,AH=E3h/SF=99h,AX=F217h/SF=96h

(Table 02002)
Values for NetWare function status:
 00h	successful
 C0h	no account privileges
 C1h	no account balance
 C2h	credit limit exceeded
 C3h	too many holds on account
 C6h	no console rights
SeeAlso: #01961

Format of NetWare "Get Account Status" request buffer:
Offset	Size	Description	(Table 02003)
 00h	WORD	length of following data (max 33h)
 02h	BYTE	96h (subfunction "Get Account Status")
 03h	WORD	(big-endian) type of bindery object
 05h	BYTE	length of object name (01h to 2Fh)
 06h  N BYTEs	object name
SeeAlso: #02004,#02224 at AX=F217h/SF=96h

Format of NetWare "Get Account Status" reply buffer:
Offset	Size	Description	(Table 02004)
 00h	WORD	(call) length of following buffer space
 02h	DWORD	(big-endian) account balance
 06h	DWORD	(big-endian) credit limit
		signed number indicating lowest allowable account balance
 0Ah 120 BYTEs	reserved
 82h	DWORD	(big-endian) object ID, server 1
 86h	DWORD	(big-endian) hold amount, server 1
	...
 F8h	DWORD	(big-endian) object ID, server 16
 FCh	DWORD	(big-endian) hold amount, server 16
Note:	the reply buffer lists the servers which have placed holds on a portion
	  of the account balance, and the amount reserved by each
SeeAlso: #02003,#02224 at AX=F217h/SF=96h

Top
21E3--SF97 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT CHARGE
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT CHARGE
	AH = E3h subfn 97h
	DS:SI -> request buffer (see #02005)
	ES:DI -> reply buffer (see #02007)
Return: AL = status (00h,C0h-C2h) (see #02002)
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=98h,AX=F217h/SF=97h

Format of NetWare "Submit Account Charge" request buffer:
Offset	Size	Description	(Table 02005)
 00h	WORD	length of following data (max 13Fh)
 02h	BYTE	97h (subfunction "Submit Account Charge")
 03h	WORD	(big-endian) service type
 05h	DWORD	(big-endian) amount to be charged to account
 09h	DWORD	(big-endian) amount of prior hold to be cancelled
 0Dh	WORD	(big-endian) type of bindery object
 0Fh	WORD	(big-endian) type of comment
		8000h-FFFFh reserved for experimental use
 11h	BYTE	length of object's name
 12h  N BYTEs	object name
	BYTE	length of comment
      N BYTEs	comment
SeeAlso: #02007

Top
21E3--SF98 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT HOLD
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT HOLD
	AH = E3h subfn 98h
	DS:SI -> request buffer (see #02006)
	ES:DI -> reply buffer (see #02007)
Return: AL = status (00h,C0h-C3h) (see #02002)
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=97h,AX=F217h/SF=98h

Format of NetWare "Submit Account Hold" request buffer:
Offset	Size	Description	(Table 02006)
 00h	WORD	length of following data (max 37h)
 02h	BYTE	98h (subfunction "Submit Account Hold")
 03h	DWORD	(big-endian) amount of account balance to reserve
 07h	WORD	(big-endian) type of bindery object
 09h	BYTE	length of object's name
 0Ah  N BYTEs	object name
SeeAlso: #02007

Format of NetWare reply buffer:
Offset	Size	Description	(Table 02007)
 00h	WORD	0000h (no data returned)
SeeAlso: #02005,#02006,#02008,#02009

Top
21E3--SF99 - INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT NOTE
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT NOTE
	AH = E3h subfn 99h
	DS:SI -> request buffer (see #02008)
	ES:DI -> reply buffer (see #02007)
Return: AL = status (00h,C0h) (see #02002)
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AX=F217h/SF=99h

Format of NetWare "Submit Account Note" request buffer:
Offset	Size	Description	(Table 02008)
 00h	WORD	length of following data (max 137h)
 02h	BYTE	99h (subfunction "Submit Account Note")
 03h	WORD	(big-endian) type of service
 05h	WORD	(big-endian) type of bindery object
 07h	WORD	(big-endian) type of comment
		8000h-FFFFh reserved for experimental use
 09h	BYTE	length of object's name
 0Ah  N BYTEs	object name
	BYTE	length of comment
      N BYTEs	comment
SeeAlso: #02007

Top
21E3--SFC8 - INT 21 - Novell NetWare - FILE SERVER - CHECK CONSOLE PRIVILEGES
INT 21 - Novell NetWare - FILE SERVER - CHECK CONSOLE PRIVILEGES
	AH = E3h subfn C8h
	DS:SI -> request buffer (see #02009)
	ES:DI -> reply buffer (see #02007)
Return: AL = status (00h,C6h) (see #02002)
Desc:	determine whether the caller is a console operator
Notes:	this function is supported by Advanced NetWare 2.1+
	NetWare determines console privileges by checking the file server's
	  OPERATOR property for the caller's object ID
SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h,AX=F217h/SF=C8h

Format of NetWare "Check Console Privileges" request buffer:
Offset	Size	Description	(Table 02009)
 00h	WORD	0001h (length of following data)
 02h	BYTE	C8h (subfunction "Check Console Privileges")
SeeAlso: #02007

Top
21E3--SFC9 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DESCRIPTION STRINGS
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DESCRIPTION STRINGS
	AH = E3h subfn C9h
	DS:SI -> request buffer (see #02010)
	ES:DI -> reply buffer (see #02011)
Return: AL = status
	    00h successful
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must be attached to the file server
SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E8h,AX=F217h/SF=C9h

Format of NetWare "Get File Server Description Strings" request buffer:
Offset	Size	Description	(Table 02010)
 00h	WORD	0001h (length of following data)
 02h	BYTE	C9h (subfunction "Get File Server Description Strings")
SeeAlso: #02011,#02225 at AX=F217h/SF=C9h

Format of NetWare "Get File Server Description Strings" reply buffer:
Offset	Size	Description	(Table 02011)
 00h	WORD	(call) 0200h (size of following results buffer)
 02h	var	ASCIZ name of company distributing this copy of NetWare
	var	ASCIZ version and revision
      9 BYTEs	ASCIZ revision date (mm/dd/yy)
	var	ASCIZ copyright notice
SeeAlso: #02010,#02225 at AX=F217h/SF=C9h

Top
21E3--SFCA - INT 21 - Novell NetWare - FILE SERVER - SET FILE SERVER DATE AND TIME
INT 21 - Novell NetWare - FILE SERVER - SET FILE SERVER DATE AND TIME
	AH = E3h subfn CAh
	DS:SI -> request buffer (see #02012)
	ES:DI -> reply buffer (see #02014)
Return: AL = status (00h,C6h) (see #02002)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=2Bh"DATE",AH=2Dh"TIME",AH=E3h/SF=C8h,AH=E7h"Novell",AX=F217h/SF=CAh
SeeAlso: AX=F214h

Format of NetWare "Set File Server Date and Time" request buffer:
Offset	Size	Description	(Table 02012)
 00h	WORD	0007h (length of following data)
 02h	BYTE	CAh (subfunction "Set File Server Date And Time")
 03h	BYTE	year (00-79 = 2000-2079, 80-99 = 1980-1999)
 04h	BYTE	month (1-12)
 05h	BYTE	day (1-31)
 06h	BYTE	hour (0-23)
 07h	BYTE	minute
 08h	BYTE	second
SeeAlso: #02014,#02106 at AX=F214h

Top
21E3--SFCB - INT 21 - Novell NetWare - FILE SERVER - DISABLE FILE SERVER LOGIN
INT 21 - Novell NetWare - FILE SERVER - DISABLE FILE SERVER LOGIN
	AH = E3h subfn CBh
	DS:SI -> request buffer (see #02013)
	ES:DI -> reply buffer (see #02014)
Return: AL = status (00h,C6h) (see #02002)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CCh,AH=E3h/SF=D3h,AX=F217h/SF=CBh

Format of NetWare "Disable File Server Login" request buffer:
Offset	Size	Description	(Table 02013)
 00h	WORD	0001h (length of following data)
 02h	BYTE	CBh (subfunction "Disable File Server Login")
SeeAlso: #02014,#02015

Format of NetWare reply buffer:
Offset	Size	Description	(Table 02014)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #02012,#02013,#02015

Top
21E3--SFCC - INT 21 - Novell NetWare - FILE SERVER - ENABLE FILE SERVER LOGIN
INT 21 - Novell NetWare - FILE SERVER - ENABLE FILE SERVER LOGIN
	AH = E3h subfn CCh
	DS:SI -> request buffer (see #02015)
	ES:DI -> reply buffer (see #02014)
Return: AL = status (00h,C6h) (see #02002)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AX=F217h/SF=CCh

Format of NetWare "Enable File Server Login" request buffer:
Offset	Size	Description	(Table 02015)
 00h	WORD	0001h (length of following data)
 02h	BYTE	CCh (subfunction "Enable File Server Login")
SeeAlso: #02014

Top
21E3--SFCD - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LOGIN STATUS
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LOGIN STATUS
	AH = E3h subfn CDh
	DS:SI -> request buffer (see #02016)
	ES:DI -> reply buffer (see #02017)
Return: AL = status (00h,C6h) (see #02002)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CCh

Format of NetWare "Get File Server Login Status" request buffer:
Offset	Size	Description	(Table 02016)
 00h	WORD	0001h (length of following data)
 02h	BYTE	CDh (subfunction "Get File Server Login Status")
SeeAlso: #02017,#02226 at AX=F217h/SF=CDh

Format of NetWare "Get File Server Login Status" reply buffer:
Offset	Size	Description	(Table 02017)
 00h	WORD	(call) 0001h (size of following results buffer)
 02h	BYTE	login state (00h disabled, 01h enabled)
SeeAlso: #02016,#02226 at AX=F217h/SF=CDh

Top
21E3--SFCE - INT 21 - Novell NetWare - FILE SERVICES - PURGE ALL ERASED FILES
INT 21 - Novell NetWare - FILE SERVICES - PURGE ALL ERASED FILES
	AH = E3h subfn CEh
	DS:SI -> request buffer (see #02018)
	ES:DI -> reply buffer (see #02020)
Return: AL = status (00h,C6h) (see #02002)
Desc:	all files marked for deletion on the file server are purged, regardless
	  of which workstation actually erased them
Notes:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
	the calling workstation must have console operator privileges
SeeAlso: AH=13h,AH=E2h/SF=10h,AH=E3h/SF=C8h,AX=F217h/SF=CEh,AX=F244h

Format of NetWare "Purge All Erased Files" request buffer:
Offset	Size	Description	(Table 02018)
 00h	WORD	0001h (length of following data)
 02h	BYTE	CEh (subfunction "Purge All Erased Files")
SeeAlso: #02020

Top
21E3--SFCF - INT 21 - Novell NetWare - FILE SERVER - DISABLE TRANSACTION TRACKING
INT 21 - Novell NetWare - FILE SERVER - DISABLE TRANSACTION TRACKING
	AH = E3h subfn CFh
	DS:SI -> request buffer (see #02019)
	ES:DI -> reply buffer (see #02020)
Return: AL = status (00h,C6h) (see #02002)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D0h

Format of NetWare "Disable Transaction Tracking" request buffer:
Offset	Size	Description	(Table 02019)
 00h	WORD	0001h (length of following data)
 02h	BYTE	CFh (subfunction "Disable Transaction Tracking")
SeeAlso: #02020,#02021

Format of NetWare reply buffer:
Offset	Size	Description	(Table 02020)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #02018,#02019,#02021

Top
21E3--SFD0 - INT 21 - Novell NetWare - FILE SERVER - ENABLE TRANSACTION TRACKING
INT 21 - Novell NetWare - FILE SERVER - ENABLE TRANSACTION TRACKING
	AH = E3h subfn D0h
	DS:SI -> request buffer (see #02021)
	ES:DI -> reply buffer (see #02020)
Return: AL = status (00h,C6h) (see #02025)
Desc:	restart transaction tracking after being stopped either explicitly by
	  AH=E3h/SF=CFh or automatically due to a full transaction volume
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AX=F217h/SF=D0h

Format of NetWare "Enable Transaction Tracking" request buffer:
Offset	Size	Description	(Table 02021)
 00h	WORD	0001h (length of following data)
 02h	BYTE	D0h (subfunction "Enable Transaction Tracking")
SeeAlso: #02020,#02019

Top
21E3--SFD1 - INT 21 - Novell NetWare - FILE SERVER - SEND CONSOLE BROADCAST
INT 21 - Novell NetWare - FILE SERVER - SEND CONSOLE BROADCAST
	AH = E3h subfn D1h
	DS:SI -> request buffer (see #02022)
	ES:DI -> reply buffer (see #02024)
Return: AL = status (00h,C6h) (see #02025)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
	the broadcast message will not be received by workstations which have
	  disabled broadcasts with AH=E1h/SF=02h
SeeAlso: AH=E1h/SF=02h,AH=E1h/SF=09h,AH=E3h/SF=C8h,AH=E3h/SF=D3h
SeeAlso: AX=F217h/SF=D1h

Format of NetWare "Send Console Broadcast" request buffer:
Offset	Size	Description	(Table 02022)
 00h	WORD	length of following data (max A2h)
 02h	BYTE	D1h (subfunction "Send Console Broadcast")
 03h	BYTE	number of connections to receive message
		00h = all, else specific list below
 04h  N BYTEs	connection list
	BYTE	length of message (max 3Ch)
      N BYTEs	message
SeeAlso: #02024

Top
21E3--SFD2 - INT 21 - Novell NetWare - FILE SERVER - CLEAR CONNECTION NUMBER
INT 21 - Novell NetWare - FILE SERVER - CLEAR CONNECTION NUMBER
	AH = E3h subfn D2h
	DS:SI -> request buffer (see #02023)
	ES:DI -> reply buffer (see #02024)
Return: AL = status (00h,C6h) (see #02025)
Desc:	close the open files and release all file locks for a connection,
	  abort transactions if a TTS file server, and detach from the file
	  server
Notes:	this function is supported by Advanced NetWare 2.1+
	the caller must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h,AX=F217h/SF=D2h,AX=F217h/SF=FEh

Format of NetWare "Clear Connection Number" request buffer:
Offset	Size	Description	(Table 02023)
 00h	WORD	0002h (length of following data)
 02h	BYTE	D2h (subfunction "Clear Connection Number")
 03h	BYTE	connection number
SeeAlso: #02024,#02277

Format of NetWare reply buffer:
Offset	Size	Description	(Table 02024)
 00h	WORD	(call) 0000h (no results returned)
SeeAlso: #02022,#02023,#02026

Top
21E3--SFD3 - INT 21 - Novell NetWare - FILE SERVER - DOWN FILE SERVER
INT 21 - Novell NetWare - FILE SERVER - DOWN FILE SERVER
	AH = E3h subfn D3h
	DS:SI -> request buffer (see #02026)
	ES:DI -> reply buffer (see #02024)
Return: AL = status (00h,C6h,FFh) (see #02025)
Desc:	take down the file server
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CFh,AH=E3h/SF=D1h

(Table 02025)
Values for NetWare function status:
 00h	successful
 C6h	no console rights
 FFh	files open
SeeAlso: #02002,#02053

Format of NetWare "Down File Server" request buffer:
Offset	Size	Description	(Table 02026)
 00h	WORD	0002h (length of following data)
 02h	BYTE	D3h (subfunction "Down File Server")
 03h	BYTE	flag: force down even if files open if nonzero
SeeAlso: #02024

Top
21E3--SFD4 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SYSTEM STATISTICS
INT 21 - Novell NetWare - FILE SERVER - GET FILE SYSTEM STATISTICS
	AH = E3h subfn D4h
	DS:SI -> request buffer (see #02027)
	ES:DI -> reply buffer (see #02028)
Return: AL = status (00h,C6h) (see #02025)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E7h,AH=E3h/SF=E8h
SeeAlso: AX=F217h/SF=D4h

Format of NetWare "Get File System Statistics" request buffer:
Offset	Size	Description	(Table 02027)
 00h	WORD	0001h (length of following data)
 02h	BYTE	D4h (subfunction "Get File System Statistics")
SeeAlso: #02028,#02227 at AX=F217h/SF=D4h

Format of NetWare "Get File System Statistics" reply buffer:
Offset	Size	Description	(Table 02028)
 00h	WORD	(call) 0028h (size of following results buffer)
 02h	DWORD	clock ticks since system started
 06h	WORD	maximum open files set by configuration
 08h	WORD	maximum files open concurrently
 0Ah	WORD	current number of open files
 0Ch	DWORD	total files opened
 10h	DWORD	total file read requests
 14h	DWORD	total file write requests
 18h	WORD	current changed FATs
 1Ah	WORD	total changed FATs
 1Ch	WORD	number of FAT write errors
 1Eh	WORD	number of fatal FAT write errors
 20h	WORD	number of FAT scan errors
 22h	WORD	maximum concurrently-indexed files
 24h	WORD	current number of indexed files
 26h	WORD	number of attached indexed files
 28h	WORD	number of indexed files available
Note:	all fields except the first are big-endian
SeeAlso: #02027,#02227 at AX=F217h/SF=D4h

Top
21E3--SFD5 - INT 21 - Novell NetWare - FILE SERVER - GET TRANSACTION TRACKING STATISTICS
INT 21 - Novell NetWare - FILE SERVER - GET TRANSACTION TRACKING STATISTICS
	AH = E3h subfn D5h
	DS:SI -> request buffer (see #02029)
	ES:DI -> reply buffer (see #02030)
Return: AL = status (00h,C6h) (see #02025)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AH=E3h/SF=D0h,AH=E3h/SF=E8h
SeeAlso: AX=F217h/SF=D5h

Format of NetWare "Get Transaction Tracking Statistics" request buffer:
Offset	Size	Description	(Table 02029)
 00h	WORD	0001h (length of following data)
 02h	BYTE	D5h (subfunction "TTS Get Statistics")
SeeAlso: #02030,#02228 at AX=F217h/SF=D5h

Format of NetWare "Get Transaction Tracking Statistics" reply buffer:
Offset	Size	Description	(Table 02030)
 00h	WORD	(call) length of following results buffer (max 1BCh)
 02h	DWORD	(big-endian) clock ticks since system started
 06h	BYTE	transaction tracking supported if nonzero
		(all following fields are invalid if zero)
 07h	BYTE	transaction tracking enabled
 08h	WORD	(big-endian) transaction volume number
 0Ah	WORD	(big-endian) maximum simultaneous transactions configured
 0Ch	WORD	(big-endian) maximum simultaneous transactions since startup
 0Eh	WORD	(big-endian) current transactions in progress
 10h	DWORD	(big-endian) total transactions performed
 14h	DWORD	(big-endian) total write transactions
 18h	DWORD	(big-endian) total transactions backed out
 1Ch	WORD	(big-endian) number of unfilled backout requests
 1Eh	WORD	(big-endian) disk blocks used for transaction tracking
 20h	DWORD	(big-endian) blocks allocated for tracked-file FATs
 24h	DWORD	(big-endian) number of file size changes during a transaction
 28h	DWORD	(big-endian) number of file truncations during a transaction
 2Ch	BYTE	number of records following
 2Dh	Active Transaction Records [array]
	Offset	Size	Description
	 00h	BYTE	logical connection number
	 01h	BYTE	task number
SeeAlso: #02029,#02228 at AX=F217h/SF=D5h

Top
21E3--SFD6 - INT 21 - Novell NetWare - FILE SERVER - GET DISK CACHE STATISTICS
INT 21 - Novell NetWare - FILE SERVER - GET DISK CACHE STATISTICS
	AH = E3h subfn D6h
	DS:SI -> request buffer (see #02031)
	ES:DI -> reply buffer (see #02032)
Return: AL = status (00h,C6h) (see #02025)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D5h,AH=E3h/SF=D8h,AH=E3h/SF=D9h,AH=E3h/SF=E6h
SeeAlso: AX=F217h/SF=D6h

Format of NetWare "Get Disk Cache Statistics" request buffer:
Offset	Size	Description	(Table 02031)
 00h	WORD	0001h (length of following data)
 02h	BYTE	D6h (subfunction "Get Disk Cache Statistics")
SeeAlso: #02032,#02229 at AX=F217h/SF=D6h

Format of NetWare "Get Disk Cache Statistics" reply buffer:
Offset	Size	Description	(Table 02032)
 00h	WORD	(call) 004Eh (length of following results buffer)
 02h	DWORD	clock ticks since system started
 06h	WORD	number of cache buffers
 08h	WORD	size of cache buffer in bytes
 0Ah	WORD	number of dirty cache buffers
 0Ch	DWORD	number of cache read requests
 10h	DWORD	number of cache write requests
 14h	DWORD	number of cache hits
 18h	DWORD	number of cache misses
 1Ch	DWORD	number of physical read requests
 20h	DWORD	number of physical write requests
 24h	WORD	number of physical read errors
 26h	WORD	number of physical write errors
 28h	DWORD	cache get requests
 2Ch	DWORD	cache full write requests
 30h	DWORD	cache partial write requests
 34h	DWORD	background dirty writes
 38h	DWORD	background aged writes
 3Ch	DWORD	total cache writes
 40h	DWORD	number of cache allocations
 44h	WORD	thrashing count
 46h	WORD	number of times LRU block was dirty
 48h	WORD	number of reads on cache blocks not yet filled by writes
 4Ah	WORD	number of times a fragmented write occurred
 4Ch	WORD	number of cache hits on unavailable block
 4Eh	WORD	number of times a cache block was scrapped
Note:	all fields except the first are big-endian
SeeAlso: #02031,#02229 at AX=F217h/SF=D6h

Top
21E3--SFD7 - INT 21 - Novell NetWare - FILE SERVER - GET DRIVE MAPPING TABLE
INT 21 - Novell NetWare - FILE SERVER - GET DRIVE MAPPING TABLE
	AH = E3h subfn D7h
	DS:SI -> request buffer (see #02033)
	ES:DI -> reply buffer (see #02034)
Return: AL = status (00h,C6h) (see #02025)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
SeeAlso: AX=F217h/SF=D7h

Format of NetWare "Get Drive Mapping Table" request buffer:
Offset	Size	Description	(Table 02033)
 00h	WORD	0001h (length of following data)
 02h	BYTE	D7h (subfunction "Get Drive Mapping Table")
SeeAlso: #02034,#02230 at AX=F217h/SF=D7h

Format of NetWare "Get Drive Mapping Table" reply buffer:
Offset	Size	Description	(Table 02034)
 00h	WORD	(call) 00ECh (length of following results buffer)
 02h	DWORD	(big-endian) clock tick elapsed since system started
 06h	BYTE	fault tolerance (SFT) level
 07h	BYTE	number of logical drives attached to server
 08h	BYTE	number of physical drives attached to server
 09h  5 BYTEs	disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
		  04h disk coprocessor drive, 32h-FFh value-added drive types)
 0Eh	WORD	(big-endian) number of outstanding controller commands
 10h 32 BYTEs	drive mapping table (FFh = no such drive)
 30h 32 BYTEs	drive mirror table (secondary physical drive, FFh = none)
 50h 32 BYTEs	dead mirror table (last drive mapped to, FFh if never mirrored)
 70h	BYTE	physical drive being remirrored (FFh = none)
 71h	BYTE	reserved
 72h	DWORD	(big-endian) remirrored block
 76h 60 BYTEs	SFT error table (internal error counters)
SeeAlso: #02033,#02230 at AX=F217h/SF=D7h

Top
21E3--SFD8 - INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL DISK STATISTICS
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL DISK STATISTICS
	AH = E3h subfn D8h
	DS:SI -> request buffer (see #02035)
	ES:DI -> reply buffer (see #02036)
Return: AL = status (00h,C6h) (see #02025)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E9h,AX=F217h/SF=D8h

Format of NetWare "Get Physical Disk Statistics" request buffer:
Offset	Size	Description	(Table 02035)
 00h	WORD	0002h (length of following data)
 02h	BYTE	D8h (subfunction "Get Physical Disk Statistics")
 03h	BYTE	physical disk number
SeeAlso: #02036,#02231 at AX=F217h/SF=D8h

Format of NetWare "Get Physical Disk Statistics" reply buffer:
Offset	Size	Description	(Table 02036)
 00h	WORD	(call) 005Dh (size of following results record)
 02h	DWORD	(big-endian) clock ticks since system started
 06h	BYTE	physical disk channel
 07h	BYTE	flag: drive removable if nonzero
 08h	BYTE	physical drive type
 09h	BYTE	drive number within controller
 0Ah	BYTE	controller number
 0Bh	BYTE	controller type
 0Ch	DWORD	(big-endian) size of drive in 4K disk blocks
 10h	WORD	(big-endian) number of cylinders on drive
 12h	BYTE	number of heads
 13h	BYTE	number of sectors per track
 14h 64 BYTEs	ASCIZ drive make and model
 54h	WORD	(big-endian) number of I/O errors
 56h	DWORD	(big-endian) start of Hot Fix table
 5Ah	WORD	(big-endian) size of Hot Fix table
 5Ch	WORD	(big-endian) number of Hot Fix blocks available
 5Eh	BYTE	flag: Hot Fix disabled if nonzero
SeeAlso: #02035,#02231 at AX=F217h/SF=D8h

Top
21E3--SFD9 - INT 21 - Novell NetWare - FILE SERVER - GET DISK CHANNEL STATISTICS
INT 21 - Novell NetWare - FILE SERVER - GET DISK CHANNEL STATISTICS
	AH = E3h subfn D9h
	DS:SI -> request buffer (see #02037)
	ES:DI -> reply buffer (see #02038)
Return: AL = status (00h,C6h) (see #02025)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D8h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
SeeAlso: AX=F217h/SF=D9h

Format of NetWare "Get Disk Channel Statistics" request buffer:
Offset	Size	Description	(Table 02037)
 00h	WORD	0002h (length of following data)
 02h	BYTE	D9h (subfunction "Get Disk Channel Statistics")
 03h	BYTE	channel number
SeeAlso: #02038,#02232 at AX=F217h/SF=D9h

Format of NetWare "Get Disk Channel Statistics" reply buffer:
Offset	Size	Description	(Table 02038)
 00h	WORD	(call) 00A8h (size of following results record)
 02h	DWORD	(big-endian) clock ticks since system started
 06h	WORD	(big-endian) channel run state (see #02039)
 08h	WORD	(big-endian) channel synchronization state (see #02040)
 0Ah	BYTE	driver type
 0Bh	BYTE	major version of driver
 0Ch	BYTE	minor version of driver
 0Dh 65 BYTEs	ASCIZ driver description
 4Eh	WORD	(big-endian) first I/O address used
 50h	WORD	(big-endian) length of first I/O address
 52h	WORD	(big-endian) second I/O address used
 54h	WORD	(big-endian) length of second I/O address
 56h  3 BYTEs	first shared memory address
 59h  2 BYTEs	length of first shared memory address
 5Bh  3 BYTEs	second shared memory address
 5Eh  2 BYTEs	length of second shared memory address
 60h	BYTE	first interrupt number in-use flag
 61h	BYTE	first interrupt number used
 62h	BYTE	second interrupt number in-use flag
 63h	BYTE	second interrupt number used
 64h	BYTE	first DMA channel in-use flag
 65h	BYTE	first DMA channel used
 66h	BYTE	second DMA channel in-use flag
 67h	BYTE	second DMA channel used
 68h	BYTE	flags
 69h	BYTE	reserved
 6Ah 80 BYTEs	ASCIZ configuration description
SeeAlso: #02037,#02232 at AX=F217h/SF=D9h

(Table 02039)
Values for channel run state:
 0000h	running
 0001h	being stopped
 0002h	stopped
 0003h	nonfunctional
SeeAlso: #02038,#02040

(Table 02040)
Values for channel synchronization state:
 0000h	not in use
 0002h	used by NetWare, no other requests
 0004h	used by NetWare, other requests
 0006h	in use, not needed by NetWare
 0008h	in use, needed by NetWare
 000Ah	channel released, NetWare should use it
SeeAlso: #02038,#02039

Top
21E3--SFDA - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S TASK INFORMATION
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S TASK INFORMATION
	AH = E3h subfn DAh
	DS:SI -> request buffer (see #02041)
	ES:DI -> reply buffer (see #02042)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h,AH=E3h/SF=E5h
SeeAlso: AX=F217h/SF=DAh

Format of NetWare "Get Connection's Task Information" request buffer:
Offset	Size	Description	(Table 02041)
 00h	WORD	0003h (length of following data)
 02h	BYTE	DAh (subfunction "Get Connection's Task Information")
 03h	WORD	(big-endian) logical connection number
SeeAlso: #02042,#02233 at AX=F217h/SF=DAh

Format of NetWare "Get Connection's Task Information" reply buffer:
Offset	Size	Description	(Table 02042)
 00h	WORD	(call) size of following results record (max 1FEh)
 02h	BYTE	lock status of connection (see #02043)
 03h	var	Lock Status Information (see #02044)
 N	BYTE	number of records following
 N+1	Active Task Information Records [array]
	Offset	Size	Description
	 00h	BYTE	task number (01h-FFh)
	 01h	BYTE	task state
			01h in TTS explicit transaction
			02h in TTS implicit transaction
			04h shared fileset lock active
SeeAlso: #02041,#02233 at AX=F217h/SF=DAh

(Table 02043)
Values for lock status of connection:
 00h	no locks
 01h	waiting on physical record lock
 02h	waiting on file lock
 03h	waiting on logical record lock
 04h	waiting on semaphore
SeeAlso: #02042,#02044

Format of Lock Status Information:
Offset	Size	Description	(Table 02044)
---lock status 00h---
 no fields
---lock status 01h---
 00h	BYTE	number of waiting task
 01h	DWORD	start address
 05h	DWORD	end address
 09h	BYTE	volume number
 0Ah	WORD	directory entry number
 0Ch 14 BYTEs	ASCIZ filename
---lock status 02h---
 00h	BYTE	number of waiting task
 01h	BYTE	volume number
 02h	WORD	directory entry number
 04h 14 BYTEs	ASCIZ filename
---lock status 03h---
 00h	BYTE	number of waiting task
 01h	BYTE	length of record name
 02h  N BYTEs	ASCIZ record name
---lock status 04h---
 00h	BYTE	number of waiting task
 01h	BYTE	length of semaphore's name
 02h  N BYTEs	ASCIZ semaphore name
SeeAlso: #02042,#02043

Top
21E3--SFDB - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S OPEN FILES (OLD)
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S OPEN FILES (OLD)
	AH = E3h subfn DBh
	DS:SI -> request buffer (see #02045)
	ES:DI -> reply buffer (see #02046)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E2h/SF=1Ah,AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DCh,AH=E3h/SF=DFh
SeeAlso: AH=E3h/SF=E1h,AX=F217h/SF=DBh

Format of NetWare "Get Connection's Open Files (old)" request buffer:
Offset	Size	Description	(Table 02045)
 00h	WORD	0005h (length of following data)
 02h	BYTE	DBh (subfunction "Get Connection's Open Files")
 03h	WORD	(big-endian) logical connection number
 05h	WORD	(big-endian) last record seen (0000h on first call)
SeeAlso: #02046,#02234 at AX=F217h/SF=DBh

Format of NetWare "Get Connection's Open Files (old)" reply buffer:
Offset	Size	Description	(Table 02046)
 00h	WORD	(call) size of following results record (max 1FEh)
 02h	WORD	next request record (place in "last record" field on next call)
		0000h if no more records
 04h	BYTE	number of records following
 05h	var	array of File Information Records (see #02047)
SeeAlso: #02045,#02234 at AX=F217h/SF=DBh

Format of NetWare File Information Record:
Offset	Size	Description	(Table 02047)
 00h	BYTE	task number
 01h	BYTE	lock flags (see #02048)
 02h	BYTE	access flags (see #02049)
 03h	BYTE	lock type
		00h no lock
		FEh file lock
		FFh locked by Begin Share File Set
 04h	BYTE	volume number (00h-1Fh)
 05h	WORD	(big-endian) directory entry number
 07h 14 BYTEs	ASCIZ filename
SeeAlso: #02046

Bitfields for lock flags:
Bit(s)	Description	(Table 02048)
 0	file is locked
 1	file opened Shareable
 2	logged
 3	file opened Normal
 6	TTS holding lock
 7	Transaction Flag set on file
SeeAlso: #02047,#02049

Bitfields for access flags:
Bit(s)	Description	(Table 02049)
 0	file open for reading by calling station
 1	file open for writing by calling station
 2	deny reads by other stations
 3	deny writes by other stations
 4	file detached
 5	TTS Holding Detach
 6	TTS Holding Open
SeeAlso: #02047,#02048

Top
21E3--SFDC - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTIONS USING A FILE
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTIONS USING A FILE
	AH = E3h subfn DCh
	DS:SI -> request buffer (see #02050)
	ES:DI -> reply buffer (see #02051)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h
SeeAlso: AX=F217h/SF=DCh

Format of NetWare "Get Connections Using a File" request buffer:
Offset	Size	Description	(Table 02050)
 00h	WORD	length of following data (max 104h)
 02h	BYTE	DCh (subfunction "Get Connections Using a File")
 03h	WORD	(big-endian) last record (0000h on first call)
 05h	BYTE	directory handle
 06h	BYTE	length of file path
 07h  N BYTEs	ASCIZ file path
SeeAlso: #02051,#02235 at AX=F217h/SF=DCh

Format of NetWare "Get Connections Using a File" reply buffer:
Offset	Size	Description	(Table 02051)
 00h	WORD	(call) size of following results record (max 1FEh)
 02h	WORD	(big-endian) count of tasks which have opened or logged file
 04h	WORD	(big-endian) count of tasks which have opened file
 06h	WORD	(big-endian) count of opens for reading
 08h	WORD	(big-endian) count of opens for writing
 0Ah	WORD	(big-endian) deny read count
 0Ch	WORD	(big-endian) deny write count
 0Eh	WORD	next request record (place in "last record" field on next call)
		0000h if no more records
 10h	BYTE	locked flag
		00h not locked exclusively
		else locked exclusively
 11h	BYTE	number of records following
 12h	var	array of File Usage Information Records (see #02052)
SeeAlso: #02050,#02235 at AX=F217h/SF=DCh

Format of NetWare File Usage Information Record:
Offset	Size	Description	(Table 02052)
 00h	WORD	(big-endian) logical connection number
 02h	BYTE	task number
 03h	BYTE	lock flags (see #02048)
 04h	BYTE	access flags (see #02049)
 05h	BYTE	lock type
		00h no lock
		FEh file lock
		FFh locked by Begin Share File Set

Top
21E3--SFDD - INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY CONN&FILE
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY CONN&FILE
	AH = E3h subfn DDh
	DS:SI -> request buffer (see #02054)
	ES:DI -> reply buffer (see #02055)
Return: AL = status (00h,C6h,FFh) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DEh,AH=E3h/SF=DFh,AX=F217h/SF=DDh

(Table 02053)
Values for NetWare function status:
 00h	successful
 C6h	no console rights
 FFh	file not open
SeeAlso: #02025,#02094

Format of NetWare "Get Phys Record Locks by Conn and File" request buffer:
Offset	Size	Description	(Table 02054)
 00h	WORD	0016h (length of following data)
 02h	BYTE	DDh (subfunction "Get Physical Record Locks by Connection and
		  File")
 03h	WORD	(big-endian) logical connection number
 05h	WORD	(big-endian) last record seen (0000h on first call)
 07h	BYTE	volume number (00h-1Fh)
 08h	WORD	(big-endian) directory handle
 0Ah 14 BYTEs	ASCIZ filename
SeeAlso: #02055,#02236 at AX=F217h/SF=DDh

Format of NetWare "Get Phys Record Locks by Conn and File" reply buffer:
Offset	Size	Description	(Table 02055)
 00h	WORD	(call) size of following results record (max 1FEh)
 02h	WORD	next request record (place in "last record" on next call)
		0000h if no more records
 04h	BYTE	number of physical record locks
 05h	BYTE	number of records following
 06h	var	array of Physical Record Lock Info records (see #02056)
SeeAlso: #02054,#02236 at AX=F217h/SF=DDh

Format of NetWare Physical Record Lock Info:
Offset	Size	Description	(Table 02056)
 00h	BYTE	task number
 01h	BYTE	lock status (see #02057)
 02h	DWORD	(big-endian) starting offset of record in file
 06h	DWORD	(big-endian) ending offset of record in file
SeeAlso: #02055

Bitfields for lock status:
Bit(s)	Description	(Table 02057)
 0	exclusive lock
 1	shareable lock
 2	logged
 6	lock held by TTS
SeeAlso: #02056

Top
21E3--SFDE - INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY FILE
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY FILE
	AH = E3h subfn DEh
	DS:SI -> request buffer (see #02058)
	ES:DI -> reply buffer (see #02059)
Return: AL = status (00h,C6h,FFh) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AX=F217h/SF=DEh

Format of NetWare "Get Physical Record Locks by File" request buffer:
Offset	Size	Description	(Table 02058)
 00h	WORD	length of following data (max 104h)
 02h	BYTE	DEh (subfunction "Get Physical Record Locks by File")
 03h	WORD	(big-endian) last record seen (0000h on first call)
 05h	BYTE	directory handle
 06h	BYTE	length of filename
 07h  N BYTEs	ASCIZ filename
SeeAlso: #02059,#02237 at AX=F217h/SF=DEh

Format of NetWare "Get Physical Record Locks by File" reply buffer:
Offset	Size	Description	(Table 02059)
 00h	WORD	(call) size of following results record (max 1FEh)
 02h	WORD	next request record (place in "last record" on next call)
		0000h if no more records
 04h	BYTE	number of physical record locks
 05h	BYTE	number of records following
 06h	var	array of Physical Record Lock Info records (see #02060)
SeeAlso: #02058,#02237 at AX=F217h/SF=DEh

Format of NetWare Physical Record Lock Info:
Offset	Size	Description	(Table 02060)
 00h	WORD	(big-endian) number of tasks logging record
 02h	WORD	(big-endian) number of tasks with shareable lock
 04h	DWORD	(big-endian) starting offset of record in file
 08h	DWORD	(big-endian) ending offset of record in file
 0Ch	WORD	(big-endian) logical connection number
 0Eh	BYTE	task number
 0Fh	BYTE	lock type
		00h none
		FEh file lock
		FFh Begin Share File Set lock
SeeAlso: #02059

Top
21E3--SFDF - INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORDS BY CONNECTION
INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORDS BY CONNECTION
	AH = E3h subfn DFh
	DS:SI -> request buffer (see #02061)
	ES:DI -> reply buffer (see #02062)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=E0h,AH=E3h/SF=E2h
SeeAlso: AX=F217h/SF=DFh

Format of NetWare "Get Logical Records by Connection" request buffer:
Offset	Size	Description	(Table 02061)
 00h	WORD	0005h (length of following data)
 02h	BYTE	DFh (subfunction "Get Logical Records By Connection")
 03h	WORD	(big-endian) logical connection number
 05h	WORD	(big-endian) last record seen (0000h on first call)
SeeAlso: #02062,#02238 at AX=F217h/SF=DFh

Format of NetWare "Get Logical Records by Connection" reply buffer:
Offset	Size	Description	(Table 02062)
 00h	WORD	(call) size of following results record (max 1FEh)
 02h	WORD	next request record (place in "last record" field on next call)
		0000h if no more locked records
 04h	BYTE	number of records following
 05h	var	array of Logical Lock Information Records (see #02063)
SeeAlso: #02061,#02238 at AX=F217h/SF=DFh

Format of NetWare Logical Lock Information Record:
Offset	Size	Description	(Table 02063)
 00h	BYTE	task number
 01h	BYTE	lock status (see #02057)
 02h	BYTE	length of logical lock's name
 03h  N BYTEs	logical lock's name
SeeAlso: #02062

Top
21E3--SFE0 - INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORD INFORMATION
INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORD INFORMATION
	AH = E3h subfn E0h
	DS:SI -> request buffer (see #02064)
	ES:DI -> reply buffer (see #02065)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
SeeAlso: AX=F217h/SF=E0h

Format of NetWare "Get Logical Record Information" request buffer:
Offset	Size	Description	(Table 02064)
 00h	WORD	length of following data (max 67h)
 02h	BYTE	E0h (subfunction "Get Logical Record Information")
 03h	WORD	(big-endian) last record seen (0000h on first call)
 05h	BYTE	length of logical record's name
 06h  N BYTEs	logical record's name
SeeAlso: #02065,#02239 at AH=E3h/SF=E0h

Format of NetWare "Get Logical Record Information" reply buffer:
Offset	Size	Description	(Table 02065)
 00h	WORD	(call) size of following results record (max 200h)
 02h	WORD	(big-endian) number of logical connections logging the record
 04h	WORD	(big-endian) number of logical connections with shareable lock
 06h	WORD	(big-endian) next request record (place in "last record" field
		  on next call)
 08h	BYTE	locked exclusively if nonzero
 09h	BYTE	number of records following
 0Ah	var	array of Task Information Records (see #02066)
SeeAlso: #02064,#02239 at AH=E3h/SF=E0h

Format of NetWare Task Information Record:
Offset	Size	Description	(Table 02066)
 00h	WORD	(big-endian) logical connection number
 02h	BYTE	task number
 03h	BYTE	lock status (see #02057)
SeeAlso: #02065

Top
21E3--SFE1 - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S SEMAPHORES
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S SEMAPHORES
	AH = E3h subfn E1h
	DS:SI -> request buffer (see #02067)
	ES:DI -> reply buffer (see #02068)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
SeeAlso: AX=F217h/SF=E1h

Format of NetWare "Get Connection's Semaphores" request buffer:
Offset	Size	Description	(Table 02067)
 00h	WORD	0005h (length of following data)
 02h	BYTE	E1h (subfunction "Get Connection's Semaphores")
 03h	WORD	(big-endian) logical connection number
 05h	WORD	(big-endian) last record seen (0000h on first call)
SeeAlso: #02068,#02240 at AX=F217h/SF=E1h

Format of NetWare "Get Connection's Semaphores" reply buffer:
Offset	Size	Description	(Table 02068)
 00h	WORD	(call) size of following results record (max 1FEh)
 02h	WORD	next request record (place in "last record" field on next call)
 04h	BYTE	number of records following
 05h	var	array of Semaphore Information Records (see #02069)
SeeAlso: #02067,#02240 at AX=F217h/SF=E1h

Format of NetWare Semaphore Information Record:
Offset	Size	Description	(Table 02069)
 00h	WORD	(big-endian) open count
 02h	BYTE	semaphore value (-128 to 127)
 03h	BYTE	task number
 04h	BYTE	lock type
 05h	BYTE	length of semaphore's name
 06h  N BYTEs	semaphore's name
     14 BYTEs	filename
SeeAlso: #02068

Top
21E3--SFE2 - INT 21 - Novell NetWare - FILE SERVER - GET SEMAPHORE INFORMATION
INT 21 - Novell NetWare - FILE SERVER - GET SEMAPHORE INFORMATION
	AH = E3h subfn E2h
	DS:SI -> request buffer (see #02070)
	ES:DI -> reply buffer (see #02071)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E1h,AX=F217h/SF=E2h

Format of NetWare "Get Semaphore Information" request buffer:
Offset	Size	Description	(Table 02070)
 00h	WORD	length of following data (max 83h)
 02h	BYTE	E2h (subfunction "Get LAN Driver's Configuration Information")
 03h	WORD	(big-endian) last record seen (0000h on first call)
 05h	BYTE	length of semaphore's name (01h-7Fh)
 06h  N BYTEs	semaphore's name
SeeAlso: #02071,#02241 at AX=F217h/SF=E2h

Format of NetWare "Get Semaphore Information" reply buffer:
Offset	Size	Description	(Table 02071)
 00h	WORD	(call) size of following results buffer (max 1FEh)
 02h	WORD	next request record (place in "last record" on next call)
		0000h if no more
 04h	WORD	(big-endian) number of logical connections opening semaphore
 06h	BYTE	semaphore value (-127 to 128)
 07h	BYTE	number of records following
 08h	var	array of Semaphore Information records (see #02072)
SeeAlso: #02071,#02241 at AX=F217h/SF=E2h

Format of NetWare Semaphore Information:
Offset	Size	Description	(Table 02072)
 00h	WORD	(big-endian) logical connection number
 02h	BYTE	task number
SeeAlso: #02071

Top
21E3--SFE3 - INT 21 - Novell NetWare - FILE SERVER - GET LAN DRIVER'S CONFIGURATION INFO
INT 21 - Novell NetWare - FILE SERVER - GET LAN DRIVER'S CONFIGURATION INFO
	AH = E3h subfn E3h
	DS:SI -> request buffer (see #02073)
	ES:DI -> reply buffer (see #02074)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E7h,AH=E3h/SF=E8h,AX=F217h/SF=E3h

Format of NetWare "Get LAN Driver's Configuration Info" request buffer:
Offset	Size	Description	(Table 02073)
 00h	WORD	0002h (length of following data)
 02h	BYTE	E3h (subfunction "Get LAN Driver's Configuration Information")
 03h	BYTE	LAN board (00h-03h)
SeeAlso: #02074,#02242 at AX=F217h/SF=E3h

Format of NetWare "Get LAN Driver's Configuration Info" reply buffer:
Offset	Size	Description	(Table 02074)
 00h	WORD	(call) 00ACh (size of following results buffer)
 02h  4 BYTEs	network number
 06h  6 BYTEs	node number
 0Ch	BYTE	LAN driver installed (00h no--remaining fields invalid)
 0Dh	BYTE	option number selected at configuration time
 0Eh 160 BYTEs	configuration text
		ASCIZ hardware type
		ASCIZ hardware settings
SeeAlso: #02073,#02242 at AX=F217h/SF=E3h

Top
21E3--SFE5 - INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S USAGE STATISTICS
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S USAGE STATISTICS
	AH = E3h subfn E5h
	DS:SI -> request buffer (see #02075)
	ES:DI -> reply buffer (see #02076)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	one must have console operator privileges to get statistics for logical
	  connections other than one's own
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=E1h
SeeAlso: AX=F217h/SF=E5h

Format of NetWare "Get Connection's Usage Statistics" request buffer:
Offset	Size	Description	(Table 02075)
 00h	WORD	0003h (length of following data)
 02h	BYTE	E5h (subfunction "Get Connection's Usage Statistics")
 03h	WORD	(big-endian) logical connection number
SeeAlso: #02076,#02243 at AX=F217h/SF=E5h

Format of NetWare "Get Connection's Usage Statistics" reply buffer:
Offset	Size	Description	(Table 02076)
 00h	WORD	(call) 0014h (size of following results record)
 02h	DWORD	(big-endian) clock ticks since server started
 06h  6 BYTEs	bytes read
 0Ch  6 BYTEs	bytes written
 12h	DWORD	(big-endian) total request packets
SeeAlso: #02075,#02243 at AX=F217h/SF=E5h

Top
21E3--SFE6 - INT 21 - Novell NetWare - FILE SERVER - GET BINDERY OBJECT DISK SPACE LEFT
INT 21 - Novell NetWare - FILE SERVER - GET BINDERY OBJECT DISK SPACE LEFT
	AH = E3h subfn E6h
	DS:SI -> request buffer (see #02077)
	ES:DI -> reply buffer (see #02078)
Return: AL = status (00h,C6h) (see #02053)
Notes:	this function is supported by Advanced NetWare 2.1+
	one must have console operator privileges to get the free space for
	  other bindery objects
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E8h,AH=E3h/SF=E9h

Format of NetWare "Get Bindery Object Disk Space Left" request buffer:
Offset	Size	Description	(Table 02077)
 00h	WORD	0005h (length of following data)
 02h	BYTE	E6h (subfunction "Get Bindery Object Disk Space Left")
 03h	DWORD	(big-endian) object ID
SeeAlso: #02078,#02244 at AX=F217h/SF=E6h

Format of NetWare "Get Bindery Object Disk Space Left" reply buffer:
Offset	Size	Description	(Table 02078)
 00h	WORD	(call) 000Fh (size of following results buffer)
 02h	DWORD	(big-endian) clock ticks elapsed since server started
 06h	DWORD	(big-endian) object ID
 0Ah	DWORD	(big-endian) 4K disk blocks available to user
 0Eh	BYTE	restrictions (00h enforced, FFh not enforced)
SeeAlso: #02077,#02244 at AX=F217h/SF=E6h

Top
21E3--SFE7 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LAN I/O STATISTICS
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LAN I/O STATISTICS
	AH = E3h subfn E7h
	DS:SI -> request buffer (see #02079)
	ES:DI -> reply buffer (see #02080)
Return: AL = status
	    00h successful
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=D3h,AH=E3h/SF=E8h
SeeAlso: AH=E7h"Novell",AX=F217h/SF=E7h

Format of NetWare "Get File Server LAN I/O Statistics" request buffer:
Offset	Size	Description	(Table 02079)
 00h	WORD	0001h (length of following data)
 02h	BYTE	E7h (subfunction "Get File Server LAN I/O Statistics")
SeeAlso: #02080,#02245 at AX=F217h/SF=E7h

Format of NetWare "Get File Server LAN I/O Statistics" reply buffer:
Offset	Size	Description	(Table 02080)
 00h	WORD	(call) 0042h (size of following results buffer)
 02h	DWORD	clock ticks since system started
 06h	WORD	total routing buffers
 08h	WORD	maximum routing buffers used
 0Ah	WORD	current routing buffers used
 0Ch	DWORD	total file service packets
 10h	WORD	number of file service packets buffered
 12h	WORD	number of invalid connection packets
 14h	WORD	packets with bad logical connection numbers
 16h	WORD	number of packets received during processing
 18h	WORD	number of requests reprocessed
 1Ah	WORD	packets with bad sequence numbers
 1Ch	WORD	number of duplicate replies sent
 1Eh	WORD	number of acknowledgements sent
 20h	WORD	number of packets with bad request types
 22h	WORD	requests to attach to ws for which a request is being processed
 24h	WORD	requests to attach from ws which is already attaching
 26h	WORD	number of forged detach requests
 28h	WORD	detach requests with bad connection number
 2Ah	WORD	requests to detach from ws for which requests pending
 2Ch	WORD	number of cancelled replies
 2Eh	WORD	packets discarded due to excessive hop count
 30h	WORD	packets discarded due to unknown net
 32h	WORD	incoming packets discarded for lack of DGroup buffer
 34h	WORD	outgoing packets discarded due to lack of buffer
 36h	WORD	received packets destined for B,C, or D side drivers
 38h	DWORD	number of NetBIOS packets propagated through net
 3Ch	DWORD	total number of non-file-service packets
 40h	DWORD	total number of routed packets
Note:	all fields except the first are big-endian
SeeAlso: #02080,#02245 at AX=F217h/SF=E7h

Top
21E3--SFE8 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER MISC INFORMATION
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER MISC INFORMATION
	AH = E3h subfn E8h
	DS:SI -> request buffer (see #02081)
	ES:DI -> reply buffer (see #02082)
Return: AL = status (00h,C6h) (see #02053)
Note:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E7h
SeeAlso: AX=F217h/SF=E8h

Format of NetWare "Get File Server Misc Information" request buffer:
Offset	Size	Description	(Table 02081)
 00h	WORD	0001h (length of following data)
 02h	BYTE	E8h (subfunction "Get File Server Misc Information")
SeeAlso: #02082,#02246 at AX=F217h/SF=E8h

Format of NetWare "Get File Server Misc Information" reply buffer:
Offset	Size	Description	(Table 02082)
 00h	WORD	(call) size of following results buffer (max 0048h)
 02h	DWORD	(big-endian) clock ticks since system started
 06h	BYTE	CPU type
		00h Motorola 68000
		01h Intel 8086, 8088, or V20
		02h Intel 80286+
 07h	BYTE	reserved
 08h	BYTE	number of service processes in server
 09h	BYTE	server utilization in percent
 0Ah	WORD	(big-endian) maximum bindery objects set by configuration
		0000h = unlimited
 0Ch	WORD	(big-endian) maximum number of bindery objects used
 0Eh	WORD	(big-endian) current number of bindery objects in use
 10h	WORD	(big-endian) total server memory in KB
 12h	WORD	(big-endian) wasted server memory in KB
		normally 0000h
 14h	WORD	number of records following (01h-03h)
 16h	var	array of Dynamic Memory Information records (see #02083)
SeeAlso: #02081,#02246 at AX=F217h/SF=E8h

Format of NetWare Dynamic Memory Information:
Offset	Size	Description	(Table 02083)
 00h	DWORD	(big-endian) total dynamic space
 04h	DWORD	(big-endian) maximum dynamic space used
 08h	DWORD	(big-endian) current dynamic space usage

Top
21E3--SFE9 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFORMATION
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFORMATION
	AH = E3h subfn E9h
	DS:SI -> request buffer (see #02084)
	ES:DI -> reply buffer (see #02085)
Return: AL = status
	    00h successful
Notes:	this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=DAh,AH=E2h/SF=15h,AX=F217h/SF=E9h

Format of NetWare "Get Volume Information" request buffer:
Offset	Size	Description	(Table 02084)
 00h	WORD	0002h (length of following data)
 02h	BYTE	E9h (subfunction "Get Volume Information")
 03h	BYTE	directory handle
SeeAlso: #02085,#02247 at AX=F217h/SF=E9h

Format of NetWare "Get Volume Information" reply buffer:
Offset	Size	Description	(Table 02085)
 00h	WORD	(call) 0028h (length of following results buffer)
 02h	DWORD	(big-endian) elapsed system time
 06h	BYTE	volume number
 07h	BYTE	logical drive number
 08h	WORD	(big-endian) sectors per block
 0Ah	WORD	(big-endian) starting block
 0Ch	WORD	(big-endian) total blocks on volume
 0Eh	WORD	(big-endian) blocks available on volume
 10h	WORD	(big-endian) total directory slots
 12h	WORD	(big-endian) directory slots available
 14h	WORD	(big-endian) maximum directory entries actually used
 16h	BYTE	flag: volume hashed if nonzero
 17h	BYTE	flag: volume cached if nonzero
 18h	BYTE	flag: volume removable if nonzero
 19h	BYTE	flag: volume mounted if nonzero
 1Ah 16 BYTEs	NUL-padded volume name
SeeAlso: #02084,#02247 at AX=F217h/SF=E9h

Top
21E4 - INT 21 O - Novell NetWare - SET FILE ATTRIBUTES (FCB)
INT 21 O - Novell NetWare - SET FILE ATTRIBUTES (FCB)
	AH = E4h
	CL = file attributes (see #02086)
	DX:DX -> FCB (see #01345 at AH=0Fh)
Return: AL = error code
Note:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
SeeAlso: AX=4301h

Bitfields for NetWare file attributes:
Bit(s)	Description	(Table 02086)
 0	read only
 1	hidden
 2	system
 7	shareable

Top
21E4 - INT 21 - VIRUS - "Anarkia" - INSTALLATION CHECK
INT 21 - VIRUS - "Anarkia" - INSTALLATION CHECK
	AH = E4h
Return: AH = 04h if resident
SeeAlso: AH=E1h"VIRUS",AH=E7h"VIRUS"

Top
21E400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
	AX = E400h
Return: AL = program status
	    00h if DoubleDOS not present
	    01h if running in visible DoubleDOS partition
	    02h if running in the invisible DoubleDOS partition
SeeAlso: AH=E5h"DoubleDOS",AX=F400h

Top
21E400 - INT 21 - OS/286, OS/386 - CHAIN TO REAL-MODE HANDLER
INT 21 - OS/286, OS/386 - CHAIN TO REAL-MODE HANDLER
	AX = E400h
	???
Return: ???
Note:	protected mode only???

Top
21E402 - INT 21 - OS/286, OS/386 - SET PROTECTED-MODE TASK GATE
INT 21 - OS/286, OS/386 - SET PROTECTED-MODE TASK GATE
	AX = E402h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=E403h

Top
21E403 - INT 21 - OS/286, OS/386 - REMOVE PROTECTED-MODE TASK GATE
INT 21 - OS/286, OS/386 - REMOVE PROTECTED-MODE TASK GATE
	AX = E403h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=E402h

Top
21E5 - INT 21 O - Novell NetWare - UPDATE FILE SIZE (FCB)
INT 21 O - Novell NetWare - UPDATE FILE SIZE (FCB)
	AH = E5h
	DS:DX -> FCB (see #01345 at AH=0Fh)
Return: AL = (unreliable) return code
Notes:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation
	on success, NetWare sets AL to zero; on errors it restores AL

Top
21E5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
	AH = E5h
Return: AL = status
	    00h no program in other partition
	    01h program in other partition is running
	    02h program in other partition is suspended
SeeAlso: AX=E400h"DoubleDOS",AH=F5h"DoubleDOS"

Top
21E500 - INT 21 - OS/286, OS/386 - HEAP MANAGEMENT STRATEGY
INT 21 - OS/286, OS/386 - HEAP MANAGEMENT STRATEGY
	AX = E500h
	???
Return: ???
SeeAlso: AX=E501h

Top
21E501 - INT 21 - OS/286, OS/386 - FORCE HEAP COMPACTION
INT 21 - OS/286, OS/386 - FORCE HEAP COMPACTION
	AX = E501h
	???
Return: ???
SeeAlso: AX=E500h

Top
21E6 - INT 21 O - Novell NetWare - COPY FILE TO FILE (FCB)
INT 21 O - Novell NetWare - COPY FILE TO FILE (FCB)
	AH = E6h
	CX:DX = number of bytes to copy
	DS:SI -> opened source FCB
	ES:DI -> opened destination FCB
Return: AL = error code
	CX = ???
	DX = ???
Note:	this function was added in NetWare 4.0, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation

Top
21E6 - INT 21 P - OS/286, OS/386 - ISSUE REAL PROCEDURE SIGNAL FROM PROTECTED MODE
INT 21 P - OS/286, OS/386 - ISSUE REAL PROCEDURE SIGNAL FROM PROTECTED MODE
	AH = E6h
	???
Return: ???
SeeAlso: AH=E2h"OS/286"

Top
21E7 - INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DATE AND TIME
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DATE AND TIME
	AH = E7h
	DS:DX -> date/time buffer (see #02087)
Return: AL = error code
	    00h successful
	    FFh unsuccessful
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
	  Alloy NTNX, and Banyan VINES
SeeAlso: AH=2Ah,AH=2Ch,AX=5FC0h,AH=E3h/SF=CAh,AX=F214h

Format of NetWare date/time buffer:
Offset	Size	Description	(Table 02087)
 00h	BYTE	year (80-99 = 1980-1999, 0-79 = 2000-2079)
 01h	BYTE	month (1=Jan)
 02h	BYTE	day
 03h	BYTE	hours
 04h	BYTE	minutes
 05h	BYTE	seconds
 06h	BYTE	day of week (0 = Sunday) (Novell and NTNX only)
SeeAlso: #02106

Top
21E7 - INT 21 - OS/286, OS/386 - CREATE CODE SEGMENT
INT 21 - OS/286, OS/386 - CREATE CODE SEGMENT
	AH = E7h
	???
Return: ???
SeeAlso: AH=E8h"OS/286",AH=E9h"OS/286",AH=EAh"OS/286"

Top
21E7 - INT 21 - VIRUS - "Spyer"/"Kiev" - INSTALLATION CHECK
INT 21 - VIRUS - "Spyer"/"Kiev" - INSTALLATION CHECK
	AH = E7h
Return: AH = 78h if resident
SeeAlso: AH=E4h"VIRUS",AX=EC59h

Top
21E8 - INT 21 O - Novell NetWare, Alloy NTNX - SET FCB RE-OPEN MODE
INT 21 O - Novell NetWare, Alloy NTNX - SET FCB RE-OPEN MODE
	AH = E8h
	DL = mode
	    00h no automatic re-open
	    01h auto re-open
Return: AL = error code
Desc:	provided backward compatibility with a bug in CP/M and early DOS vers
Note:	this function was added in NetWare 4.6, but was removed some time prior
	  to Advanced NetWare 2.15, and is no longer listed in current Novell
	  documentation

Top
21E8 - INT 21 - OS/286, OS/386 - SEGMENT CREATION
INT 21 - OS/286, OS/386 - SEGMENT CREATION
	AH = E8h
	AL = type
	    00h data segment
	    01h data window/alias
	    02h real segment
	    03h real window/alias
		CX:DX = size in bytes
		SI:BX -> start of desired memory block
		Return:	AX = selector
	    06h shareable segment
	???
Return: ???
SeeAlso: AH=E7h"OS/286",AH=E9h"OS/286"

Top
21E8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
	AH = E8h
	AL = program for which to set flags (00h this program, 01h other)
	DX = keyboard control flags (see #02088)
Return: DX = previous flags
Notes:	disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
	  disabling any of the other keystrokes disables them completely
	identical to AH=F8h
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Bitfields for DoubleDOS keyboard control flags:
Bit(s)	Description	(Table 02088)
 0	menu
 1	exchange
 2	entire keyboard enable/disable
 3	Ctrl-C
 4	Ctrl-PrtSc
 5	Alt/Erase
 6	Ctrl-Break
 7	Ctrl-NumLock
 8	shift-PrtSc
 9-13	undefined
 14	cancel key (clear keyboard buffer)
 15	suspend key
Note:	setting a enables the corresponding key or operatin, clearing a
	  disables it

Top
21E9 - INT 21 P - OS/286, OS/386 - CHANGE SEGMENTS
INT 21 P - OS/286, OS/386 - CHANGE SEGMENTS
	AH = E9h
	AL = function
	    01h change code segment parameters
	    02h change data segment parameters
	    05h adjust segment limit
	    06h change segment base address
	???
Return: ???
SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=EAh"OS/286",AH=EDh"OS/286"
SeeAlso: INT 31/AX=0007h,INT 31/AX=0008h

Top
21E9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
	AH = E9h
	AL = new priority (see #02089)
Return: AL = priority setting if AL=05h on entry
Note:	identical to AH=F9h
SeeAlso: AH=EAh"DoubleDOS",AH=EBh"DoubleDOS",AH=F9h"DoubleDOS"

(Table 02089)
Values for DoubleDOS timesharing priority:
 00h	visible program gets 70%, invisible gets 30% (default)
 01h	visible program gets 50%, invisible gets 50%
 02h	visible program gets 30%, invisible gets 70%
 03h	Top program gets 70%, bottom program gets 30%
 04h	Top program gets 30%, bottom program gets 70%
 05h	get current priority

Top
21E900 - INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY HANDLE
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY HANDLE
	AX = E900h
	DX = drive number to check (0 = A:, ..., 25 = Z:, 26 ... 31)
Return: AL = directory handle
	AH = flags (drive not mapped if none set)
	    bit 0: permanent handle
	    bit 1: temporary handle
	    bit 7: mapped to local drive
Note:	this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=01h,AH=E2h/SF=0Ah

Top
21E900 - INT 21 - VIRUS - "Dark End" - INSTALLATION CHECK
INT 21 - VIRUS - "Dark End" - INSTALLATION CHECK
	AX = E900h
Return: AX = 1234h if resident
SeeAlso: AX=DEFEh"VIRUS",AX=EC27h"VIRUS"

Top
21E905 - INT 21 - Novell NetWare shell 3.01 - MAP A FAKE ROOT DIRECTORY
INT 21 - Novell NetWare shell 3.01 - MAP A FAKE ROOT DIRECTORY
	AX = E905h
	BL = drive number (0=default, 1=A:, ...)
	DS:DX -> ASCIZ path for fake root (may include server name or be empty)
Return: CF set on error
	    AL = error code (03h,0Fh,11h) (see #01680 at AH=59h/BX=0000h)
	CF clear if successful
Note:	if drive is not currently mapped, a drive mapping will be created
SeeAlso: AX=E906h

Top
21E906 - INT 21 - Novell NetWare shell 3.01 - DELETE FAKE ROOT DIRECTORY
INT 21 - Novell NetWare shell 3.01 - DELETE FAKE ROOT DIRECTORY
	AX = E906h
	BL = drive number (0=default, 1=A:, ...)
Return: AL = completion code
Note:	drive remains mapped
SeeAlso: AX=E905h

Top
21E907 - INT 21 - Novell NetWare shell 3.01 - GET RELATIVE DRIVE DEPTH
INT 21 - Novell NetWare shell 3.01 - GET RELATIVE DRIVE DEPTH
	AX = E907h
	BL = drive number (0=default, 1=A:, ...)
Return: AL = number of directories below the fake root
	    FFh if no fake root assigned
SeeAlso: AX=E905h

Top
21E908BL00 - INT 21 - Novell NetWare shell 3.01 - SET SHOW DOTS
INT 21 - Novell NetWare shell 3.01 - SET SHOW DOTS
	AX = E908h
	BL = 00h	don't return '.' or '..' during directory scans
	   = nonzero	directory scans will return '.' or '..' entries
Return: BL = previous show-dots setting

Top
21E909 - INT 21 - Novell NetWare - NetWare shell - CONVERT DOS FILE HANDLE TO NETWARE
INT 21 - Novell NetWare - NetWare shell - CONVERT DOS FILE HANDLE TO NETWARE
	AX = E909h
	BX = DOS file handle
Return: AX = 0000h if successful
	    BX:CX:DX = NetWare file handle
Notes:	this function is partially a reverse of "AttachHandle" (AH=B4h)
	many NetWare 3.x functions use a four-byte file handle, which appears
	  to be the high four bytes of the six-byte NetWare handle
SeeAlso: AH=B4h"NetWare"

Top
21EA - INT 21 - Novell NetWare, Alloy NTNX - RETURN SHELL VERSION
INT 21 - Novell NetWare, Alloy NTNX - RETURN SHELL VERSION
	AH = EAh
	AL = return version environment string
	    00h		don't return string
	    nonzero	get environment string
		ES:DI -> 40-byte buffer for string
		Return: buffer filled with three null-terminated entries:
			major operating system
			version
			hardware type
Return: AH = operating system (00h = MS-DOS)
	AL = hardware type
	    00h IBM PC
	    01h Victor 9000
	BH = major shell version
	BL = minor shell version
	CH = (v3.01+) shell type
	    00h conventional memory
	    01h expanded memory
	    02h extended memory
	CL = shell revision number
Note:	this function is supported by NetWare 4.6 and Advanced NetWare 1.0+
SeeAlso: INT DF"Victor"

Top
21EA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
	AH = EAh
Return: task switching turned off
SeeAlso: AH=E9h"DoubleDOS",AH=EBh"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"

Top
21EA - INT 21 - OS/286, OS/386 - ALLOCATE HUGE SEGMENT
INT 21 - OS/286, OS/386 - ALLOCATE HUGE SEGMENT
	AH = EAh
	???
Return: ???
Note:	protected mode only???
SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=E9h"OS/286"

Top
21EB - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG FILE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG FILE
	AH = EBh
	DS:DX -> ASCIZ filename
	if function C6h lock mode 01h:
	    AL = flags
		00h log file only
		01h lock as well as log file
		    BP = lock timeout in timer ticks (1/18 second)
			0000h = don't wait if file already locked
Return: AL = status (see #02090)
Desc:	add the location and size of the specified file to the log table and
	  optionally lock the file
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=BCh"NetWare",AH=CAh,AH=D0h,AH=ECh"NetWare",AH=EDh"NetWare"

(Table 02090)
Values for NetWare status:
 00h	successful
 96h	no dynamic memory for file
 FEh	timed out
 FFh	failed
SeeAlso: #02053

Top
21EB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
	AH = EBh
Return: task switching turned on
SeeAlso: AH=E9h"DoubleDOS",AH=EAh"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"

Top
21EB00 - INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY LINEAR ADDRESS
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY LINEAR ADDRESS
	AX = EB00h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=EB02h,AX=EB04h,INT 31/AX=0506h

Top
21EB02 - INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 16-BIT SEGMENT:OFFSET
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 16-BIT SEGMENT:OFFSET
	AX = EB02h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=EB00h,AX=EB04h

Top
21EB03 - INT 21 - OS/386 VMM - FREE MAPPED PAGES
INT 21 - OS/386 VMM - FREE MAPPED PAGES
	AX = EB03h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=EB05h,INT 31/AX=0801h

Top
21EB04 - INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 32-BIT SEGMENT:OFFSET
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 32-BIT SEGMENT:OFFSET
	AX = EB04h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=EB00h,AX=EB02h

Top
21EB05 - INT 21 - OS/386 VMM - MAP PAGES
INT 21 - OS/386 VMM - MAP PAGES
	AX = EB05h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=EB03h,INT 31/AX=0800h

Top
21EB06 - INT 21 - OS/386 VMM - LOCK PAGES IN MEMORY
INT 21 - OS/386 VMM - LOCK PAGES IN MEMORY
	AX = EB06h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=EB07h,INT 31/AX=0600h

Top
21EB07 - INT 21 - OS/386 VMM - UNLOCK MEMORY PAGES
INT 21 - OS/386 VMM - UNLOCK MEMORY PAGES
	AX = EB07h
	???
Return: ???
Note:	protected mode only???
SeeAlso: AX=EB06h,INT 31/AX=0601h

Top
21EC - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE
	AH = ECh
	DS:DX -> ASCIZ filename
Return: AL = status
	    00h successful
	    FFh file not found
Desc:	unlock the specified file but retain it in the log table
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=CDh,AH=EBh"NetWare",AH=EDh"NetWare"

Top
21EC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
	AH = ECh
Return: ES = segment of virtual screen
Desc:	determine the address of the virtual screen to which the program
	  should write instead of the actual video memory, so that the
	  multitasked programs do not interfere with each other's output
Notes:	screen address can change if task-switching is on!
	identical to AH=FCh
SeeAlso: INT 10/AH=FEh,AH=FCh"DoubleDOS",INT FC"DoubleDOS"

Top
21EC - INT 21 - OS/286, OS/386 - BLOCK TRANSFER
INT 21 - OS/286, OS/386 - BLOCK TRANSFER
	AH = ECh
	???
Return: ???

Top
21EC27 - INT 21 - VIRUS - "Halloween.1839" - INSTALLATION CHECK
INT 21 - VIRUS - "Halloween.1839" - INSTALLATION CHECK
	AX = EC27h
Return: AX = 4A52h ("JR") if resident
SeeAlso: AH=E7h"VIRUS",AX=E900h"VIRUS",AX=EC59h"VIRUS"

Top
21EC59 - INT 21 - VIRUS - "Terror" - INSTALLATION CHECK
INT 21 - VIRUS - "Terror" - INSTALLATION CHECK
	AX = EC59h
Return: BP = EC59h if resident
SeeAlso: AX=EC27h"VIRUS",AH=EEh"VIRUS"

Top
21ED - INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE
	AH = EDh
	DS:DX -> ASCIZ filename
Return: AL = status
	    00h successful
	    FFh no files found
Desc:	unlock the file and remove it from the log table
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=CBh"NetWare",AH=CEh,AH=CFh,AH=EBh"NetWare",AH=ECh"NetWare"

Top
21ED - INT 21 - OS/286, OS/386 - GET SEGMENT OR WINDOW DESCRIPTOR
INT 21 - OS/286, OS/386 - GET SEGMENT OR WINDOW DESCRIPTOR
	AH = EDh
	???
Return: ???
Note:	protected mode only???
SeeAlso: AH=E9h"OS/286"

Top
21EE - INT 21 - Novell NetWare - CONNECTION SERVICES - GET PHYSICAL STATION ADDRESS
INT 21 - Novell NetWare - CONNECTION SERVICES - GET PHYSICAL STATION ADDRESS
	AH = EEh
Return: CX:BX:AX = six-byte physical address
Note:	this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
	  Alloy NTNX
SeeAlso: AH=E3h/SF=13h

Top
21EE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
	AH = EEh
	AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=FEh"DoubleDOS",INT FE"DoubleDOS"

Top
21EE - INT 21 - VIRUS - "Jerusalem-G", "Pregnant", "Barrotes" - INSTALLATION CHECK
INT 21 - VIRUS - "Jerusalem-G", "Pregnant", "Barrotes" - INSTALLATION CHECK
	AH = EEh
Return: AX = 0300h if "Jerusalem-G" resident
	AL = 05h if "Pregnant" resident
	AL = FEh if "Barrotes" resident
SeeAlso: AH=DDh"VIRUS",AX=EC59h,AX=EEE7h"VIRUS"

Top
21EEE7 - INT 21 - VIRUS - "GingerBread" - INSTALLATION CHECK
INT 21 - VIRUS - "GingerBread" - INSTALLATION CHECK
	AX = EEE7h
Return: AX = D703h if installed
SeeAlso: AH=EEh"VIRUS",AH=EFh"VIRUS"

Top
21EF - INT 21 - VIRUS - "Mabuhay"/"June 12th" - INSTALLATION CHECK
INT 21 - VIRUS - "Mabuhay"/"June 12th" - INSTALLATION CHECK
	AH = EFh
Return: AX = 025Bh if resident
SeeAlso: AX=EC27h"VIRUS",AH=EEh"VIRUS",AH=F0h"VIRUS"

Top
21EF00 - INT 21 - Novell NetWare - WORKSTATION - GET DRIVE HANDLE TABLE
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE HANDLE TABLE
	AX = EF00h
Return: ES:SI -> network shell's 32-byte drive handle table
	AX = 0000h
Notes:	this function is supported by Advanced NetWare 1.0+
	each byte in the drive handle table contains the directory handle for
	  the corresponding drive, or 00h if not mapped to a directory
SeeAlso: AX=EF01h,AX=EF02h,AX=EF03h,AX=EF04h

Top
21EF01 - INT 21 - Novell NetWare - WORKSTATION - GET DRIVE FLAG TABLE
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE FLAG TABLE
	AX = EF01h
Return: ES:SI -> network shell's 32-byte drive flag table (see #02091)
	AX = 0000h
Notes:	this function is supported by Advanced NetWare 1.0+
	each byte in the drive flag table corresponds to a drive
SeeAlso: AX=EF00h,AX=EF02h,AX=EF03h

(Table 02091)
Values in NetWare drive flag table:
 00h	drive is not mapped
 01h	permanent network drive
 02h	temporary network drive
 80h	mapped to local drive
 81h	local drive used as permanent network drive
 82h	local drive used as temporary network drive

Top
21EF02 - INT 21 - Novell NetWare - WORKSTATION - GET DRIVE CONNECTION ID TABLE
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE CONNECTION ID TABLE
	AX = EF02h
Return: ES:SI -> network shell's 32-byte drive conection ID table
	AX = 0000h
Notes:	this function is supported by Advanced NetWare 1.0+
	each byte in the connection ID table corresponds to a drive and
	  contains either the connection ID (1-8) of the server for that drive
	  or 00h if the drive is not mapped to a file server
SeeAlso: AX=EF01h,AX=EF03h,AX=F002h

Top
21EF03 - INT 21 - Novell NetWare - WORKSTATION - GET CONNECTION ID TABLE
INT 21 - Novell NetWare - WORKSTATION - GET CONNECTION ID TABLE
	AX = EF03h
Return: ES:SI -> network shell's connection ID table (see #02092)
	AX = 0000h
Note:	this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF00h,AX=EF02h,AX=EF04h,AX=F002h

Format of NetWare connection ID table [one entry of eight-element array]:
Offset	Size	Description	(Table 02092)
 00h	BYTE	in-use flag
		E0h AES temporary
		F8h IPX in critical section
		FAh processing
		FBh holding
		FCh AES waiting
		FDh waiting
		FEh receiving
		FFh sending
 01h	BYTE	order number assigned to server (1-8)
 02h	DWORD	(big-endian) file server's network address
 06h  6 BYTEs	(big-endian) file server's node address
 0Ch	WORD	(big-endian) socket number
 0Eh	WORD	(big-endian) base receive timeout in clock ticks
 10h  6 BYTEs	(big-endian) preferred routing node
 16h	BYTE	packet sequence number
 17h	BYTE	connection number (FFh = no connection)
 18h	BYTE	connection status (00h if active)
 19h	WORD	(big-endian) maximum receive timeout in clock ticks
 1Bh	WORD	connection number (if > FAh)
 1Dh	BYTE	major version of NetWare
 1Eh	BYTE	minor version of NetWare
 1Fh	BYTE	server flags
		bit 0: server is burst enabled

Top
21EF04 - INT 21 - Novell NetWare - WORKSTATION - GET FILE SERVER NAME TABLE
INT 21 - Novell NetWare - WORKSTATION - GET FILE SERVER NAME TABLE
	AX = EF04h
Return: ES:SI -> network shell's file server name table (see #02093)
	AX = 0000h
Note:	this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF03h

Format of file server name table:
Offset	Size	Description	(Table 02093)
 00h 48 BYTEs	ASCIZ server name for first entry in connection ID table
 30h 48 BYTEs	ASCIZ server name for second entry in connection ID table
	...
150h 48 BYTEs	ASCIZ server name for eighth entry in connection ID table

Top
21F0 - INT 21 - DoubleDOS - MENU CONTROL
INT 21 - DoubleDOS - MENU CONTROL
	AH = F0h
	AL = subfunction
	    01h exchange tasks
	    73h resume invisible job if suspended
	    74h kill other job
	    75h suspend invisible job
Note:	identical to AH=E0h
SeeAlso: AH=E0h"DoubleDOS"

Top
21F0 - INT 21 - VIRUS - "Frere Jacques" - INSTALLATION CHECK
INT 21 - VIRUS - "Frere Jacques" - INSTALLATION CHECK
	AH = F0h
Return: AX = 0300h if resident
SeeAlso: AH=EEh"VIRUS",AX=F078h"VIRUS"

Top
21F000 - INT 21 - Novell NetWare - WORKSTATION - SET PREFERRED CONNECTION ID
INT 21 - Novell NetWare - WORKSTATION - SET PREFERRED CONNECTION ID
	AX = F000h
	DL = connection ID of prefered file server (1-8) or 00h for none
Notes:	this function is supported by Advanced NetWare 1.0+
	the preferred connection ID is set to 00h by the shell on EOJ
SeeAlso: AH=D6h,AX=EF03h,AX=F001h,AX=F002h,AX=F005h

Top
21F001 - INT 21 - Novell NetWare - WORKSTATION - GET PREFERRED CONNECTION ID
INT 21 - Novell NetWare - WORKSTATION - GET PREFERRED CONNECTION ID
	AX = F001h
Return: AL = connection ID of preferred file server (1-8), 00h if not set
Notes:	this function is supported by Advanced NetWare 1.0+
	the preferred connection ID is set to 00h by the shell on EOJ
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h

Top
21F002 - INT 21 - Novell NetWare - WORKSTATION - GET DEFAULT CONNECTION ID
INT 21 - Novell NetWare - WORKSTATION - GET DEFAULT CONNECTION ID
	AX = F002h
Return: AL = connection ID of current default file server (1-8) (see AX=EF03h)
Note:	this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF03h,AX=F000h,AX=F004h

Top
21F003 - INT 21 - Novell NetWare - PRINT SERVICES - GET LPT CAPTURE STATUS
INT 21 - Novell NetWare - PRINT SERVICES - GET LPT CAPTURE STATUS
	AX = F003h
Return: AH = status
	    00h not active
	    FFh active
		AL = connection ID (01h-08h)
Note:	this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h,AH=DFh/DL=04h

Top
21F004 - INT 21 - Novell NetWare - WORKSTATION - SET PRIMARY CONNECTION ID
INT 21 - Novell NetWare - WORKSTATION - SET PRIMARY CONNECTION ID
	AX = F004h
	DL = connection ID of primary file server (1-8) or 00h for none
Note:	this function is supported by Advanced NetWare 2.0+
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h

Top
21F005 - INT 21 - Novell NetWare - WORKSTATION - GET PRIMARY CONNECTION ID
INT 21 - Novell NetWare - WORKSTATION - GET PRIMARY CONNECTION ID
	AX = F005h
Return: AL = connection ID of primary file server (1-8), 00h if not set
Notes:	this function is supported by Advanced NetWare 2.0+
	by default, the primary file server is the one from which the login
	  script executed; it is set to 00h if the workstation is not logged in
	  and when it detaches from its primary file server
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F004h

Top
21F078 - INT 21 - VIRUS - "Burgler/H" - INSTALLATION CHECK
INT 21 - VIRUS - "Burgler/H" - INSTALLATION CHECK
	AX = F078h
Return: AX = 0000h if installed
SeeAlso: AH=F0h"VIRUS",AH=F1h"VIRUS"

Top
21F1 - INT 21 - Novell NetWare - CONNECTION SERVICES - FILE SERVER CONNECTION
INT 21 - Novell NetWare - CONNECTION SERVICES - FILE SERVER CONNECTION
	AH = F1h
	AL = subfunction
	    00h attach to file server
		DL = preferred file server (01h-08h)
	    01h detach from file server
		DL = connection ID
	    02h logout from file server
		DL = connection ID
Return: AL = status (see #02094)
Note:	these functions are supported by Advanced NetWare 1.0+
SeeAlso: AH=D7h"NetWare",AH=E3h/SF=14h

(Table 02094)
Values for NetWare function status:
 00h	successful
 F8h	already attached to server
 F9h	connection table full
 FAh	no more server slots
 FCh	unknown file server
 FEh	server bindery locked
 FFh	no response from server, or connection does not exist
SeeAlso: #02053,#02350

Top
21F1 - INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
	AH = F1h
SeeAlso: AH=E1h"DoubleDOS",AH=F2h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Top
21F1 - INT 21 - VIRUS - "F1-337" - ???
INT 21 - VIRUS - "F1-337" - ???
	AH = F1h
	???
Return: ???
SeeAlso: AH=F0h"VIRUS",AX=F1E9h

Top
21F1E9 - INT 21 - VIRUS - "Tremor" - INSTALLATION CHECK
INT 21 - VIRUS - "Tremor" - INSTALLATION CHECK
	AX = F1E9h
Return: AX = installation state
	    CADEh installed, and calling program is infected
	    F100h not installed (normal DOS return value)
	    else  installed, but calling program is not infected
SeeAlso: AH=F1h"VIRUS",AX=F2AAh

Top
21F2 - INT 21 u - Novell NetWare v3.01+ shell interface - MULTIPLEXOR
INT 21 u - Novell NetWare v3.01+ shell interface - MULTIPLEXOR
	AH = F2h
	AL = function (see #02095)
	    (subfunction stored in various places in the request packet,
	    depending on function number; see individual entries)
	CX = length of request buffer
	DX = length of reply buffer (0000h if no reply packet)
	DS:SI -> request buffer
	ES:DI -> reply buffer (ignored if DX=0000h)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled as appropriate for function
Note:	this is a multiplexor providing a "raw" interface to the underlying
	  NetWare Core Protocol.  Many functions which were accessed via a
	  separate AH function in older versions can also be accessed here,
	  but some NetWare 3.x calls appear to be available only here.
SeeAlso: AX=F244h,AX=F268h/SF=3Dh,#02875

(Table 02095)
Values for NetWare Core Protocol functions:
Fnc/Subfn	Description
01h	File Set Lock
02h	File Release Lock
03h	Log File (old)					(see AX=F203h)
04h	Lock File Set (old)				(see AX=F204h)
05h	Release File				(see AH=CCh,AH=ECh"NetWare")
06h	Release File Set				(see AH=CDh"NetWare")
07h	Clear File					(see AH=CEh,AX=F207h)
08h	Clear File Set					(see AX=F208h)
09h	Log Logical Record (old)			(see AH=D0h"NetWare")
0Ah	Lock Logical Record Set (old)			(see AX=F20Ah)
0Bh	Clear Logical Record				(see AX=F20Bh)
0Ch	Release Logical Record				(see AH=D2h"NetWare")
0Dh	Release Logical Record Set			(see AH=D3h"NetWare")
0Eh	Clear Logical Record Set			(see AX=F20Eh)
0Fh	Allocate Resource				(see AH=D8h"NetWare")
10h	Deallocate Resource				(see AH=D9h"NetWare")
11h/xxh	print spooling					(see AH=E0h"NetWare")
11h/06h Get Printer Status
11h/0Ah	Get Printer Queue
12h	Get Volume Info with Number			(see AH=DAh"NetWare")
13h	Get Station Number				(see AH=DCh"NetWare")
14h	Get File Server Date and Time (NW v2.2+)	(see AH=E7h"NetWare")
15h/01h Get Broadcast Message (old)			(see AX=F215h/SF=01h)
15h/02h Disable Broadcasts				(see AX=F215h/SF=02h)
15h/03h Enable Broadcasts				(see AX=F215h/SF=03h)
15h/08h Check Pipe Status		(see AH=E1h/SF=08h,AX=F215h/SF=08h)
15h/09h Broadcast to Console		(see AH=E1h/SF=09h,AX=F215h/SF=09h)
15h/0Bh Get Broadcast Message				(see AX=F215h/SF=0Bh)
16h/00h Set Directory Handle				(see AX=F216h/SF=00h)
16h/01h Get Directory Path				(see AX=F216h/SF=01h)
16h/02h Scan Directory Information			(see AX=F216h/SF=02h)
16h/03h	Get Effective Directory Rights (old)		(see AX=F216h/SF=03h)
16h/04h Modify Maximum Rights Mask			(see AX=F216h/SF=04h)
16h/05h Get Volume Number				(see AX=F216h/SF=05h)
16h/06h Get Volume Name					(see AX=F216h/SF=06h)
16h/0Ah Create Directory				(see AX=F216h/SF=0Ah)
16h/0Bh Delete Directory				(see AX=F216h/SF=0Bh)
16h/0Ch Scan Directory for Trustees			(see AX=F216h/SF=0Ch)
16h/0Dh Add Trustee to Directory			(see AX=F216h/SF=0Dh)
16h/0Eh Delete Trustee from Directory			(see AX=F216h/SF=0Eh)
16h/0Fh	Rename Directory				(see AX=F216h/SF=0Fh)
16h/10h Purge Erased Files (old)			(see AX=F216h/SF=10h)
16h/11h Recover Erased File (old)			(see AX=F216h/SF=11h)
16h/12h Alloc Permanent Directory Handle		(see AX=F216h/SF=12h)
16h/13h Alloc Temporary Directory Handle		(see AX=F216h/SF=13h)
16h/14h Deallocate Directory Handle			(see AX=F216h/SF=14h)
16h/15h Get Volume Info with Handle			(see AX=F216h/SF=15h)
16h/16h Alloc Special Temporary Directory Handle	(see AX=F216h/SF=16h)
16h/19h Set Directory Information			(see AX=F216h/SF=19h)
16h/1Ah Get Path Name of Volume-Directory Number Pair	(see AX=F216h/SF=1Ah)
16h/1Bh	Scan Salvageable Files (old)			(see AX=F216h/SF=1Bh)
16h/1Ch	Recover Salvageable File (old)			(see AX=F216h/SF=1Ch)
16h/1Dh	Purge Salvageable File (old)			(see AX=F216h/SF=1Dh)
16h/1Eh	Scan a Directory				(see AX=F216h/SF=1Eh)
16h/1Fh	Get Directory Entry				(see AX=F216h/SF=1Fh)
16h/20h	Scan Volume's User Disk Restrictions		(see AX=F216h/SF=20h)
16h/21h	Add User Disk Space Restriction			(see AX=F216h/SF=21h)
16h/22h	Remove User Disk Space Restrictions		(see AX=F216h/SF=22h)
16h/23h	Scan Directory Space Restrictions		(see AX=F216h/SF=23h)
16h/24h	Set Directory Disk Space Restriction		(see AX=F216h/SF=24h)
16h/25h	Set Directory File Information			(see AX=F216h/SF=25h)
16h/26h	Scan File or Directory For Extended Trustees	(see AX=F216h/SF=26h)
16h/27h	Add Extended Trustee to Directory or File	(see AX=F216h/SF=27h)
16h/28h	Scan Directory Disk Space			(see AX=F216h/SF=28h)
16h/29h	Get Object Disk Usage and Restrictions		(see AX=F216h/SF=29h)
16h/2Ah	Get Effective Rights				(see AX=F216h/SF=2Ah)
16h/2Bh	Remove Extended Trustee from Dir or File	(see AX=F216h/SF=2Bh)
16h/2Ch	Get Volume Usage				(see AX=F216h/SF=2Ch)
16h/2Dh	Get Directory Information			(see AX=F216h/SF=2Dh)
16h/2Eh	Rename or Move					(see AX=F216h/SF=2Eh)
16h/2Fh	Get Name Space Information			(see AX=F216h/SF=2Fh)
16h/30h	Get Name Space Directory Entry			(see AX=F216h/SF=30h)
16h/31h	Open Data Stream				(see AX=F216h/SF=31h)
16h/32h	Get Object Effective Rights			(see AX=F216h/SF=32h)
16h/33h	Get Extended Volume Info			(see AX=F216h/SF=33h)
17h/01h Change User Password (old)			(see AX=F217h/SF=01h)
17h/02h Get User Connection List (old)			(see AX=F217h/SF=02h)
17h/0Ch Verify Serialization				(see AX=F217h/SF=0Ch)
17h/0Eh Get Disk Utilization				(see AX=F217h/SF=0Eh)
17h/0Fh Scan File Information				(see AX=F217h/SF=0Fh)
17h/10h Set File Information				(see AX=F217h/SF=10h)
17h/11h Get File Server Information			(see AX=F217h/SF=11h)
17h/12h Get Network Serial Number			(see AX=F217h/SF=12h)
17h/13h Get Internet Address (old)			(see AX=F217h/SF=13h)
17h/14h Login Object					(see AX=F217h/SF=14h)
17h/15h Get Object Connection List (old)		(see AX=F217h/SF=15h)
17h/16h	Get Connection Information (old)		(see AX=F217h/SF=1Ch)
17h/17h	Get Encryption Key				(see AX=F217h/SF=17h)
17h/18h	Login Object Encrypted				(see AX=F217h/SF=18h)
17h/1Ah Get Internet Address				(see AX=F217h/SF=1Ah)
17h/1Bh Get Object Connection List			(see AX=F217h/SF=1Bh)
17h/1Ch	Get Connection Information			(see AX=F217h/SF=1Ch)
17h/1Fh	Get Connection List from Object			(see AX=F217h/SF=1Fh)
17h/32h Create Bindery Object				(see AX=F217h/SF=32h)
17h/33h Delete Bindery Object				(see AX=F217h/SF=33h)
17h/34h Rename Bindery Object				(see AX=F217h/SF=34h)
17h/35h Get Bindery Object ID				(see AX=F217h/SF=35h)
17h/36h Get Bindery Object Name				(see AX=F217h/SF=36h)
17h/37h Scan Bindery Object				(see AX=F217h/SF=37h)
17h/38h Change Bindery Object Security			(see AX=F217h/SF=38h)
17h/39h Create Property					(see AX=F217h/SF=39h)
17h/3Ah Delete Property					(see AX=F217h/SF=3Ah)
17h/3Bh Change Property Security			(see AX=F217h/SF=3Bh)
17h/3Ch Scan Property					(see AX=F217h/SF=3Ch)
17h/3Dh Read Property Value				(see AX=F217h/SF=3Dh)
17h/3Eh Write Property Value				(see AX=F217h/SF=3Eh)
17h/3Fh Verify Bindery Object Password			(see AX=F217h/SF=3Fh)
17h/40h Change Bindery Object Password			(see AX=F217h/SF=40h)
17h/41h Add Bindery Object to Set			(see AX=F217h/SF=41h)
17h/42h Delete Bindery Object from Set			(see AX=F217h/SF=42h)
17h/43h Is Bindery Object in Set			(see AX=F217h/SF=43h)
17h/44h Close Bindery					(see AX=F217h/SF=44h)
17h/45h Open Bindery					(see AX=F217h/SF=45h)
17h/46h Get Bindery Access Level			(see AX=F217h/SF=46h)
17h/47h Scan Bindery Object Trustee Paths		(see AX=F217h/SF=47h)
17h/48h	Get Bindery Object Access Level			(see AX=F217h/SF=48h)
17h/49h	Is Station a Manager?				(see AX=F217h/SF=49h)
17h/4Ah	Keyed Verify Bindery Object Password		(see AX=F217h/SF=4Ah)
17h/4Bh	Keyed Change Bindery Object Password		(see AX=F217h/SF=4Bh)
17h/4Ch	List Relations of an Object			(see AX=F217h/SF=4Ch)
17h/64h Create Queue					(see AX=F217h/SF=64h)
17h/65h Destroy Queue					(see AX=F217h/SF=65h)
17h/66h Read Queue Current Status (old)			(see AX=F217h/SF=66h)
17h/67h Set Queue Current Status (old)			(see AX=F217h/SF=67h)
17h/68h Create Queue Job and File (old)			(see AX=F217h/SF=68h)
17h/69h Close File and Start Queue Job (old)		(see AX=F217h/SF=69h)
17h/6Ah Remove Job From Queue (old)			(see AX=F217h/SF=6Ah)
17h/6Bh Get Queue Job List (old)			(see AX=F217h/SF=6Bh)
17h/6Ch Read Queue Job Entry (old)			(see AX=F217h/SF=6Ch)
17h/6Dh Change Queue Job Entry (old)			(see AX=F217h/SF=6Dh)
17h/6Eh Change Queue Job Position			(see AX=F217h/SF=6Eh)
17h/6Fh Attach Queue Server to Queue			(see AX=F217h/SF=6Fh)
17h/70h Detach Queue Server from Queue			(see AX=F217h/SF=70h)
17h/72h Finish Servicing Queue Job (old)		(see AX=F217h/SF=72h)
17h/74h Change to Client Rights (old)			(see AX=F217h/SF=74h)
17h/75h Restore Queue Server Rights			(see AX=F217h/SF=75h)
17h/76h Read Queue Server Current Status (old)		(see AX=F217h/SF=76h)
17h/77h Set Queue Server Current Status			(see AX=F217h/SF=77h)
17h/78h Get Queue Job File Size (old)			(see AX=F217h/SF=78h)
17h/79h Create Queue Job and File			(see AX=F217h/SF=79h)
17h/7Ah Read Queue Job Entry				(see AX=F217h/SF=7Ah)
17h/7Bh Change Queue Job Entry				(see AX=F217h/SF=7Bh)
17h/7Dh Read Queue Current Status			(see AX=F217h/SF=7Dh)
17h/7Eh Set Queue Current Status			(see AX=F217h/SF=7Eh)
17h/7Fh Close File and Start Queue Job			(see AX=F217h/SF=7Fh)
17h/80h Remove Job From Queue				(see AX=F217h/SF=80h)
17h/81h Get Queue Job List				(see AX=F217h/SF=81h)
17h/82h Change Job Priority				(see AX=F217h/SF=82h)
17h/83h Finish Servicing Queue Job			(see AX=F217h/SF=83h)
17h/85h Change to Client Rights				(see AX=F217h/SF=85h)
17h/86h Read Queue Server Current Status		(see AX=F217h/SF=86h)
17h/87h Get Queue Job File Size				(see AX=F217h/SF=87h)
17h/96h Get Account Status				(see AX=F217h/SF=96h)
17h/97h Submit Account Charge				(see AX=F217h/SF=97h)
17h/98h Submit Account Hold				(see AX=F217h/SF=98h)
17h/99h Submit Account Note				(see AX=F217h/SF=99h)
17h/C8h Check Console Privileges			(see AX=F217h/SF=C8h)
17h/C9h Get File Server Description Strings		(see AX=F217h/SF=C9h)
17h/CAh Set File Server Date and Time			(see AX=F217h/SF=CAh)
17h/CBh Disable File Server Login			(see AX=F217h/SF=CBh)
17h/CCh Enable File Server Login			(see AX=F217h/SF=CCh)
17h/CDh Get File Server Login Status			(see AX=F217h/SF=CDh)
17h/CEh Purge All Erased Files				(see AX=F217h/SF=CEh)
17h/CFh Disable Transaction Tracking			(see AX=F217h/SF=CFh)
17h/D0h Enable Transaction Tracking			(see AX=F217h/SF=D0h)
17h/D2h Clear Connection Number (Logout Station)	(see AX=F217h/SF=D2h)
17h/D3h Down File Server				(see AX=F217h/SF=D3h)
17h/D4h Get File System Statistics			(see AX=F217h/SF=D4h)
17h/D5h Get Transaction Tracking Statistics		(see AX=F217h/SF=D5h)
17h/D6h Get Disk Cache Statistics			(see AX=F217h/SF=D6h)
17h/D7h Get Drive Mapping Table				(see AX=F217h/SF=D7h)
17h/D8h Get Physical Disk Statistics			(see AX=F217h/SF=D8h)
17h/D9h Get Disk Channel Statistics			(see AX=F217h/SF=D9h)
17h/DAh Get Connection's Task Information (NW v2.2)	(see AX=F217h/SF=DAh)
17h/DBh Get Connection's Open Files (old) (NW v2.2)	(see AX=F217h/SF=DBh)
17h/DCh Get Connections Using a File (NW v2.2)		(see AX=F217h/SF=DCh)
17h/DDh Get Physical Record Locks by Connection and File (old)
17h/DEh	Get Physical Record Locks by File (old)		(see AX=F217h/SF=DEh)
17h/DFh Get Logical Records by Connection (old)		(see AX=F217h/SF=DFh)
17h/E0h Get Logical Record Information (old)		(see AX=F217h/SF=E0h)
17h/E1h Get Connection's Semaphores (old)		(see AX=F217h/SF=E1h)
17h/E2h Get Semaphore Information (old)			(see AX=F217h/SF=E2h)
17h/E3h Get LAN Driver's Configuration Information	(see AX=F217h/SF=E3h)
17h/E5h Get Connection's Usage Statistics (NW v2.2)	(see AX=F217h/SF=E5h)
17h/E6h Get Object's Remaining Disk Space		(see AX=F217h/SF=E6h)
17h/E7h Get File Server LAN I/O Statistics		(see AX=F217h/SF=E7h)
17h/E8h Get File Server Misc Information		(see AX=F217h/SF=E8h)
17h/E9h Get Volume Information				(see AX=F217h/SF=E9h)
17h/EAh Get Connection's Task Information (NW v3.11+)	(see AX=F217h/SF=EAh)
17h/EBh	Get Connection's Open Files (NW v3.11+)		(see AX=F217h/SF=EBh)
17h/ECh	Get Connections Using a File (NW v3.11+)	(see AX=F217h/SF=ECh)
17h/EDh Get Physical Record Locks by Connection and File (see AX=F217h/SF=EDh)
17h/EEh	Get Physical Record Locks by File		(see AX=F217h/SF=EEh)
17h/EFh Get Logical Records by Connection		(see AX=F217h/SF=EFh)
17h/F0h Get Logical Record Information			(see AX=F217h/SF=F0h)
17h/F1h Get Connection's Semaphores			(see AX=F217h/SF=F1h)
17h/F2h Get Semaphore Information			(see AX=F217h/SF=F2h)
17h/F3h Map Directory Number to Path			(see AX=F217h/SF=F3h)
17h/F4h	Convert Path to Directory Entry			(see AX=F217h/SF=F4h)
17h/F5h Get File Server Extended Misc Information	(see AX=F217h/SF=F5h)
17h/F6h Get Volume Extended Information			(see AX=F217h/SF=F6h)
17h/FEh Clear Connection Number Greater than 250	(see AX=F217h/SF=FEh)
18h	End of Job					(see AH=D6h"NetWare")
19h	Logout (old)					(see AH=D7h"NetWare")
1Ah	Log Physical Record (old)			(see AH=BCh"NetWare")
1Bh	Lock Physical Record Set (old)			(see AX=F21Bh)
1Ch	Release Physical Record				(see AH=BDh"NetWare")
1Dh	Release Physical Record Set			(see AH=C3h"NetWare")
1Eh	Clear Physical Record				(see AX=F21Eh)
1Fh	Clear Physical Record Set			(see AX=F21Fh)
20h/xxh	semaphore services				(see AX=C501h"NetWare")
20h/00h Open Semaphore (old)				(see AX=C500h"NetWare")
20h/01h Examine Semaphore (old)				(see AX=C501h"NetWare")
20h/02h Wait on Semaphore (old)				(see AX=C502h"NetWare")
20h/03h Signal Semaphore (old)				(see AX=C503h"NetWare")
20h/04h Close Semaphore (old)				(see AX=C504h"NetWare")
21h	Negotiate Buffer Size
22h/00h	TTS Is Available				(see AX=C702h"NetWare")
22h/01h	TTS Begin Transaction				(see AX=C700h"NetWare")
22h/02h	TTS End Transaction				(see AX=C701h"NetWare")
22h/03h	TTS Abort Transaction				(see AX=C703h"NetWare")
22h/04h	TTS Transaction Status				(see AX=C704h"NetWare")
22h/05h	TTS Get Application Thresholds			(see AX=C705h"NetWare")
22h/06h	TTS Set Application Thresholds			(see AX=C706h"NetWare")
22h/07h	TTS Get Workstation Thresholds			(see AX=C707h"NetWare")
22h/08h	TTS Set Workstation Thresholds			(see AX=C708h"NetWare")
22h/09h	TTS Get Control Flags
22h/0Ah	TTS Set Control Flags
23h/01h	AFP Create Directory				(see AX=F223h/SF=01h)
23h/02h	AFP Create File					(see AX=F223h/SF=02h)
23h/03h	AFP Delete					(see AX=F223h/SF=03h)
23h/04h	AFP Get Entry ID From Name			(see AX=F223h/SF=04h)
23h/05h	AFP Get File Information			(see AX=F223h/SF=05h)
23h/06h	AFP Get Entry ID From NetWare Handle		(see AX=F223h/SF=06h)
23h/07h	AFP Rename					(see AX=F223h/SF=07h)
23h/08h	AFP Open File Fork				(see AX=F223h/SF=08h)
23h/09h	AFP Set File Information			(see AX=F223h/SF=09h)
23h/0Ah	AFP Scan File Information			(see AX=F223h/SF=0Ah)
23h/0Bh	AFP Alloc Temporary Dir Handle			(see AX=F223h/SF=0Bh)
23h/0Ch	AFP Get Entry ID From Path Name			(see AX=F223h/SF=0Ch)
23h/0Dh AFP 2.0 Create Directory			(see AX=F223h/SF=0Dh)
23h/0Eh AFP 2.0 Create File				(see AX=F223h/SF=0Eh)
23h/10h AFP 2.0 Set File Information			(see AX=F223h/SF=10h)
23h/11h AFP 2.0 Scan File Information			(see AX=F223h/SF=11h)
23h/12h AFP Get DOS Name from Entry ID			(see AX=F223h/SF=12h)
23h/13h AFP Get Macintosh Info on Deleted File		(see AX=F223h/SF=13h)
3Dh	Commit File
3Eh	File Search Initialize (FindFirst)		(see AX=F23Eh)
3Fh	File Search Continue (FindNext)			(see AX=F23Fh)
40h	Search File
42h	Close File					(see AX=F242h)
43h	File Create					(see AX=F243h)
44h	File Erase					(see AX=F244h)
45h	File Rename
46h	Set File Attributes
47h	Get File Size					(see AX=F247h)
48h	File Read
49h	File Write
4Ah	File Server Copy				(see AX=F24Ah)
4Bh	Set File Time and Date
4Ch	File Open
4Dh	Create New File					(see AX=F24Dh)
4Eh	Allow Task Access to File			(see AX=F24Eh)
4Fh	Set Extended File Attributes			(see AH=B6h"NetWare")
54h	Open Create File				(see also AX=6C00h)
55h	Get Sparse File Data Block Bit Map
56h/xx	extended attribute services (OS/2)
56h/01h	Close Extended Attribute Handle			(see AX=F256h/SF=01h)
56h/02h	Write Extended Attribute			(see AX=F256h/SF=02h)
56h/03h	Read Extended Attribute				(see AX=F256h/SF=03h)
56h/04h	Enumerate Extended Attributes			(see AX=F256h/SF=04h)
56h/05h	Duplicate Extended Attributes			(see AX=F256h/SF=05h)
57h/01h	Open/Create File or Subdirectory		(see AX=F257h/SF=01h)
57h/02h	Initialize Search, continue with 57h/03h	(see AX=F257h/SF=02h)
57h/03h	Scan NS Entry Info				(see AX=F257h/SF=03h)
57h/04h	Rename or Move File or Subdirectory		(see AX=F257h/SF=04h)
57h/05h	Scan File or Subdirectory for Trustees		(see AX=F257h/SF=05h)
57h/06h	Obtain File or Subdirectory Information		(see AX=F257h/SF=06h)
57h/07h	Modify File or Subdirectory DOS Information	(see AX=F257h/SF=07h)
57h/08h	Delete File/Directory				(see AX=F257h/SF=08h)
57h/09h	Set Short Directory Handle			(see AX=F257h/SF=09h)
57h/0Ah	Add Trustee Set					(see AX=F257h/SF=0Ah)
57h/0Bh	Delete Trustee					(see AX=F257h/SF=0Bh)
57h/0Ch	Allocate Short Directory Handle			(see AX=F257h/SF=0Ch)
57h/10h Scan Salvageable Files				(see AX=F257h/SF=10h)
57h/11h Recover Salvageable File			(see AX=F257h/SF=11h)
57h/12h Purge Salvageable File				(see AX=F257h/SF=12h)
57h/13h	Get NS Information				(see AX=F257h/SF=13h)
57h/15h	Get Path String from Short Directory Handle	(see AX=F257h/SF=15h)
57h/16h	Generate Directory Base and Volume Number	(see AX=F257h/SF=16h)
57h/17h	Get Name Space Info				(see AX=F257h/SF=17h)
57h/18h Get Name Spaces Loaded				(see AX=F257h/SF=18h)
57h/19h	Write Name Space Info				(see AX=F257h/SF=19h)
57h/1Ah	Read Extended Name Space Info			(see AX=F257h/SF=1Ah)
57h/1Bh	Write Extended Name Space Info			(see AX=F257h/SF=1Bh)
57h/1Ch	Get NS Full Path String				(see AX=F257h/SF=1Ch)
57h/1Dh	Get Effective Directory Rights			(see AX=F257h/SF=1Dh)
58h/01h	Get Volume Audit Statistics			(see AX=F258h/SF=01h)
58h/02h	Add Audit Property				(see AX=F258h/SF=02h)
58h/03h	Login as Volume Auditor				(see AX=F258h/SF=03h)
58h/04h Change Auditor Password				(see AX=F258h/SF=04h)
58h/05h Check Audit Access				(see AX=F258h/SF=05h)
58h/06h	Remove Audit Property				(see AX=F258h/SF=06h)
58h/07h	Disable Auditing on Volume			(see AX=F258h/SF=07h)
58h/08h	Enable Auditing on Volume			(see AX=F258h/SF=08h)
58h/09h	Is User Audited?				(see AX=F258h/SF=09h)
58h/0Ah	Read Auditing Bit Map				(see AX=F258h/SF=0Ah)
58h/0Bh	Read Audit Config Header			(see AX=F258h/SF=0Bh)
58h/0Dh	Logout as Volume Auditor			(see AX=F258h/SF=0Dh)
58h/0Eh	Reset Auditing File				(see AX=F258h/SF=0Eh)
58h/0Fh	Reset Audit History File			(see AX=F258h/SF=0Fh)
58h/10h	Write Auditing Bit Map				(see AX=F258h/SF=10h)
58h/11h	Write Audit Config Header			(see AX=F258h/SF=11h)
58h/13h	Get Auditing Flags				(see AX=F258h/SF=13h)
58h/14h	Close Old Auditing File				(see AX=F258h/SF=14h)
58h/15h	Delete Old Auditing File			(see AX=F258h/SF=15h)
58h/16h	Check Audit Level Two Access			(see AX=F258h/SF=16h)
5Ah/01h	Get DM (Data Migration) Info			(see AX=F25Ah/SF=01h)
5Ah/80h Move File Data to DM				(see AX=F25Ah/SF=80h)
5Ah/81h DM File Information				(see AX=F25Ah/SF=81h)
5Ah/82h Volume DM Status				(see AX=F25Ah/SF=82h)
5Ah/83h Get Migration or Status Information		(see AX=F25Ah/SF=83h)
5Ah/84h DM Support Module Information			(see AX=F25Ah/SF=84h)
5Ah/85h Move File Data from DM				(see AX=F25Ah/SF=85h)
5Ah/86h Get or Set Default Support Module		(see AX=F25Ah/SF=86h)
61h	Negotiate LIP Buffer, packet signing, and IPX checksums
65h	Packet Burst Connection
68h/xxh NetWare 4.x directory services (subfn at DS:[SI+11h])
68h/01h NDS resolve name				(see AX=F268h/SF=01h)
68h/03h	NDS read property
68h/04h NDS Get Bindery Context				(see AX=F268h/SF=04h)
68h/05h NDS Monitor Connection				(see AX=F268h/SF=05h)
68h/16h NDS List Partitions				(see AX=F268h/SF=16h)
68h/35h NDS get server address				(see AX=F268h/SF=35h)
68h/36h NDS set keys
68h/39h NDS begin login
68h/3Ah NDS finish login
68h/3Bh NDS begin authenticate
68h/3Ch NDS finish authenticate
68h/3Dh NDS Logout					(see AX=F268h/SF=3Dh)
68h/C8h Get DS Auditing Statistics			(see AX=F268h/SF=C8h)
69h	Log File					(see AX=F269h)
6Ah	Lock File Set					(see AX=F26Ah)
6Bh	Log Logical Record	!!!APIREF09 line 1430
6Ch	Lock Logical Record Set				(see AX=F26Ch)
6Dh	Log Physical Record
6Eh	Lock Physical Record Set			(see AX=F26Eh)
6Fh/00h Open Semaphore					(see AX=F26Fh/SF=00h)
6Fh/01h Close Semaphore					(see AX=F26Fh/SF=01h)
6Fh/02h Wait on Semaphore				(see AX=F26Fh/SF=02h)
6Fh/03h Signal Semaphore				(see AX=F26Fh/SF=03h)
6Fh/04h Examine Semaphore				(see AX=F26Fh/SF=04h)
72h	NetWare 4.x Time Services			(see AX=F272h)
7Bh/01h	Get Cache Information				(see AX=F27Bh/SF=01h)
7Bh/02h	Get File Server Information			(see AX=F27Bh/SF=02h)
7Bh/03h	Get NetWare File Systems Information
7Bh/04h	Get User Information				(see AX=F27Bh/SF=04h)
7Bh/05h	Get Packet Burst Information
7Bh/06h	Get IPX/SPX Information				(see AX=F27Bh/SF=06h)
7Bh/07h	Get Garbage Collection Information
7Bh/08h	Get CPU Information				(see AX=F27Bh/SF=08h)
7Bh/09h	Get Volume Switch Information			(see AX=F27Bh/SF=09h)
7Bh/0Ah	Get NLM Loaded List				(see AX=F27Bh/SF=0Ah)
7Bh/0Bh	Get NLM Information				(see AX=F27Bh/SF=0Bh)
7Bh/0Ch	Get Directory Cache Information
7Bh/0Dh	Get OS Version Information			(see AX=F27Bh/SF=0Dh)
7Bh/0Eh	Get Active Connection List by Type
7Bh/0Fh	Get NLM's Resource Tag List
7Bh/14h	Get Active LAN Board List			(see AX=F27Bh/SF=14h)
7Bh/15h	Get LAN Configuration Information		(see AX=F27Bh/SF=15h)
7Bh/16h	Get LAN Common Counters Information		(see AX=F27Bh/SF=16h)
7Bh/17h	Get LAN Custom Counters Information
7Bh/18h	Get LAN Config Strings
7Bh/19h	Get LSL Information
7Bh/1Ah	Get LSL Logical Board Statistics
7Bh/1Eh	Get Media Manager Object Information
7Bh/1Fh	Get Media Manager Object List
7Bh/20h	Get Media Manager Object Children List
7Bh/21h	Get Volume Segment List
7Bh/28h	Get Active Protocol Stacks
7Bh/29h	Get Protocol Stack Configuration Information	(see AX=F27Bh/SF=29h)
7Bh/2Ah	Get Protocol Stack Statistics Information
7Bh/2Bh	Get Protocol Stack Custom Information
7Bh/2Ch	Get Protocol Stack Numbers By Media Number
7Bh/2Dh	Get Protocol Stack Numbers By LAN Board Number
7Bh/2Eh	Get Media Name by Media Number
7Bh/2Fh	Get Loaded Media Number List
7Bh/32h	Get General Router and SAP Information
7Bh/33h	Get Network Router Information			(see AX=F27Bh/SF=33h)
7Bh/34h	Get Network Routers Information
7Bh/35h	Get Known Networks Information			(see AX=F27Bh/SF=35h)
7Bh/36h	Get Server Information
7Bh/38h	Get Known Servers Information			(see AX=F27Bh/SF=38h)
7Bh/3Ch	Get Server Set Commands Information		(see AX=F27Bh/SF=3Ch)
7Bh/3Dh	Get Server Set Categories			(see AX=F27Bh/SF=3Dh)
Note:	the subfunction is stored at DS:SI for AL=56h,57h, DS:SI+2 for
	  AL=15h-17h,23h

Top
21F2 - INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
	AH = F2h
	AL = character
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	    00h successful
	    01h buffer full (128 characters)
SeeAlso: AH=E2h"DoubleDOS",AH=F1h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Top
21F203 - INT 21 - Novell NetWare - LOG FILE (OLD)
INT 21 - Novell NetWare - LOG FILE (OLD)
	AX = F203h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02477 at AX=F269h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F204h,AX=F269h,AH=EBh"NetWare"

Top
21F204 - INT 21 - Novell NetWare - LOCK FILE SET (OLD)
INT 21 - Novell NetWare - LOCK FILE SET (OLD)
	AX = F204h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02096)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F203h,AX=F26Ah,AH=CBh"NetWare"

Format of NetWare "Lock File Set (old)" request packet:
Offset	Size	Description	(Table 02096)
 00h	WORD	lock timeout in clock ticks (0000h = don't wait)

Top
21F207 - INT 21 - Novell NetWare - CLEAR FILE
INT 21 - Novell NetWare - CLEAR FILE
	AX = F207h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02097)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=CEh,AH=EDh"NetWare",AH=F2h"NetWare",AX=F208h

Format of NetWare "Clear File" request packet:
Offset	Size	Description	(Table 02097)
 00h	BYTE	directory handle
 01h	BYTE	length of filename
 02h  N BYTEs	filename
SeeAlso: #02098

Top
21F208 - INT 21 - Novell NetWare - CLEAR FILE SET
INT 21 - Novell NetWare - CLEAR FILE SET
	AX = F208h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02098)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=CFh"NetWare",AH=F2h"NetWare",AX=F207h

Format of NetWare "Clear File Set" request packet:
Offset	Size	Description	(Table 02098)
 00h	BYTE	lock flag (nonzero to lock)
SeeAlso: #02097

Top
21F20A - INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET (OLD)
INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET (OLD)
	AX = F20Ah
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02479 at AX=F26Ch)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F204h,AX=F26Ch,AH=D1h"NetWare"

Top
21F20B - INT 21 - Novell NetWare - CLEAR LOGICAL RECORD
INT 21 - Novell NetWare - CLEAR LOGICAL RECORD
	AX = F20Bh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02099)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=D4h"NetWare",AH=F2h"NetWare",AX=F207h,AX=F20Eh

Format of NetWare "Clear Logical Record" request packet:
Offset	Size	Description	(Table 02099)
 00h	BYTE	length of record name (max 128)
 01h  N BYTEs	logical record name
SeeAlso: #02100

Top
21F20E - INT 21 - Novell NetWare - CLEAR LOGICAL RECORD SET
INT 21 - Novell NetWare - CLEAR LOGICAL RECORD SET
	AX = F20Eh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02100)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=D5h"NetWare",AH=F2h"NetWare",AX=F207h,AX=F20Bh

Format of NetWare "Clear Logical Record Set" request packet:
Offset	Size	Description	(Table 02100)
 00h	BYTE	lock flag
SeeAlso: #02099

Top
21F211SF06 - INT 21 - Novell NetWare - GET PRINTER STATUS
INT 21 - Novell NetWare - GET PRINTER STATUS
	AX = F211h subfn 06h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02101)
	ES:DI -> reply buffer (see #02102)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=E0h"NetWare",AH=F2h"Novell",AX=F211h/SF=0Ah

Format of NetWare "Get Printer Status" request packet:
Offset	Size	Description	(Table 02101)
 00h	WORD	length of following data
 02h	BYTE	06h (subfunction "Get Printer Status")
 03h	BYTE	target printer number (00h-04h)
SeeAlso: #02102,#01814

Format of NetWare "Get Printer Status" reply packet:
Offset	Size	Description	(Table 02102)
 00h	BYTE	flag: printer halted if FFh
 01h	BYTE	flag: printer off-line if FFh
 02h	BYTE	current form type
 03h	BYTE	redirected printer number
SeeAlso: #02101

Top
21F211SF0A - INT 21 - Novell NetWare - GET PRINTER QUEUE
INT 21 - Novell NetWare - GET PRINTER QUEUE
	AX = F211h subfn 0Ah
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02103)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F211h/SF=06h

Format of NetWare "Get Printer Queue" request packet:
Offset	Size	Description	(Table 02103)
 00h	WORD	length of following data
 02h	BYTE	0Ah (subfunction "Get Printer Queue")
	???

Top
21F212 - INT 21 - Novell NetWare - GET VOLUME INFO WITH NUMBER
INT 21 - Novell NetWare - GET VOLUME INFO WITH NUMBER
	AX = F212h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02104)
	ES:DI -> reply buffer (see #02105)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=15h,AX=F217h/SF=E9h

Format of NetWare "Get Volume Info with Number" request packet:
Offset	Size	Description	(Table 02104)
 00h	BYTE	volume number
SeeAlso: #02105

Format of NetWare "Get Volume Info with Number" reply packet:
Offset	Size	Description	(Table 02105)
 00h	WORD	sectors per cluster
 02h	WORD	total clusters in volume
 04h	WORD	free clusters
 06h	WORD	total directory entries for volume (FFFFh if not relevant)
 08h	WORD	available directory entries (FFFFh if not relevant)
 0Ah 16 BYTEs	volume name
 1Ah	WORD	removability
		0000h fixed media
		FFFFh removable
SeeAlso: #02104

Top
21F214CX0000 - INT 21 - Novell NetWare - GET FILE SERVER DATE AND TIME
INT 21 - Novell NetWare - GET FILE SERVER DATE AND TIME
	AX = F214h
	CX = 0000h (no request packet)
	DX = length of reply packet in bytes
	ES:DI -> buffer for reply packet (see #02106)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"NetWare",AH=E3h/SF=CAh,AH=E7h"NetWare"

Format of NetWare "Get File Server Date and Time" reply packet:
Offset	Size	Description	(Table 02106)
 00h	BYTE	year-1900 (80-179)
 01h	BYTE	month (1-12)
 02h	BYTE	day (1-31)
 03h	BYTE	hour
 04h	BYTE	minute
 05h	BYTE	second
 06h	BYTE	day of week
SeeAlso: #02012 at AH=E3h/SF=CAh,#02087 at AH=E7h

Top
21F215SF01 - INT 21 - Novell NetWare - GET BROADCAST MESSAGE (OLD)
INT 21 - Novell NetWare - GET BROADCAST MESSAGE (OLD)
	AX = F215h subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01822 at AH=E1h/SF=01h)
	ES:DI -> reply buffer (see #02107)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=01h,AX=F215h/SF=02h,AX=F215h/SF=0Bh

Format of NetWare "Get Broadcast Message (Old)" reply packet:
Offset	Size	Description	(Table 02107)
 00h	BYTE	length of message (00h-37h)
		00h if no broadcast messages pending
 01h  N BYTEs	message (no control characters or characters > 7Eh)
SeeAlso: #01821,#01822

Top
21F215SF02 - INT 21 - Novell NetWare - DISABLE BROADCASTS
INT 21 - Novell NetWare - DISABLE BROADCASTS
	AX = F215h subfn 02h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01823 at AH=E1h/SF=02h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=02h,AX=F215h/SF=01h,AX=F215h/SF=03h

Top
21F215SF03 - INT 21 - Novell NetWare - ENABLE BROADCASTS
INT 21 - Novell NetWare - ENABLE BROADCASTS
	AX = F215h subfn 03h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01824 at AH=E1h/SF=03h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=03h,AX=F215h/SF=01h,AX=F215h/SF=02h

Top
21F215SF08 - INT 21 - Novell NetWare - CHECK PIPE STATUS
INT 21 - Novell NetWare - CHECK PIPE STATUS
	AX = F215h subfn 08h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01835 at AH=E1h/SF=08h)
	ES:DI -> reply buffer (see #02108)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=08h,AX=F215h/SF=09h

Format of NetWare "Check Pipe Status" reply packet:
Offset	Size	Description	(Table 02108)
 00h	BYTE	number of connections
 01h  N BYTEs	list of pipe statuses
		00h open
		FEh incomplete
		FFh closed
SeeAlso: #01835,#01836

Top
21F215SF09 - INT 21 - Novell NetWare - BROADCAST TO CONSOLE
INT 21 - Novell NetWare - BROADCAST TO CONSOLE
	AX = F215h subfn 09h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01837 at AH=E1h/SF=09h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Note:	requires Access Control rights to the target directory or its parent
SeeAlso: AH=E1h/SF=09h,AH=F2h"NetWare",AX=F215h/SF=08h

Top
21F215SF0B - INT 21 - Novell NetWare - GET BROADCAST MESSAGE
INT 21 - Novell NetWare - GET BROADCAST MESSAGE
	AX = F215h subfn 0Bh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02109)
	ES:DI -> reply buffer (see #02110)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=01h,AX=F215h/SF=01h

Format of NetWare "Get Broadcast Message" request packet:
Offset	Size	Description	(Table 02109)
 00h	WORD	length of following data
 02h	BYTE	0Bh (subfunction "Get Broadcast Message")
SeeAlso: #02110,#01821

Format of NetWare "Get Broadcast Message" reply packet:
Offset	Size	Description	(Table 02110)
 00h	BYTE	length of message
 01h  N BYTEs	message
SeeAlso: #02109,#01822

Top
21F216SF00 - INT 21 - Novell NetWare - SET DIRECTORY HANDLE
INT 21 - Novell NetWare - SET DIRECTORY HANDLE
	AX = F216h subfn 00h
	CX = length of request buffer in bytes
	DX = 0000h (no reply buffer)
	DS:SI -> request buffer (see #01840 at AH=E2h/SF=00h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=00h,AX=F216h/SF=01h

Top
21F216SF01 - INT 21 - Novell NetWare - GET DIRECTORY PATH
INT 21 - Novell NetWare - GET DIRECTORY PATH
	AX = F216h subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01842 at AH=E2h/SF=01h)
	ES:DI -> reply buffer (see #01843)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=01h,AX=F216h/SF=00h

Top
21F216SF02 - INT 21 - Novell NetWare - SCAN DIRECTORY INFORMATION
INT 21 - Novell NetWare - SCAN DIRECTORY INFORMATION
	AX = F216h subfn 02h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01844 at AH=E2h/SF=02h)
	ES:DI -> reply buffer (see #02111)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=02h,AX=F216h/SF=01h,AX=F216h/SF=03h

Format of NetWare "Scan Directory Information" reply packet:
Offset	Size	Description	(Table 02111)
 00h 16 BYTEs	subdirectory name
 10h	DWORD	(big-endian) date and time of creation (see #01846)
 14h	DWORD	(big-endian) object ID of owner
 18h	BYTE	maximum directory rights (see #01849)
 19h	BYTE	unused
 1Ah	WORD	(big-endian) subdirectory number
SeeAlso: #01844,#01845 at AH=E2h/SF=02h

Top
21F216SF03 - INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS (OLD)
INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS (OLD)
	AX = F216h subfn 03h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01847 at AH=E2h/SF=03h)
	ES:DI -> reply buffer (see #02112)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=E2h/SF=03h,AX=F216h/SF=02h,AX=F216h/SF=04h,AX=F257h/SF=1Dh

Format of NetWare "Get Effective Directory Rights (old)" reply buffer:
Offset	Size	Description	(Table 02112)
 00h	BYTE	effective directory rights (see #01849 at AH=E2h/SF=03h)
SeeAlso: #01847,#01848 at AH=E2h/SF=03h

Top
21F216SF04 - INT 21 - Novell NetWare - MODIFY MAXIMUM RIGHTS MASK
INT 21 - Novell NetWare - MODIFY MAXIMUM RIGHTS MASK
	AX = F216h subfn 04h
	CX = length of request buffer in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01850 at AH=E2h/SF=04h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=04h,AX=F216h/SF=03h,AX=F216h/SF=05h

Top
21F216SF05 - INT 21 - Novell NetWare - GET VOLUME NUMBER
INT 21 - Novell NetWare - GET VOLUME NUMBER
	AX = F216h subfn 05h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01852 at AH=E2h/SF=05h)
	ES:DI -> reply buffer (see #02113)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=05h,AX=F216h/SF=02h,AX=F216h/SF=06h

Format of NetWare "Get Volume Number" reply packet:
Offset	Size	Description	(Table 02113)
 00h	BYTE	volume number
SeeAlso: #01852 at AH=E2h/SF=05h

Top
21F216SF06 - INT 21 - Novell NetWare - GET VOLUME NAME
INT 21 - Novell NetWare - GET VOLUME NAME
	AX = F216h subfn 06h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01854 at AH=E2h/SF=06h)
	ES:DI -> reply buffer (see #02114)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=06h,AX=F216h/SF=05h,AX=F216h/SF=0Ah

Format of NetWare "Get Volume Name" reply packet:
Offset	Size	Description	(Table 02114)
SeeAlso: #01854,#01855 at AH=E2h/SF=06h

Top
21F216SF0A - INT 21 - Novell NetWare - CREATE DIRECTORY
INT 21 - Novell NetWare - CREATE DIRECTORY
	AX = F216h subfn 0Ah
	CX = length of request buffer in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01856 at AH=E2h/SF=0Ah)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=39h,AH=F2h"Novell",AH=E2h/SF=0Ah,AX=F216h/SF=0Bh

Top
21F216SF0B - INT 21 - Novell NetWare - DELETE DIRECTORY
INT 21 - Novell NetWare - DELETE DIRECTORY
	AX = F216h subfn 0Bh
	CX = length of request buffer in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01858 at AH=E2h/SF=0Bh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Ah,AH=F2h"Novell",AH=E2h/SF=0Bh,AX=F216h/SF=0Ah

Top
21F216SF0C - INT 21 - Novell NetWare - SCAN DIRECTORY FOR TRUSTEES
INT 21 - Novell NetWare - SCAN DIRECTORY FOR TRUSTEES
	AX = F216h subfn 0Ch
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #01859 at AH=E2h/SF=0Ch)
	ES:DI -> reply buffer (see #02115)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Ch,AX=F216h/SF=0Dh

Format of NetWare "Scan Directory For Trustees" reply packet:
Offset	Size	Description	(Table 02115)
 02h 16 BYTEs	directory name
 12h  4 BYTEs	date and time of creation
 16h	DWORD	(big-endian) object ID of owner
 1Ah  5 DWORDs	(big-endian) object IDs of Trustees 0 through 4
		00000000h = end of group
 2Eh  5 BYTEs	directory rights for Trustees 0 through 4 (see #01849)
SeeAlso: #01859 at AH=E2h/SF=0Ch

Top
21F216SF0D - INT 21 - Novell NetWare - ADD TRUSTEE TO DIRECTORY
INT 21 - Novell NetWare - ADD TRUSTEE TO DIRECTORY
	AX = F216h subfn 0Dh
	CX = length of request buffer in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01861 at AH=E2h/SF=0Dh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Note:	requires Access Control rights to the target directory or its parent
SeeAlso: AH=F2h"NetWare",AH=E2h/SF=0Dh,AX=F216h/SF=0Ch,AX=F216h/SF=0Eh

Top
21F216SF0E - INT 21 - Novell NetWare - DELETE TRUSTEE FROM DIRECTORY
INT 21 - Novell NetWare - DELETE TRUSTEE FROM DIRECTORY
	AX = F216h subfn 0Eh
	CX = length of request buffer in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01862 at AH=E2h/SF=0Eh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Eh,AX=F216h/SF=0Ch,AX=F216h/SF=0Dh

Top
21F216SF0F - INT 21 - Novell NetWare - RENAME DIRECTORY
INT 21 - Novell NetWare - RENAME DIRECTORY
	AX = F216h subfn 0Fh
	CX = length of request buffer in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01864 at AH=E2h/SF=0Fh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Fh,AX=F216h/SF=0Ah

Top
21F216SF10 - INT 21 - Novell NetWare - PURGE ERASED FILES (OLD)
INT 21 - Novell NetWare - PURGE ERASED FILES (OLD)
	AX = F216h subfn 10h
	CX = length of request buffer in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01865 at AH=E2h/SF=10h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=10h,AX=F216h/SF=11h

Top
21F216SF11 - INT 21 - Novell NetWare - RECOVER ERASED FILE (OLD)
INT 21 - Novell NetWare - RECOVER ERASED FILE (OLD)
	AX = F216h subfn 11h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01867 at AH=E2h/SF=11h)
	ES:DI -> reply buffer (see #02116)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=11h,AX=F216h/SF=10h

Format of NetWare "Recover Erased File (Old)" reply packet:
Offset	Size	Description	(Table 02116)
 02h 15 BYTEs	ASCIZ name of erased file
 11h 15 BYTEs	ASCIZ name under which file was restored
SeeAlso: #01867,#01868 at AH=E2h/SF=11h

Top
21F216SF12 - INT 21 - Novell NetWare - ALLOCATE PERMANENT DIRECTORY HANDLE
INT 21 - Novell NetWare - ALLOCATE PERMANENT DIRECTORY HANDLE
	AX = F216h subfn 12h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01869 at AH=E2h/SF=12h)
	ES:DI -> reply buffer (see #02118)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=16h,AH=E2h/SF=12h

Format of NetWare IPX fragment list entry:
Offset	Size	Description	(Table 02117)
 00h	DWORD	-> fragment data
 04h	WORD	size of fragment in bytes

Format of NetWare "Allocate Permanent Directory Handle" reply packet:
Offset	Size	Description	(Table 02118)
 00h	BYTE	new directory handle
 01h	BYTE	access rights
SeeAlso: #01869,#01873,#02117

Top
21F216SF13 - INT 21 - Novell NetWare - ALLOCATE TEMPORARY DIRECTORY HANDLE
INT 21 - Novell NetWare - ALLOCATE TEMPORARY DIRECTORY HANDLE
	AX = F216h subfn 13h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01871 at AH=E2h/SF=13h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=12h,AX=F216h/SF=16h,AH=E2h/SF=13h

Top
21F216SF14 - INT 21 - Novell NetWare - DEALLOCATE DIRECTORY HANDLE
INT 21 - Novell NetWare - DEALLOCATE DIRECTORY HANDLE
	AX = F216h subfn 14h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01872 at AH=E2h/SF=14h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=14h,AX=F216h/SF=13h,AX=F216h/SF=16h

Top
21F216SF15 - INT 21 - Novell NetWare - GET VOLUME INFO WITH HANDLE
INT 21 - Novell NetWare - GET VOLUME INFO WITH HANDLE
	AX = F216h subfn 15h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01874 at AH=E2h/SF=15h)
	ES:DI -> reply buffer (see #02119)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=15h,AX=F212h,AX=F216h/SF=13h

Format of NetWare "Get Volume Info With Handle" reply packet:
Offset	Size	Description	(Table 02119)
 00h	WORD	(big-endian) sectors per block
 02h	WORD	(big-endian) total blocks on volume
 04h	WORD	(big-endian) blocks available on volume
 06h	WORD	(big-endian) total directory slots
 08h	WORD	(big-endian) directory slots available
 0Ah 16 BYTEs	NUL-padded volume name
 1Ah	WORD	(big-endian) flag: volume removable if nonzero
SeeAlso: #01874 at AH=E2h/SF=15h

Top
21F216SF16 - INT 21 - Novell NetWare v2+ - ALLOCATE SPECIAL TEMPORARY DIRECTORY HANDLE
INT 21 - Novell NetWare v2+ - ALLOCATE SPECIAL TEMPORARY DIRECTORY HANDLE
	AX = F216h subfn 16h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01876 at AH=E2h/SF=16h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=12h,AX=F216h/SF=13h,AH=E2h/SF=16h

Top
21F216SF17 - INT 21 - Novell NetWare - SAVE DIRECTORY HANDLE
INT 21 - Novell NetWare - SAVE DIRECTORY HANDLE
	AX = F216h subfn 17h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01877 at AH=E2h/SF=17h)
	ES:DI -> reply buffer (see #02120)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=17h,AX=F216h/SF=18h

Format of NetWare "Save Directory Handle" reply packet:
Offset	Size	Description	(Table 02120)
 00h 16 BYTEs	save buffer
SeeAlso: #01877,#01878,#02121

Top
21F216SF18 - INT 21 - Novell NetWare - RESTORE DIRECTORY HANDLE
INT 21 - Novell NetWare - RESTORE DIRECTORY HANDLE
	AX = F216h subfn 18h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01879 at AH=E2h/SF=18h)
	ES:DI -> reply buffer (see #02121)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=18h,AX=F216h/SF=17h

Format of NetWare "Restore Directory Handle" reply packet:
Offset	Size	Description	(Table 02121)
 00h	BYTE	new directory handle
 01h	BYTE	effective rights (see #01849)
SeeAlso: #01880,#02120

Top
21F216SF19 - INT 21 - Novell NetWare - SET DIRECTORY INFORMATION
INT 21 - Novell NetWare - SET DIRECTORY INFORMATION
	AX = F216h subfn 19h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01881 at AH=E2h/SF=19h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=19h,AX=F216h/SF=17h

Top
21F216SF1A - INT 21 - Novell NetWare - GET PATH NAME OF VOLUME-DIRECTORY NUMBER PAIR
INT 21 - Novell NetWare - GET PATH NAME OF VOLUME-DIRECTORY NUMBER PAIR
	AX = F216h subfn 1Ah
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01883 at AH=E2h/SF=1Ah)
	ES:DI -> reply buffer (see #02122)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=1Ah,AX=F216h/SF=0Eh

Format of NetWare "Get Path Name Of Volume-Dir Number Pair" reply packet:
Offset	Size	Description	(Table 02122)
 00h 256 BYTEs	path
SeeAlso: #01883,#01884 at AH=E2h/SF=1Ah

Top
21F216SF1B - INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES (OLD)
INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES (OLD)
	AX = F216h subfn 1Bh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02123)
	ES:DI -> reply buffer (see #02124)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Ch,AX=F216h/SF=1Dh,AX=F257h/SF=10h

Format of NetWare "Scan Salvageable Files (Old)" request packet:
Offset	Size	Description	(Table 02123)
 00h	WORD	length of following data
 02h	BYTE	1Bh (subfunction "Scan Salvageable Files (Old)")
 03h	BYTE	directory handle
 04h	DWORD	last sequence number (set to FFFFFFFFh before first call)
SeeAlso: #02124,#02399

Format of NetWare "Scan Salvageable Files (Old)" reply packet:
Offset	Size	Description	(Table 02124)
 00h	DWORD	next sequence number
 04h	WORD	subdirectory
 06h	DWORD	attributes
 0Ah	BYTE	unique ID
 0Bh	BYTE	flags
 0Ch	BYTE	name space
 0Dh	BYTE	length of filename
 0Eh 14 BYTEs	filename
 1Ah	DWORD	creation date and time
 1Eh	DWORD	owner ID
 22h	DWORD	last-backup date and time
 26h	DWORD	last-backup ID
 2Ah	DWORD	last-modified date and time
 2Eh	WORD	???
 30h	DWORD	last-modified ID
 34h	DWORD	file size
 38h 44 BYTEs	reserved
 62h	WORD	inherited rights mask
 64h	WORD	last-access date
 66h	DWORD	deleted file's time
 6Ah	DWORD	deletion date and time
 6Eh	DWORD	ID of deletor
 72h 16 BYTEs	reserved
SeeAlso: #02123,#02400

Top
21F216SF1C - INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE (OLD)
INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE (OLD)
	AX = F216h subfn 1Ch
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02125)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F216h/SF=1Dh,AX=F257h/SF=11h

Format of NetWare "Recover Salvageable File (Old)" request packet:
Offset	Size	Description	(Table 02125)
 00h	WORD	length of following data
 02h	BYTE	1Ch (subfunction "Recover Salvageable File (Old)")
 03h	BYTE	directory handle
 04h	DWORD	sequence number (set to ? before first call)
 08h	BYTE	length of filename
 09h  N BYTEs	filename in DOS format
	BYTE	length of new name for recovered file
      N BYTEs	recovered filename in NetWare VOLUME:DIRECTORY/.../FILE format
SeeAlso: #02401

Top
21F216SF1D - INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE (OLD)
INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE (OLD)
	AX = F216h subfn 1Dh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02126)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F216h/SF=1Ch,AX=F257h/SF=12h

Format of NetWare "Purge Salvageable File (old)" request packet:
Offset	Size	Description	(Table 02126)
 00h	WORD	length of following data
 02h	BYTE	1Dh (subfunction "Purge Salvageable File (Old)")
 03h	BYTE	directory handle
 04h	DWORD	directory entry
 08h	DWORD	sequence number from Scan Salvageable Files

Top
21F216SF1E - INT 21 - Novell NetWare - SCAN A DIRECTORY
INT 21 - Novell NetWare - SCAN A DIRECTORY
	AX = F216h subfn 1Eh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02127)
	ES:DI -> reply buffer (see #02128)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=02h,AX=F216h/SF=1Fh

Format of NetWare "Scan A Directory" request packet:
Offset	Size	Description	(Table 02127)
 00h	WORD	length of following data
 02h	BYTE	1Eh (subfunction "Scan A Directory")
 03h	BYTE	directory handle
 04h	BYTE	search attributes
 05h	DWORD	sequence number
 09h	BYTE	length of search filespec
 0Ah  N BYTEs	search filespec
SeeAlso: #02128

Format of NetWare "Scan A Directory" reply packet:
Offset	Size	Description	(Table 02128)
 00h	DWORD	sequence number (copy into next request packet)
 04h	DWORD	subdirectory
 08h	DWORD	attributes
 0Ch	BYTE	unique ID
 0Dh	BYTE	flags
 0Eh	BYTE	name space
 0Fh	BYTE	length of filename
---DOS file---
 10h 12 BYTEs	DOS filename
 1Ch	DWORD	creation date and time
 20h	DWORD	owner ID
 24h	DWORD	last-archived date and time
 28h	DWORD	last-archived ID
 2Ch	DWORD	last-updated date and time
 30h	DWORD	last-updated ID
 34h	DWORD	file size
 38h 44 BYTEs	reserved
 64h	WORD	inherited rights mask
 66h	WORD	last-accessed date
 68h 28 BYTEs	reserved
---DOS subdirectory---
 10h 12 BYTEs	DOS directory name
 1Ch	DWORD	creation date and time
 20h	DWORD	owner ID
 24h	DWORD	last-archived date and time
 28h	DWORD	last-archived ID
 2Ch	DWORD	last-updated date and time
 30h	DWORD	next trustee entry
 34h 48 BYTEs	reserved
 64h	DWORD	maximum space
 68h	WORD	inherited rights mask
 6Ah 26 BYTEs	unused
SeeAlso: #02127

Top
21F216SF1F - INT 21 - Novell NetWare - GET DIRECTORY ENTRY
INT 21 - Novell NetWare - GET DIRECTORY ENTRY
	AX = F216h subfn 1Fh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02129)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Eh

Format of NetWare "Get Directory Entry" request packet:
Offset	Size	Description	(Table 02129)
 00h	WORD	length of following data
 02h	BYTE	1Fh (subfunction "Get Directory Entry")
	???

Top
21F216SF20 - INT 21 - Novell NetWare - SCAN VOLUME'S USER DISK RESTRICTIONS
INT 21 - Novell NetWare - SCAN VOLUME'S USER DISK RESTRICTIONS
	AX = F216h subfn 20h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02130)
	ES:DI -> reply buffer (see #02131)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=23h,AX=F216h/SF=29h

Format of NetWare "Scan Volume's User Disk Restrictions" request packet:
Offset	Size	Description	(Table 02130)
 00h	WORD	length of following data
 02h	BYTE	20h (subfunction "Scan Volume's User Disk Restrictions")
 03h	BYTE	volume number
 04h	DWORD	sequence number (set to 00000000h before first call)
SeeAlso: #02131

Format of NetWare "Scan Volume's User Disk Restrictions" reply packet:
Offset	Size	Description	(Table 02131)
 00h	BYTE	number of entries returned (max 12)
 01h 2N DWORDs	restriction entries [array]
		Offset	Size	Description
		 00h	DWORD	object ID
		 04h	DWORD	maximum usage allowed (in 4K blocks)
SeeAlso: #02130

Top
21F216SF21 - INT 21 - Novell NetWare v3+ - ADD USER DISK SPACE RESTRICTION
INT 21 - Novell NetWare v3+ - ADD USER DISK SPACE RESTRICTION
	AX = F216h subfn 21h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02132)
	ES:DI -> reply buffer (ignored)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F216h/SF=20h,AX=F216h/SF=22h,AX=F216h/SF=24h

Format of NetWare "Add User Disk Space Restriction" request buffer:
Offset	Size	Description	(Table 02132)
 00h	WORD	000Ah (length of following data)
 02h	BYTE	21h (subfunction "Add User Disk Space Restriction")
 03h	BYTE	volume number
 04h	DWORD	(big-endian) object ID
 08h	DWORD	(big-endian) disk space limit in 4K blocks
		00000000h to 40000000h

Top
21F216SF22 - INT 21 - Novell NetWare - REMOVE USER DISK SPACE RESTRICTIONS
INT 21 - Novell NetWare - REMOVE USER DISK SPACE RESTRICTIONS
	AX = F216h subfn 22h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02133)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=21h,AX=F216h/SF=23h

Format of NetWare "Remove User Disk Space Restrictions" request packet:
Offset	Size	Description	(Table 02133)
 00h	WORD	length of following data
 02h	BYTE	22h (subfunction "Remove User Disk Space Restrictions")
	???

Top
21F216SF23 - INT 21 - Novell NetWare - SCAN DIRECTORY SPACE RESTRICTIONS
INT 21 - Novell NetWare - SCAN DIRECTORY SPACE RESTRICTIONS
	AX = F216h subfn 23h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02134)
	ES:DI -> reply buffer (see #02135)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=21h,AX=F216h/SF=22h

Format of NetWare "Scan Directory Space Restrictions" request packet:
Offset	Size	Description	(Table 02134)
 00h	WORD	length of following data
 02h	BYTE	23h (subfunction "Scan Directory Space Restrictions")
 03h	BYTE	directory handle
SeeAlso: #02135

Format of NetWare "Scan Directory Space Restrictions" reply packet:
Offset	Size	Description	(Table 02135)
 00h	BYTE	number of entries returned
 01h 10N BYTEs	restrictions [array]
		Offset	Size	Description
		 00h	WORD	depth of directory from root
		 02h	DWORD	maximum space allowed for files in directory
		 04h	DWORD	current space used by files in directory
SeeAlso: #02134

Top
21F216SF24 - INT 21 - Novell NetWare v3+ - SET DIRECTORY DISK SPACE RESTRICTION
INT 21 - Novell NetWare v3+ - SET DIRECTORY DISK SPACE RESTRICTION
	AX = F216h subfn 24h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02136)
	ES:DI -> reply buffer (ignored)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F216h/SF=21h,AX=F216h/SF=22h,AX=F216h/SF=23h,AX=F216h/SF=25h

Format of NetWare "Set Directory Disk Space Restriction" request buffer:
Offset	Size	Description	(Table 02136)
 00h	WORD	0006h (length of following data)
 02h	BYTE	24h (subfunction "Set Directory Disk Space Restriction")
 03h	BYTE	directory handle
 04h	DWORD	(big-endian) disk space limit in 4K blocks
		00000000h to remove restriction, negative to set to 0 blocks

Top
21F216SF25 - INT 21 - Novell NetWare - SET DIRECTORY/FILE INFORMATION
INT 21 - Novell NetWare - SET DIRECTORY/FILE INFORMATION
	AX = F216h subfn 25h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02137)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=02h

Format of NetWare "Set Directory/File Information" request packet:
Offset	Size	Description	(Table 02137)
 00h	WORD	length of following data
 02h	BYTE	25h (subfunction "Set Directory/File Information")
 03h	BYTE	directory handle
 04h	BYTE	search attributes
 05h	DWORD	sequence number
 09h	DWORD	change bits
 0Dh	DWORD	directory number
 11h	DWORD	attributes
 15h	BYTE	unique ID
 16h	BYTE	flags
 17h	BYTE	name space (see #02387)
 18h	BYTE	length of directory/file name
 19h 12 BYTEs	directory/file name
 25h	DWORD	creation date and time
 29h	DWORD	(big-endian) owner ID
 2Dh	DWORD	last-backup date and time
 31h	DWORD	(big-endian) last-backup ID
 35h	DWORD	last-modification date and time
 39h	DWORD	(big-endian) last-modification ID
 3Dh	DWORD	file size
 41h	DWORD	data fork first FAT
 45h	DWORD	next trustee entry
 49h 36 BYTEs	reserved
 6Dh	WORD	inherited rights mask
 6Fh	WORD	last-access date
 71h 20 BYTEs	reserved
 85h	DWORD	primary entry
 89h	DWORD	name list

Top
21F216SF26 - INT 21 - Novell NetWare v3+ - SCAN FILE OR DIRECTORY FOR EXTENDED TRUSTEES
INT 21 - Novell NetWare v3+ - SCAN FILE OR DIRECTORY FOR EXTENDED TRUSTEES
	AX = F216h subfn 26h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02138)
	ES:DI -> reply buffer (see #02139)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Desc:	get up to 20 extended trustee entries per call for a file or directory

Format of NetWare "Scan File/Directory for Extended Trustees" request buffer:
Offset	Size	Description	(Table 02138)
 00h	WORD	length of following data
 02h	BYTE	26h (subfunc "Scan File or Directory For Extended Trustees")
 03h	BYTE	directory handle
 04h	BYTE	sequence number
		00h for first call, increment by number of returned entries
 05h	BYTE	length of path
 06h  N BYTEs	pathname
SeeAlso: #02138

Format of NetWare "Scan File/Directory for Extended Trustees" reply buffer:
Offset	Size	Description	(Table 02139)
 00h	BYTE	number of entries returned (max 20)
 01h 20 DWORDs	(big-endian) list of object IDs
 51h 20 WORDs	list of associated trustee rights
SeeAlso: #02139

Top
21F216SF27 - INT 21 - Novell NetWare v3+ - ADD EXTENDED TRUSTEE TO DIRECTORY OR FILE
INT 21 - Novell NetWare v3+ - ADD EXTENDED TRUSTEE TO DIRECTORY OR FILE
	AX = F216h subfn 27h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02140)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)

Format of NetWare "Add Extended Trustee to Directory or File" request buffer:
Offset	Size	Description	(Table 02140)
 00h	WORD	length of following data
 02h	BYTE	27h (subfunction "Add Extended Trustee to Directory or File")
 03h	BYTE	directory handle
 04h	DWORD	(big-endian) object ID
 08h	WORD	trustee rights (see #02141)
 0Ah	BYTE	path length
 0Bh  N BYTEs	path name

Bitfields for NetWare trustee rights:
Bit(s)	Description	(Table 02141)
 0	read
 1	write
 3	create
 4	delete
 5	access
 6	file
 7	modify
 8	supervisor

Top
21F216SF28 - INT 21 - Novell NetWare - SCAN DIRECTORY DISK SPACE
INT 21 - Novell NetWare - SCAN DIRECTORY DISK SPACE
	AX = F216h subfn 28h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02142)
	ES:DI -> reply buffer (see #02143)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=02h,AX=F216h/SF=20h

Format of NetWare "Scan Directory Disk Space" request packet:
Offset	Size	Description	(Table 02142)
 00h	WORD	length of following data
 02h	BYTE	28h (subfunction "Scan Directory Disk Space")
 03h	BYTE	directory handle
 04h	BYTE	search attributes
 05h	DWORD	sequence number (set to FFFFFFFFh before first call)
 09h	BYTE	length of filespec
 0Ah  N BYTEs	search filespec
SeeAlso: #02143

Format of NetWare "Scan Directory Disk Space" reply packet:
Offset	Size	Description	(Table 02143)
 00h	DWORD	next sequence number
 04h	DWORD	(big-endian) subdirectory number
 08h	DWORD	(big-endian) attributes
 0Ch	BYTE	unique ID
 0Dh	BYTE	flags
 0Eh	BYTE	name space (see #02387)
 0Fh	BYTE	length of name
 10h 12 BYTEs	name
 1Ch	DWORD	creation date and time
 20h	DWORD	owner ID
 24h	DWORD	date and time last backed up
 28h	DWORD	last-backup ID
 2Ch	DWORD	date and time last modified
 30h	DWORD	last-modification ID
 34h	DWORD	data fork size
 38h	DWORD	data fork first FAT
 3Ch	DWORD	next trustee entry
 40h 36 BYTEs	reserved
 64h	WORD	inherited rights mask
 66h	WORD	last-access date
 68h	DWORD	deleted file date and time
 6Ch	DWORD	date and time file was deleted
 70h	DWORD	deleted ID
 74h  8 BYTEs	undefined
 7Ch	DWORD	primary entry
 80h	DWORD	name list
 84h	DWORD	other file fork size
SeeAlso: #02142

Top
21F216SF29 - INT 21 - Novell NetWare v3+ - GET OBJECT DISK USAGE AND RESTRICTIONS
INT 21 - Novell NetWare v3+ - GET OBJECT DISK USAGE AND RESTRICTIONS
	AX = F216h subfn 29h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02144)
	ES:DI -> reply buffer (see #02145)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
Note:	this function returns successfully, showing no restriction, if an
	  invalid object ID is specified
SeeAlso: AX=F216h/SF=24h,AX=F216h/SF=33h

Format of NetWare "Get Object Disk Restrictions" request buffer:
Offset	Size	Description	(Table 02144)
 00h	WORD	0006h (length of following data)
 02h	BYTE	21h (subfunction "Get Object Disk Restrictions")
 03h	BYTE	volume number
 04h	DWORD	(big-endian) object ID
SeeAlso: #02145

Format of NetWare "Get Object Disk Restrictions" reply buffer:
Offset	Size	Description	(Table 02145)
 00h	DWORD	disk space limit
 04h	DWORD	disk space currently in use by object
SeeAlso: #02144

Top
21F216SF2A - INT 21 - Novell NetWare - GET EFFECTIVE RIGHTS
INT 21 - Novell NetWare - GET EFFECTIVE RIGHTS
	AX = F216h subfn 2Ah
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02146)
	ES:DI -> reply buffer (see #02147)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=32h

Format of NetWare "Get Effective Rights" request packet:
Offset	Size	Description	(Table 02146)
 00h	WORD	length of following data
 02h	BYTE	2Ah (subfunction "Get Effective Rights")
	???

Top
21F216SF2B - INT 21 - Novell NetWare - REMOVE EXTENDED TRUSTEE FROM DIR OR FILE
INT 21 - Novell NetWare - REMOVE EXTENDED TRUSTEE FROM DIR OR FILE
	AX = F216h subfn 2Bh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02117,#02147)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=26h,AX=F216h/SF=27h

Format of NetWare "Remove Extended Trustee From Dir Or File" request packet:
Offset	Size	Description	(Table 02147)
 00h	WORD	length of following data
 02h	BYTE	2Bh (subfunction "Remove Extended Trustee From Dir Or File")
 03h	BYTE	directory handle
 04h	DWORD	trustee's object ID
 08h	BYTE	unused
 09h	BYTE	length of pathname
 0Ah  N BYTEs	directory path in form VOLUME:DIRECTORY/.../DIRECTORY

Top
21F216SF2C - INT 21 - Novell NetWare - GET VOLUME USAGE
INT 21 - Novell NetWare - GET VOLUME USAGE
	AX = F216h subfn 2Ch
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02148)
	ES:DI -> reply buffer (see #02149)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=29h

Format of NetWare "Get Volume Usage" request packet:
Offset	Size	Description	(Table 02148)
 00h	WORD	length of following data
 02h	BYTE	2Ch (subfunction "Get Volume Usage")
	???

Top
21F216SF2D - INT 21 - Novell NetWare - GET DIRECTORY INFORMATION
INT 21 - Novell NetWare - GET DIRECTORY INFORMATION
	AX = F216h subfn 2Dh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02149)
	ES:DI -> reply buffer (see #02150)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=2Ch,AX=F216h/SF=2Eh

Format of NetWare "Get Directory Information" request packet:
Offset	Size	Description	(Table 02149)
 00h	WORD	length of following data
 02h	BYTE	2Dh (subfunction "Get Directory Information")
 03h	BYTE	directory handle
SeeAlso: #02150

Format of NetWare "Get Directory Information" reply packet:
Offset	Size	Description	(Table 02150)
 00h	DWORD	total blocks
 04h	DWORD	available blocks
 08h	DWORD	total number of directory entries
 0Ch	DWORD	number of available directory entries
 10h  4 BYTEs	reserved
 14h	BYTE	sectors per block
 15h	BYTE	length of volume name
 16h  N BYTEs	volume name
SeeAlso: #02149

Top
21F216SF2E - INT 21 - Novell NetWare - RENAME OR MOVE
INT 21 - Novell NetWare - RENAME OR MOVE
	AX = F216h subfn 2Eh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02151)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=34h,AX=F223h/SF=07h,AX=F244h

Format of NetWare "Rename Or Move" request packet:
Offset	Size	Description	(Table 02151)
 00h	WORD	length of following data
 02h	BYTE	2Eh (subfunction "Rename Or Move")
 03h	BYTE	source directory handle
 04h	BYTE	search attributes
 05h	BYTE	source path component count
 06h  N BYTEs	source path
	BYTE	destination directory handle
	BYTE	destination path component count
      N BYTEs	destination path

Top
21F216SF2F - INT 21 - Novell NetWare - GET NAME SPACE INFORMATION
INT 21 - Novell NetWare - GET NAME SPACE INFORMATION
	AX = F216h subfn 2Fh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02152)
	ES:DI -> reply buffer (see #02153)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=30h,AX=F257h/SF=18h

Format of NetWare "Get Name Space Information" request packet:
Offset	Size	Description	(Table 02152)
 00h	WORD	length of following data
 02h	BYTE	2Fh (subfunction "Get Name Space Information")
 03h	BYTE	volume number
SeeAlso: #02153

Format of NetWare "Get Name Space Information" request packet:
Offset	Size	Description	(Table 02153)
 00h	BYTE	length of namespace name
 01h  N BYTEs	name of namespace
	BYTE	number of data streams
	var	data stream information [one entry per data stream]
		Offset	Size	Description
		 00h	BYTE	associated name space
		 01h	BYTE	length of data stream name
		 02h  N BYTEs	data stream name
	BYTE	number of loaded name spaces
	BYTE	bitmap of loaded name spaces
      N BYTEs	list of name spaces being used
	BYTE	index number
SeeAlso: #02152

Top
21F216SF30 - INT 21 - Novell NetWare - GET NAME SPACE DIRECTORY ENTRY
INT 21 - Novell NetWare - GET NAME SPACE DIRECTORY ENTRY
	AX = F216h subfn 30h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02154)
	ES:DI -> reply buffer (see #02155)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=2Fh

Format of NetWare "Get Name Space Directory Entry" request packet:
Offset	Size	Description	(Table 02154)
 00h	WORD	length of following data
 02h	BYTE	30h (subfunction "Get Name Space Directory Entry")
 03h	BYTE	volume number
 04h	DWORD	sequence number (set to 00000000h before first call)
 08h	BYTE	name space (see #02387)
SeeAlso: #02155

Format of NetWare "Get Name Space Directory Entry" request packet:
Offset	Size	Description	(Table 02155)
 00h	DWORD	next sequence number
 04h	DWORD	subdirectory
 08h	DWORD	attributes
 0Ch	BYTE	unique ID
 0Dh	BYTE	flags
 0Eh	BYTE	name space (see #02387)
 0Fh	BYTE	length of name
 10h 12 BYTEs	filename
 1Ch	DWORD	creation date and time
 20h	DWORD	(big-endian) owner ID
 24h	DWORD	last-backup date and time
 28h	DWORD	(big-endian) last-backup ID
 2Ch	DWORD	last-modification date and time
---DOS file---
 30h	DWORD	(big-endian) last-modification ID
 34h	DWORD	file size
 38h 44 BYTEs	reserved
 64h	WORD	inherited rights mask
 66h	WORD	last-access date
 68h 28 BYTEs	reserved
---DOS subdirectory---
 30h	DWORD	next trustee entry
 34h 48 BYTEs	reserved
 64h	WORD	maximum space
 66h	WORD	inherited rights mask
 68h 26 BYTEs	reserved
---Macintosh subdirectory---
 10h 32 BYTEs	Mac filename
 30h	DWORD	resource fork
 34h	DWORD	resource fork size
 38h 32 BYTEs	Finder information
 58h  6 BYTEs	ProDOS information
 5Eh 38 BYTEs	reserved
SeeAlso: #02154

Top
21F216SF31 - INT 21 - Novell NetWare - OPEN DATA STREAM
INT 21 - Novell NetWare - OPEN DATA STREAM
	AX = F216h subfn 31h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02156)
	ES:DI -> reply buffer (see #02157)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=30h

Format of NetWare "Open Data Stream" request packet:
Offset	Size	Description	(Table 02156)
 00h	WORD	length of following data
 02h	BYTE	31h (subfunction "Open Data Stream")
 03h	BYTE	data stream
 04h	BYTE	directory handle
 05h	BYTE	file attributes
 06h	BYTE	open rights
 07h	BYTE	length of filename
 08h  N BYTEs	filename (8.3)
SeeAlso: #02157

Format of NetWare "Open Data Stream" reply packet:
Offset	Size	Description	(Table 02157)
 00h	DWORD	file handle
SeeAlso: #02156

Top
21F216SF32 - INT 21 - Novell NetWare v2.2+ - GET OBJECT EFFECTIVE RIGHTS
INT 21 - Novell NetWare v2.2+ - GET OBJECT EFFECTIVE RIGHTS
	AX = F216h subfn 32h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02158)
	ES:DI -> reply buffer (see #02159)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F216h/SF=29h

Format of NetWare "Get Object Effective Rights" request buffer:
Offset	Size	Description	(Table 02158)
 00h	WORD	length of following data
 02h	BYTE	32h (subfunction "Get Object Effective Rights")
 03h	DWORD	object ID
 07h	BYTE	directory handle
 08h	var	counted path string
SeeAlso: #02159

Format of NetWare "Get Object Effective Rights" reply buffer:
Offset	Size	Description	(Table 02159)
 00h	WORD	object's effective rights
 02h  6 BYTEs	reserved
SeeAlso: #02158

Top
21F216SF33 - INT 21 - Novell NetWare v2.2+ - GET EXTENDED VOLUME INFORMATION
INT 21 - Novell NetWare v2.2+ - GET EXTENDED VOLUME INFORMATION
	AX = F216h subfn 33h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02160)
	ES:DI -> reply buffer (see #02161)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F216h/SF=29h

Format of NetWare "Get Extended Volume Information" request buffer:
Offset	Size	Description	(Table 02160)
 00h	WORD	length of following data
 02h	BYTE	33h (subfunction "Get Extended Volume Information")
---v2.2---
 03h	BYTE	volume ID
---v4.x---
 03h	DWORD	volume number
SeeAlso: #02161

Format of NetWare "Get Extended Volume Information" reply buffer:
Offset	Size	Description	(Table 02161)
 00h	WORD	length of returned data
 02h	DWORD	volume type
 06h	DWORD	status flag bits
		bit 0: suballocation
		bit 1: compressoin
		bit 2: migration
		bit 3: auditing
 0Ah	DWORD	sector size
 0Eh	DWORD	sectors per cluster
 12h	DWORD	total clusters in volume
 16h	DWORD	free clusters
 1Ah	DWORD	freeable suballocated clusters
 1Eh	DWORD	freeable in-limbo sectors
 22h	DWORD	non-freeable in-limbo sectors
 26h	DWORD	non-freeable available suballocated sectors
 2Ah	DWORD	unuable suballocated sectors
 2Eh	DWORD	total suballocated clusters
 32h	DWORD	number of data streams
 36h	DWORD	number of in-limbo data streams
 3Ah	DWORD	age of oldest deleted file in clock ticks
 3Eh	DWORD	number of compressed data streams
 42h	DWORD	number of compressed in-limbo data streams
 46h	DWORD	number of uncompressable data streams
 4Ah	DWORD	number of precompressed sectors
 4Eh	DWORD	number of compressed sectors
 52h	DWORD	number of migrated files
 56h	DWORD	number of migrated sectors
 5Ah	DWORD	number of clusters used by FAT
 5Eh	DWORD	number of clusters used by directories
 62h	DWORD	number of clusters used by extended directories
 66h	DWORD	total number of directory entries
 6Ah	DWORD	number of unused directory entries
 6Eh	DWORD	total number of extended directory extants
 72h	DWORD	number of unused extended directory extants
 76h	DWORD	number of extended attributes defined (see AX=F256h/SF=04h)
 7Ah	DWORD	number of extended-attribute extants used
 7Eh	DWORD	object ID for Directory Services
 82h	DWORD	date and time volume last modified
 86h	var	counted volume name string
SeeAlso: #02160

Top
21F217SF01 - INT 21 - Novell NetWare - CHANGE USER PASSWORD (OLD)
INT 21 - Novell NetWare - CHANGE USER PASSWORD (OLD)
	AX = F217h subfn 01h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01891 at AH=E3h/SF=01h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Note:	this function requires an object of type USER, unlike the newer
	  password changing function AX=F217h/SF=40h
SeeAlso: AH=F2h"Novell",AH=E3h/SF=01h,AX=F217h/SF=02h,AX=F217h/SF=40h

Top
21F217SF02 - INT 21 - Novell NetWare - GET USER CONNECTION LIST (OLD)
INT 21 - Novell NetWare - GET USER CONNECTION LIST (OLD)
	AX = F217h subfn 02h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01892 at AH=E3h/SF=02h)
	ES:DI -> reply buffer (see #02162)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=02h,AX=F217h/SF=01h,AX=F217h/SF=0Ch

Format of NetWare "Get User Connection List (old)" reply packet:
Offset	Size	Description	(Table 02162)
 00h	BYTE	length of connection list
 01h	BYTE	number of bytes in connection list
 02h  N BYTEs	list of connection numbers in use by user
SeeAlso: #01892

Top
21F217SF0C - INT 21 - Novell NetWare - VERIFY SERIALIZATION
INT 21 - Novell NetWare - VERIFY SERIALIZATION
	AX = F217h subfn 0Ch
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01896 at AH=E3h/SF=0Ch)
	ES:DI -> reply buffer (see #02163)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Ch,AX=F217h/SF=12h

Format of NetWare "Verify Serialization" reply packet:
Offset	Size	Description	(Table 02163)
 00h	WORD	server application number
SeeAlso: #01896

Top
21F217SF0E - INT 21 - Novell NetWare - GET DISK UTILIZATION
INT 21 - Novell NetWare - GET DISK UTILIZATION
	AX = F217h subfn 0Eh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01900 at AH=E3h/SF=0Eh)
	ES:DI -> reply buffer (see #02164)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Eh,AX=F217h/SF=D6h

Format of NetWare "Get Disk Utilization" reply packet:
Offset	Size	Description	(Table 02164)
 00h	BYTE	volume number (00h-1Fh)
 01h	DWORD	(big-endian) object ID
 05h	WORD	(big-endian) directories used by object
 07h	WORD	(big-endian) files created by object
 09h	WORD	(big-endian) disk blocks used by object-created files
SeeAlso: #01900 at AH=E3h/SF=0Eh

Top
21F217SF0F - INT 21 - Novell NetWare - SCAN FILE INFORMATION
INT 21 - Novell NetWare - SCAN FILE INFORMATION
	AX = F217h subfn 0Fh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01903 at AH=E3h/SF=0Fh)
	ES:DI -> reply buffer (see #02165)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Fh,AX=F217h/SF=10h

Format of NetWare "Scan File Information" reply packet:
Offset	Size	Description	(Table 02165)
 00h	WORD	next sequence number (place in request buffer for next call)
 02h 14 BYTEs	ASCIZ filename
 10h	BYTE	file attributes (see #01420 at AX=4301h)
 11h	BYTE	extended file attributes (see #01804 at AH=B6h)
 12h	DWORD	(big-endian) file size in bytes
 16h	WORD	(big-endian) file's creation date (see #01666 at AX=5700h)
 18h	WORD	(big-endian) date of last access (see #01665 at AX=5700h)
 1Ah	DWORD	(big-endian) date and time of last update (see #01846)
 1Eh	DWORD	(big-endian) object ID of owner
 22h	DWORD	(big-endian) date and time last archived (see #01846)
 26h 55 BYTEs	reserved
SeeAlso: #01903 at AH=E3h/SF=0Fh

Top
21F217SF10 - INT 21 - Novell NetWare - SET FILE INFORMATION
INT 21 - Novell NetWare - SET FILE INFORMATION
	AX = F217h subfn 10h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01905 at AH=E3h/SF=10h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=10h,AX=F217h/SF=0Fh

Top
21F217SF11 - INT 21 - Novell NetWare - GET FILE SERVER INFORMATION
INT 21 - Novell NetWare - GET FILE SERVER INFORMATION
	AX = F217h subfn 11h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01907 at AH=E3h/SF=11h)
	ES:DI -> reply buffer (see #02166)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=11h,AX=F217h/SF=F1h

Format of NetWare "Get File Server Information" reply packet:
Offset	Size	Description	(Table 02166)
 00h 48 BYTEs	server's name
 30h	BYTE	NetWare version
 31h	BYTE	NetWare subversion (0-99)
 32h	WORD	(big-endian) number of connections supported
		NetWare 4.01 reportedly returns maximum simulataneously-used
		  connections
 34h	WORD	(big-endian) number of connections in use
 36h	WORD	(big-endian) maximum connected volumes
---Advanced NetWare 2.1+ ---
 38h	BYTE	operating system revision number
 39h	BYTE	fault tolerance (SFT) level
 3Ah	BYTE	TTS level
 3Bh	WORD	(big-endian) maximum simultaneously-used connections
		NetWare 4.01 reportedly returns number of connections in use
 3Dh	BYTE	accounting version
 3Eh	BYTE	VAP version
 3Fh	BYTE	queueing version
 40h	BYTE	print server version
 41h	BYTE	virtual console version
 42h	BYTE	security restrictions level
 43h	BYTE	internetwork bridge version
 44h 60 BYTEs	reserved
SeeAlso: #01907

Top
21F217SF12 - INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
	AX = F217h subfn 12h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01909 at AH=E3h/SF=12h)
	ES:DI -> reply buffer (see #02167)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=12h,AX=F217h/SF=0Ch

Format of NetWare "Get Network Serial Number" reply packet:
Offset	Size	Description	(Table 02167)
 00h   4 BYTEs	(big-endian) NetWare server serial number
 04h   2 BYTEs	(big-endian) NetWare application serial number
SeeAlso: #01909 at AH=E3h/SF=12h

Top
21F217SF13 - INT 21 - Novell NetWare - GET INTERNET ADDRESS (OLD)
INT 21 - Novell NetWare - GET INTERNET ADDRESS (OLD)
	AX = F217h subfn 13h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01911 at AH=E3h/SF=13h)
	ES:DI -> reply buffer (see #02168)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=13h,AX=F217h/SF=1Ah

Format of NetWare "Get Internet Address (old)" reply packet:
Offset	Size	Description	(Table 02168)
 00h  4 BYTEs	network number
 04h  6 BYTEs	physical node address
 0Ah  2 BYTEs	socket number
SeeAlso: #01911 at AH=E3h/SF=13h,#02174

Top
21F217SF14 - INT 21 - Novell NetWare - LOGIN OBJECT
INT 21 - Novell NetWare - LOGIN OBJECT
	AX = F217h subfn 14h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01913 at AH=E3h/SF=14h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=14h,AX=F216h/SF=18h,AX=F217h/SF=CCh
SeeAlso: AX=F258h/SF=03h,AX=F268h/SF=3Dh

Top
21F217SF15 - INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST (OLD)
INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST (OLD)
	AX = F217h subfn 15h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01915 at AH=E3h/SF=15h)
	ES:DI -> reply buffer (see #02169)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=15h,AX=F217h/SF=1Bh

Format of NetWare "Get Object Connection List (old)" reply packet:
Offset	Size	Description	(Table 02169)
 00h	BYTE	number of connections
 01h  N BYTEs	connection list
SeeAlso: #01915

Top
21F217SF16 - INT 21 - Novell NetWare - GET CONNECTION INFORMATION (OLD)
INT 21 - Novell NetWare - GET CONNECTION INFORMATION (OLD)
	AX = F217h subfn 16h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02170)
	ES:DI -> reply buffer (see #02171)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=1Ch,AX=F217h/SF=1Fh

Format of NetWare "Get Connection Information (old)" request packet:
Offset	Size	Description	(Table 02170)
 00h	WORD	0002h (length of following data)
 02h	BYTE	16h (subfunction "Get Connection Information (old)")
 03h	BYTE	target connection number
Note:	connection numbers greater than the maximum supported by the server
	  can cause ABENDs
SeeAlso: #02171

Format of NetWare "Get Connection Information (old)" reply packet:
Offset	Size	Description	(Table 02171)
 00h	DWORD	(big-endian) unique user ID, 00000000h if no one logged in
 04h	WORD	(big-endian) user type
 06h 48 BYTEs	user name
 36h  7 BYTEs	login time (see #02087)
 3Dh	BYTE	reserved
SeeAlso: #02170

Top
21F217SF17 - INT 21 - Novell NetWare - GET ENCRYPTION KEY
INT 21 - Novell NetWare - GET ENCRYPTION KEY
	AX = F217h subfn 17h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02172)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=18h,AX=F217h/SF=4Ah,AX=F217h/SF=4Bh

Format of NetWare "Get Encryption Key" request packet:
Offset	Size	Description	(Table 02172)
 00h	WORD	length of following data
 02h	BYTE	17h (subfunction "Get Encryption Key")
	???

Top
21F217SF18 - INT 21 - Novell NetWare - LOGIN OBJECT ENCRYPTED
INT 21 - Novell NetWare - LOGIN OBJECT ENCRYPTED
	AX = F217h subfn 18h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02173)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=14h,AX=F217h/SF=17h

Format of NetWare "Login Object Encrypted" request packet:
Offset	Size	Description	(Table 02173)
 00h	WORD	length of following data
 02h	BYTE	18h (subfunction "Login Object Encrypted")
	???

Top
21F217SF1A - INT 21 - Novell NetWare - GET INTERNET ADDRESS
INT 21 - Novell NetWare - GET INTERNET ADDRESS
	AX = F217h subfn 1Ah
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02174)
	ES:DI -> reply buffer (see #02175)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=13h

Format of NetWare "Get Internet Address" request packet:
Offset	Size	Description	(Table 02174)
 00h	WORD	length of following data
 02h	BYTE	1Ah (subfunction "Get Internet Address")
 03h	DWORD	target connection ID
SeeAlso: #02175

Format of NetWare "Get Internet Address" reply packet:
Offset	Size	Description	(Table 02175)
 00h  4 BYTEs	network number
 04h  6 BYTEs	physical node address
 0Ah  2 BYTEs	socket number
 0Ch	BYTE	connection type
		00h not in use
		02h NCP
		03h AFP
SeeAlso: #02174

Top
21F217SF1B - INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST
INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST
	AX = F217h subfn 1Bh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02176)
	ES:DI -> reply buffer (see #02177)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=15h

Format of NetWare "Get Object Connection List" request packet:
Offset	Size	Description	(Table 02176)
 00h	WORD	length of following data
 02h	BYTE	1Bh (subfunction "Get Object Connection List")
 03h	DWORD	search connection number
		set to highest connection number returned by previous call, or
		  00000000h before first call
 07h	WORD	object type
 09h	BYTE	length of object's name
 0Ah  N BYTEs	object name
SeeAlso: #02177

Format of NetWare "Get Object Connection List" reply packet:
Offset	Size	Description	(Table 02177)
 00h	BYTE	length of connection number list
 01h  N WORDs	array of server connection numbers
SeeAlso: #02176

Top
21F217SF1C - INT 21 - Novell NetWare v3+ - GET CONNECTION INFORMATION
INT 21 - Novell NetWare v3+ - GET CONNECTION INFORMATION
	AX = F217h subfn 1Ch
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02178)
	ES:DI -> reply buffer (see #02179)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=16h,AX=F217h/SF=1Fh

Format of NetWare "Get Connection Information" request packet:
Offset	Size	Description	(Table 02178)
 00h	WORD	0005h (length of following data)
 02h	BYTE	1Ch (subfunction "Get Connection Information")
 03h	DWORD	target connection number
Note:	connection numbers greater than the maximum supported by the server
	  can cause ABENDs
SeeAlso: #02179,#02170

Format of NetWare "Get Connection Information" reply packet:
Offset	Size	Description	(Table 02179)
 00h	DWORD	(big-endian) unique user ID, 00000000h if no one logged in
 04h	WORD	(big-endian) user type
 06h 48 BYTEs	user name
 36h  7 BYTEs	login time (see #02087)
 3Dh	BYTE	reserved
SeeAlso: #02178,#02171

Top
21F217SF1D - INT 21 - Novell NetWare v4 - CHANGE CONNECTION STATE
INT 21 - Novell NetWare v4 - CHANGE CONNECTION STATE
	AX = F217h subfn 1Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02180)
	ES:DI -> reply buffer
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Change Connection State" requst buffer:
Offset	Size	Description	(Table 02180)
 00h	WORD	length of following data
 02h	BYTE	1Dh (subfunction "Change Connection State")
 03h	DWORD	new state

Top
21F217SF1E - INT 21 - Novell NetWare v4 - SET WATCHDOG DELAY INTERVAL
INT 21 - Novell NetWare v4 - SET WATCHDOG DELAY INTERVAL
	AX = F217h subfn 1Eh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02181)
	ES:DI -> reply buffer
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Set Watchdog Delay Interval" request buffer:
Offset	Size	Description	(Table 02181)
 00h	WORD	length of following data
 02h	BYTE	1Eh (subfunction "Set Watchdog Delay Interval")
 03h	DWORD	interval in minutes

Top
21F217SF1F - INT 21 - Novell NetWare v4 - GET CONNECTION LIST
INT 21 - Novell NetWare v4 - GET CONNECTION LIST
	AX = F217h subfn 1Fh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02182)
	ES:DI -> reply buffer (see #02183)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get Connection List" request buffer:
Offset	Size	Description	(Table 02182)
 00h	WORD	length of following data
 02h	BYTE	1Fh (subfunction "Get Connection List")
 03h	DWORD	object ID
 07h	DWORD	??? (initialize to FFFFFFFFh before first call)
SeeAlso: #02183

Format of NetWare "Get Connection List" reply buffer:
Offset	Size	Description	(Table 02183)
 00h	WORD	number of connections following (max 50)
 02h 50 DWORDs	connection numbers
SeeAlso: #02182

Top
21F217SF32 - INT 21 - Novell NetWare - CREATE BINDERY OBJECT
INT 21 - Novell NetWare - CREATE BINDERY OBJECT
	AX = F217h subfn 32h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01921 at AH=E3h/SF=32h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=32h,AX=F217h/SF=33h,AX=F217h/SF=34h

Top
21F217SF33 - INT 21 - Novell NetWare - DELETE BINDERY OBJECT
INT 21 - Novell NetWare - DELETE BINDERY OBJECT
	AX = F217h subfn 33h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01923 at AH=E3h/SF=33h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=33h,AX=F217h/SF=32h,AX=F217h/SF=34h

Top
21F217SF34 - INT 21 - Novell NetWare - RENAME BINDERY OBJECT
INT 21 - Novell NetWare - RENAME BINDERY OBJECT
	AX = F217h subfn 34h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01924 at AH=E3h/SF=34h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=34h,AX=F217h/SF=32h,AX=F217h/SF=33h

Top
21F217SF35 - INT 21 - Novell NetWare - GET BINDERY OBJECT ID
INT 21 - Novell NetWare - GET BINDERY OBJECT ID
	AX = F217h subfn 35h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01925 at AH=E3h/SF=35h)
	ES:DI -> reply buffer (see #02184)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=35h,AX=F217h/SF=36h,AX=F217h/SF=45h

Format of NetWare "Get Bindery Object ID" reply packet:
Offset	Size	Description	(Table 02184)
 00h	DWORD	(big-endian) object ID
 04h	WORD	(big-endian) type of object
 06h 48 BYTEs	object name
SeeAlso: #01925 at AH=E3h/SF=35h

Top
21F217SF36 - INT 21 - Novell NetWare - GET BINDERY OBJECT NAME
INT 21 - Novell NetWare - GET BINDERY OBJECT NAME
	AX = F217h subfn 36h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01928 at AH=E3h/SF=36h)
	ES:DI -> reply buffer (see #02185)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=36h,AX=F217h/SF=35h,AX=F217h/SF=37h

Format of NetWare "Get Bindery Object Name" reply packet:
Offset	Size	Description	(Table 02185)
 00h	DWORD	(big-endian) object ID
 04h	WORD	(big-endian) type of object
 06h 48 BYTEs	object name
SeeAlso: #01928 at AH=E3h/SF=36h

Top
21F217SF37 - INT 21 - Novell NetWare - SCAN BINDERY OBJECT
INT 21 - Novell NetWare - SCAN BINDERY OBJECT
	AX = F217h subfn 37h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01930 at AH=E3h/SF=37h)
	ES:DI -> reply buffer (see #02186)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=37h,AX=F217h/SF=3Ch

Format of NetWare "Scan Bindery Object" reply packet:
Offset	Size	Description	(Table 02186)
 00h
SeeAlso: #01930

Top
21F217SF38 - INT 21 - Novell NetWare - CHANGE BINDERY OBJECT SECURITY
INT 21 - Novell NetWare - CHANGE BINDERY OBJECT SECURITY
	AX = F217h subfn 38h
	CX = length of request packet in bytes
	DX = 0000h (no reply buffer)
	DS:SI -> request packet	(see #01932 at AH=E3h/SF=38h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=38h,AX=F217h/SF=32h

Top
21F217SF39 - INT 21 - Novell NetWare - CREATE PROPERTY
INT 21 - Novell NetWare - CREATE PROPERTY
	AX = F217h subfn 39h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01934 at AH=E3h/SF=39h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=39h,AX=F217h/SF=3Ah

Top
21F217SF3A - INT 21 - Novell NetWare - DELETE PROPERTY
INT 21 - Novell NetWare - DELETE PROPERTY
	AX = F217h subfn 3Ah
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01936 at AH=E3h/SF=3Ah)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Ah,AX=F217h/SF=39h,AX=F217h/SF=3Bh

Top
21F217SF3B - INT 21 - Novell NetWare - CHANGE PROPERTY SECURITY
INT 21 - Novell NetWare - CHANGE PROPERTY SECURITY
	AX = F217h subfn 3Bh
	CX = length of request packet in bytes
	DX = 0000h (no reply buffer)
	DS:SI -> request packet	(see #01938 at AH=E3h/SF=3Bh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Bh

Top
21F217SF3C - INT 21 - Novell NetWare - SCAN PROPERTY
INT 21 - Novell NetWare - SCAN PROPERTY
	AX = F217h subfn 3Ch
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01939 at AH=E3h/SF=3Ch)
	ES:DI -> reply buffer (see #02187)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Ch,AX=F217h/SF=39h,AX=F217h/SF=3Dh

Format of NetWare "Scan Property" reply packet:
Offset	Size	Description	(Table 02187)
 00h
SeeAlso: #01939

Top
21F217SF3D - INT 21 - Novell NetWare - READ PROPERTY VALUE
INT 21 - Novell NetWare - READ PROPERTY VALUE
	AX = F217h subfn 3Dh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01942 at AH=E3h/SF=3Dh)
	ES:DI -> reply buffer (see #02188)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Dh,AX=F217h/SF=39h,AX=F217h/SF=3Eh

Format of NetWare "Read Property Value" request packet:
Offset	Size	Description	(Table 02188)
 00h
SeeAlso: #01942

Top
21F217SF3E - INT 21 - Novell NetWare - WRITE PROPERTY VALUE
INT 21 - Novell NetWare - WRITE PROPERTY VALUE
	AX = F217h subfn 3Eh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01944 at AH=E3h/SF=3Eh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Eh,AX=F217h/SF=39h,AX=F217h/SF=3Dh

Top
21F217SF3F - INT 21 - Novell NetWare - VERIFY BINDERY OBJECT PASSWORD
INT 21 - Novell NetWare - VERIFY BINDERY OBJECT PASSWORD
	AX = F217h subfn 3Fh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01947 at AH=E3h/SF=3Fh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Fh,AX=F217h/SF=40h

Top
21F217SF40 - INT 21 - Novell NetWare - CHANGE BINDERY OBJECT PASSWORD
INT 21 - Novell NetWare - CHANGE BINDERY OBJECT PASSWORD
	AX = F217h subfn 40h
	CX = length of request packet in bytes
	DX = 0000h (no reply buffer)
	DS:SI -> request packet (see #01948 at AH=E3h/SF=40h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=40h,AX=F217h/SF=3Fh

Top
21F217SF41 - INT 21 - Novell NetWare v2.2+ - ADD OBJECT TO SET
INT 21 - Novell NetWare v2.2+ - ADD OBJECT TO SET
	AX = F217h subfn 41h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01951 at AH=E3h/SF=41h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Desc:	add a member to an object's group property
SeeAlso: AH=F2h"Novell",AH=E3h/SF=41h,AX=F217h/SF=42h,AX=F217h/SF=43h

Top
21F217SF42 - INT 21 - Novell NetWare - DELETE BINDERY OBJECT FROM SET
INT 21 - Novell NetWare - DELETE BINDERY OBJECT FROM SET
	AX = F217h subfn 42h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01952 at AH=E3h/SF=42h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=42h,AX=F217h/SF=41h,AX=F217h/SF=43h

Top
21F217SF43 - INT 21 - Novell NetWare - IS BINDERY OBJECT IN SET?
INT 21 - Novell NetWare - IS BINDERY OBJECT IN SET?
	AX = F217h subfn 43h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01954 at AH=E3h/SF=43h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=43h,AX=F217h/SF=41h,AX=F217h/SF=42h

Top
21F217SF44 - INT 21 - Novell NetWare - CLOSE BINDERY
INT 21 - Novell NetWare - CLOSE BINDERY
	AX = F217h subfn 44h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01955 at AH=E3h/SF=44h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=44h,AX=F217h/SF=45h

Top
21F217SF45 - INT 21 - Novell NetWare - OPEN BINDERY
INT 21 - Novell NetWare - OPEN BINDERY
	AX = F217h subfn 45h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet	(see #01956 at AH=E3h/SF=45h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=45h,AX=F217h/SF=44h

Top
21F217SF46 - INT 21 - Novell NetWare - GET BINDERY ACCESS LEVEL
INT 21 - Novell NetWare - GET BINDERY ACCESS LEVEL
	AX = F217h subfn 46h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01957 at AH=E3h/SF=46h)
	ES:DI -> reply buffer (see #02189)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=46h,AX=F217h/SF=45h

Format of NetWare "Get Bindery Access Level" reply packet:
Offset	Size	Description	(Table 02189)
 00h	BYTE	security levels
 01h	DWORD	(big-endian) object ID
SeeAlso: #01957,#01958 at AH=E3h/SF=46h

Top
21F217SF47 - INT 21 - Novell NetWare - SCAN BINDERY OBJECT TRUSTEE PATHS
INT 21 - Novell NetWare - SCAN BINDERY OBJECT TRUSTEE PATHS
	AX = F217h subfn 47h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01959 at AH=E3h/SF=47h)
	ES:DI -> reply buffer (see #02190)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=47h,AX=F216h/SF=0Ch,AX=F217h/SF=48h

Format of NetWare "Scan Bindery Object Trustee Paths" reply packet:
Offset	Size	Description	(Table 02190)
 00h	WORD	(big-endian) next sequence number
 02h	DWORD	(big-endian) object ID
 06h	BYTE	trustee directory rights (see #01849 at AH=E2h/SF=03h)
 07h	BYTE	length of trustee path
 08h  N BYTEs	trustee path
SeeAlso: #01959,#01960 at AH=E3h/SF=47h

Top
21F217SF48 - INT 21 - Novell NetWare - GET BINDERY OBJECT ACCESS LEVEL
INT 21 - Novell NetWare - GET BINDERY OBJECT ACCESS LEVEL
	AX = F217h subfn 48h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02191)
	ES:DI -> reply buffer (see #02192)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=45h,AX=F217h/SF=46h

Format of NetWare "Get Bindery Object Access Level" request packet:
Offset	Size	Description	(Table 02191)
 00h	WORD	length of following data (max ABh)
 02h	BYTE	48h (subfunction "Get Bindery Object Access Level")
 03h	DWORD	object ID
SeeAlso: #02192

Format of NetWare "Get Bindery Object Access Level" reply packet:
Offset	Size	Description	(Table 02192)
 00h	BYTE	object access level
SeeAlso: #02191

Top
21F217SF49 - INT 21 - Novell NetWare - IS STATION A MANAGER?
INT 21 - Novell NetWare - IS STATION A MANAGER?
	AX = F217h subfn 49h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02193)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=43h

Format of NetWare "Is Station A Manager?" request packet:
Offset	Size	Description	(Table 02193)
 00h	WORD	length of following data
 02h	BYTE	49h (subfunction "Is Station A Manager?")
 03h	DWORD	object ID

Top
21F217SF4A - INT 21 - Novell NetWare - KEYED VERIFY BINDERY OBJECT PASSWORD
INT 21 - Novell NetWare - KEYED VERIFY BINDERY OBJECT PASSWORD
	AX = F217h subfn 4Ah
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02194)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=4Bh

Format of NetWare "Keyed Verify Bindery Object Password" request packet:
Offset	Size	Description	(Table 02194)
 00h	WORD	length of following data
 02h	BYTE	4Ah (subfunction "Keyed Verify Bindery Object Password")
 03h  8 BYTEs	key
 0Bh	WORD	type
 0Dh	BYTE	length of object's name
 0Eh  N BYTEs	object name
SeeAlso: #02195

Top
21F217SF4B - INT 21 - Novell NetWare - KEYED CHANGE BINDERY OBJECT PASSWORD
INT 21 - Novell NetWare - KEYED CHANGE BINDERY OBJECT PASSWORD
	AX = F217h subfn 4Bh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02195)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=4Ah

Format of NetWare "Keyed Change Bindery Object Password" request packet:
Offset	Size	Description	(Table 02195)
 00h	WORD	length of following data
 02h	BYTE	4Bh (subfunction "Keyed Change Bindery Object Password")
 03h  8 BYTEs	key
 0Bh	WORD	type
 0Dh	BYTE	length of object name
 0Eh  N BYTEs	object name
	BYTE	length of new password
      N BYTEs	new password
SeeAlso: #01948

Top
21F217SF4C - INT 21 - Novell NetWare - LIST RELATIONS OF AN OBJECT
INT 21 - Novell NetWare - LIST RELATIONS OF AN OBJECT
	AX = F217h subfn 4Ch
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02196)
	ES:DI -> reply buffer (see #02197)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=39h

Format of NetWare "List Relations Of An Object" request packet:
Offset	Size	Description	(Table 02196)
 00h	WORD	length of following data
 02h	BYTE	4Ch (subfunction "List Relations Of An Object")
 03h	DWORD	last bindery ID seen (set to FFFFFFFFh on first call)
 07h	WORD	object type
 09h	BYTE	length of object's name
 0Ah  N BYTEs	object's name
	BYTE	length of property name
      N BYTEs	property name
SeeAlso: #02197

Format of NetWare "List Relations Of An Object" reply packet:
Offset	Size	Description	(Table 02197)
 00h	WORD	number of relations returned
 02h	var	relations
SeeAlso: #02196

Top
21F217SF64 - INT 21 - Novell NetWare v2.1+ - CREATE QUEUE
INT 21 - Novell NetWare v2.1+ - CREATE QUEUE
	AX = F217h subfn 64h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01962 at AH=E3h/SF=64h)
	ES:DI -> reply buffer (see #02198)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=64h,AX=F217h/SF=65h,AX=F217h/SF=66h

Format of NetWare "Create Queue" reply packet:
Offset	Size	Description	(Table 02198)
 00h	DWORD	(big-endian) object ID of queue
SeeAlso: #01962,#01963

Top
21F217SF65 - INT 21 - Novell NetWare v2.1+ - DESTROY QUEUE
INT 21 - Novell NetWare v2.1+ - DESTROY QUEUE
	AX = F217h subfn 65h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01964 at AH=E3h/SF=65h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=65h,AX=F217h/SF=64h,AX=F217h/SF=66h

Top
21F217SF66 - INT 21 - Novell NetWare v2.1+ - READ QUEUE CURRENT STATUS (OLD)
INT 21 - Novell NetWare v2.1+ - READ QUEUE CURRENT STATUS (OLD)
	AX = F217h subfn 66h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01965 at AH=E3h/SF=64h)
	ES:DI -> reply buffer (see #02199)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=66h,AX=F217h/SF=64h,AX=F217h/SF=67h

Format of NetWare "Read Queue Current Status (Old)" reply packet:
Offset	Size	Description	(Table 02199)
 00h	DWORD	(big-endian) object ID of queue
 04h	BYTE	status of queue (see #01967)
 05h	BYTE	number of jobs in queue (00h-FAh)
 06h	BYTE	number of servers attached to queue (00h-19h)
 07h 25 DWORDs	list of object IDs of attached servers
 6Bh 25 BYTEs	list of attached servers' stations
 84h	BYTE	(call) maximum number of servers to return
SeeAlso: #01965,#01966 at AH=E3h/SF=66h

Top
21F217SF67 - INT 21 - Novell NetWare v2.1+ - SET QUEUE CURRENT STATUS (OLD)
INT 21 - Novell NetWare v2.1+ - SET QUEUE CURRENT STATUS (OLD)
	AX = F217h subfn 67h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01968 at AH=E3h/SF=67h)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=67h,AX=F217h/SF=66h,AX=F217h/SF=68h

Top
21F217SF68 - INT 21 - Novell NetWare v2.1+ - CREATE QUEUE JOB AND FILE (OLD)
INT 21 - Novell NetWare v2.1+ - CREATE QUEUE JOB AND FILE (OLD)
	AX = F217h subfn 68h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01970 at AH=E3h/SF=68h)
	ES:DI -> reply buffer (see #02200)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=68h,AX=F217h/SF=67h,AX=F217h/SF=69h

Format of NetWare "Create Queue Job And File (Old)" reply packet:
Offset	Size	Description	(Table 02200)
 00h	BYTE	client station
 01h	BYTE	client task number
 02h	DWORD	(big-endian) object ID of client
 06h	DWORD	(big-endian) object ID of target server
 0Ah  6 BYTEs	target execution time (year,month,day,hour,minute,second)
 10h  6 BYTEs	job entry time (year,month,day,hour,minute,second)
 16h	WORD	(big-endian) job number
 18h	WORD	(big-endian) job type
 1Ah	BYTE	job position
 1Bh	BYTE	job control flags (see #01980)
 1Ch 14 BYTEs	ASCIZ job file name
 2Ah  6 BYTEs	job file handle
 30h	BYTE	server station
 31h	BYTE	server task number
 32h	DWORD	(big-endian) object ID of server or 00000000h
SeeAlso: #01970,#01972

Top
21F217SF69 - INT 21 - Novell NetWare v2.1+ - CLOSE FILE AND START QUEUE JOB (OLD)
INT 21 - Novell NetWare v2.1+ - CLOSE FILE AND START QUEUE JOB (OLD)
	AX = F217h subfn 69h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01973 at AH=E3h/SF=69h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=69h,AX=F217h/SF=6Ah,AX=F217h/SF=7Fh

Top
21F217SF6A - INT 21 - Novell NetWare v2.1+ - REMOVE JOB FROM QUEUE (OLD)
INT 21 - Novell NetWare v2.1+ - REMOVE JOB FROM QUEUE (OLD)
	AX = F217h subfn 6Ah
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01975 at AH=E3h/SF=6Ah)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Ah,AX=F217h/SF=68h,AX=F217h/SF=69h

Top
21F217SF6B - INT 21 - Novell NetWare v2.1+ - GET QUEUE JOB LIST (OLD)
INT 21 - Novell NetWare v2.1+ - GET QUEUE JOB LIST (OLD)
	AX = F217h subfn 6Bh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01976 at AH=E3h/SF=6Bh)
	ES:DI -> reply buffer (see #02201)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Bh,AX=F217h/SF=6Ah,AX=F217h/SF=6Ch
SeeAlso: AX=F217h/SF=81h

Format of NetWare "Get Queue Job List (old)" reply packet:
Offset	Size	Description	(Table 02201)
 00h	WORD	(big-endian) job count
 02h  N WORDs	(big-endian) list of job numbers by position in queue
SeeAlso: #01976,#01977 at AH=E3h/SF=6Bh

Top
21F217SF6C - INT 21 - Novell NetWare v2.1+ - READ QUEUE JOB ENTRY (OLD)
INT 21 - Novell NetWare v2.1+ - READ QUEUE JOB ENTRY (OLD)
	AX = F217h subfn 6Ch
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01978 at AH=E3h/SF=6Ch)
	ES:DI -> reply buffer (see #02202)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Ch,AX=F217h/SF=6Bh,AX=F217h/SF=6Dh

Format of NetWare "Read Queue Job Entry (old)" reply packet:
Offset	Size	Description	(Table 02202)
 00h	BYTE	client station number
 01h	BYTE	client task number
 02h	DWORD	object ID of client
 06h	DWORD	(big-endian) object ID of target server
		FFFFFFFFh if any server acceptable
 0Ah  6 BYTEs	target execution time (year,month,day,hour,minute,second)
		FFFFFFFFFFFFh if serviced as soon as possible
 10h  6 BYTEs	job entry time (year,month,day,hour,minute,second)
 16h	WORD	(big-endian) job number
 18h	WORD	(big-endian) job type
 1Ah	BYTE	job position
 1Bh	BYTE	job control flags (see #01980)
 1Ch 14 BYTEs	ASCIZ job filename
 2Ah  6 BYTEs	job file handle
 30h	BYTE	server station
 31h	BYTE	server task number
 32h	DWORD	object ID of server
 36h 50 BYTEs	ASCIZ job description string
 68h 152 BYTEs	client record area
SeeAlso: #01978,#01979

Top
21F217SF6D - INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY (OLD)
INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY (OLD)
	AX = F217h subfn 6Dh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01981 at AH=E3h/SF=6Dh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Bh,AH=E3h/SF=6Dh,AX=F217h/SF=6Ch

Top
21F217SF6E - INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB POSITION
INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB POSITION
	AX = F217h subfn 6Eh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01982 at AH=E3h/SF=6Eh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F217h/SF=6Dh,AH=E3h/SF=6Eh

Top
21F217SF6F - INT 21 - Novell NetWare v2.1+ - ATTACH QUEUE SERVER TO QUEUE
INT 21 - Novell NetWare v2.1+ - ATTACH QUEUE SERVER TO QUEUE
	AX = F217h subfn 6Fh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01984 at AH=E3h/SF=6Fh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Fh,AX=F217h/SF=D2h

Top
21F217SF70 - INT 21 - Novell NetWare v2.1+ - DETACH QUEUE SERVER FROM QUEUE
INT 21 - Novell NetWare v2.1+ - DETACH QUEUE SERVER FROM QUEUE
	AX = F217h subfn 70h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01985 at AH=E3h/SF=70h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=70h,AX=F217h/SF=6Fh

Top
21F217SF71 - INT 21 - Novell NetWare v2.1+ - SERVICE QUEUE JOB AND OPEN FILE
INT 21 - Novell NetWare v2.1+ - SERVICE QUEUE JOB AND OPEN FILE
	AX = F217h subfn 71h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01986 at AH=E3h/SF=71h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Notes:	the caller must be on a workstation which is security-equivalent to a
	  member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=71h,AX=F217h/SF=70h,AX=F217h/SF=72h

Top
21F217SF72 - INT 21 - Novell NetWare v2.1+ - FINISH SERVICING QUEUE JOB (OLD)
INT 21 - Novell NetWare v2.1+ - FINISH SERVICING QUEUE JOB (OLD)
	AX = F217h subfn 72h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01987 at AH=E3h/SF=72h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=72h,AX=F217h/SF=71h,AX=F217h/SF=73h
SeeAlso: AX=F217h/SF=83h

Top
21F217SF73 - INT 21 - Novell NetWare v2.1+ - ABORT SERVICING QUEUE JOB (OLD)
INT 21 - Novell NetWare v2.1+ - ABORT SERVICING QUEUE JOB (OLD)
	AX = F217h subfn 73h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01988 at AH=E3h/SF=73h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=73h,AX=F217h/SF=72h,AX=F217h/SF=84h

Top
21F217SF74 - INT 21 - Novell NetWare v2.1+ - CHANGE TO CLIENT RIGHTS (OLD)
INT 21 - Novell NetWare v2.1+ - CHANGE TO CLIENT RIGHTS (OLD)
	AX = F217h subfn 74h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01990 at AH=E3h/SF=74h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Desc:	temporarily assume the login identity of the client submitting the
	  job being serviced
SeeAlso: AH=F2h"NetWare",AH=E3h/SF=74h,AX=F217h/SF=85h

Top
21F217SF75 - INT 21 - Novell NetWare v2.1+ - RESTORE QUEUE SERVER RIGHTS
INT 21 - Novell NetWare v2.1+ - RESTORE QUEUE SERVER RIGHTS
	AX = F217h subfn 75h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01991 at AH=E3h/SF=75h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=75h,AX=F217h/SF=74h

Top
21F217SF76 - INT 21 - Novell NetWare - READ QUEUE SERVER CURRENT STATUS (OLD)
INT 21 - Novell NetWare - READ QUEUE SERVER CURRENT STATUS (OLD)
	AX = F217h subfn 76h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01992 at AH=E3h/SF=76h)
	ES:DI -> reply buffer (see #02203)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=76h,AX=F217h/SF=74h,AX=F217h/SF=77h

Format of NetWare "Read Queue Server Current Status (old)" reply packet:
Offset	Size	Description	(Table 02203)
 00h 64 BYTEs	server status record (format depends on server)
		first four bytes should contain estimated "price" for an
		  average job
SeeAlso: #01992,#01993 at AH=E3h/SF=76h

Top
21F217SF77 - INT 21 - Novell NetWare - SET QUEUE SERVER CURRENT STATUS
INT 21 - Novell NetWare - SET QUEUE SERVER CURRENT STATUS
	AX = F217h subfn 77h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01994 at AH=E3h/SF=77h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=77h,AX=F217h/SF=76h

Top
21F217SF78 - INT 21 - Novell NetWare - GET QUEUE JOB FILE SIZE (OLD)
INT 21 - Novell NetWare - GET QUEUE JOB FILE SIZE (OLD)
	AX = F217h subfn 78h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #01996 at AH=E3h/SF=78h)
	ES:DI -> reply buffer (see #02204)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=78h,AX=F217h/SF=71h,AX=F217h/SF=79h

Format of NetWare "Get Queue Job File Size (old)" reply packet:
Offset	Size	Description	(Table 02204)
 00h	DWORD	(big-endian) object ID of queue
 04h	WORD	(big-endian) job number
 06h	DWORD	(big-endian) size of job file in bytes
SeeAlso: #01996,#01997 at AH=E3h/SF=78h

Top
21F217SF79 - INT 21 - Novell NetWare - CREATE QUEUE JOB AND FILE
INT 21 - Novell NetWare - CREATE QUEUE JOB AND FILE
	AX = F217h subfn 79h
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02205)
	ES:DI -> reply buffer (see #02206)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Ah,AX=F217h/SF=7Bh

Format of NetWare "Create Queue Job And File" request packet:
Offset	Size	Description	(Table 02205)
 00h	WORD	length of following data
 02h	BYTE	79h (subfunction "Create Queue Job And File")
 03h	DWORD	queue ID
 07h 280 BYTEs	queue job structure (see #02210)
SeeAlso: #02206,#02207,#02209

Format of NetWare "Create Queue Job And File" reply packet:
Offset	Size	Description	(Table 02206)
 00h 10 BYTEs	reserved for future use
 0Ah	DWORD	client station
 0Eh	DWORD	client task
 12h	DWORD	client ID
 16h	DWORD	target server ID
 1Ah  6 BYTEs	target execution time year,month,day,hour,minute,second
		(FFFFFFFFFFFFh = first opportunity)
 20h  6 BYTEs	job entry time
		(set by queue manager)
 26h	DWORD	job number (1-999) assigned by queue manager
 2Ah	WORD	job type
 2Ch	WORD	position of job in queue (0001h = first, etc.)
 2Eh	WORD	job control flags (see #01980 at AH=E3h/SF=6Ch)
 30h 14 BYTEs	ASCIZ job file name
 3Eh	DWORD	job file handle	(set by queue manager)
 42h	DWORD	server station (set by queue manager)
 46h	DWORD	server task number (set by queue manager)
 4Ah	DWORD	server object ID (set by queue manager)
SeeAlso: #02205,#02210

Top
21F217SF7A - INT 21 - Novell NetWare - READ QUEUE JOB ENTRY
INT 21 - Novell NetWare - READ QUEUE JOB ENTRY
	AX = F217h subfn 7Ah
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02207)
	ES:DI -> reply buffer (see #02208)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=79h,AX=F217h/SF=7Bh

Format of NetWare "Read Queue Job Entry" request packet:
Offset	Size	Description	(Table 02207)
 00h	WORD	length of following data
 02h	BYTE	7Ah (subfunction "Read Queue Job Entry")
 03h	DWORD	queue ID
 07h	DWORD	job entry number
SeeAlso: #02208,#02205,#02209

Format of NetWare "Read Queue Job Entry" reply packet:
Offset	Size	Description	(Table 02208)
 00h 280 BYTEs	job structure (see #02210)
SeeAlso: #02207

Top
21F217SF7B - INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY
INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY
	AX = F217h subfn 7Bh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02209)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Dh,AX=F217h/SF=79h,AX=F217h/SF=7Dh

Format of NetWare "Change Queue Job Entry" request packet:
Offset	Size	Description	(Table 02209)
 00h	WORD	length of following data
 02h	BYTE	7Bh (subfunction "Change Queue Job Entry")
 03h	DWORD	queue ID
 07h 280 BYTEs	job structure (see #02210)
SeeAlso: #02205,#02207

Format of NetWare v3.11+ job structure:
Offset	Size	Description	(Table 02210)
 00h	WORD	record-in-use flag
 02h	DWORD	-> previous record
 06h	DWORD	-> next record
 0Ah	DWORD	client station connection number
 0Eh	DWORD	client task number
		(set by queue manager)
 12h	DWORD	client object ID
 16h	DWORD	target server object ID
 1Ah  6 BYTEs	target execution time year,month,day,hour,minute,second
		(FFFFFFFFFFFFh = first opportunity)
 20h  6 BYTEs	job entry time
		(set by queue manager)
 26h	DWORD	job number (1-999) assigned by queue manager
 2Ah	WORD	job type
 2Ch	WORD	position of job in queue (0001h = first, etc.)
 2Eh	WORD	job control flags (see #01980 at AH=E3h/SF=6Ch)
 30h 14 BYTEs	ASCIZ job file name
 3Eh	DWORD	job file handle	(set by queue manager)
 42h	DWORD	server station (set by queue manager)
 46h	DWORD	server task number (set by queue manager)
 4Ah	DWORD	server object ID (set by queue manager)
 4Eh 50 BYTEs	ASCIZ job description string
 80h 152 BYTEs	client record area
SeeAlso: #02209,#01971

Top
21F217SF7D - INT 21 - Novell NetWare - READ QUEUE CURRENT STATUS
INT 21 - Novell NetWare - READ QUEUE CURRENT STATUS
	AX = F217h subfn 7Dh
	CX = length of request packet in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request packet (see #02211)
	ES:DI -> reply buffer (see #02212)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=66h,AX=F217h/SF=79h,AX=F217h/SF=7Bh
SeeAlso: AX=F217h/SF=7Eh

Format of NetWare "Read Queue Current Status" request packet:
Offset	Size	Description	(Table 02211)
 00h	WORD	length of following data
 02h	BYTE	7Dh (subfunction "Read Queue Current Status")
 03h	DWORD	(big-endian) object ID of queue
SeeAlso: #02212,#02213

Format of NetWare "Read Queue Current Status" reply packet:
Offset	Size	Description	(Table 02212)
 00h	DWORD	queue ID
 04h	DWORD	queue status
		bit 0: no more jobs can be added
		bit 1: no more queue servers can be attached
		bit 2: attached queu servers can not service queue jobs
 08h	DWORD	current number of jobs in queue
 0Ch	DWORD	number of servers attached to queue
 10h  N DWORDs	attached server IDs
SeeAlso: #02211,#01966 at AH=E3h/SF=66h

Top
21F217SF7E - INT 21 - Novell NetWare - SET QUEUE CURRENT STATUS
INT 21 - Novell NetWare - SET QUEUE CURRENT STATUS
	AX = F217h subfn 7Eh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02213)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Dh

Format of NetWare "Set Queue Current Status" request packet:
Offset	Size	Description	(Table 02213)
 00h	WORD	length of following data
 02h	BYTE	7Eh (subfunction "Set Queue Current Status")
 03h	DWORD	queue ID
 07h	DWORD	queue status
		bit 0: no more jobs can be added
		bit 1: no more queue servers can be attached
		bit 2: attached queu servers can not service queue jobs
SeeAlso: #02211

Top
21F217SF7F - INT 21 - Novell NetWare - CLOSE FILE AND START QUEUE JOB
INT 21 - Novell NetWare - CLOSE FILE AND START QUEUE JOB
	AX = F217h subfn 7Fh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02214)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=69h,AX=F217h/SF=80h,AX=F217h/SF=81h

Format of NetWare "Close File And Start Queue Job" request packet:
Offset	Size	Description	(Table 02214)
 00h	WORD	length of following data
 02h	BYTE	7Fh (subfunction "Close File And Start Queue Job")
 03h	DWORD	queue ID
 07h	DWORD	job number

Top
21F217SF80 - INT 21 - Novell NetWare - REMOVE JOB FROM QUEUE
INT 21 - Novell NetWare - REMOVE JOB FROM QUEUE
	AX = F217h subfn 80h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02215)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Ah,AX=F217h/SF=7Fh

Format of NetWare "Remove Job From Queue" request packet:
Offset	Size	Description	(Table 02215)
 00h	WORD	length of following data
 02h	BYTE	80h (subfunction "Remove Job From Queue")
 03h	DWORD	queue ID
 07h	DWORD	job number (returned when job was added to queue)

Top
21F217SF81 - INT 21 - Novell NetWare - GET QUEUE JOB LIST
INT 21 - Novell NetWare - GET QUEUE JOB LIST
	AX = F217h subfn 81h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02216)
	ES:DI -> reply buffer (see #02217)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Bh

Format of NetWare "Get Queue Job List" request packet:
Offset	Size	Description	(Table 02216)
 00h	WORD	length of following data
 02h	BYTE	81h (subfunction "Get Queue Job List")
 03h	DWORD	queue ID
 07h	DWORD	address of next job in queue
SeeAlso: #02217

Format of NetWare "Get Queue Job List" reply packet:
Offset	Size	Description	(Table 02217)
 00h	DWORD	total jobs in queue
 04h	DWORD	length of job number list (max 125)
 08h  N DWORDs	list of job numbers in queue
SeeAlso: #02216

Top
21F217SF82 - INT 21 - Novell NetWare v2.1+ - CHANGE JOB PRIORITY
INT 21 - Novell NetWare v2.1+ - CHANGE JOB PRIORITY
	AX = F217h subfn 82h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02218)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell"

Format of NetWare "Change Job Priority" request packet:
Offset	Size	Description	(Table 02218)
 00h	WORD	length of following data
 02h	BYTE	82h (subfunction "Change Job Priority")
 03h	DWORD	queue ID
 07h	DWORD	job number
 0Bh	DWORD	priority

Top
21F217SF83 - INT 21 - Novell NetWare v3.1+ - FINISH SERVICING QUEUE JOB
INT 21 - Novell NetWare v3.1+ - FINISH SERVICING QUEUE JOB
	AX = F217h subfn 83h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #01998 at AH=E3h/SF=83h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=83h,AX=F217h/SF=72h,AX=F217h/SF=84h

Top
21F217SF84 - INT 21 - Novell NetWare v3.1+ - ABORT SERVICING QUEUE JOB
INT 21 - Novell NetWare v3.1+ - ABORT SERVICING QUEUE JOB
	AX = F217h subfn 84h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02000 at AH=E3h/SF=84h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Desc:	inform the Queue Management System (QMS) that the queue server is
	  unable to service a previously-accepted job
SeeAlso: AH=F2h"Novell",AH=E3h/SF=84h,AX=F217h/SF=73h,AX=F217h/SF=83h

Top
21F217SF85 - INT 21 - Novell NetWare v3.1+ - CHANGE TO CLIENT RIGHTS
INT 21 - Novell NetWare v3.1+ - CHANGE TO CLIENT RIGHTS
	AX = F217h subfn 85h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02219)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Desc:	temporarily assume the login identity of the client submitting the
	  job being serviced
SeeAlso: AH=F2h"NetWare",AH=E3h/SF=74h,AX=F217h/SF=74h

Format of NetWare "Change to Client Rights" request packet:
Offset	Size	Description	(Table 02219)
 00h	WORD	length of following data
 02h	BYTE	85h (subfunction "Change to Client Rights")
 03h	DWORD	queue object ID
 07h	DWORD	job number
SeeAlso: #01990

Top
21F217SF86 - INT 21 - Novell NetWare v3.1+ - READ QUEUE SERVER CURRENT STATUS
INT 21 - Novell NetWare v3.1+ - READ QUEUE SERVER CURRENT STATUS
	AX = F217h subfn 86h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02220)
	ES:DI -> reply buffer (see #02221)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=76h,AX=F217h/SF=77h,AX=F217h/SF=7Dh

Format of NetWare "Read Queue Server Current Status" request packet:
Offset	Size	Description	(Table 02220)
 00h	WORD	length of following data
 02h	BYTE	86h (subfunction "Read Queue Server Current Status")
 03h	DWORD	queue ID
 07h	DWORD	server ID
 0Bh	DWORD	connection ID
SeeAlso: #02221

Format of NetWare "Read Queue Server Current Status" request packet:
Offset	Size	Description	(Table 02221)
 00h 64 BYTEs	server status record
SeeAlso: #02220

Top
21F217SF87 - INT 21 - Novell NetWare v3.1+ - GET QUEUE JOB FILE SIZE
INT 21 - Novell NetWare v3.1+ - GET QUEUE JOB FILE SIZE
	AX = F217h subfn 87h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02222)
	ES:DI -> reply buffer (see #02223)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=78h

Format of NetWare "Get Queue Job File Size" request packet:
Offset	Size	Description	(Table 02222)
 00h	WORD	length of following data
 02h	BYTE	87h (subfunction "Get Queue Job File Size")
	???
SeeAlso: #02223

Format of NetWare "Get Queue Job File Size" request packet:
Offset	Size	Description	(Table 02223)
 00h	???
SeeAlso: #02222

Top
21F217SF96 - INT 21 - Novell NetWare - GET ACCOUNT STATUS
INT 21 - Novell NetWare - GET ACCOUNT STATUS
	AX = F217h subfn 96h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02003 at AH=E3h/SF=96h)
	ES:DI -> reply buffer (see #02224)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=96h,AX=F217h/SF=97h,AX=F217h/SF=98h

Format of NetWare "Get Account Status" reply packet:
Offset	Size	Description	(Table 02224)
 00h	DWORD	(big-endian) account balance
 04h	DWORD	(big-endian) credit limit
		signed number indicating lowest allowable account balance
 06h 120 BYTEs	reserved
 80h	DWORD	(big-endian) object ID, server 1
 84h	DWORD	(big-endian) hold amount, server 1
	...
 F6h	DWORD	(big-endian) object ID, server 16
 FAh	DWORD	(big-endian) hold amount, server 16
Note:	the reply buffer lists the servers which have placed holds on a portion
	  of the account balance, and the amount reserved by each
SeeAlso: #02003,#02004 at AH=E3h/SF=96h

Top
21F217SF97 - INT 21 - Novell NetWare - SUBMIT ACCOUNT CHARGE
INT 21 - Novell NetWare - SUBMIT ACCOUNT CHARGE
	AX = F217h subfn 97h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02005 at AH=E3h/SF=97h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=97h,AX=F217h/SF=96h,AX=F217h/SF=98h

Top
21F217SF98 - INT 21 - Novell NetWare - SUBMIT ACCOUNT HOLD
INT 21 - Novell NetWare - SUBMIT ACCOUNT HOLD
	AX = F217h subfn 98h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02006 at AH=E3h/SF=98h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=98h,AX=F217h/SF=97h,AX=F217h/SF=99h

Top
21F217SF99 - INT 21 - Novell NetWare - SUBMIT ACCOUNT NOTE
INT 21 - Novell NetWare - SUBMIT ACCOUNT NOTE
	AX = F217h subfn 99h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02008 at AH=E3h/SF=99h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=99h,AX=F217h/SF=96h,AX=F217h/SF=98h

Top
21F217SFC8 - INT 21 - Novell NetWare - CHECK CONSOLE PRIVILEGES
INT 21 - Novell NetWare - CHECK CONSOLE PRIVILEGES
	AX = F217h subfn C8h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02009 at AH=E3h/SF=C8h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=C8h,AX=F217h/SF=C9h,AX=F217h/SF=D1h

Top
21F217SFC9 - INT 21 - Novell NetWare - GET FILE SERVER DESCRIPTION STRINGS
INT 21 - Novell NetWare - GET FILE SERVER DESCRIPTION STRINGS
	AX = F217h subfn C9h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02010 at AH=E3h/SF=C9h)
	ES:DI -> reply buffer (see #02225)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=C9h,AX=F217h/SF=C8h,AX=F217h/SF=CAh

Format of NetWare "Get File Server Description Strings" reply packet:
Offset	Size	Description	(Table 02225)
 00h	var	ASCIZ name of company distributing this copy of NetWare
	var	ASCIZ version and revision
      9 BYTEs	ASCIZ revision date (mm/dd/yy)
	var	ASCIZ copyright notice
SeeAlso: #02010,#02011 at AH=E3h/SF=C9h

Top
21F217SFCA - INT 21 - Novell NetWare - SET FILE SERVER DATE AND TIME
INT 21 - Novell NetWare - SET FILE SERVER DATE AND TIME
	AX = F217h subfn CAh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02012 at AH=E3h/SF=CAh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CAh,AX=F217h/SF=C8h,AX=F217h/SF=CBh

Top
21F217SFCB - INT 21 - Novell NetWare - DISABLE FILE SERVER LOGIN
INT 21 - Novell NetWare - DISABLE FILE SERVER LOGIN
	AX = F217h subfn CBh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02013 at AH=E3h/SF=CBh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CBh,AX=F217h/SF=C8h,AX=F217h/SF=CCh

Top
21F217SFCC - INT 21 - Novell NetWare - ENABLE FILE SERVER LOGIN
INT 21 - Novell NetWare - ENABLE FILE SERVER LOGIN
	AX = F217h subfn CCh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02015 at AH=E3h/SF=CCh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CCh,AX=F217h/SF=C8h,AX=F217h/SF=CBh

Top
21F217SFCD - INT 21 - Novell NetWare - GET FILE SERVER LOGIN STATUS
INT 21 - Novell NetWare - GET FILE SERVER LOGIN STATUS
	AX = F217h subfn CDh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02016 at AH=E3h/SF=CDh)
	ES:DI -> reply buffer (see #02226)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CDh,AX=F217h/SF=CBh,AX=F217h/SF=CCh

Format of NetWare "Get File Server Login Status" reply packet:
Offset	Size	Description	(Table 02226)
 00h	BYTE	login state (00h disabled, 01h enabled)
SeeAlso: #02016,#02017 at AH=E3h/SF=CDh

Top
21F217SFCE - INT 21 - Novell NetWare - PURGE ALL ERASED FILES
INT 21 - Novell NetWare - PURGE ALL ERASED FILES
	AX = F217h subfn CEh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02018 at AH=E3h/SF=CEh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CEh,AX=F244h

Top
21F217SFCF - INT 21 - Novell NetWare - DISABLE TRANSACTION TRACKING
INT 21 - Novell NetWare - DISABLE TRANSACTION TRACKING
	AX = F217h subfn CFh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02019 at AH=E3h/SF=CFh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CFh,AX=F217h/SF=D0h

Top
21F217SFD0 - INT 21 - Novell NetWare - ENABLE TRANSACTION TRACKING
INT 21 - Novell NetWare - ENABLE TRANSACTION TRACKING
	AX = F217h subfn D0h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02021 at AH=E3h/SF=D0h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D0h,AX=F217h/SF=CFh

Top
21F217SFD1 - INT 21 - Novell NetWare - SEND CONSOLE BROADCAST
INT 21 - Novell NetWare - SEND CONSOLE BROADCAST
	AX = F217h subfn D1h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02022 at AH=E3h/SF=D1h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D1h,AX=F217h/SF=D2h

Top
21F217SFD2 - INT 21 - Novell NetWare v3+ - CLEAR CONNECTION NUMBER (LOGOUT STATION)
INT 21 - Novell NetWare v3+ - CLEAR CONNECTION NUMBER (LOGOUT STATION)
	AX = F217h subfn D2h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02023 at AH=E3h/SF=D2h)
	ES:DI ignored
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D2h,AX=F217h/SF=D1h,AX=F217h/SF=FEh

Top
21F217SFD3 - INT 21 - Novell NetWare - DOWN FILE SERVER
INT 21 - Novell NetWare - DOWN FILE SERVER
	AX = F217h subfn D3h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02026 at AH=E3h/SF=D3h)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D3h,AX=F217h/SF=D2h

Top
21F217SFD4 - INT 21 - Novell NetWare - GET FILE SYSTEM STATISTICS
INT 21 - Novell NetWare - GET FILE SYSTEM STATISTICS
	AX = F217h subfn D4h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02027 at AH=E3h/SF=D4h)
	ES:DI -> reply buffer (see #02227)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D4h,AX=F217h/SF=D6h,AX=F217h/SF=D9h

Format of NetWare "Get File System Statistics" reply packet:
Offset	Size	Description	(Table 02227)
 00h	DWORD	clock ticks since system started
 04h	WORD	maximum open files set by configuration
 06h	WORD	maximum files open concurrently
 08h	WORD	current number of open files
 0Ah	DWORD	total files opened
 0Eh	DWORD	total file read requests
 12h	DWORD	total file write requests
 16h	WORD	current changed FATs
 18h	WORD	total changed FATs
 1Ah	WORD	number of FAT write errors
 1Ch	WORD	number of fatal FAT write errors
 1Eh	WORD	number of FAT scan errors
 20h	WORD	maximum concurrently-indexed files
 22h	WORD	current number of indexed files
 24h	WORD	number of attached indexed files
 26h	WORD	number of indexed files available
Note:	all fields are big-endian
SeeAlso: #02027,#02028 at AH=E3h/SF=D4h

Top
21F217SFD5 - INT 21 - Novell NetWare - GET TRANSACTION TRACKING STATISTICS
INT 21 - Novell NetWare - GET TRANSACTION TRACKING STATISTICS
	AX = F217h subfn D5h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02029 at AH=E3h/SF=D5h)
	ES:DI -> reply buffer (see #02228)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D5h,AX=F217h/SF=D0h

Format of NetWare "Get Transaction Tracking Statistics" reply packet:
Offset	Size	Description	(Table 02228)
 00h	DWORD	(big-endian) clock ticks since system started
 04h	BYTE	transaction tracking supported if nonzero
		(all following fields are invalid if zero)
 05h	BYTE	transaction tracking enabled
 06h	WORD	(big-endian) transaction volume number
 08h	WORD	(big-endian) maximum simultaneous transactions configured
 0Ah	WORD	(big-endian) maximum simultaneous transactions since startup
 0Ch	WORD	(big-endian) current transactions in progress
 0Eh	DWORD	(big-endian) total transactions performed
 12h	DWORD	(big-endian) total write transactions
 16h	DWORD	(big-endian) total transactions backed out
 1Ah	WORD	(big-endian) number of unfilled backout requests
 1Ch	WORD	(big-endian) disk blocks used for transaction tracking
 1Eh	DWORD	(big-endian) blocks allocated for tracked-file FATs
 22h	DWORD	(big-endian) number of file size changes during a transaction
 26h	DWORD	(big-endian) number of file truncations during a transaction
 2Ah	BYTE	number of records following
 2Bh	Active Transaction Records [array]
	Offset	Size	Description
	 00h	BYTE	logical connection number
	 01h	BYTE	task number
SeeAlso: #02029,#02030 at AH=E3h/SF=D5h

Top
21F217SFD6 - INT 21 - Novell NetWare - GET DISK CACHE STATISTICS
INT 21 - Novell NetWare - GET DISK CACHE STATISTICS
	AX = F217h subfn D6h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02031 at AH=E3h/SF=D6h)
	ES:DI -> reply buffer (see #02229)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D6h,AX=F217h/SF=D5h,AX=F217h/SF=D8h

Format of NetWare "Get Disk Cache Statistics" reply packet:
Offset	Size	Description	(Table 02229)
 00h	DWORD	clock ticks since system started
 04h	WORD	number of cache buffers
 06h	WORD	size of cache buffer in bytes
 08h	WORD	number of dirty cache buffers
 0Ah	DWORD	number of cache read requests
 0Eh	DWORD	number of cache write requests
 12h	DWORD	number of cache hits
 16h	DWORD	number of cache misses
 1Ah	DWORD	number of physical read requests
 1Eh	DWORD	number of physical write requests
 22h	WORD	number of physical read errors
 24h	WORD	number of physical write errors
 26h	DWORD	cache get requests
 2Ah	DWORD	cache full write requests
 2Eh	DWORD	cache partial write requests
 32h	DWORD	background dirty writes
 36h	DWORD	background aged writes
 3Ah	DWORD	total cache writes
 3Eh	DWORD	number of cache allocations
 42h	WORD	thrashing count
 44h	WORD	number of times LRU block was dirty
 46h	WORD	number of reads on cache blocks not yet filled by writes
 48h	WORD	number of times a fragmented write occurred
 4Ah	WORD	number of cache hits on unavailable block
 4Ch	WORD	number of times a cache block was scrapped
Note:	all fields are big-endian
SeeAlso: #02031,#02032 at AH=E3h/SF=D6h

Top
21F217SFD7 - INT 21 - Novell NetWare - GET DRIVE MAPPING TABLE
INT 21 - Novell NetWare - GET DRIVE MAPPING TABLE
	AX = F217h subfn D7h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02033 at AH=E3h/SF=D7h)
	ES:DI -> reply buffer (see #02230)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=EF00h,AX=EF01h,AX=EF02h,AH=F2h"Novell",AH=E3h/SF=D7h

Format of NetWare "Get Drive Mapping Table" reply packet:
Offset	Size	Description	(Table 02230)
 00h	DWORD	(big-endian) clock tick elapsed since system started
 04h	BYTE	fault tolerance (SFT) level
 05h	BYTE	number of logical drives attached to server
 06h	BYTE	number of physical drives attached to server
 07h  5 BYTEs	disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
		  04h disk coprocessor drive, 32h-FFh value-added drive types)
 0Ch	WORD	(big-endian) number of outstanding controller commands
 0Eh 32 BYTEs	drive mapping table (FFh = no such drive)
 2Eh 32 BYTEs	drive mirror table (secondary physical drive, FFh = none)
 4Eh 32 BYTEs	dead mirror table (last drive mapped to, FFh if never mirrored)
 6Eh	BYTE	physical drive being remirrored (FFh = none)
 6Fh	BYTE	reserved
 70h	DWORD	(big-endian) remirrored block
 74h 60 BYTEs	SFT error table (internal error counters)
SeeAlso: #02033,#02034 at AH=E3h/SF=D7h

Top
21F217SFD8 - INT 21 - Novell NetWare - GET PHYSICAL DISK STATISTICS
INT 21 - Novell NetWare - GET PHYSICAL DISK STATISTICS
	AX = F217h subfn D8h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02035 at AH=E3h/SF=D8h)
	ES:DI -> reply buffer (see #02231)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D8h,AX=F217h/SF=D9h

Format of NetWare "Get Physical Disk Statistics" request packet:
Offset	Size	Description	(Table 02231)
 00h	DWORD	(big-endian) clock ticks since system started
 04h	BYTE	physical disk channel
 05h	BYTE	flag: drive removable if nonzero
 06h	BYTE	physical drive type
 07h	BYTE	drive number within controller
 08h	BYTE	controller number
 09h	BYTE	controller type
 0Ah	DWORD	(big-endian) size of drive in 4K disk blocks
 0Eh	WORD	(big-endian) number of cylinders on drive
 10h	BYTE	number of heads
 11h	BYTE	number of sectors per track
 12h 64 BYTEs	ASCIZ drive make and model
 52h	WORD	(big-endian) number of I/O errors
 56h	DWORD	(big-endian) start of Hot Fix table
 58h	WORD	(big-endian) size of Hot Fix table
 5Ah	WORD	(big-endian) number of Hot Fix blocks available
 5Ch	BYTE	flag: Hot Fix disabled if nonzero
SeeAlso: #02035,#02036 at AH=E3h/SF=D8h

Top
21F217SFD9 - INT 21 - Novell NetWare - GET DISK CHANNEL STATISTICS
INT 21 - Novell NetWare - GET DISK CHANNEL STATISTICS
	AX = F217h subfn D9h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02037 at AH=E3h/SF=D9h)
	ES:DI -> reply buffer (see #02232)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D9h,AX=F217h/SF=D8h

Format of NetWare "Get Disk Channel Statistics" reply packet:
Offset	Size	Description	(Table 02232)
 00h	DWORD	(big-endian) clock ticks since system started
 04h	WORD	(big-endian) channel run state (see #02039)
 06h	WORD	(big-endian) channel synchronization state (see #02040)
 08h	BYTE	driver type
 09h	BYTE	major version of driver
 0Ah	BYTE	minor version of driver
 0Bh 65 BYTEs	ASCIZ driver description
 4Ch	WORD	(big-endian) first I/O address used
 4Eh	WORD	(big-endian) length of first I/O address
 50h	WORD	(big-endian) second I/O address used
 52h	WORD	(big-endian) length of second I/O address
 54h  3 BYTEs	first shared memory address
 57h  2 BYTEs	length of first shared memory address
 59h  3 BYTEs	second shared memory address
 5Ch  2 BYTEs	length of second shared memory address
 5Eh	BYTE	first interrupt number in-use flag
 5Fh	BYTE	first interrupt number used
 60h	BYTE	second interrupt number in-use flag
 61h	BYTE	second interrupt number used
 62h	BYTE	first DMA channel in-use flag
 63h	BYTE	first DMA channel used
 64h	BYTE	second DMA channel in-use flag
 65h	BYTE	second DMA channel used
 66h	BYTE	flags
 67h	BYTE	reserved
 68h 80 BYTEs	ASCIZ configuration description
SeeAlso: #02037,#02038 at AH=E3h/SF=D9h

Top
21F217SFDA - INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S TASK INFORMATION
INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S TASK INFORMATION
	AX = F217h subfn DAh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02041 at AH=E3h/SF=DAh)
	ES:DI -> reply buffer (see #02233)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DAh,AX=F217h/SF=EAh

Format of NetWare "Get Connection's Task Information" reply packet:
Offset	Size	Description	(Table 02233)
 00h	BYTE	lock status of connection (see #02043)
 01h	var	Lock Status Information (see #02044)
 N	BYTE	number of records following
 N+1	Active Task Information Records [array]
	Offset	Size	Description
	 00h	BYTE	task number (01h-FFh)
	 01h	BYTE	task state
			00h normal task
			01h in TTS explicit transaction
			02h in TTS implicit transaction
			04h shared fileset lock active
SeeAlso: #02248,#02041,#02042 at AH=E3h/SF=DAh

Top
21F217SFDB - INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S OPEN FILES (OLD)
INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S OPEN FILES (OLD)
	AX = F217h subfn DBh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02045 at AH=E3h/SF=DBh)
	ES:DI -> reply buffer (see #02234)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DBh,AX=F217h/SF=EBh

Format of NetWare "Get Connection's Open Files (old)" reply packet:
Offset	Size	Description	(Table 02234)
 00h	WORD	next request record (place in "last record" field on next call)
		0000h if no more records
 02h	BYTE	number of records following
 03h	var	array of File Information Records (see #02047 at AH=E3h/SF=DBh)
SeeAlso: #02045,#02046 at AH=E3h/SF=DBh

Top
21F217SFDC - INT 21 - Novell NetWare v2.2+ - GET CONNECTIONS USING A FILE (OLD)
INT 21 - Novell NetWare v2.2+ - GET CONNECTIONS USING A FILE (OLD)
	AX = F217h subfn DCh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02050 at AH=E3h/SF=DCh)
	ES:DI -> reply buffer (see #02235)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DCh,AX=F217h/SF=ECh

Format of NetWare "Get Connections Using A File (old)" reply packet:
Offset	Size	Description	(Table 02235)
 00h	WORD	(big-endian) count of tasks which have opened or logged file
 02h	WORD	(big-endian) count of tasks which have opened file
 04h	WORD	(big-endian) count of opens for reading
 06h	WORD	(big-endian) count of opens for writing
 08h	WORD	(big-endian) deny read count
 0Ah	WORD	(big-endian) deny write count
 0Ch	WORD	next request record (place in "last record" field on next call)
		0000h if no more records
 0Eh	BYTE	locked flag
		00h not locked exclusively
		else locked exclusively
 0Fh	BYTE	number of records following
 10h	var	array of File Usage Information Records
		  (see #02052 at AH=E3h/SF=DCh)
SeeAlso: #02050,#02051 at AH=E3h/SF=DCh

Top
21F217SFDD - INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY CONNECTN AND FILE (OLD)
INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY CONNECTN AND FILE (OLD)
	AX = F217h subfn DDh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02054 at AH=E3h/SF=DDh)
	ES:DI -> reply buffer (see #02236)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DDh,AX=F217h/SF=DEh,AX=F217h/SF=EDh

Format of NetWare "Get Phys Record Locks By Conn & File (old)" reply packet:
Offset	Size	Description	(Table 02236)
 00h	WORD	next request record (place in "last record" on next call)
		0000h if no more records
 02h	BYTE	number of physical record locks
 03h	BYTE	number of records following
 04h	var	array of Physical Record Lock Info records
		  (see #02056 at AH=E3h/SF=DDh)
SeeAlso: #02054,#02055 at AH=E3h/SF=DDh

Top
21F217SFDE - INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY FILE (OLD)
INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY FILE (OLD)
	AX = F217h subfn DEh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02058 at AH=E3h/SF=DEh)
	ES:DI -> reply buffer (see #02237)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DEh,AX=F217h/SF=EEh

Format of NetWare "Get Physical Record Locks By File (old)" reply packet:
Offset	Size	Description	(Table 02237)
 00h	WORD	next request record (place in "last record" on next call)
		0000h if no more records
 02h	BYTE	number of physical record locks
 03h	BYTE	number of records following
 04h	var	array of Physical Record Lock Info records (see #02060)
SeeAlso: #02058,#02059 at AH=E3h/SF=DEh

Top
21F217SFDF - INT 21 - Novell NetWare - GET LOGICAL RECORDS BY CONNECTION (OLD)
INT 21 - Novell NetWare - GET LOGICAL RECORDS BY CONNECTION (OLD)
	AX = F217h subfn DFh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02061 at AH=E3h/SF=DFh)
	ES:DI -> reply buffer (see #02238)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DFh,AX=F217h/SF=EFh

Format of NetWare "Get Logical Records By Connection (old)" reply packet:
Offset	Size	Description	(Table 02238)
 00h	WORD	next request record (place in "last record" field on next call)
		0000h if no more locked records
 02h	BYTE	number of records following
 03h	var	array of Logical Lock Information Records
		  (see #02063 at AH=E3h/SF=DFh)
SeeAlso: #02061,#02062 at AH=E3h/SF=DFh

Top
21F217SFE0 - INT 21 - Novell NetWare - GET LOGICAL RECORD INFORMATION (OLD)
INT 21 - Novell NetWare - GET LOGICAL RECORD INFORMATION (OLD)
	AX = F217h subfn E0h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02064 at AH=E3h/SF=E0h)
	ES:DI -> reply buffer (see #02239)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E0h,AX=F217h/SF=F0h

Format of NetWare "Get Logical Record Information (Old)" reply packet:
Offset	Size	Description	(Table 02239)
 00h	WORD	(big-endian) number of logical connections logging the record
 02h	WORD	(big-endian) number of logical connections with shareable lock
 04h	WORD	(big-endian) next request record (place in "last record" field
		  on next call)
 06h	BYTE	locked exclusively if nonzero
 07h	BYTE	number of records following
 08h	var	array of Task Information Records (see #02066 at AH=E3h/SF=E0h)
SeeAlso: #02064,#02065 at AH=E3h/SF=E0h

Top
21F217SFE1 - INT 21 - Novell NetWare - GET CONNECTION'S SEMAPHORES (OLD)
INT 21 - Novell NetWare - GET CONNECTION'S SEMAPHORES (OLD)
	AX = F217h subfn E1h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02067 at AH=E3h/SF=E1h)
	ES:DI -> reply buffer (see #02240)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E1h,AX=F217h/SF=F1h

Format of NetWare "Get Connection's Semaphores (old)" reply packet:
Offset	Size	Description	(Table 02240)
 00h	WORD	next request record (place in "last record" field on next call)
 02h	BYTE	number of records following
 03h	var	array of Semaphore Information Records
		  (see #02069 at AH=E3h/SF=E1h)
SeeAlso: #02067,#02068 at AH=E3h/SF=E1h

Top
21F217SFE2 - INT 21 - Novell NetWare - GET SEMAPHORE INFORMATION (OLD)
INT 21 - Novell NetWare - GET SEMAPHORE INFORMATION (OLD)
	AX = F217h subfn E2h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02070 at AH=E3h/SF=E2h)
	ES:DI -> reply buffer (see #02241)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E2h,AX=F217h/SF=F2h

Format of NetWare "Get Semaphore Information (old)" reply packet:
Offset	Size	Description	(Table 02241)
 00h	WORD	next request record (place in "last record" on next call)
		0000h if no more
 02h	WORD	(big-endian) number of logical connections opening semaphore
 04h	BYTE	semaphore value (-127 to 128)
 05h	BYTE	number of records following
 06h	var	array of Semaphore Information records (see #02072)
SeeAlso: #02070,#02071 at AH=E3h/SF=E2h

Top
21F217SFE3 - INT 21 - Novell NetWare - GET LAN DRIVER'S CONFIGURATION INFORMATION
INT 21 - Novell NetWare - GET LAN DRIVER'S CONFIGURATION INFORMATION
	AX = F217h subfn E3h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02073 at AH=E3h/SF=E3h)
	ES:DI -> reply buffer (see #02242)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E3h,AX=F217h/SF=E7h,AX=F217h/SF=E8h

Format of NetWare "Get Lan Driver's Configuration Information" reply packet:
Offset	Size	Description	(Table 02242)
 00h  4 BYTEs	network number
 04h  6 BYTEs	node number
 0Ah	BYTE	LAN driver installed (00h no--remaining fields invalid)
 0Bh	BYTE	option number selected at configuration time
 0Ch 160 BYTEs	configuration text
		ASCIZ hardware type
		ASCIZ hardware settings
SeeAlso: #02073,#02074 at AH=E3h/SF=E3h

Top
21F217SFE5 - INT 21 - Novell NetWare - GET CONNECTION'S USAGE STATISTICS
INT 21 - Novell NetWare - GET CONNECTION'S USAGE STATISTICS
	AX = F217h subfn E5h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02075 at AH=E3h/SF=E5h)
	ES:DI -> reply buffer (see #02243)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E5h,AX=F217h/SF=EAh

Format of NetWare "Get Connection's Usage Statistics" reply packet:
Offset	Size	Description	(Table 02243)
 00h	DWORD	(big-endian) clock ticks since server started
 04h  6 BYTEs	bytes read
 0Ah  6 BYTEs	bytes written
 10h	DWORD	(big-endian) total request packets
SeeAlso: #02075,#02076 at AH=E3h/SF=E5h

Top
21F217SFE6 - INT 21 - Novell NetWare - GET OBJECT'S REMAINING DISK SPACE
INT 21 - Novell NetWare - GET OBJECT'S REMAINING DISK SPACE
	AX = F217h subfn E6h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02077 at AH=E3h/SF=E6h)
	ES:DI -> reply buffer (see #02244)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E6h,AX=F216h/SF=20h,AX=F216h/SF=23h

Format of NetWare "Get Object's Remaining Disk Space" reply packet:
Offset	Size	Description	(Table 02244)
 00h	DWORD	(big-endian) clock ticks elapsed since server started
 04h	DWORD	(big-endian) object ID
 08h	DWORD	(big-endian) 4K disk blocks available to user
 0Ch	BYTE	restrictions (00h enforced, FFh not enforced)
SeeAlso: #02077,#02078 at AH=E3h/SF=E6h

Top
21F217SFE7 - INT 21 - Novell NetWare - GET FILE SERVER LAN I/O STATISTICS
INT 21 - Novell NetWare - GET FILE SERVER LAN I/O STATISTICS
	AX = F217h subfn E7h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02079 at AH=E3h/SF=E7h)
	ES:DI -> reply buffer (see #02245)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E7h,AX=F217h/SF=11h,AX=F217h/SF=F5h

Format of NetWare "Get File Server Lan I/O Statistics" reply packet:
Offset	Size	Description	(Table 02245)
 00h	DWORD	clock ticks since system started
 04h	WORD	total routing buffers
 06h	WORD	maximum routing buffers used
 08h	WORD	current routing buffers used
 0Ah	DWORD	total file service packets
 0Eh	WORD	number of file service packets buffered
 10h	WORD	number of invalid connection packets
 12h	WORD	packets with bad logical connection numbers
 14h	WORD	number of packets received during processing
 16h	WORD	number of requests reprocessed
 18h	WORD	packets with bad sequence numbers
 1Ah	WORD	number of duplicate replies sent
 1Ch	WORD	number of acknowledgements sent
 1Eh	WORD	number of packets with bad request types
 20h	WORD	requests to attach to ws for which a request is being processed
 22h	WORD	requests to attach from ws which is already attaching
 24h	WORD	number of forged detach requests
 26h	WORD	detach requests with bad connection number
 28h	WORD	requests to detach from ws for which requests pending
 2Ah	WORD	number of cancelled replies
 2Ch	WORD	packets discarded due to excessive hop count
 2Eh	WORD	packets discarded due to unknown net
 30h	WORD	incoming packets discarded for lack of DGroup buffer
 32h	WORD	outgoing packets discarded due to lack of buffer
 34h	WORD	received packets destined for B,C, or D side drivers
 36h	DWORD	number of NetBIOS packets propagated through net
 3Ah	DWORD	total number of non-file-service packets
 3Eh	DWORD	total number of routed packets
Note:	all fields are big-endian
SeeAlso: #02079,#02080 at AH=E3h/SF=E7h

Top
21F217SFE8 - INT 21 - Novell NetWare - GET FILE SERVER MISC INFORMATION
INT 21 - Novell NetWare - GET FILE SERVER MISC INFORMATION
	AX = F217h subfn E8h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02081 at AH=E3h/SF=E8h)
	ES:DI -> reply buffer (see #02246)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E8h,AX=F217h/SF=11h,AX=F217h/SF=F5h

Format of NetWare "Get File Server Misc Information" reply packet:
Offset	Size	Description	(Table 02246)
 00h	DWORD	(big-endian) clock ticks since system started
 04h	BYTE	CPU type
		00h Motorola 68000
		01h Intel 8086, 8088, or V20
		02h Intel 80286+
 05h	BYTE	reserved
 06h	BYTE	number of service processes in server
 07h	BYTE	server utilization in percent
 08h	WORD	(big-endian) maximum bindery objects set by configuration
		0000h = unlimited
 0Ah	WORD	(big-endian) maximum number of bindery objects used
 0Ch	WORD	(big-endian) current number of bindery objects in use
 0Eh	WORD	(big-endian) total server memory in KB
 10h	WORD	(big-endian) wasted server memory in KB
		normally 0000h
 12h	WORD	number of records following (01h-03h)
 14h	var	array of Dynamic Memory Information records (see #02083)
SeeAlso: #02081,#02082 at AH=E3h/SF=E8h

Top
21F217SFE9 - INT 21 - Novell NetWare - GET VOLUME INFORMATION
INT 21 - Novell NetWare - GET VOLUME INFORMATION
	AX = F217h subfn E9h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02084 at AH=E3h/SF=E9h)
	ES:DI -> reply buffer (see #02247)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E9h,AX=F212h,AX=F216h/SF=15h

Format of NetWare "Get Volume Information" reply packet:
Offset	Size	Description	(Table 02247)
 00h	DWORD	(big-endian) elapsed system time
 04h	BYTE	volume number
 05h	BYTE	logical drive number
 06h	WORD	(big-endian) sectors per block
 08h	WORD	(big-endian) starting block
 0Ah	WORD	(big-endian) total blocks on volume
 0Ch	WORD	(big-endian) blocks available on volume
 0Eh	WORD	(big-endian) total directory slots
 10h	WORD	(big-endian) directory slots available
 12h	WORD	(big-endian) maximum directory entries actually used
 14h	BYTE	flag: volume hashed if nonzero
 15h	BYTE	flag: volume cached if nonzero
 16h	BYTE	flag: volume removable if nonzero
 17h	BYTE	flag: volume mounted if nonzero
 18h 16 BYTEs	NUL-padded volume name
SeeAlso: #02084,#02085 at AH=E3h/SF=E9h

Top
21F217SFEA - INT 21 - Novell NetWare v3.11+ - GET CONNECTION'S TASK INFORMATION
INT 21 - Novell NetWare v3.11+ - GET CONNECTION'S TASK INFORMATION
	AX = F217h subfn EAh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02248)
	ES:DI -> reply buffer (see #02233)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DAh

Format of NetWare "Get Connection's Task Information" request packet:
Offset	Size	Description	(Table 02248)
 00h	WORD	length of following data
 02h	BYTE	EAh (subfunction "Get Connection's Task Information")
 03h	WORD	connection number
SeeAlso: #02233,#02041 at AH=E3h/SF=DAh

Top
21F217SFEB - INT 21 - Novell NetWare v3+ - GET CONNECTION'S OPEN FILES
INT 21 - Novell NetWare v3+ - GET CONNECTION'S OPEN FILES
	AX = F217h subfn EBh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02249)
	ES:DI -> reply buffer (see #02250)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DBh

Format of NetWare "Get Connection's Open Files" request buffer:
Offset	Size	Description	(Table 02249)
 00h	WORD	0005h (length of following data)
 02h	BYTE	EBh (subfunction "Get Connection's Open Files")
 03h	WORD	target connection number
 05h	WORD	last record seen (set to 0000h for first call)
Note:	connection numbers greater than the maximum supported by the server
	  can cause ABENDs
SeeAlso: #02250

Format of NetWare "Get Connection's Open Files" reply buffer:
Offset	Size	Description	(Table 02250)
 00h	WORD	next request record
 02h	WORD	number of records returned (max 28)
 04h 29N BYTEs	array of connection records (see #02251)
SeeAlso: #02249

Format of NetWare connection record:
Offset	Size	Description	(Table 02251)
 00h	WORD	task number
 02h	BYTE	lock type
 03h	BYTE	access control
 04h	BYTE	lock flag
 05h	BYTE	volume number
 06h	DWORD	parent directory entry number
 0Ah	DWORD	directory entry number
 0Eh	BYTE	fork count
 0Fh	BYTE	data stream type / name space (see #02387)
 10h	BYTE	file name length
 11h 12 BYTEs	file name
SeeAlso: #02250

Top
21F217SFEC - INT 21 - Novell NetWare v3+ - GET CONNECTIONS USING A FILE
INT 21 - Novell NetWare v3+ - GET CONNECTIONS USING A FILE
	AX = F217h subfn ECh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02252)
	ES:DI -> reply buffer (see #02253)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DCh

Format of NetWare "Get Connections Using a File" request buffer:
Offset	Size	Description	(Table 02252)
 00h	WORD	0009h (length of following data)
 02h	BYTE	ECh (subfunction "Get Connections Using a File")
 03h	BYTE	data stream type
 04h	BYTE	volume number
 05h	DWORD	directory entry number
 09h	WORD	last record seen (0000h for first call)
SeeAlso: #02253

Format of NetWare "Get Connections Using a File" reply buffer:
Offset	Size	Description	(Table 02253)
 00h	WORD	next request record
 02h	WORD	use count
 04h	WORD	open count
 06h	WORD	number of times open for reading
 08h	WORD	number of times open for writing
 0Ah	WORD	Deny Read count
 0Ch	WORD	Deny Write count
 0Eh	BYTE	flag: locked
 0Fh	BYTE	fork count
 10h	WORD	number of records returned (max 70)
 12h 7N BYTEs	returned records (see #02254)
SeeAlso: #02252

Format of returned record:
Offset	Size	Description	(Table 02254)
 00h	WORD	connection number
 02h	WORD	task number
 04h	BYTE	lock type
 05h	BYTE	access flag
 06h	BYTE	lock flag
SeeAlso: #02253

Top
21F217SFED - INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY CONNECTION AND FILE
INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY CONNECTION AND FILE
	AX = F217h subfn EDh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02255)
	ES:DI -> reply buffer (see #02256)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DDh,AX=F217h/SF=EEh

Format of NetWare "Get Phys Record Locks By Conn And File" request packet:
Offset	Size	Description	(Table 02255)
 00h	WORD	length of following data
 02h	BYTE	EDh (subfunction "Get Physical Record Locks By Connection
		  And File")
 03h	WORD	target connection number
 05h	BYTE	last record seen (set to 00h before first call)
 06h	BYTE	volume number
 07h	DWORD	directory entry number
 0Bh  N BYTEs	filename
SeeAlso: #02256

Format of NetWare "Get Physical Record Locks By Connect And File" reply packet:
Offset	Size	Description	(Table 02256)
 00h	WORD	next record (place in last-seen field on next call)
 02h	WORD	number of locks returned
 04h 11N BYTEs	lock records
		Offset	Size	Description
		 00h	WORD	(big-endian) task number
		 02h	BYTE	lock status
		 03h	DWORD	(big-endian) record start offset
		 07h	DWORD	(big-endian) record end offset
SeeAlso: #02255

Top
21F217SFEE - INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY FILE
INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY FILE
	AX = F217h subfn EEh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02257)
	ES:DI -> reply buffer (see #02258)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DEh

Format of NetWare "Get Physical Record Locks by File" request buffer:
Offset	Size	Description	(Table 02257)
 00h	WORD	0009h (length of following data)
 02h	BYTE	EEh (subfunction "Get Physical Record Locks by File")
 03h	BYTE	data stream number
 04h	BYTE	volume number
 05h	DWORD	directory entry number
 09h	WORD	last record seen (0000h for first call)
SeeAlso: #02258

Format of NetWare "Get Physical Record Locks by File" reply buffer:
Offset	Size	Description	(Table 02258)
 00h	WORD	next request record
 02h	WORD	number of locks
 04h 17N BYTEs	array of lock records, one per lock (see #02259)
SeeAlso: #02257

Format of NetWare lock record:
Offset	Size	Description	(Table 02259)
 00h	WORD	logged count
 02h	WORD	number of shareable locks
 04h	DWORD	start offset of record
 08h	DWORD	end offset of record
 0Ch	WORD	logical connection number
 0Eh	WORD	task number
 10h	BYTE	lock type
SeeAlso: #02258

Top
21F217SFEF - INT 21 - Novell NetWare v3+ - GET LOGICAL RECORDS BY CONNECTION
INT 21 - Novell NetWare v3+ - GET LOGICAL RECORDS BY CONNECTION
	AX = F217h subfn EFh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02260)
	ES:DI -> reply buffer (see #02261)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DFh

Format of NetWare "Get Logical Records By Connection" request packet:
Offset	Size	Description	(Table 02260)
 00h	WORD	length of following data
 02h	BYTE	EFh (subfunction "Get Logical Records By Connection")
 03h	WORD	target connection number
 05h	WORD	last record seen (set to 0000h before first call)
SeeAlso: #02261

Format of NetWare "Get Logical Records By Connection" request packet:
Offset	Size	Description	(Table 02261)
 00h	WORD	next record (place in last-seen field on next call)
 02h	WORD	number of records returned
 04h		Logical Lock Information records (see #02063 at AH=E3h/SF=DFh)
SeeAlso: #02260

Top
21F217SFF0 - INT 21 - Novell NetWare v3+ - GET LOGICAL RECORD INFORMATION
INT 21 - Novell NetWare v3+ - GET LOGICAL RECORD INFORMATION
	AX = F217h subfn F0h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02262)
	ES:DI -> reply buffer (see #02263)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E0h,AX=F217h/SF=EFh

Format of NetWare "Get Logical Record Information" request packet:
Offset	Size	Description	(Table 02262)
 00h	WORD	length of following data
 02h	BYTE	F0h (subfunction "Get Logical Record Information")
 03h	WORD	last record seen
 05h	BYTE	length of logical record name
 06h  N BYTEs	logical record name (case-sensitive)
SeeAlso: #02263

Format of NetWare "Get Logical Record Information" request packet:
Offset	Size	Description	(Table 02263)
 00h	WORD	number of connections logging record
 02h	WORD	number of shareable locks
 04h	BYTE	flag: locked exclusively if nonzero
 05h	WORD	next request record (place in last-seen field on next call)
 07h	BYTE	number of records returned
 08h		logical record information records [array]
		Offset	Size	Description
		 00h	WORD	connection number
		 02h	BYTE	task number
		 03h	BYTE	lock status
SeeAlso: #02262

Top
21F217SFF1 - INT 21 - Novell NetWare v3+ - GET CONNECTION'S SEMAPHORES
INT 21 - Novell NetWare v3+ - GET CONNECTION'S SEMAPHORES
	AX = F217h subfn F1h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02264)
	ES:DI -> reply buffer (see #02265)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E1h

Format of NetWare "Get Connection's Semaphores" request packet:
Offset	Size	Description	(Table 02264)
 00h	WORD	length of following data
 02h	BYTE	F1h (subfunction "Get Connection's Semaphores")
 03h	WORD	connection number
 05h	WORD	last record seen (set to 0000h before first call)
SeeAlso: #02265

Format of NetWare "Get Connection's Semaphores" reply packet:
Offset	Size	Description	(Table 02265)
 00h	WORD	next record (place in last-seen field on next call)
 02h	WORD	number of semaphores returned
 04h	BYTEs	semaphore information records [packed array] (see #02266)
SeeAlso: #02264

Format of NetWare semaphore information record:
Offset	Size	Description	(Table 02266)
 00h	WORD	semaphore's current value
 02h	WORD	number of connections using semaphore
 04h	WORD	task number
 06h	BYTE	length of semaphore's name
 07h  N BYTEs	semaphore name
SeeAlso: #02265

Top
21F217SFF2 - INT 21 - Novell NetWare v3+ - GET SEMAPHORE INFORMATION
INT 21 - Novell NetWare v3+ - GET SEMAPHORE INFORMATION
	AX = F217h subfn F2h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02267)
	ES:DI -> reply buffer (see #02268)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E2h

Format of NetWare "Get Semaphore Information" request buffer:
Offset	Size	Description	(Table 02267)
 00h	WORD	length of following data (max 84h)
 02h	BYTE	F2h (subfunction "Get Semaphore Information")
 03h	WORD	last record seen (0000h on first call)
 05h	BYTE	length of semaphore name (max 128)
 06h  N BYTEs	semaphore name
SeeAlso: #02268

Format of NetWare "Get Semaphore Information" reply buffer:
Offset	Size	Description	(Table 02268)
 00h	WORD	next request record
 02h	WORD	open count
 04h	BYTE	value of semaphore
 05h	WORD	number of records returned
 07h 2N WORDs	list of logical connection number/task number pairs
SeeAlso: #02267

Top
21F217SFF3 - INT 21 - Novell NetWare v3+ - MAP DIRECTORY NUMBER TO PATH
INT 21 - Novell NetWare v3+ - MAP DIRECTORY NUMBER TO PATH
	AX = F217h subfn F3h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02269)
	ES:DI -> reply buffer (see #02270)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F217h/SF=F4h

Format of NetWare "Map Directory Number to Path" request buffer:
Offset	Size	Description	(Table 02269)
 00h	WORD	0007h (length of following data)
 02h	BYTE	F3h (subfunction "Map Directory Number to Path")
 03h	BYTE	volume number
 04h	DWORD	directory entry number
 08h	BYTE	name space type
SeeAlso: #02270

Format of NetWare "Map Directory Number to Path" reply buffer:
Offset	Size	Description	(Table 02270)
 00h	BYTE	directory path length
 01h  N BYTEs	directory path (NetWare style, separated by length descriptors
		  rather than slashes or backslashes)
SeeAlso: #02269

Top
21F217SFF4 - INT 21 - Novell NetWare v3+ - CONVERT PATH TO DIRECTORY ENTRY
INT 21 - Novell NetWare v3+ - CONVERT PATH TO DIRECTORY ENTRY
	AX = F217h subfn F4h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02271)
	ES:DI -> reply buffer (see #02272)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F217h/SF=F3h

Format of NetWare "Convert Path to Directory Entry" request packet:
Offset	Size	Description	(Table 02271)
 00h	WORD	length of following data
 02h	BYTE	F4h (subfunction "Convert Path to Directory Entry")
 03h	BYTE	directory handle or 00h for none
 04h	BYTE	length of directory path
 05h  N BYTEs	directory path (must be fully qualified if no handle specified)
SeeAlso: #02272

Format of NetWare "Convert Path to Directory Entry" reply packet:
Offset	Size	Description	(Table 02272)
 00h	BYTE	volume number
 01h	DWORD	directory entry number
SeeAlso: #02271

Top
21F217SFF5 - INT 21 - Novell NetWare - GET FILE SERVER EXTENDED MISC INFORMATION
INT 21 - Novell NetWare - GET FILE SERVER EXTENDED MISC INFORMATION
	AX = F217h subfn F5h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02273)
	ES:DI -> reply buffer (see #02274)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=11h,AX=F217h/SF=C9h,AX=F217h/SF=E8h

Format of NetWare "Get File Server Extended Misc Information" request packet:
Offset	Size	Description	(Table 02273)
 00h	WORD	length of following data
 02h	BYTE	F5h (subfunction "Get File Server Extended Misc Information")
 03h	BYTE	length of reply buffer
SeeAlso: #02274

Format of NetWare "Get File Server Extended Misc Information" reply packet:
Offset	Size	Description	(Table 02274)
 00h	DWORD	system interval marker
		(up-time in clock ticks, wraps to 0 on reaching FFFFFFFFh)
 04h	BYTE	processor type
		00h Motorola 680x0
		01h Intel 8088/8086
		02h 80286
 05h	BYTE	reserved for future use
 06h	BYTE	number of service processes
 07h	BYTE	server utilization percentage
 08h	WORD	maximum bindery objects set by configuration
 0Ah	WORD	actual maximum bindery objects
 0Ch	WORD	current number of bindery objects
 0Eh	WORD	(big-endian) total server memory
 10h	WORD	(big-endian) wasted server memory
 12h	WORD	(big-endian) number of dynamic memory areas
 14h	DWORD	(big-endian) total space in dynamic memory area
 18h	DWORD	maximum dynamic space used
 1Ch	DWORD	dynamic space currently used
SeeAlso: #02273

Top
21F217SFF6 - INT 21 - Novell NetWare - GET VOLUME EXTENDED INFORMATION
INT 21 - Novell NetWare - GET VOLUME EXTENDED INFORMATION
	AX = F217h subfn F6h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02275)
	ES:DI -> reply buffer (see #02276)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E8h

Format of NetWare "Get Volume Extended Information" request packet:
Offset	Size	Description	(Table 02275)
 00h	WORD	length of following data
 02h	BYTE	F6h (subfunction "Get Volume Extended Information")
 03h	BYTE	volume number
 04h	BYTE	size of reply buffer
SeeAlso: #02276

Format of NetWare "Get Volume Extended Information" reply packet:
Offset	Size	Description	(Table 02276)
 00h	DWORD	system interval
		(up-time in clock ticks, wraps to 0 on reaching FFFFFFFFh)
 04h	BYTE	volume number
 05h	BYTE	logical drive number
 06h	WORD	number of 512-byte sectors per disk block
 08h	DWORD	starting block number of volume
 0Ch	WORD	total number of disk blocks
 0Eh	WORD	number of free disk blocks
 10h	WORD	total number of directory entries
 12h	WORD	number of available directory entries
 14h	WORD	maximum directory entries ever used
 16h	BYTE	flag: volume is hashed in memory if nonzero
 17h	BYTE	flag: volume is cached if nonzero
 18h	BYTE	flag: volume is removable if nonzero
 19h	BYTE	flag: volume is mounted if nonzero
 1Ah 16 BYTEs	volume name (null-padded)
SeeAlso: #02275

Top
21F217SFFE - INT 21 - Novell NetWare v4 - CLEAR CONNECTION NUMBER GREATER THAN 250
INT 21 - Novell NetWare v4 - CLEAR CONNECTION NUMBER GREATER THAN 250
	AX = F217h subfn FEh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02277)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=E3h/SF=D2h,AX=F217h/SF=D2h

Format of NetWare "Clear Connection Number" request buffer:
Offset	Size	Description	(Table 02277)
 00h	WORD	length of following data
 02h	BYTE	FEh (subfunction "Clear Connection Number")
 03h	DWORD	connection number
SeeAlso: #02023

Top
21F21B - INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET (OLD)
INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET (OLD)
	AX = F21Bh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02480 at AX=F26Eh)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Eh,AH=C2h"NetWare"

Top
21F21E - INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD
INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD
	AX = F21Eh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02278)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=5Ch,AH=BEh"NetWare",AH=F2h"Novell",AX=F20Bh,AX=F21Fh

Format of NetWare "Clear Physical Record" request packet:
Offset	Size	Description	(Table 02278)
 00h	BYTE	reserved for future use
 01h  6 BYTEs	NetWare file handle
 07h	DWORD	starting offset of locked region
 0Bh	DWORD	length of locked region
SeeAlso: #02279

Top
21F21F - INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD SET
INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD SET
	AX = F21Fh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02279)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=5Ch,AH=C4h"NetWare",AH=F2h"Novell",AX=F20Eh,AX=F21Eh

Format of NetWare "Clear Physical Record Set" request packet:
Offset	Size	Description	(Table 02279)
 00h	BYTE	lock flag (00h = not locked)
SeeAlso: #02278

Top
21F220SF00 - INT 21 - Novell NetWare - OPEN SEMAPHORE (OLD)
INT 21 - Novell NetWare - OPEN SEMAPHORE (OLD)
	AX = F220h subfn 00h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02280)
	ES:DI -> reply buffer (see #02281)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C500h,AX=F220h/SF=01h,AX=F220h/SF=03h

Format of NetWare "Open Semaphore (old)" request packet:
Offset	Size	Description	(Table 02280)
 00h	BYTE	00h (subfunction "Open Semaphore (old)")
 01h	BYTE	initial value of semaphore ( >= 0)
 02h	BYTE	length of semaphore's name (max 512)
 03h  N BYTEs	semaphore name
SeeAlso: #02281,#02282

Format of NetWare "Open Semaphore (old)" reply packet:
Offset	Size	Description	(Table 02281)
 00h	DWORD	semaphore handle
 04h	BYTE	number of processes using semaphore (including caller)
SeeAlso: #02280,#02283

Top
21F220SF01 - INT 21 - Novell NetWare - EXAMINE SEMAPHORE (OLD)
INT 21 - Novell NetWare - EXAMINE SEMAPHORE (OLD)
	AX = F220h subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02282)
	ES:DI -> reply buffer (see #02283)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C501h,AX=F220h/SF=00h,AX=F220h/SF=03h

Format of NetWare "Close Semaphore (old)" request packet:
Offset	Size	Description	(Table 02282)
 00h	BYTE	01h (subfunction "Examine Semaphore (old)")
 01h	DWORD	semaphore handle
SeeAlso: #02283,#02280

Format of NetWare "Close Semaphore (old)" request packet:
Offset	Size	Description	(Table 02283)
 00h	BYTE	current semaphore value
 01h	BYTE	number of processes using semaphore (including caller)
SeeAlso: #02282,#02281

Top
21F220SF02 - INT 21 - Novell NetWare - WAIT ON SEMAPHORE (OLD)
INT 21 - Novell NetWare - WAIT ON SEMAPHORE (OLD)
	AX = F220h subfn 02h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02284)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C502h,AX=F220h/SF=00h,AX=F220h/SF=03h

Format of NetWare "Wait on Semaphore (old)" request packet:
Offset	Size	Description	(Table 02284)
 00h	BYTE	02h (subfunction "Wait on Semaphore (old)")
 01h	DWORD	semaphore handle
 05h	WORD	timeout in 1/18s (0000h = return immediately)
SeeAlso: #02282,#02285

Top
21F220SF03 - INT 21 - Novell NetWare - SIGNAL SEMAPHORE (OLD)
INT 21 - Novell NetWare - SIGNAL SEMAPHORE (OLD)
	AX = F220h subfn 03h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02285)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C503h,AX=F220h/SF=02h,AX=F220h/SF=04h

Format of NetWare "Signal Semaphore (old)" request packet:
Offset	Size	Description	(Table 02285)
 00h	BYTE	03h (subfunction "Signal Semaphore (old)")
 01h	DWORD	semaphore handle
SeeAlso: #02284,#02286

Top
21F220SF04 - INT 21 - Novell NetWare - CLOSE SEMAPHORE (OLD)
INT 21 - Novell NetWare - CLOSE SEMAPHORE (OLD)
	AX = F220h subfn 04h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02286)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C504h,AX=F220h/SF=00h,AX=F220h/SF=01h
SeeAlso: AX=F26Fh/SF=01h

Format of NetWare "Close Semaphore (old)" request packet:
Offset	Size	Description	(Table 02286)
 00h	BYTE	04h (subfunction "Close Semaphore (old)")
 01h	DWORD	semaphore handle
SeeAlso: #02285,#02483

Top
21F222SF00 - INT 21 - Novell NetWare - TTS IS AVAILABLE
INT 21 - Novell NetWare - TTS IS AVAILABLE
	AX = F222h subfn 00h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02287)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=01h,AX=F222h/SF=05h

Format of NetWare "TTS Is Available" request packet:
Offset	Size	Description	(Table 02287)
 00h	BYTE	00h (subfunction "TTS Is Available")

Top
21F222SF01 - INT 21 - Novell NetWare - TTS BEGIN TRANSACTION
INT 21 - Novell NetWare - TTS BEGIN TRANSACTION
	AX = F222h subfn 01h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02288)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C700h,AX=F222h/SF=02h,AX=F222h/SF=03h

Format of NetWare "TTS Begin Transaction" request packet:
Offset	Size	Description	(Table 02288)
 00h	BYTE	01h (subfunction "TTS Begin Transaction")
SeeAlso: #02289,#02291

Top
21F222SF02 - INT 21 - Novell NetWare - TTS END TRANSACTION
INT 21 - Novell NetWare - TTS END TRANSACTION
	AX = F222h subfn 02h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02289)
	ES:DI -> reply buffer (see #02290)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C701h,AX=F222h/SF=01h,AX=F222h/SF=04h

Format of NetWare "TTS End Transaction" request packet:
Offset	Size	Description	(Table 02289)
 00h	BYTE	02h (subfunction "TTS End Transaction")
SeeAlso: #02290,#02288

Format of NetWare "TTS End Transaction" reply packet:
Offset	Size	Description	(Table 02290)
 00h	DWORD	transaction number
SeeAlso: #02289,#02292

Top
21F222SF03 - INT 21 - Novell NetWare - TTS ABORT TRANSACTION
INT 21 - Novell NetWare - TTS ABORT TRANSACTION
	AX = F222h subfn 03h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02291)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C703h,AX=F222h/SF=01h,AX=F222h/SF=02h
SeeAlso: AX=F220h/SF=04h

Format of NetWare "TTS Abort Transaction" request packet:
Offset	Size	Description	(Table 02291)
 00h	BYTE	03h (subfunction "TTS Abort Transaction")
SeeAlso: #02288,#02289

Top
21F222SF04 - INT 21 - Novell NetWare - TTS TRANSACTION STATUS
INT 21 - Novell NetWare - TTS TRANSACTION STATUS
	AX = F222h subfn 04h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02292)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C704h,AX=F222h/SF=02h,AX=F222h/SF=03h

Format of NetWare "TTS Transaction Status" request packet:
Offset	Size	Description	(Table 02292)
 00h	BYTE	04h (subfunction "TTS Transaction Status")
 01h	DWORD	transaction number
SeeAlso: #02289,#02290

Top
21F222SF05 - INT 21 - Novell NetWare - TTS GET APPLICATION THRESHOLDS
INT 21 - Novell NetWare - TTS GET APPLICATION THRESHOLDS
	AX = F222h subfn 05h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02293)
	ES:DI -> reply buffer (see #02294)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C705h,AX=F222h/SF=06h,AX=F222h/SF=07h

Format of NetWare "TTS Get Application Thresholds" request packet:
Offset	Size	Description	(Table 02293)
 00h	BYTE	05h (subfunction "TTS Get Application Thresholds")
SeeAlso: #02294,#02295

Format of NetWare "TTS Get Application Thresholds" request packet:
Offset	Size	Description	(Table 02294)
 00h	BYTE	logical lock threshold
 01h	BYTE	physical lock threshold
SeeAlso: #02293,#02295

Top
21F222SF06 - INT 21 - Novell NetWare - TTS SET APPLICATION THRESHOLDS
INT 21 - Novell NetWare - TTS SET APPLICATION THRESHOLDS
	AX = F222h subfn 06h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02295)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C706h,AX=F222h/SF=05h,AX=F222h/SF=08h

Format of NetWare "TTS Set Application Thresholds" request packet:
Offset	Size	Description	(Table 02295)
 00h	BYTE	06h (subfunction "TTS Set Application Thresholds")
 01h	BYTE	logical lock threshold before implicit transaction started
 02h	BYTE	physical lock threshold before implicit transaction started
SeeAlso: #02294,#02298

Top
21F222SF07 - INT 21 - Novell NetWare - TTS GET WORKSTATION THRESHOLDS
INT 21 - Novell NetWare - TTS GET WORKSTATION THRESHOLDS
	AX = F222h subfn 07h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02296)
	ES:DI -> reply buffer (see #02297)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C707h,AX=F222h/SF=05h,AX=F222h/SF=08h

Format of NetWare "TTS Get Workstation Thresholds" request packet:
Offset	Size	Description	(Table 02296)
 00h	BYTE	07h (subfunction "TTS Get Workstation Thresholds")
SeeAlso: #02297

Format of NetWare "TTS Get Workstation Thresholds" reply packet:
Offset	Size	Description	(Table 02297)
 00h	BYTE	logical lock threshold
 01h	BYTE	physical lock threshold
SeeAlso: #02296

Top
21F222SF08 - INT 21 - Novell NetWare - TTS SET WORKSTATION THRESHOLDS
INT 21 - Novell NetWare - TTS SET WORKSTATION THRESHOLDS
	AX = F222h subfn 08h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02298)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C708h,AX=F222h/SF=06h,AX=F222h/SF=07h

Format of NetWare "TTS Set Workstation Thresholds" request packet:
Offset	Size	Description	(Table 02298)
 00h	BYTE	08h (subfunction "TTS Set Workstation Thresholds")
 01h	BYTE	logical lock threshold before implicit transaction started
 02h	BYTE	physical lock threshold before implicit transaction started
SeeAlso: #02295

Top
21F222SF09 - INT 21 - Novell NetWare - TTS GET CONTROL FLAGS
INT 21 - Novell NetWare - TTS GET CONTROL FLAGS
	AX = F222h subfn 09h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02299)
	ES:DI -> reply buffer (see #02300)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=07h,AX=F222h/SF=0Ah

Format of NetWare "TTS Get Transaction Bits" request packet:
Offset	Size	Description	(Table 02299)
 00h	BYTE	09h (subfunction "TTS Get Transaction Bits")
SeeAlso: #02300

Format of NetWare "TTS Get Transaction Bits" reply packet:
Offset	Size	Description	(Table 02300)
 00h	BYTE	TTS control flags
		bit 0: forced (automatic) record locking enabled
		bits 1-7: reserved
SeeAlso: #02299

Top
21F222SF0A - INT 21 - Novell NetWare - TTS SET CONTROL FLAGS
INT 21 - Novell NetWare - TTS SET CONTROL FLAGS
	AX = F222h subfn 0Ah
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02301)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=08h,AX=F222h/SF=09h

Format of NetWare "TTS Set Transaction Bits" request packet:
Offset	Size	Description	(Table 02301)
 00h	BYTE	0Ah (subfunction "TTS Set Transaction Bits")
 01h	BYTE	TTS control flags
		bit 0: forced (automatic) record locking enabled
		bits 1-7: reserved

Top
21F223SF01 - INT 21 - Novell NetWare v2+ - AFP CREATE DIRECTORY
INT 21 - Novell NetWare v2+ - AFP CREATE DIRECTORY
	AX = F223h subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02302)
	ES:DI -> reply buffer (see #02303)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=0Dh

Format of NetWare "AFP Create Directory" request packet:
Offset	Size	Description	(Table 02302)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	01h (subfunction "AFP Create Directory")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	reserved for future use
 09h 32 BYTEs	Finder information
 29h	BYTE	path length
 2Ah  N BYTEs	AFP-style directory pathname (relative to AFP entry ID)
SeeAlso: #02303,#02304,#02330

Format of NetWare "AFP Create Directory" reply packet:
Offset	Size	Description	(Table 02303)
 00h	DWORD	new directory ID
SeeAlso: #02302,#02331

Top
21F223SF02 - INT 21 - Novell NetWare v2+ - AFP CREATE FILE
INT 21 - Novell NetWare v2+ - AFP CREATE FILE
	AX = F223h subfn 02h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02304)
	ES:DI -> reply buffer (see #02305)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=03h,AX=F223h/SF=0Dh

Format of NetWare "AFP Create File" request packet:
Offset	Size	Description	(Table 02304)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	01h (subfunction "AFP Create Directory")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	flag: delete existing file? (00h no, 01h yes)
 09h 32 BYTEs	Finder information
 29h	BYTE	path length
 2Ah  N BYTEs	AFP-style directory pathname (relative to AFP entry ID)
SeeAlso: #02302,#02305,#02306,#02332

Format of NetWare "AFP Create File" reply packet:
Offset	Size	Description	(Table 02305)
 00h	DWORD	new file's AFP entry ID
SeeAlso: #02304,#02333

Top
21F223SF03 - INT 21 - Novell NetWare v2+ - AFP DELETE FILE
INT 21 - Novell NetWare v2+ - AFP DELETE FILE
	AX = F223h subfn 03h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02306)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Note:	directories may be deleted if they are empty
SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=0Dh

Format of NetWare "AFP Delete File" request packet:
Offset	Size	Description	(Table 02306)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	03h (subfunction "AFP Delete File")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	path length
 09h  N BYTEs	AFP-style pathname (relative to AFP entry ID)
SeeAlso: #02304

Top
21F223SF04 - INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM FILENAME
INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM FILENAME
	AX = F223h subfn 04h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02307)
	ES:DI -> reply buffer (see #02308)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=06h,AX=F223h/SF=0Ch,AX=F223h/SF=12h

Format of NetWare "AFP Get Entry ID from Name" request packet:
Offset	Size	Description	(Table 02307)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	04h (subfunction "AFP Get Entry ID from Name")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	path length
 09h  N BYTEs	AFP-style pathname (relative to AFP entry ID)
SeeAlso: #02308,#02314

Format of NetWare "AFP Get Entry ID from Name" reply packet:
Offset	Size	Description	(Table 02308)
 00h	DWORD	AFP entry ID corresponding to specified file/directory
SeeAlso: #02307,#02315

Top
21F223SF05 - INT 21 - Novell NetWare v2+ - AFP GET FILE INFORMATION
INT 21 - Novell NetWare v2+ - AFP GET FILE INFORMATION
	AX = F223h subfn 05h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02309)
	ES:DI -> reply buffer (see #02311)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=09h,AX=F223h/SF=13h

Format of NetWare "AFP Get File Information" request packet:
Offset	Size	Description	(Table 02309)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	05h (subfunction "AFP Get File Information")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	WORD	request bitmap
 0Ah	BYTE	path length
 0Bh  N BYTEs	AFP-style pathname (relative to AFP entry ID)
SeeAlso: #02311

Bitfields for NetWare AFP request bitmap:
Bit(s)	Description	(Table 02310)
 0	return AFP entry ID
 1	return data fork length
 2	return resource fork length
 3	return number of contained files/subdirectories
 4	return owner ID
 5	return short name
 6	return access rights
 7	??? (unused?)
 8	return attributes
 9	return parent directory ID
 10	return creation date
 11	return last-access date
 12	return last-modified date and time
 13	return last-backup date and time
 14	return Finder information
 15	return long name
SeeAlso: #02309,#02336,#02337

Format of NetWare "AFP Get File Information" reply packet:
Offset	Size	Description	(Table 02311)
 00h	DWORD	AFP entry ID for specified file
 04h	DWORD	AFP entry ID for specified file's parent directory
 08h	WORD	directory/file attributes (see #02312)
 0Ah	DWORD	length of data fork
 0Eh	DWORD	length of resource fork
 12h	WORD	total files and subdirectories contained within entry
		always 0000h if entry is a file
 14h	WORD	creation date in AFP format
 16h	WORD	last-access date in AFP format
 18h	WORD	last-modified date in AFP format
 1Ah	WORD	last-modified time in AFP format
 1Ch	WORD	last-backup date in AFP format
 1Eh	WORD	last-backup time in AFP format
 20h 32 BYTEs	Finder information
 40h 32 BYTEs	long filename
 60h	DWORD	NetWare object ID of owner
 64h 12 BYTEs	short filename (MS-DOS 8.3 format)
 70h	WORD	access privileges (see #02313)
SeeAlso: #02309,#02338

Bitfields for NetWare AFP file/directory attributes:
Bit(s)	Description	(Table 02312)
 0	search mode
 1	search mode
 2	search mode
 3	(undefined)
 4	transaction
 5	index
 6	read audit
 7	write audit
 8	read-only
 9	hidden
 10	system
 11	execute-only
 12	subdirectory
 13	archive
 14	(undefined)
 15	shareable file
SeeAlso: #02311,#02322,#02337

Bitfields for NetWare AFP access privileges:
Bit(s)	Description	(Table 02313)
 8	read (files)
 9	write (files)
 10	open (files)
 11	create (files)
 12	delete (files)
 13	parental (directories): create/delete/rename subdirectories
 14	search (directories)
 15	modify file status flags
SeeAlso: #02311,#02337,#02327

Top
21F223SF06 - INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM NETWARE HANDLE
INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM NETWARE HANDLE
	AX = F223h subfn 06h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02314)
	ES:DI -> reply buffer (see #02315)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=0Ch,AX=F223h/SF=12h

Format of NetWare "AFP Get Entry ID from NetWare Handle" request packet:
Offset	Size	Description	(Table 02314)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	06h (subfunction "AFP Get Entry ID from NetWare Handle")
 03h  6 BYTEs	NetWare file handle
SeeAlso: #02315,#02307

Format of NetWare "AFP Get Entry ID from NetWare Handle" reply packet:
Offset	Size	Description	(Table 02315)
 00h	BYTE	volume number
 01h	DWORD	AFP entry ID corresponding to same file as NetWare handle
 05h	BYTE	fork indicator (00h data fork, 01h resource fork)
SeeAlso: #02314,#02308

Top
21F223SF07 - INT 21 - Novell NetWare v2+ - AFP RENAME
INT 21 - Novell NetWare v2+ - AFP RENAME
	AX = F223h subfn 07h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02316)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=03h,AX=F223h/SF=08h

Format of NetWare "AFP Rename" request packet:
Offset	Size	Description	(Table 02316)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	07h (subfunction "AFP Rename")
 03h	BYTE	volume number
 04h	DWORD	source AFP entry ID
 08h	DWORD	destination AFP entry ID
 0Ch	BYTE	source path length
 0Dh  N BYTEs	AFP-style source path (relative to source AFP entry ID)
	BYTE	destination path length
      N BYTEs	AFP-style destination path (relative to destination entry ID)
Note:	the file may be moved from one directory to another without being
	  renamed by setting the destination path to the empty string

Top
21F223SF08 - INT 21 - Novell NetWare v2+ - AFP OPEN FILE FORK
INT 21 - Novell NetWare v2+ - AFP OPEN FILE FORK
	AX = F223h subfn 08h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02317)
	ES:DI -> reply buffer (see #02318)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=05h,AX=F223h/SF=09h

Format of NetWare "AFP Open File Fork" request packet:
Offset	Size	Description	(Table 02317)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	08h (subfunction "AFP Open File Fork")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	fork indicator (00h = data fork, 01h = resource fork)
 09h	BYTE	access mode
		bit 0: read
		bit 1: write
		bit 2: deny read access to others
		bit 3: deny write access to others
		bit 4: compatibility mode (should be set)
 0Ah	BYTE	path length
 0Bh  N BYTEs	AFP-style pathname (relative to AFP entry ID)
SeeAlso: #02318

Format of NetWare "AFP Open File Fork" reply packet:
Offset	Size	Description	(Table 02318)
 00h	DWORD	AFP entry ID for newly-opened file fork
 04h	DWORD	length of opened fork
 08h  6 BYTEs	NetWare file handle
SeeAlso: #02317

Top
21F223SF09 - INT 21 - Novell NetWare v2+ - AFP SET FILE INFORMATION
INT 21 - Novell NetWare v2+ - AFP SET FILE INFORMATION
	AX = F223h subfn 09h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02319)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=05h,AX=F223h/SF=0Ah,AX=F223h/SF=13h

Format of NetWare "AFP Set File Information" request packet:
Offset	Size	Description	(Table 02319)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	09h (subfunction "AFP Set File Information")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	WORD	request bitmap (see #02320)
 0Ah	WORD	directory/file attributes (see #02335)
 0Ch	WORD	creation date in AFP format
 0Eh	WORD	last-access date in AFP format
 10h	WORD	last-modified date in AFP format
 12h	WORD	last-modified time in AFP format
 14h	WORD	last-backup date in AFP format
 16h	WORD	last-backup time in AFP format
 18h 32 BYTEs	Finder information
 38h	BYTE	path length
 39h  N BYTEs	AFP-style pathname (relative to AFP entry ID)
SeeAlso: #02334

Bitfields for NetWare AFP request bitmap:
Bit(s)	Description	(Table 02320)
 8	set attributes
 10	set creation date
 11	set last-access date
 12	set last-modified date
 13	set last-backup date
 14	set Finder information
SeeAlso: #02319,#02334

Top
21F223SF0A - INT 21 - Novell NetWare v2+ - AFP SCAN FILE INFORMATION
INT 21 - Novell NetWare v2+ - AFP SCAN FILE INFORMATION
	AX = F223h subfn 0Ah
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02321)
	ES:DI -> reply buffer (see #02323)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=03h,AX=F223h/SF=08h

Format of NetWare "AFP Scan File Information" request packet:
Offset	Size	Description	(Table 02321)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	0Ah (subfunction "AFP Scan File Information")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	DWORD	AFP last-seen ID (from previous call)
		FFFFFFFFh on first call
 0Ch	WORD	number of entries to return (max. 4)
 0Eh	WORD	search bitmap (see #02322)
 10h	WORD	request bitmap (see #02310)
 12h	BYTE	path length
 13h  N BYTEs	AFS-style directory path (relative to AFP entry ID)
SeeAlso: #02323,#02336

Bitfields for NetWare AFP search bitmap:
Bit(s)	Description	(Table 02322)
 8	hidden files and directories
 9	system files and directories
 10	subdirectories
 11	files
SeeAlso: #02321,#02336,#02310,#02312

Format of NetWare "AFP Scan File Information" reply packet:
Offset	Size	Description	(Table 02323)
 00h	WORD	number of entries returned
 02h 120N BYTEs	file information records (see #02324)
SeeAlso: #02321

Format of NetWare AFP file information:
Offset	Size	Description	(Table 02324)
 00h	DWORD	AFP entry ID
 04h	DWORD	parent directory's AFP entry ID
 08h	WORD	directory/file attributes (see #02312)
 0Ah	DWORD	length of data fork
 0Eh	DWORD	length of resource fork
 12h	WORD	total files and subdirectories contained within entry
		always 0000h if entry is a file
 14h	WORD	creation date in AFP format
 16h	WORD	last-access date in AFP format
 18h	WORD	last-modified date in AFP format
 1Ah	WORD	last-modified time in AFP format
 1Ch	WORD	last-backup date in AFP format
 1Eh	WORD	last-backup time in AFP format
 20h 32 BYTEs	Finder information
 40h 32 BYTEs	long filename
 60h	DWORD	NetWare object ID of owner
 64h 12 BYTEs	short filename (MS-DOS 8.3 format)
 70h	WORD	access privileges (see #02313)
SeeAlso: #02323

Top
21F223SF0B - INT 21 - Novell NetWare v2+ - AFP ALLOCATE TEMPORARY DIRECTORY HANDLE
INT 21 - Novell NetWare v2+ - AFP ALLOCATE TEMPORARY DIRECTORY HANDLE
	AX = F223h subfn 0Bh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02325)
	ES:DI -> reply buffer (see #02326)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh

Format of NetWare "AFP Alloc Temporary Directory Handle" request packet:
Offset	Size	Description	(Table 02325)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	0Bh (subfunction "AFT Alloc Temporary Directory Handle")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	path length
 09h  N BYTEs	AFP-style pathname
SeeAlso: #02326

Format of NetWare "AFP Alloc Temporary Directory Handle" request packet:
Offset	Size	Description	(Table 02326)
 00h	BYTE	directory handle
 01h	BYTE	NetWare access rights (see #02327)
SeeAlso: #02325

Bitfields for NetWare AFP access rights:
Bit(s)	Description	(Table 02327)
 0	read
 1	write
 2	open
 3	create
 4	delete
 5	parental: create/delete/rename subdirectories
 6	search
 7	modify file status flags
SeeAlso: #02326,#02313

Top
21F223SF0C - INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM PATHNAME
INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM PATHNAME
	AX = F223h subfn 0Ch
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02328)
	ES:DI -> reply buffer (see #02329)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=06h,AX=F223h/SF=12h

Format of NetWare "AFP Get Entry ID from Path Name" request packet:
Offset	Size	Description	(Table 02328)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	0Ch (subfunction "AFP Get Entry ID from Path Name")
 03h	BYTE	NetWare directory handle
 04h	BYTE	path length
 05h  N BYTEs	pathname
SeeAlso: #02329

Format of NetWare "AFP Get Entry ID from Path Name" reply packet:
Offset	Size	Description	(Table 02329)
 00h	DWORD	AFP entry ID corresponding to specified file
SeeAlso: #02328

Top
21F223SF0D - INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE DIRECTORY
INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE DIRECTORY
	AX = F223h subfn 0Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02330)
	ES:DI -> reply buffer (see #02331)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=0Eh

Format of NetWare "AFP 2.0 Create Directory" request buffer:
Offset	Size	Description	(Table 02330)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	0Dh (subfunction "AFP 2.0 Create Directory")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	reserved for future use
 09h 32	BYTEs	Finder information
 29h  6 BYTEs	ProDOS information
 2Fh	BYTE	path length
 30h	var	AFS-style directory path (relative to AFP entry)
SeeAlso: #02331,#02302

Format of NetWare "AFP 2.0 Create Directory" reply buffer:
Offset	Size	Description	(Table 02331)
 00h	DWORD	new directory ID
SeeAlso: #02330,#02303

Top
21F223SF0E - INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE FILE
INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE FILE
	AX = F223h subfn 0Eh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02332)
	ES:DI -> reply buffer (see #02333)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh

Format of NetWare "AFP 2.0 Create File" request packet:
Offset	Size	Description	(Table 02332)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	0Eh (function "AFP 2.0 Create File")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	BYTE	flag: delete existing file? (00h no, 01h yes)
 09h 32 BYTEs	Finder information
 29h  6 BYTEs	ProDOS information
 2Fh	BYTE	path length
 30h	var	AFP-style pathname (relative to AFP entry ID)
SeeAlso: #02333,#02304

Format of NetWare "AFP 2.0 Create File" reply packet:
Offset	Size	Description	(Table 02333)
 00h	DWORD	new file ID
SeeAlso: #02332,#02305

Top
21F223SF10 - INT 21 - Novell NetWare v2+ - AFP 2.0 SET FILE INFORMATION
INT 21 - Novell NetWare v2+ - AFP 2.0 SET FILE INFORMATION
	AX = F223h subfn 10h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02334)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=09h,AX=F223h/SF=11h

Format of NetWare "AFP 2.0 Set File Information" request packet:
Offset	Size	Description	(Table 02334)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	10h (subfunction "AFS 2.0 Set File Information")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	WORD	request bitmap (see #02320)
 0Ah	WORD	directory/file attributes (see #02335)
 0Ch	WORD	creation date in AFP format
 0Eh	WORD	last-access date in AFP format
 10h	WORD	last-modified date in AFP format
 12h	WORD	last-modified time in AFP format
 14h	WORD	last-backup date in AFP format
 16h	WORD	last-backup time in AFP format
 18h 32 BYTEs	Finder information
 38h  6 BYTEs	ProDOS information
 3Eh	BYTE	path length
 3Fh  N BYTEs	AFP-style pathname (relative to AFP entry ID)
SeeAlso: #02319

Bitfields for NetWare AFP directory/file attributes:
Bit(s)	Description	(Table 02335)
 0	read-only
 1	hidden
 2	system
 3	execute-only
 4	subdirectory
 5	archive
 7	shareable file
SeeAlso: #02334

Top
21F223SF11 - INT 21 - Novell NetWare v2+ - AFP 2.0 SCAN FILE INFORMATION
INT 21 - Novell NetWare v2+ - AFP 2.0 SCAN FILE INFORMATION
	AX = F223h subfn 11h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02336)
	ES:DI -> reply buffer (see #02337)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh,AX=F223h/SF=10h

Format of NetWare "AFP 2.0 Scan File Information" request packet:
Offset	Size	Description	(Table 02336)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	11h (subfunction "AFP 2.0 Scan File Information")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
 08h	DWORD	AFP last-seen ID (from previous call)
		FFFFFFFFh on first call
 0Ch	WORD	number of entries to return (max. 4)
 0Eh	WORD	search bitmap (see #02322)
 10h	WORD	request bitmap (see #02310)
 12h	BYTE	path length
 13h  N BYTEs	AFS-style directory path (relative to AFP entry ID)
SeeAlso: #02337

Format of NetWare "AFP 2.0 Scan File Information" reply packet:
Offset	Size	Description	(Table 02337)
 00h	WORD	number of entries returned
 02h 120N BYTEs	file information records (see #02338)
SeeAlso: #02336

Format of NetWare AFP 2.0 file information:
Offset	Size	Description	(Table 02338)
 00h	DWORD	AFP entry ID
 04h	DWORD	parent directory's AFP entry ID
 08h	WORD	directory/file attributes (see #02312)
 0Ah	DWORD	length of data fork
 0Eh	DWORD	length of resource fork
 12h	WORD	total files and subdirectories contained within entry
		always 0000h if entry is a file
 14h	WORD	creation date in AFP format
 16h	WORD	last-access date in AFP format
 18h	WORD	last-modified date in AFP format
 1Ah	WORD	last-modified time in AFP format
 1Ch	WORD	last-backup date in AFP format
 1Eh	WORD	last-backup time in AFP format
 20h 32 BYTEs	Finder information
 40h 32 BYTEs	long filename
 60h	DWORD	NetWare object ID of owner
 64h 12 BYTEs	short filename (MS-DOS 8.3 format)
 70h	WORD	access privileges (see #02313)
 72h  6 BYTEs	ProDOS information
SeeAlso: #02337,#02310,#02311

Top
21F223SF12 - INT 21 - Novell NetWare v2+ - AFP GET DOS FILENAME FROM ENTRY ID
INT 21 - Novell NetWare v2+ - AFP GET DOS FILENAME FROM ENTRY ID
	AX = F223h subfn 12h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02339)
	ES:DI -> reply buffer (see #02340)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=06h

Format of NetWare "AFP Get DOS Name from Entry ID" request packet:
Offset	Size	Description	(Table 02339)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	12h (subfunction "AFP Get DOS Name From Entry ID")
 03h	BYTE	volume number
 04h	DWORD	AFP entry ID
SeeAlso: #02340

Format of NetWare "AFP Get DOS Name from Entry ID" reply packet:
Offset	Size	Description	(Table 02340)
 00h	BYTE	length of DOS pathname
 01h  N BYTEs	pathname corresponding to AFP entry ID
SeeAlso: #02339

Top
21F223SF13 - INT 21 - Novell NetWare v2+ - AFP GET MACINTOSH INFORMATION ON DELETED FILE
INT 21 - Novell NetWare v2+ - AFP GET MACINTOSH INFORMATION ON DELETED FILE
	AX = F223h subfn 13h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02341)
	ES:DI -> reply buffer (see #02342)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=05h,AX=F223h/SF=09h

Format of NetWare "AFP Get Macintosh Info on Deleted File" request packet:
Offset	Size	Description	(Table 02341)
 00h	WORD	(big-endian) length of following data
 02h	BYTE	13h (subfunction "AFP Get Macintosh Info on Deleted File")
 03h	BYTE	volume number
 04h	DWORD	server's DOS directory entry index
SeeAlso: #02342

Format of NetWare "AFP Get Macintosh Info on Deleted File" reply packet:
Offset	Size	Description	(Table 02342)
 00h 32 BYTEs	Finder information
 20h  6 BYTEs	ProDOS information
 26h	DWORD	size of resource fork
 2Ah	BYTE	length of filename
 2Bh  N BYTEs	filename
SeeAlso: #02341

Top
21F23D - INT 21 - Novell NetWare - COMMIT FILE
INT 21 - Novell NetWare - COMMIT FILE
	AX = F23Dh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02347)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Eh,AH=F2h"Novell",AX=F23Eh,AX=F243h

Top
21F23E - INT 21 - Novell NetWare - FILE SEARCH INITIALIZE (FindFirst)
INT 21 - Novell NetWare - FILE SEARCH INITIALIZE (FindFirst)
	AX = F23Eh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02343)
	ES:DI -> reply buffer (see #02344)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F23Fh,AX=F242h

Format of NetWare "File Search Initialize" request packet:
Offset	Size	Description	(Table 02343)
 00h	BYTE	directory handle
 01h	BYTE	length of directory path
 02h  N BYTEs	path of directory to search, in VOLUME:DIRECTORY/... format
SeeAlso: #02344,#02345

Format of NetWare "File Search Initialize" reply packet:
Offset	Size	Description	(Table 02344)
 00h	BYTE	volume number
 01h	WORD	directory ID
 03h	WORD	search sequence number
 05h	BYTE	directory access rights
SeeAlso: #02343,#02346

Top
21F23F - INT 21 - Novell NetWare - FILE SEARCH CONTINUE (FindNext)
INT 21 - Novell NetWare - FILE SEARCH CONTINUE (FindNext)
	AX = F23Fh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02345)
	ES:DI -> reply buffer (see #02346)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F23Eh,AX=F242h

Format of NetWare "File Search Continue" request packet:
Offset	Size	Description	(Table 02345)
 00h	BYTE	volume number
 02h	WORD	directory ID from File Search Initialize
 04h	WORD	search sequence (set to FFFFh before first call)
 06h	BYTE	search attributes
 07h	BYTE	length of search directory path
 08h  N BYTEs	name of search directory in VOLUME:DIRECTORY/.../DIR format
SeeAlso: #02346

Format of NetWare "File Search Continue" reply packet:
Offset	Size	Description	(Table 02346)
 00h	WORD	next search sequence
 02h	WORD	directory ID from File Search Initialize
 04h	WORD	reserved for future use
 06h 14 BYTEs	filename
 14h	BYTE	file attributes
 15h	BYTE	file mode
 16h	DWORD	file length
 2Ah	WORD	creation date
 2Ch	WORD	last-access date
 2Eh	WORD	last-modification date
 30h	WORD	last-modification time
SeeAlso: #02345

Top
21F242 - INT 21 - Novell NetWare - CLOSE FILE
INT 21 - Novell NetWare - CLOSE FILE
	AX = F242h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02347)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Eh,AH=F2h"Novell",AX=F23Eh,AX=F243h,AX=F24Ah

Format of NetWare "Commit/Close File" request packet:
Offset	Size	Description	(Table 02347)
 00h	BYTE	reserved (0)
 01h  6 BYTEs	NetWare file handle

Top
21F243 - INT 21 - Novell NetWare - CREATE FILE
INT 21 - Novell NetWare - CREATE FILE
	AX = F243h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02348)
	ES:DI -> reply buffer (see #02349)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Ch,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F24Ah,AX=F24Dh

Format of NetWare "Create File" request packet:
Offset	Size	Description	(Table 02348)
 00h	BYTE	directory handle
 01h	BYTE	file attributes
 02h	BYTE	length of filename
 03h  N BYTEs	filename in DOS format
SeeAlso: #02349

Format of NetWare "Create File" reply packet:
Offset	Size	Description	(Table 02349)
 00h  6 BYTEs	NetWare file handle
 06h	WORD	reserved
 08h 14 BYTEs	DOS-format filename
 16h	BYTE	file attributes
 17h	BYTE	file execute type
 18h	DWORD	file length
 1Ch	WORD	creation date
 1Eh	WORD	last-access date
 20h	WORD	last-modification date
 22h	WORD	last-modification time
SeeAlso: #02348

Top
21F244 - INT 21 - Novell NetWare - FILE SERVICES - ERASE FILE
INT 21 - Novell NetWare - FILE SERVICES - ERASE FILE
	AX = F244h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02351)
	ES:DI ignored
Return: AL = status (see #02350)
Note:	this function only marks the file for deletion; use AH=E2h/SF=CEh to
	  actually delete all marked files
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=0Bh,AH=E3h/SF=CEh

(Table 02350)
Values for NetWare function status:
 00h	successful
 98h	nonexistent volume
 9Bh	invaid directory handle
 9Ch	invalid path
 FFh	no files found
SeeAlso: #02094,#02860 at INT 2F/AX=7A20h/BX=0000h

Format of NetWare "Erase Files" request packet:
Offset	Size	Description	(Table 02351)
 00h	BYTE	directory handle
 01h	BYTE	search attributes (see #01420 at AX=4301h)
 02h	BYTE	length of filespec
 03h  N BYTEs	ASCIZ filespec (may include wildcards)

Top
21F247 - INT 21 - Novell NetWare - GET CURRENT FILE SIZE
INT 21 - Novell NetWare - GET CURRENT FILE SIZE
	AX = F247h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02352)
	ES:DI -> reply buffer (see #02353)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=42h,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F24Ah,AX=F24Dh

Format of NetWare "Get Current Size of File" request packet:
Offset	Size	Description	(Table 02352)
 00h	BYTE	reserved for future use
 01h  6 BYTEs	NetWare file handle
SeeAlso: #02353

Format of NetWare "Get Current Size of File" reply packet:
Offset	Size	Description	(Table 02353)
 00h	DWORD	current size of file
SeeAlso: #02352

Top
21F24A - INT 21 - Novell NetWare - COPY FROM ONE FILE TO ANOTHER
INT 21 - Novell NetWare - COPY FROM ONE FILE TO ANOTHER
	AX = F24Ah
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02354)
	ES:DI -> reply buffer (see #02355)
Return: AX = status (see #02350)
Note:	this function only marks the file for deletion; use AH=E2h/SF=CEh to
	  actually delete all marked files
SeeAlso: AH=F2h"Novell",AX=F243h,AX=F247h,AH=F3h"NetWare"

Format of NetWare "Copy from One File to Another" request packet:
Offset	Size	Description	(Table 02354)
 00h	BYTE	reserved for future use
 01h  6 BYTEs	source NetWare file handle
 07h  6 BYTEs	destination NetWare file handle
 0Dh	DWORD	source file offset
 11h	DWORD	destination file offset
 15h	DWORD	number of bytes to copy
SeeAlso: #02355

Format of NetWare "Copy from One File to Another" reply packet:
Offset	Size	Description	(Table 02355)
 00h	DWORD	number of bytes actually copied
SeeAlso: #02354

Top
21F24D - INT 21 - Novell NetWare - CREATE NEW FILE
INT 21 - Novell NetWare - CREATE NEW FILE
	AX = F24Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02356)
	ES:DI -> reply buffer (see #02357)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=6C00h,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F243h

Format of NetWare "Create New File" request packet:
Offset	Size	Description	(Table 02356)
 00h	BYTE	directory handle
 01h	BYTE	file attributes
 02h	BYTE	length of filename
 03h  N BYTEs	filename in DOS format
SeeAlso: #02357

Format of NetWare "Create New File" reply packet:
Offset	Size	Description	(Table 02357)
 00h  6 BYTEs	NetWare file handle
 06h	WORD	reserved
 08h 14 BYTEs	DOS-format filename
 16h	BYTE	file attributes
 17h	BYTE	file execute type
 18h	DWORD	file length
 1Ch	WORD	creation date
 1Eh	WORD	last-access date
 20h	WORD	last-modification date
 22h	WORD	last-modification time
SeeAlso: #02356

Top
21F24E - INT 21 - Novell NetWare v2+ - ALLOW TASK ACCESS TO FILE
INT 21 - Novell NetWare v2+ - ALLOW TASK ACCESS TO FILE
	AX = F24Eh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02358)
	ES:DI -> reply buffer (see #02359)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
Desc:	allow calling task to gain access to an already-open file belonging
	  to another task of the same client
Note:	the caller receives the same access rights as the owning task, and
	  must use the returned new handle to access the file
SeeAlso: AH=F2h"NetWare",AX=F244h

Format of NetWare "Allow Task Access to File" request packet:
Offset	Size	Description	(Table 02358)
 00h	BYTE	reserved for future use
 01h  6 BYTEs	NetWare file handle
SeeAlso: #02359

Format of NetWare "Allow Task Access to File" reply packet:
Offset	Size	Description	(Table 02359)
 00h  6 BYTEs	new file handle
SeeAlso: #02358

Top
21F256SF01 - INT 21 - Novell NetWare - CLOSE EXTENDED ATTRIBUTE HANDLE
INT 21 - Novell NetWare - CLOSE EXTENDED ATTRIBUTE HANDLE
	AX = F256h subfn 01h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02360)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=02h,AX=F256h/SF=04h,AX=F256h/SF=05h

Format of NetWare "Close Extended Attribute Handle" request packet:
Offset	Size	Description	(Table 02360)
 00h	BYTE	01h (subfunction "Close Extended Attribute Handle")
 01h	WORD	reserved for future use
 03h	DWORD	extended attribute handle

Top
21F256SF02 - INT 21 - Novell NetWare - WRITE EXTENDED ATTRIBUTE
INT 21 - Novell NetWare - WRITE EXTENDED ATTRIBUTE
	AX = F256h subfn 02h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02361)
	ES:DI -> reply buffer (see #02362)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=03h,AX=F256h/SF=05h

Format of NetWare "Write Extended Attribute" request packet:
Offset	Size	Description	(Table 02361)
 00h	BYTE	02h (subfunction "Write Extended Attribute")
 01h	WORD	flags (see #02372)
 03h  8 BYTEs	extended attribute handle structure (see #02373)
 0Bh	DWORD	write size
 0Fh	DWORD	write position
 13h	DWORD	access flag
 17h	WORD	length of value
 19h	WORD	key length
 1Bh  N BYTEs	key
      N BYTEs	value
SeeAlso: #02361,#02363

Format of NetWare "Write Extended Attribute" reply packet:
Offset	Size	Description	(Table 02362)
 00h	DWORD	error code
 04h	DWORD	number of bytes written
 08h	DWORD	new extended attribute handle
SeeAlso: #02361

Top
21F256SF03 - INT 21 - Novell NetWare - READ EXTENDED ATTRIBUTE
INT 21 - Novell NetWare - READ EXTENDED ATTRIBUTE
	AX = F256h subfn 03h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02363)
	ES:DI -> reply buffer (see #02364)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=04h,AX=F256h/SF=05h

Format of NetWare "Read Extended Attribute" request packet:
Offset	Size	Description	(Table 02363)
 00h	BYTE	03h (subfunction "Read Extended Attribute")
 01h	WORD	flags (see #02372)
 03h  8 BYTEs	extended attribute handle structure (see #02373)
 0Bh	DWORD	read position
 0Fh	DWORD	inspect size
 13h	WORD	key length
 15h  N BYTEs	key
SeeAlso: #02364,#02361

Format of NetWare "Read Extended Attribute" reply packet:
Offset	Size	Description	(Table 02364)
 00h	DWORD	error code
 04h	DWORD	total extended attribute value length
 08h	DWORD	new extended attribute handle
 0Ch	DWORD	access flag
 10h	WORD	value length
 12h  N BYTEs	EA value
SeeAlso: #02363

Top
21F256SF04 - INT 21 - Novell NetWare - ENUMERATE EXTENDED ATTRIBUTES
INT 21 - Novell NetWare - ENUMERATE EXTENDED ATTRIBUTES
	AX = F256h subfn 04h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02365)
	ES:DI -> reply buffer (see #02366)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=02h,AX=F256h/SF=05h

Format of NetWare "Enumerate Extended Attributes" request packet:
Offset	Size	Description	(Table 02365)
 00h	BYTE	04h (subfunction "Enumerate Extended Attributes")
 01h	WORD	flags (see #02372)
 03h  8 BYTEs	extended attribute handle structure (see #02373)
 0Bh	DWORD	inspect size
 0Fh	WORD	enumeration sequence
 11h	WORD	key length
 13h  N BYTEs	key
SeeAlso: #02366

Format of NetWare "Enumerate Extended Attributes" reply packet:
Offset	Size	Description	(Table 02366)
 00h	DWORD	error code
 04h	DWORD	total extended attributes
 08h	DWORD	total extended attribute data size
 0Ch	DWORD	total extended attribute key size
 10h	DWORD	new extended attribute handle
---information level 0---
 14h  2 WORDs	reserved
---information level 1---
 14h	WORD	number of enumerated extended attribute structures
 16h	var	EA structure level 1
---information level 6---
 14h	WORD	reserved
 16h	var	EA structure level 6
---information level 7---
 14h	WORD	number of enumerated extended attribute structures
 16h	var	EA structure level 7
SeeAlso: #02365

Format of NetWare Extended Attribute structure level 1:
Offset	Size	Description	(Table 02367)
 00h	DWORD	length of EA value
 04h	WORD	length of EA key
 06h	DWORD	access flag
 0Ah  N BYTEs	key
SeeAlso: #02366,#02368,#02369

Format of NetWare Extended Attribute structure level 6:
Offset	Size	Description	(Table 02368)
 00h	DWORD	length of EA value
 04h	WORD	length of EA key
 06h	DWORD	access flag
 0Ah	DWORD	key extents
 0Eh	DWORD	value extents
 12h  N BYTEs	key
SeeAlso: #02366,#02367,#02369

Format of NetWare Extended Attribute structure level 7:
Offset	Size	Description	(Table 02369)
 00h	BYTE	key length
 01h  N BYTEs	key
	BYTE	00h
SeeAlso: #02366,#02367,#02368

Top
21F256SF05 - INT 21 - Novell NetWare - DUPLICATE EXTENDED ATTRIBUTES
INT 21 - Novell NetWare - DUPLICATE EXTENDED ATTRIBUTES
	AX = F256h subfn 05h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02370)
	ES:DI -> reply buffer (see #02371)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=02h,AX=F256h/SF=04h

Format of NetWare "Duplicate Extended Attributes" request packet:
Offset	Size	Description	(Table 02370)
 00h	BYTE	05h (subfunction "Duplicate Extended Attributes")
 01h	WORD	source flags (see #02372)
 03h	WORD	destination flags (see #02372)
 05h  8 BYTEs	source extended attribute structure (see #02373)
 0Dh  8 BYTEs	destination extended attribute structure (see #02373)
SeeAlso: #02371

Format of NetWare "Duplicate Extended Attributes" reply packet:
Offset	Size	Description	(Table 02371)
 00h	DWORD	number duplicated
 04h	DWORD	data size duplicated
 08h	DWORD	key size duplicated
SeeAlso: #02370

Bitfields for NetWare extended attribute flags:
Bit(s)	Description	(Table 02372)
 1-0	extended attribute handle structure type
	00 volume number and directory entry number
	01 NetWare file handle
	10 extended attribute handle
	11 not used
 2	close handle on error
 6-4	information level (0,1,6,7)
 7	not used
SeeAlso: #02370,#02373

Format of NetWare extended attribute structure:
Offset	Size	Description	(Table 02373)
---type 0---
 00h	DWORD	volume number
 04h	DWORD	directory entry number
---type 1---
 00h	DWORD	NetWare file handle
 04h  4 BYTEs	unused
---type 2---
 00h	DWORD	extended attribute handle
 04h  4 BYTEs	unused
SeeAlso: #02372

Top
21F257SF01 - INT 21 - Novell NetWare - OPEN/CREATE FILE OR SUBDIRECTORY
INT 21 - Novell NetWare - OPEN/CREATE FILE OR SUBDIRECTORY
	AX = F257h subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02374)
	ES:DI -> reply buffer (see #02375)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=6C00h,AX=F257h/SF=02h,AX=F257h/SF=04h

Format of NetWare "Open/Create File or Subdirectory" request packet:
Offset	Size	Description	(Table 02374)
 00h	BYTE	01h (subfunction "Open/Create File or Subdirectory")
 01h	BYTE	name space (see #02387)
 02h	BYTE	open/create mode
 03h	WORD	search attributes
 05h	DWORD	return information mask
 09h	DWORD	create attributes
 0Dh	WORD	desired access rights (see #02377)
 0Fh		NetWare handle/path structure
SeeAlso: #02375

Format of NetWare "Open/Create File or Subdirectory" reply packet:
Offset	Size	Description	(Table 02375)
 00h	DWORD	file handle
 04h	BYTE	open/create action
		00h open
		01h replace
		03h create
 05h	BYTE	reserved
SeeAlso: #02374

Format of NetWare Handle/Path structure:
Offset	Size	Description	(Table 02376)
 00h	BYTE	volume number
 01h	DWORD	directory base or short handle
 05h	BYTE	handle flag
		00h short directory handle
		01h directory base
		FFh no handle
 06h	BYTE	path component count
 07h  N BYTEs	path component

Bitfields for NetWare desired access rights:
Bit(s)	Description	(Table 02377)
 0	read-only mode
 1	write-only
 2	deny read
 3	deny write
 4	compatibility mode
 6	write-through mode
SeeAlso: #02374

Top
21F257SF02 - INT 21 - Novell NetWare - INITIALIZE SEARCH
INT 21 - Novell NetWare - INITIALIZE SEARCH
	AX = F257h subfn 02h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02378)
	ES:DI -> reply buffer (see #02379)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F257h/SF=01h,AX=F257h/SF=03h

Format of NetWare "Initialize Search" request packet:
Offset	Size	Description	(Table 02378)
 00h	BYTE	02h (subfunction "Initialize Search")
 01h	BYTE	name space (see #02387)
 02h	BYTE	reserved for future use
 03h		NetWare Handle/Path structure (see #02376)
SeeAlso: #02379

Format of NetWare "Initialize Search" reply packet:
Offset	Size	Description	(Table 02379)
 00h  9 BYTEs	search sequence
		BYTE	volume number
		DWORD	directory number
		DWORD	current directory number
SeeAlso: #02378

Top
21F257SF03 - INT 21 - Novell NetWare - SCAN NAMESPACE ENTRY INFO
INT 21 - Novell NetWare - SCAN NAMESPACE ENTRY INFO
	AX = F257h subfn 03h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02380)
	ES:DI -> reply buffer (see #02381)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=05h

Format of NetWare "Search for File or Subdirectory" request packet:
Offset	Size	Description	(Table 02380)
 00h	BYTE	03h (subfunction "Search for File or Subdirectory")
	???
SeeAlso: #02381

Format of NetWare "Search for File or Subdirectory" reply packet:
Offset	Size	Description	(Table 02381)
 00h	???
SeeAlso: #02380

Top
21F257SF04 - INT 21 - Novell NetWare - RENAME OR MOVE FILE OR SUBDIRECTORY
INT 21 - Novell NetWare - RENAME OR MOVE FILE OR SUBDIRECTORY
	AX = F257h subfn 04h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02382)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=56h,AH=F2h"Novell",AX=F257h/SF=02h,AX=F257h/SF=03h,AX=F257h/SF=05h

Format of NetWare "Rename or Move File or Subdirectory" request packet:
Offset	Size	Description	(Table 02382)
 00h	BYTE	04h (subfunction "Rename or Move File or Subdirectory")
 01h	BYTE	name space (see #02387)
 02h	BYTE	rename flags
		bit 0: rename successful
		bit 1: compatibility mode
 03h	WORD	search attributes
 05h		source NetWare Handle Path
		destination NetWare Handle Path

Top
21F257SF05 - INT 21 - Novell NetWare - SCAN FILE OR SUBDIRECTORY FOR TRUSTEES
INT 21 - Novell NetWare - SCAN FILE OR SUBDIRECTORY FOR TRUSTEES
	AX = F257h subfn 05h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02383)
	ES:DI -> reply buffer (see #02384)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=06h

Format of NetWare "Scan File or Subdirectory for Trustees" request packet:
Offset	Size	Description	(Table 02383)
 00h	BYTE	05h (subfunction "Scan File or Subdirectory for Trustees")
 01h	BYTE	name space (see #02387)
 02h	BYTE	reserved for future use
 03h	DWORD	scan sequence (set to 00000000h before first call)
 07h		NetWare Handle/Path structure (see #02376)
SeeAlso: #02384

Format of NetWare "Scan File or Subdirectory for Trustees" reply packet:
Offset	Size	Description	(Table 02384)
 00h	DWORD	next scan sequence or FFFFFFFFh if no more
 04h	WORD	number of trustee object IDs returned
 06h		trustee structure
SeeAlso: #02383

Top
21F257SF06 - INT 21 - Novell NetWare v3+ - GET INFORMATION ABOUT FILE OR DIRECTORY
INT 21 - Novell NetWare v3+ - GET INFORMATION ABOUT FILE OR DIRECTORY
	AX = F257h subfn 06h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02385)
	ES:DI -> reply buffer (see #02388)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F257h/SF=02h,AX=F257h/SF=05h,AX=F257h/SF=07h

Format of NetWare "Get NS Entry Info" request buffer:
Offset	Size	Description	(Table 02385)
 00h	BYTE	06h (subfunction "Get NS Entry Info")
 01h	BYTE	name space (see #02387)
 02h	BYTE	destination name space
 03h	WORD	search attributes
 05h	DWORD	return information mask (see #02386)
 09h	BYTE	volume number
 0Ah	DWORD	directory base
 0Eh	BYTE	handle flag
		00h first byte of dir base is dir handle; ignore volume number
		01h dir base = unique ID, volume number set
		FFh volume number and dir base ignored, volume part of path
 0Fh	BYTE	number of path components
 10h  N BYTEs	list of path components (each a counted string)
SeeAlso: #02388

Bitfields for return information mask:
Bit(s)	Description	(Table 02386)
 0	include filename
 1	data stream space allocated info
 2	attributes info
 3	data stream size info
 4	total space allocated for all data streams
 5	extended attributes info
 6	archive info
 7	modify info
 8	create info
 9	name space info
 10	directory info
 11	rights info

(Table 02387)
Values for NetWare name space:
 00h	DOS
 01h	Macintosh
 02h	NFS
 03h	FTAM
 04h	OS/2
SeeAlso: #02385,#02393

Format of NetWare "Get NS Entry Info" reply buffer:
Offset	Size	Description	(Table 02388)
 00h 72 BYTEs	reserved
 48h	DWORD	creator's name space number
 4Ch 257 BYTEs	reserved
SeeAlso: #02385

Top
21F257SF07 - INT 21 - Novell NetWare - MODIFY FILE OR SUBDIRECTORY DOS INFORMATION
INT 21 - Novell NetWare - MODIFY FILE OR SUBDIRECTORY DOS INFORMATION
	AX = F257h subfn 07h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02389)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=08h

Format of NetWare "Modify File or Subdirectory DOS Information" request packet:
Offset	Size	Description	(Table 02389)
 00h	BYTE	07h (subfunction "Modify File or Subdirectory DOS Information")
 01h	BYTE	name space (see #02387)
 02h	BYTE	reserved for future use
 03h	WORD	search attributes
 05h	DWORD	modify DOS mask
 09h		Modify DOS information structure

Top
21F257SF08 - INT 21 - Novell NetWare - DELETE FILE/DIRECTORY
INT 21 - Novell NetWare - DELETE FILE/DIRECTORY
	AX = F257h subfn 08h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02390)
	ES:DI -> reply buffer (see #02391)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=01h,AX=F257h/SF=07h

Format of NetWare "Delete File/Directory" request packet:
Offset	Size	Description	(Table 02390)
 00h	BYTE	08h (subfunction "Delete File/Directory")
	???
SeeAlso: #02391

Format of NetWare "Delete File/Directory" reply packet:
Offset	Size	Description	(Table 02391)
 00h	???
SeeAlso: #02390

Top
21F257SF09 - INT 21 - Novell NetWare - SET SHORT DIRECTORY HANDLE
INT 21 - Novell NetWare - SET SHORT DIRECTORY HANDLE
	AX = F257h subfn 09h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02392)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=0Ch

Format of NetWare "Set Short Directory Handle" request packet:
Offset	Size	Description	(Table 02392)
 00h	BYTE	09h (subfunction "Set Short Directory Handle")
 01h	BYTE	name space (see #02387)
 02h	BYTE	data stream
 03h	BYTE	destination directory handle
 04h	BYTE	reserved for future use
 05h		NetWare Handle/Path structure (see #02376)

Top
21F257SF0A - INT 21 - Novell NetWare v3+ - ADD TRUSTEE SET TO FILE OR SUBDIRECTORY
INT 21 - Novell NetWare v3+ - ADD TRUSTEE SET TO FILE OR SUBDIRECTORY
	AX = F257h subfn 0Ah
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02393)
	ES:DI ignored
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F257h/SF=0Bh

Format of NetWare "Add Trustee Set" request packet:
Offset	Size	Description	(Table 02393)
 00h	BYTE	0Ah (subfunction "Add Trustee Set to File or Subdirectory")
 01h	BYTE	name space (see #02387)
 02h  2 BYTEs	reserved
 04h	WORD	trustee rights (see #02141)
 06h	WORD	object ID count
 08h		NetWare Handle/Path structure (see #02376)
      6 BYTEs	trustee structure (see #02394)

Format of NetWare trustee structure:
Offset	Size	Description	(Table 02394)
 00h	DWORD	object ID
 04h	WORD	trustee rights
SeeAlso: #02393

Top
21F257SF0B - INT 21 - Novell NetWare - DELETE TRUSTEE
INT 21 - Novell NetWare - DELETE TRUSTEE
	AX = F257h subfn 0Bh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02395)
	ES:DI -> reply buffer (see #02396)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=0Ah

Format of NetWare "Delete Trustee" request packet:
Offset	Size	Description	(Table 02395)
 00h	BYTE	0Bh (subfunction "Delete Trustee")
	???
SeeAlso: #02396

Format of NetWare "Delete Trustee" reply packet:
Offset	Size	Description	(Table 02396)
 00h	???
SeeAlso: #02395

Top
21F257SF0C - INT 21 - Novell NetWare v2+ - ALLOCATE SHORT DIRECTORY HANDLE
INT 21 - Novell NetWare v2+ - ALLOCATE SHORT DIRECTORY HANDLE
	AX = F257h subfn 0Ch
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02397)
	ES:DI -> reply buffer (see #02398)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Note:	unlike "Alloc Permanent Directory Handle", this function does not
	  automatically map a drive
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=05h,AX=F223h/SF=09h

Format of NetWare "Allocate Short Directory Handle" request packet:
Offset	Size	Description	(Table 02397)
 00h	BYTE	0Ch (subfunction "Allocate Short Directory Handle")
 01h	BYTE	name space (see #02387)
 02h  2 BYTEs	reserved for future use
 04h	WORD	allocation mode
		bits 1-0: 00 permanent handle
			  01 temporary handle
			  10 special temporary handle
			  11 reserved
 06h		NetWare Handle/Path structure (see #02376)
SeeAlso: #02398

Format of NetWare "Allocate Short Directory Handle" reply packet:
Offset	Size	Description	(Table 02398)
 00h	BYTE	new directory handle
 01h	BYTE	volume number
 02h	DWORD	reserved for future use
SeeAlso: #02397

Top
21F257SF10 - INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES
INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES
	AX = F257h subfn 10h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02399)
	ES:DI -> reply buffer (see #02400)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F257h/SF=11h,AX=F257h/SF=12h

Format of NetWare "Scan Salvageable Files" request packet:
Offset	Size	Description	(Table 02399)
 00h	BYTE	10h (subfunction "Scan Salvageable Files")
 01h	BYTE	name space
 02h	BYTE	data stream
 03h	DWORD	return information mask
 07h	DWORD	last sequence (set to FFFFFFFFh before first call)
 0Bh		NetWare Handle/Path structure (see #02376)
SeeAlso: #02400,#02123

Format of NetWare "Scan Salvageable Files" reply packet:
Offset	Size	Description	(Table 02400)
 00h	DWORD	next sequence number
 04h	WORD	deletion time
 06h	WORD	deletion date
 08h	DWORD	ID of deletor
 0Ch	DWORD	volume number
 10h	DWORD	directory entry number
 14h		NetWare Information Structure
SeeAlso: #02399,#02124

Top
21F257SF11 - INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE
INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE
	AX = F257h subfn 11h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02401)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Ch,AX=F257h/SF=10h,AX=F257h/SF=12h

Format of NetWare "Recover Salvageable File" request packet:
Offset	Size	Description	(Table 02401)
 00h	BYTE	11h (subfunction "Recover Salvageable File")
 01h	BYTE	name space
 02h	BYTE	reserved for future use
 03h	DWORD	sequence number
 07h	DWORD	volume number
 0Bh	DWORD	scan directory base
 0Fh	BYTE	new file name length
 10h  N BYTEs	new file name
SeeAlso: #02402,#02125

Top
21F257SF12 - INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE
INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE
	AX = F257h subfn 12h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02402)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Dh,AX=F257h/SF=10h,AX=F257h/SF=11h

Format of NetWare "Purge Salvageable File" request packet:
Offset	Size	Description	(Table 02402)
 00h	BYTE	12h (subfunction "Purge Salvageable File")
 01h	BYTE	name space
 02h	BYTE	reserved
 03h	DWORD	sequence number
 07h	DWORD	volume number
 0Bh	DWORD	directory entry number
SeeAlso: #02401

Top
21F257SF13 - INT 21 - Novell NetWare - GET NAMESPACE INFORMATION
INT 21 - Novell NetWare - GET NAMESPACE INFORMATION
	AX = F257h subfn 13h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02403)
	ES:DI -> reply buffer (see #02404)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=12h,AX=F257h/SF=15h

Format of NetWare "Get Namespace Information" request packet:
Offset	Size	Description	(Table 02403)
 00h	BYTE	13h (subfunction "Get Namespace Information")
 01h	BYTE	source name space (see #02387)
 02h	BYTE	destination name space
 03h	BYTE	reserved for future use
 04h	BYTE	volume number
 05h	DWORD	directory base
 09h	DWORD	namespace information mask
SeeAlso: #02404

Format of NetWare "Get Namespace Information" reply packet:
Offset	Size	Description	(Table 02404)
 00h	var	namespace-specific information
SeeAlso: #02403

Top
21F257SF15 - INT 21 - Novell NetWare - GET PATH STRING FROM SHORT DIRECTORY HANDLE
INT 21 - Novell NetWare - GET PATH STRING FROM SHORT DIRECTORY HANDLE
	AX = F257h subfn 15h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02405)
	ES:DI -> reply buffer (see #02406)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=13h,AX=F257h/SF=16h

Format of NetWare "Get Path String from Short Directory Handle" request packet:
Offset	Size	Description	(Table 02405)
 00h	BYTE	15h (subfunction "Get Path String from Short Directory Handle")
 01h	BYTE	name space (see #02387)
 02h	BYTE	short directory handle
SeeAlso: #02406

Format of NetWare "Get Path String from Short Directory Handle" reply packet:
Offset	Size	Description	(Table 02406)
 00h	BYTE	length of path
 01h  N BYTEs	full directory path
SeeAlso: #02405

Top
21F257SF16 - INT 21 - Novell NetWare - GENERATE DIRECTORY BASE AND VOLUME NUMBER
INT 21 - Novell NetWare - GENERATE DIRECTORY BASE AND VOLUME NUMBER
	AX = F257h subfn 16h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02407)
	ES:DI -> reply buffer (see #02408)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=15h,AX=F257h/SF=17h

Format of NetWare "Generate Directory Base and Volume Number" request packet:
Offset	Size	Description	(Table 02407)
 00h	BYTE	16h (subfunction "Generate Directory Base and Volume Number")
 01h	BYTE	name space (#02802)
 02h  3 BYTEs	reserved for future use
 05h		NetWare Handle/Path structure (see #02376)
SeeAlso: #02408

Format of NetWare "Generate Directory Base and Volume Number" reply packet:
Offset	Size	Description	(Table 02408)
 00h	DWORD	namespace directory base
 04h	DWORD	DOS directory base
 08h	BYTE	volume number
SeeAlso: #02407

Top
21F257SF17 - INT 21 - Novell NetWare - GET NAME SPACE INFORMATION FORMAT
INT 21 - Novell NetWare - GET NAME SPACE INFORMATION FORMAT
	AX = F257h subfn 17h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02409)
	ES:DI -> reply buffer (see #02410)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=18h,AX=F257h/SF=19h

Format of NetWare "Get Name Space Information Format" request packet:
Offset	Size	Description	(Table 02409)
 00h	BYTE	17h (subfunction "Get Name Space Information Format")
 01h	BYTE	name space (see #02387)
 02h	BYTE	volume number
SeeAlso: #02410

Format of NetWare "Get Name Space Information Format" reply packet:
Offset	Size	Description	(Table 02410)
 00h	DWORD	fixed bitmask
 04h	DWORD	variable bitmask
 08h	DWORD	huge bitmask
 0Ch	WORD	fixed bits defined
 0Eh	WORD	variable bits defined
 10h	WORD	huge bits defined
 12h 128 BYTEs	field lengths
SeeAlso: #02409

Top
21F257SF18 - INT 21 - Novell NetWare - GET NAME SPACES LOADED
INT 21 - Novell NetWare - GET NAME SPACES LOADED
	AX = F257h subfn 18h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02411)
	ES:DI -> reply buffer (see #02412)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=19h,AX=F257h/SF=1Ah
SeeAlso: AX=F216h/SF=2Fh

Format of NetWare "Get Name Spaces Loaded" request packet:
Offset	Size	Description	(Table 02411)
 00h	BYTE	18h (subfunction "Get Name Spaces Loaded")
 01h  2 BYTEs	reserved for future use
 03h	BYTE	volume number
SeeAlso: #02412

Format of NetWare "Get Name Spaces Loaded" reply packet:
Offset	Size	Description	(Table 02412)
 00h	WORD	number of namespace elements
 02h	WORD	number of namespace elements loaded
 04h  N BYTEs	loaded name spaces (each byte contains number of one loaded
		  name space)
SeeAlso: #02411

Top
21F257SF19 - INT 21 - Novell NetWare - WRITE NAME SPACE INFO
INT 21 - Novell NetWare - WRITE NAME SPACE INFO
	AX = F257h subfn 19h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02413)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=18h

Format of NetWare "Write Name Space Info" request packet:
Offset	Size	Description	(Table 02413)
 00h	BYTE	19h (subfunction "Write Name Space Info")
 01h	BYTE	source name space (see #02387)
 02h	BYTE	destination name space
 03h	BYTE	volume number
 04h	DWORD	directory entry number
 08h	DWORD	namespace information bitmask
 0Ch 512 BYTEs	namespace-specific informatin

Top
21F257SF1A - INT 21 - Novell NetWare - READ EXTENDED NAME SPACE INFO
INT 21 - Novell NetWare - READ EXTENDED NAME SPACE INFO
	AX = F257h subfn 1Ah
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02414)
	ES:DI -> reply buffer (see #02415)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=18h,AX=F257h/SF=19h,AX=F257h/SF=1Bh

Format of NetWare "Read Extended Name Space Info" request packet:
Offset	Size	Description	(Table 02414)
 00h	BYTE	1Ah (subfunction "Read Extended Name Space Info")
 01h	BYTE	name space (see #02387)
 02h	BYTE	volume number
 03h	DWORD	directory base
 07h	DWORD	huge mask
 0Bh 16 BYTEs	huge state information
SeeAlso: #02415

Format of NetWare "Read Extended Name Space Info" reply packet:
Offset	Size	Description	(Table 02415)
 00h 16 BYTEs	next huge state information
 10h	DWORD	huge data length
 14h  N BYTEs	huge data
SeeAlso: #02414

Top
21F257SF1B - INT 21 - Novell NetWare - WRITE EXTENDED NAME SPACE INFO
INT 21 - Novell NetWare - WRITE EXTENDED NAME SPACE INFO
	AX = F257h subfn 1Bh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02416)
	ES:DI -> reply buffer (see #02417)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=18h,AX=F257h/SF=1Ah

Format of NetWare "Write Extended Name Space Info" request packet:
Offset	Size	Description	(Table 02416)
 00h	BYTE	1Bh (subfunction "Write Extended Name Space Info")
 01h	BYTE	name space (see #02387)
 02h	BYTE	volume number
 03h	DWORD	directory entry number
 07h	DWORD	huge mask
 0Bh 16 BYTEs	huge state information
 1Bh	DWORD	huge data length
 1Fh  N BYTEs	huge data
SeeAlso: #02417

Format of NetWare "Write Extended Name Space Info" request packet:
Offset	Size	Description	(Table 02417)
 00h 16 BYTEs	next huge state information
 10h	DWORD	huge data used
SeeAlso: #02416

Top
21F257SF1C - INT 21 - Novell NetWare - GET NS FULL PATH STRING
INT 21 - Novell NetWare - GET NS FULL PATH STRING
	AX = F257h subfn 1Ch
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02418)
	ES:DI -> reply buffer (see #02419)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
Note:	this call returns the path in reverse order (root directory last)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=03h,AX=F257h/SF=15h

Format of NetWare "Get NS Full Path String" request packet:
Offset	Size	Description	(Table 02418)
 00h	BYTE	1Ch (subfunction "Get NS Full Path String")
 01h	BYTE	source name space
 02h	BYTE	destination name space
 03h 10	BYTEs	path cookie (see #02420)
 04h		NetWare Handle/Path structure (see #02376)
SeeAlso: #02419

Format of NetWare "Get NS Full Path String" reply packet:
Offset	Size	Description	(Table 02419)
 00h 10 BYTEs	next path cookie (see #02420)
 0Ah	WORD	size of path component(s) in packet
 0Ch	WORD	number of path components in packet
 0Eh		path components
SeeAlso: #02418

Format of NetWare path cookie:
Offset	Size	Description	(Table 02420)
 00h	WORD	flags
		bit 0: last component is a filename
 02h	DWORD	cookie1
 06h	DWORD	cookie2
Note:	"cookie1" and "cookie2" are to be set to FFFFFFFFh initially; if
	  "cookie2" is FFFFFFFFh on return, all path components have been
	  transferred
SeeAlso: #02418,#02419

Top
21F257SF1D - INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS
INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS
	AX = F257h subfn 1Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02421)
	ES:DI -> reply buffer (see #02422)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F216h/SF=03h,AX=F257h/SF=06h,AX=F257h/SF=0Ch,AX=F257h/SF=15h

Format of NetWare "Get Effective Directory Rights" request packet:
Offset	Size	Description	(Table 02421)
 00h	BYTE	1Dh (subfunction "Get Effective Directory Rights")
 01h	BYTE	name space (see #02387)
 02h	BYTE	destination name space (see #02387)
 03h	WORD	search attributes
 05h	DWORD	return information mask
 09h		NetWare Handle/Path structure (see #02376)
SeeAlso: #02422

Format of NetWare "Get Effective Directory Rights" reply packet:
Offset	Size	Description	(Table 02422)
 00h	WORD	caller's effective rights
 02h		NetWare Information Structure
SeeAlso: #02421

Top
21F258SF01 - INT 21 - Novell NetWare v4+ - GET VOLUME AUDITING STATISTICS
INT 21 - Novell NetWare v4+ - GET VOLUME AUDITING STATISTICS
	AX = F258h subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02423)
	ES:DI -> reply buffer (see #02424)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F268h/SF=C8h

Format of NetWare "Get Volume Auditing Statistics" request buffer:
Offset	Size	Description	(Table 02423)
 00h	BYTE	01h (function "Get Volume Auditing Statistics")
 01h	DWORD	volume
SeeAlso: #02424

Format of NetWare "Get Volume Auditing Statistics" reply buffer:
Offset	Size	Description	(Table 02424)
 00h	WORD	auditing version (date)
 02h	WORD	audit file version (date)
 04h	DWORD	auditing enabled flag
 08h	DWORD	audit file's size
 0Ch	DWORD	audit configuration file's size
 10h	DWORD	maximum audit file size
 14h	DWORD	audit file size threshold
 18h	DWORD	number of audit records
 1Ch	DWORD	number of history records
SeeAlso: #02423,#02476

Top
21F258SF02 - INT 21 - Novell NetWare - ADD AUDIT PROPERTY
INT 21 - Novell NetWare - ADD AUDIT PROPERTY
	AX = F258h subfn 02h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02425)
	ES:DI -> reply buffer (see #02426)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=39h,AX=F258h/SF=06h,AX=F258h/SF=08h

Format of NetWare "Add Audit Property" request packet:
Offset	Size	Description	(Table 02425)
 00h	BYTE	02h (subfunction "Add Audit Property")
	???
SeeAlso: #02426

Format of NetWare "Add Audit Property" reply packet:
Offset	Size	Description	(Table 02426)
 00h	???
SeeAlso: #02425

Top
21F258SF03 - INT 21 - Novell NetWare - LOGIN AS VOLUME AUDITOR
INT 21 - Novell NetWare - LOGIN AS VOLUME AUDITOR
	AX = F258h subfn 03h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02427)
	ES:DI -> reply buffer (see #02428)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=04h,AX=F258h/SF=0Dh

Format of NetWare "Login As Volume Auditor" request packet:
Offset	Size	Description	(Table 02427)
 00h	BYTE	03h (subfunction "Login As Volume Auditor")
	???
SeeAlso: #02428

Format of NetWare "Login As Volume Auditor" reply packet:
Offset	Size	Description	(Table 02428)
 00h	???
SeeAlso: #02427

Top
21F258SF04 - INT 21 - Novell NetWare - CHANGE AUDITOR PASSWORD
INT 21 - Novell NetWare - CHANGE AUDITOR PASSWORD
	AX = F258h subfn 04h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02429)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=03h

Format of NetWare "Change Auditor Password" request packet:
Offset	Size	Description	(Table 02429)
 00h	BYTE	04h (subfunction "Change Auditor Password")
	???

Top
21F258SF05 - INT 21 - Novell NetWare - CHECK AUDIT ACCESS
INT 21 - Novell NetWare - CHECK AUDIT ACCESS
	AX = F258h subfn 05h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02430)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=02h,AX=F258h/SF=08h

Format of NetWare "Check Audit Access" request packet:
Offset	Size	Description	(Table 02430)
 00h	BYTE	05h (subfunction "Check Audit Access")
	???

Top
21F258SF06 - INT 21 - Novell NetWare - REMOVE AUDIT PROPERTY
INT 21 - Novell NetWare - REMOVE AUDIT PROPERTY
	AX = F258h subfn 06h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02431)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=02h,AX=F258h/SF=05h

Format of NetWare "Remove Audit Property" request packet:
Offset	Size	Description	(Table 02431)
 00h	BYTE	06h (subfunction "Remove Audit Property")
	???

Top
21F258SF07 - INT 21 - Novell NetWare - DISABLE AUDITING ON VOLUME
INT 21 - Novell NetWare - DISABLE AUDITING ON VOLUME
	AX = F258h subfn 07h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02432)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=08h,AX=F258h/SF=09h

Format of NetWare "Disable Auditing on Volume" request packet:
Offset	Size	Description	(Table 02432)
 00h	BYTE	07h (subfunction "Disable Auditing on Volume")
	???

Top
21F258SF08 - INT 21 - Novell NetWare - ENABLE AUDITING ON VOLUME
INT 21 - Novell NetWare - ENABLE AUDITING ON VOLUME
	AX = F258h subfn 08h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02433)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=07h,AX=F258h/SF=09h

Format of NetWare "Enable Auditing on Volume" request packet:
Offset	Size	Description	(Table 02433)
 00h	BYTE	08h (subfunction "Enable Auditing on Volume")
	???

Top
21F258SF09 - INT 21 - Novell NetWare - IS USER AUDITED?
INT 21 - Novell NetWare - IS USER AUDITED?
	AX = F258h subfn 09h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02434)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=07h,AX=F258h/SF=08h

Format of NetWare "Is User Audited?" request packet:
Offset	Size	Description	(Table 02434)
 00h	BYTE	09h (subfunction "Is User Audited?")
	???

Top
21F258SF0A - INT 21 - Novell NetWare - READ AUDITING BITMAP
INT 21 - Novell NetWare - READ AUDITING BITMAP
	AX = F258h subfn 0Ah
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02435)
	ES:DI -> reply buffer (see #02436)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Bh,AX=F258h/SF=10h

Format of NetWare "Read Auditing Bitmap" request packet:
Offset	Size	Description	(Table 02435)
 00h	BYTE	0Ah (subfunction "Read Auditing Bitmap")
	???
SeeAlso: #02436,#02437

Format of NetWare "Read Auditing Bitmap" reply packet:
Offset	Size	Description	(Table 02436)
 00h	???
SeeAlso: #02435,#02438

Top
21F258SF0B - INT 21 - Novell NetWare - READ AUDIT CONFIG HEADER
INT 21 - Novell NetWare - READ AUDIT CONFIG HEADER
	AX = F258h subfn 0Bh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02437)
	ES:DI -> reply buffer (see #02438)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=11h

Format of NetWare "Read Audit Configuration Header" request packet:
Offset	Size	Description	(Table 02437)
 00h	BYTE	0Bh (subfunction "Read Audit Configuration Header")
	???
SeeAlso: #02438,#02435

Format of NetWare "Read Audit Configuration Header" reply packet:
Offset	Size	Description	(Table 02438)
 00h	???
SeeAlso: #02437,#02436

Top
21F258SF0D - INT 21 - Novell NetWare - LOGOUT AS VOLUME AUDITOR
INT 21 - Novell NetWare - LOGOUT AS VOLUME AUDITOR
	AX = F258h subfn 0Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02439)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=03h

Format of NetWare "Logout as Volume Auditor" request packet:
Offset	Size	Description	(Table 02439)
 00h	BYTE	0Dh (subfunction "Logout as Volume Auditor")
	???

Top
21F258SF0E - INT 21 - Novell NetWare - RESET AUDITING FILE
INT 21 - Novell NetWare - RESET AUDITING FILE
	AX = F258h subfn 0Eh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02440)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=0Fh

Format of NetWare "Reset Auditing File" request packet:
Offset	Size	Description	(Table 02440)
 00h	BYTE	0Eh (subfunction "Reset Auditing File")
	???

Top
21F258SF0F - INT 21 - Novell NetWare - RESET AUDIT HISTORY FILE
INT 21 - Novell NetWare - RESET AUDIT HISTORY FILE
	AX = F258h subfn 0Fh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02441)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Eh

Format of NetWare "Reset Audit History File" request packet:
Offset	Size	Description	(Table 02441)
 00h	BYTE	0Fh (subfunction "Reset Audit History File")
	???

Top
21F258SF10 - INT 21 - Novell NetWare - WRITE AUDITING BITMAP
INT 21 - Novell NetWare - WRITE AUDITING BITMAP
	AX = F258h subfn 10h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02442)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=11h

Format of NetWare "Write Auditing Bitmap" request packet:
Offset	Size	Description	(Table 02442)
 00h	BYTE	10h (subfunction "Write Auditing Bitmap")
	???
SeeAlso: #02443

Top
21F258SF11 - INT 21 - Novell NetWare - WRITE AUDIT CONFIG HEADER
INT 21 - Novell NetWare - WRITE AUDIT CONFIG HEADER
	AX = F258h subfn 11h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02443)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Bh,AX=F258h/SF=10h

Format of NetWare "Write Audit Configuration Header" request packet:
Offset	Size	Description	(Table 02443)
 00h	BYTE	11h (subfunction "Write Audit Configuration Header")
	???
SeeAlso: #02442

Top
21F258SF13 - INT 21 - Novell NetWare - GET AUDITING FLAGS
INT 21 - Novell NetWare - GET AUDITING FLAGS
	AX = F258h subfn 13h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02444)
	ES:DI -> reply buffer (see #02445)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=05h

Format of NetWare "Get Auditing Flags" request packet:
Offset	Size	Description	(Table 02444)
 00h	BYTE	13h (subfunction "Get Auditing Flags")
	???
SeeAlso: #02445

Format of NetWare "Get Auditing Flags" reply packet:
Offset	Size	Description	(Table 02445)
 00h	???
SeeAlso: #02444

Top
21F258SF14 - INT 21 - Novell NetWare - CLOSE OLD AUDITING FILE
INT 21 - Novell NetWare - CLOSE OLD AUDITING FILE
	AX = F258h subfn 14h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02446)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=15h

Format of NetWare "Close Old Auditing File" request packet:
Offset	Size	Description	(Table 02446)
 00h	BYTE	14h (subfunction "Close Old Auditing File")
	???
SeeAlso: #02447

Top
21F258SF15 - INT 21 - Novell NetWare - DELETE OLD AUDITING FILE
INT 21 - Novell NetWare - DELETE OLD AUDITING FILE
	AX = F258h subfn 15h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02447)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=14h

Format of NetWare "Delete Old Auditing File" request packet:
Offset	Size	Description	(Table 02447)
 00h	BYTE	15h (subfunction "Delete Old Auditing File")
	???
SeeAlso: #02446

Top
21F258SF16 - INT 21 - Novell NetWare - CHECK AUDIT LEVEL TWO ACCESS
INT 21 - Novell NetWare - CHECK AUDIT LEVEL TWO ACCESS
	AX = F258h subfn 16h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02448)
	ES:DI -> reply buffer
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=05h

Format of NetWare "Check Audit Level Two Access" request packet:
Offset	Size	Description	(Table 02448)
 00h	BYTE	16h (subfunction "Check Audit Level Two Access")
	???

Top
21F25ASF01 - INT 21 - Novell NetWare - GET DATA MIGRATION INFO
INT 21 - Novell NetWare - GET DATA MIGRATION INFO
	AX = F25Ah subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02449)
	ES:DI -> reply buffer (see #02450)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=86h

Format of NetWare "Get Data Migration Information" request packet:
Offset	Size	Description	(Table 02449)
 00h	WORD	length of following data
 02h	BYTE	01h (subfunction "Get Data Migration Information")
SeeAlso: #02450

Format of NetWare "Get Data Migration Information" reply packet:
Offset	Size	Description	(Table 02450)
 00h	???
SeeAlso: #02449

Top
21F25ASF80 - INT 21 - Novell NetWare - MOVE FILE DATA TO DATA MIGRATION
INT 21 - Novell NetWare - MOVE FILE DATA TO DATA MIGRATION
	AX = F25Ah subfn 80h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02451)
	ES:DI -> reply buffer (see #02452)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=85h

Format of NetWare "Move File Data to Data Migration" request packet:
Offset	Size	Description	(Table 02451)
 00h	WORD	length of following data
 02h	BYTE	80h (subfunction "Move File Data to Data Migration")
 03h	DWORD	volume number
 07h	DWORD	directory entry number
 0Bh	DWORD	name space (see #02387)
 0Fh	DWORD	support module ID
 13h	DWORD	save key flag
		00000010h to save key when file is demigrated
SeeAlso: #02452

Format of NetWare "Move File Data to Data Migration" reply packet:
Offset	Size	Description	(Table 02452)
 00h	DWORD	volume-unique ID
SeeAlso: #02451

Top
21F25ASF81 - INT 21 - Novell NetWare - DATA MIGRATION FILE INFORMATION
INT 21 - Novell NetWare - DATA MIGRATION FILE INFORMATION
	AX = F25Ah subfn 81h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02453)
	ES:DI -> reply buffer (see #02454)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=82h,AX=F25Ah/SF=83h

Format of NetWare "Data Migration File Information" request packet:
Offset	Size	Description	(Table 02453)
 00h	WORD	length of following data
 02h	BYTE	81h (subfunction "Data Migration File Information")
 03h	DWORD	volume number
 07h	DWORD	directory entry number
 0Bh	DWORD	name space (see #02387)
SeeAlso: #02454

Format of NetWare "Data Migration File Information" reply packet:
Offset	Size	Description	(Table 02454)
 00h	DWORD	support module ID
 04h	DWORD	estimate restoration time
 08h	DWORD	bitmask of supported data streams
SeeAlso: #02453

Top
21F25ASF82 - INT 21 - Novell NetWare - VOLUME DATA MIGRATION STATUS
INT 21 - Novell NetWare - VOLUME DATA MIGRATION STATUS
	AX = F25Ah subfn 82h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02455)
	ES:DI -> reply buffer (see #02456)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=01h,AX=F25Ah/SF=83h,AX=F25Ah/SF=84h

Format of NetWare "Volume Data Migration Status" request packet:
Offset	Size	Description	(Table 02455)
 00h	WORD	length of following data
 02h	BYTE	82h (subfunction "Volume Data Migration Status")
 03h	DWORD	volume number
 07h	DWORD	support module ID
SeeAlso: #02456

Format of NetWare "Volume Data Migration Status" request packet:
Offset	Size	Description	(Table 02456)
 00h	DWORD	number of migrated files
 04h	DWORD	total size required to restore all migrated files
 08h	DWORD	total space used on migration device
 0Ch	DWORD	limbo space (demigrated files with save-key flag set)
 10h	DWORD	total space including limbo space
 14h	DWORD	number of files in limbo
SeeAlso: #02455

Top
21F25ASF83 - INT 21 - Novell NetWare - GET MIGRATION OR STATUS INFORMATION
INT 21 - Novell NetWare - GET MIGRATION OR STATUS INFORMATION
	AX = F25Ah subfn 83h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02457)
	ES:DI -> reply buffer (see #02458)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=84h,AX=F25Ah/SF=85h

Format of NetWare "Get Migration or Status Information" request packet:
Offset	Size	Description	(Table 02457)
 00h	WORD	length of following data
 02h	BYTE	83h (subfunction "Get Migration or Status Information")
SeeAlso: #02458

Format of NetWare "Get Migration or Status Information" request packet:
Offset	Size	Description	(Table 02458)
 00h	DWORD	presence flag
		FFFFFFFFh if Data Migration NLM is loaded and running
 04h	DWORD	major version
 08h	DWORD	minor version
 0Ch	DWORD	flag: has support module registered with Data Migrator?
SeeAlso: #02457

Top
21F25ASF84 - INT 21 - Novell NetWare - DATA MIGRATION SUPPORT MODULE INFORMATION
INT 21 - Novell NetWare - DATA MIGRATION SUPPORT MODULE INFORMATION
	AX = F25Ah subfn 84h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02459)
	ES:DI -> reply buffer (see #02460)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=83h,AX=F25Ah/SF=86h

Format of NetWare "Data Migration Support Module Information" request packet:
Offset	Size	Description	(Table 02459)
 00h	WORD	length of following data
 02h	BYTE	84h (subfunction "Data Migration Support Module Information")
 03h	DWORD	information level
		0000h get data migration NLM info
		0001h get loaded support modules
		0002h get name of support module
 07h	DWORD	support module ID
SeeAlso: #02460

Format of NetWare "Data Migration Support Module Information" request packet:
Offset	Size	Description	(Table 02460)
---information level 0---
 00h	DWORD	read/write access status
 04h	DWORD	length of Specific Device Information block (max 384)
 08h	DWORD	space available on support module
 0Ch	DWORD	amount of space used
 10h	BYTE	length of support module's name
 11h 14 BYTEs	support module name
 1Fh 128 BYTEs	support module information
---information level 1---
 00h	DWORD	number of support modules
 04h 32 BYTEs	support module IDs
---information level 2---
 00h	BYTE	length of module name
 01h 32 BYTEs	support module name
SeeAlso: #02459

Top
21F25ASF85 - INT 21 - Novell NetWare - MOVE FILE DATA FROM DATA MIGRATION
INT 21 - Novell NetWare - MOVE FILE DATA FROM DATA MIGRATION
	AX = F25Ah subfn 85h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02461)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=83h,AX=F25Ah/SF=86h

Format of NetWare "Move File Data From Data Migration" request packet:
Offset	Size	Description	(Table 02461)
 00h	WORD	length of following data
 02h	BYTE	85h (subfunction "Move File Data from Data Migration")
 03h	DWORD	volume number
 07h	DWORD	directory entry number
 0Bh	DWORD	name space (see #02387)
SeeAlso: #02452

Top
21F25ASF86 - INT 21 - Novell NetWare - GET OR SET DEFAULT SUPPORT MODULE
INT 21 - Novell NetWare - GET OR SET DEFAULT SUPPORT MODULE
	AX = F25Ah subfn 86h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02462)
	ES:DI -> reply buffer (see #02463)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=01h,AX=F25Ah/SF=80h,AX=F25Ah/SF=84h

Format of NetWare "Get or Set Default Support Module" request packet:
Offset	Size	Description	(Table 02462)
 00h	WORD	length of following data
 02h	BYTE	86h (subfunction "Get or Set Default Support Module")
 03h	DWORD	direction
		00h get default support module
		01h set default support module
 07h	DWORD	new module ID if setting
SeeAlso: #02463

Format of NetWare "Get or Set Default Support Module" request packet:
Offset	Size	Description	(Table 02463)
 00h	DWORD	support module ID
SeeAlso: #02462

Top
21F268SF01 - INT 21 - Novell NetWare v4+ - GET TREE NAME
INT 21 - Novell NetWare v4+ - GET TREE NAME
	AX = F268h subfn 01h
	CX = length of request buffer in bytes (0001h)
	DX = length of reply buffer in bytes (0064h)
	DS:SI -> request buffer (see #02464)
	ES:DI -> reply buffer (see #02465)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F268h/SF=04h

Format of NetWare "Get Tree Name" request buffer:
Offset	Size	Description	(Table 02464)
 00h	BYTE	01h (subfunction "Get Tree Name")

Format of NetWare "Get Tree Name" reply buffer:
Offset	Size	Description	(Table 02465)
 00h	DWORD	Ping version
 04h	DWORD	length of tree name
 08h 32 BYTEs	tree name, padded with underscores ('_')
 28h 60 BYTEs	???

Top
21F268SF04 - INT 21 - Novell NetWare v4+ - GET BINDERY CONTEXT
INT 21 - Novell NetWare v4+ - GET BINDERY CONTEXT
	AX = F268h subfn 04h
	CX = length of request buffer in bytes (0001h)
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02466)
	ES:DI -> reply buffer (see #02467)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F268h/SF=01h,AX=F268h/SF=C8h

Format of NetWare "Get Bindery Context" request buffer:
Offset	Size	Description	(Table 02466)
 00h	BYTE	04h (subfunction "Get Bindery Context")

Format of NetWare "Get Bindery Context" reply buffer:
Offset	Size	Description	(Table 02467)
 00h	DWORD	length (max 200)
 04h  N WORDs	Unicode bindery context string

Top
21F268SF05 - INT 21 - Novell NetWare v4+ - MONITOR NDS CONNECTION
INT 21 - Novell NetWare v4+ - MONITOR NDS CONNECTION
	AX = F268h subfn 05h
	CX = length of request buffer in bytes (0001h)
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02468)
	ES:DI -> reply buffer (unused???)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)

Format of NetWare "Monitor NDS Connection" request buffer:
Offset	Size	Description	(Table 02468)
 00h	BYTE	05h (subfunction "Monitor NDS Connection"

Top
21F268SF16 - INT 21 - Novell NetWare v4+ - NDS LIST PARTITIONS
INT 21 - Novell NetWare v4+ - NDS LIST PARTITIONS
	AX = F268h subfn 16h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02469)
	ES:DI -> reply buffer (see #02470)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
Note:	the length specified in CX must be exactly 13 bytes more than the
	  length field at offset 09h in the request buffer for this function
	  to be successful
SeeAlso: AX=F268h/SF=35h

Format of NetWare "NDS List Partitions" request buffer:
Offset	Size	Description	(Table 02469)
 00h	BYTE	02h
 01h	DWORD	??? (FFFFFFFFh)
 05h	DWORD	??? (00000202h)
 09h	DWORD	length (00000018h)
 0Dh	DWORD	??? (00000000h)
 11h	DWORD	function (00000016h) (subfunction "NDS List Partitions")
 15h	DWORD	??? (00000400h)
 19h	DWORD	API version (00000000h)
 1Dh	DWORD	??? (00000000h)
 21h	DWORD	iteration (FFFFFFFFh)
SeeAlso: #02470,#02471

Format of NetWare "NDS List Partitions" reply buffer:
Offset	Size	Description	(Table 02470)
 00h	DWORD	length
 04h	DWORD	???
 08h	DWORD	return code
 0Ch	DWORD	iteration
 10h 1000 BYTEs	returned data
SeeAlso: #02469

Top
21F268SF35 - INT 21 - Novell NetWare v4+ - NDS GET SERVER NAME AND ADDRESS
INT 21 - Novell NetWare v4+ - NDS GET SERVER NAME AND ADDRESS
	AX = F268h subfn 35h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02471)
	ES:DI -> reply buffer (see #02472)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
Note:	the length specified in CX must be exactly 13 bytes more than the
	  length field at offset 09h in the request buffer for this function
	  to be successful
SeeAlso: AX=F268h/SF=16h

Format of NetWare "NDS Get Server Name and Address" request buffer:
Offset	Size	Description	(Table 02471)
 00h	BYTE	02h
 01h	DWORD	??? (FFFFFFFFh)
 05h	DWORD	??? (00000202h)
 09h	DWORD	length (0000000Ch)
 0Dh	DWORD	??? (00000000h)
 11h	DWORD	function (00000035h) (subfunc "NDS Get Server Name and Addr")
 15h	DWORD	??? (00000400h)
SeeAlso: #02469,#02472

Format of NetWare "NDS Get Server Name and Address" reply buffer:
Offset	Size	Description	(Table 02472)
 00h	DWORD	length
 04h	DWORD	???
 08h	DWORD	return code
 0Ch	DWORD	length of name
 10h  N WORDs	Unicode server name string
	var	padding
	DWORD	??? (00000001h)
	DWORD	??? (00000000h)
	DWORD	??? (0000000Ch)
     12 BYTEs	server's IPX address
SeeAlso: #02471

Top
21F268SF3D - INT 21 - Novell NetWare v4+ - NDS LOGOUT
INT 21 - Novell NetWare v4+ - NDS LOGOUT
	AX = F268h subfn 3Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02473)
	ES:DI -> reply buffer (see #02474)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F217h/SF=14h

Format of NetWare "NDS Logout" request buffer:
Offset	Size	Description	(Table 02473)
 00h	BYTE	02h
 01h	DWORD	??? (FFFFFFFFh)
 05h	DWORD	??? (00000202h)
 09h	DWORD	length (0000000Ch)
 0Dh	DWORD	??? (00000000h)
 11h	DWORD	function (0000003Dh) (subfunction "NDS Logout")
 15h	DWORD	??? (00000000h)
SeeAlso: #02474

Format of NetWare "NDS Logout" reply buffer:
Offset	Size	Description	(Table 02474)
 00h	DWORD	length
 04h	DWORD	???
 08h	DWORD	return code
SeeAlso: #02473

Top
21F268SFC8 - INT 21 - Novell NetWare v4+ - GET DS AUDITING STATISTICS
INT 21 - Novell NetWare v4+ - GET DS AUDITING STATISTICS
	AX = F268h subfn C8h
	CX = length of request buffer in bytes (0001h)
	DX = length of reply buffer in bytes (0020h)
	DS:SI -> request buffer (see #02475)
	ES:DI -> reply buffer (see #02476)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F258h/SF=01h,AX=F268h/SF=01h,AX=F268h/SF=04h

Format of NetWare "Get DS Auditing Statistics" request buffer:
Offset	Size	Description	(Table 02475)
 00h	BYTE	C8h (subfunction "Get DS Auditing Statistics")
SeeAlso: #02476

Format of NetWare "Get DS Auditing Statistics" reply buffer:
Offset	Size	Description	(Table 02476)
 00h	WORD	auditing version (date)
 02h	WORD	audit file version (date)
 04h	DWORD	auditing enabled flag
 08h	DWORD	audit file's size
 0Ch	DWORD	audit configuration file's size
 10h	DWORD	maximum audit file size
 14h	DWORD	audit file size threshold
 18h	DWORD	number of audit records
 1Ch	DWORD	number of history records
SeeAlso: #02424,#02475

Top
21F269 - INT 21 - Novell NetWare - LOG FILE
INT 21 - Novell NetWare - LOG FILE
	AX = F269h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02477)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F203h,AX=F26Ah,AH=EBh"NetWare"

Format of NetWare "Log File" request packet:
Offset	Size	Description	(Table 02477)
 00h	BYTE	directory handle
 01h	BYTE	lock flag
		00h log only
		01h log and lock
 02h	WORD	lock timeout in clock ticks (0000h = don't wait)
 04h	BYTE	length of filename
 05h  N BYTEs	filename

Top
21F26A - INT 21 - Novell NetWare - LOCK FILE SET
INT 21 - Novell NetWare - LOCK FILE SET
	AX = F26Ah
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02478)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F204h,AX=F269h,AH=CBh"NetWare"

Format of NetWare "Lock File Set" request packet:
Offset	Size	Description	(Table 02478)
 00h	WORD	lock timeout in clock ticks (0000h = don't wait)

Top
21F26C - INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET
INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET
	AX = F26Ch
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02479)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F20Ah,AX=F26Ah,AH=CBh"NetWare"

Format of NetWare "Lock Logical Record Set" request packet:
Offset	Size	Description	(Table 02479)
 00h	BYTE	lock flag
		00h shareable lock
		01h exclusive lock
 01h	WORD	lock timeout in clock ticks (0000h = don't wait)

Top
21F26E - INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET
INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET
	AX = F26Eh
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02480)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F21Bh,AX=F26Ch,AH=C2h"NetWare"

Format of NetWare "Lock Physical Record Set" request packet:
Offset	Size	Description	(Table 02480)
 00h	BYTE	lock flag
		00h exclusive lock
		02h shareable lock
 01h	WORD	lock timeout in clock ticks (0000h = don't wait)

Top
21F26FSF00 - INT 21 - Novell NetWare - OPEN SEMAPHORE
INT 21 - Novell NetWare - OPEN SEMAPHORE
	AX = F26Fh subfn 00h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02481)
	ES:DI -> reply buffer (see #02482)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=01h,AX=F26Fh/SF=02h

Format of NetWare "Open Semaphore" request packet:
Offset	Size	Description	(Table 02481)
 00h	BYTE	00h (subfunction "Open Semaphore")
 01h	BYTE	initial semaphore value
 02h	BYTE	length of semaphore's name
 03h  N BYTEs	semaphore name
SeeAlso: #02482

Format of NetWare "Open Semaphore" request packet:
Offset	Size	Description	(Table 02482)
 00h	DWORD	semaphore handle
 04h	BYTE	number of clients using semaphore (including caller)
SeeAlso: #02481

Top
21F26FSF01 - INT 21 - Novell NetWare - CLOSE SEMAPHORE
INT 21 - Novell NetWare - CLOSE SEMAPHORE
	AX = F26Fh subfn 01h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02483)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=00h,AX=F26Fh/SF=03h,AX=F220h/SF=04h

Format of NetWare "Close Semaphore" request packet:
Offset	Size	Description	(Table 02483)
 00h	BYTE	01h (subfunction "Close Semaphore")
 01h	DWORD	semaphore handle
SeeAlso: #02286

Top
21F26FSF02 - INT 21 - Novell NetWare - WAIT ON SEMAPHORE
INT 21 - Novell NetWare - WAIT ON SEMAPHORE
	AX = F26Fh subfn 02h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02484)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=00h,AX=F26Fh/SF=04h

Format of NetWare "Wait on Semaphore" request packet:
Offset	Size	Description	(Table 02484)
 00h	BYTE	02h (subfunction "Wait on Semaphore")
 01h	DWORD	semaphore handle
 05h	WORD	timeout in clock ticks (0000h = no wait)

Top
21F26FSF03 - INT 21 - Novell NetWare - SIGNAL SEMAPHORE
INT 21 - Novell NetWare - SIGNAL SEMAPHORE
	AX = F26Fh subfn 03h
	CX = length of request packet in bytes
	DX = 0000h (no reply packet)
	DS:SI -> request packet (see #02485)
	ES:DI ignored
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=02h,AX=F26Fh/SF=04h

Format of NetWare "Signal Semaphore" request packet:
Offset	Size	Description	(Table 02485)
 00h	BYTE	03h (subfunction "Signal Semaphore")
 01h	DWORD	semaphore handle

Top
21F26FSF04 - INT 21 - Novell NetWare - EXAMINE SEMAPHORE
INT 21 - Novell NetWare - EXAMINE SEMAPHORE
	AX = F26Fh subfn 04h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02486)
	ES:DI -> reply buffer (see #02487)
Return: AX = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=02h,AX=F26Fh/SF=03h

Format of NetWare "Examine Semaphore" request packet:
Offset	Size	Description	(Table 02486)
 00h	BYTE	04h (subfunction "Examine Semaphore")
 01h	DWORD	semaphore handle
SeeAlso: #02487

Format of NetWare "Examine Semaphore" reply packet:
Offset	Size	Description	(Table 02487)
 00h	BYTE	semaphore's current value
 01h	BYTE	number of clients using semaphore
SeeAlso: #02486

Top
21F272 - INT 21 - Novell NetWare v4+ - GET FILE SERVER UTC TIME
INT 21 - Novell NetWare v4+ - GET FILE SERVER UTC TIME
	AX = F272h
	CX = length of request buffer in bytes (0003h)
	DX = length of reply buffer in bytes (0064h)
	DS:SI -> request buffer (see #02488)
	ES:DI -> reply buffer (see #02489)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get File Server UTC Time" request buffer:
Offset	Size	Description	(Table 02488)
 00h	BYTE	??? (00h)
 01h	BYTE	??? (01h)
 02h	BYTE	??? (01h)
SeeAlso: #02489

Format of NetWare "Get File Server UTC Time" reply buffer:
Offset	Size	Description	(Table 02489)
 00h	DWORD	seconds
 04h	DWORD	???
 04h	DWORD	??? (00000204h)
 04h	DWORD	??? (00000000h)
 04h	DWORD	??? (00000000h)
 04h	DWORD	??? (FFFFFFFFh)
 04h	DWORD	??? (00000000h)
SeeAlso: #02488

Top
21F27BSF01 - INT 21 - Novell NetWare v4+ - GET CACHE INFORMATION
INT 21 - Novell NetWare v4+ - GET CACHE INFORMATION
	AX = F27Bh subfn 01h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02490)
	ES:DI -> reply buffer (see #02491)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F27Bh/SF=02h

Format of NetWare "Get Cache Information" request buffer:
Offset	Size	Description	(Table 02490)
 00h	WORD	0001h (length of following data)
 02h	BYTE	01h (subfunction "Get Cache Information")
SeeAlso: #02491

Format of NetWare "Get Cache Information" reply buffer:
Offset	Size	Description	(Table 02491)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	"readExistingBlockCount"
 0Ch	DWORD	"readExistingWriteWaitCount"
 10h	DWORD	"readExistingPartialReadCount"
 14h	DWORD	"readExistingReadErrorCount"
 18h	DWORD	"writeBlockCount"
 1Ch	DWORD	"writeEntireBlockCount"
 20h	DWORD	"getDiskCount"
 24h	DWORD	"getDiskNeedToAllocCount"
 28h	DWORD	"getDiskSomeoneBeatMeCount"
 2Ch	DWORD	"getDiskPartialReadCount"
 30h	DWORD	"getDiskReadErrorCount"
 34h	DWORD	"getAsyncDiskCount"
 38h	DWORD	"getAsyncDiskNeedToAlloc"
 3Ch	DWORD	"getAsyncDiskSomeoneBeatMe"
 40h	DWORD	"errorDoingAsyncReadCount"
 44h	DWORD	"getDiskNoReadCount"
 48h	DWORD	"getDiskNoReadAllocCount"
 4Ch	DWORD	"getDiskNoReadSomeoneBeatMeCount"
 50h	DWORD	"diskWriteCount"
 54h	DWORD	"diskWriteAllocCount"
 58h	DWORD	"diskWriteSomeoneBeatMeCount"
 5Ch	DWORD	"writeErrorCount"
 60h	DWORD	"waitOnSemaphoreCount"
 64h	DWORD	"allocBlockWaitForSomeoneCount"
 68h	DWORD	"allocBlockCount"
 6Ch	DWORD	"allocBlockWaitCount"
 70h	DWORD	original number of cache buffers
 74h	DWORD	current number of cache buffers
 78h	DWORD	cache dirty-block threshold
 7Ch	DWORD	"waitNodeCount"
 80h	DWORD	"waitNodeAllocFailureCount"
 84h	DWORD	"moveCacheNodeCount"
 88h	DWORD	"moveCacheNodeFromAvailCount"
 8Ch	DWORD	"accelerateCacheNodeWriteCount"
 90h	DWORD	"removeCacheNodeCount"
 94h	DWORD	"removeCacheNodeFromAvailCount"
 98h	DWORD	number of cache checks
 9Ch	DWORD	number of cache hits
 A0h	DWORD	number of dirty-cache checks
 A4h	DWORD	number of dirty-cache hits
 A8h	DWORD	"cacheUsedWhileChecking"
 ACh	DWORD	"waitForDirtyBlocksDecreaseCount"
 B0h	DWORD	"allocBlockFromAvailCount"
 B4h	DWORD	"allocBlockFromLRUCount"
 B8h	DWORD	"allocBlockAlreadyWaiting"
 BCh	DWORD	"LRUSittingTime"
 C0h	DWORD	maximum byte count
 C4h	DWORD	minimum number of cache buffers
 C8h	DWORD	minimum cache report threshold
 D0h	DWORD	"allocWaitingCount"
 D4h	DWORD	number of dirty cache blocks
 D8h	DWORD	"cacheDirtyWaitTime"
 DCh	DWORD	"maxDirtyTime"
 E0h	DWORD	number of directory cache buffers
 E4h	DWORD	"cacheByteToBlockShiftFactor"
SeeAlso: #02490

Top
21F27BSF02 - INT 21 - Novell NetWare v4+ - GET SERVER INFORMATION
INT 21 - Novell NetWare v4+ - GET SERVER INFORMATION
	AX = F27Bh subfn 02h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02492)
	ES:DI -> reply buffer (see #02493)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F27Bh/SF=01h

Format of NetWare "Get Server Information" request buffer:
Offset	Size	Description	(Table 02492)
 00h	WORD	0001h (length of following data)
 02h	BYTE	02h (subfunction "Get Server Information")
SeeAlso: #02493

Format of NetWare "Get Server Information" reply buffer:
Offset	Size	Description	(Table 02493)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	current NCP stations in use
 0Ch	DWORD	peak NCP stations in use
 10h	DWORD	total NCP requests
 14h	DWORD	server utilization
 18h	DWORD	number of cancelled replies
 1Ch	DWORD	"writeHeldOffCount"
 20h	DWORD	"writeHeldOffWithDuplicateRequest"
 24h	DWORD	number of invalid request types
 28h	DWORD	"beingAbortedCount"
 2Ch	DWORD	"alreadyDoingReallocCount"
 30h	DWORD	"deAllocInvalidSlotCount"
 34h	DWORD	"deAllocBeingProcessedCount"
 38h	DWORD	"deAllocForgedPacketCount"
 3Ch	DWORD	"startStationErrorCount"
 40h	DWORD	number of invalid slot numbers
 44h	DWORD	"beingProcessedCount"
 48h	DWORD	number of forged packets
 4Ch	DWORD	number still transmitting
 50h	DWORD	"reExecuteRequestCount"
 54h	DWORD	number of invalid sequence numbers
 58h	DWORD	"duplicateIsBeingSentAlreadyCnt"
 5Ch	DWORD	number of positive acknowledgements sent
 60h	DWORD	number of duplicate replies sent
 64h	DWORD	number of times out of memory for station control
 68h	DWORD	number of times out of available connections
 6Ch	DWORD	"reallocSlotCount"
 70h	DWORD	"reallocSlotCameTooSoonCount"
 74h	WORD	number of times maximum hop count exceeded
 76h	WORD	number of unknown networks
 78h	WORD	"NoSpaceForService"
 7Ah	WORD	number of times out of receive buffers
 7Ch	WORD	"notMyNetwork"
 7Eh	DWORD	number of NetBIOS packets propagated
 82h	DWORD	total number of packets serviced
 86h	DWORD	total number of packets routed
SeeAlso: #02492

Top
21F27BSF04 - INT 21 - Novell NetWare v4+ - GET USER INFORMATION
INT 21 - Novell NetWare v4+ - GET USER INFORMATION
	AX = F27Bh subfn 04h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02494)
	ES:DI -> reply buffer (see #02495)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get User Information" request buffer:
Offset	Size	Description	(Table 02494)
 00h	WORD	0005h (length of following data)
 02h	BYTE	04h (subfunction "Get User Information")
 03h	DWORD	connection number
SeeAlso: #02495

Format of NetWare "Get User Information" reply buffer:
Offset	Size	Description	(Table 02495)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	connection number
 0Ch	DWORD	use count
 10h	BYTE	connection service type
 11h  7 BYTEs	login time
 18h	DWORD	status
 1Ch	DWORD	expiration time
 20h	DWORD	object type
 24h	BYTE	transaction flag
 25h	BYTE	logical lock threshold
 26h	BYTE	record lock threshold
 27h	BYTE	file write flags
 28h	BYTE	file write state
 29h	BYTE	(filler)
 2Ah	WORD	file lock count
 2Ch	WORD	record lock count
 2Eh  6 BYTEs	total number of bytes read
 34h  6 BYTEs	total number of bytes written
 3Ah	DWORD	total requests
 3Eh	DWORD	held requests
 42h  6 BYTEs	held bytes read
 48h  6 BYTEs	held bytes written
 4Eh	BYTE	length of user name
 4Fh  N BYTEs	user name
SeeAlso: #02494

Top
21F27BSF06 - INT 21 - Novell NetWare v4+ - GET IPX/SPX Information
INT 21 - Novell NetWare v4+ - GET IPX/SPX Information
	AX = F27Bh subfn 06h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02496)
	ES:DI -> reply buffer (see #02497)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get IPX/SPX Information" request buffer:
Offset	Size	Description	(Table 02496)
 00h	WORD	0001h (length of following data)
 02h	BYTE	06h (subfunction "Get IPX/SPX Information")
SeeAlso: #02497

Format of NetWare "Get IPX/SPX Information" reply buffer:
Offset	Size	Description	(Table 02497)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	number of IPX packets sent
 0Ch	WORD	number of malformed IPX packets
 0Eh	DWORD	number of IPX Get-ECB requests
 12h	DWORD	number of failed IPX Get-ECB requests
 16h	DWORD	number of IPX AES events
 1Ah	WORD	number of postponed IPX AES events
 1Ch	WORD	maximum number of sockets (from configuration)
 1Eh	WORD	maximum number of open sockets
 20h	WORD	number of failed IPX socket opens
 22h	DWORD	number of IPX "listen" ECBs
 24h	WORD	number of failed IPX EBC cancels
 26h	WORD	number of failed IPX Get-Local-Target requests
 28h	WORD	maximum number of SPX connections (from configuration)
 2Ah	WORD	maximum number of SPX connections used
 2Ch	WORD	number of SPX Establish-Connection requests
 2Eh	WORD	number of failed SPX Establish-Connection requests
 30h	WORD	total number of SPX "listen-connect" requests
 32h	WORD	number of failed SPX "listen-connect" requests
 34h	DWORD	number of SPX sends
 38h	DWORD	number of SPX "window-choke"s
 3Ch	WORD	number of bad SPX sends
 3Eh	WORD	number of failed SPX sends
 40h	WORD	number of aborted SPX connections
 42h	DWORD	number of SPX packet listens
 46h	WORD	number of bad SPX packet listens
 48h	DWORD	number of incoming SPX packets
 4Ch	WORD	number of bad incoming SPX packets
 4Eh	WORD	number of supressed SPX packets
 50h	WORD	"SPXNoSesListenECBCount"
 52h	WORD	"SPXWatchDogDestSesCount"
SeeAlso: #02496

Top
21F27BSF08 - INT 21 - Novell NetWare v4+ - GET CPU INFORMATION
INT 21 - Novell NetWare v4+ - GET CPU INFORMATION
	AX = F27Bh subfn 08h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02498)
	ES:DI -> reply buffer (see #02499)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get CPU Information" request buffer:
Offset	Size	Description	(Table 02498)
 00h	WORD	0005h (length of following data)
 02h	BYTE	08h (subfunction "Get CPU Information")
 03h	DWORD	CPU number
SeeAlso: #02499

Format of NetWare "Get CPU Information" reply buffer:
Offset	Size	Description	(Table 02499)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	number of CPUs
 0Ch	DWORD	page table owner flag
 10h	DWORD	CPU type flag
 14h	DWORD	coprocessor flag
 18h	DWORD	bus type flag
 1Ch	DWORD	I/O engine flag
 20h	DWORD	filesystem engine flag
 24h	DWORD	non-dedicated flag
 28h 201 BYTEs	counted string: CPU string;number of coprocessors;bus string
SeeAlso: #02498

Top
21F27BSF09 - INT 21 - Novell NetWare v4+ - GET VOLUME SWITCH INFORMATION
INT 21 - Novell NetWare v4+ - GET VOLUME SWITCH INFORMATION
	AX = F27Bh subfn 09h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02500)
	ES:DI -> reply buffer (see #02501)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get Volume Switch Information" request buffer:
Offset	Size	Description	(Table 02500)
 00h	WORD	0005h (length of following data)
 02h	BYTE	09h (subfunction "Get Volume Switch Information")
 03h	DWORD	starting item number
SeeAlso: #02501

Format of NetWare "Get Volume Switch Information" reply buffer:
Offset	Size	Description	(Table 02501)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	total LFS counters
 0Ch	DWORD	current LFS counters
 10h	DWORD	"readFile"
 14h	DWORD	"writeFile"
 18h	DWORD	"deleteFile"
 1Ch	DWORD	"renMove"
 20h	DWORD	"openFile"
 24h	DWORD	"createFile"
 28h	DWORD	"createAndOpenFile"
 2Ch	DWORD	"closeFile"
 30h	DWORD	"scanDeleteFile"
 34h	DWORD	"salvageFile"
 38h	DWORD	"purgeFile"
 3Ch	DWORD	"migrateFile"
 40h	DWORD	"deMigrateFile"
 44h	DWORD	"createDir"
 48h	DWORD	"deleteDir"
 4Ch	DWORD	"directoryScans"
 50h	DWORD	"mapPathToDirNum"
 54h	DWORD	"modifyDirEntry"
 58h	DWORD	"getAccessRights"
 5Ch	DWORD	"getAccessRightsFromIDs"
 60h	DWORD	"mapDirNumToPath"
 64h	DWORD	"getEntryFromPathStrBase"
 68h	DWORD	"getOtherNSEntry"
 6Ch	DWORD	"getExtDirInfo"
 70h	DWORD	"getParentDirNum"
 74h	DWORD	"addTrusteeR"
 78h	DWORD	"scanTrusteeR"
 7Ch	DWORD	"delTrusteeR"
 80h	DWORD	"purgeTrust"
 84h	DWORD	"findNextTrustRef"
 88h	DWORD	"scanUserRestNodes"
 8Ch	DWORD	"addUserRest"
 90h	DWORD	"deleteUserRest"
 94h	DWORD	"rtnDirSpaceRest"
 98h	DWORD	"getActualAvailDskSp"
 9Ch	DWORD	"cntOwnedFilesAndDirs"
 A0h	DWORD	"migFileInfo"
 A4h	DWORD	"volMigInfo"
 A8h	DWORD	"readMigFileData"
 ACh	DWORD	"getVolusageStats"
 B0h	DWORD	"getActualVolUsageStats"
 B4h	DWORD	"getDirUsageStats"
 B8h	DWORD	"NMFileReadsCount"
 BCh	DWORD	"NMFileWritesCount"
 C0h	DWORD	"mapPathToDirNumOrPhantom"
 C4h	DWORD	"stationsHasAccessRgtsGntedBelow"
 C8h	DWORD	"gtDataSteamLensFromPathStrBase"
 CCh	DWORD	"checkAndGetDirectoryEntry"
 D0h	DWORD	"getDeletedEntry"
 D4h	DWORD	"getOriginalNameSpace"
 D8h	DWORD	"getActualFileSize"
 DCh	DWORD	"verifyNameSpaceNumber"
 E0h	DWORD	"verifyDataStreamNumber"
 E4h	DWORD	"checkVolumeNumber"
 E8h	DWORD	"commitFile"
 ECh	DWORD	"VMGetDirectoryEntry"
 F0h	DWORD	"createDMFileEntry"
 F4h	DWORD	"renameNameSpaceEntry"
 F8h	DWORD	"logFile"
 FCh	DWORD	"releaseFile"
100h	DWORD	"clearFile"
104h	DWORD	"setVolumeFlag"
108h	DWORD	"clearVolumeFlag"
10Ch	DWORD	"getOriginalInfo"
110h	DWORD	"createMigratedDir"
114h	DWORD	"F3OpenCreate"
118h	DWORD	"F3InitFileSearch"
11Ch	DWORD	"F3ContinueFileSearch"
120h	DWORD	"F3RenameFile"
124h	DWORD	"F3ScanForTrustees"
128h	DWORD	"F3ObtainFileInfo"
12Ch	DWORD	"F3ModifyInfo"
130h	DWORD	"F3EraseFile"
134h	DWORD	"F3SetDirHandle"
138h	DWORD	"F3AddTrustees"
13Ch	DWORD	"F3DeleteTrustees"
140h	DWORD	"F3AllocDirHandle"
144h	DWORD	"F3ScanSalvagedFiles"
148h	DWORD	"F3RecoverSalvagedFiles"
14Ch	DWORD	"F3PurgeSalvageableFile"
150h	DWORD	"F3GetNSSpecificInfo"
154h	DWORD	"F3ModifyNSSpecificInfo"
158h	DWORD	"F3SearchSet"
15Ch	DWORD	"F3GetDirBase"
160h	DWORD	"F3QueryNameSpaceInfo"
164h	DWORD	"F3GetNameSpaceList"
168h	DWORD	"F3GetHugeInfo"
16Ch	DWORD	"F3SetHugeInfo"
170h	DWORD	"F3GetFullPathString"
174h	DWORD	"F3GetEffectiveDirectoryRights"
SeeAlso: #02500

Top
21F27BSF0A - INT 21 - Novell NetWare v4+ - GET LOADED NLMs
INT 21 - Novell NetWare v4+ - GET LOADED NLMs
	AX = F27Bh subfn 0Ah
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02502)
	ES:DI -> reply buffer (see #02503)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get NLMs Loaded" request buffer:
Offset	Size	Description	(Table 02502)
 00h	WORD	0005h (length of following data)
 02h	BYTE	0Ah (subfunction "Get NLMs Loaded")
 03h	DWORD	first NLM number to report
SeeAlso: #02503

Format of NetWare "Get NLMs Loaded" reply buffer:
Offset	Size	Description	(Table 02503)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	total number of NLMs
 0Ch	DWORD	number of NLM numbers following (max 50)
 10h 50 DWORDs	NLM numbers
SeeAlso: #02502

Top
21F27BSF0B - INT 21 - Novell NetWare v4+ - GET NLM INFORMATION
INT 21 - Novell NetWare v4+ - GET NLM INFORMATION
	AX = F27Bh subfn 0Bh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02504)
	ES:DI -> reply buffer (see #02505)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get NLM Information" request buffer:
Offset	Size	Description	(Table 02504)
 00h	WORD	0005h (length of following data)
 02h	BYTE	0Bh (subfunction "Get NLM Information")
 03h	DWORD	NLM number
SeeAlso: #02505

Format of NetWare "Get NLM Information" reply buffer:
Offset	Size	Description	(Table 02505)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	identification number
 0Ch	DWORD	flags
 10h	DWORD	NLM type (see #02506)
 14h	DWORD	parent identifier
 18h	DWORD	major version
 1Ch	DWORD	minor version
 20h	DWORD	revision
 24h	DWORD	year
 28h	DWORD	month
 2Ch	DWORD	day
 30h	DWORD	bytes available for allocation
 34h	DWORD	"allocFreeCount"
 38h	DWORD	last garbage collection
 3Ch	DWORD	message language
 40h	DWORD	number of referenced public identifiers
 44h 200 BYTEs	NLM strings: filename, NLM name, copyright
SeeAlso: #02504

(Table 02506)
Values for NetWare NLM type:
 0001h	LAN
 0002h	DSK
 0003h	NAM
 0004h	utility NLM
 0005h	MSL
 0006h	operating system NLM
 0007h	paged NLM
 0008h	HAM
 0009h	CDM
 000Ah	file system NLM
 000Bh	real mode NLM
 000Ch	hidden NLM
SeeAlso: #02505

Top
21F27BSF0D - INT 21 - Novell NetWare v4+ - GET OS VERSION INFORMATION
INT 21 - Novell NetWare v4+ - GET OS VERSION INFORMATION
	AX = F27Bh subfn 0Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02507)
	ES:DI -> reply buffer (see #02508)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get OS Version Information" request buffer:
Offset	Size	Description	(Table 02507)
 00h	WORD	0001h (length of following data)
 02h	BYTE	0Dh (subfunction "Get OS Version Information")
SeeAlso: #02508

Format of NetWare "Get OS Version Information" reply buffer:
Offset	Size	Description	(Table 02508)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	BYTE	operating system major version
 09h	BYTE	operating system minor version
 0Ah	BYTE	operating system revision number
 0Bh	BYTE	accounting version
 0Ch	BYTE	VAP version
 0Dh	BYTE	queueing version
 0Eh	BYTE	security restrictions level
 0Fh	BYTE	bridging support
 10h	DWORD	maximum number of volumes
 14h	DWORD	number of connection slots
 18h	DWORD	maximum number of logged-in connections
 1Ch	DWORD	maximum number of name spaces
 20h	DWORD	maximum number of LANs
 24h	DWORD	maximum number of media types
 28h	DWORD	maximum number of protocols
 2Ch	DWORD	maximum subdirectory tree depth
 30h	DWORD	maximum number of data streams
 34h	DWORD	maximum number of spooled printers
 38h	DWORD	serial number
 3Ch	WORD	application number
SeeAlso: #02507

Top
21F27BSF14 - INT 21 - Novell NetWare v4+ - GET ACTIVE LAN BOARD LIST
INT 21 - Novell NetWare v4+ - GET ACTIVE LAN BOARD LIST
	AX = F27Bh subfn 14h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02509)
	ES:DI -> reply buffer (see #02510)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get Active LAN Board List" request buffer:
Offset	Size	Description	(Table 02509)
 00h	WORD	0005h (length of following data)
 02h	BYTE	14h (subfunction "Get Active LAN Board List")
 03h	DWORD	start number
SeeAlso: #02510

Format of NetWare "Get Active LAN Board List" reply buffer:
Offset	Size	Description	(Table 02510)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	maximum number of LANs
 0Ch	DWORD	number of LAN board numbers returned
 10h 50 DWORDs	board numbers
SeeAlso: #02509

Top
21F27BSF15 - INT 21 - Novell NetWare v4+ - GET LAN CONFIGURATION
INT 21 - Novell NetWare v4+ - GET LAN CONFIGURATION
	AX = F27Bh subfn 15h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02511)
	ES:DI -> reply buffer (see #02512)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F27Bh/SF=16h

Format of NetWare "Get LAN Configuration" request buffer:
Offset	Size	Description	(Table 02511)
 00h	WORD	0005h (length of following data)
 02h	BYTE	15h (subfunction "Get LAN Configuration")
 03h	DWORD	LAN board number
SeeAlso: #02512

Format of NetWare "Get LAN Configuration" reply buffer:
Offset	Size	Description	(Table 02512)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	BYTE	driver configuration major version
 09h	BYTE	driver configuration minor version
 0Ah  6 BYTEs	driver node address
 10h	WORD	driver mode flags
 12h	WORD	driver board number
 14h	WORD	driver board instance
 16h	DWORD	driver maximum size
 1Ah	DWORD	driver maximum receive size
 1Eh	DWORD	driver receive size
 22h  3 DWORDs	reserved
 2Eh	WORD	driver card ID
 30h	WORD	driver transport time
 32h	DWORD	driver source routing
 36h	WORD	driver line speed
 38h	WORD	driver reserved
 3Ah	BYTE	driver major version
 3Bh	BYTE	driver minor version
 3Ch	WORD	driver flags
 3Eh	WORD	driver send retries
 40h	DWORD	driver link
 44h	WORD	driver sharing flags
 46h	WORD	driver slot
 48h  4 WORDs	driver I/O port and lengths
 50h	DWORD	driver memory decode 0
 54h	WORD	driver length 0
 56h	DWORD	driver memory decode 1
 5Ah	WORD	driver length 1
 5Ch  2 BYTEs	driver's interrupts
 5Eh  2 BYTEs	driver's DMA usage
 60h 18 BYTEs	driver's logical name
 72h 14 BYTEs	driver I/O reserved
 80h 128 BYTEs	driver card name
100h 40 BYTEs	driver media type
128h 180 BYTEs	driver custom variables
SeeAlso: #02511

Top
21F27BSF16 - INT 21 - Novell NetWare v4+ - GET LAN COMMON COUNTERS
INT 21 - Novell NetWare v4+ - GET LAN COMMON COUNTERS
	AX = F27Bh subfn 16h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02513)
	ES:DI -> reply buffer (see #02514)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F27Bh/SF=15h

Format of NetWare "Get LAN Common Counters" request buffer:
Offset	Size	Description	(Table 02513)
 00h	WORD	0009h (length of following data)
 02h	BYTE	16h (subfunction "Get LAN Common Counters")
 03h	DWORD	LAN board number
 07h	DWORD	starting block number (set to 00000000h for first call)
SeeAlso: #02514

Format of NetWare "Get LAN Common Counters" reply buffer:
Offset	Size	Description	(Table 02514)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	BYTE	statistics major version
 09h	BYTE	statistics minor version
 0Ah	DWORD	number of generic counters
 0Eh	DWORD	number of counter blocks
 12h	DWORD	number of custom variables
 16h	DWORD	next counter block number
 1Ah	DWORD	"notSupportedMask"
 1Eh	DWORD	total number of packets tranmitted
 22h	DWORD	total number of packets received
 26h	DWORD	number of times no ECBs were available
 2Ah	DWORD	number of transmitted packets which were too large
 2Eh	DWORD	number of transmitted packets which were too small
 32h	DWORD	number of packet receive overflows
 36h	DWORD	number of received packets which were too large
 3Ah	DWORD	number of received packets which were too small
 3Eh	DWORD	number of miscellaneous transmitted-packet errors
 42h	DWORD	number of miscellaneous received-packet errors
 46h	DWORD	number of times transmission retried
 4Ah	DWORD	number of checksum errors
 4Eh	DWORD	number of hardware receive mismatches
 52h 50 BYTEs	reserved
SeeAlso: #02513

Top
21F27BSF29 - INT 21 - Novell NetWare v4+ - GET PROTOCOL STACK BY BOARD
INT 21 - Novell NetWare v4+ - GET PROTOCOL STACK BY BOARD
	AX = F27Bh subfn 29h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02515)
	ES:DI -> reply buffer (see #02516)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get Protocol Stack by Board" request buffer:
Offset	Size	Description	(Table 02515)
 00h	WORD	0005h (length of following data)
 02h	BYTE	29h (subfunction "Get Protocol Stack by Board")
 03h	DWORD	LAN board number
SeeAlso: #02516

Format of NetWare "Get Protocol Stack by Board" reply buffer:
Offset	Size	Description	(Table 02516)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	WORD	number of stacks listed (max 50)
 0Ah 50 DWORDs	protocol identifiers
SeeAlso: #02515

Top
21F27BSF33 - INT 21 - Novell NetWare v4+ - GET ROUTER INFO
INT 21 - Novell NetWare v4+ - GET ROUTER INFO
	AX = F27Bh subfn 33h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02517)
	ES:DI -> reply buffer (see #02518)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F27Bh/SF=35h

Format of NetWare "Get Router Info" request buffer:
Offset	Size	Description	(Table 02517)
 00h	WORD	0005h (length of following data)
 02h	BYTE	33h (function "Get Router Info")
 03h	DWORD	network number
SeeAlso: #02518

Format of NetWare "Get Router Info" reply buffer:
Offset	Size	Description	(Table 02518)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	network number
 0Ch	WORD	hops to net
 0Eh	WORD	network status
 10h	WORD	time to net
SeeAlso: #02517,#02519

Top
21F27BSF35 - INT 21 - Novell NetWare v4+ - GET KNOWN NETWORKS INFO
INT 21 - Novell NetWare v4+ - GET KNOWN NETWORKS INFO
	AX = F27Bh subfn 35h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02519)
	ES:DI -> reply buffer (see #02520)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F27Bh/SF=33h,AX=F27Bh/SF=38h

Format of NetWare "Get Router Info" request buffer:
Offset	Size	Description	(Table 02519)
 00h	WORD	0005h (length of following data)
 02h	BYTE	35h (function "Get Known Networks Info")
 03h	DWORD	start number (00000000h)
SeeAlso: #02520

Format of NetWare "Get Router Info" reply buffer:
Offset	Size	Description	(Table 02520)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	number of records following (max 20)
 0Ch	var	array of network info records
		Offset	Size	Description
		 00h	WORD	network number
		 04h	WORD	hops to net
		 06h	WORD	network status
		 08h	WORD	time to net
SeeAlso: #02517,#02519

Top
21F27BSF38 - INT 21 - Novell NetWare v4+ - GET KNOWN SERVERS INFO
INT 21 - Novell NetWare v4+ - GET KNOWN SERVERS INFO
	AX = F27Bh subfn 38h
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02521)
	ES:DI -> reply buffer (see #02522)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled
SeeAlso: AX=F27Bh/SF=35h

Format of NetWare "Get Known Servers" request buffer:
Offset	Size	Description	(Table 02521)
 00h	WORD	0009h (length of following data)
 02h	BYTE	38h (function "Get Known Servers")
 03h	DWORD	start number
 07h	DWORD	server type
SeeAlso: #02522

Format of NetWare "Get Known Servers" reply buffer:
Offset	Size	Description	(Table 02522)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	number of records following (max 20)
 0Ch	var	server record(s)
		Offset	Size	Description
		 00h	DWORD	network number
		 04h  6 BYTEs	node number
		 0Ah	WORD	socket number
		 0Ch	WORD	hops to server
		 0Eh 48 BYTEs	object name
SeeAlso: #02521

Top
21F27BSF3C - INT 21 - Novell NetWare v4+ - GET SERVER SET COMMANDS INFO
INT 21 - Novell NetWare v4+ - GET SERVER SET COMMANDS INFO
	AX = F27Bh subfn 3Ch
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02523)
	ES:DI -> reply buffer (see #02524)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get Server Set Commands Info" request packet:
Offset	Size	Description	(Table 02523)
 00h	WORD	0005h (length of following data)
 02h	BYTE	3Ch (subfunction "Get Server Set Commands Info")
 03h	DWORD	start sequence number
SeeAlso: #02524

Format of NetWare "Get Server Set Commands Info" packet:
Offset	Size	Description	(Table 02524)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	number of set commands
 0Ch	DWORD	next sequence number
 10h	DWORD	set command type
 14h	DWORD	set command category
 18h	DWORD	set command flags
 1Ch	BYTE	length of set command name
 1Dh  N BYTEs	set command name
	BYTE	number of set command values
      N BYTEs	set command values
SeeAlso: #02523

Top
21F27BSF3D - INT 21 - Novell NetWare v4+ - GET SERVER SET CATEGORIES
INT 21 - Novell NetWare v4+ - GET SERVER SET CATEGORIES
	AX = F27Bh subfn 3Dh
	CX = length of request buffer in bytes
	DX = length of reply buffer in bytes
	DS:SI -> request buffer (see #02525)
	ES:DI -> reply buffer (see #02526)
Return: AL = status (see #02860 at INT 2F/AX=7A20h/BX=0000h)
	reply buffer filled

Format of NetWare "Get Server Set Categories" request packet:
Offset	Size	Description	(Table 02525)
 00h	WORD	0005h (length of following data)
 02h	BYTE	3Dh (subfunction "Get Server Set Categories")
 03h	DWORD	start sequence number
SeeAlso: #02526

Format of NetWare "Get Server Set Categories" reply packet:
Offset	Size	Description	(Table 02526)
 00h	DWORD	current server time
 04h	BYTE	vconsole version
 05h	BYTE	vconsole revision
 06h	WORD	reserved
 08h	DWORD	number of set categories
 0Ch	DWORD	next sequence number
 10h	BYTE	length of category name
 11h  N BYTEs	category name
SeeAlso: #02525

Top
21F2AA - INT 21 - VIRUS - "PcVrsDs" - INSTALLATION CHECK
INT 21 - VIRUS - "PcVrsDs" - INSTALLATION CHECK
	AX = F2AAh
Return: AH = AAh if resident
SeeAlso: AH=F1h"VIRUS",AH=F3h"VIRUS"

Top
21F3 - INT 21 - Novell NetWare - FILE SERVICES - FILE SERVER FILE COPY
INT 21 - Novell NetWare - FILE SERVICES - FILE SERVER FILE COPY
	AH = F3h
	ES:DI -> request buffer (see #02527)
Return: AL = status/error code
	CX:DX = number of bytes copied
Notes:	this function is supported by Advanced NetWare 2.0+
	both source and destination must be on the same file server
SeeAlso: AH=3Ch,AH=3Fh"DOS"

Format of NetWare "File Server File Copy" request buffer:
Offset	Size	Description	(Table 02527)
 00h	WORD	source file handle (as returned by AH=3Ch or AH=3Dh)
 02h	WORD	destination file handle
 04h	DWORD	starting offset in source
 08h	DWORD	starting offset in destination
 0Ch	DWORD	number of bytes to copy

Top
21F3 - INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
	AH = F3h
	AL = character
Return: AL = 00h successful
	     01h buffer full (128 characters)
SeeAlso: AH=E3h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"

Top
21F3 - INT 21 - VIRUS - "Carfield" - INSTALLATION CHECK
INT 21 - VIRUS - "Carfield" - INSTALLATION CHECK
	AH = F3h
Return: AX = 0400h if resident
SeeAlso: AH=D5h"Carfield",AX=F2AAh,AH=F7h"VIRUS"

Top
21F400 - INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
	AX = F400h
Return: AL = program status
	    00h if DoubleDOS not present
	    01h if running in visible DoubleDOS partition
	    02h if running in the invisible DoubleDOS partition
SeeAlso: AX=E400h,AH=F5h"DoubleDOS"

Top
21F5 - INT 21 - DoubleDOS - OTHER PROGRAM STATUS
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
	AH = F5h
Return: AL = program status
	    00h no program in other partition
	    01h program in other partition is running
	    02h program in other partition is suspended
SeeAlso: AH=E5h"DoubleDOS",AX=F400h"DoubleDOS"

Top
21F7 - INT 21 - VIRUS - "GP1" - INSTALLATION CHECK
INT 21 - VIRUS - "GP1" - INSTALLATION CHECK
	AH = F7h
Return: AX = 0300h if resident
SeeAlso: AH=F0h"VIRUS",AH=F9h"VIRUS"

Top
21F8 - INT 21 - DOS v2.11-2.13 - SET OEM INT 21 HANDLER
INT 21 - DOS v2.11-2.13 - SET OEM INT 21 HANDLER
	AH = F8h
	DS:DX -> OEM INT 21 handler for functions F9h to FFh
		 FFFFh:FFFFh disables OEM handler
Notes:	this function is known to be supported by Toshiba T1000 ROM MS-DOS
	  v2.11, Sanyo MS-DOS v2.11, and TI Professional Computer DOS v2.13
	at least potentially this is still available with (OEM versions??? of)
	  MS-DOS 6.0.
	calls to AH=F9h through AH=FFH will return AL=00h if no handler set
	the user handler is called immediately on entry to the main DOS INT 21h
	  function dispatcher with interrupts disabled and all registers and
	  stack exactly as set by caller; it should exit with IRET
SeeAlso: AH=F9h"OEM"

Top
21F8 - INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
	AH = F8h
	AL = program for which to set flags
	    00h this program
	    01h other program
	DX = keyboard control flags (see #02088 at AH=E8h"DoubleDOS")
Return: DX = previous flags
Notes:	disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
	  disabling any of the other keystrokes disables them completely
	this function is identical to AH=E8h
SeeAlso: AH=E8h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"

Top
21F9 - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
	AH = F9h
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FAh"OEM"

Top
21F9 - INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
	AH = F9h
	AL = priority
	    00h visible program gets 70%, invisible gets 30% (default)
	    01h visible program gets 50%, invisible gets 50%
	    02h visible program gets 30%, invisible gets 70%
	    03h Top program gets 70%, bottom program gets 30%
	    04h Top program gets 30%, bottom program gets 70%
	    05h get current priority
		Return: AL = priority setting
Note:	identical to AH=E9h
SeeAlso: AH=E9h"DoubleDOS",AH=FAh"DoubleDOS",AH=FBh"DoubleDOS"

Top
21F9 - INT 21 - VIRUS - "Satans-Bug" - INSTALLATION CHECK
INT 21 - VIRUS - "Satans-Bug" - INSTALLATION CHECK
	AH = F9h
Return: AX = AC0Ah if resident
SeeAlso: AH=F7h"VIRUS",AH=FBh"VIRUS",AX=FEDCh"VIRUS"

Top
21FA - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
	AH = FAh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=F9h"OEM",AH=FBh"OEM"

Top
21FA - INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
	AH = FAh
Return: task switching turned off
SeeAlso: AH=EAh"DoubleDOS",AH=F9h"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"

Top
21FA - INT 21 - VIRUS - "Cinderella 2" - INSTALLATION CHECK
INT 21 - VIRUS - "Cinderella 2" - INSTALLATION CHECK
	AH = FAh
Return: AH = F9h if resident
SeeAlso: AH=F0h"VIRUS",AX=FBA0h"VIRUS"

Top
21FA--DX5945 - INT 21 U - PC Tools v7+ VDEFEND, VSAFE, VWATCH - API
INT 21 U - PC Tools v7+ VDEFEND, VSAFE, VWATCH - API
	AH = FAh
	DX = 5945h
	AL = function (00h-02h for VDEFEND, 00h-07h for VSAFE and VWATCH)
Return: varies by function
Note:	this API is identical to the API on INT 13/AH=FAh and INT 16/AH=FAh,
	  so it is listed in its entirety only under INT 16/AX=FA00h and
	  following
SeeAlso: INT 13/AX=FA00h,INT 16/AX=FA00h

Top
21FAFF - INT 21 U - IBM PC-DOS - KEYBGK - SELECT KEYBOARD LAYOUT
INT 21 U - IBM PC-DOS - KEYBGK - SELECT KEYBOARD LAYOUT
	AX = FAFFh
	CL = keyboard layout
	    31h keyboard 319
	    32h keyboard 220
	BX = code page (869 or 813 decimal)
Return: AL = F1h if installed
	DX destroyed

Top
21FB - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
	AH = FBh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FAh"OEM",AH=FCh"OEM"

Top
21FB - INT 21 - DoubleDOS - TURN ON TASK SWITCHING
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
	AH = FBh
Return: task switching turned on
SeeAlso: AH=EBh"DoubleDOS",AH=F9h"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"

Top
21FB - INT 21 - VIRUS - "Cinderella" - INSTALLATION CHECK
INT 21 - VIRUS - "Cinderella" - INSTALLATION CHECK
	AH = FBh
Return: AH = 00h if resident
SeeAlso: AH=F9h"VIRUS",AH=FAh"VIRUS",AX=FB0Ah

Top
21FB0A - INT 21 - VIRUS - "dBASE" - INSTALLATION CHECK
INT 21 - VIRUS - "dBASE" - INSTALLATION CHECK
	AX = FB0Ah
Return: AX = 0AFBh if resident
SeeAlso: AH=FBh"VIRUS",AX=FBA0h"VIRUS",AH=FCh"VIRUS"

Top
21FBA0 - INT 21 - VIRUS - "Groove" - INSTALLATION CHECK
INT 21 - VIRUS - "Groove" - INSTALLATION CHECK
	AX = FBA0h
Return: AX = 0ABFh if resident
SeeAlso: AX=FB0Ah"VIRUS",AX=FBFBh"VIRUS"

Top
21FBFB - INT 21 - VIRUS - "Dir.1367" - INSTALLATION CHECK
INT 21 - VIRUS - "Dir.1367" - INSTALLATION CHECK
	AX = FBFBh
Return: AX = BFBFh if resident
SeeAlso: AX=FBA0h"VIRUS",AH=FCh"VIRUS"

Top
21FC - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
	AH = FCh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FBh"OEM",AH=FDh"OEM"

Top
21FC - INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
	AH = FCh
Return: ES = segment of virtual screen
Desc:	Determine the address of the virtual screen to which the program
	  should write instead of the actual video memory, so that the
	  multitasked programs do not interfere with each other's output.
Notes:	screen address can change if task-switching is on!
	identical to AH=ECh
SeeAlso: AH=ECh"DoubleDOS",INT FC"DoubleDOS"

Top
21FC - INT 21 - VIRUS - "Troi" - INSTALLATION CHECK
INT 21 - VIRUS - "Troi" - INSTALLATION CHECK
	AH = FCh
Return: AL = A5h if resident
SeeAlso: AX=FBA0h"VIRUS",AX=FC03h"VIRUS",AH=FDh"VIRUS"

Top
21FC03 - INT 21 - VIRUS - "Invisible" - INSTALLATION CHECK
INT 21 - VIRUS - "Invisible" - INSTALLATION CHECK
	AX = FC03h
Return: AX = 03FCh if resident
SeeAlso: AH=FCh"VIRUS",AH=FDh"VIRUS"

Top
21FD - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
	AH = FDh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FCh"OEM",AH=FEh"OEM"

Top
21FD - INT 21 - VIRUS - "Border" - INSTALLATION CHECK
INT 21 - VIRUS - "Border" - INSTALLATION CHECK
	AH = FDh
Return: AH = 13h if resident
SeeAlso: AH=FCh"VIRUS",AX=FDACh"VIRUS",AH=FEh"VIRUS"

Top
21FD12BX3457 - INT 21 - Gravis UltraSound - MegaEm/MEGA_EM - INSTALLATION CHECK
INT 21 - Gravis UltraSound - MegaEm/MEGA_EM - INSTALLATION CHECK
	AX = FD12h
	BX = 3457h
Return: AX = 5678h if installed
	BX = 1235h if v1.x or v2.x installed
	    CL = interrupt vector used by MegaEm (default 81h)
	BX = 1237h if v3.x installed
	    CL = interrupt vector used by MegaEm (default 81h)
	    DX = version number
Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
	  emulator for the Gravis UltraSound
SeeAlso: INT 2F/AX=CD00h/BX=464Fh,INT 7E/AX=00FEh"SBOS",INT 81/AX=0200h

Top
21FDAC - INT 21 - VIRUS - "Delwin" - INSTALLATION CHECK
INT 21 - VIRUS - "Delwin" - INSTALLATION CHECK
	AX = FDACh
Return: AX = 02E3h if resident
SeeAlso: AH=FDh"VIRUS",AH=FEh"VIRUS"

Top
21FE - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
	AH = FEh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FDh"OEM",AH=FFh"OEM"

Top
21FE - INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
	AH = FEh
	AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=EEh"DoubleDOS",INT FE"DoubleDOS"

Top
21FE - INT 21 - VIRUS - "483" - INSTALLATION CHECK
INT 21 - VIRUS - "483" - INSTALLATION CHECK
	AH = FEh
Return: AH = 00h if resident
SeeAlso: AX=FDACh"VIRUS",AX=FE01h

Top
21FE01 - INT 21 - VIRUS - "Flip" - INSTALLATION CHECK
INT 21 - VIRUS - "Flip" - INSTALLATION CHECK
	AX = FE01h
Return: AX = 01FEh if resident
SeeAlso: AH=FEh"VIRUS",AX=FE02h

Top
21FE02 - INT 21 - VIRUS - "2468"/"Tequila" - INSTALLATION CHECK
INT 21 - VIRUS - "2468"/"Tequila" - INSTALLATION CHECK
	AX = FE02h
Return: AX = 01FDh if resident
SeeAlso: AX=FE01h,AX=FE03h,AX=FEDCh"VIRUS"

Top
21FE03 - INT 21 - VIRUS - "2468"/"Tequila" - DISPLAY VIRUS MESSAGE
INT 21 - VIRUS - "2468"/"Tequila" - DISPLAY VIRUS MESSAGE
	AX = FE03h
SeeAlso: AX=FE02h,AX=FEADh

Top
21FEAD - INT 21 - VIRUS - "Shifting Objective" - INSTALLATION CHECK
INT 21 - VIRUS - "Shifting Objective" - INSTALLATION CHECK
	AX = FEADh
Return: AX = D00Dh if resident
SeeAlso: AX=FE03h,AX=FEDCh"VIRUS"

Top
21FEDC - INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
	AX = FEDCh
Return: AX = CDEFh if installed
Program: the PCMANAGE/DCOMPRES combination from PC Magazine permits
	  infrequently-used files to be compressed to save space and
	  transparently expanded when accessed
SeeAlso: AH=DCh,INT 2D/AL=10h"dLite"

Top
21FEDC - INT 21 - VIRUS - "Black Monday" - INSTALLATION CHECK
INT 21 - VIRUS - "Black Monday" - INSTALLATION CHECK
	AX = FEDCh
Return: AL = DCh if resident
SeeAlso: AX=FE02h,AX=FEFEh

Top
21FEFE - INT 21 - VIRUS - "CIDER" - INSTALLATION CHECK
INT 21 - VIRUS - "CIDER" - INSTALLATION CHECK
	AX = FEFEh
Return: SI = 1994h if resident
SeeAlso: AX=FEDCh"VIRUS",AH=FFh"VIRUS"

Top
21FF - INT 21 - DOS v2.11-2.13 - OEM FUNCTION
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
	AH = FFh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FEh"OEM"

Top
21FF - INT 21 - CED (Command EDitor) - INSTALLABLE COMMANDS
INT 21 - CED (Command EDitor) - INSTALLABLE COMMANDS
	AH = FFh
	AL = subfunction
	    00h add installable command
		BL = mode
		    bit 0 = 1 callable from DOS prompt
		    bit 1 = 1 callable from application
		DS:SI -> CR-terminated command name
		ES:DI -> FAR routine entry point
	    01h remove installable command
		DS:SI -> CR-terminated command name
	    02h reserved, may be used to test for CED installation
Return: CF clear if successful
	CF set on error
	    AX = error code
		01h invalid function
		02h command not found (subfunction 01h only)
		08h insufficient memory (subfunction 00h only)
		0Eh bad data (subfunction 00h only)
	AH = FFh if CED not installed
Program: CED is a shareware DOS command-line enhancer by Christopher J. Dunford
SeeAlso: AX=0A00h

Top
21FF - INT 21 - DJ GO32.EXE 80386+ DOS extender - DOS EXTENSIONS
INT 21 - DJ GO32.EXE 80386+ DOS extender - DOS EXTENSIONS
	AH = FFh
	AL = function
	    01h create file
	    02h open file
	    03h get file statistics
	    04h get time of day
	    05h set time of day
	    06h stat
	    07h system
Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
	  GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
SeeAlso: INT 10/AH=FFh"GO32"

Top
21FF - INT 21 - DOSED.COM - INSTALLATION CHECK
INT 21 - DOSED.COM - INSTALLATION CHECK
	AH = FFh
	DS:SI -> "DOSED"
	ES = 0000h
Return: ES:DI -> "DOSED" if installed
Program: DOSED is a free DOS commandline editor/history buffer by Sverre H.
	  Huseby

Top
21FF - INT 21 - VIRUS - "Sunday", "Tumen 0.5", "Hero" - INSTALLATION CHECK
INT 21 - VIRUS - "Sunday", "Tumen 0.5", "Hero" - INSTALLATION CHECK
	AH = FFh
Return: AH = 00h if "Tumen 0.5" or "Hero" resident
	AX = 0400h if "Sunday" resident
SeeAlso: AX=FEDCh"VIRUS",AX=FF01h"VIRUS"

Top
21FF - INT 21 UP - Rational Systems DOS/4GW - API
INT 21 UP - Rational Systems DOS/4GW - API
	AH = FFh
	DH = function (00h-17h) (also see separate entries below)
	DL = subfunction or argument
Return: CF clear if valid function number
	    AX = status???
	CF set if invalid function
SeeAlso: INT 15/AX=BFDCh

Top
21FF--DH00 - INT 21 UP - Rational Systems DOS/4GW - GET VERSION???
INT 21 UP - Rational Systems DOS/4GW - GET VERSION???
	AH = FFh
	DH = 00h
	DL = ??? (78h seen)
Return: CF clear
	EAX = 4734FFFFh (high word is byte-swapped "4G") if DOS/4G installed
Note:	Quarterdeck's DESQview/X X Toolkit library uses this call to determine
	  whether the direct-mapped linear 4GB segment's selector is 34h or 38h
SeeAlso: INT 21/AH=FFh/DH=00h"DOS/4GW"

Top
21FF--DH02 - INT 21 UP - Rational Systems DOS/4GW - SET ???
INT 21 UP - Rational Systems DOS/4GW - SET ???
	AH = FFh
	DH = 02h
	DL = ???
Return: CF clear

Top
21FF--DH05 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 05h
	BX = ???
Return: ???

Top
21FF--DH06 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 06h
	BX = ???
Return: ???

Top
21FF--DH07 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 07h
	BX = ???
Return: ???

Top
21FF--DH08 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 08h
	BX = ???
	CX = ???
	ES = ???
Return: ???

Top
21FF--DH09 - INT 21 UP - Rational Systems DOS/4GW - GET ???
INT 21 UP - Rational Systems DOS/4GW - GET ???
	AH = FFh
	DH = 09h
Return: ES:BX -> ???

Top
21FF--DH0A - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 0Ah
	AL = ???
	BX = ???
	CX = ???
Return: ES = ??? or 0000h

Top
21FF--DH0B - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 0Bh
	AL = ???
	BX = ???
	CX = ???
Return: ???

Top
21FF--DH0C - INT 21 UP - Rational Systems DOS/4GW - GET/SET ???
INT 21 UP - Rational Systems DOS/4GW - GET/SET ???
	AH = FFh
	DH = 0Ch
	DL = ??? (00h or 01h)
Return: CF clear if successful
	    AL = previous value of ???
	CF set on error (DL out of range)
	    AX = FFFFh

Top
21FF--DH0D - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 0Dh
	???
Return: ???

Top
21FF--DH0E - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 0Eh
Return: DX:AX -> XBRK structure (see #00508 at INT 15/AX=BF02h)
	BX = ???
	CX = ???
SeeAlso: INT 15/AX=BF02h

Top
21FF--DH0F - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 0Fh
	???
Return: ???

Top
21FF--DH10 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 10h
	AL = ???
	BX = ???
	CX = ???
	DI = ???
	SI = ???
Return: ???
Note:	among other things, frees two memory blocks via INT 21/AH=49h

Top
21FF--DH11 - INT 21 UP - Rational Systems DOS/4GW - NOP
INT 21 UP - Rational Systems DOS/4GW - NOP
	AH = FFh
	DH = 11h

Top
21FF--DH12 - INT 21 UP - Rational Systems DOS/4GW - EXCHANGE ??? POINTERS
INT 21 UP - Rational Systems DOS/4GW - EXCHANGE ??? POINTERS
	AH = FFh
	DH = 12h
	DS:SI -> new ???
	ES:DI -> new ???
Return: DS:SI -> previous ???
	ES:DI -> previous ???

Top
21FF--DH13 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 13h
	AL = ???
	ES = ???
Return: ???

Top
21FF--DH14 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 14h
	BX = ???
	CX = ???
Return: CF clear
	    AX = ???
	    DX = ???

Top
21FF--DH15 - INT 21 UP - Rational Systems DOS/4GW - GET ??? FUNCTIONS
INT 21 UP - Rational Systems DOS/4GW - GET ??? FUNCTIONS
	AH = FFh
	DH = 15h
Return: CF clear
	    DX:AX -> FAR function for ???
	    CX:BX -> FAR function for ???
	    SI:DI -> FAR function for ???

Top
21FF--DH16 - INT 21 UP - Rational Systems DOS/4GW - GET ???
INT 21 UP - Rational Systems DOS/4GW - GET ???
	AH = FFh
	DH = 16h
Return: AX = ???

Top
21FF--DH17 - INT 21 UP - Rational Systems DOS/4GW - ???
INT 21 UP - Rational Systems DOS/4GW - ???
	AH = FFh
	DH = 17h
	AL = ???
	DL = ???
Return: ???

Top
21FF00 - INT 21 - TopWare Network OS v5.10+ - GET SYSTEM INFORMATION
INT 21 - TopWare Network OS v5.10+ - GET SYSTEM INFORMATION
	AX = FF00h
	CL = what to get
	    00h user information (see #02528)
	    01h drive mapping (see #02529)
	    02h printer server(s)
	    05h local DOS drive number
Return: ES:BX -> desired information
Program: TopWare Network Operating System is manufactured by Grand Computer
	  Company
Note:	this call is only supported on Workstations, not on the server
SeeAlso: AX=FF04h,INT 2F/AX=FF00h

Format of TopWare user information:
Offset	Size	Description	(Table 02528)
 00h	BYTE	node ID
 01h 15 BYTEs	user name
 10h	WORD	user number
 12h	BYTE	group number

Format of TopWare drive mapping [array]:
Offset	Size	Description	(Table 02529)
 00h	BYTE	bits 6-0: drive number (1=A:, etc.)
		bit 7: this is a server drive
 01h  3 BYTEs	mapping drive (for example, "C:\")
 04h 64 BYTEs	current directory

Top
21FF00DX0078 - INT 21 - Rational Systems DOS/4G - INSTALLATION CHECK
INT 21 - Rational Systems DOS/4G - INSTALLATION CHECK
	AX = FF00h
	DX = 0078h
Return: AL <> 00h if installed
	    GS = segment of kernel if nonzero
SeeAlso: INT 15/AX=BF02h

Top
21FF01 - INT 21 - VIRUS - "Drop" - INSTALLATION CHECK
INT 21 - VIRUS - "Drop" - INSTALLATION CHECK
	AX = FF01h
Return: AX = 01FFh if resident
SeeAlso: AH=FEh"VIRUS",AX=FF0Fh"FLU_SHOT"

Top
21FF04 - INT 21 - TopWare Network OS v5.10+ - GET/SET DEFAULT FILE PROTECTION ATTRIBS
INT 21 - TopWare Network OS v5.10+ - GET/SET DEFAULT FILE PROTECTION ATTRIBS
	AX = FF04h
	CL = function
	    00h get protections
		Return: BH = read attribute
			BL = write attribute
	    01h set protections
		BH = read attribute
		BL = write attribute
Note:	this function is supported only on Workstations, not on the server
SeeAlso: AX=FF00h"TopWare"

Top
21FF0F - INT 21 - FLU_SHOT+ v1.83 - INSTALLATION CHECK
INT 21 - FLU_SHOT+ v1.83 - INSTALLATION CHECK
	AX = FF0Fh
Return: AX = 0101h if resident
Program: FLU_SHOT+ is an antivirus/antitrojan program by Ross M. Greenberg and
	  Software Concepts Design
Note:	the "PSQR/1720" virus calls this function to determine whether
	  FLU_SHOT+ is present
SeeAlso: AH=FFh"VIRUS",AX=FF10h"VIRUS"

Top
21FF10 - INT 21 - VIRUS - "Twins" - INSTALLATION CHECK
INT 21 - VIRUS - "Twins" - INSTALLATION CHECK
	AX = FF10h
Return: AL = 07h if resident
SeeAlso: AX=FF0Fh,AX=FFFEh

Top
21FF80DHFF - INT 21 - TopWare Network OS v5.10+ - SEND MESSAGE
INT 21 - TopWare Network OS v5.10+ - SEND MESSAGE
	AX = FF80h
	DH = FFh
	DL = destination address (FFh for broadcast)
	CX = message length (max 2000)
	DS:SI -> message to be sent (see #02530)
Return: nothing
Program: TopWare Network Operating System is manufactured by Grand Computer
	  Company
Notes:	this function is supported on both Workstations and the server
	there is no guarantee that the message will be received correctly, or
	  at all, by the destination

Format of TopWare message:
Offset	Size	Description	(Table 02530)
 00h	BYTE	type code
		07h TopSend
		11h user application
		other reserved for TopWare
 01h	var	data
Note:	sending messages with a type code other than 11h will cause
	  unpredictable results

Top
21FF82 - INT 21 - TopWare Network OS v5.10+ - GET STATION ADDRESS
INT 21 - TopWare Network OS v5.10+ - GET STATION ADDRESS
	AX = FF82h
Return: AL = station address
Note:	this function is supported on both Workstations and the server
SeeAlso: AX=FF91h

Top
21FF8C - INT 21 - TopWare Network OS v5.10+ - GET STATUS OF TopShow/Emulated FUNCTION
INT 21 - TopWare Network OS v5.10+ - GET STATUS OF TopShow/Emulated FUNCTION
	AX = FF8Ch
	BL = subfunction
	    00h get TopShow status
	    FFh get Emulated status
Return: AL = status
	    00h not installed
	    01h already installed

Top
21FF8D - INT 21 - TopWare Network OS v5.10+ - CALL TopShow FUNCTION
INT 21 - TopWare Network OS v5.10+ - CALL TopShow FUNCTION
	AX = FF8Dh
	CH = monochrome flag (01h monochrome, 00h not monochrome)
	CL = screen mode of station to be viewed (see #02531)
	BL = graphic page number for monochrome
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FF8Eh,AX=FFCFh

(Table 02531)
Values for TopWare screen mode:
 00h	text mode
 01h	720x348
 02h	640x408
 03h	720x352
 04h	640x390
 05h	reserved

Top
21FF8E - INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
	AX = FF8Eh
Return: AL = 00h (successful, TopShow removed)
SeeAlso: AX=FF8Dh

Top
21FF91 - INT 21 - TopWare Network OS v5.10+ - GET FILE SERVER STATION NUMBER
INT 21 - TopWare Network OS v5.10+ - GET FILE SERVER STATION NUMBER
	AX = FF91h
Return: AL = station number of file server
SeeAlso: AX=FF82h

Top
21FF97 - INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM STATION NUMBER (server only)
INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM STATION NUMBER (server only)
	AX = FF97h
Return: AL = maximum station number
SeeAlso: AX=FF98h

Top
21FF98 - INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM FILE NUMBER (server only)
INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM FILE NUMBER (server only)
	AX = FF98h
Return: AL = maximum file
SeeAlso: AX=FF97h

Top
21FF9A - INT 21 - TopWare Network OS v5.10+ - RECEIVE OF USER-DEFINED PACKETS
INT 21 - TopWare Network OS v5.10+ - RECEIVE OF USER-DEFINED PACKETS
	AX = FF9Ah
	ES:BX -> buffer for user-defined packet (see #02532)
Return: nothing

Format of TopWare user-defined packet:
Offset	Size	Description	(Table 02532)
 00h	BYTE	FFh
 01h	WORD	(call) length of data field plus 3
		(ret) length of received message (0000h if none received)
 03h	BYTE	destination ID (FFh for broadcast message)
 04h	BYTE	sending station ID
 05h	BYTE	type code (11h; all other codes reserved for TopWare)
 06h  N BYTEs	received message

Top
21FF9F - INT 21 - TopWare Network OS v5.10+ - ENABLE/DISABLE TopTerm SERVICE
INT 21 - TopWare Network OS v5.10+ - ENABLE/DISABLE TopTerm SERVICE
	AX = FF9Fh
	CL = new state (00h disable [disregard TopTerm packets], 01h enable)
Return: AL = status (00h successful, FFh failed)
Note:	this function is only supported by Workstations, not the server

Top
21FFB0 - INT 21 - TopWare Network OS v5.10+ - GET SPOOLER PRINTING PRIORITY
INT 21 - TopWare Network OS v5.10+ - GET SPOOLER PRINTING PRIORITY
	AX = FFB0h
Return: AL = priority status (see #02533)
SeeAlso: AX=FFB1h

Bitfields for TopWare printer priority status:
Bit(s)	Description	(Table 02533)
 2	LPT3 has high priority
 1	LPT2 has high priority
 0	LPT1 has high priority

Top
21FFB1 - INT 21 - TopWare Network OS v5.10+ - SET SPOOLER PRINTING PRIORITY
INT 21 - TopWare Network OS v5.10+ - SET SPOOLER PRINTING PRIORITY
	AX = FFB1h
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CH = new priority (00h normal, 01h high)
Return: nothing
SeeAlso: AX=FFB0h

Top
21FFB3 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT START-OF-JOB FORMFEED STATUS
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT START-OF-JOB FORMFEED STATUS
	AX = FFB3h
Return: AL = starting formfeed status (see #02534)
SeeAlso: AX=FFB4h,AX=FFC0h

Bitfields for TopWare printer start-of-job formfeed status:
Bit(s)	Description	(Table 02534)
 2	LPT3 has formfeed enabled
 1	LPT2 has formfeed enabled
 0	LPT1 has formfeed enabled

Top
21FFB4 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT START-OF-JOB FORMFEED STATUS
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT START-OF-JOB FORMFEED STATUS
	AX = FFB4h
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CH = new formfeed status (00h off, 01h on)
Return: nothing
SeeAlso: AX=FFB3h,AX=FFC1h

Top
21FFBB - INT 21 - TopWare Network OS v5.10+ - GET PRINTER SERVER STATION ADDRESS
INT 21 - TopWare Network OS v5.10+ - GET PRINTER SERVER STATION ADDRESS
	AX = FFBBh
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
Return: AL = current mapping printer server station number
	    00h if local
SeeAlso: AX=FFBCh

Top
21FFBC - INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
	AX = FFBCh
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CL = printer server station address or 00h for local printer
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FFBBh

Top
21FFBD - INT 21 - TopWare Network OS v5.10+ - GET CURRENT AUTOPRINT TIME
INT 21 - TopWare Network OS v5.10+ - GET CURRENT AUTOPRINT TIME
	AX = FFBDh
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
Return: AX = current AutoPrint timeout in clock ticks
SeeAlso: AX=FFBEh

Top
21FFBE - INT 21 - TopWare Network OS v5.10+ - SET AUTOPRINT TIME
INT 21 - TopWare Network OS v5.10+ - SET AUTOPRINT TIME
	AX = FFBEh
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	BX = timeout in clock ticks
SeeAlso: AX=FFBDh

Top
21FFBF - INT 21 - TopWare Network OS v5.10+ - GET LOGON USER INFORMATION
INT 21 - TopWare Network OS v5.10+ - GET LOGON USER INFORMATION
	AX = FFBFh
	DX:BX -> buffer for logon information (see #02535)
Return: AL = status (00h successful, else failed)
	AH = number of logged-in stations

Format of TopWare logon information:
Offset	Size	Description	(Table 02535)
 00h	BYTE	station address
 01h 15 BYTEs	username

Top
21FFC0 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT END-OF-JOB FORMFEED STATUS
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT END-OF-JOB FORMFEED STATUS
	AX = FFC0h
Return: AL = ending formfeed status (see #02536)
SeeAlso: AX=FFB3h,AX=FFC1h

Bitfields for TopWare printer end-of-job formfeed status:
Bit(s)	Description	(Table 02536)
 2	LPT3 has formfeed enabled
 1	LPT2 has formfeed enabled
 0	LPT1 has formfeed enabled

Top
21FFC1 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT END-OF-JOB FORMFEED STATUS
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT END-OF-JOB FORMFEED STATUS
	AX = FFC1h
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CH = new formfeed status (00h off, 01h on)
Return: nothing
SeeAlso: AX=FFB4h,AX=FFC0h

Top
21FFC2 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT COPIES OF SPOOLING FILE
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT COPIES OF SPOOLING FILE
	AX = FFC2h
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
Return: AL = default number of copies printed
SeeAlso: AX=FFC7h

Top
21FFC3 - INT 21 - TopWare Network OS v5.10+ - GET SHARING STATUS OF PRINTER SERVER
INT 21 - TopWare Network OS v5.10+ - GET SHARING STATUS OF PRINTER SERVER
	AX = FFC3h
Return: AL = sharing status of printers (see #02537)
	    FFh if not a printer server

Bitfields for TopWare printer sharing status:
Bit(s)	Description	(Table 02537)
 2	LPT3 is shared
 1	LPT2 is shared
 0	LPT1 is shared

Top
21FFC4 - INT 21 - TopWare Network OS v5.10+ - GET/SET LPT PORT ON PRINT SERVER
INT 21 - TopWare Network OS v5.10+ - GET/SET LPT PORT ON PRINT SERVER
	AX = FFC4h
	BL = subfunction
	    00h get
		Return: AL = mapped printer port on print server
	    01h set
		CL = network printer port (00h LPT1, 01h LPT2, 02h LPT3)
	CH = local printer (00h LPT1, 01h LPT2, 02h LPT3)

Top
21FFC6 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT FILE HEADER
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT FILE HEADER
	AX = FFC6h
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CL = header state (00h off, 01h on)
SeeAlso: AX=FFC8h

Top
21FFC7 - INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT COPIES
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT COPIES
	AX = FFC7h
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CL = new default number of copies to print
SeeAlso: AX=FFC2h

Top
21FFC8 - INT 21 - TopWare Network OS v5.10+ - GET DEFAULT PRINT FILE HEADER STATUS
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT PRINT FILE HEADER STATUS
	AX = FFC8h
Return: AL = header status for printers (see #02538)
SeeAlso: AX=FFC6h

Bitfields for TopWare print header status:
Bit(s)	Description	(Table 02538)
 2	LPT3 has headers enabled
 1	LPT2 has headers enabled
 0	LPT1 has headers enabled

Top
21FFC9 - INT 21 - TopWare Network OS v5.10+ - SET PRINTER SHARING
INT 21 - TopWare Network OS v5.10+ - SET PRINTER SHARING
	AX = FFC9h
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CL = new sharing state (00h off, 01h on)
Return: AL = status (00h successful, FFh not printer server)

Top
21FFCA - INT 21 - TopWare Network OS v5.10+ - MOVE FILE FROM ONE PRINT SERVER TO ANOTHER
INT 21 - TopWare Network OS v5.10+ - MOVE FILE FROM ONE PRINT SERVER TO ANOTHER
	AX = FFCAh
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CL = original printer server station address
	BL = target printer server station address
	DS:DX -> filename (12 bytes)
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FFCBh

Top
21FFCB - INT 21 - TopWare Network OS v5.10+ - DELETE FILE FROM SPOOLING QUEUE
INT 21 - TopWare Network OS v5.10+ - DELETE FILE FROM SPOOLING QUEUE
	AX = FFCBh
	CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
	CL = printer server station address
	DS:DX -> filename (12 bytes)
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FFCAh

Top
21FFCC - INT 21 - TopWare Network OS v5.10+ - GET PRINT SERVER'S SPOOLING QUEUE STATUS
INT 21 - TopWare Network OS v5.10+ - GET PRINT SERVER'S SPOOLING QUEUE STATUS
	AX = FFCCh
	CL = printer server station address
	BH = start item number of spooling file for print server
	BL = number of the item to be retrieved
	DS:DX -> buffer for queued file information (see #02539)
Return: AL = status
	    00h successful
		AH = number of spool files
		DS:DX buffer filled
	    nonzero failed

Format of TopWare queued file information buffer [16-item array, one element]:
Offset	Size	Description	(Table 02539)
 00h 12 BYTEs	filename
 0Ch	DWORD	size
 10h	WORD	date
 12h	WORD	time
 14h 15 BYTEs	username
 23h	BYTE	count
 24h	BYTE	flag: header
 25h	BYTE	print number

Top
21FFCD - INT 21 - TopWare Network OS v5.10+ - GET STATUS OF ALL PRINT SERVERS
INT 21 - TopWare Network OS v5.10+ - GET STATUS OF ALL PRINT SERVERS
	AX = FFCDh
	DS:DX -> buffer for server status (see #02540)
Return: AL = status
	    00h successful
		AH = number of print servers
	    nonzero failed

Format of TopWare server status:
Offset	Size	Description	(Table 02540)
 00h	BYTE	station address
 01h 15 BYTEs	username
 10h	BYTE	flag: 01h printer is shared, 00h sharing disabled
 11h	BYTE	number of files pending in queue

Top
21FFCF - INT 21 - TopWare Network OS v5.10+ - CALL TopLook FUNCTION
INT 21 - TopWare Network OS v5.10+ - CALL TopLook FUNCTION
	AX = FFCFh
	DH = page number (0-2, 2 is text mode)
	DL = type
	    00h look at specific screen
	    01h AutoLook on
	    FFh AutoLook off
	BH = station number wishing to look
	BL = station number to be looked at
	CH = monochrome flag (01h monochrome, 00h not monochrome)
	CL = screen mode (see #02531)
Return: AL = status (00h successful, nonzero failed)
SeeAlso: AX=FF8Dh

Top
21FFD6 - INT 21 - TopWare Network OS v5.10+ - GET KEYCARD SERIAL NUMBER AND MAX USERS
INT 21 - TopWare Network OS v5.10+ - GET KEYCARD SERIAL NUMBER AND MAX USERS
	AX = FFD6h
	ES:BX -> 12-byte buffer for keycard serial number
Return: CX = maximum number of users
	ES:BX buffer filled

Top
21FFD7 - INT 21 - TopWare Network OS v5.10+ - GET NETWORK PROTECTION ATTRIBUTES STATUS
INT 21 - TopWare Network OS v5.10+ - GET NETWORK PROTECTION ATTRIBUTES STATUS
	AX = FFD7h
Return: AL = status (00h disabled, 01h enabled)

Top
21FFE3DL00 - INT 21 - TopWare Network OS v5.10+ - INITIATE ACCESS TO SPECIFIC PACKET TYPE
INT 21 - TopWare Network OS v5.10+ - INITIATE ACCESS TO SPECIFIC PACKET TYPE
	AX = FFE3h
	DL = 00h
	BX = packet type for Ethernet header (IP = 0800h, ARP = 0806h, etc.)
	ES:DI -> receive routine (see #02542)
Return: CF clear if successful
	    AX = handle number
	CF set on error
	    DH = error code (03h,05h,09h,0Ah,11h) (see #02541)
SeeAlso: AX=FFE3h/DL=01h

(Table 02541)
Values for TopWare error code:
 01h	invalid handle
 03h	no interfaces of the specified type found
 05h	bad packet type
 09h	insufficient space
 0Ah	type already being accessed
 0Ch	unable to send packet (usually hardware error)
 11h	invalid function

(Table 02542)
Values TopWare receive routine is called with:
	AX = function
	    0000h request packet buffer
		CX = packet size
		Return: ES:DI -> buffer or 0000h:0000h to discard packet
	    0001h packet copied
		CX = packet size
		DS:SI -> copied packet (same as returned ES:DI above)

Top
21FFE3DL01 - INT 21 - TopWare Network OS v5.10+ - END ACCESS TO SPECIFIC PACKET TYPE
INT 21 - TopWare Network OS v5.10+ - END ACCESS TO SPECIFIC PACKET TYPE
	AX = FFE3h
	DL = 01h
	BX = handle returned by AX=FFE3h/DL=00h
Return: CF clear if successful
	CF set on error
	    DH = error code (01h,11h) (see #02541)
Note:	the specified access handle will no longer be valid after this call
SeeAlso: AX=FFE3h/DL=00h

Top
21FFE3DL02 - INT 21 - TopWare Network OS v5.10+ - SEND PACKET
INT 21 - TopWare Network OS v5.10+ - SEND PACKET
	AX = FFE3h
	DL = 02h
	CX = length of data buffer
	DS:SI -> buffer containing data
Return: CF clear if successful
	CF set on error
	    DH = error code (0Ch,11h) (see #02541)

Top
21FFE3DL03 - INT 21 - TopWare Network OS v5.10+ - GET LOCAL NETWORK INTERFACE ADDRESS
INT 21 - TopWare Network OS v5.10+ - GET LOCAL NETWORK INTERFACE ADDRESS
	AX = FFE3h
	DL = 03h
	ES:DI -> 6-byte buffer for address
SeeAlso: AX=FFE3h/DL=00h

Top
21FFFE - INT 21 - VIRUS - "08/15"/"Many Fingers" - INSTALLATION CHECK
INT 21 - VIRUS - "08/15"/"Many Fingers" - INSTALLATION CHECK
	AX = FFFEh
Return: AX = 0815h if resident
SeeAlso: AX=FF10h,AX=FFFEh/BX=0000h

Top
21FFFEBX0000 - INT 21 - VIRUS - "Anti-Thunderbyte/LEMMING" - INSTALLATION CHECK
INT 21 - VIRUS - "Anti-Thunderbyte/LEMMING" - INSTALLATION CHECK
	AX = FFFEh
	BX = 0000h
Return: BX = FFFFh if resident
SeeAlso: AX=FFFEh,AX=FFFFh

Top
21FFFF - INT 21 - VIRUS - "Ontario", "Year 1992"/"B1M92" - INSTALLATION CHECK
INT 21 - VIRUS - "Ontario", "Year 1992"/"B1M92" - INSTALLATION CHECK
	AX = FFFFh
Return: AX = 0000h if "Ontario" resident
	AX = 1992h if "Year 1992"/"B1M92" resident
SeeAlso: AX=FF0Fh,AX=FFFFh/CX=0000h,INT 6B"VIRUS"

Top
21FFFFCX0000 - INT 21 - VIRUS - "Revenge" - INSTALLATION CHECK
INT 21 - VIRUS - "Revenge" - INSTALLATION CHECK
	AX = FFFFh
	CX = 0000h
Return: CX = 0006h if resident
SeeAlso: AX=FFFFh,INT 6B"VIRUS"

Top
Home Interrupt Index: by Category by Number TOC: by Order Top