PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 1 = 0001 __RASM__ EQU 1 ; File : $NETWORK.A86$ ; ; Description : ; ; Original Author : DIGITAL RESEARCH ; ; Last Edited By : $CALDERA$ ; ;-----------------------------------------------------------------------; ; Copyright Work of Caldera, Inc. All Rights Reserved. ; ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND ; CIVIL LIABILITY. ;-----------------------------------------------------------------------; ; ; *** Current Edit History *** ; *** End of Current Edit History *** ; ; $Log$ ; ENDLOG ; ; DOS Network Function Calls = include pcmode.equ = ; File : $PCMODE.EQU$ = ; = ; Description : = ; = ; Original Author : DIGITAL RESEARCH = ; = ; Last Edited By : $CALDERA$ = ; = ;-----------------------------------------------------------------------; = ; Copyright Work of Caldera, Inc. All Rights Reserved. = ; = ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, = ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. = ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 2 = ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF = ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO = ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE = ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE = ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, = ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, = ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, = ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF = ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT = ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND = ; CIVIL LIABILITY. = ;-----------------------------------------------------------------------; = ; = ; *** Current Edit History *** = ; *** End of Current Edit History *** = ; = ; $Log$ = ; = ; ENDLOG = ; This file contains all the general purpose definitions = ; and equates used by the PCMODE Module. = ; = = FFFF TRUE equ 0FFFFh ; value of TRUE = 0000 FALSE equ 0 ; value of FALSE = = 0006 TRUE_VERSION equ 6 = = FFFF IDLE_DETECT equ TRUE ; Check for IDLE Process's = = if IDLE_DETECT = 0001 IDLE_COMMAND equ 0001h ; Command Processor Active = 0002 IDLE_DOSFUNC equ 0002h ; DOS Function Called = 0004 IDLE_INT28 equ 0004h ; INT 28 Called = = 4000 IDLE_ON equ 4000h ; ReSet when Idle Checking Enabled = 8000 IDLE_INIT equ 8000h ; ReSet when $IDLE$ Loaded and Active = C000 IDLE_DISABLE equ IDLE_INIT + IDLE_ON = = 0001 PROC_IDLE equ 0001 ; Process is IDLE = 0002 PROC_INT28 equ 0002 ; INT28 Polling Loop = 0003 PROC_KEYIN equ 0003 ; Keyboard Input = 0004 PROC_DEVIN equ 0004 ; Device Input Routine = endif = = = 00C0 STACK_SIZE equ 192 ; Local Stack Size (Levels) = 0050 MAX_PATHLEN equ 80 ; Maximum Path length = 000D MAX_FILELEN equ 13 = = ; = ; DOS process termination Codes PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 3 = ; = 0000 TERM_NORMAL equ 0 ; Normal Termination = 0001 TERM_BREAK equ 1 ; Termination by Control Break = 0002 TERM_ERROR equ 2 ; Termination by Critical Error = 0003 TERM_RESIDENT equ 3 ; Terminate and Stay Resident = = ; = ; Critical Error responses from the default INT 24 handler and = ; the DO_INT24 routine. = ; = 0000 ERR_IGNORE equ 0 ; Ignore Error = 0001 ERR_RETRY equ 1 ; Retry the Operation = 0002 ERR_ABORT equ 2 ; Terminate the Process = 0003 ERR_FAIL equ 3 ; Fail Function = ; = 0008 OK_FAIL equ 0000$1000b ; Fail is a Valid Response = 0010 OK_RETRY equ 0001$0000b ; Retry is a Valid Response = 0020 OK_IGNORE equ 0010$0000b ; Ignore is a valid Response = 0038 OK_RIF equ 0011$1000b ; All Responsese are Valid = 0030 OK_RI equ 0011$0000b ; Retry and Ignore are Valid = 0018 OK_RF equ 0001$1000b ; Retry and Fail are Valid = ; = 0040 NO_CRIT_ERRORS equ 0100$0000b ; critical error shouldn't be generated = ; warning - must match FDOS.A86 = ; PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 4 = eject = ; The following equates define the format in which the users registers = ; are saved on the stack. This format is also seen by an application = ; when a critical error occurs. = ; = CodeMacro POP$DOS ; Pop User Registers a la MS-DOS = db 058h ! db 05Bh ; pop AX ! pop BX = db 059h ! db 05Ah ; pop BX ! pop CX = db 05Eh ! db 05Fh ; pop SI ! pop DI = db 05Dh ; pop BP = db 01Fh ! db 007h ; pop DS ! pop ES = EndM = = CodeMacro PUSH$DOS ; Push User Registers = db 006h ! db 01Eh ; push ES ! push DS = db 055h ; push BP = db 057h ! db 056h ; push DI ! push SI = db 052h ! db 051h ; push DX ! push CX = db 053h ! db 050h ; push BX ! push AX = EndM = = 0000 reg_AX equ word ptr .00 = 0000 reg_AL equ byte ptr .00 = 0001 reg_AH equ byte ptr .01 = = 0002 reg_BX equ word ptr .02 = 0002 reg_BL equ byte ptr .02 = 0003 reg_BH equ byte ptr .03 = = 0004 reg_CX equ word ptr .04 = 0004 reg_CL equ byte ptr .04 = 0005 reg_CH equ byte ptr .05 = = 0006 reg_DX equ word ptr .06 = 0006 reg_DL equ byte ptr .06 = 0007 reg_DH equ byte ptr .07 = = 0008 reg_SI equ word ptr .08 = 000A reg_DI equ word ptr .10 = 000C reg_BP equ word ptr .12 = = 000E reg_DS equ word ptr .14 = 0010 reg_ES equ word ptr .16 = = 0012 reg_IP equ word ptr .18 = 0014 reg_CS equ word ptr .20 = 0016 reg_FLAGS equ word ptr .22 = = ; Processor Flags = 0001 CARRY_FLAG equ 0001h ; Carry Flag = 0040 ZERO_FLAG equ 0040h ; Zero Flag = 0080 SIGN_FLAG equ 0080h ; Sign Flag PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 5 = 0200 INT_FLAG equ 0200h ; Interrupt Flag = 0400 DIR_FLAG equ 0400h ; Direction Flag = 0800 OFLW_FLAG equ 0800h ; OverFlow Flag = = 0000 DMD_ID equ es:byte ptr .0 ; id code ('M' or 'Z') = 0001 DMD_PSP equ es:word ptr .1 ; owner of memory block = 0003 DMD_LEN equ es:word ptr .3 ; length of memory block = 0006 DMD_IDLE_FLAGS equ es:word ptr .6 ; idle flags live here = 0008 DMD_NAME equ es:byte ptr .8 ; ASCIIZ name field = 0008 DMD_NAME_LEN equ 8 ; 8 Bytes long = 004D IDM equ 'M' ; not last id code = 005A IDZ equ 'Z' ; last id code = = PCMCODE GROUP PCM_HEADER, PCM_CODE, BDOS_CODE, PCM_RODATA = PCMCODE GROUP PCM_HISTORY, PCM_ICODE, PCM_CODEND = = PCM_HEADER CSEG PARA = PCM_CODE CSEG BYTE = PCM_RODATA CSEG WORD = BDOS_CODE CSEG WORD = PCM_HISTORY CSEG BYTE = PCM_ICODE CSEG BYTE = PCM_CODEND CSEG PARA = = = PCMDATA GROUP PCMODE_DATA, FDOS_DSEG, FIXED_DOS_DATA = PCMDATA GROUP PCMODE_CODE, GLOBAL_DATA, BDOS_DATA, PCMODE_DSIZE = = PCMODE_DATA DSEG WORD ; DOS Data = FDOS_DSEG DSEG WORD COMMON ; FDOS Parameter Block =0000 fdos_data rw 7 = FIXED_DOS_DATA CSEG WORD 'DATA' ; Fixed DOS Data Area = PCMODE_CODE CSEG WORD 'DATA' ; DATA relative CODE = GLOBAL_DATA DSEG WORD ; GLOBAL DOS DATA (Process Independant) = BDOS_DATA DSEG WORD ; BDOS Data Area = PCMODE_DSIZE DSEG PARA ; End of DOS Data Area = include i:mserror.equ = ; File : $MSERROR.EQU$ = ; = ; Description : = ; = ; Original Author : DIGITAL RESEARCH = ; = ; Last Edited By : $CALDERA$ = ; = ;-----------------------------------------------------------------------; = ; Copyright Work of Caldera, Inc. All Rights Reserved. = ; = ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, = ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. = ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 6 = ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF = ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO = ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE = ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE = ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, = ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, = ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, = ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF = ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT = ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND = ; CIVIL LIABILITY. = ;-----------------------------------------------------------------------; = ; = ; *** Current Edit History *** = ; *** End of Current Edit History *** = ; = ; $Log$ = ; = ; ENDLOG = = FFFF ED_FUNCTION equ -01 ; invalid function number = FFFE ED_FILE equ -02 ; file not found = FFFD ED_PATH equ -03 ; path not found = FFFC ED_HANDLE equ -04 ; too many open files = FFFB ED_ACCESS equ -05 ; file access denied = FFFA ED_H_MATCH equ -06 ; invalid handle number = FFF9 ED_DMD equ -07 ; memory descriptor destroyed = FFF8 ED_MEMORY equ -08 ; insufficient memory = FFF7 ED_BLOCK equ -09 ; invalid memory block addr = FFF6 ED_ENVIRON equ -10 ; invalid environment = FFF5 ED_FORMAT equ -11 ; invalid format = FFF4 ED_ACC_CODE equ -12 ; invalid access code = FFF3 ED_DATA equ -13 ; invalid data = FFF1 ED_DRIVE equ -15 ; invalid drive specified = FFF0 ED_DIR equ -16 ; can't remove current dir = FFEF ED_DEVICE equ -17 ; not same device = FFEE ED_ROOM equ -18 ; no more files = = FFED ED_PROTECT equ -19 ; disk write protected = FFEC ED_BADUNIT equ -20 ; invalid drive specified = FFEB ED_NOTREADY equ -21 ; drive doesn't respond = FFEA ED_BADCMD equ -22 ; invalid command to driver = FFE9 ED_BADDATA equ -23 ; data CRC error = FFE8 ED_BADRHLEN equ -24 ; (shouldn't happen) = FFE7 ED_BADSEEK equ -25 ; can't seek to track = FFE6 ED_BADMEDIA equ -26 ; unrecognizable medium = FFE5 ED_RNF equ -27 ; record/sector not found = FFE4 ED_NOPAPER equ -28 ; printer error = FFE3 ED_WRFAIL equ -29 ; write failed = FFE2 ED_RDFAIL equ -30 ; read failed = FFE1 ED_GENFAIL equ -31 ; anything failed = FFE0 ED_SHAREFAIL equ -32 ; sharing conflict PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 7 = FFDF ED_LOCKFAIL equ -33 ; locking conflict = FFDE ED_DISKCHG equ -34 ; invalid disk change = FFDD ED_NOFCBS equ -35 ; FCB table exhausted = FFDC ED_NOLOCKS equ -36 ; lock list items exhausted = FFCE ED_NET equ -50 ; Network Request Not Supported = = FFBF ED_NETACCESS equ -65 ; file access denied = = FFB7 ED_NETPWD equ -73 ; Server Password Error = FFB6 ED_NETVER equ -74 ; Incorrect Server version = FFB5 ED_NETREQ equ -75 ; No Local Network Resources = FFB4 ED_NETTIME equ -76 ; Network Time Out Error = FFB3 ED_NETCOMM equ -77 ; Network Communications Error = FFB2 ED_NETSRVR equ -78 ; No Server Network Resources = FFB1 ED_NETLOG equ -79 ; Server Not Logged In = = FFB0 ED_EXISTS equ -80 ; file already exists = FFAE ED_MAKE equ -82 ; Cannot Make (Files ??) = FFAD ED_FAIL equ -83 ; FAIL code returned from INT 24 = FFAC ED_STRUCT equ -84 ; Out of Structures = FFAB ED_ASSIGN equ -85 ; Already Assigned = FFAA ED_PASSWORD equ -86 ; Invalid Password = FFA9 ED_PARAM equ -87 ; Invalid Parameter = FFA8 ED_NETWRITE equ -88 ; Network write fault = FFA7 ED_NETFUNC equ -89 ; Function not supported on network = FFA6 ED_COMPONENT equ -90 ; system component not installed = FFA6 ED_LASTERROR equ -90 ; Last Error Number Used = = = 0001 CLASS_RESOURCE equ 1 ; Out of Resource = 0002 CLASS_TEMP equ 2 ; Temporary Situation = 0003 CLASS_AUTHOR equ 3 ; Authorization Error = 0004 CLASS_INTERNAL equ 4 ; Internal System Software Error = 0005 CLASS_HARDWARE equ 5 ; Hardware Failure = 0006 CLASS_SYSTEM equ 6 ; Serious System Failure = 0007 CLASS_APPLIC equ 7 ; Application Program Error = 0008 CLASS_LOST equ 8 ; File/Item Not Found = 0009 CLASS_FORMAT equ 9 ; File/Item Illegal Format = 000A CLASS_LOCKED equ 10 ; File/Item Locked = 000B CLASS_MEDIA equ 11 ; Media Failure = 000C CLASS_EXISTS equ 12 ; Item Already Exists = 000D CLASS_UNKNOWN equ 13 ; Unknown Classification = = 0001 ACT_RETRY equ 1 ; Retry a few times then prompt user = 0002 ACT_DELAY equ 2 ; Delay then as ACT_RETRY = 0003 ACT_USER equ 3 ; Prompt user to re-enter data = 0004 ACT_ABORT equ 4 ; Clean Up then ABORT the process = 0005 ACT_TERM equ 5 ; Terminate immeadiately NO CLEAN UP = 0006 ACT_IGNORE equ 6 ; Ignore the Error = 0007 ACT_URETRY equ 7 ; Retry the error after user intervention = = 0001 LOC_UNKNOWN equ 1 ; Unknown error location PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 8 = 0002 LOC_BLOCK equ 2 ; Block Device Failure = 0003 LOC_NET equ 3 ; Network Failure = 0004 LOC_CHAR equ 4 ; Related to Serial/Character devices = 0005 LOC_MEMORY equ 5 ; Failure related to Memory = include i:redir.equ = ; File : $REDIR.EQU$ = ; = ; Description : = ; = ; Original Author : DIGITAL RESEARCH = ; = ; Last Edited By : $CALDERA$ = ; = ;-----------------------------------------------------------------------; = ; Copyright Work of Caldera, Inc. All Rights Reserved. = ; = ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, = ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. = ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES = ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF = ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO = ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE = ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE = ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, = ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, = ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, = ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF = ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT = ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND = ; CIVIL LIABILITY. = ;-----------------------------------------------------------------------; = ; = ; *** Current Edit History *** = ; *** End of Current Edit History *** = ; = ; $Log$ = ; = ; ENDLOG = ; Int 2F AH=11 msnet redirector hook equates = = 1100 I2F_PRESCENCE equ 1100h = 1101 I2F_RMDIR equ 1101h = 1103 I2F_MKDIR equ 1103h = 1105 I2F_CHDIR equ 1105h = 1106 I2F_CLOSE equ 1106h = 1107 I2F_COMMIT equ 1107h = 1108 I2F_READ equ 1108h = 1109 I2F_WRITE equ 1109h = 110A I2F_LOCK equ 110Ah = 110B I2F_UNLOCK equ 110Bh = 110C I2F_SPACE equ 110Ch PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 9 = 110E I2F_SET_ATTR equ 110Eh = 110F I2F_GET_ATTR equ 110Fh = 1111 I2F_REN equ 1111h = 1113 I2F_DEL equ 1113h = 1116 I2F_OPEN equ 1116h = 1117 I2F_CREATE equ 1117h = 1118 I2F_XCREATE equ 1118h = 1119 I2F_XSFIRST equ 1119h = 111B I2F_SFIRST equ 111Bh = 111C I2F_SNEXT equ 111Ch = 111D I2F_PCLOSE equ 111Dh = 111E I2F_REDIR_5F equ 111Eh = 111F I2F_REDIR_5E equ 111Fh = 1120 I2F_FLUSH equ 1120h = 1121 I2F_LSEEK equ 1121h = 1122 I2F_PTERM equ 1122h = 1123 I2F_PPATH equ 1123h = 1124 I2F_CTLP_ERR equ 1124h = 1125 I2F_REDIR_5D equ 1125h = 1126 I2F_CTLP equ 1126h = = include i:doshndl.def = ; File : $DOSHNDL.DEF$ = ; = ; Description : = ; = ; Original Author : DIGITAL RESEARCH = ; = ; Last Edited By : $CALDERA$ = ; = ;-----------------------------------------------------------------------; = ; Copyright Work of Caldera, Inc. All Rights Reserved. = ; = ; THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL, = ; PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC. = ; ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES = ; WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF = ; THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO = ; HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE = ; AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE = ; AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED, = ; COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED, = ; CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST, = ; TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF = ; CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT = ; AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND = ; CIVIL LIABILITY. = ;-----------------------------------------------------------------------; = ; = ; *** Current Edit History *** = ; *** End of Current Edit History *** PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 10 = ; = ; $Log$ = ; = ; ENDLOG = = 0000 DCNTRL_DSADD equ dword ptr 0000h = 0000 DCNTRL_DSOFF equ word ptr 0000h = 0002 DCNTRL_DSSEG equ word ptr 0002h = 0004 DCNTRL_COUNT equ word ptr 0004h = 0006 DCNTRL_LEN equ 6 = = 0000 DHNDL_COUNT equ word ptr 00h ; 00 - Usage Count = 0002 DHNDL_MODE equ word ptr 02h ; 02 - File Mode = = 8000 DHM_FCB equ 8000h ; marks as FCB = 4000 DHM_COMMIT equ 4000h ; auto-commit file = 2000 DHM_NOCRIT equ 2000h ; no critical errors = 0080 DHM_LOCAL equ 10000000b ; file is not inherited = 0070 DHM_SHAREMSK equ 01110000b ; sharing bits = 0000 DHM_COMPAT equ 00000000b = 0010 DHM_DENY_ALL equ 00010000b ; exclusive - deny all = 0020 DHM_DENY_WRITE equ 00100000b = 0030 DHM_DENY_READ equ 00110000b = 0040 DHM_DENY_NONE equ 01000000b = 000F DHM_RWMSK equ 00001111b ; read write bits = 0002 DHM_RW equ 00000010b ; file opened read/write = 0001 DHM_WO equ 00000001b ; file opened write only = 0000 DHM_RO equ 00000000b ; file opened read only = = ; = ; 01h to 03h To be Determined = ; = 0004 DHNDL_DATRB equ byte ptr 04h ; Disk attribute byte = 0005 DHNDL_ATTR equ byte ptr 05h ; Attribute Byte = 0005 DHNDL_WATTR equ word ptr 05h ; Attribute Word = = 8000 DHAT_REMOTE equ 8000h ; set if file remote = 4000 DHAT_TIMEOK equ 4000h ; set if timestamp up to date = 1000 DHAT_LOCAL equ 1000h ; file is not inherited = 0800 DHAT_NETPRN equ 0800h ; device is networked printer = 0080 DHAT_DEV equ 0080h ; device/file bit = 0040 DHAT_READY equ 0040h ; ready/not ready bit = 0040 DHAT_CLEAN equ 0040h ; this bit CLEAR if dirty = 0020 DHAT_BIN equ 0020h ; raw/cooked bit = 001F DHAT_DRVMSK equ 001Fh ; drive in bottom bits = 0008 DHAT_CLK equ 0008h ; -reserved- = 0004 DHAT_NUL equ 0004h ; handle is null device = 0002 DHAT_COT equ 0002h ; handle is console output device = 0001 DHAT_CIN equ 0001h ; handle is console input device = = 0007 DHNDL_DEVPTR equ dword ptr 07h ; 07 - pointer to device = 0007 DHNDL_DEVOFF equ word ptr 07h ; 07 - offset of device PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 11 = 0009 DHNDL_DEVSEG equ word ptr 09h ; 09 - segment of device = 000B DHNDL_BLK1 equ word ptr 0Bh ; 0B - first cluster in file = 000D DHNDL_TIME equ word ptr 0Dh ; 0D - file time stamp = 000F DHNDL_DATE equ word ptr 0Fh ; 0F - file date stamp = 0011 DHNDL_SIZE equ dword ptr 11h ; 11 - file length = 0011 DHNDL_SIZELO equ word ptr 11h = 0013 DHNDL_SIZEHI equ word ptr 13h = 0015 DHNDL_POS equ dword ptr 15h ; 15 - current file position = 0015 DHNDL_POSLO equ word ptr 15h = 0017 DHNDL_POSHI equ word ptr 17h = 0019 DHNDL_IDX equ word ptr 19h ; 19 - relative cluster within file of last read = 001B DHNDL_DBLK equ word ptr 1Bh ; 1B - cluster # of dir entry = 001E DHNDL_DCNTHI equ byte ptr 1Eh ; 1E - dir offset # within cluster = 001F DHNDL_DCNTLO equ byte ptr 1Fh ; 1F - dir offset # within cluster = 0020 DHNDL_NAME equ byte ptr 20h ; 20 - File/Device Name = 0028 DHNDL_EXT equ byte ptr 28h ; 28 - File extension = 002B DHNDL_SFT equ dword ptr 2Bh ; 2B - pointer to previous SFT = 002F DHNDL_UID equ word ptr 2Fh ; 2F - Owning Machine ID = 0031 DHNDL_PSP equ word ptr 31h ; 31 - Owning PSP = 0033 DHNDL_SHARE equ word ptr 33h ; 33 - Offset of sharing record = 0035 DHNDL_BLK equ word ptr 35h ; 35 - absolute cluster of last read = ; 37 - dword reserved for IFS = 003B DHNDL_LEN equ 3Bh = = ; With DOS 3 structures _DBLK is a 16 bit = = = ; Logical Drive Table format = 0000 LDT_NAME equ byte ptr 00h ; 00 - Ascii Name field = 0043 LDT_FLAGS equ word ptr 43h ; 43 - Flag field = 0045 LDT_PDT equ dword ptr 45h ; 45 - PDT for this drive = 0049 LDT_BLK equ word ptr 49h ; 49 - directory sector = 004B LDT_ROOT equ word ptr 4bh ; 4B - virtual block root = 004D LDT_DRV equ byte ptr 4dh ; 4D - physical drive = 004F LDT_ROOTLEN equ word ptr 4fh ; 4F - Length of root portion = 0058 LDT_LEN equ 58h = = 8000 LFLG_NETWRKD equ 8000h = 4000 LFLG_PHYSICAL equ 4000h = 2000 LFLG_JOINED equ 2000h = 1000 LFLG_SUBST equ 1000h PCM_CODE CSEG BYTE extrn reload_ES:near extrn return_AX_CLC:near extrn return_CX:near extrn error_exit:near extrn get_ldt_raw:near PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 12 ; ***************************** ; *** DOS Function 5E *** ; *** Get Machine Name *** ; ***************************** ; Public func5E func5E: 0000 3C017208 000C cmp al,1 ! jb f5E00 ; Get Machine Name Sub-Function 0004 741C 0022 je f5E01 ; Set Machine Name Sub-Function 0006 B81F11 mov ax,I2F_REDIR_5E ; magic int 2F number 0009 E96100 006D jmp func5F_common ; use common routine ; ; Get the current Machine Name ; f5E00: 000C 8BFA mov di,dx ; Copy the 15 Byte Network Name 000E BE0000 E mov si,offset net_name 0011 B90800 mov cx,16/2 0014 F3A5 rep movsw ; mov ch,name_num ; 00 -> Undefined Name ; mov cl,netbios ; 00 -> Name Number 0016 8B0E0000 E mov cx,word ptr netbios 001A E80000 E call return_CX f5E_success: 001D 33C0 xor ax,ax ; return zero 001F E90000 E jmp return_AX_CLC ; ; Set the Network Name ; f5E01: ; mov name_num,ch ; Get the Network and NetBios Nos. ; mov netbios,cl ; and save in local variables 0022 890E0000 E mov word ptr netbios,cx 0026 FE060000 E inc net_set_count 002A 1E06 push ds ! push es 002C 1F07 pop ds ! pop es ; Copy the specified name 002E 8BF2 mov si,dx ; to internal save area 0030 BF0000 E mov di,offset net_name 0033 B90F00 mov cx,15 ; Copy 15 byte name leave 0036 F3A4 rep movsb ; Terminating 00 0038 061F push es ! pop ds 003A EBE1 001D jmps f5E_success ; ***************************** ; *** DOS Function 5F *** ; *** Network Control *** ; ***************************** ; Public func5F func5F: PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 13 003C 3C07 cmp al,07h 003E 7404 0044 je func5F_10 0040 3C08 cmp al,08h 0042 7526 006A jne func5F_40 func5F_10: 0044 50 push ax 0045 8AC2 mov al,dl 0047 E80000 E call get_ldt_raw 004A 58 pop ax 004B 7215 0062 jc func5F_30 004D 26837F4501 cmp es:word ptr LDT_PDT[bx],1 0052 720E 0062 jb func5F_30 0054 26804F4440 or es:byte ptr LDT_FLAGS+1[bx],LFLG_PHYSICAL/100h 0059 3C07 cmp al,07h 005B 7405 0062 je func5F_30 005D 26806744BF and es:byte ptr LDT_FLAGS+1[bx],(not LFLG_PHYSICAL)/100h func5F_30: 0062 731A 007E jnc func5F_OK 0064 B8F1FF mov ax,ED_DRIVE 0067 E90000 E jmp error_exit func5F_40: 006A B81E11 mov ax,I2F_REDIR_5F ; magic int 2F number Public func5F_common func5F_common: 006D 1E push ds 006E FF360000 E push int21AX ; AX passed on the stack.. 0072 06 push es 0073 E80000 E call reload_ES ; get the segment registers 0076 1F pop ds ; back to entry state 0077 F9 stc ; assume it will fail 0078 CD2F int 2fh ; pass it on to MSNET 007A 1F pop ds ; throw away word on the stack 007B 1F pop ds 007C 7203 0081 jc func5F_error func5F_OK: 007E E90000 E jmp return_AX_CLC ; return the result func5F_error: 0081 F7D8 neg ax ; our error convention is negative.. 0083 E90000 E jmp error_exit ; Error for all sub functions PCMODE_DATA DSEG WORD extrn net_name:byte extrn net_set_count:byte extrn name_num:byte extrn netbios:byte extrn int21AX:word end PC-DOS RASM-86 1.4a Source: NETWORK.A86 Page 14 End of assembly. Number of errors: 0. Use factor: 14%