mirror of
https://github.com/SEPPDROID/DR-DOS-OpenDOS.git
synced 2025-10-24 08:54:19 +00:00
Upload
This commit is contained in:
1474
IBMDOS/BDEVIO.A86
Normal file
1474
IBMDOS/BDEVIO.A86
Normal file
File diff suppressed because it is too large
Load Diff
80
IBMDOS/BDOS.EQU
Normal file
80
IBMDOS/BDOS.EQU
Normal file
@@ -0,0 +1,80 @@
|
||||
; File : $BDOS.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
|
||||
;
|
||||
; Search variables
|
||||
;
|
||||
|
||||
NEXT equ 0
|
||||
EMPTY equ 1
|
||||
|
||||
DOT equ 2eh ; '.'
|
||||
|
||||
DRIVEN equ 0dh ; (0 rel)
|
||||
DRIVEP equ 0fh ; (0 rel)
|
||||
|
||||
DSKMAP equ 16
|
||||
|
||||
; struct pcfcb
|
||||
|
||||
DRIVE equ 0 ;drive
|
||||
FNAME equ 1 ;file name & type
|
||||
EXTENT equ 12 ;extent (0 - 31)
|
||||
CHKSUM equ 13 ;checksum
|
||||
MODULE equ 14 ;module (0 - 63)
|
||||
; 0x80 - file extended flag
|
||||
; 0x40 - file write flag
|
||||
RCDCNT equ 15 ;record count (0 - 128)
|
||||
PCFCB1 equ 16 ;PCDOS fcb flag byte
|
||||
; 0x1f - high byte of file's dcnt
|
||||
; 0x20 - hidden
|
||||
; 0x40 - sub-directory
|
||||
; 0x80 - always one
|
||||
PCFCB2 equ 17 ;same as pcfcb1
|
||||
LOWDCNT equ 18 ;low byte of file's dcnt
|
||||
CBFLAG equ 19 ;current block flag
|
||||
CBLOCK equ 20 ;current block (2 bytes)
|
||||
CBLKIDX equ 22 ;current block index (2 bytes)
|
||||
TIME equ 22 ;time (hhhhhmmmmmmsssss)
|
||||
DATE equ 24 ;date (yyyyyyymmmmddddd)
|
||||
BLOCK1 equ 26 ;first block in file
|
||||
CSIZE equ 28 ;current file size (2 words)
|
||||
CR equ 32 ;current record
|
||||
RR0 equ 33 ;random record field (byte 0)
|
||||
RR1 equ 34 ;random record field (byte 1)
|
||||
RR2 equ 35 ;random record field (byte 2)
|
||||
|
||||
|
||||
;struct fcb
|
||||
|
||||
FCBLEN equ 32 ; size of file control block
|
||||
FCBSHF equ 5 ; log2(fcblen)
|
||||
BIN
IBMDOS/BIN/BDEVIO.OBJ
Normal file
BIN
IBMDOS/BIN/BDEVIO.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/BUFFERS.OBJ
Normal file
BIN
IBMDOS/BIN/BUFFERS.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/CDEVIO.OBJ
Normal file
BIN
IBMDOS/BIN/CDEVIO.OBJ
Normal file
Binary file not shown.
2496
IBMDOS/BIN/CIO.LST
Normal file
2496
IBMDOS/BIN/CIO.LST
Normal file
File diff suppressed because it is too large
Load Diff
BIN
IBMDOS/BIN/CIO.OBJ
Normal file
BIN
IBMDOS/BIN/CIO.OBJ
Normal file
Binary file not shown.
219
IBMDOS/BIN/CIO.SYM
Normal file
219
IBMDOS/BIN/CIO.SYM
Normal file
@@ -0,0 +1,219 @@
|
||||
0000 VARIABLES
|
||||
0000 BREAK_SP 0000 CHAR_COUNT 0000 CIO_STATE 0000 CLOCK_COUNT
|
||||
0000 CNTRL_C_MSG 0000 COLUMN 0000 CON_DEVICE
|
||||
0000 CURRENT_PSP 0000 DMD_ID 0006 DMD_IDLE_FLAGS
|
||||
0003 DMD_LEN 0008 DMD_NAME 0001 DMD_PSP 0000 EXIT_TYPE 0000 FDOS_DATA
|
||||
0000 IDLE_FLAGS 0000 IDLE_VEC 0000 INDOS_FLAG 0000 INT21REGS_PTR
|
||||
0000 INT28_DELAY 0000 INT28_FLAG 0000 INT28_RELOAD
|
||||
0000 LAST_KEY_EXT 0000 MACHINE_ID 0010 PSP_BREAK_CS
|
||||
000E PSP_BREAK_IP 0080 PSP_COMLEN 0081 PSP_COMLINE
|
||||
0050 PSP_DOSCALL 0052 PSP_DOSRETF
|
||||
002C PSP_ENVIRON 0014 PSP_ERROR_CS
|
||||
0012 PSP_ERROR_IP 005C PSP_FCB1 006C PSP_FCB2 0000 PSP_INT20
|
||||
0005 PSP_LONGCALL 0006 PSP_LONGOFF
|
||||
0008 PSP_LONGSEG 0002 PSP_MEMORY 0016 PSP_PARENT 0038 PSP_RES1
|
||||
003A PSP_RES2 003C PSP_RIC 000C PSP_TERM_CS
|
||||
000A PSP_TERM_IP 002E PSP_USERSP 0030 PSP_USERSS
|
||||
0040 PSP_VERSION 0032 PSP_XFNMAX 0018 PSP_XFT 0034 PSP_XFTOFF
|
||||
0034 PSP_XFTPTR 0036 PSP_XFTSEG 0001 REG_AH 0000 REG_AL 0000 REG_AX
|
||||
0003 REG_BH 0002 REG_BL 000C REG_BP 0002 REG_BX 0005 REG_CH
|
||||
0004 REG_CL 0014 REG_CS 0004 REG_CX 0007 REG_DH 000A REG_DI
|
||||
0006 REG_DL 000E REG_DS 0006 REG_DX 0010 REG_ES 0016 REG_FLAGS
|
||||
0012 REG_IP 0008 REG_SI 0000 REMOTE_CALL 0012 RH0_BPBOFF
|
||||
0014 RH0_BPBSEG 0016 RH0_DRIVE 000D RH0_NUNITS 000E RH0_RESIDENT
|
||||
000D RH19_CATEGORY 0011 RH19_DI 0013 RH19_GENPB 000D RH19_MAJOR
|
||||
000E RH19_MINOR 000F RH19_SI 000D RH1_MEDIA 000E RH1_RETURN 000F RH1_VOLID
|
||||
000E RH24_CMD 0011 RH24_RESVD 000F RH24_STATUS 0012 RH2_BPB
|
||||
0012 RH2_BPBOFF 0014 RH2_BPBSEG 000E RH2_BUFFER 000D RH2_MEDIA
|
||||
001A RH4_BIGSECTOR 001C RH4_BIGSECTORHI
|
||||
001A RH4_BIGSECTORLO 000E RH4_BUFFER 000E RH4_BUFOFF 0010 RH4_BUFSEG
|
||||
0012 RH4_COUNT 000D RH4_MEDIA 000D RH4_RIC 0014 RH4_SECTOR 0016 RH4_VOLID
|
||||
000D RH5_CHAR 000D RH5_RIC 0002 RH_CMD 0000 RH_LEN 0003 RH_STATUS
|
||||
0001 RH_UNIT
|
||||
|
||||
0000 NUMBERS
|
||||
0004 ACT_ABORT 0002 ACT_DELAY 0006 ACT_IGNORE 0001 ACT_RETRY 0005 ACT_TERM
|
||||
0007 ACT_URETRY 0003 ACT_USER 000A BCB_COPIES 0014 BCB_DATA 000D BCB_DDSC
|
||||
0004 BCB_DRV 0005 BCB_FLAGS 0000 BCB_NEXT 0002 BCB_PREV 0006 BCB_REC
|
||||
0008 BCB_REC2 0011 BCB_REMOTE 000B BCB_SEPARATION 0007 BELL
|
||||
0040 BF_DIRTY 0008 BF_ISDAT 0004 BF_ISDIR 0002 BF_ISFAT 0080 BF_REMOTE
|
||||
0001 CARRY_FLAG 0050 CHECK_EVERY 0001 CIO_CTLP 0002 CIO_HANDLE
|
||||
0004 CIO_RAW 0007 CLASS_APPLIC 0003 CLASS_AUTHOR
|
||||
000C CLASS_EXISTS 0009 CLASS_FORMAT
|
||||
0005 CLASS_HARDWARE 0004 CLASS_INTERNAL
|
||||
000A CLASS_LOCKED 0008 CLASS_LOST 000B CLASS_MEDIA
|
||||
0001 CLASS_RESOURCE 0006 CLASS_SYSTEM 0002 CLASS_TEMP
|
||||
000D CLASS_UNKNOWN 0002 CMD_BUILD_BPB
|
||||
000E CMD_DEVICE_CLOSE 000D CMD_DEVICE_OPEN
|
||||
000F CMD_FIXED_MEDIA 0013 CMD_GENERIC_IOCTL
|
||||
0017 CMD_GET_DEVICE 0000 CMD_INIT 0004 CMD_INPUT
|
||||
0007 CMD_INPUT_FLUSH 0003 CMD_INPUT_IOCTL
|
||||
0005 CMD_INPUT_NOWAIT 0006 CMD_INPUT_STATUS
|
||||
0001 CMD_MEDIA_CHECK 0008 CMD_OUTPUT 000B CMD_OUTPUT_FLUSH
|
||||
000C CMD_OUTPUT_IOCTL 000A CMD_OUTPUT_STATUS
|
||||
0009 CMD_OUTPUT_VERIFY 0019 CMD_QUERY_IOCTL
|
||||
0018 CMD_SET_DEVICE 000D CR 005E CTL 0001 CTLA
|
||||
0002 CTLB 001C CTLBS 0003 CTLC 0004 CTLD 0005 CTLE
|
||||
0006 CTLF 0007 CTLG 0008 CTLH 0009 CTLI 000A CTLJ
|
||||
000B CTLK 000D CTLM 0010 CTLP 0011 CTLQ 0012 CTLR
|
||||
0013 CTLS 0014 CTLT 0015 CTLU 001F CTLUB 001E CTLUP
|
||||
0016 CTLV 0017 CTLW 0018 CTLX 0019 CTLY 001A CTLZ
|
||||
000B DATTS 0020 DA_ARCHIVE 0002 DA_BIGDRV FF27 DA_CHANGE 8000 DA_CHARDEV
|
||||
0080 DA_CLUSTER 0080 DA_DELWATCH 0010 DA_DIR 00D8 DA_FIXED
|
||||
0040 DA_GETSET 0002 DA_HIDDEN 4000 DA_IOCTL 0001 DA_ISCIN 0008 DA_ISCLK
|
||||
0002 DA_ISCOT 0004 DA_ISNUL 2000 DA_NONIBM 2000 DA_OTILBSY 0080 DA_QUERY
|
||||
0800 DA_REMOVE 0001 DA_RO 0010 DA_SPECIAL 0004 DA_SYSTEM 0008 DA_VOLUME
|
||||
001A DBLOCK1 0004 DCNTRL_COUNT 0000 DCNTRL_DSADD
|
||||
0000 DCNTRL_DSOFF 0002 DCNTRL_DSSEG 0006 DCNTRL_LEN
|
||||
0018 DDATE 001D DDSC_BLOCK 0004 DDSC_CLMSK 0005 DDSC_CLSHF
|
||||
000B DDSC_DATADDR 0013 DDSC_DEVHEAD
|
||||
0013 DDSC_DEVOFF 0015 DDSC_DEVSEG
|
||||
0011 DDSC_DIRADDR 0009 DDSC_DIRENT
|
||||
0006 DDSC_FATADDR 0018 DDSC_FIRST 001F DDSC_FREE 0021 DDSC_LEN
|
||||
0019 DDSC_LINK 0017 DDSC_MEDIA 000D DDSC_NCLSTRS
|
||||
000F DDSC_NFATRECS 0008 DDSC_NFATS 0001 DDSC_RUNIT
|
||||
0002 DDSC_SECSIZE 0000 DDSC_UNIT 007F DEL
|
||||
0002 DELW_DELETE 0003 DELW_FREECLU
|
||||
0004 DELW_FREERD 0007 DELW_NEWDISK 000E DELW_PURGE
|
||||
0000 DELW_RDMASK 0005 DELW_SPACE 000F DELW_UNDEL 0020 DHAT_BIN
|
||||
0001 DHAT_CIN 0040 DHAT_CLEAN 0008 DHAT_CLK 0002 DHAT_COT 0080 DHAT_DEV
|
||||
001F DHAT_DRVMSK 1000 DHAT_LOCAL 0800 DHAT_NETPRN
|
||||
0004 DHAT_NUL 0040 DHAT_READY 8000 DHAT_REMOTE
|
||||
4000 DHAT_TIMEOK 4000 DHM_COMMIT 0000 DHM_COMPAT
|
||||
0010 DHM_DENY_ALL 0040 DHM_DENY_NONE
|
||||
0030 DHM_DENY_READ 0020 DHM_DENY_WRITE 8000 DHM_FCB
|
||||
0080 DHM_LOCAL 2000 DHM_NOCRIT 0000 DHM_RO 0002 DHM_RW 000F DHM_RWMSK
|
||||
0070 DHM_SHAREMSK 0001 DHM_WO 0005 DHNDL_ATTR 0035 DHNDL_BLK
|
||||
000B DHNDL_BLK1 0000 DHNDL_COUNT 000F DHNDL_DATE
|
||||
0004 DHNDL_DATRB 001B DHNDL_DBLK 001E DHNDL_DCNTHI
|
||||
001F DHNDL_DCNTLO 0007 DHNDL_DEVOFF
|
||||
0007 DHNDL_DEVPTR 0009 DHNDL_DEVSEG 0028 DHNDL_EXT
|
||||
0019 DHNDL_IDX 003B DHNDL_LEN 0002 DHNDL_MODE 0020 DHNDL_NAME 0015 DHNDL_POS
|
||||
0017 DHNDL_POSHI 0015 DHNDL_POSLO 0031 DHNDL_PSP
|
||||
002B DHNDL_SFT 0033 DHNDL_SHARE 0011 DHNDL_SIZE
|
||||
0013 DHNDL_SIZEHI 0011 DHNDL_SIZELO 000D DHNDL_TIME
|
||||
002F DHNDL_UID 0005 DHNDL_WATTR 0004 DH_ATTRIB
|
||||
0008 DH_INTERRUPT 000A DH_NAME 0000 DH_NEXT 0000 DH_NEXTOFF
|
||||
0002 DH_NEXTSEG 0006 DH_STRATEGY 0400 DIR_FLAG
|
||||
0008 DMD_NAME_LEN 0012 DMODDATE 0010 DMODTIME 0000 DNAME
|
||||
0021 DOS_INT 000E DPWD 0014 DPWM 001C DSIZE 0016 DTIME
|
||||
000D DUNDEL FFFB ED_ACCESS FFF4 ED_ACC_CODE FFAB ED_ASSIGN
|
||||
FFEA ED_BADCMD FFE9 ED_BADDATA FFE6 ED_BADMEDIA
|
||||
FFE8 ED_BADRHLEN FFE7 ED_BADSEEK FFEC ED_BADUNIT FFF7 ED_BLOCK
|
||||
FFA6 ED_COMPONENT FFF3 ED_DATA FFEF ED_DEVICE FFF0 ED_DIR
|
||||
FFDE ED_DISKCHG FFF9 ED_DMD FFF1 ED_DRIVE FFF6 ED_ENVIRON FFB0 ED_EXISTS
|
||||
FFAD ED_FAIL FFFE ED_FILE FFF5 ED_FORMAT FFFF ED_FUNCTION
|
||||
FFE1 ED_GENFAIL FFFC ED_HANDLE FFFA ED_H_MATCH FFA6 ED_LASTERROR
|
||||
FFDF ED_LOCKFAIL FFAE ED_MAKE FFF8 ED_MEMORY FFCE ED_NET
|
||||
FFBF ED_NETACCESS FFB3 ED_NETCOMM FFA7 ED_NETFUNC FFB1 ED_NETLOG
|
||||
FFB7 ED_NETPWD FFB5 ED_NETREQ FFB2 ED_NETSRVR FFB4 ED_NETTIME FFB6 ED_NETVER
|
||||
FFA8 ED_NETWRITE FFDD ED_NOFCBS FFDC ED_NOLOCKS FFE4 ED_NOPAPER
|
||||
FFEB ED_NOTREADY FFA9 ED_PARAM FFAA ED_PASSWORD
|
||||
FFFD ED_PATH FFED ED_PROTECT FFE2 ED_RDFAIL FFE5 ED_RNF FFEE ED_ROOM
|
||||
FFE0 ED_SHAREFAIL FFAC ED_STRUCT FFE3 ED_WRFAIL FFFF ENDDIR
|
||||
0002 ERR_ABORT 0003 ERR_FAIL 0000 ERR_IGNORE 0001 ERR_RETRY 001B ESC
|
||||
0000 FALSE 0029 FASTCON_INT 0FFF FAT12 FFFF FAT16
|
||||
0004 HCB_CLU 0006 HCB_CNT 0008 HCB_DATA 0002 HCB_DRV 0000 HCB_LINK
|
||||
1105 I2F_CHDIR 1106 I2F_CLOSE 1107 I2F_COMMIT 1117 I2F_CREATE 1126 I2F_CTLP
|
||||
1124 I2F_CTLP_ERR 1113 I2F_DEL 1120 I2F_FLUSH
|
||||
110F I2F_GET_ATTR 110A I2F_LOCK 1121 I2F_LSEEK 1103 I2F_MKDIR
|
||||
1116 I2F_OPEN 111D I2F_PCLOSE 1123 I2F_PPATH 1100 I2F_PRESCENCE
|
||||
1122 I2F_PTERM 1108 I2F_READ 1125 I2F_REDIR_5D
|
||||
111F I2F_REDIR_5E 111E I2F_REDIR_5F 1111 I2F_REN
|
||||
1101 I2F_RMDIR 110E I2F_SET_ATTR 111B I2F_SFIRST 111C I2F_SNEXT
|
||||
110C I2F_SPACE 110B I2F_UNLOCK 1109 I2F_WRITE 1118 I2F_XCREATE
|
||||
1119 I2F_XSFIRST 0001 IDLE_COMMAND
|
||||
FFFF IDLE_DETECT C000 IDLE_DISABLE
|
||||
0002 IDLE_DOSFUNC 8000 IDLE_INIT 0004 IDLE_INT28 4000 IDLE_ON
|
||||
004D IDM 005A IDZ 0200 INT_FLAG 0049 LDT_BLK 004D LDT_DRV
|
||||
0043 LDT_FLAGS 0058 LDT_LEN 0000 LDT_NAME 0045 LDT_PDT 004B LDT_ROOT
|
||||
004F LDT_ROOTLEN 000A LF 2000 LFLG_JOINED
|
||||
8000 LFLG_NETWRKD 4000 LFLG_PHYSICAL 1000 LFLG_SUBST
|
||||
0002 LOC_BLOCK 0004 LOC_CHAR 0005 LOC_MEMORY 0003 LOC_NET
|
||||
0001 LOC_UNKNOWN 0FF6 MAX12 000D MAX_FILELEN
|
||||
0050 MAX_PATHLEN 0006 MSF_ATTRIB 000C MSF_BLOCK 001A MSF_BLOCK1
|
||||
0020 MSF_CR 0014 MSF_DATE 001C MSF_DBLK 001E MSF_DCNT 001C MSF_DEVPTR
|
||||
0000 MSF_DRIVE 0000 MSF_EXTFLG 0018 MSF_IFN 0019 MSF_IOCTL 0001 MSF_NAME
|
||||
000E MSF_RECSIZE 0021 MSF_RR 0023 MSF_RR2 0010 MSF_SIZE
|
||||
0016 MSF_TIME 0003 MS_A_READ 0004 MS_A_WRITE 000C MS_C_FLUSH
|
||||
0008 MS_C_NOECHO 0007 MS_C_RAWIN 0006 MS_C_RAWIO 0001 MS_C_READ
|
||||
000A MS_C_READSTR 000B MS_C_STAT 0002 MS_C_WRITE
|
||||
0009 MS_C_WRITESTR 001B MS_DRV_ALLOC
|
||||
001C MS_DRV_ALLOCSPEC 000D MS_DRV_ALLRESET 0019 MS_DRV_GET
|
||||
000E MS_DRV_SET 0036 MS_DRV_SPACE 0010 MS_F_CLOSE
|
||||
0013 MS_F_DELETE 002F MS_F_DMAGET
|
||||
001A MS_F_DMAOFF 0059 MS_F_ERROR 0054 MS_F_GETVERIFY
|
||||
005C MS_F_LOCK 0016 MS_F_MAKE 000F MS_F_OPEN 0029 MS_F_PARSE
|
||||
0024 MS_F_RANDREC 0014 MS_F_READ 0027 MS_F_READBLK
|
||||
0021 MS_F_READRAND 0017 MS_F_RENAME
|
||||
0011 MS_F_SFIRST 0023 MS_F_SIZE 0012 MS_F_SNEXT
|
||||
002E MS_F_VERIFY 0015 MS_F_WRITE 0028 MS_F_WRITEBLK
|
||||
0022 MS_F_WRITERAND 0005 MS_L_WRITE 0048 MS_M_ALLOC 0049 MS_M_FREE
|
||||
004A MS_M_SETBLOCK 0058 MS_M_STRATEGY
|
||||
0062 MS_P_GETPSP 0026 MS_P_MKPSP 0050 MS_P_SETPSP
|
||||
0000 MS_P_TERMCPM 0031 MS_P_TERMKEEP
|
||||
0030 MS_S_BDOSVER 0033 MS_S_BREAK 0038 MS_S_COUNTRY
|
||||
0035 MS_S_GETINT 0025 MS_S_SETINT
|
||||
002A MS_T_GETDATE 002C MS_T_GETTIME
|
||||
002B MS_T_SETDATE 002D MS_T_SETTIME 003B MS_X_CHDIR
|
||||
0043 MS_X_CHMOD 003E MS_X_CLOSE 0068 MS_X_COMMIT 003C MS_X_CREAT
|
||||
0047 MS_X_CURDIR 0057 MS_X_DATETIME 0045 MS_X_DUP
|
||||
0046 MS_X_DUP2 004B MS_X_EXEC 004C MS_X_EXIT 0060 MS_X_EXPAND
|
||||
004E MS_X_FIRST 6601 MS_X_GETCP 0044 MS_X_IOCTL 0042 MS_X_LSEEK 0039 MS_X_MKDIR
|
||||
005B MS_X_MKNEW 005A MS_X_MKTEMP 004F MS_X_NEXT 003D MS_X_OPEN
|
||||
003F MS_X_READ 0056 MS_X_RENAME 003A MS_X_RMDIR 6602 MS_X_SETCP
|
||||
0067 MS_X_SETHC 0041 MS_X_UNLINK 004D MS_X_WAIT 0040 MS_X_WRITE
|
||||
0040 NO_CRIT_ERRORS 000F NUM_SHARE_STUB_ENTRIES 0800 OFLW_FLAG
|
||||
0008 OK_FAIL 0020 OK_IGNORE 0010 OK_RETRY 0018 OK_RF 0030 OK_RI
|
||||
0038 OK_RIF 0022 PASSWD_CHECK 0021 PASSWD_CHMOD
|
||||
0020 PASSWD_CREAT 0004 PROC_DEVIN 0001 PROC_IDLE 0002 PROC_INT28
|
||||
0003 PROC_KEYIN 0060 PSPILEN 0100 PSPLEN 0DDD PWM_ANY 0111 PWM_D
|
||||
0222 PWM_E 00F0 PWM_GROUP 000F PWM_OWNER 0888 PWM_R 0444 PWM_W
|
||||
0F00 PWM_WORLD 0016 RH0_LEN 000D RH13_LEN 000D RH14_LEN 0017 RH19_LEN
|
||||
000F RH1_LEN 0015 RH24_LEN 0018 RH2_LEN 001E RH4_LEN 000E RH5_LEN
|
||||
0200 RHS_BUSY 0100 RHS_DONE 8000 RHS_ERROR 0400 RHS_IC 0800 RHS_RM
|
||||
001E RH_SIZE 007F RQ19_DSP_GET 005F RQ19_DSP_SET
|
||||
0042 RQ19_FORMAT 0060 RQ19_GET 004D RQ19_PRP_END
|
||||
004C RQ19_PRP_START 006B RQ19_QRY_PRP
|
||||
006A RQ19_QRY_SEL 0061 RQ19_READ 004A RQ19_SELECT
|
||||
0040 RQ19_SET 0062 RQ19_VERIFY 0041 RQ19_WRITE 007F RUBOUT
|
||||
0080 SIGN_FLAG 0010 SSTOR_SPACE 00C0 STACK_SIZE 0003 STDAUX
|
||||
0002 STDERR 0000 STDIN 0001 STDOUT 0004 STDPRN 0018 S_CLOSE
|
||||
002C S_CLOSE_FILES 0020 S_CLOSE_IF_OPEN
|
||||
0024 S_DENY_IF_OPEN 0010 S_DISCARD 000C S_FDOSRW
|
||||
0028 S_GET_LIST_ENTRY 0000 S_LOCKS 001C S_OM_COMPAT
|
||||
0014 S_OPEN 0008 S_RECORD 0004 S_UPDATE 0009 TAB 0001 TERM_BREAK
|
||||
0002 TERM_ERROR 0000 TERM_NORMAL 0003 TERM_RESIDENT
|
||||
FFFF TRUE 0006 TRUE_VERSION 0014 XFNMAX 0040 ZERO_FLAG
|
||||
0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
00D4 AL_NOGO 00CC AL_OK 00F0 BREAK_C10 00F1 BREAK_C15 00F2 BREAK_C20
|
||||
00D7 BREAK_CHECK 0325 CHAR_CHECK 0341 CHAR_CHECK10
|
||||
038E CHAR_CHECK20 0000 CHAR_ERROR 01BC CHAR_GET 01CB CHAR_GET20
|
||||
01CE CHAR_GET30 019B CMDLINE_READ 0198 CMDLINE_READ_WAIT
|
||||
028C COOKED_O10 02A0 COOKED_O20 02AD COOKED_O30 027E COOKED_OUT
|
||||
01B4 COOKED_READ 01B1 COOKED_READ_WAIT 0174 COOKED_S10
|
||||
017B COOKED_S20 017E COOKED_S30 018C COOKED_S40 0195 COOKED_S45 0197 COOKED_S50
|
||||
014D COOKED_STATUS 01DA COOKED_WRITE 01FF COOK_W03
|
||||
021B COOK_W04 022A COOK_W05 022E COOK_W10 0254 COOK_W20 025E COOK_W30
|
||||
0262 COOK_W40 0274 COOK_W50 0278 COOK_W60 027B COOK_W70 027D COOK_W80
|
||||
02EC DEVICE_COMMON 02FE DEVICE_COMMON10
|
||||
031D DEVICE_COMMON20 0000 DEVICE_DRIVER
|
||||
039D DEVICE_INSTAT 02E6 DEVICE_READ 03B8 DEVICE_REQ
|
||||
02EA DEVICE_WRITE 013C DO23_10 0147 DO23_20 014A DO23_30
|
||||
0000 DOS_ENTRY 0014 F03_10 00A6 F0B_EXIT 00B1 F0C_10 00BB F0C_20
|
||||
001F F456COMMON 0000 FUNC01 0004 FUNC02 0011 FUNC03 0017 FUNC04
|
||||
001C FUNC05 0046 FUNC06 0059 FUNC07 0061 FUNC08 007D FUNC09
|
||||
0091 FUNC0A 009A FUNC0B 00A8 FUNC0C 007C FUNCIC10 0067 FUNCICEXIT
|
||||
0000 GET_DSEG 00F8 GO_INT23 038F HNDL_INSTAT 0030 HNDL_W10
|
||||
003D HNDL_W20 0044 HNDL_W30 0020 HNDL_WRITE 02B2 IDLE_DEV 02C1 IDLE_DEV10
|
||||
02DE IDLE_DEV20 02E2 IDLE_DEV30 02E4 IDLE_DEV40 0000 IFN2DHNDL
|
||||
0000 INT21_ENTRY 0000 INT21_FUNC 03F3 IS_DEV10 0409 IS_DEV20
|
||||
040A IS_DEV30 03D5 IS_DEVICE 040D IS_DEV_BAD 0456 OC_PRN10 046D OC_PRN20
|
||||
048C OC_PRN30 0413 OPEN_OR_CLOSE_PRN 01AA RAW_READ
|
||||
01A7 RAW_READ_WAIT 0000 READTIMEANDDATE 0000 READ_LINE
|
||||
0000 RELOAD_REGISTERS 01D7 STDOUT_COOKED_WRITE
|
||||
UNCICEXIT
|
||||
0000 GET_DSEG 00F8 GO_INT23 038F HNDL_INSTAT 0030 HNDL_W10
|
||||
003D HNDL_W2
|
||||
1921
IBMDOS/BIN/CMDLINE.LST
Normal file
1921
IBMDOS/BIN/CMDLINE.LST
Normal file
File diff suppressed because it is too large
Load Diff
BIN
IBMDOS/BIN/CMDLINE.OBJ
Normal file
BIN
IBMDOS/BIN/CMDLINE.OBJ
Normal file
Binary file not shown.
133
IBMDOS/BIN/CMDLINE.SYM
Normal file
133
IBMDOS/BIN/CMDLINE.SYM
Normal file
@@ -0,0 +1,133 @@
|
||||
0000 VARIABLES
|
||||
0000 CLE_STATE 0000 COLUMN 0000 CON_DEVICE 0000 DMD_ID
|
||||
0006 DMD_IDLE_FLAGS 0003 DMD_LEN 0008 DMD_NAME 0001 DMD_PSP
|
||||
0000 EDIT_CNTRL 00B7 EDIT_END 0002 EDIT_FUNC 0001 EDIT_SIZE 0003 EDIT_TABLE
|
||||
0000 ESC_CHAR 0000 FDOS_DATA 0001 REG_AH 0000 REG_AL 0000 REG_AX
|
||||
0003 REG_BH 0002 REG_BL 000C REG_BP 0002 REG_BX 0005 REG_CH
|
||||
0004 REG_CL 0014 REG_CS 0004 REG_CX 0007 REG_DH 000A REG_DI
|
||||
0006 REG_DL 000E REG_DS 0006 REG_DX 0010 REG_ES 0016 REG_FLAGS
|
||||
0012 REG_IP 0008 REG_SI 0012 RH0_BPBOFF 0014 RH0_BPBSEG 0016 RH0_DRIVE
|
||||
000D RH0_NUNITS 000E RH0_RESIDENT 000D RH19_CATEGORY
|
||||
0011 RH19_DI 0013 RH19_GENPB 000D RH19_MAJOR 000E RH19_MINOR 000F RH19_SI
|
||||
000D RH1_MEDIA 000E RH1_RETURN 000F RH1_VOLID 000E RH24_CMD 0011 RH24_RESVD
|
||||
000F RH24_STATUS 0012 RH2_BPB 0012 RH2_BPBOFF 0014 RH2_BPBSEG
|
||||
000E RH2_BUFFER 000D RH2_MEDIA 001A RH4_BIGSECTOR
|
||||
001C RH4_BIGSECTORHI 001A RH4_BIGSECTORLO 000E RH4_BUFFER
|
||||
000E RH4_BUFOFF 0010 RH4_BUFSEG 0012 RH4_COUNT 000D RH4_MEDIA 000D RH4_RIC
|
||||
0014 RH4_SECTOR 0016 RH4_VOLID 000D RH5_CHAR 000D RH5_RIC 0002 RH_CMD
|
||||
0000 RH_LEN 0003 RH_STATUS 0001 RH_UNIT FFF8 RL_BUFOFF FFF8 RL_BUFPTR
|
||||
FFFA RL_BUFSEG FFF4 RL_FLAGS FFEA RL_HIST_RECL
|
||||
FFE8 RL_HIST_SAVE FFE4 RL_HIST_SEG
|
||||
FFE6 RL_HIST_SIZE FFF6 RL_INICOL FFFE RL_INPUT FFF0 RL_KANJI
|
||||
FFF2 RL_MAXLEN FFFC RL_OUTPUT FFEE RL_SAVMAX FFEC RL_SAVPOS 0000 SAVBUF
|
||||
|
||||
0000 NUMBERS
|
||||
0007 BELL 0001 CARRY_FLAG 0010 CHAR_ALPHAN 0004 CHAR_CTL
|
||||
0008 CHAR_KANJI 0031 CHAR_ONECOL 0020 CHAR_OTHER 008E CHAR_SIZE
|
||||
0001 CHAR_SPACE 0080 CHAR_STD 0002 CHAR_TAB 0002 CMD_BUILD_BPB
|
||||
000E CMD_DEVICE_CLOSE 000D CMD_DEVICE_OPEN
|
||||
000F CMD_FIXED_MEDIA 0013 CMD_GENERIC_IOCTL
|
||||
0017 CMD_GET_DEVICE 0000 CMD_INIT 0004 CMD_INPUT
|
||||
0007 CMD_INPUT_FLUSH 0003 CMD_INPUT_IOCTL
|
||||
0005 CMD_INPUT_NOWAIT 0006 CMD_INPUT_STATUS
|
||||
0001 CMD_MEDIA_CHECK 0008 CMD_OUTPUT 000B CMD_OUTPUT_FLUSH
|
||||
000C CMD_OUTPUT_IOCTL 000A CMD_OUTPUT_STATUS
|
||||
0009 CMD_OUTPUT_VERIFY 0019 CMD_QUERY_IOCTL
|
||||
0018 CMD_SET_DEVICE 000D CR 005E CTL 0001 CTLA
|
||||
0002 CTLB 001C CTLBS 0003 CTLC 0004 CTLD 0005 CTLE
|
||||
0006 CTLF 0007 CTLG 0008 CTLH 0009 CTLI 000A CTLJ
|
||||
000B CTLK 000D CTLM 0010 CTLP 0011 CTLQ 0012 CTLR
|
||||
0013 CTLS 0014 CTLT 0015 CTLU 001F CTLUB 001E CTLUP
|
||||
0016 CTLV 0017 CTLW 0018 CTLX 0019 CTLY 001A CTLZ
|
||||
0002 DA_BIGDRV 8000 DA_CHARDEV 0040 DA_GETSET 4000 DA_IOCTL 0001 DA_ISCIN
|
||||
0008 DA_ISCLK 0002 DA_ISCOT 0004 DA_ISNUL 2000 DA_NONIBM 2000 DA_OTILBSY
|
||||
0080 DA_QUERY 0800 DA_REMOVE 0010 DA_SPECIAL 007F DEL 0004 DH_ATTRIB
|
||||
0008 DH_INTERRUPT 000A DH_NAME 0000 DH_NEXT 0000 DH_NEXTOFF
|
||||
0002 DH_NEXTSEG 0006 DH_STRATEGY 0400 DIR_FLAG 0080 DISABLE
|
||||
8000 DISABLE_MASK 0008 DMD_NAME_LEN 0021 DOS_INT
|
||||
0004 EDIT_LEN 0002 ERR_ABORT 0003 ERR_FAIL 0000 ERR_IGNORE 0001 ERR_RETRY
|
||||
001B ESC 0001 ESC_CODE 0000 FALSE 0029 FASTCON_INT
|
||||
0001 IDLE_COMMAND FFFF IDLE_DETECT
|
||||
C000 IDLE_DISABLE 0002 IDLE_DOSFUNC 8000 IDLE_INIT
|
||||
0004 IDLE_INT28 4000 IDLE_ON 004D IDM 005A IDZ 0200 INT_FLAG
|
||||
000A LF 000D MAX_FILELEN 0050 MAX_PATHLEN
|
||||
0003 MS_A_READ 0004 MS_A_WRITE 000C MS_C_FLUSH 0008 MS_C_NOECHO
|
||||
0007 MS_C_RAWIN 0006 MS_C_RAWIO 0001 MS_C_READ 000A MS_C_READSTR
|
||||
000B MS_C_STAT 0002 MS_C_WRITE 0009 MS_C_WRITESTR
|
||||
001B MS_DRV_ALLOC 001C MS_DRV_ALLOCSPEC
|
||||
000D MS_DRV_ALLRESET 0019 MS_DRV_GET 000E MS_DRV_SET
|
||||
0036 MS_DRV_SPACE 0010 MS_F_CLOSE 0013 MS_F_DELETE
|
||||
002F MS_F_DMAGET 001A MS_F_DMAOFF 0059 MS_F_ERROR
|
||||
0054 MS_F_GETVERIFY 005C MS_F_LOCK 0016 MS_F_MAKE 000F MS_F_OPEN
|
||||
0029 MS_F_PARSE 0024 MS_F_RANDREC 0014 MS_F_READ
|
||||
0027 MS_F_READBLK 0021 MS_F_READRAND
|
||||
0017 MS_F_RENAME 0011 MS_F_SFIRST 0023 MS_F_SIZE
|
||||
0012 MS_F_SNEXT 002E MS_F_VERIFY 0015 MS_F_WRITE
|
||||
0028 MS_F_WRITEBLK 0022 MS_F_WRITERAND 0005 MS_L_WRITE
|
||||
0048 MS_M_ALLOC 0049 MS_M_FREE 004A MS_M_SETBLOCK
|
||||
0058 MS_M_STRATEGY 0062 MS_P_GETPSP 0026 MS_P_MKPSP
|
||||
0050 MS_P_SETPSP 0000 MS_P_TERMCPM
|
||||
0031 MS_P_TERMKEEP 0030 MS_S_BDOSVER 0033 MS_S_BREAK
|
||||
0038 MS_S_COUNTRY 0035 MS_S_GETINT
|
||||
0025 MS_S_SETINT 002A MS_T_GETDATE
|
||||
002C MS_T_GETTIME 002B MS_T_SETDATE
|
||||
002D MS_T_SETTIME 003B MS_X_CHDIR 0043 MS_X_CHMOD 003E MS_X_CLOSE
|
||||
0068 MS_X_COMMIT 003C MS_X_CREAT 0047 MS_X_CURDIR
|
||||
0057 MS_X_DATETIME 0045 MS_X_DUP 0046 MS_X_DUP2 004B MS_X_EXEC
|
||||
004C MS_X_EXIT 0060 MS_X_EXPAND 004E MS_X_FIRST 6601 MS_X_GETCP
|
||||
0044 MS_X_IOCTL 0042 MS_X_LSEEK 0039 MS_X_MKDIR 005B MS_X_MKNEW
|
||||
005A MS_X_MKTEMP 004F MS_X_NEXT 003D MS_X_OPEN 003F MS_X_READ
|
||||
0056 MS_X_RENAME 003A MS_X_RMDIR 6602 MS_X_SETCP 0067 MS_X_SETHC
|
||||
0041 MS_X_UNLINK 004D MS_X_WAIT 0040 MS_X_WRITE 0000 NESC_CODE
|
||||
0040 NO_CRIT_ERRORS 0800 OFLW_FLAG 0008 OK_FAIL 0020 OK_IGNORE
|
||||
0010 OK_RETRY 0018 OK_RF 0030 OK_RI 0038 OK_RIF 0004 PROC_DEVIN
|
||||
0001 PROC_IDLE 0002 PROC_INT28 0003 PROC_KEYIN 0016 RH0_LEN 000D RH13_LEN
|
||||
000D RH14_LEN 0017 RH19_LEN 000F RH1_LEN 0015 RH24_LEN 0018 RH2_LEN
|
||||
001E RH4_LEN 000E RH5_LEN 0200 RHS_BUSY 0100 RHS_DONE 8000 RHS_ERROR
|
||||
0400 RHS_IC 0800 RHS_RM 001E RH_SIZE 0020 RLF_DIRTY
|
||||
0001 RLF_ENHANCED 0080 RLF_INROOT 0002 RLF_INS 0040 RLF_KANJI
|
||||
0008 RLF_MATCH 0010 RLF_RECALLED 0004 RLF_SEARCH 001C RL_LENGTH
|
||||
007F RQ19_DSP_GET 005F RQ19_DSP_SET
|
||||
0042 RQ19_FORMAT 0060 RQ19_GET 004D RQ19_PRP_END
|
||||
004C RQ19_PRP_START 006B RQ19_QRY_PRP
|
||||
006A RQ19_QRY_SEL 0061 RQ19_READ 004A RQ19_SELECT
|
||||
0040 RQ19_SET 0062 RQ19_VERIFY 0041 RQ19_WRITE 007F RUBOUT
|
||||
0080 SAVBUF_SIZE 0080 SIGN_FLAG 00C0 STACK_SIZE 0003 STDAUX
|
||||
0002 STDERR 0000 STDIN 0001 STDOUT 0004 STDPRN 0009 TAB
|
||||
0001 TERM_BREAK 0002 TERM_ERROR 0000 TERM_NORMAL
|
||||
0003 TERM_RESIDENT FFFF TRUE 0006 TRUE_VERSION
|
||||
0040 ZERO_FLAG 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
02FB BACK_ONE_CHAR 0157 BELL_CHAR 04AC BLOCK_O10 04B2 BLOCK_O20
|
||||
04A9 BLOCK_OUT 0306 BOC_10 031A BOC_20 04A7 BS_OUT 048D CALC_C10
|
||||
0492 CALC_C20 0496 CALC_C30 047E CALC_CHARS 046D CHAR_I10 047D CHAR_I20
|
||||
0453 CHAR_INFO 0452 CHAR_T100 0450 CHAR_T90 040F CHAR_TYPE
|
||||
0000 CMDLINE_READ 0000 COOKED_WRITE 035A COPY_A10
|
||||
0367 COPY_A20 0380 COPY_A25 0389 COPY_A30 0354 COPY_ALL 0337 COPY_C10
|
||||
032D COPY_C5 0323 COPY_CHAR 0338 COPY_TILL_CHAR 0407 CTLAT_CHAR
|
||||
0000 DBCS_LEAD 0249 DELF_CHAR 0265 DELN_CHAR 0278 DELN_W10 02AD DELN_W20
|
||||
0000 DELN_WORD 025B DELP_CHAR 0000 DEL_BOL 0000 DEL_CUR_HISTORY_BUFFER
|
||||
0250 DEL_EOL 025A DEL_EOL10 0000 DEL_HISTORY_BUFFERS 02D7 DEL_L10
|
||||
02B9 DEL_LINE 0000 DEVICE_DRIVER 03FF EOF_CHAR 0530 GET_C05
|
||||
0547 GET_C10 04F6 GET_CHAR 0000 GET_DSEG 01F6 GOTO_B10 01E3 GOTO_BOL
|
||||
0000 GOTO_EOL 03F8 IGNORE_CHAR 0000 INIT_HISTORY
|
||||
010F INTSAVE_C10 00F2 INTSAVE_CHAR 0000 MATCH_CMD
|
||||
0000 MATCH_WORD 03F9 MEM_LINE 034C MOVE_ALONG 0344 MOVE_TILL_CHAR
|
||||
01FE NEXT_C05 020D NEXT_C10 01F7 NEXT_CHAR 0000 NEXT_CMD 0000 NEXT_WORD
|
||||
0353 NO_MOVE 0225 PREV_C10 0219 PREV_CHAR 0000 PREV_CMD 0230 PREV_W20
|
||||
0248 PREV_W30 0000 PREV_WORD 04C2 PUTS_S20 04C3 PUT_CHAR 04B7 PUT_S10
|
||||
04B3 PUT_STRING 0000 RAW_READ 0000 READ_LINE 0035 READ_LINE10
|
||||
003A READ_LINE20 006F READ_LINE30
|
||||
0083 READ_LINE40 0088 READ_LINE_LOOP 00AC READ_LL10
|
||||
00D6 READ_LL20 00E1 READ_LL_FOUND_CMD 0098 READ_LL_NEXT_CMD
|
||||
0049 RET_STRING 006B RET_STRING10 00E9 SAVE_C10 013E SAVE_C30
|
||||
015C SAVE_C50 0194 SAVE_C60 00EA SAVE_CHAR 0000 SAVE_HISTORY
|
||||
01D1 SAVE_K10 01AD SAVE_KANJI 03F8 SAVE_L10 03E3 SAVE_L5 03CE SAVE_LINE
|
||||
0000 SEARCH_CMD 013B SIMPLE_S10 0128 SIMPLE_SAVE
|
||||
02D8 SKIP_ONE_CHAR 038A SKIP_TILL_CHAR 02F6 SOC_10
|
||||
02F7 SOC_20 04A3 SPACE_OUT 0398 STC_10 03B2 STC_20 03BE STC_30
|
||||
03C7 STC_40 01D2 TOGGLE_INS 01D8 TOGGLE_SEARCH 04DC WRITE_CHAR
|
||||
0AC READ_LL10
|
||||
00D6 READ_LL20 00E1 READ_LL_FOUND_CMD 0098 READ_LL_NEXT_CMD
|
||||
0049 RET_STRING 006B RET_STRING10 00E9 SAVE_C10 0
|
||||
BIN
IBMDOS/BIN/DIRS.OBJ
Normal file
BIN
IBMDOS/BIN/DIRS.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/DISK.OBJ
Normal file
BIN
IBMDOS/BIN/DISK.OBJ
Normal file
Binary file not shown.
1024
IBMDOS/BIN/DOSMEM.LST
Normal file
1024
IBMDOS/BIN/DOSMEM.LST
Normal file
File diff suppressed because it is too large
Load Diff
BIN
IBMDOS/BIN/DOSMEM.OBJ
Normal file
BIN
IBMDOS/BIN/DOSMEM.OBJ
Normal file
Binary file not shown.
101
IBMDOS/BIN/DOSMEM.SYM
Normal file
101
IBMDOS/BIN/DOSMEM.SYM
Normal file
@@ -0,0 +1,101 @@
|
||||
0000 VARIABLES
|
||||
0000 CURRENT_PSP 0000 DMD_ADDRESS 0000 DMD_ID
|
||||
0006 DMD_IDLE_FLAGS 0003 DMD_LEN 0008 DMD_NAME 0000 DMD_OWNER
|
||||
0001 DMD_PSP 0000 DMD_ROOT 0000 DMD_UPPER_LINK
|
||||
0000 DMD_UPPER_ROOT 00B5 F58_TBL 0000 FDOS_DATA
|
||||
0000 LOCK_TABLES 0000 LOCUS 0000 MEM_STRATEGY
|
||||
0001 REG_AH 0000 REG_AL 0000 REG_AX 0003 REG_BH 0002 REG_BL
|
||||
000C REG_BP 0002 REG_BX 0005 REG_CH 0004 REG_CL 0014 REG_CS
|
||||
0004 REG_CX 0007 REG_DH 000A REG_DI 0006 REG_DL 000E REG_DS
|
||||
0006 REG_DX 0010 REG_ES 0016 REG_FLAGS 0012 REG_IP 0008 REG_SI
|
||||
0000 UNLOCK_TABLES
|
||||
|
||||
0000 NUMBERS
|
||||
0004 ACT_ABORT 0002 ACT_DELAY 0006 ACT_IGNORE 0001 ACT_RETRY 0005 ACT_TERM
|
||||
0007 ACT_URETRY 0003 ACT_USER 0001 BEST_FIT 0001 CARRY_FLAG
|
||||
0007 CLASS_APPLIC 0003 CLASS_AUTHOR
|
||||
000C CLASS_EXISTS 0009 CLASS_FORMAT
|
||||
0005 CLASS_HARDWARE 0004 CLASS_INTERNAL
|
||||
000A CLASS_LOCKED 0008 CLASS_LOST 000B CLASS_MEDIA
|
||||
0001 CLASS_RESOURCE 0006 CLASS_SYSTEM 0002 CLASS_TEMP
|
||||
000D CLASS_UNKNOWN 0400 DIR_FLAG 0008 DMD_NAME_LEN
|
||||
0021 DOS_INT FFFB ED_ACCESS FFF4 ED_ACC_CODE FFAB ED_ASSIGN
|
||||
FFEA ED_BADCMD FFE9 ED_BADDATA FFE6 ED_BADMEDIA
|
||||
FFE8 ED_BADRHLEN FFE7 ED_BADSEEK FFEC ED_BADUNIT FFF7 ED_BLOCK
|
||||
FFA6 ED_COMPONENT FFF3 ED_DATA FFEF ED_DEVICE FFF0 ED_DIR
|
||||
FFDE ED_DISKCHG FFF9 ED_DMD FFF1 ED_DRIVE FFF6 ED_ENVIRON FFB0 ED_EXISTS
|
||||
FFAD ED_FAIL FFFE ED_FILE FFF5 ED_FORMAT FFFF ED_FUNCTION
|
||||
FFE1 ED_GENFAIL FFFC ED_HANDLE FFFA ED_H_MATCH FFA6 ED_LASTERROR
|
||||
FFDF ED_LOCKFAIL FFAE ED_MAKE FFF8 ED_MEMORY FFCE ED_NET
|
||||
FFBF ED_NETACCESS FFB3 ED_NETCOMM FFA7 ED_NETFUNC FFB1 ED_NETLOG
|
||||
FFB7 ED_NETPWD FFB5 ED_NETREQ FFB2 ED_NETSRVR FFB4 ED_NETTIME FFB6 ED_NETVER
|
||||
FFA8 ED_NETWRITE FFDD ED_NOFCBS FFDC ED_NOLOCKS FFE4 ED_NOPAPER
|
||||
FFEB ED_NOTREADY FFA9 ED_PARAM FFAA ED_PASSWORD
|
||||
FFFD ED_PATH FFED ED_PROTECT FFE2 ED_RDFAIL FFE5 ED_RNF FFEE ED_ROOM
|
||||
FFE0 ED_SHAREFAIL FFAC ED_STRUCT FFE3 ED_WRFAIL 0002 ERR_ABORT
|
||||
0003 ERR_FAIL 0000 ERR_IGNORE 0001 ERR_RETRY 0000 FALSE 0004 FIRST_FIT
|
||||
0001 IDLE_COMMAND FFFF IDLE_DETECT
|
||||
C000 IDLE_DISABLE 0002 IDLE_DOSFUNC 8000 IDLE_INIT
|
||||
0004 IDLE_INT28 4000 IDLE_ON 004D IDM 005A IDZ 0200 INT_FLAG
|
||||
0002 LAST_FIT 0002 LOC_BLOCK 0004 LOC_CHAR 0005 LOC_MEMORY 0003 LOC_NET
|
||||
0001 LOC_UNKNOWN 000D MAX_FILELEN
|
||||
0050 MAX_PATHLEN 0003 MS_A_READ 0004 MS_A_WRITE 000C MS_C_FLUSH
|
||||
0008 MS_C_NOECHO 0007 MS_C_RAWIN 0006 MS_C_RAWIO 0001 MS_C_READ
|
||||
000A MS_C_READSTR 000B MS_C_STAT 0002 MS_C_WRITE
|
||||
0009 MS_C_WRITESTR 001B MS_DRV_ALLOC
|
||||
001C MS_DRV_ALLOCSPEC 000D MS_DRV_ALLRESET 0019 MS_DRV_GET
|
||||
000E MS_DRV_SET 0036 MS_DRV_SPACE 0010 MS_F_CLOSE
|
||||
0013 MS_F_DELETE 002F MS_F_DMAGET
|
||||
001A MS_F_DMAOFF 0059 MS_F_ERROR 0054 MS_F_GETVERIFY
|
||||
005C MS_F_LOCK 0016 MS_F_MAKE 000F MS_F_OPEN 0029 MS_F_PARSE
|
||||
0024 MS_F_RANDREC 0014 MS_F_READ 0027 MS_F_READBLK
|
||||
0021 MS_F_READRAND 0017 MS_F_RENAME
|
||||
0011 MS_F_SFIRST 0023 MS_F_SIZE 0012 MS_F_SNEXT
|
||||
002E MS_F_VERIFY 0015 MS_F_WRITE 0028 MS_F_WRITEBLK
|
||||
0022 MS_F_WRITERAND 0005 MS_L_WRITE 0048 MS_M_ALLOC 0049 MS_M_FREE
|
||||
004A MS_M_SETBLOCK 0058 MS_M_STRATEGY
|
||||
0062 MS_P_GETPSP 0026 MS_P_MKPSP 0050 MS_P_SETPSP
|
||||
0000 MS_P_TERMCPM 0031 MS_P_TERMKEEP
|
||||
0030 MS_S_BDOSVER 0033 MS_S_BREAK 0038 MS_S_COUNTRY
|
||||
0035 MS_S_GETINT 0025 MS_S_SETINT
|
||||
002A MS_T_GETDATE 002C MS_T_GETTIME
|
||||
002B MS_T_SETDATE 002D MS_T_SETTIME 003B MS_X_CHDIR
|
||||
0043 MS_X_CHMOD 003E MS_X_CLOSE 0068 MS_X_COMMIT 003C MS_X_CREAT
|
||||
0047 MS_X_CURDIR 0057 MS_X_DATETIME 0045 MS_X_DUP
|
||||
0046 MS_X_DUP2 004B MS_X_EXEC 004C MS_X_EXIT 0060 MS_X_EXPAND
|
||||
004E MS_X_FIRST 6601 MS_X_GETCP 0044 MS_X_IOCTL 0042 MS_X_LSEEK 0039 MS_X_MKDIR
|
||||
005B MS_X_MKNEW 005A MS_X_MKTEMP 004F MS_X_NEXT 003D MS_X_OPEN
|
||||
003F MS_X_READ 0056 MS_X_RENAME 003A MS_X_RMDIR 6602 MS_X_SETCP
|
||||
0067 MS_X_SETHC 0041 MS_X_UNLINK 004D MS_X_WAIT 0040 MS_X_WRITE
|
||||
0040 NO_CRIT_ERRORS 0800 OFLW_FLAG 0008 OK_FAIL 0020 OK_IGNORE
|
||||
0010 OK_RETRY 0018 OK_RF 0030 OK_RI 0038 OK_RIF 0004 PROC_DEVIN
|
||||
0001 PROC_IDLE 0002 PROC_INT28 0003 PROC_KEYIN 0080 SIGN_FLAG 00C0 STACK_SIZE
|
||||
0003 STDAUX 0002 STDERR 0000 STDIN 0001 STDOUT 0004 STDPRN
|
||||
0001 TERM_BREAK 0002 TERM_ERROR 0000 TERM_NORMAL
|
||||
0003 TERM_RESIDENT FFFF TRUE 0006 TRUE_VERSION
|
||||
0080 UPPER_FIT 0040 UPPER_ONLY_FIT 0040 ZERO_FLAG 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
025F CHECK_DMD_DONE 025E CHECK_DMD_ERROR
|
||||
024F CHECK_DMD_ID 0000 ERROR_EXIT 001E F48_10 00B0 F58_ERROR
|
||||
00C8 F58_GET_LINK 00BD F58_GET_STRATEGY
|
||||
00CE F58_SET_LINK 00E9 F58_SET_LINK10
|
||||
0101 F58_SET_LINK20 00C1 F58_SET_STRATEGY 0102 FREE_ALL
|
||||
0135 FREE_ALL_END 0137 FREE_ALL_FAIL
|
||||
0106 FREE_ALL_LOOP 011B FREE_ALL_NEXT 0000 FUNC48
|
||||
002D FUNC49 004A FUNC49_10 004C FUNC49_20 0069 FUNC4A 009A FUNC58
|
||||
0247 GET_DMD 021B MAKE_DMD 0246 MAKE_DMD_DONE
|
||||
0058 MEMORY_AVBL_ERROR 005D MEMORY_ERROR
|
||||
0051 MEMORY_EXIT 01ED MERGE_MEM 0218 MERGE_MEM_DONE
|
||||
0219 MERGE_MEM_QUIT 01E2 NEXT_DMD 0000 RELOAD_ES
|
||||
0000 RETURN_AX_CLC 0000 RETURN_BX 0159 SEARCH_MEM
|
||||
018B SEARCH_MEM40 01A1 SEARCH_MEM50
|
||||
01D6 SEARCH_MEM_BAD 01D8 SEARCH_MEM_ERROR
|
||||
01C8 SEARCH_MEM_EXIT 0169 SEARCH_MEM_INIT
|
||||
016E SEARCH_MEM_LOOP 01AA SEARCH_MEM_NEXT
|
||||
01DA SEARCH_NEXT_DMD 0138 SET_OWNER 0153 S_O10 0157 S_O20
|
||||
0000 TOUPPER
|
||||
C58
|
||||
0247 GET_DMD 021B MAKE_DMD 0246 MAKE_DMD_DONE
|
||||
0058 MEMORY_AVBL_ERROR 005D MEMORY_ERROR
|
||||
0051 MEMORY_
|
||||
1475
IBMDOS/BIN/ERROR.LST
Normal file
1475
IBMDOS/BIN/ERROR.LST
Normal file
File diff suppressed because it is too large
Load Diff
BIN
IBMDOS/BIN/ERROR.OBJ
Normal file
BIN
IBMDOS/BIN/ERROR.OBJ
Normal file
Binary file not shown.
152
IBMDOS/BIN/ERROR.SYM
Normal file
152
IBMDOS/BIN/ERROR.SYM
Normal file
@@ -0,0 +1,152 @@
|
||||
0000 VARIABLES
|
||||
0074 CRITICAL_ERROR 0000 CURRENT_PSP
|
||||
00B0 DEFAULT_ERROR 0000 DMD_ID 0006 DMD_IDLE_FLAGS
|
||||
0003 DMD_LEN 0008 DMD_NAME 0001 DMD_PSP 0000 ERROR_ACTION
|
||||
0000 ERROR_CLASS 0000 ERROR_CODE 0000 ERROR_DEV
|
||||
0000 ERROR_DRIVE 0000 ERROR_LOCUS 0000 ERR_DRV
|
||||
0000 FDOS_DATA 0008 FD_ADJUST 0008 FD_ATTRIB 0002 FD_BPBOFF 0004 FD_BPBSEG
|
||||
0004 FD_BUF 0004 FD_BUFOFF 0006 FD_BUFSEG 0008 FD_COUNT 0006 FD_DATE
|
||||
000A FD_DDIO_DMAOFF 000C FD_DDIO_DMASEG
|
||||
0002 FD_DDIO_DRV_OP 0004 FD_DDIO_NSECTORS
|
||||
0008 FD_DDIO_STARTHIGH 0006 FD_DDIO_STARTLOW 0006 FD_DDSCOFF
|
||||
0008 FD_DDSCSEG 0004 FD_DPB 0004 FD_DPBOFF 0006 FD_DPBSEG 0002 FD_DRIVE
|
||||
0002 FD_FCBADR 0006 FD_FCBCNT 0008 FD_FCBFUNC 0002 FD_FCBOFF 0004 FD_FCBSEG
|
||||
0006 FD_FLAG 0000 FD_FUNC 0002 FD_HANDLE 0004 FD_IOCTLFUNC
|
||||
0006 FD_IOCTLSTAT 0008 FD_LENGTH 000C FD_LFLAG 0008 FD_METHOD
|
||||
0006 FD_MODE 0002 FD_NAME 0002 FD_NAMEOFF 0004 FD_NAMESEG 0004 FD_NEWHND
|
||||
000A FD_NNAME 000A FD_NNAMEOFF 000C FD_NNAMESEG
|
||||
0002 FD_NUMOPEN 0004 FD_OFFSET 0002 FD_ONAME 0002 FD_ONAMEOFF
|
||||
0004 FD_ONAMESEG 0004 FD_PATH 0004 FD_PATHOFF 0006 FD_PATHSEG
|
||||
0002 FD_PSPSEG 0004 FD_SFLAG 0008 FD_TIME 0000 INDOS_FLAG
|
||||
0000 INT21REGS_PTR 0000 INTERNAL_FLAG 0000 LOCUS
|
||||
0000 LOGICAL_ERROR 0010 PSP_BREAK_CS
|
||||
000E PSP_BREAK_IP 0080 PSP_COMLEN 0081 PSP_COMLINE
|
||||
0050 PSP_DOSCALL 0052 PSP_DOSRETF
|
||||
002C PSP_ENVIRON 0014 PSP_ERROR_CS
|
||||
0012 PSP_ERROR_IP 005C PSP_FCB1 006C PSP_FCB2 0000 PSP_INT20
|
||||
0005 PSP_LONGCALL 0006 PSP_LONGOFF
|
||||
0008 PSP_LONGSEG 0002 PSP_MEMORY 0016 PSP_PARENT 0038 PSP_RES1
|
||||
003A PSP_RES2 003C PSP_RIC 000C PSP_TERM_CS
|
||||
000A PSP_TERM_IP 002E PSP_USERSP 0030 PSP_USERSS
|
||||
0040 PSP_VERSION 0032 PSP_XFNMAX 0018 PSP_XFT 0034 PSP_XFTOFF
|
||||
0034 PSP_XFTPTR 0036 PSP_XFTSEG 0001 REG_AH 0000 REG_AL 0000 REG_AX
|
||||
0003 REG_BH 0002 REG_BL 000C REG_BP 0002 REG_BX 0005 REG_CH
|
||||
0004 REG_CL 0014 REG_CS 0004 REG_CX 0007 REG_DH 000A REG_DI
|
||||
0006 REG_DL 000E REG_DS 0006 REG_DX 0010 REG_ES 0016 REG_FLAGS
|
||||
0012 REG_IP 0008 REG_SI 0000 RETRY_OFF 0000 RETRY_SP 0012 RH0_BPBOFF
|
||||
0014 RH0_BPBSEG 0016 RH0_DRIVE 000D RH0_NUNITS 000E RH0_RESIDENT
|
||||
000D RH19_CATEGORY 0011 RH19_DI 0013 RH19_GENPB 000D RH19_MAJOR
|
||||
000E RH19_MINOR 000F RH19_SI 000D RH1_MEDIA 000E RH1_RETURN 000F RH1_VOLID
|
||||
000E RH24_CMD 0011 RH24_RESVD 000F RH24_STATUS 0012 RH2_BPB
|
||||
0012 RH2_BPBOFF 0014 RH2_BPBSEG 000E RH2_BUFFER 000D RH2_MEDIA
|
||||
001A RH4_BIGSECTOR 001C RH4_BIGSECTORHI
|
||||
001A RH4_BIGSECTORLO 000E RH4_BUFFER 000E RH4_BUFOFF 0010 RH4_BUFSEG
|
||||
0012 RH4_COUNT 000D RH4_MEDIA 000D RH4_RIC 0014 RH4_SECTOR 0016 RH4_VOLID
|
||||
000D RH5_CHAR 000D RH5_RIC 0002 RH_CMD 0000 RH_LEN 0003 RH_STATUS
|
||||
0001 RH_UNIT 0000 RWMODE 0000 VALID_FLG
|
||||
|
||||
0000 NUMBERS
|
||||
0004 ACT_ABORT 0002 ACT_DELAY 0006 ACT_IGNORE 0001 ACT_RETRY 0005 ACT_TERM
|
||||
0007 ACT_URETRY 0003 ACT_USER 0007 BELL 0001 CARRY_FLAG
|
||||
0007 CLASS_APPLIC 0003 CLASS_AUTHOR
|
||||
000C CLASS_EXISTS 0009 CLASS_FORMAT
|
||||
0005 CLASS_HARDWARE 0004 CLASS_INTERNAL
|
||||
000A CLASS_LOCKED 0008 CLASS_LOST 000B CLASS_MEDIA
|
||||
0001 CLASS_RESOURCE 0006 CLASS_SYSTEM 0002 CLASS_TEMP
|
||||
000D CLASS_UNKNOWN 0002 CMD_BUILD_BPB
|
||||
000E CMD_DEVICE_CLOSE 000D CMD_DEVICE_OPEN
|
||||
000F CMD_FIXED_MEDIA 0013 CMD_GENERIC_IOCTL
|
||||
0017 CMD_GET_DEVICE 0000 CMD_INIT 0004 CMD_INPUT
|
||||
0007 CMD_INPUT_FLUSH 0003 CMD_INPUT_IOCTL
|
||||
0005 CMD_INPUT_NOWAIT 0006 CMD_INPUT_STATUS
|
||||
0001 CMD_MEDIA_CHECK 0008 CMD_OUTPUT 000B CMD_OUTPUT_FLUSH
|
||||
000C CMD_OUTPUT_IOCTL 000A CMD_OUTPUT_STATUS
|
||||
0009 CMD_OUTPUT_VERIFY 0019 CMD_QUERY_IOCTL
|
||||
0018 CMD_SET_DEVICE 000D CR 005E CTL 0001 CTLA
|
||||
0002 CTLB 001C CTLBS 0003 CTLC 0004 CTLD 0005 CTLE
|
||||
0006 CTLF 0007 CTLG 0008 CTLH 0009 CTLI 000A CTLJ
|
||||
000B CTLK 000D CTLM 0010 CTLP 0011 CTLQ 0012 CTLR
|
||||
0013 CTLS 0014 CTLT 0015 CTLU 001F CTLUB 001E CTLUP
|
||||
0016 CTLV 0017 CTLW 0018 CTLX 0019 CTLY 001A CTLZ
|
||||
007F DEL 0400 DIR_FLAG 0008 DMD_NAME_LEN 0021 DOS_INT
|
||||
FFFB ED_ACCESS FFF4 ED_ACC_CODE FFAB ED_ASSIGN FFEA ED_BADCMD
|
||||
FFE9 ED_BADDATA FFE6 ED_BADMEDIA FFE8 ED_BADRHLEN
|
||||
FFE7 ED_BADSEEK FFEC ED_BADUNIT FFF7 ED_BLOCK FFA6 ED_COMPONENT
|
||||
FFF3 ED_DATA FFEF ED_DEVICE FFF0 ED_DIR FFDE ED_DISKCHG FFF9 ED_DMD
|
||||
FFF1 ED_DRIVE FFF6 ED_ENVIRON FFB0 ED_EXISTS FFAD ED_FAIL FFFE ED_FILE
|
||||
FFF5 ED_FORMAT FFFF ED_FUNCTION FFE1 ED_GENFAIL FFFC ED_HANDLE
|
||||
FFFA ED_H_MATCH FFA6 ED_LASTERROR FFDF ED_LOCKFAIL
|
||||
FFAE ED_MAKE FFF8 ED_MEMORY FFCE ED_NET FFBF ED_NETACCESS
|
||||
FFB3 ED_NETCOMM FFA7 ED_NETFUNC FFB1 ED_NETLOG FFB7 ED_NETPWD FFB5 ED_NETREQ
|
||||
FFB2 ED_NETSRVR FFB4 ED_NETTIME FFB6 ED_NETVER FFA8 ED_NETWRITE
|
||||
FFDD ED_NOFCBS FFDC ED_NOLOCKS FFE4 ED_NOPAPER FFEB ED_NOTREADY
|
||||
FFA9 ED_PARAM FFAA ED_PASSWORD FFFD ED_PATH FFED ED_PROTECT
|
||||
FFE2 ED_RDFAIL FFE5 ED_RNF FFEE ED_ROOM FFE0 ED_SHAREFAIL
|
||||
FFAC ED_STRUCT FFE3 ED_WRFAIL 0002 ERR_ABORT 0003 ERR_FAIL 0000 ERR_IGNORE
|
||||
0001 ERR_RETRY 0002 ERR_TBL_ACTION 0001 ERR_TBL_CLASS
|
||||
0000 ERR_TBL_CODE 0004 ERR_TBL_LEN
|
||||
0003 ERR_TBL_LOCUS 001B ESC 0000 FALSE
|
||||
0007 FDOS_MAXPARM 0050 FD_COMMIT 0054 FD_DDIO
|
||||
0048 FD_DISKINFO 004B FD_EXEC 004C FD_EXIT 0055 FD_EXPAND
|
||||
004D FD_FCB 0049 FD_FLUSH 0052 FD_LOCK 0051 FD_NEW 0058 FD_REOPEN
|
||||
004A FD_SELECT 0001 IDLE_COMMAND FFFF IDLE_DETECT
|
||||
C000 IDLE_DISABLE 0002 IDLE_DOSFUNC 8000 IDLE_INIT
|
||||
0004 IDLE_INT28 4000 IDLE_ON 004D IDM 005A IDZ 0200 INT_FLAG
|
||||
000A LF 0002 LOC_BLOCK 0004 LOC_CHAR 0005 LOC_MEMORY 0003 LOC_NET
|
||||
0001 LOC_UNKNOWN 000D MAX_FILELEN
|
||||
0050 MAX_PATHLEN 0003 MS_A_READ 0004 MS_A_WRITE 000C MS_C_FLUSH
|
||||
0008 MS_C_NOECHO 0007 MS_C_RAWIN 0006 MS_C_RAWIO 0001 MS_C_READ
|
||||
000A MS_C_READSTR 000B MS_C_STAT 0002 MS_C_WRITE
|
||||
0009 MS_C_WRITESTR 001B MS_DRV_ALLOC
|
||||
001C MS_DRV_ALLOCSPEC 000D MS_DRV_ALLRESET 0019 MS_DRV_GET
|
||||
000E MS_DRV_SET 0036 MS_DRV_SPACE 0010 MS_F_CLOSE
|
||||
0013 MS_F_DELETE 002F MS_F_DMAGET
|
||||
001A MS_F_DMAOFF 0059 MS_F_ERROR 0054 MS_F_GETVERIFY
|
||||
005C MS_F_LOCK 0016 MS_F_MAKE 000F MS_F_OPEN 0029 MS_F_PARSE
|
||||
0024 MS_F_RANDREC 0014 MS_F_READ 0027 MS_F_READBLK
|
||||
0021 MS_F_READRAND 0017 MS_F_RENAME
|
||||
0011 MS_F_SFIRST 0023 MS_F_SIZE 0012 MS_F_SNEXT
|
||||
002E MS_F_VERIFY 0015 MS_F_WRITE 0028 MS_F_WRITEBLK
|
||||
0022 MS_F_WRITERAND 0005 MS_L_WRITE 0048 MS_M_ALLOC 0049 MS_M_FREE
|
||||
004A MS_M_SETBLOCK 0058 MS_M_STRATEGY
|
||||
0062 MS_P_GETPSP 0026 MS_P_MKPSP 0050 MS_P_SETPSP
|
||||
0000 MS_P_TERMCPM 0031 MS_P_TERMKEEP
|
||||
0030 MS_S_BDOSVER 0033 MS_S_BREAK 0038 MS_S_COUNTRY
|
||||
0035 MS_S_GETINT 0025 MS_S_SETINT
|
||||
002A MS_T_GETDATE 002C MS_T_GETTIME
|
||||
002B MS_T_SETDATE 002D MS_T_SETTIME 003B MS_X_CHDIR
|
||||
0043 MS_X_CHMOD 003E MS_X_CLOSE 0068 MS_X_COMMIT 003C MS_X_CREAT
|
||||
0047 MS_X_CURDIR 0057 MS_X_DATETIME 0045 MS_X_DUP
|
||||
0046 MS_X_DUP2 004B MS_X_EXEC 004C MS_X_EXIT 0060 MS_X_EXPAND
|
||||
004E MS_X_FIRST 6601 MS_X_GETCP 0044 MS_X_IOCTL 0042 MS_X_LSEEK 0039 MS_X_MKDIR
|
||||
005B MS_X_MKNEW 005A MS_X_MKTEMP 004F MS_X_NEXT 003D MS_X_OPEN
|
||||
003F MS_X_READ 0056 MS_X_RENAME 003A MS_X_RMDIR 6602 MS_X_SETCP
|
||||
0067 MS_X_SETHC 0041 MS_X_UNLINK 004D MS_X_WAIT 0040 MS_X_WRITE
|
||||
0040 NO_CRIT_ERRORS 0800 OFLW_FLAG 0008 OK_FAIL 0020 OK_IGNORE
|
||||
0010 OK_RETRY 0018 OK_RF 0030 OK_RI 0038 OK_RIF 0004 PROC_DEVIN
|
||||
0001 PROC_IDLE 0002 PROC_INT28 0003 PROC_KEYIN 0060 PSPILEN 0100 PSPLEN
|
||||
0016 RH0_LEN 000D RH13_LEN 000D RH14_LEN 0017 RH19_LEN 000F RH1_LEN
|
||||
0015 RH24_LEN 0018 RH2_LEN 001E RH4_LEN 000E RH5_LEN 0200 RHS_BUSY
|
||||
0100 RHS_DONE 8000 RHS_ERROR 0400 RHS_IC 0800 RHS_RM 001E RH_SIZE
|
||||
007F RQ19_DSP_GET 005F RQ19_DSP_SET
|
||||
0042 RQ19_FORMAT 0060 RQ19_GET 004D RQ19_PRP_END
|
||||
004C RQ19_PRP_START 006B RQ19_QRY_PRP
|
||||
006A RQ19_QRY_SEL 0061 RQ19_READ 004A RQ19_SELECT
|
||||
0040 RQ19_SET 0062 RQ19_VERIFY 0041 RQ19_WRITE 007F RUBOUT
|
||||
0080 SIGN_FLAG 00C0 STACK_SIZE 0003 STDAUX 0002 STDERR 0000 STDIN
|
||||
0001 STDOUT 0004 STDPRN 0009 TAB 0001 TERM_BREAK 0002 TERM_ERROR
|
||||
0000 TERM_NORMAL 0003 TERM_RESIDENT FFFF TRUE
|
||||
0006 TRUE_VERSION 0014 XFNMAX 0040 ZERO_FLAG 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
0058 CHAR_E10 0079 CHAR_E20 004D CHAR_ERROR 00A5 DISK_E10 00C2 DISK_E20
|
||||
00FA DISK_E40 010B DISK_E50 009A DISK_ERROR 0000 DO_INT24 0028 ERROR_EXIT
|
||||
0038 ERROR_R10 0035 ERROR_RET 0045 FCBERROR_EXIT 004C FE_E10
|
||||
0000 FUNC59 0000 GET_DSEG 0000 RELOAD_REGISTERS
|
||||
0000 RETURN_AX_CLC 019C SCAN_ERROR_TABLE 01AC SCAN_ET10
|
||||
01AD SCAN_ET20 018F SET_D10 0135 SET_E10 0146 SET_E20 0150 SET_E30
|
||||
010E SET_ERROR 016B SET_ERROR_DATA 0153 SET_LOGICAL_ERROR
|
||||
ION 0014 XFNMAX 0040 ZERO_FLAG 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
005
|
||||
1681
IBMDOS/BIN/FCBS.LST
Normal file
1681
IBMDOS/BIN/FCBS.LST
Normal file
File diff suppressed because it is too large
Load Diff
BIN
IBMDOS/BIN/FCBS.OBJ
Normal file
BIN
IBMDOS/BIN/FCBS.OBJ
Normal file
Binary file not shown.
142
IBMDOS/BIN/FCBS.SYM
Normal file
142
IBMDOS/BIN/FCBS.SYM
Normal file
@@ -0,0 +1,142 @@
|
||||
0000 VARIABLES
|
||||
0000 CURRENT_DSK 0000 CURRENT_PSP 0000 DMA_OFFSET
|
||||
0000 DMA_SEGMENT 0000 FCB_PATH 0000 FCB_PATH2 0000 FCB_PB
|
||||
0000 FCB_SEARCH_BUF 0073 FCB_TABLE 0000 MACHINE_ID
|
||||
0000 REMOTE_CALL 0000 SRCH_BUF
|
||||
|
||||
0000 NUMBERS
|
||||
0004 ACT_ABORT 0002 ACT_DELAY 0006 ACT_IGNORE 0001 ACT_RETRY 0005 ACT_TERM
|
||||
0007 ACT_URETRY 0003 ACT_USER 000A BCB_COPIES 0014 BCB_DATA 000D BCB_DDSC
|
||||
0004 BCB_DRV 0005 BCB_FLAGS 0000 BCB_NEXT 0002 BCB_PREV 0006 BCB_REC
|
||||
0008 BCB_REC2 0011 BCB_REMOTE 000B BCB_SEPARATION 0040 BF_DIRTY
|
||||
0008 BF_ISDAT 0004 BF_ISDIR 0002 BF_ISFAT 0080 BF_REMOTE
|
||||
0007 CLASS_APPLIC 0003 CLASS_AUTHOR
|
||||
000C CLASS_EXISTS 0009 CLASS_FORMAT
|
||||
0005 CLASS_HARDWARE 0004 CLASS_INTERNAL
|
||||
000A CLASS_LOCKED 0008 CLASS_LOST 000B CLASS_MEDIA
|
||||
0001 CLASS_RESOURCE 0006 CLASS_SYSTEM 0002 CLASS_TEMP
|
||||
000D CLASS_UNKNOWN 000B DATTS 0020 DA_ARCHIVE FF27 DA_CHANGE
|
||||
0080 DA_CLUSTER 0080 DA_DELWATCH 0010 DA_DIR 00D8 DA_FIXED
|
||||
0002 DA_HIDDEN 0001 DA_RO 0004 DA_SYSTEM 0008 DA_VOLUME 001A DBLOCK1
|
||||
0004 DCNTRL_COUNT 0000 DCNTRL_DSADD
|
||||
0000 DCNTRL_DSOFF 0002 DCNTRL_DSSEG 0006 DCNTRL_LEN
|
||||
0018 DDATE 001D DDSC_BLOCK 0004 DDSC_CLMSK 0005 DDSC_CLSHF
|
||||
000B DDSC_DATADDR 0013 DDSC_DEVHEAD
|
||||
0013 DDSC_DEVOFF 0015 DDSC_DEVSEG
|
||||
0011 DDSC_DIRADDR 0009 DDSC_DIRENT
|
||||
0006 DDSC_FATADDR 0018 DDSC_FIRST 001F DDSC_FREE 0021 DDSC_LEN
|
||||
0019 DDSC_LINK 0017 DDSC_MEDIA 000D DDSC_NCLSTRS
|
||||
000F DDSC_NFATRECS 0008 DDSC_NFATS 0001 DDSC_RUNIT
|
||||
0002 DDSC_SECSIZE 0000 DDSC_UNIT 0002 DELW_DELETE
|
||||
0003 DELW_FREECLU 0004 DELW_FREERD
|
||||
0007 DELW_NEWDISK 000E DELW_PURGE 0000 DELW_RDMASK
|
||||
0005 DELW_SPACE 000F DELW_UNDEL 0020 DHAT_BIN 0001 DHAT_CIN 0040 DHAT_CLEAN
|
||||
0008 DHAT_CLK 0002 DHAT_COT 0080 DHAT_DEV 001F DHAT_DRVMSK
|
||||
1000 DHAT_LOCAL 0800 DHAT_NETPRN 0004 DHAT_NUL 0040 DHAT_READY
|
||||
8000 DHAT_REMOTE 4000 DHAT_TIMEOK 4000 DHM_COMMIT
|
||||
0000 DHM_COMPAT 0010 DHM_DENY_ALL 0040 DHM_DENY_NONE
|
||||
0030 DHM_DENY_READ 0020 DHM_DENY_WRITE 8000 DHM_FCB
|
||||
0080 DHM_LOCAL 2000 DHM_NOCRIT 0000 DHM_RO 0002 DHM_RW 000F DHM_RWMSK
|
||||
0070 DHM_SHAREMSK 0001 DHM_WO 0005 DHNDL_ATTR 0035 DHNDL_BLK
|
||||
000B DHNDL_BLK1 0000 DHNDL_COUNT 000F DHNDL_DATE
|
||||
0004 DHNDL_DATRB 001B DHNDL_DBLK 001E DHNDL_DCNTHI
|
||||
001F DHNDL_DCNTLO 0007 DHNDL_DEVOFF
|
||||
0007 DHNDL_DEVPTR 0009 DHNDL_DEVSEG 0028 DHNDL_EXT
|
||||
0019 DHNDL_IDX 003B DHNDL_LEN 0002 DHNDL_MODE 0020 DHNDL_NAME 0015 DHNDL_POS
|
||||
0017 DHNDL_POSHI 0015 DHNDL_POSLO 0031 DHNDL_PSP
|
||||
002B DHNDL_SFT 0033 DHNDL_SHARE 0011 DHNDL_SIZE
|
||||
0013 DHNDL_SIZEHI 0011 DHNDL_SIZELO 000D DHNDL_TIME
|
||||
002F DHNDL_UID 0005 DHNDL_WATTR 0012 DMODDATE 0010 DMODTIME
|
||||
0000 DNAME 0021 DOS_INT 000E DPWD 0014 DPWM 001C DSIZE
|
||||
0016 DTIME 000D DUNDEL FFFB ED_ACCESS FFF4 ED_ACC_CODE
|
||||
FFAB ED_ASSIGN FFEA ED_BADCMD FFE9 ED_BADDATA FFE6 ED_BADMEDIA
|
||||
FFE8 ED_BADRHLEN FFE7 ED_BADSEEK FFEC ED_BADUNIT FFF7 ED_BLOCK
|
||||
FFA6 ED_COMPONENT FFF3 ED_DATA FFEF ED_DEVICE FFF0 ED_DIR
|
||||
FFDE ED_DISKCHG FFF9 ED_DMD FFF1 ED_DRIVE FFF6 ED_ENVIRON FFB0 ED_EXISTS
|
||||
FFAD ED_FAIL FFFE ED_FILE FFF5 ED_FORMAT FFFF ED_FUNCTION
|
||||
FFE1 ED_GENFAIL FFFC ED_HANDLE FFFA ED_H_MATCH FFA6 ED_LASTERROR
|
||||
FFDF ED_LOCKFAIL FFAE ED_MAKE FFF8 ED_MEMORY FFCE ED_NET
|
||||
FFBF ED_NETACCESS FFB3 ED_NETCOMM FFA7 ED_NETFUNC FFB1 ED_NETLOG
|
||||
FFB7 ED_NETPWD FFB5 ED_NETREQ FFB2 ED_NETSRVR FFB4 ED_NETTIME FFB6 ED_NETVER
|
||||
FFA8 ED_NETWRITE FFDD ED_NOFCBS FFDC ED_NOLOCKS FFE4 ED_NOPAPER
|
||||
FFEB ED_NOTREADY FFA9 ED_PARAM FFAA ED_PASSWORD
|
||||
FFFD ED_PATH FFED ED_PROTECT FFE2 ED_RDFAIL FFE5 ED_RNF FFEE ED_ROOM
|
||||
FFE0 ED_SHAREFAIL FFAC ED_STRUCT FFE3 ED_WRFAIL FFFF ENDDIR
|
||||
0FFF FAT12 FFFF FAT16 0012 FCB_MAX1 001A FCB_MAX2 001E FCB_MAX3
|
||||
0004 HCB_CLU 0006 HCB_CNT 0008 HCB_DATA 0002 HCB_DRV 0000 HCB_LINK
|
||||
0049 LDT_BLK 004D LDT_DRV 0043 LDT_FLAGS 0058 LDT_LEN 0000 LDT_NAME
|
||||
0045 LDT_PDT 004B LDT_ROOT 004F LDT_ROOTLEN
|
||||
2000 LFLG_JOINED 8000 LFLG_NETWRKD
|
||||
4000 LFLG_PHYSICAL 1000 LFLG_SUBST 0002 LOC_BLOCK 0004 LOC_CHAR
|
||||
0005 LOC_MEMORY 0003 LOC_NET 0001 LOC_UNKNOWN 0FF6 MAX12
|
||||
0006 MSF_ATTRIB 000C MSF_BLOCK 001A MSF_BLOCK1 0020 MSF_CR 0014 MSF_DATE
|
||||
001C MSF_DBLK 001E MSF_DCNT 001C MSF_DEVPTR 0000 MSF_DRIVE 0000 MSF_EXTFLG
|
||||
0018 MSF_IFN 0019 MSF_IOCTL 0001 MSF_NAME 000E MSF_RECSIZE
|
||||
0021 MSF_RR 0023 MSF_RR2 0010 MSF_SIZE 0016 MSF_TIME 0003 MS_A_READ
|
||||
0004 MS_A_WRITE 000C MS_C_FLUSH 0008 MS_C_NOECHO 0007 MS_C_RAWIN
|
||||
0006 MS_C_RAWIO 0001 MS_C_READ 000A MS_C_READSTR 000B MS_C_STAT
|
||||
0002 MS_C_WRITE 0009 MS_C_WRITESTR 001B MS_DRV_ALLOC
|
||||
001C MS_DRV_ALLOCSPEC 000D MS_DRV_ALLRESET 0019 MS_DRV_GET
|
||||
000E MS_DRV_SET 0036 MS_DRV_SPACE 0010 MS_F_CLOSE
|
||||
0013 MS_F_DELETE 002F MS_F_DMAGET
|
||||
001A MS_F_DMAOFF 0059 MS_F_ERROR 0054 MS_F_GETVERIFY
|
||||
005C MS_F_LOCK 0016 MS_F_MAKE 000F MS_F_OPEN 0029 MS_F_PARSE
|
||||
0024 MS_F_RANDREC 0014 MS_F_READ 0027 MS_F_READBLK
|
||||
0021 MS_F_READRAND 0017 MS_F_RENAME
|
||||
0011 MS_F_SFIRST 0023 MS_F_SIZE 0012 MS_F_SNEXT
|
||||
002E MS_F_VERIFY 0015 MS_F_WRITE 0028 MS_F_WRITEBLK
|
||||
0022 MS_F_WRITERAND 0005 MS_L_WRITE 0048 MS_M_ALLOC 0049 MS_M_FREE
|
||||
004A MS_M_SETBLOCK 0058 MS_M_STRATEGY
|
||||
0062 MS_P_GETPSP 0026 MS_P_MKPSP 0050 MS_P_SETPSP
|
||||
0000 MS_P_TERMCPM 0031 MS_P_TERMKEEP
|
||||
0030 MS_S_BDOSVER 0033 MS_S_BREAK 0038 MS_S_COUNTRY
|
||||
0035 MS_S_GETINT 0025 MS_S_SETINT
|
||||
002A MS_T_GETDATE 002C MS_T_GETTIME
|
||||
002B MS_T_SETDATE 002D MS_T_SETTIME 003B MS_X_CHDIR
|
||||
0043 MS_X_CHMOD 003E MS_X_CLOSE 0068 MS_X_COMMIT 003C MS_X_CREAT
|
||||
0047 MS_X_CURDIR 0057 MS_X_DATETIME 0045 MS_X_DUP
|
||||
0046 MS_X_DUP2 004B MS_X_EXEC 004C MS_X_EXIT 0060 MS_X_EXPAND
|
||||
004E MS_X_FIRST 6601 MS_X_GETCP 0044 MS_X_IOCTL 0042 MS_X_LSEEK 0039 MS_X_MKDIR
|
||||
005B MS_X_MKNEW 005A MS_X_MKTEMP 004F MS_X_NEXT 003D MS_X_OPEN
|
||||
003F MS_X_READ 0056 MS_X_RENAME 003A MS_X_RMDIR 6602 MS_X_SETCP
|
||||
0067 MS_X_SETHC 0041 MS_X_UNLINK 004D MS_X_WAIT 0040 MS_X_WRITE
|
||||
000F NUM_SHARE_STUB_ENTRIES 0022 PASSWD_CHECK
|
||||
0021 PASSWD_CHMOD 0020 PASSWD_CREAT 0DDD PWM_ANY
|
||||
0111 PWM_D 0222 PWM_E 00F0 PWM_GROUP 000F PWM_OWNER 0888 PWM_R
|
||||
0444 PWM_W 0F00 PWM_WORLD 0010 SSTOR_SPACE 0003 STDAUX
|
||||
0002 STDERR 0000 STDIN 0001 STDOUT 0004 STDPRN 0018 S_CLOSE
|
||||
002C S_CLOSE_FILES 0020 S_CLOSE_IF_OPEN
|
||||
0024 S_DENY_IF_OPEN 0010 S_DISCARD 000C S_FDOSRW
|
||||
0028 S_GET_LIST_ENTRY 0000 S_LOCKS 001C S_OM_COMPAT
|
||||
0014 S_OPEN 0008 S_RECORD 0004 S_UPDATE 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
0550 DIV0 0556 DIV1 052F DIV_32 0254 FCB_BLOCK_RW
|
||||
0271 FCB_BLOCK_RW10 0295 FCB_BLOCK_RW20 0130 FCB_CLOSE
|
||||
0158 FCB_DELETE 006F FCB_ERROR 0511 FCB_FDOS 0145 FCB_FDOS_COMMON
|
||||
014A FCB_FDOS_COMMON10 014C FCB_FDOS_COMMON20 0160 FCB_FIRST
|
||||
03AC FCB_GET_COUNT 0333 FCB_HANDLE_ERR
|
||||
033E FCB_HANDLE_ERR10 02E0 FCB_HANDLE_VFY
|
||||
02F1 FCB_HANDLE_VFY10 0308 FCB_HANDLE_VFY20
|
||||
0328 FCB_HANDLE_VFY30 0091 FCB_MAKE 0168 FCB_NEXT 0099 FCB_OPEN
|
||||
00AB FCB_OPEN10 00F0 FCB_OPEN20 009F FCB_OPEN_MAKE_COMMON
|
||||
0341 FCB_PATH2_PREP 0357 FCB_PATH_PREP
|
||||
036C FCB_PATH_PREP10 0384 FCB_PATH_PREP20
|
||||
037D FCB_PATH_PREP_COMMON 039C FCB_POINT 03AB FCB_POINT10
|
||||
0234 FCB_RANDOM_RW 024B FCB_RANDOM_RW10 019E FCB_READ
|
||||
0251 FCB_READBLK 0231 FCB_READRAND 014D FCB_RENAME
|
||||
04F7 FCB_RESTORE_SEARCH_STATE 01BB FCB_RW 01F8 FCB_RW10 01FA FCB_RW20
|
||||
01FE FCB_RW30 0228 FCB_RW40 048B FCB_SAVE_SEARCH_STATE 0466 FCB_SEARCH
|
||||
048A FCB_SEARCH10 016E FCB_SEARCH_COMMON
|
||||
0178 FCB_SEARCH_COMMON10 0444 FCB_SEEK_COMMON
|
||||
0431 FCB_SEEK_RR 0410 FCB_SEEK_SEQ 01A1 FCB_SEQ_RW
|
||||
01BA FCB_SEQ_RW10 0179 FCB_SETRECORD 0296 FCB_SIZE
|
||||
02B5 FCB_SIZE10 02C7 FCB_SIZE20 02DD FCB_SIZE30 02DF FCB_SIZE40 04AF FCB_SSS10
|
||||
04C2 FCB_SSS20 04CC FCB_SSS30 04D0 FCB_SSS40 04E0 FCB_SSS50 0102 FCB_UPDATE
|
||||
03FE FCB_UPDATE_COMMON 03E2 FCB_UPDATE_RR
|
||||
03BA FCB_UPDATE_SEQ 0199 FCB_WRITE 024C FCB_WRITEBLK
|
||||
022C FCB_WRITERAND 0000 FDOS_ENTRY 0000 FDOS_EXIT
|
||||
0005 FDOS_EXIT10 0038 FDOS_EXIT20
|
||||
003D FDOS_EXIT30 0042 FDOS_EXIT40 0044 FDOS_FCB
|
||||
0065 FDOS_FCB10 0000 IFN2DHNDL 0000 PARSE_ONE
|
||||
_SE
|
||||
BIN
IBMDOS/BIN/FDOS.OBJ
Normal file
BIN
IBMDOS/BIN/FDOS.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/FIOCTL.OBJ
Normal file
BIN
IBMDOS/BIN/FIOCTL.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/HEADER.OBJ
Normal file
BIN
IBMDOS/BIN/HEADER.OBJ
Normal file
Binary file not shown.
1064
IBMDOS/BIN/HISTORY.LST
Normal file
1064
IBMDOS/BIN/HISTORY.LST
Normal file
File diff suppressed because it is too large
Load Diff
BIN
IBMDOS/BIN/HISTORY.OBJ
Normal file
BIN
IBMDOS/BIN/HISTORY.OBJ
Normal file
Binary file not shown.
91
IBMDOS/BIN/HISTORY.SYM
Normal file
91
IBMDOS/BIN/HISTORY.SYM
Normal file
@@ -0,0 +1,91 @@
|
||||
0000 VARIABLES
|
||||
0000 @HIST_FLG 0000 DMD_ID 0006 DMD_IDLE_FLAGS 0003 DMD_LEN
|
||||
0008 DMD_NAME 0001 DMD_PSP 0000 FDOS_DATA 0000 HISTBUF1 0000 HISTBUF2
|
||||
0000 HISTSIZ1 0000 HISTSIZ2 0001 REG_AH 0000 REG_AL 0000 REG_AX
|
||||
0003 REG_BH 0002 REG_BL 000C REG_BP 0002 REG_BX 0005 REG_CH
|
||||
0004 REG_CL 0014 REG_CS 0004 REG_CX 0007 REG_DH 000A REG_DI
|
||||
0006 REG_DL 000E REG_DS 0006 REG_DX 0010 REG_ES 0016 REG_FLAGS
|
||||
0012 REG_IP 0008 REG_SI FFF8 RL_BUFOFF FFF8 RL_BUFPTR FFFA RL_BUFSEG
|
||||
FFF4 RL_FLAGS FFEA RL_HIST_RECL FFE8 RL_HIST_SAVE
|
||||
FFE4 RL_HIST_SEG FFE6 RL_HIST_SIZE FFF6 RL_INICOL
|
||||
FFFE RL_INPUT FFF0 RL_KANJI FFF2 RL_MAXLEN FFFC RL_OUTPUT FFEE RL_SAVMAX
|
||||
FFEC RL_SAVPOS
|
||||
|
||||
0000 NUMBERS
|
||||
0007 BELL 0001 CARRY_FLAG 0010 CHAR_ALPHAN 0004 CHAR_CTL
|
||||
0008 CHAR_KANJI 0031 CHAR_ONECOL 0020 CHAR_OTHER 008E CHAR_SIZE
|
||||
0001 CHAR_SPACE 0080 CHAR_STD 0002 CHAR_TAB 000D CR 005E CTL
|
||||
0001 CTLA 0002 CTLB 001C CTLBS 0003 CTLC 0004 CTLD
|
||||
0005 CTLE 0006 CTLF 0007 CTLG 0008 CTLH 0009 CTLI
|
||||
000A CTLJ 000B CTLK 000D CTLM 0010 CTLP 0011 CTLQ
|
||||
0012 CTLR 0013 CTLS 0014 CTLT 0015 CTLU 001F CTLUB
|
||||
001E CTLUP 0016 CTLV 0017 CTLW 0018 CTLX 0019 CTLY
|
||||
001A CTLZ 007F DEL 0400 DIR_FLAG 0008 DMD_NAME_LEN
|
||||
0021 DOS_INT 0002 ERR_ABORT 0003 ERR_FAIL 0000 ERR_IGNORE 0001 ERR_RETRY
|
||||
001B ESC 0000 FALSE 0001 IDLE_COMMAND
|
||||
FFFF IDLE_DETECT C000 IDLE_DISABLE
|
||||
0002 IDLE_DOSFUNC 8000 IDLE_INIT 0004 IDLE_INT28 4000 IDLE_ON
|
||||
004D IDM 005A IDZ 0200 INT_FLAG 000A LF
|
||||
000D MAX_FILELEN 0050 MAX_PATHLEN 0003 MS_A_READ
|
||||
0004 MS_A_WRITE 000C MS_C_FLUSH 0008 MS_C_NOECHO 0007 MS_C_RAWIN
|
||||
0006 MS_C_RAWIO 0001 MS_C_READ 000A MS_C_READSTR 000B MS_C_STAT
|
||||
0002 MS_C_WRITE 0009 MS_C_WRITESTR 001B MS_DRV_ALLOC
|
||||
001C MS_DRV_ALLOCSPEC 000D MS_DRV_ALLRESET 0019 MS_DRV_GET
|
||||
000E MS_DRV_SET 0036 MS_DRV_SPACE 0010 MS_F_CLOSE
|
||||
0013 MS_F_DELETE 002F MS_F_DMAGET
|
||||
001A MS_F_DMAOFF 0059 MS_F_ERROR 0054 MS_F_GETVERIFY
|
||||
005C MS_F_LOCK 0016 MS_F_MAKE 000F MS_F_OPEN 0029 MS_F_PARSE
|
||||
0024 MS_F_RANDREC 0014 MS_F_READ 0027 MS_F_READBLK
|
||||
0021 MS_F_READRAND 0017 MS_F_RENAME
|
||||
0011 MS_F_SFIRST 0023 MS_F_SIZE 0012 MS_F_SNEXT
|
||||
002E MS_F_VERIFY 0015 MS_F_WRITE 0028 MS_F_WRITEBLK
|
||||
0022 MS_F_WRITERAND 0005 MS_L_WRITE 0048 MS_M_ALLOC 0049 MS_M_FREE
|
||||
004A MS_M_SETBLOCK 0058 MS_M_STRATEGY
|
||||
0062 MS_P_GETPSP 0026 MS_P_MKPSP 0050 MS_P_SETPSP
|
||||
0000 MS_P_TERMCPM 0031 MS_P_TERMKEEP
|
||||
0030 MS_S_BDOSVER 0033 MS_S_BREAK 0038 MS_S_COUNTRY
|
||||
0035 MS_S_GETINT 0025 MS_S_SETINT
|
||||
002A MS_T_GETDATE 002C MS_T_GETTIME
|
||||
002B MS_T_SETDATE 002D MS_T_SETTIME 003B MS_X_CHDIR
|
||||
0043 MS_X_CHMOD 003E MS_X_CLOSE 0068 MS_X_COMMIT 003C MS_X_CREAT
|
||||
0047 MS_X_CURDIR 0057 MS_X_DATETIME 0045 MS_X_DUP
|
||||
0046 MS_X_DUP2 004B MS_X_EXEC 004C MS_X_EXIT 0060 MS_X_EXPAND
|
||||
004E MS_X_FIRST 6601 MS_X_GETCP 0044 MS_X_IOCTL 0042 MS_X_LSEEK 0039 MS_X_MKDIR
|
||||
005B MS_X_MKNEW 005A MS_X_MKTEMP 004F MS_X_NEXT 003D MS_X_OPEN
|
||||
003F MS_X_READ 0056 MS_X_RENAME 003A MS_X_RMDIR 6602 MS_X_SETCP
|
||||
0067 MS_X_SETHC 0041 MS_X_UNLINK 004D MS_X_WAIT 0040 MS_X_WRITE
|
||||
0040 NO_CRIT_ERRORS 0800 OFLW_FLAG 0008 OK_FAIL 0020 OK_IGNORE
|
||||
0010 OK_RETRY 0018 OK_RF 0030 OK_RI 0038 OK_RIF 0004 PROC_DEVIN
|
||||
0001 PROC_IDLE 0002 PROC_INT28 0003 PROC_KEYIN 0020 RLF_DIRTY
|
||||
0001 RLF_ENHANCED 0080 RLF_INROOT 0002 RLF_INS 0040 RLF_KANJI
|
||||
0008 RLF_MATCH 0010 RLF_RECALLED 0004 RLF_SEARCH 001C RL_LENGTH
|
||||
007F RUBOUT 0080 SIGN_FLAG 00C0 STACK_SIZE 0003 STDAUX 0002 STDERR
|
||||
0000 STDIN 0001 STDOUT 0004 STDPRN 0009 TAB 0001 TERM_BREAK
|
||||
0002 TERM_ERROR 0000 TERM_NORMAL 0003 TERM_RESIDENT
|
||||
FFFF TRUE 0006 TRUE_VERSION 0040 ZERO_FLAG 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
0000 BS_OUT 0000 CHAR_INFO 0149 COPY_FROM_HIST
|
||||
0168 COPY_FROM_HIST1 0000 DELN_W10 0285 DELN_WORD 0274 DEL_BOL
|
||||
0284 DEL_BOL10 0204 DEL_CUR_HISTORY_BUFFER 0000 DEL_EOL
|
||||
01F1 DEL_HISTORY_BUFFERS 0000 DEL_LINE 01CF FIND_CURRENT_HIST
|
||||
01D5 FIND_CURRENT_HIST10 01E0 FIND_CURRENT_HIST20
|
||||
01EB FIND_CURRENT_HIST30 01EE FIND_CURRENT_HIST40
|
||||
017E FIND_FREE_HIST 018C FIND_FREE_HIST10
|
||||
0199 FIND_FREE_HIST20 01C9 FIND_NEXT_HIST
|
||||
019A FIND_NEXT_NULL 01AA FIND_PREV_HIST
|
||||
01AF FIND_PREV_HIST10 01C6 FIND_PREV_HIST20 0133 FOUND_CMD
|
||||
0000 GOTO_BOL 0148 GOTO_E10 0138 GOTO_EOL 0000 INIT_HISTORY
|
||||
0014 INIT_HISTORY10 00F3 MATCH10 00FA MATCH20 0100 MATCH30
|
||||
0098 MATCH_CMD 00DD MATCH_ERROR 00BA MATCH_LOOP 0248 MATCH_W10
|
||||
025A MATCH_W20 025B MATCH_W30 023D MATCH_WORD 0000 NEXT_CHAR 0125 NEXT_CMD
|
||||
023C NEXT_W10 0222 NEXT_WORD 0101 PREV_CMD 0115 PREV_CMD10 0268 PREV_W10
|
||||
0271 PREV_W15 0000 PREV_W20 025C PREV_WORD 0000 PUT_STRING
|
||||
0061 SAVE_CURRENT 0094 SAVE_CURRENT10
|
||||
0097 SAVE_CURRENT20 005A SAVE_CURRENT_IF_DIRTY
|
||||
0023 SAVE_HISTORY 003B SAVE_HISTORY10
|
||||
0048 SAVE_HISTORY30 0000 SAVE_LINE 00A8 SEARCH_CMD 0000 SPACE_OUT
|
||||
020A ZAP_BUFFER
|
||||
0100 MATCH30
|
||||
0098 MATCH_CMD 00DD MATCH_ERROR 00BA MATCH_LOOP 0248 MATCH_W10
|
||||
025A MATCH_W20 025B MATCH_W30 023D MATCH_WO
|
||||
BIN
IBMDOS/BIN/IBMDOS.COM
Normal file
BIN
IBMDOS/BIN/IBMDOS.COM
Normal file
Binary file not shown.
5
IBMDOS/BIN/IBMDOS.INP
Normal file
5
IBMDOS/BIN/IBMDOS.INP
Normal file
@@ -0,0 +1,5 @@
|
||||
ibmdos.tmp=header.obj,pcmif.obj,cio.obj,disk.obj,ioctl.obj,misc.obj,support.obj,
|
||||
dosmem.obj,error.obj,process.obj,network.obj,int2f.obj,fdos.obj,cdevio.obj,fioctl.obj,
|
||||
fcbs.obj,redir.obj,dirs.obj,buffers.obj,bdevio.obj,cmdline.obj,history.obj
|
||||
[map, data[origin[0000]]]
|
||||
|
||||
154
IBMDOS/BIN/IBMDOS.MAP
Normal file
154
IBMDOS/BIN/IBMDOS.MAP
Normal file
@@ -0,0 +1,154 @@
|
||||
Map for file: IBMDOS.TMP
|
||||
|
||||
Segments
|
||||
--------
|
||||
|
||||
Length Start Stop Align Comb Name Class
|
||||
|
||||
3830 (0000:0000-382F) PARA PUB PCM_HEADER CODE
|
||||
2C03 (0000:3830-6432) BYTE PUB PCM_CODE CODE
|
||||
3ADE (0000:6434-9F11) WORD PUB BDOS_CODE CODE
|
||||
02CC (0000:9F12-A1DD) WORD PUB PCM_RODATA CODE
|
||||
0399 (0000:A1DE-A576) BYTE PUB PCM_HISTORY CODE
|
||||
01B5 (0000:A577-A72B) BYTE PUB PCM_ICODE CODE
|
||||
0000 PARA PUB PCM_CODEND CODE
|
||||
0000 BYTE PUB CODE CODE
|
||||
03A2 (0000:0000-03A1) WORD PUB PCMODE_DATA DATA
|
||||
000E (0000:03A2-03AF) WORD COM FDOS_DSEG DATA
|
||||
0C50 (0000:03B0-0FFF) WORD PUB FIXED_DOS_DATA DATA
|
||||
02B8 (0000:1000-12B7) WORD PUB PCMODE_CODE DATA
|
||||
0014 (0000:12B8-12CB) WORD PUB GLOBAL_DATA DATA
|
||||
0120 (0000:12CC-13EB) WORD PUB BDOS_DATA DATA
|
||||
0000 PARA PUB PCMODE_DSIZE DATA
|
||||
|
||||
Groups Segments
|
||||
------ --------
|
||||
|
||||
PCMDATA PCMODE_DATA FDOS_DSEG FIXED_DOS_DATA PCMODE_CODE
|
||||
GLOBAL_DATA BDOS_DATA PCMODE_DSIZE
|
||||
PCMCODE PCM_HEADER PCM_CODE BDOS_CODE PCM_RODATA
|
||||
PCM_HISTORY PCM_ICODE PCM_CODEND
|
||||
|
||||
map for module: HEADER
|
||||
|
||||
382A (0000:0000-3829) PCM_HEADER
|
||||
0102 (0000:A1DE-A2DF) PCM_HISTORY
|
||||
01B5 (0000:A577-A72B) PCM_ICODE
|
||||
03A2 (0000:0000-03A1) PCMODE_DATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0C50 (0000:03B0-0FFF) FIXED_DOS_DATA
|
||||
02B8 (0000:1000-12B7) PCMODE_CODE
|
||||
0004 (0000:12CC-12CF) BDOS_DATA
|
||||
|
||||
map for module: PCMIF
|
||||
|
||||
03F6 (0000:3830-3C25) PCM_CODE
|
||||
00DC (0000:9F12-9FED) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: CIO
|
||||
|
||||
0491 (0000:3C26-40B6) PCM_CODE
|
||||
0004 (0000:9FEE-9FF1) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0001 (0000:12B8-12B8) GLOBAL_DATA
|
||||
|
||||
map for module: DISK
|
||||
|
||||
044C (0000:40B7-4502) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0002 (0000:12BA-12BB) GLOBAL_DATA
|
||||
|
||||
map for module: IOCTL
|
||||
|
||||
0164 (0000:4503-4666) PCM_CODE
|
||||
0032 (0000:9FF2-A023) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: MISC
|
||||
|
||||
0687 (0000:4667-4CED) PCM_CODE
|
||||
004D (0000:A024-A070) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0002 (0000:12BC-12BD) GLOBAL_DATA
|
||||
|
||||
map for module: SUPPORT
|
||||
|
||||
00C7 (0000:4CEE-4DB4) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: DOSMEM
|
||||
|
||||
0260 (0000:4DB5-5014) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: ERROR
|
||||
|
||||
01AE (0000:5015-51C2) PCM_CODE
|
||||
00B4 (0000:A072-A125) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: PROCESS
|
||||
|
||||
07B2 (0000:51C3-5974) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: NETWORK
|
||||
|
||||
0086 (0000:5975-59FA) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: INT2F
|
||||
|
||||
04EB (0000:59FB-5EE5) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
000E (0000:12BE-12CB) GLOBAL_DATA
|
||||
|
||||
map for module: FDOS
|
||||
|
||||
199A (0000:6434-7DCD) BDOS_CODE
|
||||
0078 (0000:12D0-1347) BDOS_DATA
|
||||
|
||||
map for module: CDEVIO
|
||||
|
||||
02B7 (0000:7DCE-8084) BDOS_CODE
|
||||
|
||||
map for module: FIOCTL
|
||||
|
||||
0238 (0000:8085-82BC) BDOS_CODE
|
||||
|
||||
map for module: FCBS
|
||||
|
||||
0558 (0000:82BD-8814) BDOS_CODE
|
||||
|
||||
map for module: REDIR
|
||||
|
||||
06CB (0000:8815-8EDF) BDOS_CODE
|
||||
|
||||
map for module: DIRS
|
||||
|
||||
03EE (0000:8EE0-92CD) BDOS_CODE
|
||||
0037 (0000:1348-137E) BDOS_DATA
|
||||
|
||||
map for module: BUFFERS
|
||||
|
||||
052C (0000:92CE-97F9) BDOS_CODE
|
||||
0005 (0000:1380-1384) BDOS_DATA
|
||||
|
||||
map for module: BDEVIO
|
||||
|
||||
0717 (0000:97FA-9F10) BDOS_CODE
|
||||
0065 (0000:1386-13EA) BDOS_DATA
|
||||
|
||||
map for module: CMDLINE
|
||||
|
||||
054D (0000:5EE6-6432) PCM_CODE
|
||||
00B7 (0000:A126-A1DC) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: HISTORY
|
||||
|
||||
0297 (0000:A2E0-A576) PCM_HISTORY
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
|
||||
179
IBMDOS/BIN/IBMDOS.SYM
Normal file
179
IBMDOS/BIN/IBMDOS.SYM
Normal file
@@ -0,0 +1,179 @@
|
||||
|
||||
0000 VARIABLES 0000 DATA
|
||||
03A2 FDOS_DSEG
|
||||
0000 VARIABLES 0000 DATA
|
||||
13F0 DATA_END 12CC HASHROOT
|
||||
0000 LABELS 0000 CODE
|
||||
3800 CODE_START 380A OS_VERSION 3822 PATCH_VERSION
|
||||
3806 PCMODE_DSEG A730 CODE_END
|
||||
0000 VARIABLES 0000 DATA
|
||||
0FE4 ACTIVE_CNT 056D FILE_ATTRIB 0572 REMOTE_CALL
|
||||
043E SEC_PATHNAME 0EFE FDOS_STUB 0EE0 HASHMAX 057E TERM_PSP
|
||||
03B6 BIOSDATE 0D1C DAYS_IN_MONTH 0588 CRITICAL_SP
|
||||
0AA2 RWMODE 0F02 SHARE_STUB 0AA0 INDOS_STACK 03B8 MINUTE
|
||||
0AAD UCASETBL 0EBC @PRIVATE_DATA 05CE CURRENT_FILEPOS
|
||||
0584 INT21REGS_PTR 05F0 PREV_INT21REGS_OFF 0AA4 INT2F_CMD
|
||||
0FE4 IDLE_DATA 0AAC SWAP_INDOS 03BE PRI_PATHNAME
|
||||
05F2 PREV_INT21REGS_SEG 0ECC HMAROOT 0580 INT24_ESBP 0FEA IDLE_VEC
|
||||
057C EXIT_TYPE 0620 FCB_SEARCH_BUF 0CE3 DBCS_TBL 054B NAME_BUF
|
||||
0AA3 IOEXERR 0920 NORMAL_STACK 07A0 ERROR_STACK
|
||||
05AA CURRENT_IFN 043E LOAD_FILE 058A CURRENT_DDSC
|
||||
0FEE INT28_DELAY 0FE6 IDLE_MAX 0AA8 FILE_MODE 03B0 MUSTBE03B0
|
||||
05A2 CURRENT_LDT 03BA HUNDREDTH 0FE8 IDLE_FLAGS
|
||||
0FF0 INT28_RELOAD 0D12 DOS_VERSION
|
||||
059E CURRENT_DHNDL 04BE SRCH_BUF 0ED6 LOCALMACHINEID
|
||||
0EC4 @HIST_FLG 05F0 PREV_INT21REGS_PTR 03BE RELOC_BUF
|
||||
059A CURRENT_DEVICE 0BB1 FILECHARSTBL
|
||||
0B2F FILEUCASETBL 0AAA CLE_STATE 0AA1 ERR_DRV
|
||||
0F3E WINDOWSHANDLECHECK 0AA6 INT2F_STACK
|
||||
0584 INT21REGS_OFF 04F3 TEMP_LDT 0ED8 DMD_ADDRESS
|
||||
0ECA CODESEG 0FC8 EXE_BUFFER 03BB SECOND 0586 INT21REGS_SEG
|
||||
03B9 HOUR 0ED2 DMD_OWNER 0BE1 COLLATINGTBL
|
||||
0374 EXE_LOADHIGH 0048 DEV_ROOT 0320 ERROR_FLAG
|
||||
032E DMA_SEGMENT 0324 ERROR_CODE 0303 SHARING_FLAG
|
||||
0010 FCB_LRU_COUNT 03A1 CHAR_COUNT 0351 MONTH 034A LOCUS
|
||||
0334 RETCODE 01FB SAVBUF 0352 YEARSSINCE1980 0328 ERROR_DEV
|
||||
0392 FCB_PATH2 0335 SYSTEM_RETCODE 0026 FUNC52_DATA
|
||||
0089 DMD_UPPER_LINK 0358 INT28_FLAG 0300 COLUMN
|
||||
02FF VERIFY_FLAG 0301 SWITCH_CHAR 005D SETVERPTR
|
||||
0046 PHYS_DRV 034C RETRY_OFF 000E NETBIOS 0359 IOCTLRH
|
||||
0357 INTERNAL_FLAG 0320 INTERNAL_DATA 0383 FCB_PATH
|
||||
034E RETRY_SP 0304 NET_SET_COUNT 001A NET_RETRY 0337 BREAK_FLAG
|
||||
0356 DAYOFWEEK 0327 ERROR_CLASS 0069 BOOTDRV 0040 FCB_PTR
|
||||
033E MACHINE_ID 0342 LOAD_IMAGE 0372 LOAD_ENVSIZE
|
||||
0322 ERROR_DRIVE 008C DMD_UPPER_ROOT 033C OWNING_PSP
|
||||
0336 CURRENT_DSK 0334 USER_RETCODE 0346 LOAD_MAX
|
||||
033A INT21AX 0332 BREAK_SP 0326 ERROR_ACTION 0305 NET_NAME
|
||||
0370 LOAD_ENV 034B VALID_FLG 027B FDOS_BUF 002E CLK_DEVICE
|
||||
0036 SECTOR_SIZE 001E BCB_ROOT 0348 LOAD_HANDLE
|
||||
033A SWAP_ALWAYS 0323 ERROR_LOCUS 0032 CON_DEVICE
|
||||
000F NAME_NUM 0302 MEM_STRATEGY 0344 LOAD_TOP 0340 LOAD_PSP
|
||||
007C DEBLOCK_SEG 0026 DDSC_PTR 0354 DAYSSINCE1980
|
||||
0330 CURRENT_PSP 002A FILE_PTR 001C NET_DELAY 0321 INDOS_FLAG
|
||||
032C DMA_OFFSET 0024 DMD_ROOT 0350 DAYOFMONTH 003C LDT_PTR 02FE CIO_STATE
|
||||
005A JOIN_DRV 0375 FCB_PB 0048 NUL_DEVICE 0047 LAST_DRV 1010 EXEC_STUB
|
||||
1008 LOCK_TABLES 113E HISTBUF1 1144 HISTBUF2
|
||||
1129 CRITICALSECTIONENABLE 112A SWSTARTUPINFO
|
||||
10E5 INT2FBIOSHANDLER 12A8 INTL_XLAT 1192 XLAT_XLAT 1000 MUSTBE1000
|
||||
1232 COUNTRY_FILENAME 1296 DEFAULT_COUNTRY
|
||||
1004 UNLOCK_BIOS 1000 ENDOFINSTANCEDATA 1294 CUR_CP
|
||||
1140 HISTSIZ1 1146 HISTSIZ2 10E9 INT2FNEXT 1102 INVALID_STUB
|
||||
1014 FUNC4B05_STUB 100C UNLOCK_TABLES
|
||||
1292 COUNTRY_DATA 1000 LOCK_BIOS 1292 CUR_COUNTRY
|
||||
11A0 NOYESCHARS
|
||||
0000 NUMBERS
|
||||
0D90 LAST_KEY_EXT 001C INFO1_LEN 0082 INFO2_LEN 0082 INFO4_LEN
|
||||
0018 INFO5_LEN 0102 INFO6_LEN 0012 INFO7_LEN 0008 RELOC_CNT
|
||||
0000 LABELS 0000 CODE
|
||||
3830 CALL5_ENTRY 3B29 DO_INT24 3A65 INT25_ENTRY
|
||||
3A61 INT26_ENTRY 3B18 INT27_ENTRY
|
||||
3BFD INVALID_FUNCTION 3C03 RELOAD_REGISTERS 3987 INACTIVE
|
||||
39B3 DOS_ENTRY 3A36 INT21_FUNC 3BE9 GET_DSEG 3936 INT21_EXIT 39A7 ACTIVE
|
||||
384F INT20_ENTRY 3851 INT21_ENTRY 9F12 PCMODE_FT
|
||||
0000 NUMBERS
|
||||
006D PCMODE_FTL
|
||||
0000 LABELS 0000 CODE
|
||||
3C26 FUNC01 3C2A FUNC02 3C37 FUNC03 3C3D FUNC04 3C42 FUNC05
|
||||
3C6C FUNC06 3C7F FUNC07 3C87 FUNC08 3CA3 FUNC09
|
||||
3F10 DEVICE_WRITE 3CB7 FUNC0A 3CC0 FUNC0B
|
||||
3E00 COOKED_WRITE 3CCE FUNC0C 3CFD BREAK_CHECK
|
||||
3DD0 RAW_READ 3F0C DEVICE_READ 3DC1 CMDLINE_READ
|
||||
40DF VALID_DRIVE 4104 FUNC10 4104 FUNC11 4104 FUNC21
|
||||
4104 FUNC12 4236 FUNC40 4104 FUNC22 4104 FUNC13 41DA FUNC41
|
||||
4167 FUNC32 4104 FUNC23 4104 FUNC14 43EA FUNC60 426B FUNC42
|
||||
4104 FUNC24 4104 FUNC15 4295 FUNC43 4104 FUNC16 42FE FUNC53
|
||||
4104 FUNC17 42BD FUNC45 4174 FUNC36 4104 FUNC27 42B2 FUNC46
|
||||
412C FUNC19 4104 FUNC28 4317 FUNC56 42EB FUNC47 4340 FUNC57
|
||||
41E4 FUNC39 4409 FUNC67 4482 FUNC68 4130 FUNC1A 4139 FUNC1B
|
||||
41E4 FUNC3A 4139 FUNC1C 40B7 FUNC0D 41E4 FUNC3B 40CD FUNC0E
|
||||
4373 FUNC5A 41F6 FUNC3C 4104 FUNC0F 420E FUNC3D 41F6 FUNC5B
|
||||
4167 FUNC1F 42CD FUNC5C 42BD FUNC3E 41C9 FUNC2F 448E FUNC6C
|
||||
4236 FUNC3F 41E4 FUNC4E 41E4 FUNC4F
|
||||
451B FUNC44 4503 FUNC69
|
||||
47B4 FUNC30 47C9 FUNC33 4800 FUNC25 4678 FUNC52 4667 FUNC34
|
||||
4816 FUNC35 483C FUNC63 4838 FUNC54 4797 FUNC37 4B89 FUNC65
|
||||
4AA8 FUNC38 4873 FUNC29 4C77 FUNC66 495A FUNC2A 4980 FUNC2B
|
||||
496D FUNC2C 4999 FUNC2D 4832 FUNC2E 467D FUNC5D
|
||||
466A RETURN_DSBX_AS_ESBX 49BC READTIMEANDDATE
|
||||
4D59 FCBFDOS_CRIT 4D3D RETURN_AX_CLC
|
||||
4D01 SET_RETRY_RF 4CEE STRLEN 4D8E RETURN_BX 4D9B RETURN_CX
|
||||
4D6F FDOS_NOCRIT 4DA8 RETURN_DX 4D03 SET_RETRY 4D82 RELOAD_ES
|
||||
4D33 FDOS_AX_CRIT 4D28 FDOS_CRIT
|
||||
4EED SET_OWNER 4DB5 FUNC48 4E4F FUNC58 4DE2 FUNC49 4EB7 FREE_ALL
|
||||
4E1E FUNC4A 5004 CHECK_DMD_ID
|
||||
5062 CHAR_ERROR 504A ERROR_RET 5015 FUNC59 503D ERROR_EXIT
|
||||
505A FCBERROR_EXIT
|
||||
54D3 FUNC00 52B0 FUNC31 52A3 FUNC50 52A8 FUNC51 52A8 FUNC62
|
||||
51EF FUNC26 51C3 FUNC55 5928 CHECK_EXE 52DE FUNC4B 54F1 FUNC4C
|
||||
55A4 FUNC4D 5936 IMAGE_SIZE
|
||||
59E2 FUNC5F_COMMON 5975 FUNC5E 59B1 FUNC5F
|
||||
5A52 INT2F_ENTRY
|
||||
0000 VARIABLES 0000 DATA
|
||||
132C GLOBAL_PASSWORD 12D6 FDOS_HDS_ROOT 12E6 INFO_FCB
|
||||
131C FDOS_PB 12D4 FDOS_HDS_BLK 12D8 FDOS_HDS_DRV
|
||||
132A FDOS_RET 1316 FDOS_INFO
|
||||
0000 LABELS 0000 CODE
|
||||
7DB4 SHARE_DELAY 6E07 FDOS_MKDDSC
|
||||
6B82 FDOS_GETDPB 682B FDOS_CLOSE 6FB5 FDOS_MOVE
|
||||
6D61 FILE_UPDATE 6552 FDOS_MKDIR 7CD9 READTOD
|
||||
7B7F LDS_SI_DMAPTR 65B4 FDOS_RMDIR 6CA6 FDOS_NEXT
|
||||
6EFD FDOS_EXPAND 6BEA FDOS_SELECT
|
||||
7A9F DISCARD_FILES 7A70 RELEASE_HANDLE 6DB9 FDOS_MKNEW
|
||||
6BB8 FDOS_FLUSH 7108 FDOS_DATTIM 71B2 DBCS_LEAD
|
||||
79EE VFY_DHNDL_PTR 6C7D FDOS_FIRST 6D53 FDOS_COMMIT
|
||||
6B34 FDOS_CURDIR 7C77 MV_JOIN_ROOT 6514 FDOS_ERROR
|
||||
68B5 FDOS_WRITE 6A25 FDOS_ED_FUNCTION 74F0 GET_PB2_DRIVE
|
||||
68EE FDOS_UNLINK 7B8B COPY_ASCIIZ 6434 FDOS_ENTRY
|
||||
7607 UNPARSE 79AB VERIFY_HANDLE 7B7A CURRENT_DSK2AL
|
||||
6E18 BPB2DDSC 654D FDOS_ED_ACCESS 7B60 GET_XFTPTR 685E FDOS_READ
|
||||
77B8 CHECK_DELIM 7AF0 FIND_DHNDL 6E9C FDOS_DDIO 78C6 FIND_XFN
|
||||
7B92 CHECK_JOIN 720B REBUILD_LDT_ROOT 653E FDOS_ED_DRIVE
|
||||
7D6B HASH_PWD 77FD TOUPPER 6C1D FDOS_EXEC 652D FDOS_RESTART
|
||||
78DF ALLOC_DHNDL 6DDD FDOS_LOCK 6AEA FDOS_DUP 65FA FDOS_CHDIR
|
||||
64BD LOCAL_DISK 78ED ALLOC_XFN 69BB FDOS_CHMOD 7B85 LES_DI_DMAPTR
|
||||
77F5 CHECK_SLASH 75F7 HDSBLK 7AC7 IFN2DHNDL 6AF9 FDOS_FDUP
|
||||
673D FDOS_CREAT 65DF UPDATE_DIR_FAT 77EC CHECK_DSLASH
|
||||
7791 PARSE_ONE 7133 TIMESTAMP_DHNDL 67C2 FDOS_OPEN 6960 FDOS_LSEEK
|
||||
8019 FIRST_DEV 7E81 WRITE_DEV 804C IOC6_DEV 8050 IOC7_DEV 7EB6 READ_DEV
|
||||
7E67 DUP_DEV 7DCE OPEN_DEV 7E75 CLOSE_DEV
|
||||
80A9 FDOS_IOCTL
|
||||
82BD FDOS_EXIT 8301 FDOS_FCB
|
||||
8957 ISLOCAL 8815 REDIR_DHNDL_OFFER 8D5B REDIR_BUILD_PATH
|
||||
8891 REDIR_DRV_OFFER 8845 REDIR_MOVE_OFFER 8904 GET_LDT
|
||||
883F REDIR_ASCIIZ_DEV_OFFER 887C REDIR_ASCIIZ_FILE_OFFER
|
||||
8877 REDIR_ASCIIZ_OFFER 8919 GET_LDT_RAW
|
||||
88A7 REDIR_SNEXT_OFFER
|
||||
0000 VARIABLES 0000 DATA
|
||||
137D CHDBLK 1379 DCNT 1377 DIRP 137B FINDDFCB_MASK
|
||||
1357 DIRBUF
|
||||
0000 LABELS 0000 CODE
|
||||
8EE0 FILL_DIRBUF 928A ALLOCDIR 9259 HSHDSCRD
|
||||
8F9B DISCARD_DIRBUF 8F3A FLUSH_DIRBUF 9005 SETENDDIR
|
||||
917E FIXUP_HASHING 9022 FINDDFCB 901F FINDDFCBF 915A MKHSH
|
||||
9025 GETDIR
|
||||
960B UPDATE_DIR 92CE UPDATE_DDSC_FREE 946C FIXFAT
|
||||
9414 ALLOCATE_CLUSTER 936C GETNBLK 9334 BUFFERS_CHECK
|
||||
9595 LOCATE_BUFFER 9523 FATPTR 946A CHANGE_FAT_ENTRY
|
||||
96D3 ZEROBLK 961B FLUSH_DRIVE 92FB DISCARD_DIRTY
|
||||
93A7 ALLOC_CLUSTER 93AA ALLOC_CHAIN 9351 DELFAT
|
||||
92FF DISCARD_ALL 9303 DISCARD_DIR 9382 GETBLK
|
||||
9612 UPDATE_DAT 9616 UPDATE_FAT
|
||||
0000 VARIABLES 0000 DATA
|
||||
13A5 DOSFAT 1395 LASTCL 1388 LOGICAL_DRV 139F CLSIZE
|
||||
13B4 FDRWFLG 139D NFATRECS 13B0 CUR_DMA_SEG 13AE CUR_DMA
|
||||
138A PSECSIZ 1393 DATADD 138E FATADD 13CD REQ_HDR 13A1 SECPERCLU
|
||||
1399 DIRADD 1389 PHYSICAL_DRV 13A3 DIRPERCLU 1391 DIRINROOT
|
||||
1386 HDSADDR 13A8 PBLOCK 13A7 ADRIVE 13AC MULT_SEC 139B NFATS
|
||||
0000 LABELS 0000 CODE
|
||||
9EF3 CLUS2SEC 9CE1 SELECT_PHYSICAL_DRV 9E9E WRITE_BLOCK
|
||||
9819 FDOSRW 9D06 SELECT_ADRIVE 9C59 DEVICE_DRIVER
|
||||
97FA GET_DDSC 9C85 SELECT_LOGICAL_DRV 9C38 BLOCK_DEVICE_DRIVER
|
||||
9EB2 READ_BLOCK 9E79 MARK_LDT_UNSURE 9BF9 DDIOIF 9BD4 BLOCKIF
|
||||
6389 SPACE_OUT 6136 DEL_EOL 6116 PREV_W20 619F DEL_LINE 5EE6 READ_LINE
|
||||
6339 CHAR_INFO 638D BS_OUT 6399 PUT_STRING 60C9 GOTO_BOL 62B4 SAVE_LINE
|
||||
615E DELN_W10 60DD NEXT_CHAR A127 EDIT_SIZE
|
||||
A303 SAVE_HISTORY A2E0 INIT_HISTORY A51D MATCH_WORD
|
||||
A4E4 DEL_CUR_HISTORY_BUFFER A554 DEL_BOL A4D1 DEL_HISTORY_BUFFERS
|
||||
A53C PREV_WORD A502 NEXT_WORD A378 MATCH_CMD A388 SEARCH_CMD A3E1 PREV_CMD
|
||||
A405 NEXT_CMD A418 GOTO_EOL A565 DELN_WORD
|
||||
|
||||
BIN
IBMDOS/BIN/IBMDOS.TMP
Normal file
BIN
IBMDOS/BIN/IBMDOS.TMP
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/INT2F.OBJ
Normal file
BIN
IBMDOS/BIN/INT2F.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/IOCTL.OBJ
Normal file
BIN
IBMDOS/BIN/IOCTL.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/MISC.OBJ
Normal file
BIN
IBMDOS/BIN/MISC.OBJ
Normal file
Binary file not shown.
696
IBMDOS/BIN/NETWORK.LST
Normal file
696
IBMDOS/BIN/NETWORK.LST
Normal file
@@ -0,0 +1,696 @@
|
||||
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%
|
||||
|
||||
|
||||
|
||||
BIN
IBMDOS/BIN/NETWORK.OBJ
Normal file
BIN
IBMDOS/BIN/NETWORK.OBJ
Normal file
Binary file not shown.
83
IBMDOS/BIN/NETWORK.SYM
Normal file
83
IBMDOS/BIN/NETWORK.SYM
Normal file
@@ -0,0 +1,83 @@
|
||||
0000 VARIABLES
|
||||
0000 DMD_ID 0006 DMD_IDLE_FLAGS 0003 DMD_LEN 0008 DMD_NAME
|
||||
0001 DMD_PSP 0000 FDOS_DATA 0000 INT21AX 0000 NAME_NUM 0000 NETBIOS
|
||||
0000 NET_NAME 0000 NET_SET_COUNT 0001 REG_AH 0000 REG_AL
|
||||
0000 REG_AX 0003 REG_BH 0002 REG_BL 000C REG_BP 0002 REG_BX
|
||||
0005 REG_CH 0004 REG_CL 0014 REG_CS 0004 REG_CX 0007 REG_DH
|
||||
000A REG_DI 0006 REG_DL 000E REG_DS 0006 REG_DX 0010 REG_ES
|
||||
0016 REG_FLAGS 0012 REG_IP 0008 REG_SI
|
||||
|
||||
0000 NUMBERS
|
||||
0004 ACT_ABORT 0002 ACT_DELAY 0006 ACT_IGNORE 0001 ACT_RETRY 0005 ACT_TERM
|
||||
0007 ACT_URETRY 0003 ACT_USER 0001 CARRY_FLAG 0007 CLASS_APPLIC
|
||||
0003 CLASS_AUTHOR 000C CLASS_EXISTS
|
||||
0009 CLASS_FORMAT 0005 CLASS_HARDWARE
|
||||
0004 CLASS_INTERNAL 000A CLASS_LOCKED 0008 CLASS_LOST
|
||||
000B CLASS_MEDIA 0001 CLASS_RESOURCE
|
||||
0006 CLASS_SYSTEM 0002 CLASS_TEMP 000D CLASS_UNKNOWN
|
||||
0004 DCNTRL_COUNT 0000 DCNTRL_DSADD
|
||||
0000 DCNTRL_DSOFF 0002 DCNTRL_DSSEG 0006 DCNTRL_LEN
|
||||
0020 DHAT_BIN 0001 DHAT_CIN 0040 DHAT_CLEAN 0008 DHAT_CLK 0002 DHAT_COT
|
||||
0080 DHAT_DEV 001F DHAT_DRVMSK 1000 DHAT_LOCAL
|
||||
0800 DHAT_NETPRN 0004 DHAT_NUL 0040 DHAT_READY
|
||||
8000 DHAT_REMOTE 4000 DHAT_TIMEOK 4000 DHM_COMMIT
|
||||
0000 DHM_COMPAT 0010 DHM_DENY_ALL 0040 DHM_DENY_NONE
|
||||
0030 DHM_DENY_READ 0020 DHM_DENY_WRITE 8000 DHM_FCB
|
||||
0080 DHM_LOCAL 2000 DHM_NOCRIT 0000 DHM_RO 0002 DHM_RW 000F DHM_RWMSK
|
||||
0070 DHM_SHAREMSK 0001 DHM_WO 0005 DHNDL_ATTR 0035 DHNDL_BLK
|
||||
000B DHNDL_BLK1 0000 DHNDL_COUNT 000F DHNDL_DATE
|
||||
0004 DHNDL_DATRB 001B DHNDL_DBLK 001E DHNDL_DCNTHI
|
||||
001F DHNDL_DCNTLO 0007 DHNDL_DEVOFF
|
||||
0007 DHNDL_DEVPTR 0009 DHNDL_DEVSEG 0028 DHNDL_EXT
|
||||
0019 DHNDL_IDX 003B DHNDL_LEN 0002 DHNDL_MODE 0020 DHNDL_NAME 0015 DHNDL_POS
|
||||
0017 DHNDL_POSHI 0015 DHNDL_POSLO 0031 DHNDL_PSP
|
||||
002B DHNDL_SFT 0033 DHNDL_SHARE 0011 DHNDL_SIZE
|
||||
0013 DHNDL_SIZEHI 0011 DHNDL_SIZELO 000D DHNDL_TIME
|
||||
002F DHNDL_UID 0005 DHNDL_WATTR 0400 DIR_FLAG
|
||||
0008 DMD_NAME_LEN FFFB ED_ACCESS FFF4 ED_ACC_CODE
|
||||
FFAB ED_ASSIGN FFEA ED_BADCMD FFE9 ED_BADDATA FFE6 ED_BADMEDIA
|
||||
FFE8 ED_BADRHLEN FFE7 ED_BADSEEK FFEC ED_BADUNIT FFF7 ED_BLOCK
|
||||
FFA6 ED_COMPONENT FFF3 ED_DATA FFEF ED_DEVICE FFF0 ED_DIR
|
||||
FFDE ED_DISKCHG FFF9 ED_DMD FFF1 ED_DRIVE FFF6 ED_ENVIRON FFB0 ED_EXISTS
|
||||
FFAD ED_FAIL FFFE ED_FILE FFF5 ED_FORMAT FFFF ED_FUNCTION
|
||||
FFE1 ED_GENFAIL FFFC ED_HANDLE FFFA ED_H_MATCH FFA6 ED_LASTERROR
|
||||
FFDF ED_LOCKFAIL FFAE ED_MAKE FFF8 ED_MEMORY FFCE ED_NET
|
||||
FFBF ED_NETACCESS FFB3 ED_NETCOMM FFA7 ED_NETFUNC FFB1 ED_NETLOG
|
||||
FFB7 ED_NETPWD FFB5 ED_NETREQ FFB2 ED_NETSRVR FFB4 ED_NETTIME FFB6 ED_NETVER
|
||||
FFA8 ED_NETWRITE FFDD ED_NOFCBS FFDC ED_NOLOCKS FFE4 ED_NOPAPER
|
||||
FFEB ED_NOTREADY FFA9 ED_PARAM FFAA ED_PASSWORD
|
||||
FFFD ED_PATH FFED ED_PROTECT FFE2 ED_RDFAIL FFE5 ED_RNF FFEE ED_ROOM
|
||||
FFE0 ED_SHAREFAIL FFAC ED_STRUCT FFE3 ED_WRFAIL 0002 ERR_ABORT
|
||||
0003 ERR_FAIL 0000 ERR_IGNORE 0001 ERR_RETRY 0000 FALSE 1105 I2F_CHDIR
|
||||
1106 I2F_CLOSE 1107 I2F_COMMIT 1117 I2F_CREATE 1126 I2F_CTLP
|
||||
1124 I2F_CTLP_ERR 1113 I2F_DEL 1120 I2F_FLUSH
|
||||
110F I2F_GET_ATTR 110A I2F_LOCK 1121 I2F_LSEEK 1103 I2F_MKDIR
|
||||
1116 I2F_OPEN 111D I2F_PCLOSE 1123 I2F_PPATH 1100 I2F_PRESCENCE
|
||||
1122 I2F_PTERM 1108 I2F_READ 1125 I2F_REDIR_5D
|
||||
111F I2F_REDIR_5E 111E I2F_REDIR_5F 1111 I2F_REN
|
||||
1101 I2F_RMDIR 110E I2F_SET_ATTR 111B I2F_SFIRST 111C I2F_SNEXT
|
||||
110C I2F_SPACE 110B I2F_UNLOCK 1109 I2F_WRITE 1118 I2F_XCREATE
|
||||
1119 I2F_XSFIRST 0001 IDLE_COMMAND
|
||||
FFFF IDLE_DETECT C000 IDLE_DISABLE
|
||||
0002 IDLE_DOSFUNC 8000 IDLE_INIT 0004 IDLE_INT28 4000 IDLE_ON
|
||||
004D IDM 005A IDZ 0200 INT_FLAG 0049 LDT_BLK 004D LDT_DRV
|
||||
0043 LDT_FLAGS 0058 LDT_LEN 0000 LDT_NAME 0045 LDT_PDT 004B LDT_ROOT
|
||||
004F LDT_ROOTLEN 2000 LFLG_JOINED
|
||||
8000 LFLG_NETWRKD 4000 LFLG_PHYSICAL 1000 LFLG_SUBST
|
||||
0002 LOC_BLOCK 0004 LOC_CHAR 0005 LOC_MEMORY 0003 LOC_NET
|
||||
0001 LOC_UNKNOWN 000D MAX_FILELEN
|
||||
0050 MAX_PATHLEN 0040 NO_CRIT_ERRORS 0800 OFLW_FLAG
|
||||
0008 OK_FAIL 0020 OK_IGNORE 0010 OK_RETRY 0018 OK_RF 0030 OK_RI
|
||||
0038 OK_RIF 0004 PROC_DEVIN 0001 PROC_IDLE 0002 PROC_INT28 0003 PROC_KEYIN
|
||||
0080 SIGN_FLAG 00C0 STACK_SIZE 0001 TERM_BREAK 0002 TERM_ERROR
|
||||
0000 TERM_NORMAL 0003 TERM_RESIDENT FFFF TRUE
|
||||
0006 TRUE_VERSION 0040 ZERO_FLAG 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
0000 ERROR_EXIT 000C F5E00 0022 F5E01 001D F5E_SUCCESS
|
||||
0000 FUNC5E 003C FUNC5F 0044 FUNC5F_10 0062 FUNC5F_30 006A FUNC5F_40
|
||||
006D FUNC5F_COMMON 0081 FUNC5F_ERROR 007E FUNC5F_OK
|
||||
0000 GET_LDT_RAW 0000 RELOAD_ES 0000 RETURN_AX_CLC
|
||||
0000 RETURN_CX
|
||||
_RI
|
||||
0038 OK_RIF 0004 PROC_DEVIN 0001 PROC_IDLE 0002 PROC_INT28 0003 PROC_KEYIN
|
||||
BIN
IBMDOS/BIN/PCMIF.OBJ
Normal file
BIN
IBMDOS/BIN/PCMIF.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/PROCESS.OBJ
Normal file
BIN
IBMDOS/BIN/PROCESS.OBJ
Normal file
Binary file not shown.
BIN
IBMDOS/BIN/REDIR.OBJ
Normal file
BIN
IBMDOS/BIN/REDIR.OBJ
Normal file
Binary file not shown.
875
IBMDOS/BIN/SUPPORT.LST
Normal file
875
IBMDOS/BIN/SUPPORT.LST
Normal file
@@ -0,0 +1,875 @@
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 1
|
||||
|
||||
|
||||
= 0001 __RASM__ EQU 1
|
||||
|
||||
; File : $SUPPORT.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$
|
||||
; SUPPORT.A86 1.11 93/11/29 13:39:28
|
||||
; Don't rely on DS when return_ called
|
||||
; ENDLOG
|
||||
;
|
||||
; The following Support routines are provided for both the
|
||||
; handle and FCB functions which require critical error handler
|
||||
; support.
|
||||
;
|
||||
; 15 Jun 88 Modify the SYSDAT and SUPERVISOR variables to enable
|
||||
; the relocation of the BDOS into high memory
|
||||
; 5 Jan 89 Only set PCKBD mode if we own the default console
|
||||
; 9 Mar 89 Support a split PCMODE and SYSDAT Segments
|
||||
; 22 Sep 89 LDT support routine added
|
||||
; 29 Jan 90 Int 2A critical section support added to dpbdos_entry
|
||||
; 7 Mar 90 Convert to register preserved function calls
|
||||
; 4 May 90 DRDOS int3x handlers removed (they are pointed to IRET
|
||||
; in PCMODE_DATA by INIT.PCM)
|
||||
; 12 Dec 90 keep error server number inverted so local = 0, more compatible
|
||||
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 2
|
||||
|
||||
|
||||
;
|
||||
= 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
|
||||
= ; 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
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 3
|
||||
|
||||
|
||||
= 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
|
||||
= ;
|
||||
= 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: SUPPORT.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: SUPPORT.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 fdos.def
|
||||
= ; File : $FDOS.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
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.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
|
||||
=
|
||||
= 0048 FD_DISKINFO equ 48h
|
||||
= 0049 FD_FLUSH equ 49h
|
||||
= 004A FD_SELECT equ 4Ah
|
||||
= 004B FD_EXEC equ 4Bh
|
||||
= 004C FD_EXIT equ 4Ch
|
||||
= 004D FD_FCB equ 4Dh
|
||||
= 0050 FD_COMMIT equ 50H
|
||||
= 0051 FD_NEW equ 51h
|
||||
= 0052 FD_LOCK equ 52h
|
||||
= 0054 FD_DDIO equ 54h
|
||||
= 0055 FD_EXPAND equ 55h
|
||||
= 0058 FD_REOPEN equ 58h
|
||||
=
|
||||
= 0007 FDOS_MAXPARM equ 7 ; Maximum FDOS Parameter Length (WORDS)
|
||||
=
|
||||
= 0000 FD_FUNC equ fdos_data
|
||||
=
|
||||
= 0002 FD_DRIVE equ fdos_data + 2
|
||||
= 0004 FD_DPB equ dword ptr fdos_data + 4
|
||||
= 0004 FD_DPBOFF equ fdos_data + 4
|
||||
= 0006 FD_DPBSEG equ fdos_data + 6
|
||||
= 0008 FD_ADJUST equ fdos_data + 8
|
||||
=
|
||||
= 0002 FD_NAME equ dword ptr fdos_data + 2
|
||||
= 0002 FD_NAMEOFF equ fdos_data + 2
|
||||
= 0004 FD_NAMESEG equ fdos_data + 4
|
||||
=
|
||||
= 0006 FD_MODE equ fdos_data + 6
|
||||
=
|
||||
= 0002 FD_HANDLE equ fdos_data + 2
|
||||
=
|
||||
= 0004 FD_BUF equ dword ptr fdos_data + 4
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 7
|
||||
|
||||
|
||||
= 0004 FD_BUFOFF equ fdos_data + 4
|
||||
= 0006 FD_BUFSEG equ fdos_data + 6
|
||||
=
|
||||
= 0008 FD_COUNT equ fdos_data + 8
|
||||
=
|
||||
= 0004 FD_OFFSET equ dword ptr fdos_data + 4
|
||||
=
|
||||
= 0008 FD_METHOD equ fdos_data + 8
|
||||
=
|
||||
= 0006 FD_FLAG equ fdos_data + 6
|
||||
=
|
||||
= 0008 FD_ATTRIB equ fdos_data + 8
|
||||
=
|
||||
= 0004 FD_PATH equ dword ptr fdos_data + 4
|
||||
= 0004 FD_PATHOFF equ fdos_data + 4
|
||||
= 0006 FD_PATHSEG equ fdos_data + 6
|
||||
=
|
||||
= 0002 FD_ONAME equ dword ptr fdos_data + 2
|
||||
= 0002 FD_ONAMEOFF equ fdos_data + 2
|
||||
= 0004 FD_ONAMESEG equ fdos_data + 4
|
||||
=
|
||||
= 000A FD_NNAME equ dword ptr fdos_data + 10
|
||||
= 000A FD_NNAMEOFF equ fdos_data + 10
|
||||
= 000C FD_NNAMESEG equ fdos_data + 12
|
||||
=
|
||||
= 0004 FD_SFLAG equ fdos_data + 4
|
||||
= 0006 FD_DATE equ fdos_data + 6
|
||||
= 0008 FD_TIME equ fdos_data + 8
|
||||
=
|
||||
= 0008 FD_LENGTH equ dword ptr fdos_data + 8
|
||||
= 000C FD_LFLAG equ word ptr fdos_data + 12
|
||||
=
|
||||
= 0004 FD_NEWHND equ fdos_data + 4
|
||||
=
|
||||
= 0002 FD_FCBADR equ dword ptr fdos_data + 2
|
||||
= 0002 FD_FCBOFF equ fdos_data + 2
|
||||
= 0004 FD_FCBSEG equ fdos_data + 4
|
||||
=
|
||||
= 0006 FD_FCBCNT equ fdos_data + 6
|
||||
= 0008 FD_FCBFUNC equ fdos_data + 8
|
||||
=
|
||||
= 0002 FD_PSPSEG equ fdos_data + 2
|
||||
=
|
||||
= 0002 FD_BPBOFF equ fdos_data + 2
|
||||
= 0004 FD_BPBSEG equ fdos_data + 4
|
||||
= 0006 FD_DDSCOFF equ fdos_data + 6
|
||||
= 0008 FD_DDSCSEG equ fdos_data + 8
|
||||
=
|
||||
= 0004 FD_IOCTLFUNC equ fdos_data + 4
|
||||
= 0006 FD_IOCTLSTAT equ fdos_data + 6
|
||||
=
|
||||
= 0002 FD_NUMOPEN equ fdos_data + 2
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 8
|
||||
|
||||
|
||||
=
|
||||
= 0002 FD_DDIO_DRV_OP equ fdos_data + 2
|
||||
= 0004 FD_DDIO_NSECTORS equ fdos_data + 4
|
||||
= 0006 FD_DDIO_STARTLOW equ fdos_data + 6
|
||||
= 0008 FD_DDIO_STARTHIGH equ fdos_data + 8
|
||||
= 000A FD_DDIO_DMAOFF equ fdos_data + 10
|
||||
= 000C FD_DDIO_DMASEG equ fdos_data + 12
|
||||
=
|
||||
|
||||
= 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
|
||||
= ; 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
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 9
|
||||
|
||||
|
||||
= 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
|
||||
= 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
|
||||
=
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 10
|
||||
|
||||
|
||||
=
|
||||
= 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
|
||||
= 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: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
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 11
|
||||
|
||||
|
||||
= ; 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
|
||||
=
|
||||
= 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
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 12
|
||||
|
||||
|
||||
= 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
|
||||
= 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
|
||||
|
||||
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 13
|
||||
|
||||
|
||||
eject
|
||||
PCM_CODE CSEG BYTE
|
||||
extrn error_exit:near ; Standard Error Exit Routine
|
||||
extrn fcberror_exit:near ; Special FCB function Error Exit
|
||||
extrn fdos_entry:near
|
||||
extrn get_dseg:near
|
||||
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 14
|
||||
|
||||
|
||||
eject
|
||||
;
|
||||
; STRLEN determines the length of the string passed in DS:SI
|
||||
; and returns the byte length in CX.
|
||||
;
|
||||
Public strlen
|
||||
strlen:
|
||||
0000 0657 push es ! push di
|
||||
0002 1E07 push ds ! pop es
|
||||
0004 8BFE mov di,si
|
||||
0006 B9FFFF mov cx,0FFFFh
|
||||
0009 2AC0 sub al,al
|
||||
000B F2AE repnz scasb
|
||||
000D 5F07 pop di ! pop es
|
||||
000F F7D1 not cx
|
||||
0011 49 dec cx
|
||||
0012 C3 ret
|
||||
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 15
|
||||
|
||||
|
||||
eject
|
||||
;
|
||||
; This routine sets the address to be returned to by the
|
||||
; FDOS when an error has occured and the RETRY request has been
|
||||
; made. The set_retry routine should be used as follows:-
|
||||
;
|
||||
; mov al,Valid Error Responses
|
||||
; call set_retry
|
||||
; Init All FDOS Parameters
|
||||
; call fdos_crit
|
||||
;
|
||||
; NB. For register model return with AX = dos_AL extended to 16 bit
|
||||
|
||||
Public set_retry_RF
|
||||
set_retry_RF:
|
||||
0013 B018 mov al,OK_RF ; Valid to RETRY or FAIL
|
||||
; jmp set_retry ; (the most common case)
|
||||
|
||||
Public set_retry
|
||||
set_retry:
|
||||
0015 A20000 E mov valid_flg,al ; Save Valid Error Reponses
|
||||
0018 8F060000 E pop retry_off ; Save the Routine Address
|
||||
001C 89260000 E mov retry_sp,sp ; and the Stack Pointer
|
||||
0020 8AC4 mov al,ah ; get function number
|
||||
0022 32E4 xor ah,ah ; make it a word
|
||||
0024 A30000 R mov FD_FUNC,ax ; save it for the FDOS
|
||||
0027 1E push ds
|
||||
0028 53 push bx
|
||||
0029 C51E0000 E lds bx,int21regs_ptr ; point to users registers
|
||||
002D 816716FEFF and reg_FLAGS[bx],not CARRY_FLAG
|
||||
0032 8A07 mov al,reg_AL[bx] ; clear CY assuming we will succeed
|
||||
0034 5B pop bx ; and reload AL with entry value
|
||||
0035 1F pop ds
|
||||
0036 FF260000 E jmp retry_off
|
||||
|
||||
;
|
||||
; The FDOS routine executes the CCP/M FDOS function using the
|
||||
; static FDOS parameter block defined in the Data Segment.
|
||||
;
|
||||
Public fdos_crit
|
||||
fdos_crit:
|
||||
003A E84400 0081 call fdos_nocrit
|
||||
003D 3DA6FF cmp ax,ED_LASTERROR ; Compare against last error code
|
||||
0040 731E 0060 jnb fdos_error ; if NOT below then is ERROR CODE
|
||||
0042 0BC0 or ax,ax ; Reset the Carry Flag and Return
|
||||
0044 C3 ret
|
||||
|
||||
Public fdos_ax_crit
|
||||
fdos_ax_crit:
|
||||
0045 E83900 0081 call fdos_nocrit
|
||||
0048 3DA6FF cmp ax,ED_LASTERROR ; Compare against last error code
|
||||
004B 7313 0060 jnb fdos_error ; if NOT below then is ERROR CODE
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 16
|
||||
|
||||
|
||||
004D 0BC0 or ax,ax ; Reset the Carry Flag and Return
|
||||
; jmp return_AX_CLC ; Save the Return Code
|
||||
|
||||
Public return_AX_CLC
|
||||
return_AX_CLC:
|
||||
;-------------
|
||||
; On Entry:
|
||||
; AX to be returned to caller in AX
|
||||
; On Exit:
|
||||
; ES:DI trashed
|
||||
;
|
||||
004F 1E57 push ds ! push di
|
||||
0051 36C53E0000 E lds di,ss:int21regs_ptr
|
||||
0056 8905 mov reg_AX[di],ax ; return AX to caller
|
||||
0058 816516FEFF and reg_FLAGS[di],not CARRY_FLAG
|
||||
005D 5F1F pop di ! pop ds
|
||||
005F C3 ret
|
||||
|
||||
|
||||
fdos_error: ; Process the Error
|
||||
0060 3B260000 E cmp sp,retry_sp ; Is the user expecting use to
|
||||
0064 7503 0069 jnz fdos_e10 ; return or use the default handler
|
||||
0066 E90000 E jmp error_exit ; If CALLed then return with the error
|
||||
fdos_e10: ; to the calling routine.
|
||||
0069 F9 stc
|
||||
006A C3 ret
|
||||
|
||||
Public fcbfdos_crit
|
||||
fcbfdos_crit:
|
||||
006B E81300 0081 call fdos_nocrit
|
||||
006E 3DA6FF cmp ax,ED_LASTERROR ; Compare against last error code
|
||||
0071 7303 0076 jnb fcbfdos_error ; if NOT below then is ERROR CODE
|
||||
0073 0BC0 or ax,ax ; Reset the Carry Flag and Return
|
||||
0075 C3 ret
|
||||
|
||||
fcbfdos_error: ; Process the Error
|
||||
0076 3B260000 E cmp sp,retry_sp ; Is the user expecting use to
|
||||
007A 7503 007F jnz fcbfdos_e10 ; return or use the default handler
|
||||
007C E90000 E jmp fcberror_exit ; If CALLed then return with the error
|
||||
fcbfdos_e10: ; to the calling routine.
|
||||
007F F9 stc
|
||||
0080 C3 ret
|
||||
|
||||
Public fdos_nocrit
|
||||
fdos_nocrit:
|
||||
0081 BA0000 R mov dx,offset fdos_data ; point to fdos parameter block
|
||||
0084 1E06 push ds ! push es
|
||||
0086 565755 push si ! push di ! push bp
|
||||
0089 E80000 E call fdos_entry ; BDOS module entry point
|
||||
008C 0BC0 or ax,ax ; Set the Flags
|
||||
008E 5D5F5E pop bp ! pop di ! pop si
|
||||
0091 071F pop es ! pop ds
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 17
|
||||
|
||||
|
||||
0093 C3 ret
|
||||
|
||||
|
||||
Public reload_ES
|
||||
reload_ES:
|
||||
; On Entry:
|
||||
; None
|
||||
; On Exit:
|
||||
; ES = callers ES
|
||||
; All regs preserved
|
||||
;
|
||||
0094 53 push bx
|
||||
0095 36C41E0000 E les bx,ss:int21regs_ptr
|
||||
009A 268E4710 mov es,es:reg_ES[bx] ; reload with callers ES
|
||||
009E 5B pop bx
|
||||
009F C3 ret
|
||||
|
||||
|
||||
Public return_BX
|
||||
return_BX:
|
||||
;---------
|
||||
; On Entry:
|
||||
; BX to be returned to caller in BX
|
||||
; On Exit:
|
||||
; All regs preserved
|
||||
;
|
||||
00A0 1E53 push ds ! push bx
|
||||
00A2 36C5360000 E lds si,ss:int21regs_ptr
|
||||
00A7 895C02 mov reg_BX[si],bx ; return BX to caller
|
||||
00AA 5B1F pop bx ! pop ds
|
||||
00AC C3 ret
|
||||
|
||||
Public return_CX
|
||||
return_CX:
|
||||
;---------
|
||||
; On Entry:
|
||||
; CX to be returned to caller in CX
|
||||
; On Exit:
|
||||
; All regs preserved
|
||||
;
|
||||
00AD 1E53 push ds ! push bx
|
||||
00AF 36C51E0000 E lds bx,ss:int21regs_ptr
|
||||
00B4 894F04 mov reg_CX[bx],cx ; return CX to caller
|
||||
00B7 5B1F pop bx ! pop ds
|
||||
00B9 C3 ret
|
||||
|
||||
Public return_DX
|
||||
return_DX:
|
||||
;---------
|
||||
; On Entry:
|
||||
; DX to be returned to caller in DX
|
||||
; On Exit:
|
||||
PC-DOS RASM-86 1.4a Source: SUPPORT.A86 Page 18
|
||||
|
||||
|
||||
; All regs preserved
|
||||
;
|
||||
00BA 1E53 push ds ! push bx
|
||||
00BC 36C51E0000 E lds bx,ss:int21regs_ptr
|
||||
00C1 895706 mov reg_DX[bx],dx ; return DX to caller
|
||||
00C4 5B1F pop bx ! pop ds
|
||||
00C6 C3 ret
|
||||
|
||||
PCMODE_DATA DSEG WORD
|
||||
|
||||
|
||||
extrn current_psp:word
|
||||
extrn DBCS_tbl:word ; double byte character set table
|
||||
extrn int21regs_ptr:dword
|
||||
extrn retry_off:word
|
||||
extrn retry_sp:word
|
||||
extrn valid_flg:byte
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
End of assembly. Number of errors: 0. Use factor: 16%
|
||||
RD
|
||||
|
||||
|
||||
extrn current_psp:word
|
||||
|
||||
BIN
IBMDOS/BIN/SUPPORT.OBJ
Normal file
BIN
IBMDOS/BIN/SUPPORT.OBJ
Normal file
Binary file not shown.
93
IBMDOS/BIN/SUPPORT.SYM
Normal file
93
IBMDOS/BIN/SUPPORT.SYM
Normal file
@@ -0,0 +1,93 @@
|
||||
0000 VARIABLES
|
||||
0000 CURRENT_PSP 0000 DBCS_TBL 0000 DMD_ID
|
||||
0006 DMD_IDLE_FLAGS 0003 DMD_LEN 0008 DMD_NAME 0001 DMD_PSP
|
||||
0000 FDOS_DATA 0008 FD_ADJUST 0008 FD_ATTRIB 0002 FD_BPBOFF 0004 FD_BPBSEG
|
||||
0004 FD_BUF 0004 FD_BUFOFF 0006 FD_BUFSEG 0008 FD_COUNT 0006 FD_DATE
|
||||
000A FD_DDIO_DMAOFF 000C FD_DDIO_DMASEG
|
||||
0002 FD_DDIO_DRV_OP 0004 FD_DDIO_NSECTORS
|
||||
0008 FD_DDIO_STARTHIGH 0006 FD_DDIO_STARTLOW 0006 FD_DDSCOFF
|
||||
0008 FD_DDSCSEG 0004 FD_DPB 0004 FD_DPBOFF 0006 FD_DPBSEG 0002 FD_DRIVE
|
||||
0002 FD_FCBADR 0006 FD_FCBCNT 0008 FD_FCBFUNC 0002 FD_FCBOFF 0004 FD_FCBSEG
|
||||
0006 FD_FLAG 0000 FD_FUNC 0002 FD_HANDLE 0004 FD_IOCTLFUNC
|
||||
0006 FD_IOCTLSTAT 0008 FD_LENGTH 000C FD_LFLAG 0008 FD_METHOD
|
||||
0006 FD_MODE 0002 FD_NAME 0002 FD_NAMEOFF 0004 FD_NAMESEG 0004 FD_NEWHND
|
||||
000A FD_NNAME 000A FD_NNAMEOFF 000C FD_NNAMESEG
|
||||
0002 FD_NUMOPEN 0004 FD_OFFSET 0002 FD_ONAME 0002 FD_ONAMEOFF
|
||||
0004 FD_ONAMESEG 0004 FD_PATH 0004 FD_PATHOFF 0006 FD_PATHSEG
|
||||
0002 FD_PSPSEG 0004 FD_SFLAG 0008 FD_TIME 0000 INT21REGS_PTR
|
||||
0001 REG_AH 0000 REG_AL 0000 REG_AX 0003 REG_BH 0002 REG_BL
|
||||
000C REG_BP 0002 REG_BX 0005 REG_CH 0004 REG_CL 0014 REG_CS
|
||||
0004 REG_CX 0007 REG_DH 000A REG_DI 0006 REG_DL 000E REG_DS
|
||||
0006 REG_DX 0010 REG_ES 0016 REG_FLAGS 0012 REG_IP 0008 REG_SI
|
||||
0000 RETRY_OFF 0000 RETRY_SP 0000 VALID_FLG
|
||||
|
||||
0000 NUMBERS
|
||||
0004 ACT_ABORT 0002 ACT_DELAY 0006 ACT_IGNORE 0001 ACT_RETRY 0005 ACT_TERM
|
||||
0007 ACT_URETRY 0003 ACT_USER 0001 CARRY_FLAG 0007 CLASS_APPLIC
|
||||
0003 CLASS_AUTHOR 000C CLASS_EXISTS
|
||||
0009 CLASS_FORMAT 0005 CLASS_HARDWARE
|
||||
0004 CLASS_INTERNAL 000A CLASS_LOCKED 0008 CLASS_LOST
|
||||
000B CLASS_MEDIA 0001 CLASS_RESOURCE
|
||||
0006 CLASS_SYSTEM 0002 CLASS_TEMP 000D CLASS_UNKNOWN
|
||||
0004 DCNTRL_COUNT 0000 DCNTRL_DSADD
|
||||
0000 DCNTRL_DSOFF 0002 DCNTRL_DSSEG 0006 DCNTRL_LEN
|
||||
0020 DHAT_BIN 0001 DHAT_CIN 0040 DHAT_CLEAN 0008 DHAT_CLK 0002 DHAT_COT
|
||||
0080 DHAT_DEV 001F DHAT_DRVMSK 1000 DHAT_LOCAL
|
||||
0800 DHAT_NETPRN 0004 DHAT_NUL 0040 DHAT_READY
|
||||
8000 DHAT_REMOTE 4000 DHAT_TIMEOK 4000 DHM_COMMIT
|
||||
0000 DHM_COMPAT 0010 DHM_DENY_ALL 0040 DHM_DENY_NONE
|
||||
0030 DHM_DENY_READ 0020 DHM_DENY_WRITE 8000 DHM_FCB
|
||||
0080 DHM_LOCAL 2000 DHM_NOCRIT 0000 DHM_RO 0002 DHM_RW 000F DHM_RWMSK
|
||||
0070 DHM_SHAREMSK 0001 DHM_WO 0005 DHNDL_ATTR 0035 DHNDL_BLK
|
||||
000B DHNDL_BLK1 0000 DHNDL_COUNT 000F DHNDL_DATE
|
||||
0004 DHNDL_DATRB 001B DHNDL_DBLK 001E DHNDL_DCNTHI
|
||||
001F DHNDL_DCNTLO 0007 DHNDL_DEVOFF
|
||||
0007 DHNDL_DEVPTR 0009 DHNDL_DEVSEG 0028 DHNDL_EXT
|
||||
0019 DHNDL_IDX 003B DHNDL_LEN 0002 DHNDL_MODE 0020 DHNDL_NAME 0015 DHNDL_POS
|
||||
0017 DHNDL_POSHI 0015 DHNDL_POSLO 0031 DHNDL_PSP
|
||||
002B DHNDL_SFT 0033 DHNDL_SHARE 0011 DHNDL_SIZE
|
||||
0013 DHNDL_SIZEHI 0011 DHNDL_SIZELO 000D DHNDL_TIME
|
||||
002F DHNDL_UID 0005 DHNDL_WATTR 0400 DIR_FLAG
|
||||
0008 DMD_NAME_LEN FFFB ED_ACCESS FFF4 ED_ACC_CODE
|
||||
FFAB ED_ASSIGN FFEA ED_BADCMD FFE9 ED_BADDATA FFE6 ED_BADMEDIA
|
||||
FFE8 ED_BADRHLEN FFE7 ED_BADSEEK FFEC ED_BADUNIT FFF7 ED_BLOCK
|
||||
FFA6 ED_COMPONENT FFF3 ED_DATA FFEF ED_DEVICE FFF0 ED_DIR
|
||||
FFDE ED_DISKCHG FFF9 ED_DMD FFF1 ED_DRIVE FFF6 ED_ENVIRON FFB0 ED_EXISTS
|
||||
FFAD ED_FAIL FFFE ED_FILE FFF5 ED_FORMAT FFFF ED_FUNCTION
|
||||
FFE1 ED_GENFAIL FFFC ED_HANDLE FFFA ED_H_MATCH FFA6 ED_LASTERROR
|
||||
FFDF ED_LOCKFAIL FFAE ED_MAKE FFF8 ED_MEMORY FFCE ED_NET
|
||||
FFBF ED_NETACCESS FFB3 ED_NETCOMM FFA7 ED_NETFUNC FFB1 ED_NETLOG
|
||||
FFB7 ED_NETPWD FFB5 ED_NETREQ FFB2 ED_NETSRVR FFB4 ED_NETTIME FFB6 ED_NETVER
|
||||
FFA8 ED_NETWRITE FFDD ED_NOFCBS FFDC ED_NOLOCKS FFE4 ED_NOPAPER
|
||||
FFEB ED_NOTREADY FFA9 ED_PARAM FFAA ED_PASSWORD
|
||||
FFFD ED_PATH FFED ED_PROTECT FFE2 ED_RDFAIL FFE5 ED_RNF FFEE ED_ROOM
|
||||
FFE0 ED_SHAREFAIL FFAC ED_STRUCT FFE3 ED_WRFAIL 0002 ERR_ABORT
|
||||
0003 ERR_FAIL 0000 ERR_IGNORE 0001 ERR_RETRY 0000 FALSE
|
||||
0007 FDOS_MAXPARM 0050 FD_COMMIT 0054 FD_DDIO
|
||||
0048 FD_DISKINFO 004B FD_EXEC 004C FD_EXIT 0055 FD_EXPAND
|
||||
004D FD_FCB 0049 FD_FLUSH 0052 FD_LOCK 0051 FD_NEW 0058 FD_REOPEN
|
||||
004A FD_SELECT 0001 IDLE_COMMAND FFFF IDLE_DETECT
|
||||
C000 IDLE_DISABLE 0002 IDLE_DOSFUNC 8000 IDLE_INIT
|
||||
0004 IDLE_INT28 4000 IDLE_ON 004D IDM 005A IDZ 0200 INT_FLAG
|
||||
0049 LDT_BLK 004D LDT_DRV 0043 LDT_FLAGS 0058 LDT_LEN 0000 LDT_NAME
|
||||
0045 LDT_PDT 004B LDT_ROOT 004F LDT_ROOTLEN
|
||||
2000 LFLG_JOINED 8000 LFLG_NETWRKD
|
||||
4000 LFLG_PHYSICAL 1000 LFLG_SUBST 0002 LOC_BLOCK 0004 LOC_CHAR
|
||||
0005 LOC_MEMORY 0003 LOC_NET 0001 LOC_UNKNOWN
|
||||
000D MAX_FILELEN 0050 MAX_PATHLEN
|
||||
0040 NO_CRIT_ERRORS 0800 OFLW_FLAG 0008 OK_FAIL 0020 OK_IGNORE
|
||||
0010 OK_RETRY 0018 OK_RF 0030 OK_RI 0038 OK_RIF 0004 PROC_DEVIN
|
||||
0001 PROC_IDLE 0002 PROC_INT28 0003 PROC_KEYIN 0080 SIGN_FLAG 00C0 STACK_SIZE
|
||||
0001 TERM_BREAK 0002 TERM_ERROR 0000 TERM_NORMAL
|
||||
0003 TERM_RESIDENT FFFF TRUE 0006 TRUE_VERSION
|
||||
0040 ZERO_FLAG 0001 __RASM__
|
||||
|
||||
0000 LABELS
|
||||
0000 ERROR_EXIT 0000 FCBERROR_EXIT 006B FCBFDOS_CRIT
|
||||
007F FCBFDOS_E10 0076 FCBFDOS_ERROR
|
||||
0045 FDOS_AX_CRIT 003A FDOS_CRIT 0069 FDOS_E10 0000 FDOS_ENTRY
|
||||
0060 FDOS_ERROR 0081 FDOS_NOCRIT 0000 GET_DSEG 0094 RELOAD_ES
|
||||
004F RETURN_AX_CLC 00A0 RETURN_BX 00AD RETURN_CX 00BA RETURN_DX
|
||||
0015 SET_RETRY 0013 SET_RETRY_RF 0000 STRLEN
|
||||
IGN_FLAG 00C0 STACK_SIZE
|
||||
0001 TERM_BREAK 0002 TERM_ERROR 0000 TERM_NORMAL
|
||||
1300
IBMDOS/BUFFERS.A86
Normal file
1300
IBMDOS/BUFFERS.A86
Normal file
File diff suppressed because it is too large
Load Diff
523
IBMDOS/CDEVIO.A86
Normal file
523
IBMDOS/CDEVIO.A86
Normal file
@@ -0,0 +1,523 @@
|
||||
title 'F_DOS Character device I/O'
|
||||
; File : $CDEVIO.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: $
|
||||
; CDEVIO.A86 1.18 94/12/21 11:16:29
|
||||
; Changed dev_dup to refuse from duplicating remote devices rather
|
||||
; than refuse from duplicating FCBs
|
||||
; Made open_dev return IFN rather than XFN for FCB opens
|
||||
; Made open_dev put the current time/date into DHNDL_TIME/DHNDL_DATE
|
||||
; CDEVIO.A86 1.16 94/10/07 09:00:18
|
||||
; Added patch 004 as source fix. Changed request header length for character
|
||||
; device to 16h. Used RH4_CDEV_LEN instead of RH4_LEN.
|
||||
; CDEVIO.A86 1.15 93/12/10 00:09:17
|
||||
; Move non-inherited bit to correct place in file handle
|
||||
; CDEVIO.A86 1.14 93/11/26 16:17:14
|
||||
; Update char_error so ES:SI -> device driver header itself;
|
||||
; ENDLOG
|
||||
|
||||
eject ! include i:psp.def
|
||||
eject ! include i:modfunc.def
|
||||
eject ! include i:fdos.equ
|
||||
eject ! include i:mserror.equ
|
||||
eject ! include i:doshndl.def
|
||||
eject ! include i:driver.equ
|
||||
eject ! include rh.equ
|
||||
|
||||
BDOS_DATA dseg
|
||||
|
||||
extrn fdos_buf:byte ; caveat: in PCMODE data segment
|
||||
extrn fdos_pb:word
|
||||
extrn fdos_ret:word
|
||||
|
||||
;
|
||||
; Critical Error responses from the default INT 24 handler and
|
||||
; the DO_INT24 routine.
|
||||
;
|
||||
ERR_IGNORE equ 0 ; Ignore Error
|
||||
ERR_RETRY equ 1 ; Retry the Operation
|
||||
ERR_ABORT equ 2 ; Terminate the Process
|
||||
ERR_FAIL equ 3 ; Fail Function
|
||||
|
||||
BDOS_CODE cseg
|
||||
|
||||
public open_dev
|
||||
public close_dev
|
||||
public dup_dev
|
||||
public read_dev
|
||||
public write_dev
|
||||
public first_dev
|
||||
public ioc6_dev
|
||||
public ioc7_dev
|
||||
|
||||
extrn cooked_write:near ; write to cooked console
|
||||
extrn read_line:near ; read edited line
|
||||
extrn break_check:near ; look for CTRL C
|
||||
extrn char_error:near ; generate Int 24
|
||||
|
||||
extrn current_dsk2al:near ; get default drive in AL
|
||||
extrn device_driver:near
|
||||
extrn alloc_dhndl:near ; find free DHNDL_ structure
|
||||
extrn alloc_xfn:near
|
||||
extrn les_di_dmaptr:near
|
||||
extrn release_handle:near
|
||||
extrn get_xftptr:near
|
||||
extrn timestamp_dhndl:near
|
||||
|
||||
|
||||
; Character device functions
|
||||
; ==========================
|
||||
|
||||
open_dev:
|
||||
;--------
|
||||
; Entry: ES:BX -> character device header
|
||||
|
||||
; Note: We own the MXdisk here, fdos_pb -> parameter data
|
||||
|
||||
push es ! push bx ; save device driver address
|
||||
call alloc_xfn ; DI = XFN
|
||||
push di ; save XFN
|
||||
call alloc_dhndl ; ES:BX -> DHNDL, AX = IFN
|
||||
pop dx ; DX = XFN
|
||||
xchg ax,si ; SI = IFN
|
||||
xor ax,ax
|
||||
lea di,DHNDL_DATRB[bx] ; point at start of area to fill
|
||||
mov cx,DHNDL_UID-DHNDL_DATRB
|
||||
rep stosb
|
||||
mov es:DHNDL_SHARE[bx],ax ; also zap share word
|
||||
pop es:DHNDL_DEVOFF[bx]
|
||||
pop es:DHNDL_DEVSEG[bx] ; save device driver address
|
||||
|
||||
push si ! push dx ; save IFN/XFN
|
||||
|
||||
mov es:DHNDL_COUNT[bx],1
|
||||
push ds
|
||||
mov ax,fdos_pb+6 ; AX = open mode
|
||||
mov cx,DHAT_DEV+DHAT_CLEAN+DHAT_TIMEOK
|
||||
lds si,es:DHNDL_DEVPTR[bx] ; DS:SI -> device driver
|
||||
or cl,ds:byte ptr DH_ATTRIB[si]
|
||||
; get attrib from device driver
|
||||
test al,DHM_LOCAL ; is it private ?
|
||||
jz open_dev10
|
||||
and al,not DHM_LOCAL ; clear inherit bit
|
||||
or ch,DHAT_LOCAL/256 ; rememmber it's local
|
||||
open_dev10:
|
||||
mov es:DHNDL_MODE[bx],ax
|
||||
mov es:DHNDL_WATTR[bx],cx
|
||||
lea si,DH_NAME[si] ; copy the device name
|
||||
lea di,DHNDL_NAME[bx] ; from the device header
|
||||
mov cx,8/WORD
|
||||
rep movsw
|
||||
mov al,' '
|
||||
mov cl,3 ; space the file extension
|
||||
rep stosb
|
||||
pop ds
|
||||
|
||||
pop dx ! pop ax ; AX = IFN, DX = XFN
|
||||
|
||||
push es
|
||||
call get_xftptr ; ES:DI -> PSP_XFTPTR for current_psp
|
||||
jc open_dev20 ; no PSP, skip updating XFN
|
||||
add di,dx ; ES:DI -> entry in PSP
|
||||
stosb ; update entry in PSP
|
||||
xchg ax,dx
|
||||
open_dev20:
|
||||
pop es
|
||||
|
||||
mov fdos_ret,ax ; save XFN (IFN for FCB open) to return
|
||||
call timestamp_dhndl
|
||||
or es:DHNDL_ATTR[bx],DHAT_READY
|
||||
; jmp open_dup_dev
|
||||
|
||||
open_dup_dev:
|
||||
;------------
|
||||
; On Entry:
|
||||
; ES:BX = DHNDL_
|
||||
; On Exit:
|
||||
; None
|
||||
;
|
||||
mov al,CMD_DEVICE_OPEN
|
||||
; jmp open_close_dev ; call device open routine
|
||||
|
||||
open_close_dev:
|
||||
;--------------
|
||||
; entry: ES:BX = DHNDL_
|
||||
; AL = cmd_type (CMD_DEVICE_OPEN/CMD_DEVICE_CLOSE)
|
||||
;
|
||||
push ds ! push es
|
||||
push bx ! push si
|
||||
lds si,es:DHNDL_DEVPTR[bx] ; DS:SI -> device driver
|
||||
test ds:DH_ATTRIB[si],DA_REMOVE
|
||||
jz ocdev1 ; does the device support OPEN/CLOSE/RM
|
||||
sub sp,RH13_LEN-2*word ; make space on stack for RH_
|
||||
push ax ; RH_CMD = AL
|
||||
mov ax,RH13_LEN
|
||||
push ax ; RH_LEN = RH13_LEN
|
||||
push ss ! pop es
|
||||
mov bx,sp ; ES:BX -> RH_
|
||||
call device_driver ; call the device driver
|
||||
add sp,RH13_LEN ; recover stack space
|
||||
ocdev1:
|
||||
pop si ! pop bx
|
||||
pop es ! pop ds
|
||||
ret
|
||||
|
||||
dup_dev:
|
||||
;-------
|
||||
; On Entry:
|
||||
; ES:BX -> DHNDL_
|
||||
; On Exit:
|
||||
; None
|
||||
; AX trashed
|
||||
;
|
||||
mov ax,es:DHNDL_WATTR[bx]
|
||||
test al,DHAT_DEV
|
||||
jz dup_dev10 ; skip if disk file
|
||||
test ax,DHAT_REMOTE ; or remote
|
||||
jz open_dup_dev
|
||||
dup_dev10:
|
||||
ret
|
||||
|
||||
|
||||
close_dev: ; close character device handle
|
||||
;---------
|
||||
; entry: FDOS_PB+2 = user file handle
|
||||
; ES:BX = file handle
|
||||
; NOTE: This is called with the MXdisk owned
|
||||
|
||||
mov al,CMD_DEVICE_CLOSE
|
||||
call open_close_dev ; call device close routine
|
||||
call release_handle ; release the XFN
|
||||
dec es:DHNDL_COUNT[bx] ; one less XFN refers to this IFN
|
||||
ret
|
||||
|
||||
|
||||
write_dev: ; write to character device handle
|
||||
;---------
|
||||
; entry: ES:BX -> DHNDL_ structure
|
||||
;
|
||||
|
||||
mov cl,CMD_OUTPUT ; OUTPUT driver function
|
||||
or es:DHNDL_ATTR[bx],DHAT_READY
|
||||
mov al,es:DHNDL_ATTR[bx] ; get file info
|
||||
and al,DHAT_BIN+DHAT_NUL+DHAT_CIN+DHAT_COT
|
||||
cmp al,DHAT_CIN+DHAT_COT ; is it cooked console?
|
||||
jne inst_io ; no, device driver i/o
|
||||
mov si,2[bp] ; SI -> parameter block
|
||||
mov cx,ds:8[si] ; CX = string length
|
||||
jcxz write_dev20 ; exit if nothing to write
|
||||
les di,ds:4[si] ; ES:DI -> string to print
|
||||
mov al,'Z'-40h ; we have to stop at ^Z
|
||||
repne scasb ; scan for ^Z character
|
||||
jne write_dev10 ; skip if ^Z not found
|
||||
inc cx ; include ^Z in count of chars to skip
|
||||
sub ds:8[si],cx ; subtract from total count
|
||||
write_dev10:
|
||||
mov bx,ds:2[si] ; BX = handle number
|
||||
mov cx,ds:8[si] ; CX = string length
|
||||
mov si,ds:4[si] ; ES:SI -> string to print
|
||||
call cooked_write ; write w/ tab expansion & ^C checking
|
||||
write_dev20:
|
||||
sub bx,bx ; no errors
|
||||
ret ; return the result
|
||||
|
||||
|
||||
|
||||
read_dev: ; read to character device handle
|
||||
;--------
|
||||
; entry: ES:BX -> DHNDL_ structure
|
||||
|
||||
mov al,es:DHNDL_ATTR[bx] ; get the file info
|
||||
mov ah,al ; save ioctl info
|
||||
and al,DHAT_BIN+DHAT_CIN+DHAT_COT
|
||||
cmp al,DHAT_CIN+DHAT_COT ; is it cooked console?
|
||||
jne rddev1 ; skip if binary or not console
|
||||
jmp read_con ; read from console handle
|
||||
; return the result
|
||||
rddev1:
|
||||
test ah,DHAT_READY ; previous EOF ?
|
||||
jnz rddev2 ; yes we return now
|
||||
mov di,2[bp] ; DI -> parameter block
|
||||
mov ds:word ptr 8[di],0 ; zero bytes xfered
|
||||
ret
|
||||
rddev2:
|
||||
mov cl,CMD_INPUT
|
||||
inst_io:
|
||||
; ES:BX = DHNDL_, CL = command
|
||||
sub sp,RH4_CDEV_LEN ; make RH_ on stack
|
||||
mov di,bx ; save address DHNDL_ in DI
|
||||
mov bx,sp ; SS:BX -> request header
|
||||
|
||||
mov ds:RH_CMD[bx],cl
|
||||
mov ds:RH_LEN[bx],RH4_CDEV_LEN
|
||||
mov ds:RH_STATUS[bx],0 ; status OK in case of zero chars
|
||||
mov si,2[bp] ; DS:SI -> parameter block
|
||||
lea si,4[si] ; point at buffer offset
|
||||
lodsw ; get buffer offset
|
||||
; Normalising the address has been unnecessary so far
|
||||
; push ax
|
||||
; and ax,15 ; normalise the address
|
||||
; pop cx
|
||||
; shr cx,1 ! shr cx,1
|
||||
; shr cx,1 ! shr cx,1
|
||||
mov ds:RH4_BUFOFF[bx],ax ; set buffer offset in request header
|
||||
lodsw ; get buffer segment
|
||||
; add ax,cx ; add in normalised offset/16
|
||||
mov ds:RH4_BUFSEG[bx],ax ; get buffer segment in request header
|
||||
lodsw ; get byte count
|
||||
xchg ax,cx ; byte count in CX
|
||||
|
||||
; Parameter block created on stack at SS:BX and initialised for xfer
|
||||
; ES:DI -> DHNDL_, CX = total number of bytes to xfer
|
||||
|
||||
inst_io20:
|
||||
mov ds:RH4_COUNT[bx],cx ; try and do this many
|
||||
test es:DHNDL_ATTR[di],DHAT_BIN+DHAT_NUL
|
||||
; are we in binary mode ?
|
||||
jcxz inst_io30 ; return on zero length xfer
|
||||
jnz inst_io25 ; binary, skip calling PCMODE
|
||||
mov ds:RH4_COUNT[bx],1 ; do one char at a time
|
||||
call break_check ; call the break check routine
|
||||
cmp ds:RH_CMD[bx],CMD_OUTPUT ; which way are we going
|
||||
jne inst_io25
|
||||
call inst_io_getchar ; AL = 1st char in the buffer
|
||||
cmp al,1Ah ; EOF - don't send it or anything after
|
||||
je inst_io30 ; and exit without xfering any
|
||||
inst_io25:
|
||||
push ds ! push es ! push di ! push cx
|
||||
lds si,es:DHNDL_DEVPTR[di] ; DS:SI -> device driver
|
||||
push ss ! pop es ; ES:BX -> RH_
|
||||
call device_driver ; execute the command
|
||||
pop cx ! pop di ! pop es ! pop ds
|
||||
jns inst_io_continue ; if no errors carry on
|
||||
push es
|
||||
les si,es:DHNDL_DEVPTR[di] ; ES:SI -> device driver
|
||||
call char_error ; this will handle the Int 24
|
||||
pop es
|
||||
cmp al,ERR_RETRY ; what should we do ?
|
||||
je inst_io20 ; retry the operation
|
||||
ja inst_io30 ; fail - return error
|
||||
mov ds:RH_STATUS[bx],RHS_DONE
|
||||
jmps inst_io_ignore ; ignore - fiddle status and
|
||||
inst_io_continue: ; say we did it all
|
||||
mov dx,ds:RH4_COUNT[bx] ; how many did we xfer ?
|
||||
test dx,dx ; if we haven't done any
|
||||
jz inst_io30 ; we are stuck so exit now
|
||||
inst_io_ignore:
|
||||
call inst_io_getchar ; AL = 1st char in the buffer
|
||||
add ds:RH4_BUFOFF[bx],dx ; it may not enough so adjust offset
|
||||
sub cx,dx ; and number still to do
|
||||
cmp ds:RH_CMD[bx],CMD_INPUT ; which way are we going - if input
|
||||
jne inst_io20 ; we need to check for CR/EOF
|
||||
test es:DHNDL_ATTR[di],DHAT_BIN+DHAT_NUL
|
||||
jnz inst_io30 ; if BIN then exit now
|
||||
cmp al,13 ; is it a CR character ?
|
||||
je inst_io30 ; yes, we stop now
|
||||
cmp al,1Ah ; is it the EOF character ?
|
||||
jne inst_io20 ; yes, we aren't ready
|
||||
and es:DHNDL_ATTR[di],not DHAT_READY
|
||||
inst_io30:
|
||||
mov di,2[bp] ; DI -> parameter block
|
||||
sub ds:8[di],cx ; subtract # not xfered from byte count
|
||||
|
||||
mov ax,ds:RH_STATUS[bx] ; get result for later
|
||||
sub bx,bx ; assume no errors
|
||||
test ax,ax ; test error bit (8000h)
|
||||
jns rddev_no_err ; skip if ERROR set
|
||||
mov bl,al ; AL is error code
|
||||
neg bx ; make it negative code
|
||||
add bx,ED_PROTECT ; normalize for extended errors
|
||||
rddev_no_err:
|
||||
add sp,RH4_CDEV_LEN ; free up RH_ on stack
|
||||
ret ; return BX
|
||||
|
||||
inst_io_getchar:
|
||||
push ds
|
||||
lds si,ds:RH4_BUFFER[bx] ; point to the users buffer
|
||||
lodsb ; get 1st char in the buffer
|
||||
pop ds
|
||||
ret
|
||||
|
||||
|
||||
read_con: ; handle read from cooked console
|
||||
;--------
|
||||
; entry: AH = DHNDL_ATTR
|
||||
; ES:BX -> DHNDL_
|
||||
; 2[BP] -> F_DOS parameter block
|
||||
; exit: BX = return value
|
||||
|
||||
xor cx,cx ; assume we've already had EOF
|
||||
test ah,DHAT_READY ; now see if we have
|
||||
jnz con_dev_not_eof
|
||||
jmp con_dev_exit ; yes, just return zero chars read
|
||||
con_dev_not_eof:
|
||||
push es
|
||||
push bx ; save DHNDL_
|
||||
con_dev_loop:
|
||||
mov bx,word ptr fdos_buf ; get # of bytes already used
|
||||
xor ax,ax
|
||||
xchg al,bh ; get # bytes in the buffer
|
||||
inc ax ! inc ax ; also count the CR/LF
|
||||
sub ax,bx ; have we any bytes left in the buffer?
|
||||
ja con_dev_cont ; yes, return them
|
||||
; no, we need a fresh input line
|
||||
mov fdos_buf,128 ; read up to 128 characters
|
||||
mov si,2[bp] ; SI -> parameter block
|
||||
mov bx,ds:2[si] ; BX = input handle
|
||||
push ds ! pop es
|
||||
mov dx,offset fdos_buf ; ES:DX -> console buffer
|
||||
mov cx,bx ; output to same handle as input
|
||||
push bx
|
||||
push bp
|
||||
call read_line ; read edited line
|
||||
pop bp
|
||||
mov bl,fdos_buf+1 ; # byte we have read
|
||||
mov bh,0 ; BX = # of characters read
|
||||
mov word ptr fdos_buf+2[bx],0A0Dh; append carriage return/line feed
|
||||
mov fdos_buf,0 ; start reading at beginning
|
||||
lea si,fdos_buf+3[bx] ; Echo the LF character to the
|
||||
pop bx ; Same Output handle
|
||||
mov cx,1 ; Only One Character
|
||||
call cooked_write
|
||||
jmps con_dev_loop
|
||||
|
||||
con_dev_cont: ; BX = buffer offset
|
||||
mov di,2[bp] ; DI -> parameter block
|
||||
mov cx,ds:8[di] ; CX = # of bytes to read
|
||||
cmp cx,ax ; reading more than available?
|
||||
jbe con_dev_ok ; no, read as much as you want
|
||||
mov cx,ax ; else take all that there is
|
||||
con_dev_ok:
|
||||
add fdos_buf,cl ; update buffer index for next time
|
||||
les di,ds:4[di] ; ES:DI -> buffer to read into
|
||||
lea si,fdos_buf+2[bx] ; DS:SI -> function 10 buffer
|
||||
push cx ; save count
|
||||
rep movsb ; read all the data
|
||||
pop cx ; restore count
|
||||
mov al,1Ah ; now we look for EOF mark...
|
||||
push ds ! pop es
|
||||
lea di,fdos_buf+2[bx] ; ES:DI -> function 10 buffer
|
||||
mov si,cx ; keep count safe
|
||||
repne scasb
|
||||
xchg cx,si ; restore count
|
||||
pop bx ; recover DHNDL_
|
||||
pop es
|
||||
jne con_dev_exit ; if no EOF, skip to exit
|
||||
sub cx,si ; subtract any after EOF mark
|
||||
dec cx ; and the EOF mark itself
|
||||
and es:DHNDL_ATTR[bx],not DHAT_READY
|
||||
con_dev_exit:
|
||||
mov di,2[bp] ; DI -> parameter block
|
||||
mov ds:8[di],cx ; set # of characters read
|
||||
sub bx,bx ; good return code
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
eject
|
||||
|
||||
first_dev: ; F_DOS FIRST call on device performed
|
||||
;--------- ; Called with MXDisk
|
||||
; On Entry:
|
||||
; ES:BX -> device header
|
||||
; On Exit:
|
||||
; dma_buffer initialised with device name
|
||||
;
|
||||
mov dx,es ; DX:BX -> device header
|
||||
call les_di_dmaptr ; ES:DI -> DMA buffer
|
||||
mov al,0FFh ; invalidate search state for NEXT
|
||||
mov cx,21
|
||||
rep stosb
|
||||
mov al,40h ; mark it as a device
|
||||
stosb
|
||||
sub ax,ax
|
||||
mov cx,4
|
||||
rep stosw ; zero time, date, file size
|
||||
|
||||
lea si,10[bx]
|
||||
push ds
|
||||
mov ds,dx ; DS:SI -> name in device header
|
||||
mov cx,4
|
||||
rep movsw ; copy device name across
|
||||
pop ds
|
||||
|
||||
mov cx,8
|
||||
frstdev1: ; scan off trailing spaces
|
||||
cmp es:byte ptr 0-1[di],' '
|
||||
jne frstdev2
|
||||
dec di
|
||||
loop frstdev1
|
||||
frstdev2:
|
||||
mov al,0
|
||||
stosb ; add a trailing NUL
|
||||
ret
|
||||
|
||||
|
||||
eject
|
||||
|
||||
ioc6_dev: ; IOCTL(6) - input status for device
|
||||
;--------
|
||||
; entry: ES:BX -> DHNDL_
|
||||
|
||||
mov al,CMD_INPUT_NOWAIT
|
||||
jmps ioc67d ; call the device driver
|
||||
|
||||
|
||||
ioc7_dev: ; IOCTL(7) - output status for device
|
||||
;--------
|
||||
; entry: ES:BX -> DHNDL_
|
||||
|
||||
mov al,CMD_OUTPUT_STATUS ; OUTPUT STATUS
|
||||
ioc67d: ; common code for I/O STATUS
|
||||
push ds
|
||||
sub sp,RH5_LEN-2*word ; allocate request header on stack
|
||||
push ax ; RH_CMD = AL
|
||||
mov ax,RH5_LEN
|
||||
push ax ; RH_LEN = RH5_LEN
|
||||
lds si,es:DHNDL_DEVPTR[bx] ; DS:SI -> device driver
|
||||
push ss ! pop es
|
||||
mov bx,sp ; ES:BX -> RH_
|
||||
mov es:RH5_CHAR[bx],0 ; zero the char
|
||||
call device_driver ; do the CALLF's to the device driver
|
||||
xor dl,dl ; assume not ready
|
||||
mov dh,es:RH5_CHAR[bx] ; possible peeked character
|
||||
add sp,RH5_LEN ; recover stack space
|
||||
pop ds
|
||||
test ax,RHS_ERROR+RHS_BUSY ; test if BUSY bit set in status
|
||||
jnz ioc67d_ret ; device not ready if error or busy
|
||||
dec dl ; return ready DL = FF
|
||||
ioc67d_ret:
|
||||
mov si,2[bp] ; SI -> user's parameter block
|
||||
mov ds:6[si],dx ; update returned status
|
||||
sub bx,bx ; no error occurred
|
||||
ret ; for now
|
||||
|
||||
end ; of CDEVIO.A86
|
||||
74
IBMDOS/CHAR.DEF
Normal file
74
IBMDOS/CHAR.DEF
Normal file
@@ -0,0 +1,74 @@
|
||||
; File : $CHAR.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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
;************************************************;
|
||||
;* *;
|
||||
;* Character Definitions *;
|
||||
;* *;
|
||||
;************************************************;
|
||||
|
||||
CTLA equ 'A' - '@'
|
||||
CTLB equ 'B' - '@'
|
||||
CTLC equ 'C' - '@'
|
||||
CTLD equ 'D' - '@'
|
||||
CTLE equ 'E' - '@'
|
||||
CTLF equ 'F' - '@'
|
||||
CTLG equ 'G' - '@'
|
||||
BELL equ 'G' - '@'
|
||||
CTLH equ 'H' - '@'
|
||||
CTLI equ 'I' - '@'
|
||||
TAB equ 'I' - '@'
|
||||
CTLJ equ 'J' - '@'
|
||||
LF equ 'J' - '@'
|
||||
CTLK equ 'K' - '@'
|
||||
CTLM equ 'M' - '@'
|
||||
CR equ 'M' - '@'
|
||||
CTLP equ 'P' - '@'
|
||||
CTLQ equ 'Q' - '@'
|
||||
CTLR equ 'R' - '@'
|
||||
CTLS equ 'S' - '@'
|
||||
CTLT equ 'T' - '@'
|
||||
CTLU equ 'U' - '@'
|
||||
CTLV equ 'V' - '@'
|
||||
CTLW equ 'W' - '@'
|
||||
CTLX equ 'X' - '@'
|
||||
CTLY equ 'Y' - '@'
|
||||
CTLZ equ 'Z' - '@'
|
||||
ESC equ '[' - '@'
|
||||
CTLBS equ '\' - '@'
|
||||
CTLUB equ '_' - '@'
|
||||
CTLUP equ '^' - '@'
|
||||
DEL equ 07Fh
|
||||
RUBOUT equ DEL
|
||||
|
||||
CTL equ '^'
|
||||
1068
IBMDOS/CIO.A86
Normal file
1068
IBMDOS/CIO.A86
Normal file
File diff suppressed because it is too large
Load Diff
1111
IBMDOS/CMDLINE.A86
Normal file
1111
IBMDOS/CMDLINE.A86
Normal file
File diff suppressed because it is too large
Load Diff
70
IBMDOS/CMDLINE.EQU
Normal file
70
IBMDOS/CMDLINE.EQU
Normal file
@@ -0,0 +1,70 @@
|
||||
; File : $CMDLINE.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
|
||||
|
||||
RL_INPUT equ word ptr -2[bp] ; READ_LINE Input Handle
|
||||
RL_OUTPUT equ word ptr -4[bp] ; READ_LINE Output Handle
|
||||
RL_BUFSEG equ word ptr -6[bp] ; Retained line Segment
|
||||
RL_BUFOFF equ word ptr -8[bp] ; Retained line Offset
|
||||
RL_BUFPTR equ dword ptr -8[bp] ; Retained line Buffer
|
||||
RL_INICOL equ word ptr -10[bp] ; initial column
|
||||
RL_FLAGS equ word ptr -12[bp] ; Control Flags
|
||||
RL_MAXLEN equ word ptr -14[bp] ; Maximum Buffer Size
|
||||
RL_KANJI equ word ptr -16[bp] ; Kanji Character Buffer
|
||||
RL_SAVMAX equ word ptr -18[bp] ; Size of retained data
|
||||
RL_SAVPOS equ word ptr -20[bp] ; Current Position in data
|
||||
RL_HIST_RECL equ word ptr -22[bp] ; We recall from here
|
||||
RL_HIST_SAVE equ word ptr -24[bp] ; We save to here
|
||||
RL_HIST_SIZE equ word ptr -26[bp] ; buffer is this big
|
||||
RL_HIST_SEG equ word ptr -28[bp] ; buffer is at this segment
|
||||
RL_LENGTH equ 28
|
||||
|
||||
RLF_ENHANCED equ 0000$0001b ; Enhanced features are on
|
||||
RLF_INS equ 0000$0010b ; Insert Flag
|
||||
RLF_SEARCH equ 0000$0100b ; Search mode on
|
||||
RLF_MATCH equ 0000$1000b ; We are matching a command
|
||||
RLF_RECALLED equ 0001$0000b ; Line already recalled
|
||||
RLF_DIRTY equ 0010$0000b ; Partial line needs saved
|
||||
RLF_KANJI equ 0100$0000b ; RL_KANJI is valid
|
||||
RLF_INROOT equ 1000$0000b ; In root
|
||||
|
||||
CHAR_SPACE equ 0000$0001b ; Space Character
|
||||
CHAR_TAB equ 0000$0010b ; Tab Character
|
||||
CHAR_CTL equ 0000$0100b ; Control Character expanded to "^X"
|
||||
CHAR_KANJI equ 0000$1000b ; Japanese Kanji character
|
||||
CHAR_ALPHAN equ 0001$0000b ; Alpha/Numeric
|
||||
CHAR_OTHER equ 0010$0000b ; Non AlphaNumeric
|
||||
CHAR_STD equ 1000$0000b ; Stored as a Byte displayed in 1 Col
|
||||
|
||||
CHAR_SIZE equ CHAR_STD or CHAR_KANJI or CHAR_TAB or CHAR_CTL
|
||||
CHAR_ONECOL equ CHAR_SPACE or CHAR_OTHER or CHAR_ALPHAN
|
||||
3662
IBMDOS/COUNTRY.A86
Normal file
3662
IBMDOS/COUNTRY.A86
Normal file
File diff suppressed because it is too large
Load Diff
73
IBMDOS/COUNTRY.DEF
Normal file
73
IBMDOS/COUNTRY.DEF
Normal file
@@ -0,0 +1,73 @@
|
||||
; File : $COUNTRY.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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
|
||||
US_DATE equ 0 ; American Date Format mm/dd/yy
|
||||
EURO_DATE equ 1 ; European Date Format dd/mm/yy
|
||||
JAP_DATE equ 2 ; Japanese Date Format yy/mm/dd
|
||||
|
||||
CLOCK_12 equ 0 ; 12 Hour Clock Time Format
|
||||
CLOCK_24 equ 1 ; 24 Hour Clock Time Format
|
||||
|
||||
CI_CODE equ word ptr 0FFFCh ; Country Code
|
||||
CI_CODEPAGE equ word ptr 0FFFEh ; Code page
|
||||
CI_DATEFMT equ word ptr 0 ; Date Format
|
||||
CI_CURRENCY equ byte ptr 2 ; Currency Symbols
|
||||
CI_THOUSANDS equ byte ptr 7 ; Thousands Separator
|
||||
CI_DECIMAL equ byte ptr 9 ; Decimal Separator
|
||||
CI_DATESEP equ byte ptr 11 ; Date Separator
|
||||
CI_TIMESEP equ byte ptr 13 ; Time Separator
|
||||
CI_CURFMT equ byte ptr 15 ; Currency Format
|
||||
CI_CURDIGITS equ byte ptr 16 ; Significant Currency Digits
|
||||
CI_TIMEFMT equ byte ptr 17 ; Time Format
|
||||
CI_CASEOFF equ word ptr 18 ; Case Translation Offset
|
||||
CI_CASESEG equ word ptr 20 ; Case Translation Segment
|
||||
CI_DATASEP equ byte ptr 22 ; Data List Separator
|
||||
CI_STATICLEN equ 24 ; Static Country Data Length
|
||||
CI_LENGTH equ 32 ; Total Country Data Length
|
||||
|
||||
EXI_ID equ byte ptr 0 ; Information ID
|
||||
EXI_TBLOFF equ word ptr 1 ; Table Offset
|
||||
EXI_TBLSEG equ word ptr 3 ; Table Segment
|
||||
|
||||
EXI_ID1 equ byte ptr 0 ; 6501 Info ID (why move it?!)
|
||||
EXI_LENGTH equ word ptr 1 ; 6501 Table Length
|
||||
EXI_DATA_LEN equ 3 ; 6501 Country Data
|
||||
|
||||
EXCI_CUR_COUNTRY equ word ptr 0 ; Current Country
|
||||
EXCI_CUR_CP equ word ptr 2 ; Current Codepage
|
||||
EXCI_CI_DATAOFF equ 4 ; Start of CI_ data
|
||||
|
||||
EXCI_STATLEN equ CI_STATICLEN+4 ; Static Ext Country Info
|
||||
EXCI_MAXLEN equ EXCI_STATLEN+10+EXI_DATA_LEN ; Max Ext Country Info
|
||||
|
||||
827
IBMDOS/DIRS.A86
Normal file
827
IBMDOS/DIRS.A86
Normal file
@@ -0,0 +1,827 @@
|
||||
title 'DIRS - dos directory support'
|
||||
; File : $DIRS.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$
|
||||
; DIRS.A86 1.13 94/12/01 13:16:24
|
||||
; changed error code if directory entry cannot be allocated;
|
||||
; DIRS.A86 1.12 93/08/27 18:49:04
|
||||
; hash code fixup on previously unused entries resets hash count
|
||||
; pcformat bug where an extra (zero-length) command.com was left on disk
|
||||
; ENDLOG
|
||||
;
|
||||
; Date Who Modification
|
||||
; --------- --- ---------------------------------------
|
||||
; 19 Aug 91 Initial version created for VLADIVAR
|
||||
|
||||
eject
|
||||
|
||||
include bdos.equ
|
||||
include i:mserror.equ
|
||||
include i:fdos.equ
|
||||
|
||||
eject
|
||||
PCMODE_DATA dseg
|
||||
if DELWATCH
|
||||
extrn fdos_stub:dword ; for calling delwatch TSR
|
||||
endif
|
||||
|
||||
BDOS_DATA dseg word
|
||||
extrn adrive:byte
|
||||
EXTRN clsize:WORD
|
||||
extrn diradd:word
|
||||
extrn dirinroot:word
|
||||
EXTRN dirperclu:WORD
|
||||
EXTRN dosfat:WORD
|
||||
extrn hashroot:dword
|
||||
extrn hashmax:word
|
||||
EXTRN info_fcb:BYTE
|
||||
extrn lastcl:word
|
||||
extrn psecsiz:word
|
||||
|
||||
eject
|
||||
|
||||
hash rw 2 ; hash code work area
|
||||
|
||||
; The dirbcb says what is in the local dirbuf
|
||||
|
||||
dirbcb db 0ffh ; drive of dirbuf entry
|
||||
dirbcb_cl dw 0 ; cluster of dirbuf entry
|
||||
dirbcb_dcnt dw 0 ; directory index of dirbuf entry
|
||||
dirbcb_block rw 2 ; block of dirbuf entry
|
||||
dirbcb_offset dw 0 ; byte offset in block of dirbuf entry
|
||||
|
||||
|
||||
public dirbuf
|
||||
dirbuf rb 32 ; local directory buffer
|
||||
|
||||
public dirp
|
||||
dirp dw 0 ; directory entry pointer
|
||||
|
||||
public dcnt
|
||||
dcnt dw 0 ; directory index count
|
||||
|
||||
public finddfcb_mask
|
||||
finddfcb_mask dw 0800h ; hi byte = reject DA_VOLUME attribs
|
||||
; lo byte = accept non-0 start clusters
|
||||
; 00FF = include labels, but not
|
||||
; pending deletes
|
||||
; 0000 = include everything
|
||||
public chdblk
|
||||
chdblk dw 0 ; current cluster # of directory
|
||||
|
||||
|
||||
BDOS_CODE cseg
|
||||
extrn alloc_cluster:NEAR
|
||||
extrn clus2sec:near
|
||||
extrn hdsblk:near ; get current directory block
|
||||
extrn fdos_error:NEAR
|
||||
extrn fixfat:NEAR
|
||||
extrn getnblk:NEAR
|
||||
extrn locate_buffer:near
|
||||
extrn update_dir:NEAR
|
||||
extrn update_fat:NEAR
|
||||
extrn zeroblk:near
|
||||
|
||||
eject
|
||||
|
||||
|
||||
public allocdir
|
||||
public discard_dirbuf
|
||||
public finddfcb
|
||||
public finddfcbf
|
||||
public fill_dirbuf
|
||||
public flush_dirbuf
|
||||
public getdir
|
||||
public hshdscrd
|
||||
public mkhsh
|
||||
public setenddir
|
||||
eject
|
||||
|
||||
;----------
|
||||
fill_dirbuf: ;get 32 byte directory entry
|
||||
;----------
|
||||
; On Entry:
|
||||
; AX = cluster to read (0=root)
|
||||
; BX = dir within cluster
|
||||
; On Exit:
|
||||
; DI -> dirbuf entry
|
||||
|
||||
call discard_dirbuf ; invalidate block in case of error
|
||||
mov dirbcb_cl,ax ; remember which cluster
|
||||
mov dirbcb_dcnt,bx ; and dir entry we want
|
||||
test ax,ax ; are we in the root ?
|
||||
jz fill_dirbuf10
|
||||
mov cl,FCBSHF
|
||||
shl bx,cl ; BX = byte offset in cluster
|
||||
call clus2sec ; DX:AX -> sector
|
||||
jmps fill_dirbuf20 ; BX = offset in sector
|
||||
fill_dirbuf10:
|
||||
mov ax,FCBLEN
|
||||
mul bx ; DX:AX = byte offset
|
||||
div psecsiz ; AX = sector offset, DX = byte offset
|
||||
mov bx,dx ; BX = byte offset in sector
|
||||
xor dx,dx
|
||||
add ax,diradd ; add in start of root dir
|
||||
adc dx,dx
|
||||
fill_dirbuf20:
|
||||
mov dirbcb_block,ax ; we want this sector
|
||||
mov dirbcb_block+WORD,dx
|
||||
mov dirbcb_offset,bx
|
||||
xchg ax,dx ; DX = low word of sector
|
||||
mov ah,al ; AH = low byte of high word
|
||||
push bx ; save byte offset in sector
|
||||
mov cx,0FF00h+BF_ISDIR ; locate directory sector
|
||||
call locate_buffer ; ES:SI -> BCB_
|
||||
pop bx ; BX = offset within sector
|
||||
push es ! pop ds ; DS:SI -> buffer control block
|
||||
lea si,BCB_DATA[si+bx] ; DS:SI -> data in buffer
|
||||
push ss ! pop es
|
||||
mov di,offset dirbuf ; ES:DI -> dir buffer
|
||||
push di
|
||||
mov cx,32/WORD ; copy into local buffer
|
||||
rep movsw
|
||||
pop di ; DI -> dir buffer
|
||||
push ss ! pop ds
|
||||
mov al,adrive ; remember where we are
|
||||
mov dirbcb,al ; so we can write it back
|
||||
ret
|
||||
|
||||
|
||||
;------------
|
||||
flush_dirbuf:
|
||||
;------------
|
||||
mov al,0FFh
|
||||
xchg al,dirbcb ; do we have anything to flush ?
|
||||
cmp al,adrive
|
||||
jne flush_dir20 ; skip if invalid contents
|
||||
mov si,offset dirbcb_block
|
||||
lodsw ; get low word of block
|
||||
xchg ax,dx ; put it in DX where it belongs
|
||||
lodsw ; get high word of block
|
||||
mov ah,al ; AH:DX -> block to find
|
||||
mov cx,0FF00h+BF_ISDIR ; look for directory
|
||||
call locate_buffer ; locate physical sector
|
||||
or es:BCB_FLAGS[si],BF_DIRTY; mark this buffer as modified
|
||||
mov bx,dirbcb_offset ; BX = offset within buffer
|
||||
lea di,BCB_DATA[si+bx] ; ES:DI -> offset in buffer
|
||||
|
||||
mov al,es:[di] ; AL = 1st character of dir entry
|
||||
|
||||
mov si,offset dirbuf ; get CP/M buffer address
|
||||
mov cx,32/WORD
|
||||
rep movsw ; copy modified entry back
|
||||
|
||||
push ax
|
||||
xor dh,dh ; we only want HCB_ if it's there
|
||||
mov cx,dirbcb_cl ; and it's this cluster
|
||||
call find_hcb ; does an HCB_ exist for this entry ?
|
||||
pop ax
|
||||
jc flush_dir20 ; no, skip update
|
||||
mov di,dirbcb_dcnt ; we want this dir entry
|
||||
cmp di,es:HCB_CNT[bx] ; is this within the hashed entries ?
|
||||
jae flush_dir20 ; no, skip the fixup
|
||||
|
||||
test al,al ; are we using a never used entry ?
|
||||
jnz flush_dir10 ; if so don't trust subsequent hash
|
||||
inc di ; codes as they have never been read.
|
||||
mov es:HCB_CNT[bx],di ; Truncate table to force a read of the
|
||||
dec di ; next dir entry (which will normally
|
||||
flush_dir10: ; also be never used)
|
||||
shl di,1 ; DI = offset of hashed entry
|
||||
lea di,HCB_DATA[bx+di]
|
||||
mov si,offset dirbuf ; this is the dir entry
|
||||
call mkhsh ; AX = hash code of our entry
|
||||
stosw ; update hash code for dir entry
|
||||
flush_dir20:
|
||||
push ds ! pop es ; ES = local data segment
|
||||
ret
|
||||
|
||||
;--------------
|
||||
discard_dirbuf:
|
||||
;--------------
|
||||
mov dirbcb,0FFh ; invalidate dirbuf
|
||||
ret
|
||||
|
||||
|
||||
;--------
|
||||
rd_pcdir:
|
||||
;--------
|
||||
; Exit: AX = offset of directory entry
|
||||
; = 0 if end of directory
|
||||
|
||||
|
||||
mov bx,dcnt
|
||||
inc bx
|
||||
mov dcnt,bx ; dcnt=dcnt+1
|
||||
call hdsblk ; AX = current directory block
|
||||
jz rd_pcdir40 ; skip if we're at the root
|
||||
|
||||
; we we in a subdirectory - lets follow the chain
|
||||
|
||||
xchg ax,cx ; keep subdir cluster in CX
|
||||
mov ax,FCBLEN ; AX = size of dir entry
|
||||
mul bx ; DX:AX = offset of set entry we want
|
||||
div clsize ; AX = # clusters to skip, DX = offset in cluster
|
||||
xchg ax,dx ; DX = # to skip, AX = offset in cluster
|
||||
xchg ax,cx ; AX = start of chain, CX = offset in cluster
|
||||
xchg bx,cx ; BX = offset in cluster, CX = dcnt
|
||||
jcxz rd_pcdir20 ; 1st subdir entry, we are already there
|
||||
mov cx,chdblk ; do we already know where we are ?
|
||||
jcxz rd_pcdir10 ; if not trace from start of chain
|
||||
xchg ax,cx ; AX = cluster of last dir entry
|
||||
test bx,bx ; have we moved onto next cluster?
|
||||
jnz rd_pcdir20 ; no, trust me..
|
||||
mov dx,1 ; move on to next entry in the chain
|
||||
rd_pcdir10:
|
||||
or dx,dx ; skip along chain until we arrive
|
||||
jz rd_pcdir20 ; at the destination cluster
|
||||
dec dx
|
||||
push bx
|
||||
push dx
|
||||
call getnblk ; AX = next cluster in chain
|
||||
pop dx
|
||||
pop bx
|
||||
cmp ax,lastcl ; have we fallen off the end of the chain ?
|
||||
jbe rd_pcdir10
|
||||
jmps rd_pcdir30 ; yes, set end of directory
|
||||
rd_pcdir20:
|
||||
mov chdblk,ax ; remember this cluster for next time
|
||||
mov cl,FCBSHF ; to divide by fcb size
|
||||
shr bx,cl ; BX = dir offset in cluster
|
||||
jmps rd_pcdir50 ; now go and find the entry
|
||||
|
||||
rd_pcdir30:
|
||||
call setenddir ; yes, set dcnt to end of directory
|
||||
jmps rd_pcdir60
|
||||
|
||||
rd_pcdir40:
|
||||
; we are in the root directory
|
||||
cmp bx,dirinroot ; end of the root directory ?
|
||||
jae rd_pcdir30
|
||||
rd_pcdir50:
|
||||
call fill_dirbuf ;locate directory entry
|
||||
xchg ax,di ; AX -> dir entry
|
||||
cmp dcnt,ENDDIR
|
||||
jnz rd_pcdir70
|
||||
rd_pcdir60:
|
||||
xor ax,ax ; return 0 if endofdir
|
||||
rd_pcdir70:
|
||||
mov bx,ax
|
||||
ret
|
||||
|
||||
|
||||
;---------
|
||||
setenddir: ;set dcnt to the end of directory (dcnt = 0ffffh)
|
||||
;---------
|
||||
mov dcnt,ENDDIR
|
||||
mov chdblk,0
|
||||
ret
|
||||
|
||||
|
||||
chk_wild: ;check fcb for ? marks
|
||||
;--------
|
||||
; On Entry:
|
||||
; bx -> FCB
|
||||
; On Exit:
|
||||
; ZF set if ? found
|
||||
; BX preserved
|
||||
push ds ! pop es ; ES -> SYSDAT
|
||||
lea di,byte ptr FNAME[bx] ; ES:DI -> name to scan
|
||||
mov cx,11
|
||||
mov al,'?' ; scan for wild cards
|
||||
repne scasb
|
||||
ret
|
||||
|
||||
eject
|
||||
|
||||
eject
|
||||
;---------
|
||||
finddfcbf: ; Find matching directory fcb(dfcb) from beginning of directory
|
||||
;---------
|
||||
call setenddir ; set up for search first
|
||||
|
||||
;--------
|
||||
finddfcb: ; Find matching directory fcb(dfcb)
|
||||
;--------
|
||||
mov cx,2
|
||||
|
||||
;------
|
||||
getdir:
|
||||
;------
|
||||
; entry: CH = offset info_fcb (always 0 except from rename)
|
||||
; CL = search length
|
||||
; 0 = return next fcb
|
||||
; 1 = return empty fcb
|
||||
; 2 = find match (Based on info_fcb)
|
||||
; 3 = find match? Based on info_fcb
|
||||
;
|
||||
; exit: AX,BX,DIRP = pointer to dfcb
|
||||
; 0 = no match (end of directory)
|
||||
; other = offset of requested directory entry
|
||||
; ZF = zero flag is set based on AX
|
||||
;
|
||||
|
||||
; Note: The most common call for this function is with CX =
|
||||
; 2 (match with name, not extent) with 'dcnt' set to
|
||||
; 0FFFFh (search from beginning of the directory
|
||||
; (e.g. open, create, delate, rename, etc.).
|
||||
; Therefore we try to optimize directory searches
|
||||
; using a dynamic hash table...
|
||||
|
||||
;struct dirfcb *getdir(offset,srchl);
|
||||
|
||||
cmp dcnt,0FFFFh ;if ((dcnt == 0xffff) &&
|
||||
jne gtd_next
|
||||
mov hash+2,cx ; Save off calling option
|
||||
xor ax,ax ; hash code 0 for free entry
|
||||
cmp cx,1 ; what kind of search?
|
||||
je gtdo15 ; CL=1: find free entry (AX=0)
|
||||
jb gtd_next ; CL=0: find any entry (unhashed)
|
||||
or ch,ch ; name in INFO_FCB+1?
|
||||
jnz gtd_next ; no, unhashed search
|
||||
mov bx,offset info_fcb
|
||||
call chk_wild ; wildcards used in search?
|
||||
jz unhshd1 ; yes, can't use hashing
|
||||
mov si,offset info_fcb+1 ; else compute hash code
|
||||
call mkhsh ; for name to find
|
||||
gtdo15:
|
||||
mov hash,ax ; save it for search
|
||||
call hdsblk ; get directory block
|
||||
gtdo3:
|
||||
push ax ; save dir block for later
|
||||
call hashsrch ; try and use hashing to find a match
|
||||
jnc gtdo4 ; look closer if we get possible match
|
||||
add dcnt,ax ; else skip known non-matches
|
||||
pop ax ; recover current dir block
|
||||
test ax,ax ; if we are in the root
|
||||
jz unhashed ; we must search the hard way
|
||||
xchg ax,bx
|
||||
mov ax,dcnt ; should we go onto next cluster ?
|
||||
inc ax ; only if next entry is the start
|
||||
xor dx,dx ; of a cluster
|
||||
div dirperclu
|
||||
xchg ax,bx
|
||||
test dx,dx ; at start of cluster ?
|
||||
jnz unhashed
|
||||
call getnblk ; onto next cluster until we are
|
||||
cmp ax,lastcl ; at the end of the chain
|
||||
jbe gtdo3
|
||||
jmps unhashed ; out of luck
|
||||
gtdo4:
|
||||
add dcnt,ax ; we have found a match, so start
|
||||
pop ax ; search here
|
||||
; jmps unhashed
|
||||
unhashed: ; /* locate entry */
|
||||
mov chdblk,0
|
||||
unhshd1:
|
||||
mov cx,hash+2 ;}
|
||||
gtd_next:
|
||||
;--------
|
||||
push cx
|
||||
call rd_pcdir ; Get Next DFCB
|
||||
pop cx
|
||||
gtd_exit:
|
||||
mov dirp,ax ; assume this is the one
|
||||
mov bx,ax
|
||||
or ax,ax ; should we exit with not found ?
|
||||
jz gtd2
|
||||
cmp cl,NEXT ; Caller wishes next dfcb?
|
||||
jne gtd3 ; NO
|
||||
gtd2:
|
||||
mov ax,bx ; return BX (DIRP or NULLPTR)
|
||||
or ax,ax ; return ZF (1 = not found)
|
||||
ret
|
||||
|
||||
gtd3:
|
||||
cmp cl,EMPTY ; Caller wishes an empty dfcb?
|
||||
jne gtd4 ; NO
|
||||
mov al,DNAME[bx] ; Get directory type
|
||||
or al,al ; Is it free?
|
||||
jz gtd2 ; YES (00 -> never used)
|
||||
cmp al,0E5h ; Is the dfcb empty?
|
||||
je gtd2 ; YES (E5 -> erased)
|
||||
jmps gtd_next ; NO, try the next
|
||||
|
||||
gtd4: ; looking for particular entry
|
||||
call hdsblk ; Are we at the root?
|
||||
jnz gtd5 ; skip if not
|
||||
mov ax,dcnt ; check for end of directory
|
||||
cmp ax,dirinroot ; have we reached end of root?
|
||||
mov ax,0 ; assume we have
|
||||
jae gtd_exit ; exit if we have
|
||||
gtd5:
|
||||
mov al,DNAME[bx] ; Get dfcb type
|
||||
cbw
|
||||
or ax,ax ; Are we at End Of Directory(EOD)
|
||||
jz gtd_exit ; YES
|
||||
cmp al,0E5h ; Is this a free fcb?
|
||||
je gtd_next ; Yes, try again
|
||||
mov ax,finddfcb_mask ; do we want labels/pending deletes
|
||||
test DATTS[bx],ah ; filter out volume labels?
|
||||
jnz gtd_next ; we normally reject them
|
||||
if DELWATCH
|
||||
cbw ; we want labels - do we want
|
||||
test word ptr DBLOCK1[bx],ax ; DELWATCH pending deletes
|
||||
jnz gtd_next ; ie. labels with fat chain
|
||||
endif
|
||||
push cx ; we are interested - but does
|
||||
mov al,ch ; the name match ?
|
||||
cbw
|
||||
add ax,offset info_fcb+1
|
||||
xor si,si ; we want SI = entry to match and
|
||||
xchg ax,si ; AL = 0 indicating assumed match
|
||||
mov cx,11 ; 11 chars in filename
|
||||
mov di,bx ; ES:DI -> directory entry
|
||||
match3:
|
||||
jcxz match4 ; stop if we have done all 11
|
||||
repe cmpsb ; compare if 11 bytes the same
|
||||
je match4 ; skip if all bytes the same
|
||||
cmp byte ptr 0-1[si],'?' ; else was INFO_FCB byte = '?'
|
||||
je match3 ; in that case it matches too
|
||||
inc ax ; else we didn't match (AL<>0)
|
||||
match4:
|
||||
pop cx
|
||||
or al,al ; did we match ?
|
||||
jnz gtd_next ; no, try for another
|
||||
mov bx,dirp ; Return (BX)
|
||||
jmp gtd2
|
||||
|
||||
|
||||
eject
|
||||
find_hcb: ; find HCB_ for given drive
|
||||
;--------
|
||||
; On Entry:
|
||||
; CX = cluster we are looking for
|
||||
; DH = 00 if exact match required
|
||||
; FF if we want to recyle oldest HCB_
|
||||
; On Exit:
|
||||
; CY set, AX=0 if HCB_ not found
|
||||
; CY clear ES:BX = offset of HCB_ (moved to head of list)
|
||||
; (AX/DX trashed, All other regs preserved)
|
||||
;
|
||||
|
||||
les bx,hashroot ; get our hashing pointer
|
||||
mov ax,es
|
||||
or ax,bx ; is hashing enabled ?
|
||||
jz find_hcb30
|
||||
mov dl,adrive ; look for this drive
|
||||
cmp cx,es:HCB_CLU[bx] ; does cluster match?
|
||||
jne find_hcb10 ; goto next if not
|
||||
cmp dl,es:HCB_DRV[bx] ; does drive match?
|
||||
jne find_hcb10 ; goto next if not
|
||||
; clc
|
||||
ret ; we have a match on the 1st one
|
||||
|
||||
find_hcb10:
|
||||
; no match, so look futher along the chain
|
||||
mov ax,es:HCB_LINK[bx] ; onto the next entry
|
||||
test ax,ax ; is there one ?
|
||||
jz find_hcb20
|
||||
xchg ax,bx ; AX = previous entry, BX = current
|
||||
cmp cx,es:HCB_CLU[bx] ; does cluster match?
|
||||
jne find_hcb10 ; goto next if not
|
||||
cmp dl,es:HCB_DRV[bx] ; does drive match?
|
||||
jne find_hcb10 ; goto next if not
|
||||
; we have a match, but it's not the first so recycle it
|
||||
mov dx,es:HCB_LINK[bx] ; get link to the rest of the chain
|
||||
xchg ax,bx ; BX = previous entry
|
||||
mov es:HCB_LINK[bx],dx ; unlink ourselves from chain
|
||||
mov bx,ax ; BX = current entry
|
||||
xchg ax,word ptr hashroot ; put current entry at the head
|
||||
mov es:HCB_LINK[bx],ax ; and relink the rest of the chain
|
||||
; clc
|
||||
ret
|
||||
|
||||
find_hcb20:
|
||||
; we have been all along the chain with no luck
|
||||
xor ax,ax
|
||||
test dh,dh ; no HCB_ - do we want to recyle ?
|
||||
jz find_hcb30 ; if not skip
|
||||
mov es:HCB_CNT[bx],ax ; we need to recycle oldest HCB_
|
||||
mov es:HCB_CLU[bx],cx ; so mark as us, but with nothing
|
||||
mov es:HCB_DRV[bx],dl ; in it
|
||||
; clc
|
||||
ret
|
||||
|
||||
find_hcb30:
|
||||
stc ; return failure
|
||||
ret
|
||||
|
||||
|
||||
eject
|
||||
;-----
|
||||
mkhsh:
|
||||
;-----
|
||||
;
|
||||
; entry: SI = 11 byte FCB to convert to hash code
|
||||
; exit: AX = 1..FFFF is hash code (00/E5 == 0)
|
||||
; uses: DX
|
||||
; saves: BX,CX,DI,BP
|
||||
;
|
||||
; used for hashing the INFO_FCB &
|
||||
; directory entries for DOS media
|
||||
|
||||
xor dx,dx ;assume hash code is 0000
|
||||
lodsb
|
||||
cmp al,0E5h ;if deleted file
|
||||
je mkhsh2 ; or
|
||||
cmp al,0 ;if virgin entry
|
||||
je mkhsh2 ;then hash code = 0;
|
||||
push cx ;else save CX
|
||||
and al,7fh
|
||||
mov dh,al ;initialize hash code MSB
|
||||
mov cx,10 ;involve other 10 characters
|
||||
mkhsh1:
|
||||
lodsb ;get next character
|
||||
rol dx,1 ;rotate hash code by one bit
|
||||
and al,7fh ;strip top bit off character
|
||||
xor dl,al ;XOR the character into the hash code
|
||||
loop mkhsh1 ;repeat for all characters
|
||||
pop cx ;restore CX
|
||||
test dx,dx ;test if zero by any chance
|
||||
jnz mkhsh2 ;skip if non-zero
|
||||
inc dx ;else force it to 1
|
||||
mkhsh2: ;return hash code in AX
|
||||
xchg ax,dx
|
||||
ret
|
||||
|
||||
|
||||
eject
|
||||
if DELWATCH
|
||||
Public fixup_hashing
|
||||
;
|
||||
; update hashing for current drive if DELWATCH changes a directory entry
|
||||
;
|
||||
fixup_hashing:
|
||||
;-------------
|
||||
; On Entry:
|
||||
; AX = segment of dir buffer
|
||||
; CX = cluster to fixup (0 = root)
|
||||
; DI = directory entry index (clipped to cluster if subdir)
|
||||
; AX:SI-> dir entry (single entry for hashing)
|
||||
;
|
||||
; On Exit:
|
||||
; None
|
||||
;
|
||||
push ds
|
||||
push es
|
||||
|
||||
xor dh,dh ; we only want HCB_ if it's there
|
||||
push ax ; save seg of dir entry
|
||||
call find_hcb ; does an HCB_ exist for this entry ?
|
||||
pop ds ; DS:SI -> entry to hash
|
||||
jc fixup_ck10 ; not hashed, skip update
|
||||
cmp di,es:HCB_CNT[bx] ; is this within the hashed entries ?
|
||||
jae fixup_ck10 ; no, skip the fixup
|
||||
call mkhsh ; AX = hash code of our entry
|
||||
|
||||
shl di,1 ; DI = offset of hashed entry
|
||||
lea di,HCB_DATA[bx+di]
|
||||
stosw ; update hash code for dir entry
|
||||
|
||||
fixup_ck10:
|
||||
pop es
|
||||
pop ds
|
||||
ret ; no
|
||||
endif
|
||||
|
||||
|
||||
eject
|
||||
|
||||
hashsrch:
|
||||
;--------
|
||||
; entry: AX = starting cluster of directory
|
||||
; exit: AX is possible match index
|
||||
;
|
||||
mov dh,0FFh ; we want HCB_ even if it's recycled
|
||||
xchg ax,cx ; and this block
|
||||
call find_hcb ; does an HCB_ exist for this entry ?
|
||||
; mov ax,0 ; assume unhashed search required
|
||||
jc hashsrch20 ; start one if no hashing
|
||||
hashsrch10:
|
||||
mov cx,es:HCB_CNT[bx] ; we have this many entries hashed
|
||||
jcxz hashsrch30 ; skip if nothing hashed yet
|
||||
mov ax,hash ; look for this hash code
|
||||
lea di,HCB_DATA[bx] ; DI = offset of start of search
|
||||
repne scasw ; try to find a match
|
||||
jne hashsrch30 ; skip if no match found
|
||||
lea ax,HCB_DATA+2[bx] ; find word offset of match
|
||||
xchg ax,di ; return matching index
|
||||
sub ax,di
|
||||
shr ax,1 ; make dir offset
|
||||
hashsrch20:
|
||||
push ds ! pop es
|
||||
clc ; we have found it
|
||||
ret
|
||||
|
||||
hashsrch30:
|
||||
call rehash_entry ; try and hash another entry
|
||||
jnc hashsrch10 ; look again if we succeeded
|
||||
|
||||
mov ax,es:HCB_CNT[bx] ; failure, so return # to skip
|
||||
push ds ! pop es
|
||||
; stc ; for quicker search
|
||||
ret
|
||||
|
||||
|
||||
rehash_entry:
|
||||
;------------
|
||||
; entry: ES:BX -> HCB
|
||||
; AX = hash cluster number
|
||||
|
||||
call hash_entries_to_do ; how many entries still to hash ?
|
||||
jcxz rehash_entry40 ; if we have hashed them all exit
|
||||
|
||||
push dcnt ; save directory count
|
||||
|
||||
mov ax,dcnt ; get previous position
|
||||
inc ax ; we start looking here
|
||||
xor dx,dx
|
||||
div dirperclu ; mask to start of cluster
|
||||
mul dirperclu
|
||||
add ax,es:HCB_CNT[bx] ; skip entries we already have
|
||||
dec ax ; make previous entry BEFORE this
|
||||
mov dcnt,ax
|
||||
mov chdblk,0 ; non-sequential access
|
||||
cmp cx,512/32 ; don't try reading more than 512 bytes
|
||||
jb rehash_entry20 ; at a time - then with 512 byte secs
|
||||
mov cx,512/32 ; we only read when we
|
||||
rehash_entry20:
|
||||
push es
|
||||
push bx ; save hash control pointer
|
||||
push cx ; save # entries to do
|
||||
push ds ! pop es ; back to small model
|
||||
xor cx,cx ; return any entry
|
||||
call gtd_next ; unhashed search
|
||||
pop cx ; restore # entries to do
|
||||
pop bx ; restore hash control pointer
|
||||
pop es
|
||||
test ax,ax ; anything found
|
||||
jz rehash_entry30 ; end of directory
|
||||
xchg ax,si ; else get directory pointer
|
||||
mov di,es:HCB_CNT[bx]
|
||||
shl di,1 ; DI -> 1st new entry
|
||||
lea di,HCB_DATA[bx+di]
|
||||
push si
|
||||
call mkhsh ; else calculate hash into AX
|
||||
stosw ; add it to hash table
|
||||
inc es:HCB_CNT[bx] ; remember we did
|
||||
pop si
|
||||
lodsb ; get 1st byte of hashed entry
|
||||
test al,al ; is it zero (ie. never used)?
|
||||
loopne rehash_entry20 ; get all hash codes
|
||||
jcxz rehash_entry30 ; all done ?
|
||||
call hash_entries_to_do ; how many entries still to hash ?
|
||||
add es:HCB_CNT[bx],cx ; we will do them all..
|
||||
rep stosw ; zap rest of cluster
|
||||
rehash_entry30:
|
||||
pop dcnt ; restore count
|
||||
mov chdblk,0 ; non-sequential access
|
||||
clc ; we have new hashing codes
|
||||
ret ; HCB updated with new cluster
|
||||
|
||||
rehash_entry40:
|
||||
stc ; cannot hash no more...
|
||||
ret
|
||||
|
||||
hash_entries_to_do:
|
||||
;------------------
|
||||
; On Entry:
|
||||
; ES:BX -> HCB_
|
||||
; On Exit:
|
||||
; CX = maximum possible entries we still need to hash for HCB_
|
||||
; (All other regs preserved)
|
||||
;
|
||||
mov cx,dirinroot ; assume root dir
|
||||
cmp es:HCB_CLU[bx],0 ; was it ?
|
||||
je hash_etd10
|
||||
mov cx,dirperclu ; subdir, so cluster limit
|
||||
hash_etd10:
|
||||
cmp cx,hashmax ; do we support this many ?
|
||||
jb hash_etd20 ; yes, skip it
|
||||
mov cx,hashmax ; else limit it to this many
|
||||
hash_etd20:
|
||||
sub cx,es:HCB_CNT[bx] ; subtract number we have already done
|
||||
ret
|
||||
|
||||
|
||||
|
||||
eject
|
||||
hshdscrd:
|
||||
;--------
|
||||
; purge hash blocks for physical drive
|
||||
; On Entry:
|
||||
; AL = drive to discard (FF = all drives)
|
||||
; On Exit:
|
||||
; None (All regs preserved)
|
||||
|
||||
push ds
|
||||
push bx
|
||||
lds bx,hashroot ; get root of hash codes
|
||||
hshdsc1:
|
||||
test bx,bx
|
||||
jz hshdsc4 ; all blocks done
|
||||
cmp al,0FFh ; FF means discard all drives
|
||||
je hshdsc2
|
||||
cmp al,ds:HCB_DRV[bx] ; check if matching drive
|
||||
jne hshdsc3
|
||||
hshdsc2:
|
||||
mov ds:HCB_DRV[bx],0ffh ; h->hd = 0xff;
|
||||
hshdsc3:
|
||||
mov bx,ds:HCB_LINK[bx] ; get next hash code block
|
||||
jmps hshdsc1
|
||||
hshdsc4:
|
||||
pop bx
|
||||
pop ds
|
||||
ret
|
||||
|
||||
|
||||
eject
|
||||
|
||||
enlarge_root:
|
||||
if DELWATCH
|
||||
mov ah,DELW_FREERD ; lets ask DELWATCH if it can
|
||||
mov al,adrive ; free a root directory entry
|
||||
callf ss:fdos_stub ; for this drive
|
||||
jnc allocdir ; it says it has so try again
|
||||
endif
|
||||
allocdir_err:
|
||||
pop ax ; discard return address
|
||||
mov ax,ED_MAKE
|
||||
jmp fdos_error ; return "cannot make dir entry"
|
||||
|
||||
|
||||
;--------
|
||||
allocdir: ; Called by rename and MAKE
|
||||
;--------
|
||||
call setenddir ; search for first match
|
||||
mov cx,1 ; return empty fcb
|
||||
call getdir ; is there an empty fcb?
|
||||
jz allocdir10 ; if so use that
|
||||
ret
|
||||
allocdir10:
|
||||
call hdsblk ; Are we at the root?
|
||||
jz enlarge_root ; YES -- Report error(no room)
|
||||
|
||||
; We are in a subdirectory so enlarge it
|
||||
; AX has 1st block of subdirectory NOTE -- AX is never
|
||||
; above 'lastcl' on entry.
|
||||
allocdir20:
|
||||
cmp ax,lastcl ; Are we at end of subdirectory?
|
||||
ja allocdir30 ; YES
|
||||
push ax
|
||||
call getnblk ; NO -- get next block then
|
||||
pop bx
|
||||
jmps allocdir20
|
||||
|
||||
allocdir30:
|
||||
push bx ; save last block number
|
||||
xchg ax,bx ; Get a new block (start from old)
|
||||
call alloc_cluster
|
||||
pop bx
|
||||
jc allocdir_err ; Report Error(no room on disk)
|
||||
push ax ; save new block
|
||||
xchg ax,bx
|
||||
call fixfat ; Update fat (AX,BX) old last block
|
||||
; points to new last block
|
||||
pop ax ; Get new last block
|
||||
push ax
|
||||
mov bx,dosfat ; 12 or 16 bit fat
|
||||
call fixfat ; Update fat (AX,BX) new last block
|
||||
; has end of cluster marker
|
||||
call update_fat ; Write out to disk
|
||||
pop ax ; Get new last block
|
||||
call zeroblk ; Zero it out
|
||||
call setenddir ; Set up for search first
|
||||
mov cx,1 ; Find empty fcb
|
||||
jmp getdir ; Can not return with not found error
|
||||
|
||||
END
|
||||
1153
IBMDOS/DISK.A86
Normal file
1153
IBMDOS/DISK.A86
Normal file
File diff suppressed because it is too large
Load Diff
122
IBMDOS/DOSHNDL.DEF
Normal file
122
IBMDOS/DOSHNDL.DEF
Normal file
@@ -0,0 +1,122 @@
|
||||
; 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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
|
||||
DCNTRL_DSADD equ dword ptr 0000h
|
||||
DCNTRL_DSOFF equ word ptr 0000h
|
||||
DCNTRL_DSSEG equ word ptr 0002h
|
||||
DCNTRL_COUNT equ word ptr 0004h
|
||||
DCNTRL_LEN equ 6
|
||||
|
||||
DHNDL_COUNT equ word ptr 00h ; 00 - Usage Count
|
||||
DHNDL_MODE equ word ptr 02h ; 02 - File Mode
|
||||
|
||||
DHM_FCB equ 8000h ; marks as FCB
|
||||
DHM_COMMIT equ 4000h ; auto-commit file
|
||||
DHM_NOCRIT equ 2000h ; no critical errors
|
||||
DHM_LOCAL equ 10000000b ; file is not inherited
|
||||
DHM_SHAREMSK equ 01110000b ; sharing bits
|
||||
DHM_COMPAT equ 00000000b
|
||||
DHM_DENY_ALL equ 00010000b ; exclusive - deny all
|
||||
DHM_DENY_WRITE equ 00100000b
|
||||
DHM_DENY_READ equ 00110000b
|
||||
DHM_DENY_NONE equ 01000000b
|
||||
DHM_RWMSK equ 00001111b ; read write bits
|
||||
DHM_RW equ 00000010b ; file opened read/write
|
||||
DHM_WO equ 00000001b ; file opened write only
|
||||
DHM_RO equ 00000000b ; file opened read only
|
||||
|
||||
;
|
||||
; 01h to 03h To be Determined
|
||||
;
|
||||
DHNDL_DATRB equ byte ptr 04h ; Disk attribute byte
|
||||
DHNDL_ATTR equ byte ptr 05h ; Attribute Byte
|
||||
DHNDL_WATTR equ word ptr 05h ; Attribute Word
|
||||
|
||||
DHAT_REMOTE equ 8000h ; set if file remote
|
||||
DHAT_TIMEOK equ 4000h ; set if timestamp up to date
|
||||
DHAT_LOCAL equ 1000h ; file is not inherited
|
||||
DHAT_NETPRN equ 0800h ; device is networked printer
|
||||
DHAT_DEV equ 0080h ; device/file bit
|
||||
DHAT_READY equ 0040h ; ready/not ready bit
|
||||
DHAT_CLEAN equ 0040h ; this bit CLEAR if dirty
|
||||
DHAT_BIN equ 0020h ; raw/cooked bit
|
||||
DHAT_DRVMSK equ 001Fh ; drive in bottom bits
|
||||
DHAT_CLK equ 0008h ; -reserved-
|
||||
DHAT_NUL equ 0004h ; handle is null device
|
||||
DHAT_COT equ 0002h ; handle is console output device
|
||||
DHAT_CIN equ 0001h ; handle is console input device
|
||||
|
||||
DHNDL_DEVPTR equ dword ptr 07h ; 07 - pointer to device
|
||||
DHNDL_DEVOFF equ word ptr 07h ; 07 - offset of device
|
||||
DHNDL_DEVSEG equ word ptr 09h ; 09 - segment of device
|
||||
DHNDL_BLK1 equ word ptr 0Bh ; 0B - first cluster in file
|
||||
DHNDL_TIME equ word ptr 0Dh ; 0D - file time stamp
|
||||
DHNDL_DATE equ word ptr 0Fh ; 0F - file date stamp
|
||||
DHNDL_SIZE equ dword ptr 11h ; 11 - file length
|
||||
DHNDL_SIZELO equ word ptr 11h
|
||||
DHNDL_SIZEHI equ word ptr 13h
|
||||
DHNDL_POS equ dword ptr 15h ; 15 - current file position
|
||||
DHNDL_POSLO equ word ptr 15h
|
||||
DHNDL_POSHI equ word ptr 17h
|
||||
DHNDL_IDX equ word ptr 19h ; 19 - relative cluster within file of last read
|
||||
DHNDL_DBLK equ word ptr 1Bh ; 1B - cluster # of dir entry
|
||||
DHNDL_DCNTHI equ byte ptr 1Eh ; 1E - dir offset # within cluster
|
||||
DHNDL_DCNTLO equ byte ptr 1Fh ; 1F - dir offset # within cluster
|
||||
DHNDL_NAME equ byte ptr 20h ; 20 - File/Device Name
|
||||
DHNDL_EXT equ byte ptr 28h ; 28 - File extension
|
||||
DHNDL_SFT equ dword ptr 2Bh ; 2B - pointer to previous SFT
|
||||
DHNDL_UID equ word ptr 2Fh ; 2F - Owning Machine ID
|
||||
DHNDL_PSP equ word ptr 31h ; 31 - Owning PSP
|
||||
DHNDL_SHARE equ word ptr 33h ; 33 - Offset of sharing record
|
||||
DHNDL_BLK equ word ptr 35h ; 35 - absolute cluster of last read
|
||||
; 37 - dword reserved for IFS
|
||||
DHNDL_LEN equ 3Bh
|
||||
|
||||
; With DOS 3 structures _DBLK is a 16 bit
|
||||
|
||||
|
||||
; Logical Drive Table format
|
||||
LDT_NAME equ byte ptr 00h ; 00 - Ascii Name field
|
||||
LDT_FLAGS equ word ptr 43h ; 43 - Flag field
|
||||
LDT_PDT equ dword ptr 45h ; 45 - PDT for this drive
|
||||
LDT_BLK equ word ptr 49h ; 49 - directory sector
|
||||
LDT_ROOT equ word ptr 4bh ; 4B - virtual block root
|
||||
LDT_DRV equ byte ptr 4dh ; 4D - physical drive
|
||||
LDT_ROOTLEN equ word ptr 4fh ; 4F - Length of root portion
|
||||
LDT_LEN equ 58h
|
||||
|
||||
LFLG_NETWRKD equ 8000h
|
||||
LFLG_PHYSICAL equ 4000h
|
||||
LFLG_JOINED equ 2000h
|
||||
LFLG_SUBST equ 1000h
|
||||
521
IBMDOS/DOSMEM.A86
Normal file
521
IBMDOS/DOSMEM.A86
Normal file
@@ -0,0 +1,521 @@
|
||||
; File : $DOSMEM.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$
|
||||
; DOSMEM.A86 1.13 94/12/01 10:05:21
|
||||
; now freeing UMBs also during program termination
|
||||
; DOSMEM.A86 1.12 93/07/20 22:46:25
|
||||
; dmd_upper_root defaults to FFFF
|
||||
; DOSMEM.A86 1.10 93/06/18 21:00:11
|
||||
; Remove historic CDOS comment
|
||||
; ENDLOG
|
||||
;
|
||||
include pcmode.equ
|
||||
include i:msdos.equ
|
||||
include i:mserror.equ
|
||||
|
||||
BEST_FIT equ 01h ; allocate BEST match memory block
|
||||
LAST_FIT equ 02h ; allocate LAST matching memory block
|
||||
UPPER_FIT equ 80h ; preferably allocate from upper memory
|
||||
UPPER_ONLY_FIT equ 40h ; only allocate from upper memory
|
||||
|
||||
FIRST_FIT equ 04h ; we use this internally...
|
||||
|
||||
PCM_CODE CSEG BYTE
|
||||
extrn error_exit:near ; Standard Error Handler
|
||||
extrn return_AX_CLC:near
|
||||
extrn return_BX:near
|
||||
extrn reload_ES:near
|
||||
extrn toupper:near
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 48 ***
|
||||
; *** Allocate Memory Block ***
|
||||
; *****************************
|
||||
;
|
||||
Public func48
|
||||
func48: ; bx = request size
|
||||
callf lock_tables ; lock global tables
|
||||
call search_mem ; look for block bx or bigger
|
||||
jc memory_avbl_error ; skip on error
|
||||
test mem_strategy,LAST_FIT ; is it last fit ?
|
||||
jz f48_10 ; no, use from begining
|
||||
mov ax,cx ; work out how much we have
|
||||
sub ax,bx ; to leave free
|
||||
je f48_10
|
||||
dec ax
|
||||
mov bx,ax
|
||||
call make_dmd ; allocate this DMD as free
|
||||
mov bx,cx ; real block is the next one
|
||||
f48_10:
|
||||
mov ax,current_psp ; Change the Owner
|
||||
mov DMD_PSP,ax ; we now own this block
|
||||
|
||||
push es
|
||||
call make_dmd ; make new DMD for allocated mem
|
||||
pop ax
|
||||
inc ax ; return starting segment
|
||||
jmps memory_exit ; unlock global tables
|
||||
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 49 ***
|
||||
; *** Free Memory Block ***
|
||||
; *****************************
|
||||
;
|
||||
Public func49
|
||||
func49:
|
||||
callf lock_tables ; lock global tables
|
||||
call get_dmd ; es -> dmd
|
||||
jc memory_error ; skip if block invalid
|
||||
mov ax,DMD_PSP ; get owner field
|
||||
cmp ax,dmd_owner
|
||||
mov ax,es ; return DMD address in AX
|
||||
jb func49_10
|
||||
mov dx,dmd_address ; nothing below this block get's freed
|
||||
cmp ax,dx ; should we free it ?
|
||||
jb func49_20 ; no, give it a new owner
|
||||
func49_10:
|
||||
xor dx,dx ; yes, owner = 0 means free block
|
||||
func49_20:
|
||||
mov DMD_PSP,dx ; free/set new owner
|
||||
; jmps memory_exit
|
||||
|
||||
; centralised exit point to unlock system tables
|
||||
|
||||
memory_exit:
|
||||
;-----------
|
||||
; On Entry:
|
||||
; AX = return value
|
||||
; On Exit
|
||||
; None
|
||||
;
|
||||
callf unlock_tables ; unlock global tables
|
||||
jmp return_AX_CLC ; return DMD address
|
||||
|
||||
memory_avbl_error:
|
||||
mov bx,cx
|
||||
call return_BX ; return biggest block available
|
||||
memory_error:
|
||||
callf unlock_tables ; unlock global tables
|
||||
mov locus,LOC_MEMORY
|
||||
jmp error_exit ; Jump to error handler
|
||||
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 4A ***
|
||||
; *** Alter Memory Block ***
|
||||
; *****************************
|
||||
;
|
||||
Public func4A
|
||||
func4A:
|
||||
callf lock_tables ; lock global tables
|
||||
call get_dmd ; es -> dmd
|
||||
jc memory_error ; skip if block invalid
|
||||
|
||||
push DMD_LEN ; save the current DMD length
|
||||
call merge_mem ; pick up unallocated blocks
|
||||
pop ax ; return original DMD length
|
||||
jc memory_error ; if dmd's destroyed
|
||||
|
||||
mov ax,ED_MEMORY ; assume insufficient mem
|
||||
mov cx,DMD_LEN ; cx = available size
|
||||
cmp cx,bx ; if avail < req, then
|
||||
jb memory_avbl_error ; return maximum possible
|
||||
|
||||
mov ax,current_psp ; Force this block to be owned by the
|
||||
mov DMD_PSP,ax ; current PSP. MACE Utilities
|
||||
|
||||
call make_dmd ; new block on top
|
||||
call reload_ES
|
||||
mov ax,es
|
||||
jmps memory_exit
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 58 ***
|
||||
; *** Get/Set Alloc Strategy***
|
||||
; *****************************
|
||||
;
|
||||
; On Entry:- AL == 0 Get Allocation Strategy
|
||||
; AL == 1 Set Allocation Strategy
|
||||
; AL == 2 Get Upper Memory Link
|
||||
; AL == 3 Set Upper Memory Link
|
||||
Public func58
|
||||
|
||||
func58:
|
||||
callf lock_tables ; lock global tables
|
||||
cmp al,3
|
||||
ja f58_error ; Range Check Sub-Function
|
||||
cbw ; AH = 0
|
||||
mov si,ax
|
||||
add si,si ; SI = word offset of sub-function
|
||||
call cs:f58_tbl[si] ; execute the sub-function
|
||||
jnc memory_exit ; return the result
|
||||
jmps memory_error ; or the error
|
||||
|
||||
|
||||
f58_error:
|
||||
mov ax,ED_FUNCTION
|
||||
jmps memory_error
|
||||
|
||||
f58_tbl dw f58_get_strategy
|
||||
dw f58_set_strategy
|
||||
dw f58_get_link
|
||||
dw f58_set_link
|
||||
|
||||
f58_get_strategy:
|
||||
; mov ah,0 ; AX = subfunction = 0-3
|
||||
mov al,mem_strategy
|
||||
; clc
|
||||
ret
|
||||
|
||||
f58_set_strategy:
|
||||
mov ah,MS_M_STRATEGY
|
||||
mov mem_strategy,bl
|
||||
; clc
|
||||
ret
|
||||
|
||||
f58_get_link:
|
||||
mov ah,MS_M_STRATEGY
|
||||
mov al,dmd_upper_link
|
||||
; clc
|
||||
ret
|
||||
|
||||
f58_set_link:
|
||||
mov ax,ED_FUNCTION ; return function not implemented
|
||||
mov cx,dmd_upper_root ; if no upper memory chain
|
||||
inc cx ; CX = FFFF
|
||||
stc
|
||||
jcxz f58_set_link20
|
||||
dec cx
|
||||
mov dmd_upper_link,bl ; set link field
|
||||
mov ax,dmd_root ; now find dmd before upper memory root
|
||||
mov dl,IDM ; assume we want to link
|
||||
test bl,bl ; do we want to link/unlink UMBs?
|
||||
jnz f58_set_link10
|
||||
mov dl,IDZ ; no, we want to unlink
|
||||
f58_set_link10:
|
||||
mov es,ax ; point to DMD
|
||||
call check_dmd_id ; stop if id is invalid
|
||||
jc f58_set_link20 ; and return an error
|
||||
push es
|
||||
call next_dmd ; does the next DMD match our
|
||||
pop es
|
||||
cmp ax,cx ; upper memory chain ?
|
||||
jne f58_set_link10
|
||||
mov DMD_ID,dl ; set appropriate link type
|
||||
mov ax,(MS_M_STRATEGY*256)+3; return AX unchanged
|
||||
; clc
|
||||
f58_set_link20:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
eject
|
||||
;****************************************
|
||||
;* *
|
||||
;* Memory Function Subroutines *
|
||||
;* *
|
||||
;****************************************
|
||||
;
|
||||
; FREE_ALL takes the PSP passed in the BX register and free's all
|
||||
; memory associated with that PSP.
|
||||
;
|
||||
; entry: bx = requested PSP
|
||||
;
|
||||
; exit:
|
||||
;
|
||||
Public free_all
|
||||
free_all:
|
||||
mov es,dmd_root ; es -> first dmd
|
||||
|
||||
free_all_loop:
|
||||
call check_dmd_id ; if block is invalid
|
||||
jc free_all_fail ; then quit now
|
||||
|
||||
mov dl,al ; dl = id code
|
||||
cmp DMD_PSP,bx ; if block is owned by another
|
||||
jnz free_all_next ; then check next
|
||||
|
||||
and DMD_PSP,0 ; Free this partition
|
||||
|
||||
free_all_next:
|
||||
push es
|
||||
call next_dmd ; es -> next block up
|
||||
pop ax
|
||||
cmp dl,IDM ; if previous block wasn't last
|
||||
jz free_all_loop ; then keep going
|
||||
cmp dmd_upper_root,ax
|
||||
jbe free_all_end
|
||||
mov ax,dmd_upper_root ; free UMBs as well
|
||||
cmp ax,-1 ; if UMB head is valid
|
||||
mov es,ax
|
||||
jne free_all_loop
|
||||
free_all_end:
|
||||
xor ax,ax ; Otherwise Stop
|
||||
|
||||
free_all_fail:
|
||||
ret
|
||||
|
||||
;
|
||||
; SET_OWNER allows the OWNING PSP to specify the new owner of
|
||||
; the partition. An error is returned if an incorrect partition address
|
||||
; is given or the partition is not owned by the current PSP.
|
||||
;
|
||||
; Entry:- AX == New PSP
|
||||
; BX == Partition Start
|
||||
;
|
||||
; Exit:-
|
||||
; no carry AX == Unknown
|
||||
; carry AX == Error Code
|
||||
;
|
||||
Public set_owner
|
||||
set_owner:
|
||||
push es
|
||||
dec bx
|
||||
mov es,bx ; ES points at DMD (We Hope)
|
||||
xchg ax,bx ; Save the New PSP address in BX
|
||||
call check_dmd_id ; Check for a valid DMD
|
||||
jc s_o20
|
||||
mov ax,current_psp
|
||||
cmp ax,DMD_PSP ; Check the Current PSP owns the memory
|
||||
jnz s_o10
|
||||
mov DMD_PSP,bx ; Set the new owner and return
|
||||
jmps s_o20
|
||||
|
||||
s_o10:
|
||||
mov ax,ED_BLOCK
|
||||
stc
|
||||
s_o20:
|
||||
pop es
|
||||
ret
|
||||
|
||||
;
|
||||
; Search for a free memory block at least as big as bx
|
||||
; entry: bx = requested size
|
||||
; success exit: cf clear, es -> dmd
|
||||
; cx = block size
|
||||
; failure exit: cf set, ax = error code
|
||||
; cx = biggest block available
|
||||
|
||||
search_mem:
|
||||
mov ax,ED_DMD ; assume bad DMD chain
|
||||
mov cx,dmd_root ; start at the bottom
|
||||
jcxz search_mem_exit
|
||||
mov es,cx ; lets clean up memory list
|
||||
or mem_strategy,FIRST_FIT ; grab 1st block we come to
|
||||
search_mem_init:
|
||||
xor si,si ; si = max mem available
|
||||
mov di,0FFFFh ; di = size of candiate (FFFF=none)
|
||||
; dx = dmd of candidate
|
||||
search_mem_loop:
|
||||
call check_dmd_id ; if block is invalid
|
||||
jc search_mem_exit ; then quit now
|
||||
|
||||
cmp DMD_PSP,0 ; if block is owned
|
||||
jnz search_mem_next ; then check another
|
||||
|
||||
call merge_mem ; group with unallocated blocks
|
||||
|
||||
mov ax,es ; AX = current DMD
|
||||
mov cx,DMD_LEN ; cx = block length
|
||||
|
||||
cmp cx,si ; is it the biggest block we
|
||||
jb search_mem40 ; have found so far ?
|
||||
mov si,cx ; if so then save the new size
|
||||
search_mem40:
|
||||
|
||||
cmp cx,bx ; if it's not long enough
|
||||
jb search_mem_next ; then try the next block
|
||||
|
||||
test mem_strategy,FIRST_FIT+LAST_FIT
|
||||
jnz search_mem50 ; grab this block ?
|
||||
|
||||
test mem_strategy,BEST_FIT ; if BEST FIT then we only save this
|
||||
jz search_mem_next ; candidate if the previous
|
||||
cmp cx,di ; candidate was bigger
|
||||
jae search_mem_next
|
||||
search_mem50:
|
||||
mov dx,es ; save this DMD candidate
|
||||
mov di,cx ; along with it's length
|
||||
and mem_strategy,not FIRST_FIT
|
||||
search_mem_next:
|
||||
call search_next_dmd ; try for another DMD
|
||||
mov ax,ED_MEMORY ; assume insufficient mem
|
||||
jc search_mem_exit ; stop if it's true
|
||||
|
||||
mov ax,es
|
||||
cmp ax,dmd_upper_root ; if we reach the dmd upper root
|
||||
jne search_mem_loop ; then we have a special case
|
||||
or mem_strategy,FIRST_FIT ; grab 1st high memory block we find
|
||||
test mem_strategy,UPPER_ONLY_FIT
|
||||
jnz search_mem_init ; upper only is another special case
|
||||
jmps search_mem_loop
|
||||
|
||||
search_mem_exit:
|
||||
and mem_strategy,not FIRST_FIT
|
||||
mov cx,di ; DX&DI contain our best candidate
|
||||
inc di ; if DI=FFFF then we don't have one
|
||||
je search_mem_bad ; else we return with CX = size
|
||||
mov es,dx ; and ES = DMD
|
||||
clc ; clear the error flag
|
||||
ret
|
||||
|
||||
search_mem_bad:
|
||||
mov cx,si ; no allocation made, so return
|
||||
search_mem_error: ; biggest block and flag the error
|
||||
stc
|
||||
ret
|
||||
|
||||
search_next_dmd:
|
||||
; On Entry:
|
||||
; ES = current DMD
|
||||
; On Exit:
|
||||
; ES = AX = next DMD
|
||||
; DX/DI preserved
|
||||
;
|
||||
cmp DMD_ID,IDM ; do we have any more blocks ?
|
||||
jne search_mem_error ; no, return CY set
|
||||
; jmp next_dmd ; else try next DMD
|
||||
|
||||
; Point to next DOS Memory Descriptor (dmd) in the chain
|
||||
; entry: es -> current dmd
|
||||
; exit: es -> next dmd
|
||||
|
||||
next_dmd:
|
||||
mov ax,es
|
||||
add ax,DMD_LEN
|
||||
inc ax ; allow for dmd itself
|
||||
mov es,ax
|
||||
ret
|
||||
|
||||
; Increase the size of the current mem block
|
||||
; by gobbling all adjacent unallocated blocks
|
||||
; entry: es -> dmd
|
||||
; exit: cf = 1, al = 7 if chain is broken
|
||||
; ES,SI,DI,DX,BX preserved
|
||||
|
||||
merge_mem:
|
||||
push es
|
||||
cmp DMD_ID,IDM ; if no more dmd's
|
||||
jnz merge_mem_done ; then just quit
|
||||
|
||||
call next_dmd
|
||||
call check_dmd_id ; if id is invalid
|
||||
jc merge_mem_quit ; then return an error
|
||||
|
||||
cmp DMD_PSP,0 ; if next dmd is owned
|
||||
jnz merge_mem_done ; then done
|
||||
|
||||
mov cx,DMD_LEN ; if free, grab its length
|
||||
pop es ; restore base dmd
|
||||
|
||||
mov DMD_ID,al ; use next's id (in case of last)
|
||||
inc cx
|
||||
add DMD_LEN,cx ; add new memory to base
|
||||
jmps merge_mem ; and try again
|
||||
|
||||
merge_mem_done:
|
||||
clc ; clear error flag
|
||||
merge_mem_quit:
|
||||
pop es ; restore base dmd
|
||||
ret ; with cf and error flag
|
||||
|
||||
|
||||
; If needed, create a new dmd on top of allocated memory
|
||||
; entry: es -> current block
|
||||
; bx = requested block size
|
||||
; cx = current block size
|
||||
|
||||
make_dmd:
|
||||
cmp bx,cx ; if request and size match
|
||||
jz make_dmd_done ; then that's all we need
|
||||
|
||||
mov dl,DMD_ID ; get current block id
|
||||
mov DMD_LEN,bx ; else shrink this block
|
||||
mov DMD_ID,IDM ; not the last now
|
||||
call next_dmd
|
||||
mov DMD_ID,dl ; our old id for the new dmd
|
||||
mov DMD_PSP,0 ; new block is free
|
||||
sub cx,bx
|
||||
dec cx
|
||||
mov DMD_LEN,cx ; length is whatever is left
|
||||
|
||||
make_dmd_done:
|
||||
ret
|
||||
|
||||
; Get passed value of memory block
|
||||
; exit: es -> dmd
|
||||
; al = DMD_ID, cf cleared if valid
|
||||
; al = 7, cf set if invalid
|
||||
|
||||
get_dmd:
|
||||
call reload_ES
|
||||
mov ax,es
|
||||
dec ax ; back up to dmd
|
||||
mov es,ax
|
||||
; jmps check_dmd_id ; fall through
|
||||
|
||||
; Check first byte in the dmd for a valid id code
|
||||
; entry: es -> dmd
|
||||
; exit: al = DMD_ID, cf cleared if valid
|
||||
; al = 7, cf set if invalid
|
||||
|
||||
Public check_dmd_id
|
||||
|
||||
check_dmd_id:
|
||||
mov al,DMD_ID
|
||||
cmp al,IDM ; if not last
|
||||
jz check_dmd_done ; then good
|
||||
cmp al,IDZ ; if last
|
||||
jz check_dmd_done ; also good
|
||||
|
||||
mov ax,ED_BLOCK ; Invalid DMD
|
||||
check_dmd_error:
|
||||
stc ; flag the error
|
||||
check_dmd_done:
|
||||
ret
|
||||
|
||||
|
||||
PCMODE_DATA DSEG
|
||||
|
||||
extrn lock_tables:dword
|
||||
extrn unlock_tables:dword
|
||||
|
||||
extrn dmd_address:word ; don't free DMD's with segment under this value
|
||||
extrn dmd_owner:word ; don't free DMD's with owner under this value
|
||||
extrn dmd_upper_root:word
|
||||
extrn dmd_upper_link:byte
|
||||
extrn current_psp:word
|
||||
extrn locus:byte
|
||||
extrn mem_strategy:byte
|
||||
extrn dmd_root:word
|
||||
|
||||
end
|
||||
60
IBMDOS/DRIVER.EQU
Normal file
60
IBMDOS/DRIVER.EQU
Normal file
@@ -0,0 +1,60 @@
|
||||
; File : $DRIVER.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
|
||||
; Device driver header offsets.
|
||||
|
||||
|
||||
DH_NEXT equ es:dword ptr 0 ; Dword Pointer to Next DEV
|
||||
DH_NEXTOFF equ es:word ptr 0 ; Offset of next device
|
||||
DH_NEXTSEG equ es:word ptr 2 ; Segment of next device
|
||||
DH_ATTRIB equ es:word ptr 4 ; device attribute bits
|
||||
DH_STRATEGY equ es:word ptr 6 ; offset of strategy entry
|
||||
DH_INTERRUPT equ es:word ptr 8 ; offset of interupt entry
|
||||
DH_NAME equ es:byte ptr 10 ; 8-BYTE device name
|
||||
|
||||
DA_CHARDEV equ 8000h ; 1=character device, 0=block device
|
||||
DA_IOCTL equ 4000h ; device supports IOCTL string I/O
|
||||
DA_NONIBM equ 2000h ; dosen't require FAT for login
|
||||
DA_OTILBSY equ 2000h ; supports "output until busy"
|
||||
DA_REMOVE equ 0800h ; supports "removable media" check
|
||||
DA_QUERY equ 0080h ; supports query ioctl
|
||||
DA_GETSET equ 0040h ; supports 3.2 level functionality
|
||||
DA_SPECIAL equ 0010h ; fast console ouput via INT 29h
|
||||
DA_ISCLK equ 0008h ; device is current clock device
|
||||
DA_ISNUL equ 0004h ; device is NUL device (reserved)
|
||||
DA_BIGDRV equ 0002h ; supports > 65535 sector per drive
|
||||
DA_ISCOT equ 0002h ; device is standard output device
|
||||
DA_ISCIN equ 0001h ; device is standard input device
|
||||
|
||||
FASTCON_INT equ 29h ; fast console output interrupt
|
||||
|
||||
469
IBMDOS/ERROR.A86
Normal file
469
IBMDOS/ERROR.A86
Normal file
@@ -0,0 +1,469 @@
|
||||
; File : $ERROR.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$
|
||||
; ERROR.A86 1.17 94/12/02 11:01:03
|
||||
; added logical error entry
|
||||
; ERROR.A86 1.16 93/11/26 15:51:29
|
||||
; Update char_error so ES:SI -> device driver header itself
|
||||
; ERROR.A86 1.14 93/09/09 22:36:26
|
||||
; Int 21/59 uses error stack (for benefit of Lantastic)
|
||||
; ERROR.A86 1.13 93/09/03 20:28:11
|
||||
; Add "no critical errors" support (int 21/6C)
|
||||
; ENDLOG
|
||||
;
|
||||
; This file contains the Error handling routines for PCMODE
|
||||
; When a function encounters an error it jumps to the ERROR_EXIT
|
||||
; function which will process the error consistantly. FCB_ERROR_EXIT
|
||||
; is a special case of ERROR_EXIT where the error code is not returned
|
||||
; directly to the user but is still saved for func59
|
||||
;
|
||||
|
||||
include pcmode.equ
|
||||
include fdos.def
|
||||
include i:msdos.equ
|
||||
include i:mserror.equ
|
||||
include i:psp.def
|
||||
include i:char.def
|
||||
include i:reqhdr.equ
|
||||
|
||||
;
|
||||
ERR_TBL_CODE equ byte ptr 0 ; Error Code in Table
|
||||
ERR_TBL_CLASS equ byte ptr 1 ; Error Class entry in Table
|
||||
ERR_TBL_ACTION equ byte ptr 2 ; Error Action entry in Table
|
||||
ERR_TBL_LOCUS equ byte ptr 3 ; Locus entry in table
|
||||
ERR_TBL_LEN equ 4 ; 4 bytes per entry
|
||||
;
|
||||
PCM_CODE CSEG BYTE
|
||||
extrn get_dseg:near
|
||||
extrn do_int24:near
|
||||
extrn reload_registers:near
|
||||
extrn return_AX_CLC:near
|
||||
;
|
||||
; *****************************
|
||||
; *** DOS Function 59 ***
|
||||
; *** Get Extended Error ***
|
||||
; *****************************
|
||||
;
|
||||
Public func59
|
||||
|
||||
func59:
|
||||
les di,error_dev ; Return device driver address
|
||||
mov bh,error_class ; return the Error Class
|
||||
mov bl,error_action ; the Action Code
|
||||
mov ch,error_locus ; the Locus Code
|
||||
mov ax,error_code ; the Error Code
|
||||
|
||||
lds si,int21regs_ptr ; point to user stack
|
||||
mov reg_ES[si],es
|
||||
mov reg_DI[si],di
|
||||
mov reg_BX[si],bx
|
||||
mov reg_CX[si],cx
|
||||
push ss ! pop ds
|
||||
jmp return_AX_CLC
|
||||
|
||||
eject
|
||||
; On Entry:- AX == Internal Error Number
|
||||
;
|
||||
; On Exit:- None
|
||||
; CY set if error should be returned
|
||||
; CY clear if it should be ignored
|
||||
;
|
||||
Public error_exit
|
||||
error_exit:
|
||||
cmp internal_flag,0 ; If this is an internal
|
||||
jnz error_ret ; do not generate a critical
|
||||
call disk_error ; error
|
||||
jnz error_r10 ; No Error Occured or Ignored
|
||||
ret ; in critcal error handler
|
||||
|
||||
;
|
||||
; Return the error code to the user and DO NOT generate any
|
||||
; critical errors.
|
||||
;
|
||||
; On Entry:- AX == Internal Error Number
|
||||
;
|
||||
; On Exit:- None
|
||||
;
|
||||
Public error_ret
|
||||
error_ret:
|
||||
call set_error ; the internal error code
|
||||
error_r10: ; otherwise negate
|
||||
les di,int21regs_ptr
|
||||
or es:reg_FLAGS[di],CARRY_FLAG ; set the "users" carry Flag
|
||||
stc ; also set real one
|
||||
if offset reg_AX EQ 0
|
||||
stosw ; save return code
|
||||
else
|
||||
mov es:reg_AX[di],ax
|
||||
endif
|
||||
ret
|
||||
|
||||
;
|
||||
; On Entry:- AX == Internal Error Number
|
||||
;
|
||||
; On Exit:- None
|
||||
;
|
||||
Public fcberror_exit
|
||||
fcberror_exit:
|
||||
call disk_error ; Process the error code generating
|
||||
jz fe_e10 ; a critical error is required
|
||||
mov al,0FFh ; on FCB error return AL = FF
|
||||
fe_e10:
|
||||
ret
|
||||
|
||||
eject
|
||||
; WARNING - may be called from FDOS with DS = SYSDAT
|
||||
;
|
||||
; CHAR_ERROR is called when any character device function generates
|
||||
; an error. First CHAR_ERROR sets the correct parameters for Get
|
||||
; Extended Error. Then it generates a Critical Error by calling
|
||||
; DO_INT24.
|
||||
;
|
||||
; Entry:- ES:SI -> device driver header
|
||||
; SS:BX -> RH_
|
||||
; AX = RH_STATUS
|
||||
;
|
||||
; Exit AL Error Action
|
||||
;
|
||||
Public char_error
|
||||
char_error:
|
||||
test ss:valid_flg,NO_CRIT_ERRORS
|
||||
jz char_e10
|
||||
mov al,ERR_FAIL ; no critical errors allowed
|
||||
ret ; so just fail things
|
||||
char_e10:
|
||||
push ds
|
||||
push es
|
||||
push bx
|
||||
push cx
|
||||
push dx
|
||||
push si
|
||||
push di
|
||||
push ss ! pop ds ; DS -> our data now
|
||||
mov word ptr error_dev+0,si ; save the device driver address
|
||||
mov word ptr error_dev+2,es ; and then initialise the FUNC59
|
||||
push es ; data areas
|
||||
and ax,007Fh ; Mask the Unused Bits
|
||||
or ah,80h+OK_RIF ; Retry/Ignore/Abort/Fail allowable
|
||||
cmp ss:RH_CMD,CMD_OUTPUT ; is this a read or write failure ?
|
||||
jne char_e20
|
||||
inc ah ; 01 is a Write Failure
|
||||
char_e20:
|
||||
mov rwmode,ah ;
|
||||
push ax ; save for int 24
|
||||
cbw ; zero AH again
|
||||
neg ax ; convert to an internal error
|
||||
add ax,ED_PROTECT ; code for set_error
|
||||
mov cl,LOC_CHAR
|
||||
call set_error
|
||||
add ax,ED_PROTECT ; convert to hardware error
|
||||
xchg ax,di ; DI == hardware error
|
||||
pop ax
|
||||
pop es
|
||||
call do_int24 ; execute INT 24
|
||||
pop di
|
||||
pop si
|
||||
pop dx
|
||||
pop cx
|
||||
pop bx
|
||||
pop es
|
||||
pop ds
|
||||
ret
|
||||
|
||||
eject
|
||||
;
|
||||
; DISK_ERROR gains control after any DOS disk based function
|
||||
; has been executed which generates an error. First ERROR set the
|
||||
; correct parameters for Get Extended Error. Then it determines if
|
||||
; the current error should generate a Critical Error and calls
|
||||
; DO_INT24 if TRUE.
|
||||
;
|
||||
;
|
||||
; On Entry:
|
||||
; AX Internal Error Code
|
||||
;
|
||||
; On Exit:
|
||||
; AX 0 if no error to return (Ignore)
|
||||
; AX DOS Error Code
|
||||
; ZF reflects AX
|
||||
;
|
||||
disk_error:
|
||||
mov cl,LOC_CHAR ; assume character device
|
||||
; determine if the error is
|
||||
test rwmode,80h ; caused by a character or
|
||||
jnz disk_e10 ; block device and set the
|
||||
mov cl,LOC_BLOCK ; the critical error locus
|
||||
disk_e10:
|
||||
call set_error ; record error information
|
||||
jz disk_e50 ; just return a logical error.
|
||||
|
||||
add ax,ED_PROTECT ; Convert to HardWare Error
|
||||
mov di,ax ; DI == HardWare Error
|
||||
; Now get the information
|
||||
mov ah,rwmode ; about the error location
|
||||
|
||||
and ah,not OK_RIF ; mask the all responses
|
||||
; mov al,valid_flg ; valid flag contains no crit
|
||||
; and al,not NO_CRITICAL_ERRORS ; errors bit, but if that was
|
||||
; or ah,al ; set we wouldn't be here
|
||||
or ah,valid_flg ; or in valid responses
|
||||
|
||||
cmp bx,ED_GENFAIL ; if it's general failure
|
||||
jne disk_e20 ; we cannot Ignore the error
|
||||
and ah,not OK_IGNORE ; but must Abort/Fail/Retry
|
||||
disk_e20: ; as appropriate
|
||||
|
||||
mov al,err_drv ; get the failing drive
|
||||
mov error_drive,al ; and save locally
|
||||
|
||||
les si,error_dev ; get device driver header
|
||||
|
||||
; are we are a character device
|
||||
test ah,80h ; as these have handled at a
|
||||
jnz disk_e40 ; lower level and just need
|
||||
; to be FAILed back to caller
|
||||
|
||||
call do_int24 ; Execute INT 24
|
||||
|
||||
mov bl,al ; Copy reponse into BL
|
||||
|
||||
xor ax,ax ; Assume Ignore Error
|
||||
cmp bl,ERR_IGNORE ! jz disk_e50 ; Ignore the Error
|
||||
|
||||
cmp bl,ERR_FAIL ! jz disk_e40 ; If not FAIL then RETRY
|
||||
call reload_registers ; get back entry registers
|
||||
mov FD_FUNC,ax ; save AX for a moment
|
||||
mov al,ah ; set up function number
|
||||
xor ah,ah ; in AX
|
||||
xchg ax,FD_FUNC ; save for use by FDOS
|
||||
xor ah,ah ; zero AH 'cause it's handy
|
||||
mov sp,retry_sp ; Must be RETRY so reset the
|
||||
jmp retry_off ; STACK and IP
|
||||
|
||||
disk_e40:
|
||||
;
|
||||
; When a Critical Error is FAILED then we do the following
|
||||
; if (extended error_code <= ED_SHAREFAIL) then
|
||||
; ret = ED_ACCESS;
|
||||
; else
|
||||
; ret = ED_FAIL;
|
||||
; extended error_code = ED_FAIL;
|
||||
; return(ret);
|
||||
;
|
||||
; nb. above proto-code is at the request of ant
|
||||
;
|
||||
mov ax,-(ED_FAIL) ; always return ED_FAIL in the
|
||||
xchg ax,error_code ; extended error_code
|
||||
cmp ax,-(ED_SHAREFAIL) ; did we FAIL on sharing conflict ?
|
||||
mov ax,-(ED_ACCESS) ; assume we did and prepare to return
|
||||
jae disk_e50 ; ED_ACCESS
|
||||
mov al,-(ED_FAIL) ; woops, return ED_FAIL after all
|
||||
disk_e50:
|
||||
or ax,ax ; NZ if error return required
|
||||
ret
|
||||
|
||||
eject
|
||||
;
|
||||
; On Entry:- AX Internal Error Code
|
||||
; CL Critical Error Locus
|
||||
;
|
||||
; On Exit:- AX DOS Error Code
|
||||
; BX Internal Error Code
|
||||
; ZF set on logical error
|
||||
set_error:
|
||||
mov bx,ax ; by default we return the raw error
|
||||
mov di,offset critical_error; Scan for critical Errors First
|
||||
call scan_error_table ; look for a matching error
|
||||
jc set_logical_error
|
||||
mov locus,cl ; Save the critical error LOCUS
|
||||
cmp ax,ED_SHAREFAIL ; watch out for SHAREFAIL - the action
|
||||
jne set_e10 ; depends on the caller
|
||||
;
|
||||
; ED_SHAREFAIL will return ED_ACCESS if the result of an attempt to open
|
||||
; a file in shared mode, otherwise (FCB's and compatibility) it will
|
||||
; generate a critical error.
|
||||
;
|
||||
mov bx,ED_GENFAIL ; assume we want a critical error
|
||||
cmp FD_FUNC,MS_X_OPEN ; is it a shared open ?
|
||||
jnz set_error_data
|
||||
test FD_MODE,0$111$0$000b ; mode
|
||||
jz set_error_data
|
||||
jmps set_e30 ; return a logical "access denied"
|
||||
|
||||
set_e10:
|
||||
cmp ax,ED_LOCKFAIL ; have we a lockfail error ?
|
||||
jne set_e20
|
||||
;
|
||||
; ED_LOCKFAIL returns ED_ACCESS if a lock attempt fails, but a critical error
|
||||
; on an attempt to read/write a locked region.
|
||||
;
|
||||
cmp FD_FUNC,FD_LOCK ; was it a result of specific lock
|
||||
je set_logical_error ; call ? yes, it's a logical error
|
||||
mov bx,ED_GENFAIL ; no, generate a critical error
|
||||
jmps set_error_data
|
||||
|
||||
set_e20:
|
||||
test valid_flg,NO_CRIT_ERRORS
|
||||
jz set_error_data ; do we allow critical errors ?
|
||||
mov ax,ED_ACCESS ; extended error code is Access Denied
|
||||
set_e30:
|
||||
mov bx,ED_ACCESS ; return access denied to caller
|
||||
; jmps set_logical_error
|
||||
|
||||
set_logical_error:
|
||||
xor di,di
|
||||
mov word ptr error_dev+0,di ; must be a logical error so force
|
||||
mov word ptr error_dev+2,di ; the ERROR_DEV to 0000:0000
|
||||
mov di,offset logical_error ; scan the Logical error table
|
||||
call scan_error_table
|
||||
cmp ax,ED_NETACCESS ; if it's a networked access denied
|
||||
jne set_error_data ; turn it into ordinary one
|
||||
mov bx,ED_ACCESS ; return a logical "access denied"
|
||||
; jmps set_error_data
|
||||
|
||||
set_error_data:
|
||||
; On Entry:
|
||||
; AX = Internal Error Code for extended error
|
||||
; BX = Internal Error Code for returned error
|
||||
; CS:DI -> error table entry
|
||||
; On Exit:
|
||||
; AX = DOS Error Code
|
||||
; BX = Internal Error Code
|
||||
; ZF set on logical error
|
||||
;
|
||||
neg ax
|
||||
mov error_code,ax ; Save the Error Code
|
||||
mov al,cs:ERR_TBL_CLASS[di]
|
||||
mov error_class,al ; Save the Class
|
||||
mov al,cs:ERR_TBL_ACTION[di]
|
||||
mov error_action,al ; Save the Action
|
||||
mov al,cs:ERR_TBL_LOCUS[di] ; Get the Locus
|
||||
mov error_locus,al ; Save the Locus and then check
|
||||
test al,al ; if the function overrides
|
||||
jnz set_d10 ; this value
|
||||
mov al,locus ; Get the Global Locus value
|
||||
mov error_locus,al ; set by the calling function
|
||||
set_d10: ; and save for FUNC 59
|
||||
mov ax,bx ; Return to the caller with
|
||||
neg ax ; the DOS error code.
|
||||
mov di,word ptr error_dev ; set ZF if logical error
|
||||
or di,word ptr error_dev+2 ; error_dev = 0:0
|
||||
ret
|
||||
|
||||
scan_error_table:
|
||||
cmp cs:ERR_TBL_CODE[di],0
|
||||
je scan_et10 ; Check for the end of the list
|
||||
cmp al,cs:ERR_TBL_CODE[di]
|
||||
je scan_et20
|
||||
add di,ERR_TBL_LEN
|
||||
jmps scan_error_table
|
||||
scan_et10:
|
||||
stc
|
||||
scan_et20:
|
||||
ret
|
||||
|
||||
|
||||
eject
|
||||
PCM_RODATA CSEG WORD
|
||||
logical_error rb 0
|
||||
;
|
||||
; Internal Code Error Class Error Action Error Locus
|
||||
; ============= =========== ============ ===========
|
||||
db ED_FUNCTION, CLASS_APPLIC, ACT_ABORT, 00
|
||||
db ED_FILE, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||||
db ED_PATH, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||||
db ED_HANDLE, CLASS_RESOURCE, ACT_ABORT, LOC_UNKNOWN
|
||||
db ED_ACCESS, CLASS_AUTHOR, ACT_USER, 00
|
||||
db ED_NETACCESS, CLASS_AUTHOR, ACT_USER, 00
|
||||
db ED_H_MATCH, CLASS_APPLIC, ACT_ABORT, LOC_UNKNOWN
|
||||
db ED_DMD, CLASS_APPLIC, ACT_TERM, LOC_MEMORY
|
||||
db ED_MEMORY, CLASS_RESOURCE, ACT_ABORT, LOC_MEMORY
|
||||
db ED_BLOCK, CLASS_APPLIC, ACT_ABORT, LOC_MEMORY
|
||||
db ED_ENVIRON, CLASS_APPLIC, ACT_ABORT, LOC_MEMORY
|
||||
db ED_FORMAT, CLASS_FORMAT, ACT_USER, LOC_UNKNOWN
|
||||
db ED_ACC_CODE, CLASS_APPLIC, ACT_ABORT, LOC_UNKNOWN
|
||||
db ED_DATA, CLASS_FORMAT, ACT_ABORT, LOC_UNKNOWN
|
||||
db ED_DRIVE, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||||
db ED_DIR, CLASS_AUTHOR, ACT_USER, LOC_BLOCK
|
||||
db ED_DEVICE, CLASS_UNKNOWN, ACT_USER, LOC_BLOCK
|
||||
db ED_ROOM, CLASS_LOST, ACT_USER, LOC_BLOCK
|
||||
db ED_EXISTS, CLASS_EXISTS, ACT_USER, LOC_BLOCK
|
||||
db ED_STRUCT, CLASS_RESOURCE, ACT_ABORT, 00
|
||||
db ED_PASSWORD, CLASS_AUTHOR, ACT_USER, LOC_UNKNOWN
|
||||
db ED_MAKE, CLASS_RESOURCE, ACT_ABORT, LOC_BLOCK
|
||||
;; db ED_NET, CLASS_FORMAT, ACT_USER, LOC_NET
|
||||
db ED_ASSIGN, CLASS_EXISTS, ACT_USER, LOC_NET
|
||||
db ED_PARAM, CLASS_FORMAT, ACT_USER, LOC_UNKNOWN
|
||||
db ED_FAIL, CLASS_UNKNOWN, ACT_ABORT, LOC_UNKNOWN
|
||||
db ED_SHAREFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||||
db ED_LOCKFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||||
db ED_NOLOCKS, CLASS_RESOURCE, ACT_ABORT, LOC_MEMORY
|
||||
db 00, CLASS_SYSTEM, ACT_TERM, LOC_UNKNOWN
|
||||
|
||||
critical_error rb 0
|
||||
;
|
||||
; Internal Code Error Class Error Action Error Locus
|
||||
; ============= =========== ============ ===========
|
||||
db ED_PROTECT, CLASS_MEDIA, ACT_URETRY, LOC_BLOCK
|
||||
db ED_BADUNIT, CLASS_INTERNAL, ACT_TERM, LOC_UNKNOWN
|
||||
db ED_NOTREADY, CLASS_HARDWARE, ACT_URETRY, 00
|
||||
db ED_BADCMD, CLASS_INTERNAL, ACT_TERM, LOC_UNKNOWN
|
||||
db ED_BADDATA, CLASS_MEDIA, ACT_ABORT, LOC_BLOCK
|
||||
db ED_BADSEEK, CLASS_HARDWARE, ACT_RETRY, LOC_BLOCK
|
||||
db ED_BADMEDIA, CLASS_MEDIA, ACT_URETRY, LOC_BLOCK
|
||||
db ED_RNF, CLASS_MEDIA, ACT_ABORT, LOC_BLOCK
|
||||
db ED_NOPAPER, CLASS_TEMP, ACT_URETRY, LOC_CHAR
|
||||
db ED_WRFAIL, CLASS_HARDWARE, ACT_ABORT, 00
|
||||
db ED_RDFAIL, CLASS_HARDWARE, ACT_ABORT, 00
|
||||
db ED_GENFAIL, CLASS_UNKNOWN, ACT_ABORT, 00
|
||||
db ED_SHAREFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||||
db ED_LOCKFAIL, CLASS_LOCKED, ACT_DELAY, LOC_BLOCK
|
||||
db ED_NOFCBS, CLASS_APPLIC, ACT_ABORT, LOC_UNKNOWN
|
||||
|
||||
default_error rb 0
|
||||
db 00, CLASS_SYSTEM, ACT_TERM, LOC_UNKNOWN
|
||||
|
||||
PCMODE_DATA DSEG WORD
|
||||
extrn indos_flag:byte
|
||||
extrn internal_flag:byte
|
||||
extrn int21regs_ptr:dword
|
||||
extrn current_psp:word
|
||||
extrn retry_off:word, retry_sp:word
|
||||
extrn valid_flg:byte
|
||||
extrn error_locus:byte ; Error Locus
|
||||
extrn error_code:word ; DOS format error Code
|
||||
extrn error_action:byte ; Error Action Code
|
||||
extrn error_class:byte ; Error Class
|
||||
extrn error_dev:dword ; Failing Device Header
|
||||
extrn error_drive:byte ; Failing Disk Drive
|
||||
extrn err_drv:byte
|
||||
extrn locus:byte
|
||||
extrn rwmode:byte
|
||||
end
|
||||
52
IBMDOS/EXE.DEF
Normal file
52
IBMDOS/EXE.DEF
Normal file
@@ -0,0 +1,52 @@
|
||||
; File : $EXE.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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
;
|
||||
; This file defines the DOS .EXE file Header
|
||||
|
||||
|
||||
EXE_SIGNATURE equ word ptr 0 ; 0000 Valid EXE contains 'MZ'
|
||||
EXE_FINAL equ word ptr EXE_SIGNATURE+2; 0002 Image Length MOD 512
|
||||
EXE_SIZE equ word ptr EXE_FINAL+2 ; 0004 Image Length DIV 512
|
||||
EXE_RELCNT equ word ptr EXE_SIZE+2 ; 0006 No. of Relocation Items
|
||||
EXE_HEADER equ word ptr EXE_RELCNT+2 ; 0008 Header Size in paragraphs
|
||||
EXE_MINPARA equ word ptr EXE_HEADER+2 ; 000A Minimum No extra paragraphs
|
||||
EXE_MAXPARA equ word ptr EXE_MINPARA+2 ; 000C Maximum No of extra paragraphs
|
||||
EXE_SS equ word ptr EXE_MAXPARA+2 ; 000E Displacment of Stack Segment
|
||||
EXE_SP equ word ptr EXE_SS+2 ; 0010 Initial SP
|
||||
EXE_CHECKSUM equ word ptr EXE_SP+2 ; 0012 Negative CheckSum
|
||||
EXE_IP equ word ptr EXE_CHECKSUM+2 ; 0014 Initial IP
|
||||
EXE_CS equ word ptr EXE_IP+2 ; 0016 Code Segment displacement
|
||||
EXE_RELOFF equ word ptr EXE_CS+2 ; 0018 Byte Offset of First REL item
|
||||
EXE_OVERLAY equ word ptr EXE_RELOFF+2 ; 001A Overlay Number (0 == Resident)
|
||||
EXE_LENGTH equ 001Ch
|
||||
90
IBMDOS/F52DATA.DEF
Normal file
90
IBMDOS/F52DATA.DEF
Normal file
@@ -0,0 +1,90 @@
|
||||
; File : $Workfile$
|
||||
;
|
||||
; Description :
|
||||
;
|
||||
; Original Author :
|
||||
;
|
||||
; Last Edited By : $Author$
|
||||
;
|
||||
;-----------------------------------------------------------------------;
|
||||
; 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
|
||||
;
|
||||
; The following equates define the Data Area whose address is
|
||||
; returned by function 52.
|
||||
;
|
||||
|
||||
|
||||
F52_BCBBUF equ es:dword ptr -0008h[bx] ; current buffer
|
||||
F52_BCBOFF equ es:word ptr -0008h[bx] ; current buffer
|
||||
F52_BCBSEG equ es:word ptr -0006h[bx] ; current buffer
|
||||
F52_DMDROOT equ es:word ptr -0002h[bx] ; Memory Descriptor Root (Seg)
|
||||
F52_DDSCPTR equ es:dword ptr 0000h[bx] ; DDSC Table Address
|
||||
F52_FILEPTR equ es:dword ptr 0004h[bx] ; File Handle Table Address
|
||||
F52_CLKDEV equ es:dword ptr 0008h[bx] ; Clock Device Header
|
||||
F52_CONDEV equ es:dword ptr 000Ch[bx] ; Console Device Header
|
||||
F52_SECSIZE equ es:word ptr 0010h[bx] ; Maximum Sector Size
|
||||
F52_BUFINFOPTR equ es:dword ptr 0012h[bx] ; Buffer Info pointer
|
||||
F52_PATHPTR equ es:dword ptr 0016h[bx] ; Path Control Table Address
|
||||
F52_PATHOFF equ es:word ptr 0016h[bx]
|
||||
F52_PATHSEG equ es:word ptr 0018h[bx]
|
||||
F52_FCBPTR equ es:dword ptr 001Ah[bx] ; FCB Table Address
|
||||
; equ es:word ptr 001Eh[bx] ; #Entries in FCB Table
|
||||
F52_PHYDRV equ es:byte ptr 0020h[bx] ; Last Physical Drive
|
||||
F52_LASTDRV equ es:byte ptr 0021h[bx] ; Last Logical Drive
|
||||
F52_DEVROOT equ es:dword ptr 0022h[bx] ; Root Device Header
|
||||
F52_JOINDRV equ es:byte ptr 0034h[bx] ; Number of JOIN'd drives
|
||||
F52_SETVER equ es:dword ptr 0037h[bx] ; SETVER table pointer
|
||||
F52_NUM_BUF equ es:word ptr 003Fh[bx] ; number of disk buffers
|
||||
F52_READ_AHEAD equ es:word ptr 0041h[bx] ; size of read-ahead buffer
|
||||
F52_BOOTDRV equ es:byte ptr 0043h[bx] ; boot drive (1-26)
|
||||
F52_CPU_TYPE equ es:byte ptr 0044h[bx] ; 01 if >= 386SX
|
||||
F52_EXT_MEM equ es:word ptr 0045h[bx] ; Int 15h, AH=87h
|
||||
F52_BUF_INFO equ es:dword ptr 0047h[bx] ; points at Buffer Info
|
||||
F52_HMAFLAG equ es:byte ptr 0053h[bx] ; 1 if buffers in HMA
|
||||
F52_DEBLOCK equ es:word ptr 0056h[bx] ; deblock if buffers in HMA
|
||||
F52_DMD_UPPER equ es:word ptr 0066h[bx] ; upper memory chain
|
||||
F52_SHARE_STUB equ es:dword ptr 006Ah[bx] ; Share Stub Entries*15
|
||||
|
||||
;DRDOS Specific
|
||||
|
||||
DRDOS_CRITSTUBS equ es:word ptr 0000h[bx] ; Offset of end of instance data
|
||||
DRDOS_HIST1CTL equ es:word ptr 0004h[bx] ; History 1 Control
|
||||
DRDOS_HIST2CTL equ es:word ptr 0006h[bx] ; History 2 Control
|
||||
DRDOS_HISTFLG equ es:byte ptr 0008h[bx] ; History Buffer Flag
|
||||
DRDOS_DUAL_LANG equ es:byte ptr 0009h[bx] ; Utils Dual Language Support
|
||||
DRDOS_CUR_LANG equ es:byte ptr 000Ah[bx] ; Current Language
|
||||
DRDOS_EXT_MEM equ es:word ptr 000Bh[bx] ; Total Extended Memory
|
||||
DRDOS_HIMEM_ROOT equ es:word ptr 0010h[bx] ; High memory chain
|
||||
DRDOS_ENVSEG equ es:word ptr 0012h[bx] ; Seg of environment
|
||||
DRDOS_DMD_BASE equ es:word ptr 0016h[bx] ; base memory freed at
|
||||
DRDOS_DMD_UPPER equ es:word ptr 0018h[bx] ; upper memory chain
|
||||
DRDOS_MACHINE_ID equ es:word ptr 001Ah[bx] ; local machine ID
|
||||
DRDOS_COUNTRY_FILE equ es:word ptr 001Eh[bx] ; offset of filename
|
||||
DRDOS_HASHOFF equ es:word ptr 0020h[bx] ; fastopen hash root
|
||||
DRDOS_HASHSEG equ es:word ptr 0022h[bx] ; pointer
|
||||
DRDOS_HASHMAX equ es:word ptr 0024h[bx] ; max # dir entries
|
||||
DRDOS_DEBLOCK equ es:word ptr 0026h[bx] ; himem deblock buffer
|
||||
DRDOS_INT2F equ es:word ptr 002Ch[bx] ; internal Int 2F hook
|
||||
960
IBMDOS/FCBS.A86
Normal file
960
IBMDOS/FCBS.A86
Normal file
@@ -0,0 +1,960 @@
|
||||
title 'FCB - DOS file system FCB support'
|
||||
; File : $FCBS.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$
|
||||
; FCBS.A86 1.10 93/11/11 15:38:14
|
||||
; Chart Master fix - fcb_readblk over > 64k is truncated to 64k and
|
||||
; error 2 (Segment boundry overlap) is returned
|
||||
; FCBS.A86 1.9 93/10/18 17:37:06
|
||||
; fix for >255 open files (PNW Server)
|
||||
; ENDLOG
|
||||
|
||||
eject ! include i:fdos.equ
|
||||
eject ! include i:msdos.equ
|
||||
eject ! include i:mserror.equ
|
||||
eject ! include i:doshndl.def ; DOS Handle Structures
|
||||
eject
|
||||
|
||||
|
||||
BDOS_DATA dseg word
|
||||
|
||||
BDOS_CODE cseg
|
||||
|
||||
extrn ifn2dhndl:near
|
||||
extrn parse_one:near
|
||||
extrn fdos_entry:near
|
||||
|
||||
Public fdos_exit
|
||||
|
||||
eject
|
||||
; TERMINATE CHILD (EXIT)
|
||||
|
||||
; +----+----+
|
||||
; | 24 |
|
||||
; +----+----+
|
||||
|
||||
; entry:
|
||||
; ------
|
||||
; -none-
|
||||
|
||||
; exit:
|
||||
; -----
|
||||
; -none-
|
||||
|
||||
; Close down all FCB handles associated with the current PSP
|
||||
;
|
||||
fdos_exit:
|
||||
;---------
|
||||
push ds
|
||||
push ss ! pop ds ; DS -> PCM_DSEG
|
||||
sub ax,ax ; start with first DHNDL_
|
||||
fdos_exit10:
|
||||
call ifn2dhndl ; get DHNDL_
|
||||
jc fdos_exit40 ; stop if we have run out
|
||||
mov fcb_pb+2,ax ; we may close this IFN
|
||||
push ax
|
||||
mov cx,es:DHNDL_COUNT[bx] ; get the open count
|
||||
jcxz fdos_exit30 ; skip if nothing to do
|
||||
mov ax,current_psp ; get current PSP
|
||||
cmp ax,es:DHNDL_PSP[bx] ; does it belong to this PSP
|
||||
jne fdos_exit30
|
||||
mov ax,ss:machine_id ; get current process
|
||||
cmp ax,es:DHNDL_UID[bx]
|
||||
jne fdos_exit30
|
||||
test es:DHNDL_MODE[bx],DHM_FCB
|
||||
jz fdos_exit20 ; skip close if not FCB
|
||||
push es
|
||||
push bx ; save the DHNDL
|
||||
mov ax,MS_X_CLOSE
|
||||
call fcb_fdos ; make the FDOS do the work
|
||||
pop bx
|
||||
pop es ; recover the DHNDL
|
||||
fdos_exit20:
|
||||
mov es:DHNDL_COUNT[bx],0 ; always free the handle if it's ours
|
||||
fdos_exit30:
|
||||
pop ax
|
||||
inc al ; onto next IFN
|
||||
jnz fdos_exit10
|
||||
fdos_exit40:
|
||||
pop ds
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Public fdos_fcb
|
||||
|
||||
eject
|
||||
; GENERIC FCB FUNCTION (FCB)
|
||||
|
||||
; +----+----+----+----+----+----+----+----+
|
||||
; | 22 | fcbadr | count |
|
||||
; +----+----+----+----+----+----+----+----+
|
||||
; | func |
|
||||
; +----+----+
|
||||
|
||||
; entry:
|
||||
; ------
|
||||
; fcbadr: FCB address
|
||||
; count: multi-sector count for read/write
|
||||
; func: FCB sub-function
|
||||
|
||||
; exit:
|
||||
; -----
|
||||
; AX: return code or error code ( < 0)
|
||||
|
||||
fdos_fcb:
|
||||
;--------
|
||||
mov bx,2[bp] ; BX -> parameter block
|
||||
mov bx,8[bx] ; get subfunction code
|
||||
shl bx,1 ; make it word index
|
||||
sub bl,15*WORD ; adjust to base address
|
||||
jc fcb_error ; reject if too low
|
||||
cmp bl,FCB_MAX1 ; is it in 1st block
|
||||
jb fdos_fcb10
|
||||
sub bl,(33-24)*WORD ; adjust for gap
|
||||
jc fcb_error
|
||||
cmp bl,FCB_MAX2 ; is it in 2nd block
|
||||
jb fdos_fcb10
|
||||
sub bl,(39-37)*WORD ; adjust for gap
|
||||
jc fcb_error
|
||||
fdos_fcb10:
|
||||
cmp bx,FCB_MAX3 ; check the range
|
||||
jae fcb_error ; skip if invalid function
|
||||
jmp fcb_table[bx] ; call the right function
|
||||
|
||||
fcb_error:
|
||||
mov bx,ED_FUNCTION
|
||||
ret
|
||||
|
||||
fcb_table dw fcb_open ; 15-open file
|
||||
dw fcb_close ; 16-close file
|
||||
dw fcb_first ; 17-find first
|
||||
dw fcb_next ; 18-find next
|
||||
dw fcb_delete ; 19-delete file
|
||||
dw fcb_read ; 20-read from file
|
||||
dw fcb_write ; 21-write to file
|
||||
dw fcb_make ; 22-make file
|
||||
dw fcb_rename ; 23-rename file
|
||||
FCB_MAX1 equ (offset $ - offset fcb_table)
|
||||
dw fcb_readrand ; 33-read from file
|
||||
dw fcb_writerand ; 34-write to file
|
||||
dw fcb_size ; 35-compute file size
|
||||
dw fcb_setrecord ; 36-set relative record
|
||||
FCB_MAX2 equ (offset $ - offset fcb_table)
|
||||
dw fcb_readblk ; 39-read from file
|
||||
dw fcb_writeblk ; 40-write to file
|
||||
FCB_MAX3 equ (offset $ - offset fcb_table)
|
||||
|
||||
fcb_make:
|
||||
;--------
|
||||
call fcb_path_prep ; build pathname
|
||||
mov ax,MS_X_CREAT
|
||||
jmps fcb_open_make_common
|
||||
|
||||
fcb_open:
|
||||
;--------
|
||||
call fcb_path_prep ; build pathname
|
||||
mov ax,MS_X_OPEN
|
||||
fcb_open_make_common:
|
||||
mov fcb_pb+6,DHM_RW+DHM_FCB ; open as an FCB for read/write
|
||||
call fcb_fdos ; lets try and open the file
|
||||
jnc fcb_open10 ; skip if we can't
|
||||
ret
|
||||
fcb_open10:
|
||||
call ifn2dhndl ; ES:BX -> DHNDL_ we have opened
|
||||
push ds
|
||||
push es ! push bx ; save DHNDL_
|
||||
call fcb_point ; ES:BX = FCB
|
||||
pop si ! pop ds ; DS:SI -> DHNDL_
|
||||
mov es:MSF_IFN[bx],al ; store IFN away
|
||||
mov es:MSF_BLOCK[bx],0 ; current block number
|
||||
mov es:MSF_RECSIZE[bx],128 ; current logical record size
|
||||
call fcb_update ; update misc changing fields
|
||||
mov ax,ds:DHNDL_DEVOFF[si]
|
||||
mov es:word ptr MSF_DEVPTR[bx],ax
|
||||
mov ax,ds:DHNDL_DEVSEG[si]
|
||||
mov es:word ptr MSF_DEVPTR+2[bx],ax
|
||||
mov ax,ds:DHNDL_BLK1[si]
|
||||
mov es:MSF_BLOCK1[bx],ax
|
||||
mov al,ds:DHNDL_ATTR[si]
|
||||
mov es:MSF_IOCTL[bx],al
|
||||
mov al,es:MSF_DRIVE[bx] ; get drive from FCB
|
||||
dec al ; was absolute drive specified ?
|
||||
jns fcb_open20 ; if so use it
|
||||
mov al,ss:current_dsk ; else use default drive
|
||||
fcb_open20:
|
||||
inc al ; make drive 1 rather than 0 based
|
||||
mov es:MSF_DRIVE[bx],al ; drive code
|
||||
if 0
|
||||
test ds:DHNDL_DATRB[si],DA_VOLUME
|
||||
else
|
||||
test ss:fcb_pb+8,DA_VOLUME
|
||||
endif
|
||||
pop ds
|
||||
jnz fcb_close ; don't leave VOL label's open
|
||||
xor bx,bx ; no errors !
|
||||
ret
|
||||
|
||||
|
||||
fcb_update:
|
||||
;----------
|
||||
; On Entry:
|
||||
; DS:SI -> DHNDL_
|
||||
; ES:BX -> FCB
|
||||
; On Exit:
|
||||
; DATE/TIME/SIZE/DBLK/DCNT fields updated
|
||||
;
|
||||
mov ax,ds:DHNDL_TIME[si]
|
||||
mov es:MSF_TIME[bx],ax
|
||||
mov ax,ds:DHNDL_DATE[si]
|
||||
mov es:MSF_DATE[bx],ax
|
||||
mov ax,ds:DHNDL_SIZELO[si]
|
||||
mov es:MSF_SIZE[bx],ax
|
||||
mov ax,ds:DHNDL_SIZEHI[si]
|
||||
mov es:MSF_SIZE+2[bx],ax
|
||||
mov ax,ds:DHNDL_DBLK[si]
|
||||
mov es:MSF_DBLK[bx],ax
|
||||
mov al,ds:DHNDL_DCNTLO[si]
|
||||
mov ah,ds:DHNDL_DCNTHI[si]
|
||||
mov es:MSF_DCNT[bx],ax
|
||||
ret
|
||||
|
||||
fcb_close:
|
||||
;---------
|
||||
; close file (DOS function 10h)
|
||||
call fcb_point ; ES:BX -> FCB
|
||||
mov al,0FFh
|
||||
cmp al,es:MSF_IFN[bx] ; is it a multiple close ?
|
||||
je fcb_fdos_common10 ; don't re-open for this...
|
||||
call fcb_handle_vfy ; verify we have a sensible handle
|
||||
mov es:MSF_IFN[bx],al ; mark FCB as closed (it will be)
|
||||
mov ax,MS_X_CLOSE ; now close it
|
||||
; jmps fcb_fdos_common
|
||||
|
||||
fcb_fdos_common:
|
||||
;---------------
|
||||
call fcb_fdos ; make the FDOS do the work
|
||||
jc fcb_fdos_common20 ; return any error codes
|
||||
fcb_fdos_common10:
|
||||
xor bx,bx ; else return zero
|
||||
fcb_fdos_common20:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
fcb_rename:
|
||||
;----------
|
||||
call fcb_path_prep
|
||||
call fcb_path2_prep
|
||||
mov ax,MS_X_RENAME ; it's a rename
|
||||
jmps fcb_fdos_common
|
||||
|
||||
fcb_delete:
|
||||
;----------
|
||||
call fcb_path_prep
|
||||
mov ax,MS_X_UNLINK ; it's a delete
|
||||
jmps fcb_fdos_common
|
||||
|
||||
|
||||
fcb_first:
|
||||
;---------
|
||||
call fcb_path_prep ; prepare pathname
|
||||
mov ax,MS_X_FIRST ; we want to search 1st
|
||||
jmps fcb_search_common
|
||||
|
||||
fcb_next:
|
||||
;--------
|
||||
call fcb_restore_search_state
|
||||
mov ax,MS_X_NEXT
|
||||
fcb_search_common:
|
||||
call fcb_search ; 0 of OK, otherwise ED_..
|
||||
jc fcb_search_common10
|
||||
call fcb_save_search_state ; save sucessful state
|
||||
xor bx,bx ; return code in BX
|
||||
fcb_search_common10:
|
||||
ret
|
||||
|
||||
|
||||
fcb_setrecord:
|
||||
;-------------
|
||||
call fcb_point ; ES:BX -> FCB
|
||||
mov ax,128 ; multiply current block by 128
|
||||
mul es:MSF_BLOCK[bx] ; to give current record number
|
||||
xor cx,cx
|
||||
mov cl,es:MSF_CR[bx] ; Add in the current record
|
||||
add ax,cx ; to DX:AX to give the
|
||||
adc dx,0 ; relative record
|
||||
mov es:MSF_RR[bx],ax ; save the result
|
||||
mov es:MSF_RR2[bx],dl
|
||||
xor bx,bx ; we did OK
|
||||
ret
|
||||
|
||||
fcb_write:
|
||||
;---------
|
||||
mov ax,MS_X_WRITE ; make it a write
|
||||
jmps fcb_seq_rw
|
||||
|
||||
fcb_read:
|
||||
;--------
|
||||
mov ax,MS_X_READ ; make it a read
|
||||
fcb_seq_rw:
|
||||
call fcb_handle_vfy ; verify we have a sensible handle
|
||||
push ax ; save the operation
|
||||
call fcb_get_count ; AX = bytes to read
|
||||
push ax ; save byte count
|
||||
call fcb_seek_seq ; Seek to position in the file
|
||||
pop cx ; recover byte to xfer
|
||||
pop ax ; and the Operation Code
|
||||
jc fcb_seq_rw10
|
||||
call fcb_rw ; do the Op
|
||||
jc fcb_seq_rw10
|
||||
push bx ; save the error code
|
||||
call fcb_update_seq ; update FCB filepos
|
||||
pop bx ; recover error
|
||||
fcb_seq_rw10:
|
||||
ret
|
||||
|
||||
fcb_rw:
|
||||
; On Entry:
|
||||
; AX = operation code
|
||||
; CX = count
|
||||
; fcb_pb+2 = IFN
|
||||
; On Exit:
|
||||
; BX = error code
|
||||
les dx,ss:dword ptr dma_offset
|
||||
add cx,dx ; see if we overflow
|
||||
jc fcb_rw20
|
||||
sub cx,dx ; count back to normal
|
||||
push cx ; save target count
|
||||
mov fcb_pb+4,dx
|
||||
mov fcb_pb+6,es ; setup buffer address
|
||||
mov fcb_pb+8,cx ; and target count
|
||||
call fcb_fdos ; ask the FDOS to do the read/write
|
||||
jc fcb_rw10 ; we got a real error...
|
||||
push ds
|
||||
push es
|
||||
mov ax,fcb_pb+2 ; get IFN
|
||||
call ifn2dhndl ; ES:BX -> DHNDL_ we have open
|
||||
push es ! push bx ; save DHNDL_
|
||||
call fcb_point ; ES:BX = FCB
|
||||
pop si ! pop ds ; DS:SI -> DHNDL_
|
||||
call fcb_update ; update file size/time-stamp
|
||||
pop es
|
||||
pop ds
|
||||
pop ax ; recover target count
|
||||
mov cx,fcb_pb+8 ; we xfered this much
|
||||
cmp cx,ax ; did we xfer enough
|
||||
jb fcb_rw30 ; nope..
|
||||
xor bx,bx ; xfer went OK
|
||||
ret
|
||||
|
||||
fcb_rw10:
|
||||
pop ax ; discard target count
|
||||
ret
|
||||
|
||||
fcb_rw20:
|
||||
; Our DTA is too small - return 2
|
||||
mov bx,2 ; indicate the DTA is too small
|
||||
; stc ; error - don't update FCB
|
||||
ret
|
||||
|
||||
fcb_rw30:
|
||||
; We have some form of EOF - lets look into it
|
||||
call fcb_point ; ES:BX = FCB
|
||||
mov bx,es:MSF_RECSIZE[bx] ; BX = record size
|
||||
mov ax,cx
|
||||
xor dx,dx ; DX:AX = bytes xfer'd
|
||||
div bx ; did we xfer a complete
|
||||
test dx,dx ; number of records ?
|
||||
jz fcb_rw40 ; if so return 1
|
||||
; Partial data was read - fill out with zero's and return 3
|
||||
inc ax ; allow for incomplete record
|
||||
push ax ; save rounded up xfer count
|
||||
les di,ss:dword ptr dma_offset
|
||||
add di,cx ; point to 1st byte after xfer
|
||||
mov cx,bx ; this many in a record
|
||||
sub cx,dx ; so this many weren't xfer'd
|
||||
xor ax,ax ; fill them with zero's
|
||||
rep stosb ; zap the bytes we didn't xfer to
|
||||
pop ax ; recover xfer count
|
||||
mul bx ; and work out # bytes xfered
|
||||
xchg ax,cx ; return bytes in CX
|
||||
mov bx,3 ; indicate EOF (partial read)
|
||||
; clc ; update FCB
|
||||
ret
|
||||
|
||||
fcb_rw40:
|
||||
; No Data was xfered - return 1
|
||||
mov bx,1 ; indicate EOF (no data read)
|
||||
; clc ; update FCB
|
||||
ret
|
||||
|
||||
fcb_writerand:
|
||||
;-------------
|
||||
mov ax,MS_X_WRITE ; make it a write
|
||||
jmps fcb_random_rw
|
||||
|
||||
fcb_readrand:
|
||||
;------------
|
||||
mov ax,MS_X_READ ; make it a read
|
||||
fcb_random_rw:
|
||||
call fcb_handle_vfy ; check the handle is OK
|
||||
push ax ; save the code
|
||||
call fcb_get_count ; AX = bytes to read
|
||||
push ax ; save byte count
|
||||
xor cx,cx ; cause update of seq posn from
|
||||
call fcb_update_rr ; random record position
|
||||
call fcb_seek_rr ; Seek to position in the file
|
||||
pop cx ; recover byte to xfer
|
||||
pop ax ; and the Operation Code
|
||||
jc fcb_random_rw10
|
||||
call fcb_rw ; do the Op
|
||||
fcb_random_rw10:
|
||||
ret
|
||||
|
||||
|
||||
fcb_writeblk:
|
||||
;------------
|
||||
mov ax,MS_X_WRITE ; make it a write
|
||||
jmps fcb_block_rw
|
||||
|
||||
fcb_readblk:
|
||||
;-----------
|
||||
mov ax,MS_X_READ ; make it a read
|
||||
fcb_block_rw:
|
||||
call fcb_handle_vfy ; check the handle is OK
|
||||
push ax ; save the code
|
||||
call fcb_get_count ; AX = bytes per record, CX = # records
|
||||
xchg ax,cx ; CX = bytes per record
|
||||
mul cx ; AX = bytes to xfer
|
||||
test dx,dx ; more than 64K ?
|
||||
jz fcb_block_rw10 ; then we should truncate it
|
||||
mov ax,15 ; AX = handy mask
|
||||
cwd ; DX = 0
|
||||
and ax,ss:dma_offset ; get dma offset for para
|
||||
not ax ; DX/AX = maximum bytes we can xfer
|
||||
div cx ; AX = maximum blocks we can xfer
|
||||
mul cx ; AX = bytes to xfer (now < 64K)
|
||||
fcb_block_rw10:
|
||||
push ax ; save byte count
|
||||
call fcb_seek_rr ; Seek to position in the file
|
||||
pop cx ; recover byte to xfer
|
||||
pop ax ; and the Operation Code
|
||||
jc fcb_block_rw20
|
||||
call fcb_rw ; do the Op
|
||||
jc fcb_block_rw20
|
||||
push bx ; save the error code
|
||||
call fcb_update_rr ; update FCB filepos, get records xferd
|
||||
mov bx,2[bp] ; BX -> parameter block
|
||||
xchg cx,6[bx] ; update amount xfered
|
||||
sub cx,6[bx] ; CX = # we didn't xfer (normally 0)
|
||||
pop bx ; recover (possible) error
|
||||
jcxz fcb_block_rw20 ; skip if we read all we wanted to
|
||||
test bx,bx ; did we have a partial read for
|
||||
jnz fcb_block_rw20 ; a reason like EOF ?
|
||||
mov bx,2 ; no, we must have truncated it
|
||||
fcb_block_rw20:
|
||||
ret
|
||||
|
||||
|
||||
fcb_size:
|
||||
;--------
|
||||
call fcb_path_prep
|
||||
mov ax,MS_X_CHMOD ; it's a get info
|
||||
mov fcb_pb+6,0
|
||||
call fcb_fdos
|
||||
jc fcb_size40
|
||||
call fcb_point ; ES:BX = FCB
|
||||
mov cx,es:MSF_RECSIZE[bx] ; get the record size
|
||||
test cx,cx ; is it non-zero ?
|
||||
jnz fcb_size10 ; if not
|
||||
mov cx,128 ; make it 128 bytes
|
||||
fcb_size10:
|
||||
mov ax,fcb_pb+10
|
||||
mov dx,fcb_pb+12 ; DX:AX = file length in bytes
|
||||
call div_32 ; DX:AX = file length in records
|
||||
jcxz fcb_size20 ; was there an overflow
|
||||
add ax,1
|
||||
adc dx,0 ; include an extra record
|
||||
fcb_size20:
|
||||
call fcb_point ; ES:BX = FCB
|
||||
mov es:MSF_RR[bx],ax ; low word of size
|
||||
mov es:MSF_RR2[bx],dl ; hi byte of size
|
||||
cmp es:MSF_RECSIZE[bx],64 ; if record size < 64 bytes
|
||||
jae fcb_size30 ; then we use a 4 byte
|
||||
mov es:MSF_RR2+1[bx],dh ; random record position
|
||||
fcb_size30:
|
||||
xor bx,bx ; good return
|
||||
fcb_size40:
|
||||
ret
|
||||
|
||||
|
||||
; Utility FCB subroutines
|
||||
;========================
|
||||
|
||||
fcb_handle_vfy:
|
||||
;--------------
|
||||
; Verify FCB is valid and open, do not return if it isn't
|
||||
; nb. Called with nothing on stack
|
||||
;
|
||||
; On Entry:
|
||||
; FCB address in parameter block
|
||||
; On Exit:
|
||||
; AX preserved
|
||||
; ES:BX -> FCB (skipping EXT bit if present)
|
||||
; fcb_pb+2 = IFN of handle
|
||||
; On Error - blow away caller and return error in BX
|
||||
;
|
||||
|
||||
; DEBUG - on reopen we could do more checks to ensure we are re-opening the
|
||||
; same file
|
||||
push ax
|
||||
call fcb_point
|
||||
cmp es:MSF_RECSIZE[bx],0
|
||||
jne fcb_handle_vfy10
|
||||
mov es:MSF_RECSIZE[bx],128
|
||||
fcb_handle_vfy10:
|
||||
mov al,es:MSF_IFN[bx] ; get IFN
|
||||
call ifn2dhndl ; ES:BX -> DHNDL_
|
||||
jc fcb_handle_vfy20 ; it must be a valid IFN
|
||||
test es:DHNDL_MODE[bx],DHM_FCB
|
||||
jz fcb_handle_vfy20 ; it must be an FCB..
|
||||
cmp es:DHNDL_COUNT[bx],0
|
||||
jne fcb_handle_vfy30 ; it must also be open..
|
||||
fcb_handle_vfy20:
|
||||
call fcb_point
|
||||
push es:MSF_RECSIZE[bx] ; save current record size
|
||||
push es:MSF_BLOCK[bx] ; save current block number
|
||||
push es ! push bx
|
||||
call fcb_open ; try to re-open the file
|
||||
pop bx ! pop es ; point back at FCB
|
||||
pop es:MSF_BLOCK[bx] ; restore current block number
|
||||
pop es:MSF_RECSIZE[bx] ; restore record size
|
||||
jc fcb_handle_err
|
||||
mov al,es:MSF_IFN[bx] ; get new IFN
|
||||
fcb_handle_vfy30:
|
||||
xor ah,ah
|
||||
mov fcb_pb+2,ax ; set parameter block accordingly
|
||||
call fcb_point ; ES:BX -> MSF_
|
||||
pop ax
|
||||
clc
|
||||
ret
|
||||
|
||||
fcb_handle_err:
|
||||
add sp,2*WORD ; discard AX and near return address
|
||||
cmp ax,ED_HANDLE ; if we have run out of handles then
|
||||
jne fcb_handle_err10 ; say no FCB's, else return error
|
||||
mov ax,ED_NOFCBS
|
||||
fcb_handle_err10:
|
||||
xchg ax,bx ; error code in BX
|
||||
stc
|
||||
ret
|
||||
|
||||
|
||||
fcb_path2_prep:
|
||||
;--------------
|
||||
; On Entry:
|
||||
; FCB address in parameter block
|
||||
; On Exit:
|
||||
; ES:BX -> FCB (skipping EXT bit if present)
|
||||
; fcb_pb+6/8 -> unparse name from FCB
|
||||
;
|
||||
call fcb_point ; point at the FCB
|
||||
mov al,es:MSF_DRIVE[bx] ; get drive
|
||||
add bx,16 ; point at 2nd name in FCB
|
||||
mov di,offset fcb_path2
|
||||
mov fcb_pb+6,di
|
||||
mov fcb_pb+8,ds ; point at buffer we want
|
||||
jmps fcb_path_prep_common
|
||||
|
||||
fcb_path_prep:
|
||||
;-------------
|
||||
; On Entry:
|
||||
; FCB address in parameter block
|
||||
; On Exit:
|
||||
; ES:BX -> FCB (skipping EXT bit if present)
|
||||
; fcb_pb+2/4 -> unparse name from FCB
|
||||
;
|
||||
xor ax,ax ; assume no attribute
|
||||
mov bx,2[bp] ; BX -> parameter block
|
||||
les bx,2[bx] ; ES:BX -> FCB
|
||||
cmp es:MSF_EXTFLG[bx],0ffh ; is it an extended FCB
|
||||
jne fcb_path_prep10
|
||||
or al,es:MSF_ATTRIB[bx] ; we can use file mode from XFCB
|
||||
add bx,7 ; skip EXT bit of FCB
|
||||
fcb_path_prep10:
|
||||
mov fcb_pb+8,ax ; remember the attribute
|
||||
mov al,es:MSF_DRIVE[bx] ; get drive
|
||||
mov di,offset fcb_path
|
||||
mov fcb_pb+2,di
|
||||
mov fcb_pb+4,ds ; point at buffer we want
|
||||
fcb_path_prep_common:
|
||||
dec al ; 0 = default drive
|
||||
jns fcb_path_prep20
|
||||
mov al,current_dsk ; use default drive
|
||||
fcb_path_prep20:
|
||||
push ds
|
||||
push ds ! push es
|
||||
pop ds ! pop es ; ES:DI -> name buffer
|
||||
add al,'A' ; make drive ASCII
|
||||
stosb
|
||||
mov al,':'
|
||||
stosb ; now we have 'd:'
|
||||
lea si,MSF_NAME[bx] ; DS:SI -> source name
|
||||
movsw ! movsw
|
||||
movsw ! movsw ; copy the name leaving spaces intact
|
||||
mov al,'.'
|
||||
stosb
|
||||
movsw ! movsb ; copy the extention
|
||||
pop ds
|
||||
; jmps fcb_point ; point ES:BX at FCB again
|
||||
|
||||
|
||||
fcb_point:
|
||||
;---------
|
||||
; On Entry:
|
||||
; FCB address in parameter block
|
||||
; On Exit:
|
||||
; ES:BX -> FCB (skipping EXT bit if present)
|
||||
; (All other regs preserved)
|
||||
;
|
||||
mov bx,2[bp] ; BX -> parameter block
|
||||
les bx,2[bx] ; ES:BX -> FCB
|
||||
cmp es:MSF_EXTFLG[bx],0ffh ; is it an extended FCB
|
||||
jne fcb_point10
|
||||
add bx,7 ; skip EXT bit of FCB
|
||||
fcb_point10:
|
||||
ret
|
||||
|
||||
fcb_get_count:
|
||||
;-------------
|
||||
; On Entry:
|
||||
; none
|
||||
; On Exit:
|
||||
; AX = bytes per record
|
||||
; CX = callers CX count
|
||||
; All regs fair game
|
||||
;
|
||||
call fcb_point ; ES:BX -> FCB
|
||||
mov si,2[bp] ; SI -> parameter block
|
||||
mov cx,6[si] ; CX = count
|
||||
mov ax,es:MSF_RECSIZE[bx] ; get record size
|
||||
ret
|
||||
|
||||
fcb_update_seq:
|
||||
;--------------
|
||||
; On Entry:
|
||||
; CX = byte count actually transferred
|
||||
; On Exit:
|
||||
; CX = record count transferred
|
||||
; All other regs fair game
|
||||
; CR/BLOCK updated with new value
|
||||
;
|
||||
mov ax,cx
|
||||
xor dx,dx ; DX:AX = byte count transfered
|
||||
call fcb_point ; ES:BX -> FCB
|
||||
div es:MSF_RECSIZE[bx] ; make records xfered
|
||||
push ax ; save records xfered
|
||||
xchg ax,cx ; also in CX for later
|
||||
mov ax,128
|
||||
mul es:MSF_BLOCK[bx] ; DX:AX = record of block
|
||||
add ax,cx
|
||||
adc dx,0 ; add in amount just xfered
|
||||
mov cl,es:MSF_CR[bx]
|
||||
xor ch,ch ; now add in CR as a word
|
||||
add ax,cx
|
||||
adc dx,0 ; DX:AX = record
|
||||
mov dh,dl ; DH:AX = record for common code
|
||||
jmps fcb_update_common
|
||||
|
||||
|
||||
fcb_update_rr:
|
||||
;-------------
|
||||
; On Entry:
|
||||
; CX = byte count actually transferred
|
||||
; On Exit:
|
||||
; CX = record count transferred
|
||||
; All other regs fair game
|
||||
; Random Record and CR/BLOCK updated with new value
|
||||
;
|
||||
xchg ax,cx
|
||||
xor dx,dx ; DX:AX = byte count transfered
|
||||
call fcb_point ; ES:BX -> FCB
|
||||
div es:MSF_RECSIZE[bx] ; make records xfered
|
||||
push ax ; save records xfered
|
||||
add es:MSF_RR[bx],ax ; update the RR field
|
||||
adc es:MSF_RR2[bx],0 ; and the overflow
|
||||
mov ax,es:MSF_RR[bx] ; get low part of RR
|
||||
mov dh,es:MSF_RR2[bx] ; and the hi part
|
||||
fcb_update_common:
|
||||
mov dl,ah ; DX will be block number
|
||||
shl al,1 ; get top bit of CR into CY
|
||||
adc dx,dx ; then into DX
|
||||
shr al,1 ; AL = CR (remember mod 128)
|
||||
mov es:MSF_CR[bx],al ; set the CR field
|
||||
mov es:MSF_BLOCK[bx],dx ; and the block field
|
||||
pop cx ; recover records xfered
|
||||
ret
|
||||
|
||||
|
||||
fcb_seek_seq:
|
||||
;------------
|
||||
; Seek to position in file indicated by the RR position
|
||||
; On Entry:
|
||||
; ES:BX -> FCB_
|
||||
; On Exit:
|
||||
; CY clear if no problem, fcb_pb+2=IFN
|
||||
; else
|
||||
; CY set, AX = BX = error code
|
||||
; All other regs fair game
|
||||
;
|
||||
call fcb_point ; ES:BX -> FCB_
|
||||
mov ax,128
|
||||
mul es:MSF_BLOCK[bx] ; get record in DX:AX
|
||||
mov cl,es:MSF_CR[bx]
|
||||
xor ch,ch
|
||||
add ax,cx ; add in CR
|
||||
adc dx,0 ; so DX:AX is really the record
|
||||
push ax ; save low word of record
|
||||
mov ax,dx
|
||||
mul es:MSF_RECSIZE[bx] ; DX:AX = byte offset in file/10000h
|
||||
mov cx,ax ; save the important word
|
||||
pop ax ; recover low word of record
|
||||
jmps fcb_seek_common
|
||||
|
||||
fcb_seek_rr:
|
||||
;-----------
|
||||
; Seek to position in file indicated by the RR position
|
||||
; On Entry:
|
||||
; ES:BX -> FCB_
|
||||
; On Exit:
|
||||
; CY clear if no problem, fcb_pb+2=IFN
|
||||
; else
|
||||
; CY set, AX = BX = error code
|
||||
; All other regs fair game
|
||||
;
|
||||
call fcb_point ; ES:BX -> FCB_
|
||||
mov al,es:MSF_RR2[bx]
|
||||
xor ah,ah
|
||||
mul es:MSF_RECSIZE[bx] ; DX:AX = byte offset in file/10000h
|
||||
mov cx,ax ; save the important word
|
||||
mov ax,es:MSF_RR[bx]
|
||||
fcb_seek_common:
|
||||
mul es:MSF_RECSIZE[bx] ; DX:AX = byte offset in file
|
||||
add dx,cx ; add the two bits together
|
||||
mov fcb_pb+4,ax
|
||||
mov fcb_pb+6,dx ; save position
|
||||
mov fcb_pb+8,0 ; seek from start
|
||||
xor ax,ax
|
||||
mov al,es:MSF_IFN[bx] ; AX = IFN
|
||||
mov fcb_pb+2,ax ; save IFN
|
||||
mov ax,MS_X_LSEEK
|
||||
jmp fcb_fdos ; try and seek to this position
|
||||
|
||||
|
||||
fcb_search:
|
||||
;----------
|
||||
; On Entry:
|
||||
; AX = operation to perform
|
||||
; On Exit:
|
||||
; AX = 0, or ED_ error code (CY set if error)
|
||||
push dma_offset
|
||||
push dma_segment
|
||||
mov dma_offset,offset fcb_search_buf
|
||||
mov dma_segment,ds
|
||||
call fcb_fdos ; do the search
|
||||
pop dma_segment
|
||||
pop dma_offset
|
||||
test ax,ax ; was there an error
|
||||
stc ; assume there was
|
||||
js fcb_search10 ; return the error
|
||||
xor ax,ax ; no problems
|
||||
fcb_search10:
|
||||
ret
|
||||
|
||||
fcb_save_search_state:
|
||||
;---------------------
|
||||
; On entry DS=PCMODE
|
||||
|
||||
call fcb_point
|
||||
lea di,MSF_NAME[bx] ; ES:DI -> FCB name
|
||||
mov si,offset fcb_search_buf
|
||||
lodsb ; get 1st byte = drive info
|
||||
mov cx,20/WORD ; copy 20 bytes to FCB
|
||||
rep movsw ; (the rest of the search template)
|
||||
stosb ; drive info byte follow them
|
||||
|
||||
les di,dword ptr dma_offset ; ES:DI -> search state in DMA address
|
||||
mov si,2[bp] ; SI -> parameter block
|
||||
lds si,2[si] ; DS:SI -> FCB_
|
||||
cmp ds:MSF_EXTFLG[si],0ffh ; extended FCB ?
|
||||
jne fcb_sss10
|
||||
mov cx,7 ; copy extended FCB portions too
|
||||
rep movsb ; we have copied up to name
|
||||
fcb_sss10:
|
||||
stosb ; save drive byte info
|
||||
push di
|
||||
mov al,' ' ; space fill name
|
||||
mov cx,11
|
||||
rep stosb ; all blanks now
|
||||
pop di
|
||||
push ss ! pop ds ; DS:SI -> pathname
|
||||
mov si,offset fcb_search_buf+1Eh
|
||||
|
||||
push di ; unparse knowing name is good
|
||||
mov cx,8 ; length of name field
|
||||
fcb_sss20:
|
||||
lodsb ; treat '.' and '..' specially
|
||||
cmp al,'.' ; is either possible ?
|
||||
jne fcb_sss30 ; no, continue as normal
|
||||
stosb ; copy the '.'
|
||||
loop fcb_sss20 ; go around for another '.'
|
||||
jmps fcb_sss40 ; this name is rubbish!!
|
||||
fcb_sss30:
|
||||
dec si ; forget the non '.'
|
||||
call parse_one ; parse just the name
|
||||
fcb_sss40:
|
||||
pop di
|
||||
add di,8 ; di -> fcb ext field
|
||||
cmp al,'.' ; do we have an extention ?
|
||||
jne fcb_sss50
|
||||
mov cx,3 ; length of ext field
|
||||
push di
|
||||
call parse_one ; parse just extension
|
||||
pop di
|
||||
fcb_sss50:
|
||||
add di,3 ; di -> rest of fcb
|
||||
mov si,offset fcb_search_buf+15h
|
||||
movsb ; copy the attribute field
|
||||
xor ax,ax
|
||||
mov cx,10/WORD
|
||||
rep stosw ; 10 bytes of zeros
|
||||
movsw ; copy time
|
||||
movsw ; copy date
|
||||
mov ax,word ptr srch_buf+21+DBLOCK1
|
||||
stosw ; 1st block
|
||||
movsw ! movsw ; copy filesize
|
||||
ret
|
||||
|
||||
fcb_restore_search_state:
|
||||
;------------------------
|
||||
; On entry DS=PCMODE
|
||||
push ds
|
||||
call fcb_point ; ES:BX -> FCB_
|
||||
push es ! push ds
|
||||
pop es ! pop ds ; swap DS/ES
|
||||
mov di,offset fcb_search_buf+1
|
||||
; ES:DI -> internal state
|
||||
lea si,1[bx] ; DS:SI -> FCB+1
|
||||
mov cx,10
|
||||
rep movsw ; copy info from FCB
|
||||
lodsb ; get "drive" info
|
||||
mov es:fcb_search_buf,al ; it's the 1st byte in the srch state
|
||||
pop ds
|
||||
ret
|
||||
|
||||
fcb_fdos:
|
||||
;--------
|
||||
; Make an FDOS call (NB. We don't have MX here, so it's OK)
|
||||
; Set top bit of remote_call flag so we use IFN's not XFN's
|
||||
; On Entry:
|
||||
; AX = FDOS operation
|
||||
; fcb_pb -> FDOS parameter block
|
||||
; On Exit:
|
||||
; As FDOS call
|
||||
;
|
||||
mov fcb_pb,ax ; save operation type
|
||||
or remote_call,DHM_FCB ; forget about PSP during FCB call
|
||||
mov dx,offset fcb_pb ; DS:DX -> parameter block
|
||||
push ds
|
||||
push bp
|
||||
call fdos_entry ; call the FDOS
|
||||
pop bp
|
||||
pop ds
|
||||
and remote_call,not DHM_FCB ; FCB operation over
|
||||
cmp ax,ED_LASTERROR
|
||||
cmc ; CY set if an error occurred
|
||||
ret
|
||||
|
||||
div_32:
|
||||
; Entry: DX,AX = long dividend
|
||||
; CX = word divisor
|
||||
; Exit: DX,AX = long result
|
||||
; CX = remainder
|
||||
|
||||
jcxz div0 ; divide by 0
|
||||
cmp cx,1
|
||||
je div1 ; divide by 1
|
||||
push di
|
||||
push bx
|
||||
xor bx,bx ; BX = 0
|
||||
xchg ax,bx ; low word in BX, AX = 0
|
||||
xchg ax,dx ; high word in DX:AX
|
||||
push ax ; save high word
|
||||
div cx ; divide high part
|
||||
mov di,ax ; save result
|
||||
mul cx ; AX = even divisor part
|
||||
pop dx ; old high in DX
|
||||
sub dx,ax ; eliminate even part
|
||||
xchg ax,bx ; AX = low word
|
||||
div cx ; low part in AX
|
||||
mov cx,dx ; CX = remainder
|
||||
mov dx,di ; high result in DX
|
||||
pop bx
|
||||
pop di
|
||||
ret
|
||||
|
||||
div0:
|
||||
mov ax,-1
|
||||
mov dx,ax
|
||||
ret
|
||||
div1:
|
||||
dec cx ; CX = remainder = 0
|
||||
ret
|
||||
|
||||
|
||||
PCMODE_DATA DSEG WORD
|
||||
|
||||
extrn fcb_pb:word
|
||||
extrn fcb_path:byte
|
||||
extrn fcb_path2:byte
|
||||
extrn fcb_search_buf:byte
|
||||
|
||||
extrn current_dsk:byte
|
||||
extrn current_psp:word
|
||||
extrn dma_offset:word
|
||||
extrn dma_segment:word
|
||||
extrn machine_id:word
|
||||
extrn remote_call:word
|
||||
extrn srch_buf:byte
|
||||
|
||||
end
|
||||
425
IBMDOS/FDOS.A86
Normal file
425
IBMDOS/FDOS.A86
Normal file
@@ -0,0 +1,425 @@
|
||||
title 'F_DOS - DOS file system'
|
||||
; File : $FDOS.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 ***
|
||||
; $Log$
|
||||
; FDOS.A86 1.23 93/12/15 03:07:08
|
||||
; New ddioif entry point so Int 25/26 bypasses address normalisation
|
||||
; FDOS.A86 1.20 93/09/03 20:25:47
|
||||
; Add "no critical errors" support (int 21/6C)
|
||||
; ENDLOG
|
||||
;
|
||||
; This is the DOS support function of Concurrent DOS 6.0
|
||||
; It is called via BDOS function #113, with DS:DX pointing
|
||||
; to a parameter block. The first word of the parameter
|
||||
; block is the subfunction number, the remainder are
|
||||
; parameters or return values, depending on the function.
|
||||
|
||||
; Date Who Modification
|
||||
; --------- --- ---------------------------------------
|
||||
; ?? Feb 86 Initial version
|
||||
; 7 May 86 speedup MXdisk handling
|
||||
; ?? Oct 86 used separate file handle & descriptors
|
||||
; 5 Nov 86 combined with 5.1 BDOS;
|
||||
; 7 Nov 86 added multiple file search
|
||||
; 8 Nov 86 added open file checking
|
||||
; 9 Nov 86 added lock/unlock code
|
||||
; 14 Nov 86 converted to use new deblocking code
|
||||
; 17 Nov 86 use RWXIOSIF code, select drive for flush
|
||||
; 18 Nov 86 first attempt to support character devices
|
||||
; on WRITE, CLOSE, LSEEK, DATTIM
|
||||
; 19 Nov 86 some WRITE bugs fixed, MOVE implemented
|
||||
; RMDIR redone locally (previously BLACK)
|
||||
; 24 Nov 86 made changes for linked CDOS.CON
|
||||
; 27 Nov 86 added FCB function entries for BLACK.A86
|
||||
; 30 Nov 86 added code to support FUNC13 (DRV_RESET)
|
||||
; 3 Dec 86 added support for CHDIR ("l:=d:\path");
|
||||
; 16 Dec 86 update file time stamp on any write
|
||||
; 23 Jan 86 added support for passwords
|
||||
; 6 Feb 87 added support for IOCTL status
|
||||
; 27 Feb 87 updated FCB r/w code to latest spec
|
||||
; fixed FDOS_CREAT to truncate size to 0L
|
||||
; 2 Mar 87 Changed FUNC62 to BDOS62 to avoid conflict
|
||||
; with the linked PCMODE
|
||||
; 7 Mar 87 changed MF_READ to 0-pad partial FCB records
|
||||
; 17 Mar 87 fixed ES corruption in FCB_TERM code
|
||||
; 29 Apr 87 Fixed CHDIR bug which failed to return an error when
|
||||
; attempting to change to a filename.
|
||||
; May 87 fixed some FCB bugs
|
||||
; 19 May 87 changed password mode for FlexOS compatibility
|
||||
; added IOCTL functions
|
||||
; 4 Jun 87 zeroed current block on DOS FCB open
|
||||
; 14 Jun 87 round up writes at end if > 1 sector and rt. fringe
|
||||
; 19 Jun 87 supported freeing up floating drives
|
||||
; 28 Jul 87 MX moved into individual funcs for DR NET support
|
||||
; 29 Jul 87 WRITE_DEV moved to outside MXdisk
|
||||
; 6 Aug 87 fix some password & partial close problems
|
||||
; IOCTL(0) bug fixed
|
||||
; 10 Aug 87 fixed CURDIR path too long problem
|
||||
; 13 Aug 87 F1',F2' compatibility modes supported
|
||||
; 20 Aug 87 LOCK_REGION fixed
|
||||
; 5 Sep 87 lower case DOS FCBs converted to upper case
|
||||
; 6 Sep 87 free up locked drives on process terminate
|
||||
; 23 Sep 87 support \path1\path2\devname in DEVICE_ASCIZ:
|
||||
; 28 Sep 87 use international upper case on ASCIZ paths
|
||||
; 29 Sep 87 support IOCTL(4), IOCTL(5)
|
||||
; 7 Oct 87 re-init dir entry on CREAT even if existing file
|
||||
; return error if CURDIR can't find parent
|
||||
; 8 Oct 87 don't release handles on disk change
|
||||
; check OPEN_MAX and LOCK_MAX in SYSDAT
|
||||
; 13 Oct 87 allow reduced F_OPEN if W,D password not supplied
|
||||
; 22 Oct 87 support pseudo-networked drives via NET_VEC
|
||||
; 26 Oct 87 use CBLOCK instead of HDSBLK for CP/M FCB check
|
||||
; (can now CHDIR between F_OPEN and F_READ)
|
||||
; 27 Oct 87 reject ".", ".." and " " names on MKDIR, CREAT, MKNEW
|
||||
; 28 Oct 87 fixed OMODE_COMPAT compatibility checks,
|
||||
; call SELECT_HANDLE in VFY_DOS_FCB to support
|
||||
; FCB close after CHDIR
|
||||
; 29 Oct 87 create label in root only, update VLDCNT in DPH
|
||||
; delete label in root only, update VLDCNT in DPH
|
||||
; also update VLDCNT in CREAT and UNLINK
|
||||
; find labels in root if label only search
|
||||
; 2 Nov 87 return ED_PATH if level doesn't exist in PATH_PREP
|
||||
; reject "/path/" as legal ASCIZ specification
|
||||
; 4 Nov 87 fix release_locks -- didn't work if any locks there
|
||||
; test F6' on F_LOCK for file size check
|
||||
; 10 Nov 87 fix F1' compatibility -- test 80h in P_CMOD
|
||||
; support CREAT on file open in compatibility mode
|
||||
; by the calling process
|
||||
; 11 Nov 87 attempt to support multiple compatibility opens
|
||||
; by several processes in read access mode or
|
||||
; deny write/read access modes and still have the
|
||||
; rest of the file sharing working...
|
||||
; use PCM_ROUT as BIN flag for console handles
|
||||
; 12 Nov 87 fix file sharing test on MF_OPEN (HM_FCB)
|
||||
; fix DOS FCB rename of open file (WS 3.x)
|
||||
|
||||
; 19 Nov 87 Release 6.0/2.0
|
||||
; --------- ---------------
|
||||
|
||||
; 21 Nov 87 make NUL device first device in the list
|
||||
; 1 Dec 87 various network fixes (dup, exec, exit, etc.)
|
||||
; 2 Dec 87 implement DOS FCB calls across DR Net
|
||||
; 3 Dec 87 fix CHECK_NOT_OPEN (CALL FILE_UPDATE) (fixes CB86)
|
||||
; 4 Dec 87 pass drive on network FCB calls
|
||||
; 7 Dec 87 supported FCB reads/writes across network (via handles)
|
||||
; 10 Dec 87 fixed month dependant MKDIR bug.
|
||||
; 11 Dec 87 fixed networked CURDIR bug (for SUBST)
|
||||
; 5 Jan 88 don't delete labels via FDOS_UNLINK,
|
||||
; don't access labels via FDOS_CHMOD
|
||||
; 7 Jan 88 make NUL device first device in chain, in SYSDAT
|
||||
; 12 Jan 88 setup MAKE_FLAG in FCB_MAKE_TEST
|
||||
; 15 Jan 88 prevent SUBSTitution of networked drives
|
||||
; 9 Feb 88 temporarily force door open interrupts
|
||||
; add GET_FHND, FREE_FHND for dynamic handle create
|
||||
; 10 Feb 88 update file size in DOS FCB for AutoCAD
|
||||
; 15 Feb 88 update CUR_IFN in OPEN_HANDLE for MF_OPEN FCB setup
|
||||
; 25 Feb 88 pass correct unit to driver on generic IOCTL request
|
||||
; fix removable media check with DOS drivers
|
||||
; 3 Mar 88 permit multiple compatibility mode opens
|
||||
; 9 Mar 88 CHDIR ("d:=") always handled locally
|
||||
; reject CHMOD on character devices
|
||||
; use LUL_ALLOC for lock list allocation
|
||||
; 10 Mar 88 Get PSP_XFNMAX before corrupting ES (RMCOBOL)
|
||||
; 15 Mar 88 split file into three include files
|
||||
; 28 Jul 88 Support PCMODE Private Device List
|
||||
; 29 Jul 88 make PRN=LPT1, AUX=COM1
|
||||
; 27-Feb-89 change PID equate for CDOS, work around RASM bug
|
||||
; ("PID equ RLR" would cause external ref's to PID!)
|
||||
; 29-Jun-89 Split off IOCTL into seperate module
|
||||
; 11-Sep-89 Split off MSNET into seperate module
|
||||
|
||||
eject ! include i:psp.def
|
||||
eject ! include i:modfunc.def
|
||||
eject ! include i:fdos.equ
|
||||
eject ! include rh.equ
|
||||
eject ! include i:msdos.equ
|
||||
eject ! include i:mserror.equ
|
||||
eject ! include i:doshndl.def ; DOS Handle Structures
|
||||
eject ! include i:driver.equ
|
||||
eject ! include i:f52data.def ; DRDOS Structures
|
||||
eject ! include bdos.equ
|
||||
eject
|
||||
|
||||
FD_EXPAND equ 55h
|
||||
|
||||
PCMODE_DATA dseg
|
||||
|
||||
extrn current_ddsc:dword
|
||||
extrn current_device:dword
|
||||
extrn current_dhndl:dword
|
||||
extrn current_dsk:byte ; default drive
|
||||
extrn current_ifn:word
|
||||
extrn current_ldt:dword
|
||||
extrn current_psp:word ; PSP segment
|
||||
extrn dev_root:dword
|
||||
extrn dma_offset:word ; DTA offset
|
||||
extrn dma_segment:word ; DTA segment
|
||||
extrn file_ptr:dword
|
||||
extrn fdos_stub:dword
|
||||
extrn internal_flag:byte
|
||||
extrn ioexerr:byte
|
||||
extrn join_drv:byte
|
||||
extrn last_drv:byte
|
||||
extrn ldt_ptr:dword ; Pointer to LDT's for the drives
|
||||
extrn lock_tables:dword
|
||||
extrn machine_id:word ; remote process
|
||||
extrn name_buf:byte ; 32 byte name buffer
|
||||
extrn nul_device:dword ; NUL in PCMODE data segment
|
||||
extrn owning_psp:word ; remote PSP segment
|
||||
extrn phys_drv:byte
|
||||
extrn remote_call:word ; remote machine flag
|
||||
extrn share_stub:dword
|
||||
extrn srch_buf:byte
|
||||
extrn pri_pathname:byte
|
||||
extrn sec_pathname:byte
|
||||
extrn temp_ldt:byte
|
||||
extrn unlock_tables:dword
|
||||
extrn WindowsHandleCheck:byte
|
||||
extrn net_delay:word
|
||||
|
||||
if KANJI
|
||||
extrn DBCS_tbl:word ; Double Byte Character Table
|
||||
endif
|
||||
|
||||
BDOS_DATA dseg word
|
||||
|
||||
extrn adrive:byte
|
||||
extrn cur_dma:word
|
||||
extrn cur_dma_seg:word
|
||||
extrn mult_sec:word
|
||||
extrn rwmode:byte
|
||||
extrn valid_flg:byte
|
||||
|
||||
NO_CRIT_ERRORS equ 0100$0000b ; critical error shouldn't be generated
|
||||
; warning - must match PCMODE.EQU
|
||||
|
||||
extrn fdrwflg:byte
|
||||
extrn chdblk:word
|
||||
extrn dcnt:word
|
||||
extrn dirp:word
|
||||
extrn dirperclu:word
|
||||
extrn finddfcb_mask:word
|
||||
extrn hdsaddr:word
|
||||
extrn intl_xlat:dword
|
||||
extrn lastcl:word
|
||||
extrn logical_drv:byte
|
||||
extrn pblock:dword
|
||||
extrn physical_drv:byte
|
||||
extrn req_hdr:byte
|
||||
|
||||
|
||||
extrn yearsSince1980:word
|
||||
extrn month:byte
|
||||
extrn dayOfMonth:byte
|
||||
extrn hour:byte
|
||||
extrn minute:byte
|
||||
extrn second:byte
|
||||
|
||||
orig_drive dw 0
|
||||
path_drive dw 0
|
||||
|
||||
|
||||
Public fdos_hds_blk, fdos_hds_root, fdos_hds_drv
|
||||
|
||||
fdos_hds rw 0 ; temporary HDS that we make up
|
||||
fdos_hds_blk dw 0
|
||||
fdos_hds_root dw 0
|
||||
fdos_hds_drv db 0
|
||||
|
||||
HDS_LEN equ offset $ - offset fdos_hds
|
||||
|
||||
saved_hds rw 0 ; saved HDS on F_DOS rename
|
||||
saved_hds_blk dw 0
|
||||
saved_hds_root dw 0
|
||||
saved_hds_drv db 0
|
||||
|
||||
saved_dcnt dw 0 ; saved DCNT on F_DOS rename
|
||||
|
||||
dta_ofl db 0 ; non-zero if read/write > DTA size
|
||||
|
||||
extflg dw 0 ; DOS FCB was extended FCB
|
||||
|
||||
blk dw 0 ; temp variable for cluster #
|
||||
|
||||
attributes db 0 ;fcb interface attributes hold byte
|
||||
|
||||
public info_fcb
|
||||
info_fcb rb 1+8+3 ;local user FCB drive+name+ext
|
||||
|
||||
save_area rb 32 ;save area for dirbuf during rename and
|
||||
;info_fcb during create(mustbe_nolbl)
|
||||
;parental name during chdir
|
||||
|
||||
; local variables for fdos operations
|
||||
|
||||
sp_save dw 0
|
||||
|
||||
fdos_addr dw 0 ; address of F_DOS function
|
||||
|
||||
Public fdos_info, fdos_pb, fdos_ret
|
||||
|
||||
fdos_info rw 3 ; off, seg, size of parameter block
|
||||
fdos_pb rw 7 ; copy of parameter block
|
||||
fdos_ret dw 0 ; return value for function
|
||||
|
||||
if PASSWORD
|
||||
; Password support uses the following data stuctures:
|
||||
;
|
||||
; The global_password field is set by an IOCTL call and remains constant.
|
||||
;
|
||||
; When a password is encountered during parsing a path the ASCII form is
|
||||
; copied into the password_buffer. It is then encrypted and stored in the
|
||||
; local_password field. If a password protected file is encountered then
|
||||
; it's encrypted password is compared with both the global and local passwords.
|
||||
;
|
||||
; During a file/directory create the local_password field is examnined. If
|
||||
; non-zero then this encrypted password is applied to the file, which is given
|
||||
; full protection.
|
||||
;
|
||||
Public global_password
|
||||
global_password dw 0
|
||||
local_password dw 0
|
||||
password_buffer rb 8
|
||||
|
||||
endif
|
||||
|
||||
eject
|
||||
BDOS_CODE cseg
|
||||
|
||||
|
||||
extrn pcmode_dseg:word ; Pointer to System Data Page
|
||||
|
||||
extrn get_ldt:near
|
||||
extrn get_ldt_raw:near
|
||||
extrn islocal:near ; redirector support
|
||||
extrn redir_asciiz_offer:near
|
||||
extrn redir_asciiz_dev_offer:near
|
||||
extrn redir_asciiz_file_offer:near
|
||||
extrn redir_drv_offer:near
|
||||
extrn redir_dhndl_offer:near
|
||||
extrn redir_move_offer:near
|
||||
extrn redir_snext_offer:near
|
||||
|
||||
extrn alloc_cluster:NEAR
|
||||
extrn allocdir:NEAR ; will extend subdirectory if full
|
||||
extrn buffers_check:near
|
||||
extrn discard_all:near
|
||||
extrn close_dev:near ; close character device handle
|
||||
extrn delfat:NEAR
|
||||
extrn fdosrw:near ; read/write from/to disk file
|
||||
extrn finddfcb:NEAR ; find next matching directory entry
|
||||
extrn finddfcbf:NEAR ; find first matching directory entry
|
||||
extrn first_dev:near ; find first matching character device
|
||||
extrn fill_dirbuf:near
|
||||
extrn flush_dirbuf:near
|
||||
extrn flush_drive:near
|
||||
extrn get_ddsc:near
|
||||
extrn getdir:NEAR
|
||||
extrn getnblk:NEAR
|
||||
extrn hshdscrd:near ; discard hashing for drive AL
|
||||
|
||||
extrn mark_ldt_unsure:near
|
||||
extrn redir_build_path:near ; build ASCII path
|
||||
|
||||
extrn open_dev:near ; open character device handle
|
||||
extrn dup_dev:near ; call device driver on handle dup
|
||||
extrn read_dev:near ; read from character device
|
||||
extrn ReadTimeAndDate:near ; read date/time from CLOCK driver
|
||||
extrn blockif:near
|
||||
extrn ddioif:near
|
||||
extrn select_logical_drv:near
|
||||
extrn select_physical_drv:near
|
||||
extrn setenddir:NEAR
|
||||
extrn update_dat:NEAR ; flush dirty data buffers
|
||||
extrn update_ddsc_free:NEAR ; count free blocks on drive
|
||||
extrn update_dir:NEAR ; flush modified directory buffer
|
||||
extrn update_fat:NEAR
|
||||
extrn write_dev:near ; write to character device
|
||||
extrn zeroblk:near ; fill cluster with 0's
|
||||
|
||||
|
||||
eject
|
||||
public bpb2ddsc ; build DDSC from a BPB
|
||||
Public check_slash
|
||||
public dbcs_lead
|
||||
public discard_files ; discard open files (unconditional)
|
||||
public fdos_ED_DRIVE ; Return ED_DRIVE error
|
||||
public fdos_ED_FUNCTION ; Return ED_FUNCTION error
|
||||
public find_dhndl
|
||||
public find_xfn
|
||||
public get_pb2_drive
|
||||
public release_handle ; release file handle
|
||||
public toupper ; upper case a character
|
||||
Public unparse
|
||||
public update_dir_fat ; flush DIR then FAT to disk
|
||||
|
||||
public fdos_getdpb ; 0-disk information
|
||||
public fdos_mkdir ; 1-make directory
|
||||
public fdos_rmdir ; 2-remove directory
|
||||
public fdos_chdir ; 3-change directory
|
||||
public fdos_creat ; 4-create file
|
||||
public fdos_open ; 5-open file
|
||||
public fdos_close ; 6-close file
|
||||
public fdos_read ; 7-read from file
|
||||
public fdos_write ; 8-write to file
|
||||
public fdos_unlink ; 9-delete file
|
||||
public fdos_lseek ; 10-set file pointer
|
||||
public fdos_chmod ; 11-get/set file attributes
|
||||
public fdos_curdir ; 12-get current directory
|
||||
public fdos_first ; 13-find first matching file
|
||||
public fdos_next ; 14-find next matching file
|
||||
public fdos_move ; 15-rename file
|
||||
public fdos_dattim ; 16-get/set file name
|
||||
public fdos_flush ; 17-flush buffers
|
||||
public fdos_mknew ; 18-make new file
|
||||
public fdos_lock ; 19-lock/unlock block
|
||||
public fdos_dup ; 20-duplicate handle
|
||||
public fdos_fdup ; 21-force duplicate handle
|
||||
extrn fdos_fcb:near ; 22-FCB emulation
|
||||
public fdos_exec ; 23-create child PSP
|
||||
extrn fdos_exit:near ; 24-FCB close for PSP
|
||||
public fdos_ddio ; 25-direct disk access
|
||||
extrn fdos_ioctl:near ; 26-IOCTL emulation
|
||||
public fdos_commit ; 27-commit file
|
||||
public fdos_expand ; 28-expand file name
|
||||
public fdos_mkddsc ; 29-build DDSC from BPB
|
||||
public fdos_select ; 30-select drive
|
||||
|
||||
if JOIN
|
||||
Public check_join
|
||||
Public mv_join_root
|
||||
endif
|
||||
|
||||
eject
|
||||
|
||||
eject ! include funcs.fdo
|
||||
eject ! include utils.fdo
|
||||
|
||||
|
||||
END
|
||||
126
IBMDOS/FDOS.DEF
Normal file
126
IBMDOS/FDOS.DEF
Normal file
@@ -0,0 +1,126 @@
|
||||
; File : $FDOS.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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
|
||||
FD_DISKINFO equ 48h
|
||||
FD_FLUSH equ 49h
|
||||
FD_SELECT equ 4Ah
|
||||
FD_EXEC equ 4Bh
|
||||
FD_EXIT equ 4Ch
|
||||
FD_FCB equ 4Dh
|
||||
FD_COMMIT equ 50H
|
||||
FD_NEW equ 51h
|
||||
FD_LOCK equ 52h
|
||||
FD_DDIO equ 54h
|
||||
FD_EXPAND equ 55h
|
||||
FD_REOPEN equ 58h
|
||||
|
||||
FDOS_MAXPARM equ 7 ; Maximum FDOS Parameter Length (WORDS)
|
||||
|
||||
FD_FUNC equ fdos_data
|
||||
|
||||
FD_DRIVE equ fdos_data + 2
|
||||
FD_DPB equ dword ptr fdos_data + 4
|
||||
FD_DPBOFF equ fdos_data + 4
|
||||
FD_DPBSEG equ fdos_data + 6
|
||||
FD_ADJUST equ fdos_data + 8
|
||||
|
||||
FD_NAME equ dword ptr fdos_data + 2
|
||||
FD_NAMEOFF equ fdos_data + 2
|
||||
FD_NAMESEG equ fdos_data + 4
|
||||
|
||||
FD_MODE equ fdos_data + 6
|
||||
|
||||
FD_HANDLE equ fdos_data + 2
|
||||
|
||||
FD_BUF equ dword ptr fdos_data + 4
|
||||
FD_BUFOFF equ fdos_data + 4
|
||||
FD_BUFSEG equ fdos_data + 6
|
||||
|
||||
FD_COUNT equ fdos_data + 8
|
||||
|
||||
FD_OFFSET equ dword ptr fdos_data + 4
|
||||
|
||||
FD_METHOD equ fdos_data + 8
|
||||
|
||||
FD_FLAG equ fdos_data + 6
|
||||
|
||||
FD_ATTRIB equ fdos_data + 8
|
||||
|
||||
FD_PATH equ dword ptr fdos_data + 4
|
||||
FD_PATHOFF equ fdos_data + 4
|
||||
FD_PATHSEG equ fdos_data + 6
|
||||
|
||||
FD_ONAME equ dword ptr fdos_data + 2
|
||||
FD_ONAMEOFF equ fdos_data + 2
|
||||
FD_ONAMESEG equ fdos_data + 4
|
||||
|
||||
FD_NNAME equ dword ptr fdos_data + 10
|
||||
FD_NNAMEOFF equ fdos_data + 10
|
||||
FD_NNAMESEG equ fdos_data + 12
|
||||
|
||||
FD_SFLAG equ fdos_data + 4
|
||||
FD_DATE equ fdos_data + 6
|
||||
FD_TIME equ fdos_data + 8
|
||||
|
||||
FD_LENGTH equ dword ptr fdos_data + 8
|
||||
FD_LFLAG equ word ptr fdos_data + 12
|
||||
|
||||
FD_NEWHND equ fdos_data + 4
|
||||
|
||||
FD_FCBADR equ dword ptr fdos_data + 2
|
||||
FD_FCBOFF equ fdos_data + 2
|
||||
FD_FCBSEG equ fdos_data + 4
|
||||
|
||||
FD_FCBCNT equ fdos_data + 6
|
||||
FD_FCBFUNC equ fdos_data + 8
|
||||
|
||||
FD_PSPSEG equ fdos_data + 2
|
||||
|
||||
FD_BPBOFF equ fdos_data + 2
|
||||
FD_BPBSEG equ fdos_data + 4
|
||||
FD_DDSCOFF equ fdos_data + 6
|
||||
FD_DDSCSEG equ fdos_data + 8
|
||||
|
||||
FD_IOCTLFUNC equ fdos_data + 4
|
||||
FD_IOCTLSTAT equ fdos_data + 6
|
||||
|
||||
FD_NUMOPEN equ fdos_data + 2
|
||||
|
||||
FD_DDIO_DRV_OP equ fdos_data + 2
|
||||
FD_DDIO_NSECTORS equ fdos_data + 4
|
||||
FD_DDIO_STARTLOW equ fdos_data + 6
|
||||
FD_DDIO_STARTHIGH equ fdos_data + 8
|
||||
FD_DDIO_DMAOFF equ fdos_data + 10
|
||||
FD_DDIO_DMASEG equ fdos_data + 12
|
||||
|
||||
227
IBMDOS/FDOS.EQU
Normal file
227
IBMDOS/FDOS.EQU
Normal file
@@ -0,0 +1,227 @@
|
||||
; File : $FDOS.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
|
||||
;
|
||||
; Structure of Buffer Control Blocks
|
||||
; ----------------------------------
|
||||
; These BCBs immediately preceed the data buffers. BCBs are
|
||||
; always shared for all drives and therefore must be big
|
||||
; enough for the largest drive.
|
||||
;
|
||||
|
||||
BCB_NEXT equ word ptr 00h ; link to next buffer
|
||||
BCB_PREV equ word ptr 02h ; link to previous buffer
|
||||
BCB_DRV equ byte ptr 04h ; drive of this buffer or 0FFh
|
||||
BCB_FLAGS equ byte ptr 05h ; buffer flags
|
||||
BCB_REC equ word ptr 06h ; low 16 bits of sector address
|
||||
BCB_REC2 equ byte ptr 08h ; top 8 bits of record address
|
||||
BCB_COPIES equ byte ptr 0Ah ; number of copies to write
|
||||
BCB_SEPARATION equ word ptr 0Bh ; # sectors copies are apart
|
||||
BCB_DDSC equ dword ptr 0Dh ; DWORD ptr to DDSC_
|
||||
BCB_REMOTE equ word ptr 11h ; remote in-use count
|
||||
BCB_DATA equ byte ptr 14h ; buffer data
|
||||
|
||||
BF_ISFAT equ 0002h ; buffer marked as FAT sector
|
||||
BF_ISDIR equ 0004h ; buffer marked as Directory sector
|
||||
BF_ISDAT equ 0008h ; buffer marked as Data sector
|
||||
BF_DIRTY equ 0040h ; buffer marked as modified
|
||||
BF_REMOTE equ 0080h ; buffer is remote
|
||||
|
||||
MAX12 equ 0FF6h ; max. disk size w/ 12-bit media
|
||||
|
||||
; Structure of Hash Control Block
|
||||
; -------------------------------
|
||||
; Each hash control block refers to the hash codes of one
|
||||
; disrectory cluster or a root directory.
|
||||
|
||||
HCB_LINK equ word ptr 0 ; link to next control block
|
||||
HCB_DRV equ byte ptr 2 ; drive for this entry or 0FFh
|
||||
HCB_CLU equ word ptr 4 ; cluster number or 0000 if root
|
||||
HCB_CNT equ word ptr 6 ; number of hashed entries
|
||||
HCB_DATA equ word ptr 8 ; hash buffer data
|
||||
|
||||
|
||||
; Structure of DOS FCB
|
||||
; --------------------
|
||||
; This is hopefully consistent with what DOS stores in an
|
||||
; open file control block for DOS 1.x functions
|
||||
|
||||
MSF_EXTFLG equ byte ptr 0 ; if this is 0xFF, skip 1st 7 byte
|
||||
MSF_ATTRIB equ byte ptr 6 ; file attributes if MSF_EXTFLG
|
||||
MSF_DRIVE equ byte ptr 0 ; 1st byte normally drive code
|
||||
MSF_NAME equ byte ptr 1 ; 8-bit ASCII file name, 11 characters
|
||||
MSF_BLOCK equ word ptr 12 ; current block number
|
||||
MSF_RECSIZE equ word ptr 14 ; current logical record size
|
||||
MSF_SIZE equ word ptr 16 ; 32-bit file size
|
||||
MSF_DATE equ word ptr 20 ; last date stamp
|
||||
MSF_TIME equ word ptr 22 ; last time stamp
|
||||
MSF_IFN equ byte ptr 24 ;; internal file number
|
||||
MSF_IOCTL equ byte ptr 25 ;; file status
|
||||
MSF_BLOCK1 equ word ptr 26 ;; 1st block of file
|
||||
MSF_DBLK equ word ptr 28 ;; directory block
|
||||
MSF_DEVPTR equ dword ptr 28 ;; address of device driver
|
||||
MSF_DCNT equ word ptr 30 ;; directory count
|
||||
MSF_CR equ byte ptr 32 ; current sequential record
|
||||
MSF_RR equ word ptr 33 ; random record address (3 or 4 byte)
|
||||
MSF_RR2 equ byte ptr 35 ; random record overflow
|
||||
|
||||
|
||||
; Structure of DOS DPB
|
||||
; --------------------
|
||||
; The layout of this structure is a guess based on
|
||||
; examples. It is returned by PC MODE on functions 1Fh and
|
||||
; 32h and is required by various disk-related utilities
|
||||
; like disk editors and CHKDSK.
|
||||
|
||||
DDSC_UNIT equ byte ptr 0 ; absolute drive number
|
||||
DDSC_RUNIT equ byte ptr 1 ; relative unit number
|
||||
DDSC_SECSIZE equ word ptr 2 ; sector size in bytes
|
||||
DDSC_CLMSK equ byte ptr 4 ; sectors/cluster - 1
|
||||
DDSC_CLSHF equ byte ptr 5 ; log2 (sectors/cluster)
|
||||
DDSC_FATADDR equ word ptr 6 ; sector address of FAT
|
||||
DDSC_NFATS equ byte ptr 8 ; # of FAT copies
|
||||
DDSC_DIRENT equ word ptr 9 ; size of root directory
|
||||
DDSC_DATADDR equ word ptr 11 ; sector address of cluster #2
|
||||
DDSC_NCLSTRS equ word ptr 13 ; # of clusters on disk
|
||||
DDSC_NFATRECS equ word ptr 15 ; # of sectors per FAT
|
||||
DDSC_DIRADDR equ word ptr 17 ; sector address of root dir
|
||||
DDSC_DEVHEAD equ dword ptr 19 ; device driver header
|
||||
DDSC_DEVOFF equ word ptr 19
|
||||
DDSC_DEVSEG equ word ptr 21
|
||||
DDSC_MEDIA equ byte ptr 23 ; current media byte
|
||||
DDSC_FIRST equ byte ptr 24 ; "drive never accessed" flag
|
||||
DDSC_LINK equ dword ptr 25 ; next drive's DDSC
|
||||
DDSC_BLOCK equ word ptr 29 ; next block to allocate
|
||||
DDSC_FREE equ word ptr 31 ; total free clusters on drive
|
||||
DDSC_LEN equ 33
|
||||
|
||||
|
||||
|
||||
; DELWATCH hooks called by OS
|
||||
|
||||
DELW_RDMASK equ 0 ; delete dir search mask
|
||||
DELW_DELETE equ 2 ; delete this dir entry
|
||||
DELW_FREECLU equ 3 ; free some clusters
|
||||
DELW_FREERD equ 4 ; free root dir entry
|
||||
DELW_SPACE equ 5 ; add "deletes" to free space
|
||||
DELW_NEWDISK equ 7 ; new disk logged in
|
||||
DELW_PURGE equ 14 ; perge pd file
|
||||
DELW_UNDEL equ 15 ; undelete pd file
|
||||
|
||||
; SuperStore hook called by OS
|
||||
|
||||
SSTOR_SPACE equ 10h ; enquire # physical free space
|
||||
|
||||
; Password hooks called by OS
|
||||
|
||||
PASSWD_CREAT equ 20h ; initialise an entry
|
||||
PASSWD_CHMOD equ 21h ; change an entry
|
||||
PASSWD_CHECK equ 22h ; check an entry
|
||||
|
||||
; Share hooks in PCMODE data segment
|
||||
;
|
||||
; These point to a stub which does a "STC, RETF"
|
||||
;
|
||||
|
||||
NUM_SHARE_STUB_ENTRIES equ 15
|
||||
|
||||
S_LOCKS equ DWORD*0 ; share lock/unlock region
|
||||
S_UPDATE equ DWORD*1 ; update DHNDL from share
|
||||
S_RECORD equ DWORD*2 ; update share from DHNDL
|
||||
S_FDOSRW equ DWORD*3 ; validate proposed operation
|
||||
S_DISCARD equ DWORD*4 ; discard all files on drive
|
||||
S_OPEN equ DWORD*5 ; files is opening, remember it
|
||||
S_CLOSE equ DWORD*6 ; files is closing, forget it
|
||||
S_OM_COMPAT equ DWORD*7 ; check open mode compatible
|
||||
S_CLOSE_IF_OPEN equ DWORD*8 ; close if compat open, else deny
|
||||
S_DENY_IF_OPEN equ DWORD*9 ; deny if open shared/by others
|
||||
S_GET_LIST_ENTRY equ DWORD*10 ; get open file list entry
|
||||
S_CLOSE_FILES equ DWORD*11 ; close all files for given PSP/UID
|
||||
|
||||
; struct dirfcb
|
||||
|
||||
DNAME equ byte ptr 0 ;file name & type
|
||||
DATTS equ byte ptr 11
|
||||
DA_RO equ 01h ; 0x01 - read/only
|
||||
DA_HIDDEN equ 02h ; 0x02 - hidden
|
||||
DA_SYSTEM equ 04h ; 0x04 - system
|
||||
DA_VOLUME equ 08h ; 0x08 - volume label
|
||||
DA_DIR equ 10h ; 0x10 - sub-directory
|
||||
DA_ARCHIVE equ 20h ; 0x20 - archive
|
||||
DA_CLUSTER equ 80h ; 0x80 - return starting cluster from search (API extention)
|
||||
DA_DELWATCH equ 80h ; 0x88 - return pending delete files
|
||||
DA_FIXED equ 11011000b ; can't CHMOD label, dir, unused bits
|
||||
DA_CHANGE equ not DA_FIXED ; all others are changeable
|
||||
|
||||
;DATTS2 equ 12 ;CP/M attributes
|
||||
; ; 0x80 - f1' modify default open rules
|
||||
; ; 0x40 - f2' partial close default
|
||||
; ; 0x20 - f3' ignore close checksum errors
|
||||
; ; 0x10 - f4' disable checksums
|
||||
; ; 0x08 - (reserved)
|
||||
; ; 0x04 - DELETE password
|
||||
; ; 0x02 - WRITE password
|
||||
; ; 0x01 - READ password
|
||||
DUNDEL equ 13 ;1st letter of deleted file
|
||||
DPWD equ word ptr 14 ;16-bit password hash code
|
||||
DMODTIME equ word ptr 16 ;delwatch time (hhhhhmmmmmmsssss)
|
||||
DMODDATE equ word ptr 18 ;delwatch date (yyyyyyymmmmddddd)
|
||||
;DRECSIZE equ 16 ;FlexOS record size
|
||||
;DUSER equ 18 ;FlexOS user ID of creator
|
||||
;DGROUP equ 19 ;FlexOS group ID of creator
|
||||
DPWM equ word ptr 20 ;FlexOS access rights
|
||||
DTIME equ 22 ;time (hhhhhmmmmmmsssss)
|
||||
DDATE equ 24 ;date (yyyyyyymmmmddddd)
|
||||
DBLOCK1 equ 26 ;first block in file
|
||||
DSIZE equ 28 ;current file size
|
||||
|
||||
; DOS Media Password Definitions
|
||||
; ------------------------------
|
||||
|
||||
PWM_OWNER equ 000Fh ; PWD Owner mask
|
||||
PWM_GROUP equ 00F0h ; PWD Group mask
|
||||
PWM_WORLD equ 0F00h ; PWD World mask
|
||||
PWM_R equ 0888h ; PWD required for reading
|
||||
PWM_W equ 0444h ; PWD required for writing
|
||||
PWM_E equ 0222h ; PWD req'd for executing
|
||||
PWM_D equ 0111h ; PWD required for deleting
|
||||
PWM_ANY equ PWM_R+PWM_W+PWM_D ; PWD required for anything
|
||||
|
||||
|
||||
; literal constants
|
||||
|
||||
FAT12 equ 00fffh ; 12 bit fat
|
||||
FAT16 equ 0ffffh ; 16 bit fat
|
||||
|
||||
ENDDIR equ 0ffffh ;end of directory
|
||||
|
||||
503
IBMDOS/FIOCTL.A86
Normal file
503
IBMDOS/FIOCTL.A86
Normal file
@@ -0,0 +1,503 @@
|
||||
title 'FDOS IOCTL - DOS file system input/output control'
|
||||
; File : $FIOCTL.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$
|
||||
; FIOCTL.A86 1.18 93/12/09 23:39:17
|
||||
; Move non-inherited bit to correct place in file handle
|
||||
; FIOCTL.A86 1.17 93/11/03 13:38:29
|
||||
; Int 21 4409 return 0x0080 if drive is joined
|
||||
; FIOCTL.A86 1.16 93/11/02 18:04:17
|
||||
; Int21/4400 from file returns AH=0
|
||||
; FIOCTL.A86 1.15 93/09/14 20:03:15
|
||||
; Trust LFLG_PHYSICAL
|
||||
; FIOCTL.A86 1.12 93/06/17 22:11:50
|
||||
; support for ioctl 10/11 query ioctl support
|
||||
; FIOCTL.A86 1.11 93/06/16 16:21:37
|
||||
; Codepage preparation bug fixed
|
||||
; ENDLOG
|
||||
|
||||
; Date Modification
|
||||
; --------- ---------------------------------------
|
||||
; 29 Jun 89 Initial version splits from FDOS
|
||||
; 21 Nov 89 iocE/F use relative unit number
|
||||
; 12 Dec 89 ioc2/3 zero the unused portions of req hdr
|
||||
; save a few bytes in other ioc's while I'm here
|
||||
; 4 Jun 90 default file access permissions and user group support
|
||||
; 5 Jun 90 ioc0/1 tidied up
|
||||
; 12 Jun 90 get_doshndl parameter in BX not AX
|
||||
; 2 Oct 90 net_vec moves to per-VC basis (info held in CCB_)
|
||||
; 13 feb 91 ioc1 tests FHIO_DEV, not HM_DEV, (123 MSNet printing)
|
||||
; 7 may 91 ioc2,ioc3,ioc6,ioc7,iocC destabilised for Lanstatic
|
||||
; by-product is ioc6 for disks returns read-ahead char
|
||||
; in AH
|
||||
; 28 feb 92 ioctl C checks bit 6 not bit 14 in DH_ATTRIB
|
||||
; 3 aug 92 ioctl C/D pass thru' SI/DI
|
||||
; 5 aug 92 substatial ioctl rework saves a few bytes - ioctl
|
||||
; request header now built by PCMODE
|
||||
|
||||
eject ! include i:fdos.equ
|
||||
eject ! include rh.equ
|
||||
eject ! include i:msdos.equ
|
||||
eject ! include i:mserror.equ
|
||||
eject ! include i:doshndl.def ; DOS Handle Structures
|
||||
eject ! include i:driver.equ
|
||||
eject ! include i:f52data.def ; DRDOS Structures
|
||||
eject
|
||||
|
||||
|
||||
PCMODE_DATA dseg BYTE
|
||||
extrn ioctlRH:byte ; request header is build in PCMODE
|
||||
; data area
|
||||
|
||||
BDOS_DATA dseg word
|
||||
extrn fdos_pb:word
|
||||
extrn fdos_ret:word
|
||||
extrn last_drv:byte
|
||||
extrn req_hdr:byte
|
||||
if PASSWORD
|
||||
extrn global_password:word
|
||||
endif
|
||||
|
||||
BDOS_CODE cseg
|
||||
|
||||
extrn local_disk:near
|
||||
extrn device_driver:near
|
||||
extrn block_device_driver:near
|
||||
extrn fdos_error:near
|
||||
extrn fdos_ED_DRIVE:near
|
||||
extrn fdos_ED_FUNCTION:near
|
||||
extrn fdos_read:near
|
||||
extrn get_ddsc:near
|
||||
extrn vfy_dhndl_ptr:near
|
||||
extrn get_pb2_drive:near
|
||||
extrn ioc6_dev:near ; IOCTL(6): input status for device
|
||||
extrn ioc7_dev:near ; IOCTL(7): output status for device
|
||||
extrn vfy_dhndl_ptr:near
|
||||
extrn verify_handle:near
|
||||
extrn reload_registers:near
|
||||
if JOIN
|
||||
extrn get_ldt:near
|
||||
endif
|
||||
if PASSWORD
|
||||
extrn hash_pwd:near
|
||||
endif
|
||||
|
||||
public fdos_ioctl
|
||||
|
||||
eject
|
||||
; INPUT/OUTPUT CONTROL (IOCTL)
|
||||
|
||||
; +----+----+----+----+----+----+----+----+----+----+
|
||||
; | 26 | param | func | request header |
|
||||
; +----+----+----+----+----+----+----+----+----+----+
|
||||
|
||||
|
||||
; entry:
|
||||
; ------
|
||||
; param: handle/drive on some functions
|
||||
; func: sub function (0-A)
|
||||
; request header: far pointer to IOCTL request header
|
||||
|
||||
; exit:
|
||||
; -----
|
||||
; AX: return code or error code ( < 0)
|
||||
; param: return value from some functions
|
||||
|
||||
|
||||
|
||||
ioctl_tbl dw ioctl0 ; 0-get handle status
|
||||
dw ioctl1 ; 1-set handle status
|
||||
dw ioctl2 ; 2-receive control string (handle)
|
||||
dw ioctl3 ; 3-send control string (handle)
|
||||
dw ioctl4 ; 4-receive control string (drive)
|
||||
dw ioctl5 ; 5-send control string (drive)
|
||||
dw ioctl6 ; 6-input status
|
||||
dw ioctl7 ; 7-output status
|
||||
dw ioctl8 ; 8-removable media check
|
||||
dw ioctl9 ; 9-networked drive check
|
||||
dw ioctlA ; A-networked handle check
|
||||
if PASSWORD
|
||||
dw ioctl54 ; B-set global password
|
||||
else
|
||||
dw device_ED_FUNCTION
|
||||
endif
|
||||
dw ioctlC ; C-code page support
|
||||
dw ioctlD ; D-generic IOCTL disk i/o
|
||||
dw ioctlE ; E-get logical drive
|
||||
dw ioctlF ; F-set logical drive
|
||||
dw ioctl10 ; 10-query IOCTL for char devs
|
||||
dw ioctl11 ; 11-query IOCTL for disks
|
||||
|
||||
NUM_IOCTL equ (offset $ - offset ioctl_tbl)/WORD
|
||||
|
||||
|
||||
|
||||
fdos_ioctl:
|
||||
;----------
|
||||
mov bx,2[bp] ; BX -> parameter block
|
||||
mov bx,4[bx] ; get I/O control subfunction
|
||||
cmp bx,NUM_IOCTL ; is it in the supported range?
|
||||
jae device_ED_FUNCTION ; skip if value too large
|
||||
shl bx,1 ; else make it word index
|
||||
jmp ioctl_tbl[bx] ; call the right function
|
||||
device_ED_FUNCTION:
|
||||
mov bx,ED_FUNCTION ; "invalid function"
|
||||
ret
|
||||
|
||||
|
||||
|
||||
ioctl0: ; get device status
|
||||
;------
|
||||
; Note: We store the binary flag for the standard console
|
||||
; handles in the console mode, not in the file handle,
|
||||
; as the handles are shared across all consoles...
|
||||
|
||||
call vfy_dhndl_ptr ; check if good handle
|
||||
mov ax,es:DHNDL_WATTR[bx] ; get attrib from doshndl
|
||||
test ah,DHAT_REMOTE/256
|
||||
mov ah,0 ; files/networks return 0 in AH/DH
|
||||
jnz device_OK ; return attrib if network device
|
||||
test al,DHAT_DEV ; or a file
|
||||
jz device_OK
|
||||
les bx,es:DHNDL_DEVPTR[bx] ; get real device driver address
|
||||
mov ah,es:byte ptr 5[bx] ; get device driver attribute
|
||||
; jmp device_OK
|
||||
|
||||
device_OK:
|
||||
;---------
|
||||
mov bx,2[bp] ; get parameter block address
|
||||
mov 6[bx],ax ; save returned status
|
||||
xor bx,bx ; successful return code
|
||||
ret
|
||||
|
||||
ioctl1: ; set device status
|
||||
;------
|
||||
call vfy_dhndl_ptr ; make sure this is an open handle
|
||||
test es:DHNDL_WATTR[bx],DHAT_DEV
|
||||
jz device_ED_FUNCTION ; can't set status of disk files
|
||||
mov ax,word ptr ioctlRH+14
|
||||
; pick up new device status
|
||||
test ah,ah ; test if high byte is zero
|
||||
jnz device_ED_FUNCTION ; skip if O.K.
|
||||
or al,DHAT_DEV ; make sure it stays a device
|
||||
mov es:DHNDL_ATTR[bx],al ; store ioctl state in doshndl
|
||||
jmps device_OK ; success
|
||||
|
||||
|
||||
ioctl2: ; receive control string (devicehandle)
|
||||
;------
|
||||
ioctl3: ; send control string (device handle)
|
||||
;------
|
||||
ioctlC: ; generic ioctl (device handle)
|
||||
;------
|
||||
ioctl10: ; query ioctl support (device handle)
|
||||
;-------
|
||||
call vfy_dhndl_ptr ; check file handle #
|
||||
call local_disk ; get MXdisk
|
||||
call verify_handle ; make sure the handle is good
|
||||
jnc short_fdos_ED_FUNCTION ; and is for a DEVICE
|
||||
xor cx,cx ; device relative unit # always zero
|
||||
les si,es:DHNDL_DEVPTR[bx] ; ES:SI -> device driver
|
||||
jmps ioc2345CDcommon ; now use common code
|
||||
|
||||
ioctl4: ; receive control string (drive)
|
||||
;------
|
||||
ioctl5: ; send control string (drive)
|
||||
;------
|
||||
ioctlD: ; generic ioctl (drive)
|
||||
;------
|
||||
ioctl11: ; query ioctl support (drive)
|
||||
;-------
|
||||
call local_disk ; get MXdisk, switch stack
|
||||
call get_pb2_ddsc ; get drives DDSC_
|
||||
mov cl,es:DDSC_RUNIT[bx] ; get relative unit #
|
||||
les si,es:DDSC_DEVHEAD[bx] ; ES:SI -> device header
|
||||
; jmps ioctl2345Common ; now use common code
|
||||
|
||||
ioc2345CDcommon:
|
||||
;---------------
|
||||
; On Entry:
|
||||
; ES:SI -> device driver header
|
||||
; CL = media byte (0 if character device)
|
||||
; CH = relative unit (0 if character device)
|
||||
; MXDisk obtained
|
||||
; On Exit:
|
||||
; IOCTL performed
|
||||
;
|
||||
mov ax,fdos_pb+6 ; device driver support required
|
||||
test es:DH_ATTRIB[si],ax ; does device driver support function ?
|
||||
jz short_fdos_ED_FUNCTION
|
||||
push ds
|
||||
push es ! pop ds ; DS:SI -> device driver
|
||||
push ss ! pop es
|
||||
mov bx,offset ioctlRH ; ES:BX -> request header
|
||||
mov es:RH_UNIT[bx],cl ; set relative unit for block devices
|
||||
call device_driver ; call the device driver
|
||||
pop ds ; check for errors on return
|
||||
; jmp fdos_error_check
|
||||
|
||||
fdos_error_check:
|
||||
;-------------
|
||||
; On Entry:
|
||||
; AX = Req Status
|
||||
; On Exit:
|
||||
; SIGN set if an error, AX&BX = Internal DOS error code
|
||||
;
|
||||
test ax,ax ; top bit == 1 if error
|
||||
jns fdos_ioc_ec10 ; skip if no errors
|
||||
xor ah,ah
|
||||
add ax,-ED_PROTECT
|
||||
neg ax
|
||||
jmp fdos_error ; return critical error
|
||||
fdos_ioc_ec10:
|
||||
ret
|
||||
|
||||
; IOCTL subfunctions:
|
||||
|
||||
|
||||
get_pb2_ddsc:
|
||||
;------------
|
||||
; On Entry:
|
||||
; local_disk called, pick us drive from pb2
|
||||
; On Exit:
|
||||
; ES:BX -> DDSC_ for the drive
|
||||
;
|
||||
call get_pb2_drive ; get specified drive
|
||||
cmp al,last_drv ; is it a valid drive
|
||||
ja bad_drive
|
||||
call get_ldt ; ES:BX -> LDT for this drive
|
||||
jc get_pb2_ddsc10 ; no LDT, physical=logical
|
||||
mov ax,es:LDT_FLAGS[bx]
|
||||
test ah,LFLG_NETWRKD/256
|
||||
jnz short_fdos_ED_FUNCTION ; reject network drives
|
||||
test ah,LFLG_PHYSICAL/256
|
||||
jz bad_drive
|
||||
test ah,LFLG_JOINED/256
|
||||
jnz bad_drive ; reject JOIN'd drives
|
||||
mov al,es:LDT_NAME[bx] ; get physical drive from LDT
|
||||
and al,1Fh ; convert to 1 based drive
|
||||
dec ax ; make that zero based
|
||||
get_pb2_ddsc10:
|
||||
call get_ddsc ; ES:BX -> DDSC_
|
||||
jc bad_drive ; or does it?
|
||||
ret
|
||||
|
||||
bad_drive:
|
||||
jmp fdos_ED_DRIVE ; invalid drive specified
|
||||
|
||||
short_fdos_ED_FUNCTION:
|
||||
jmp fdos_ED_FUNCTION
|
||||
|
||||
|
||||
ioctl8: ; removable media check
|
||||
;------
|
||||
call local_disk ; get MXdisk, switch stack
|
||||
call get_pb2_ddsc ; get drives DDSC_
|
||||
push ds
|
||||
lds si,es:DDSC_DEVHEAD[bx] ; DS:SI -> device driver
|
||||
test ds:DH_ATTRIB[si],DA_REMOVE
|
||||
pop ds ; do we support the check ?
|
||||
jz short_fdos_ED_FUNCTION ; if we don't then don't ask
|
||||
mov req_hdr,RH15_LEN
|
||||
mov req_hdr+2,CMD_FIXED_MEDIA
|
||||
call block_device_driver ; call the device driver
|
||||
js short_fdos_ED_FUNCTION
|
||||
and ax,RHS_BUSY ; BUSY bit set if permanent - we just
|
||||
xchg ah,al ; need to get bit in the right place
|
||||
shr ax,1 ; now 1 if permanent media
|
||||
mov fdos_pb+6,ax ; return status removable (=0)
|
||||
ioctl8_10:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
ioctl6: ; file input status
|
||||
;------
|
||||
call vfy_dhndl_ptr ; make sure this is an open handle
|
||||
mov ax,es:DHNDL_WATTR[bx]
|
||||
test ax,DHAT_REMOTE
|
||||
jnz ioctl6_10 ; always ask networked handles
|
||||
test ax,DHAT_DEV
|
||||
jz ioctl6_10 ; files are always askable
|
||||
jmp ioc6_dev
|
||||
|
||||
ioctl6_10: ; disk files/network devices
|
||||
push es:DHNDL_POSLO[bx] ; save current position in file
|
||||
push es:DHNDL_POSHI[bx] ; so we can read ahead
|
||||
push es
|
||||
push bx ; save DHNDL_ too..
|
||||
push bp ; save stack frame
|
||||
mov si,2[bp] ; SI -> parameter block
|
||||
mov ax,1
|
||||
push ax ; read 1 byte ahead
|
||||
push ds ; use fdos_pb as read-ahead
|
||||
lea ax,6[si] ; buffer
|
||||
push ax
|
||||
push ds:word ptr 2[si] ; user file number
|
||||
mov ax,MS_X_READ ; READ function #, so we create
|
||||
push ax ; a dummy fdos_pb
|
||||
mov bx,sp ; SS:BX -> dummy fdos_pb
|
||||
mov cx,offset ioctl6_20 ; CX -> return address
|
||||
push cx ; Return to here
|
||||
push ss ; save parameter segment
|
||||
push bx ; save parameter offset
|
||||
push ax ; save sub-function
|
||||
mov bp,sp ; SS:BP -> working variables
|
||||
call fdos_read ; make FDOS_READ do the hard word
|
||||
add sp,4*WORD ; discard param's on stack
|
||||
ioctl6_20:
|
||||
add sp,4*WORD ; discard most of dummy fdos_pb
|
||||
pop cx ; return # read
|
||||
cmp bx,ED_LASTERROR ; did we succeed ?
|
||||
jb ioctl6_30 ; if so we can trust # read
|
||||
xor cx,cx ; else in error assume nothing
|
||||
ioctl6_30:
|
||||
pop bp ; recover stack frame
|
||||
pop bx ; rewind DHNDL_POS to where
|
||||
pop es
|
||||
pop es:DHNDL_POSHI[bx] ; it was before we started
|
||||
pop es:DHNDL_POSLO[bx]
|
||||
mov ax,1a00h ; assume not ready
|
||||
jcxz ioctl6_40
|
||||
dec ax ; AL = FF, ie. ready
|
||||
mov si,2[bp] ; SI -> parameter block
|
||||
mov ah,ds:byte ptr 6[si] ; get character we read
|
||||
ioctl6_40:
|
||||
jmp device_OK
|
||||
|
||||
|
||||
ioctl7: ; file output status
|
||||
;------
|
||||
call vfy_dhndl_ptr ; make sure this is an open handle
|
||||
mov ax,0FFh ; assume it's networked/disk
|
||||
mov dx,es:DHNDL_WATTR[bx]
|
||||
test dx,DHAT_REMOTE
|
||||
jnz ioctl6_40 ; networked handles are always ready
|
||||
test dx,DHAT_DEV
|
||||
jz ioctl6_40 ; files are always ready
|
||||
jmp ioc7_dev ; devices we ask...
|
||||
|
||||
|
||||
|
||||
ioctl9: ; networked drive check
|
||||
;------
|
||||
call local_disk ; get disk semaphore
|
||||
call get_pb2_drive ; get specified drive
|
||||
call get_ldt ; ES:BX -> LDT for this drive
|
||||
jc ioctl940
|
||||
mov ax,es:LDT_FLAGS[bx]
|
||||
test ah,LFLG_NETWRKD/256
|
||||
jz ioctl910
|
||||
if 1
|
||||
mov ax,1000h ; return drive as remote
|
||||
else
|
||||
les di,es:LDT_PDT[bx] ; pick up network internal pointer
|
||||
mov ax,es:4[di] ; pick up garbage
|
||||
or ah,10h ; return drive as remote
|
||||
endif
|
||||
jmps ioctl930
|
||||
|
||||
ioctl910:
|
||||
test ah,LFLG_PHYSICAL/256
|
||||
jz ioctl940
|
||||
test ah,LFLG_SUBST/256
|
||||
xchg ax,dx ; save flags
|
||||
mov ax,8000h ; assume it's SUBST'd
|
||||
jnz ioctl920
|
||||
test dh,LFLG_JOINED/256
|
||||
xchg al,ah ; assume it's JOIN'd
|
||||
jnz ioctl930
|
||||
xor ax,ax ; clear if not
|
||||
ioctl920:
|
||||
push ax
|
||||
call get_pb2_ddsc ; get drives DDSC_
|
||||
pop ax
|
||||
les si,es:DDSC_DEVHEAD[bx] ; ES:SI -> device driver
|
||||
or ax,es:4[si] ; get device attributes
|
||||
ioctl930:
|
||||
mov fdos_pb+6,ax ; return updated status
|
||||
ret
|
||||
|
||||
ioctl940:
|
||||
jmp fdos_ED_DRIVE ; return ED_DRIVE error
|
||||
|
||||
|
||||
ioctlA: ; networked handle check
|
||||
;------
|
||||
call vfy_dhndl_ptr
|
||||
mov ax,es:DHNDL_WATTR[bx]
|
||||
jmp device_OK ; return attributes
|
||||
|
||||
|
||||
ioctlE:
|
||||
;------
|
||||
call local_disk
|
||||
mov al,CMD_GET_DEVICE ; get logical device
|
||||
jmps iocEFcommon ; common code for IOCTL(E)/IOCTL(F)
|
||||
|
||||
ioctlF:
|
||||
;------
|
||||
call local_disk
|
||||
mov al,CMD_SET_DEVICE ; set logical device
|
||||
iocEFcommon:
|
||||
mov req_hdr,RH24_LEN
|
||||
mov req_hdr+2,al
|
||||
call get_pb2_ddsc ; get drives DDSC_
|
||||
inc ax ; make drive one-relative
|
||||
mov req_hdr+13,al ; set this as new drive
|
||||
xor ax,ax ; assume not supported
|
||||
push ds
|
||||
lds si,es:DDSC_DEVHEAD[bx] ; does device driver support function ?
|
||||
test ds:DH_ATTRIB[si],DA_GETSET
|
||||
pop ds
|
||||
jz iocF_single ; skip if not supported
|
||||
call block_device_driver ; call the device driver
|
||||
call fdos_error_check ; return any errors
|
||||
mov al,req_hdr+1 ; get returned drive
|
||||
iocF_single: ; AX = return value
|
||||
mov ah,7
|
||||
mov fdos_pb+6,ax ; return the drive
|
||||
ret
|
||||
|
||||
if PASSWORD
|
||||
|
||||
ioctl54: ; set global password
|
||||
;-------
|
||||
call local_disk ; get the MX disk
|
||||
push ds
|
||||
lds si,dword ptr ioctlRH+14
|
||||
call hash_pwd ; encrypt new default password
|
||||
pop ds
|
||||
mov global_password,ax
|
||||
ret
|
||||
|
||||
endif
|
||||
|
||||
end
|
||||
2394
IBMDOS/FUNCS.FDO
Normal file
2394
IBMDOS/FUNCS.FDO
Normal file
File diff suppressed because it is too large
Load Diff
1574
IBMDOS/HEADER.A86
Normal file
1574
IBMDOS/HEADER.A86
Normal file
File diff suppressed because it is too large
Load Diff
541
IBMDOS/HISTORY.A86
Normal file
541
IBMDOS/HISTORY.A86
Normal file
@@ -0,0 +1,541 @@
|
||||
; File : $HISTORY.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
|
||||
;
|
||||
; DOSPLUS Command Line Editor Routines
|
||||
;
|
||||
|
||||
include pcmode.equ
|
||||
include i:msdos.equ
|
||||
include i:char.def
|
||||
include i:cmdline.equ
|
||||
|
||||
|
||||
|
||||
PCM_HISTORY CSEG
|
||||
|
||||
public init_history, save_history
|
||||
public del_history_buffers, del_cur_history_buffer
|
||||
public prev_cmd, next_cmd, match_cmd, search_cmd
|
||||
public prev_word, next_word, match_word
|
||||
public goto_eol
|
||||
public del_bol
|
||||
public deln_word
|
||||
|
||||
extrn next_char:near
|
||||
extrn save_line:near
|
||||
extrn space_out:near
|
||||
extrn bs_out:near
|
||||
extrn goto_bol:near
|
||||
extrn del_eol:near
|
||||
extrn del_line:near
|
||||
extrn char_info:near
|
||||
extrn put_string:near
|
||||
extrn prev_w20:near
|
||||
extrn deln_w10:near
|
||||
|
||||
init_history:
|
||||
;------------
|
||||
; On Entry:
|
||||
; SS:BP -> history structure
|
||||
; On Exit:
|
||||
; SS:SP filled in with appropriate history buffer
|
||||
; Preserve DX
|
||||
;
|
||||
push ds
|
||||
push es
|
||||
push ss
|
||||
pop es
|
||||
lea di,RL_HIST_SEG ; point at history buffer variables
|
||||
mov si,offset histbuf1 ; assume root buffer
|
||||
test RL_FLAGS,RLF_INROOT ; root task after all?
|
||||
jnz init_history10 ; if not we need to switch
|
||||
mov si,offset histbuf2 ; application buffer
|
||||
init_history10:
|
||||
movsw ; copy the seg
|
||||
lodsw ; get overall length
|
||||
sub ax,2*WORD ; last two words contain pointers
|
||||
stosw ; save the working length
|
||||
xchg ax,si ; SI -> saved buffer positions
|
||||
mov ds,RL_HIST_SEG ; in the buffer segment
|
||||
movsw ; update save and
|
||||
movsw ; recall positions
|
||||
pop es
|
||||
pop ds
|
||||
ret
|
||||
|
||||
|
||||
save_history:
|
||||
;------------
|
||||
; We are exiting from READLINE - if line has been modified save the
|
||||
; current line and update our pointers.
|
||||
;
|
||||
test dx,dx ; skip update of sav/recall pointers
|
||||
jz save_history30 ; if empty line
|
||||
call save_current ; save away current command line
|
||||
mov di,RL_HIST_SAVE ; start with the old one
|
||||
call find_current_hist ; wrap it if we need to
|
||||
call find_next_null ; find end of "new" command
|
||||
inc di ; onto next character
|
||||
cmp di,RL_HIST_SIZE ; do we need to wrap ?
|
||||
jb save_history10
|
||||
xor di,di ; wrap the line
|
||||
save_history10:
|
||||
mov RL_HIST_SAVE,di ; update "save" pointer
|
||||
test RL_FLAGS,RLF_DIRTY ; if a line has been changed we'd
|
||||
jz save_history30 ; better update "recall" pointer
|
||||
mov RL_HIST_RECL,di ; too
|
||||
save_history30:
|
||||
push ds
|
||||
push es
|
||||
push ss ! pop ds
|
||||
lea si,RL_HIST_SAVE ; point at history buffer variables
|
||||
mov es,RL_HIST_SEG
|
||||
mov di,RL_HIST_SIZE
|
||||
movsw ; save the "save" pointer
|
||||
movsw ; and the "recall" one
|
||||
pop es
|
||||
pop ds
|
||||
ret
|
||||
|
||||
save_current_if_dirty:
|
||||
;---------------------
|
||||
test RL_FLAGS,RLF_DIRTY ; if data is dirty (ie. user modified)
|
||||
jz save_current20 ; then save it
|
||||
save_current:
|
||||
;------------
|
||||
; Copy current buffer contents to next free location in history buffer
|
||||
;
|
||||
push si
|
||||
push di
|
||||
push dx
|
||||
cmp dx,RL_HIST_SIZE ; is history buffer big enough ?
|
||||
jae save_current10 ; no, skip saving this line
|
||||
call find_free_hist ; Find the next bit of space
|
||||
pop cx ! push cx ; CX = chars to save
|
||||
jcxz save_current10 ; none, forget about it
|
||||
push ds
|
||||
push es
|
||||
lds si,RL_BUFPTR
|
||||
mov es,RL_HIST_SEG
|
||||
rep movsb ; and save the data.
|
||||
xor ax,ax ; Null terminate it.
|
||||
stosb
|
||||
pop es
|
||||
pop ds
|
||||
push di
|
||||
call find_next_null ; Find the end of the entry we just
|
||||
mov cx,di ; overwrote - if any remains zap it
|
||||
pop di
|
||||
cld
|
||||
xor ax,ax ; Null terminate this entry
|
||||
sub cx,di ; Figure out number of zeros to write
|
||||
jbe save_current10
|
||||
push es
|
||||
mov es,RL_HIST_SEG
|
||||
rep stosb ; and pad to the next entry
|
||||
pop es
|
||||
save_current10:
|
||||
pop dx
|
||||
pop di
|
||||
pop si
|
||||
save_current20:
|
||||
ret
|
||||
|
||||
|
||||
;
|
||||
; Here is the code to deal with history buffers
|
||||
;
|
||||
; match_cmd Does a string search based on what the user has typed so far
|
||||
; search_cmd Matches string, but doesn't change match state
|
||||
; prev_cmd Retrieves the previous command from the history buffer
|
||||
; next_cmd " " next " " " " "
|
||||
;
|
||||
match_cmd:
|
||||
mov al,@hist_flg ; is matching enabled ?
|
||||
and ax,RLF_MATCH
|
||||
jz search_cmd ; no, always match
|
||||
xor RL_FLAGS,ax ; toggle match bit
|
||||
test RL_FLAGS,ax ; turning matching off ?
|
||||
jz match30 ; then just exit
|
||||
search_cmd:
|
||||
mov RL_SAVPOS,si ; any chars to save ?
|
||||
test si,si
|
||||
jz prev_cmd ; blank line - just get previous
|
||||
call save_current_if_dirty ; save current line if it needs saving
|
||||
push si ; save current offset in line
|
||||
push di
|
||||
push dx ; Save index to end of current line
|
||||
mov dx,si ; discard rest of line if no match
|
||||
mov di,RL_HIST_RECL ; Point to the current entry
|
||||
match_loop:
|
||||
call find_prev_hist ; DI-> previous cmd in buffer
|
||||
push di ; save this command position
|
||||
mov di,RL_HIST_RECL ; get starting position
|
||||
call find_current_hist ; handle any wrapping
|
||||
pop si ; recover previous command
|
||||
cmp di,si ; have we been all round ?
|
||||
je match_error ; YES - We've looped so no match found
|
||||
push ds
|
||||
push si ; save this entry
|
||||
mov ds,RL_HIST_SEG
|
||||
mov di,RL_BUFOFF ; ES:DI -> match string
|
||||
mov cx,RL_SAVPOS ; try to match CX characters
|
||||
repe cmpsb
|
||||
pop di ; recover this entry
|
||||
pop ds
|
||||
jne match_loop ; try again if we didn't match
|
||||
call copy_from_hist ; if it did match copy it
|
||||
match_error:
|
||||
pop cx ; Get end of displayed line
|
||||
pop di ; user's buffer
|
||||
pop si
|
||||
push si ; save current position in lines
|
||||
call space_out ; Rub the displayed line out
|
||||
call bs_out ; And backspace to it's start
|
||||
call goto_eol ; display the line
|
||||
call goto_bol ; Move cursor to begining
|
||||
pop cx ; CX = end of matched portion
|
||||
mov RL_SAVPOS,cx ; CX = Current position in command
|
||||
jcxz match20
|
||||
match10: ; Move cursor forward to current
|
||||
push cx ; position
|
||||
call next_char ; next_char destroys our loop count
|
||||
pop cx ; so keep it
|
||||
loop match10
|
||||
match20:
|
||||
mov cx,RL_SAVMAX ; we can't copy any more
|
||||
mov RL_SAVPOS,cx
|
||||
match30:
|
||||
ret
|
||||
|
||||
|
||||
prev_cmd:
|
||||
; Get the previous command from the buffer
|
||||
test RL_FLAGS,RLF_RECALLED ; is this the 1st recall ?
|
||||
jnz prev_cmd10
|
||||
push cx
|
||||
push di
|
||||
mov di,RL_HIST_SAVE ; get existing "save" ptr
|
||||
call find_current_hist ; wrap it if we need to
|
||||
mov RL_HIST_RECL,di ; and update "recall" pointer
|
||||
pop di
|
||||
pop cx
|
||||
prev_cmd10:
|
||||
call save_current_if_dirty ; save current line if it needs saving
|
||||
call del_line ; then delete it
|
||||
push si
|
||||
push di
|
||||
mov di,RL_HIST_RECL ; point to the current entry
|
||||
call find_prev_hist ; DI -> previous entry
|
||||
jmps found_cmd ; now go and copy it to the user buffer
|
||||
|
||||
next_cmd:
|
||||
; Get the next command from the buffer
|
||||
call save_current_if_dirty ; save current line if it needs saving
|
||||
call del_line ; then delete it
|
||||
push si
|
||||
push di
|
||||
mov di,RL_HIST_RECL ; point to the current entry
|
||||
call find_next_hist ; DI -> next entry
|
||||
; jmps found_cmd ; now go and copy it to the user buffer
|
||||
|
||||
found_cmd:
|
||||
call copy_from_hist ; Copy from history to user buffer
|
||||
pop di
|
||||
pop si
|
||||
; jmp goto_eol ; Display new line.
|
||||
|
||||
goto_eol: ; Move the cursor to the end of the
|
||||
mov cx,dx ! sub cx,si ; displayed line
|
||||
jcxz goto_e10 ; Already at the EOL
|
||||
add si,RL_BUFOFF ; Get the Offset in the buffer
|
||||
call put_string ; Output the sub_string
|
||||
add di,cx ; Update the local variables
|
||||
mov si,dx ; and return
|
||||
goto_e10:
|
||||
ret
|
||||
|
||||
; DI-> Current entry in history buffer
|
||||
;
|
||||
copy_from_hist:
|
||||
or RL_FLAGS,RLF_RECALLED ; remember we have recalled something
|
||||
and RL_FLAGS,not RLF_DIRTY ; this entry is already in buffers
|
||||
mov RL_HIST_RECL,di ; update pointer for next time
|
||||
call find_next_null ; how big is this entry ?
|
||||
mov cx,di
|
||||
mov si,RL_HIST_RECL
|
||||
sub cx,si ; (CX-SI)=No of bytes to copy
|
||||
cmp cx,RL_MAXLEN ; is the line bigger than our buffer ?
|
||||
jb copy_from_hist1 ; if so we want to clip it
|
||||
mov cx,RL_MAXLEN ; to the maximum possible value
|
||||
copy_from_hist1:
|
||||
mov dx,cx
|
||||
push ds
|
||||
mov ds,RL_HIST_SEG
|
||||
mov di,RL_BUFOFF
|
||||
rep movsb ; copy to line buffer
|
||||
pop ds
|
||||
call save_line ; save the line
|
||||
mov cx,RL_SAVMAX ; we can't copy any more
|
||||
mov RL_SAVPOS,cx
|
||||
ret
|
||||
|
||||
; Some primitives for history buffer handling:
|
||||
;
|
||||
; find_free_hist Find the next free entry in the history buffer
|
||||
; find_next_null Finds the end of the current entry
|
||||
; find_prev_hist Finds the start of the previous entry
|
||||
; find_next_hist Finds the start of the next entry
|
||||
; find_current_hist Finds the start of current entry
|
||||
|
||||
;
|
||||
; Make DI-> next entry of sufficient length for the current cmd buffer
|
||||
; If we can't fit at the end zero the remainder of the buffer then wrap
|
||||
; back to the start.
|
||||
;
|
||||
|
||||
find_free_hist:
|
||||
mov di,RL_HIST_SAVE ; Point at current last entry
|
||||
push di ; Will DX bytes fit?
|
||||
add di,dx
|
||||
cmp di,RL_HIST_SIZE ; Did we run out of buffer?
|
||||
pop di
|
||||
jb find_free_hist20
|
||||
xor ax,ax ; doesn't fit, so zero to end of buffer
|
||||
find_free_hist10:
|
||||
push es
|
||||
mov es,RL_HIST_SEG
|
||||
stosb ; keep on zeroing
|
||||
pop es
|
||||
cmp di,RL_HIST_SIZE
|
||||
jb find_free_hist10
|
||||
xor di,di ; wrap back to start of history buffer
|
||||
find_free_hist20:
|
||||
ret
|
||||
|
||||
; Entry DI-> entry in the history buffer
|
||||
; Make DI-> next NULL in the history buffer ( end of current entry )
|
||||
;
|
||||
find_next_null:
|
||||
mov cx,RL_HIST_SIZE
|
||||
sub cx,di ; Calc no of bytes left
|
||||
xor ax,ax ; Look for next terminator
|
||||
push es
|
||||
mov es,RL_HIST_SEG
|
||||
repnz scasb
|
||||
dec di ; point at the NUL
|
||||
pop es
|
||||
ret
|
||||
|
||||
; Entry DI-> entry in the history buffer
|
||||
; Make DI-> previous entry in the history buffer
|
||||
; Preserve CX
|
||||
find_prev_hist:
|
||||
call find_current_hist ; handle any wrapping
|
||||
mov ax,di ; AX = entry we want previous for
|
||||
find_prev_hist10:
|
||||
push ax ; save current offset
|
||||
push di ; save initial offset
|
||||
xchg ax,di ; find next from here until
|
||||
call find_next_hist ; we get back where we started
|
||||
xchg ax,di ; AX = current offset
|
||||
pop di ; recover initial value
|
||||
pop bx ; recover previous offset
|
||||
cmp ax,di ; have we wrapped yet ?
|
||||
je find_prev_hist20 ; yes, BX = previous entry
|
||||
ja find_prev_hist10 ; we are above target so continue
|
||||
cmp bx,di ; we are below target - if previous
|
||||
jae find_prev_hist10 ; was above target we are OK
|
||||
cmp ax,bx ; if new below previous then we
|
||||
jnb find_prev_hist10 ; have ERROR wrap, so stop
|
||||
find_prev_hist20:
|
||||
mov di,bx ; DI -> Previous entry
|
||||
ret
|
||||
|
||||
find_next_hist:
|
||||
call find_current_hist ; handle any wrapping
|
||||
call find_next_null ; point to end of current entry
|
||||
; jmp find_current_hist ; handle any wrapping
|
||||
|
||||
find_current_hist:
|
||||
; This routine is complicated by the need to handle switchers, where
|
||||
; our buffers and pointers may get out of step
|
||||
push es
|
||||
xor ax,ax
|
||||
mov es,RL_HIST_SEG ; now work backwards to start of line
|
||||
find_current_hist10:
|
||||
cmp di,1 ; are we at the start of the buffer
|
||||
jb find_current_hist30 ; then don't wrap
|
||||
std
|
||||
scasb ; is previous char a NUL ?
|
||||
cld ; (it should be!)
|
||||
jne find_current_hist10
|
||||
inc di ; ES:DI -> 1st char of line
|
||||
find_current_hist20:
|
||||
mov cx,RL_HIST_SIZE
|
||||
sub cx,di ; CX= Remaining no: of bytes in buffer
|
||||
jbe find_current_hist30
|
||||
repe scasb ; skip over zero's
|
||||
jne find_current_hist40
|
||||
find_current_hist30:
|
||||
mov di,1 ; wrap to start of buffer
|
||||
find_current_hist40:
|
||||
dec di
|
||||
pop es
|
||||
ret
|
||||
|
||||
del_history_buffers:
|
||||
;-------------------
|
||||
; Delete contents of both history buffers
|
||||
;
|
||||
mov ax,histbuf1 ; Segment of 1st history buffer
|
||||
mov cx,histsiz1 ; End of 1st history buffer
|
||||
call zap_buffer
|
||||
mov ax,histbuf2 ; Segment of 2nd history buffer
|
||||
mov cx,histsiz2 ; End of 2nd history buffer
|
||||
jmps zap_buffer
|
||||
|
||||
del_cur_history_buffer:
|
||||
;----------------------
|
||||
; Delete contents of the current history buffer
|
||||
;
|
||||
mov ax,RL_HIST_SEG ; zero the current buffer
|
||||
mov cx,RL_HIST_SIZE
|
||||
zap_buffer:
|
||||
push es ; zero fill CX bytes at AX:0
|
||||
push di
|
||||
mov es,ax
|
||||
xor ax,ax
|
||||
mov RL_HIST_RECL,ax
|
||||
mov RL_HIST_SAVE,ax
|
||||
xor di,di
|
||||
rep stosb ; zero fill the buffer
|
||||
pop di
|
||||
pop es
|
||||
call del_line ; then delete current line
|
||||
jmp save_line
|
||||
|
||||
|
||||
next_word:
|
||||
mov cx,dx ; Calculate the number of bytes
|
||||
sub cx,si ; left to scan
|
||||
jcxz next_w10 ; Skip if at the EOL
|
||||
push si ; Save the current Index
|
||||
mov si,di ; Scan from the current location
|
||||
call match_word ; Get the next word boundary
|
||||
mov cx,si
|
||||
sub cx,di ; Calculate the string length
|
||||
mov si,di ; to be displayed from the current
|
||||
call put_string ; location and output the data
|
||||
pop si
|
||||
add si,cx ; Update the Index and Offset pointers
|
||||
add di,cx
|
||||
next_w10:
|
||||
ret
|
||||
|
||||
;
|
||||
; MATCH_WORD scans the buffer at ES:SI for word boundaries
|
||||
; and returns to the calling routine whenever it detects such
|
||||
; a boundary.
|
||||
;
|
||||
; On Entry: ES:SI Buffer Address
|
||||
; CX Maximum No of bytes to Scan
|
||||
;
|
||||
; On Exit: ES:SI Next Word Boundary
|
||||
;
|
||||
match_word:
|
||||
call char_info
|
||||
test ah,CHAR_ALPHAN or CHAR_KANJI
|
||||
loopnz match_word ; scan the rest of the current word
|
||||
jcxz match_w30 ; end of word or kanji ?
|
||||
|
||||
push dx
|
||||
match_w10:
|
||||
mov dx,si
|
||||
call char_info
|
||||
test ah,CHAR_ALPHAN or CHAR_KANJI
|
||||
loopz match_w10
|
||||
jz match_w20
|
||||
sub si,dx ; Correct the count in CX
|
||||
add cx,si ; and return the location of the
|
||||
mov si,dx ; word boundary
|
||||
|
||||
match_w20:
|
||||
pop dx
|
||||
match_w30:
|
||||
ret
|
||||
|
||||
prev_word:
|
||||
mov cx,si ! jcxz match_w30 ; Initialize the count
|
||||
push dx ! push si ! push di
|
||||
mov si,RL_BUFOFF ; Scan from the begining of the buffer
|
||||
mov dx,si ; keeping the last match in DX
|
||||
prev_w10:
|
||||
call match_word ; Find the next word boundary
|
||||
jcxz prev_w15 ; Stop when we get to the current offset
|
||||
mov dx,si ; Save current location
|
||||
jmps prev_w10 ; and repeat
|
||||
prev_w15:
|
||||
jmp prev_w20
|
||||
|
||||
del_bol: ; Delete to the begining of the line
|
||||
or si,si ! jz del_bol10 ; Ignore if at the begining
|
||||
or dx,dx ! jz del_bol10 ; Or the line is empty
|
||||
push di ; Save the current index
|
||||
call goto_bol ; Move to the start of the line
|
||||
pop cx ; Restore the current offset
|
||||
jmp deln_w10 ; and jump to common code
|
||||
del_bol10:
|
||||
ret
|
||||
|
||||
deln_word:
|
||||
mov cx,dx ; Calculate the number of bytes
|
||||
sub cx,si ; left to scan
|
||||
jcxz del_bol10 ; Skip if at the EOL
|
||||
push si ; Save the current Index
|
||||
mov si,di ; Scan from the current location
|
||||
call match_word ; Get the next word boundary
|
||||
mov cx,si
|
||||
pop si
|
||||
jmp deln_w10
|
||||
|
||||
PCMODE_DATA DSEG WORD
|
||||
|
||||
extrn @hist_flg:byte ; To select between histbufs 1 or 2
|
||||
|
||||
GLOBAL_DATA dseg word
|
||||
|
||||
extrn histbuf1:word, histsiz1:word, histbuf2:word, histsiz2:word
|
||||
|
||||
end
|
||||
|
||||
5
IBMDOS/IBMDOS.INP
Normal file
5
IBMDOS/IBMDOS.INP
Normal file
@@ -0,0 +1,5 @@
|
||||
ibmdos.tmp=header.obj,pcmif.obj,cio.obj,disk.obj,ioctl.obj,misc.obj,support.obj,
|
||||
dosmem.obj,error.obj,process.obj,network.obj,int2f.obj,fdos.obj,cdevio.obj,fioctl.obj,
|
||||
fcbs.obj,redir.obj,dirs.obj,buffers.obj,bdevio.obj,cmdline.obj,history.obj
|
||||
[map, data[origin[0000]]]
|
||||
|
||||
154
IBMDOS/IBMDOS.MAP
Normal file
154
IBMDOS/IBMDOS.MAP
Normal file
@@ -0,0 +1,154 @@
|
||||
Map for file: IBMDOS.TMP
|
||||
|
||||
Segments
|
||||
--------
|
||||
|
||||
Length Start Stop Align Comb Name Class
|
||||
|
||||
3830 (0000:0000-382F) PARA PUB PCM_HEADER CODE
|
||||
2C03 (0000:3830-6432) BYTE PUB PCM_CODE CODE
|
||||
3ADE (0000:6434-9F11) WORD PUB BDOS_CODE CODE
|
||||
02CC (0000:9F12-A1DD) WORD PUB PCM_RODATA CODE
|
||||
0399 (0000:A1DE-A576) BYTE PUB PCM_HISTORY CODE
|
||||
01B5 (0000:A577-A72B) BYTE PUB PCM_ICODE CODE
|
||||
0000 PARA PUB PCM_CODEND CODE
|
||||
0000 BYTE PUB CODE CODE
|
||||
03A2 (0000:0000-03A1) WORD PUB PCMODE_DATA DATA
|
||||
000E (0000:03A2-03AF) WORD COM FDOS_DSEG DATA
|
||||
0C50 (0000:03B0-0FFF) WORD PUB FIXED_DOS_DATA DATA
|
||||
02B8 (0000:1000-12B7) WORD PUB PCMODE_CODE DATA
|
||||
0014 (0000:12B8-12CB) WORD PUB GLOBAL_DATA DATA
|
||||
0120 (0000:12CC-13EB) WORD PUB BDOS_DATA DATA
|
||||
0000 PARA PUB PCMODE_DSIZE DATA
|
||||
|
||||
Groups Segments
|
||||
------ --------
|
||||
|
||||
PCMDATA PCMODE_DATA FDOS_DSEG FIXED_DOS_DATA PCMODE_CODE
|
||||
GLOBAL_DATA BDOS_DATA PCMODE_DSIZE
|
||||
PCMCODE PCM_HEADER PCM_CODE BDOS_CODE PCM_RODATA
|
||||
PCM_HISTORY PCM_ICODE PCM_CODEND
|
||||
|
||||
map for module: HEADER
|
||||
|
||||
382A (0000:0000-3829) PCM_HEADER
|
||||
0102 (0000:A1DE-A2DF) PCM_HISTORY
|
||||
01B5 (0000:A577-A72B) PCM_ICODE
|
||||
03A2 (0000:0000-03A1) PCMODE_DATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0C50 (0000:03B0-0FFF) FIXED_DOS_DATA
|
||||
02B8 (0000:1000-12B7) PCMODE_CODE
|
||||
0004 (0000:12CC-12CF) BDOS_DATA
|
||||
|
||||
map for module: PCMIF
|
||||
|
||||
03F6 (0000:3830-3C25) PCM_CODE
|
||||
00DC (0000:9F12-9FED) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: CIO
|
||||
|
||||
0491 (0000:3C26-40B6) PCM_CODE
|
||||
0004 (0000:9FEE-9FF1) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0001 (0000:12B8-12B8) GLOBAL_DATA
|
||||
|
||||
map for module: DISK
|
||||
|
||||
044C (0000:40B7-4502) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0002 (0000:12BA-12BB) GLOBAL_DATA
|
||||
|
||||
map for module: IOCTL
|
||||
|
||||
0164 (0000:4503-4666) PCM_CODE
|
||||
0032 (0000:9FF2-A023) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: MISC
|
||||
|
||||
0687 (0000:4667-4CED) PCM_CODE
|
||||
004D (0000:A024-A070) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
0002 (0000:12BC-12BD) GLOBAL_DATA
|
||||
|
||||
map for module: SUPPORT
|
||||
|
||||
00C7 (0000:4CEE-4DB4) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: DOSMEM
|
||||
|
||||
0260 (0000:4DB5-5014) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: ERROR
|
||||
|
||||
01AE (0000:5015-51C2) PCM_CODE
|
||||
00B4 (0000:A072-A125) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: PROCESS
|
||||
|
||||
07B2 (0000:51C3-5974) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: NETWORK
|
||||
|
||||
0086 (0000:5975-59FA) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: INT2F
|
||||
|
||||
04EB (0000:59FB-5EE5) PCM_CODE
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
000E (0000:12BE-12CB) GLOBAL_DATA
|
||||
|
||||
map for module: FDOS
|
||||
|
||||
199A (0000:6434-7DCD) BDOS_CODE
|
||||
0078 (0000:12D0-1347) BDOS_DATA
|
||||
|
||||
map for module: CDEVIO
|
||||
|
||||
02B7 (0000:7DCE-8084) BDOS_CODE
|
||||
|
||||
map for module: FIOCTL
|
||||
|
||||
0238 (0000:8085-82BC) BDOS_CODE
|
||||
|
||||
map for module: FCBS
|
||||
|
||||
0558 (0000:82BD-8814) BDOS_CODE
|
||||
|
||||
map for module: REDIR
|
||||
|
||||
06CB (0000:8815-8EDF) BDOS_CODE
|
||||
|
||||
map for module: DIRS
|
||||
|
||||
03EE (0000:8EE0-92CD) BDOS_CODE
|
||||
0037 (0000:1348-137E) BDOS_DATA
|
||||
|
||||
map for module: BUFFERS
|
||||
|
||||
052C (0000:92CE-97F9) BDOS_CODE
|
||||
0005 (0000:1380-1384) BDOS_DATA
|
||||
|
||||
map for module: BDEVIO
|
||||
|
||||
0717 (0000:97FA-9F10) BDOS_CODE
|
||||
0065 (0000:1386-13EA) BDOS_DATA
|
||||
|
||||
map for module: CMDLINE
|
||||
|
||||
054D (0000:5EE6-6432) PCM_CODE
|
||||
00B7 (0000:A126-A1DC) PCM_RODATA
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
map for module: HISTORY
|
||||
|
||||
0297 (0000:A2E0-A576) PCM_HISTORY
|
||||
000E (0000:03A2-03AF) FDOS_DSEG
|
||||
|
||||
|
||||
179
IBMDOS/IBMDOS.SYM
Normal file
179
IBMDOS/IBMDOS.SYM
Normal file
@@ -0,0 +1,179 @@
|
||||
|
||||
0000 VARIABLES 0000 DATA
|
||||
03A2 FDOS_DSEG
|
||||
0000 VARIABLES 0000 DATA
|
||||
13F0 DATA_END 12CC HASHROOT
|
||||
0000 LABELS 0000 CODE
|
||||
3800 CODE_START 380A OS_VERSION 3822 PATCH_VERSION
|
||||
3806 PCMODE_DSEG A730 CODE_END
|
||||
0000 VARIABLES 0000 DATA
|
||||
0FE4 ACTIVE_CNT 056D FILE_ATTRIB 0572 REMOTE_CALL
|
||||
043E SEC_PATHNAME 0EFE FDOS_STUB 0EE0 HASHMAX 057E TERM_PSP
|
||||
03B6 BIOSDATE 0D1C DAYS_IN_MONTH 0588 CRITICAL_SP
|
||||
0AA2 RWMODE 0F02 SHARE_STUB 0AA0 INDOS_STACK 03B8 MINUTE
|
||||
0AAD UCASETBL 0EBC @PRIVATE_DATA 05CE CURRENT_FILEPOS
|
||||
0584 INT21REGS_PTR 05F0 PREV_INT21REGS_OFF 0AA4 INT2F_CMD
|
||||
0FE4 IDLE_DATA 0AAC SWAP_INDOS 03BE PRI_PATHNAME
|
||||
05F2 PREV_INT21REGS_SEG 0ECC HMAROOT 0580 INT24_ESBP 0FEA IDLE_VEC
|
||||
057C EXIT_TYPE 0620 FCB_SEARCH_BUF 0CE3 DBCS_TBL 054B NAME_BUF
|
||||
0AA3 IOEXERR 0920 NORMAL_STACK 07A0 ERROR_STACK
|
||||
05AA CURRENT_IFN 043E LOAD_FILE 058A CURRENT_DDSC
|
||||
0FEE INT28_DELAY 0FE6 IDLE_MAX 0AA8 FILE_MODE 03B0 MUSTBE03B0
|
||||
05A2 CURRENT_LDT 03BA HUNDREDTH 0FE8 IDLE_FLAGS
|
||||
0FF0 INT28_RELOAD 0D12 DOS_VERSION
|
||||
059E CURRENT_DHNDL 04BE SRCH_BUF 0ED6 LOCALMACHINEID
|
||||
0EC4 @HIST_FLG 05F0 PREV_INT21REGS_PTR 03BE RELOC_BUF
|
||||
059A CURRENT_DEVICE 0BB1 FILECHARSTBL
|
||||
0B2F FILEUCASETBL 0AAA CLE_STATE 0AA1 ERR_DRV
|
||||
0F3E WINDOWSHANDLECHECK 0AA6 INT2F_STACK
|
||||
0584 INT21REGS_OFF 04F3 TEMP_LDT 0ED8 DMD_ADDRESS
|
||||
0ECA CODESEG 0FC8 EXE_BUFFER 03BB SECOND 0586 INT21REGS_SEG
|
||||
03B9 HOUR 0ED2 DMD_OWNER 0BE1 COLLATINGTBL
|
||||
0374 EXE_LOADHIGH 0048 DEV_ROOT 0320 ERROR_FLAG
|
||||
032E DMA_SEGMENT 0324 ERROR_CODE 0303 SHARING_FLAG
|
||||
0010 FCB_LRU_COUNT 03A1 CHAR_COUNT 0351 MONTH 034A LOCUS
|
||||
0334 RETCODE 01FB SAVBUF 0352 YEARSSINCE1980 0328 ERROR_DEV
|
||||
0392 FCB_PATH2 0335 SYSTEM_RETCODE 0026 FUNC52_DATA
|
||||
0089 DMD_UPPER_LINK 0358 INT28_FLAG 0300 COLUMN
|
||||
02FF VERIFY_FLAG 0301 SWITCH_CHAR 005D SETVERPTR
|
||||
0046 PHYS_DRV 034C RETRY_OFF 000E NETBIOS 0359 IOCTLRH
|
||||
0357 INTERNAL_FLAG 0320 INTERNAL_DATA 0383 FCB_PATH
|
||||
034E RETRY_SP 0304 NET_SET_COUNT 001A NET_RETRY 0337 BREAK_FLAG
|
||||
0356 DAYOFWEEK 0327 ERROR_CLASS 0069 BOOTDRV 0040 FCB_PTR
|
||||
033E MACHINE_ID 0342 LOAD_IMAGE 0372 LOAD_ENVSIZE
|
||||
0322 ERROR_DRIVE 008C DMD_UPPER_ROOT 033C OWNING_PSP
|
||||
0336 CURRENT_DSK 0334 USER_RETCODE 0346 LOAD_MAX
|
||||
033A INT21AX 0332 BREAK_SP 0326 ERROR_ACTION 0305 NET_NAME
|
||||
0370 LOAD_ENV 034B VALID_FLG 027B FDOS_BUF 002E CLK_DEVICE
|
||||
0036 SECTOR_SIZE 001E BCB_ROOT 0348 LOAD_HANDLE
|
||||
033A SWAP_ALWAYS 0323 ERROR_LOCUS 0032 CON_DEVICE
|
||||
000F NAME_NUM 0302 MEM_STRATEGY 0344 LOAD_TOP 0340 LOAD_PSP
|
||||
007C DEBLOCK_SEG 0026 DDSC_PTR 0354 DAYSSINCE1980
|
||||
0330 CURRENT_PSP 002A FILE_PTR 001C NET_DELAY 0321 INDOS_FLAG
|
||||
032C DMA_OFFSET 0024 DMD_ROOT 0350 DAYOFMONTH 003C LDT_PTR 02FE CIO_STATE
|
||||
005A JOIN_DRV 0375 FCB_PB 0048 NUL_DEVICE 0047 LAST_DRV 1010 EXEC_STUB
|
||||
1008 LOCK_TABLES 113E HISTBUF1 1144 HISTBUF2
|
||||
1129 CRITICALSECTIONENABLE 112A SWSTARTUPINFO
|
||||
10E5 INT2FBIOSHANDLER 12A8 INTL_XLAT 1192 XLAT_XLAT 1000 MUSTBE1000
|
||||
1232 COUNTRY_FILENAME 1296 DEFAULT_COUNTRY
|
||||
1004 UNLOCK_BIOS 1000 ENDOFINSTANCEDATA 1294 CUR_CP
|
||||
1140 HISTSIZ1 1146 HISTSIZ2 10E9 INT2FNEXT 1102 INVALID_STUB
|
||||
1014 FUNC4B05_STUB 100C UNLOCK_TABLES
|
||||
1292 COUNTRY_DATA 1000 LOCK_BIOS 1292 CUR_COUNTRY
|
||||
11A0 NOYESCHARS
|
||||
0000 NUMBERS
|
||||
0D90 LAST_KEY_EXT 001C INFO1_LEN 0082 INFO2_LEN 0082 INFO4_LEN
|
||||
0018 INFO5_LEN 0102 INFO6_LEN 0012 INFO7_LEN 0008 RELOC_CNT
|
||||
0000 LABELS 0000 CODE
|
||||
3830 CALL5_ENTRY 3B29 DO_INT24 3A65 INT25_ENTRY
|
||||
3A61 INT26_ENTRY 3B18 INT27_ENTRY
|
||||
3BFD INVALID_FUNCTION 3C03 RELOAD_REGISTERS 3987 INACTIVE
|
||||
39B3 DOS_ENTRY 3A36 INT21_FUNC 3BE9 GET_DSEG 3936 INT21_EXIT 39A7 ACTIVE
|
||||
384F INT20_ENTRY 3851 INT21_ENTRY 9F12 PCMODE_FT
|
||||
0000 NUMBERS
|
||||
006D PCMODE_FTL
|
||||
0000 LABELS 0000 CODE
|
||||
3C26 FUNC01 3C2A FUNC02 3C37 FUNC03 3C3D FUNC04 3C42 FUNC05
|
||||
3C6C FUNC06 3C7F FUNC07 3C87 FUNC08 3CA3 FUNC09
|
||||
3F10 DEVICE_WRITE 3CB7 FUNC0A 3CC0 FUNC0B
|
||||
3E00 COOKED_WRITE 3CCE FUNC0C 3CFD BREAK_CHECK
|
||||
3DD0 RAW_READ 3F0C DEVICE_READ 3DC1 CMDLINE_READ
|
||||
40DF VALID_DRIVE 4104 FUNC10 4104 FUNC11 4104 FUNC21
|
||||
4104 FUNC12 4236 FUNC40 4104 FUNC22 4104 FUNC13 41DA FUNC41
|
||||
4167 FUNC32 4104 FUNC23 4104 FUNC14 43EA FUNC60 426B FUNC42
|
||||
4104 FUNC24 4104 FUNC15 4295 FUNC43 4104 FUNC16 42FE FUNC53
|
||||
4104 FUNC17 42BD FUNC45 4174 FUNC36 4104 FUNC27 42B2 FUNC46
|
||||
412C FUNC19 4104 FUNC28 4317 FUNC56 42EB FUNC47 4340 FUNC57
|
||||
41E4 FUNC39 4409 FUNC67 4482 FUNC68 4130 FUNC1A 4139 FUNC1B
|
||||
41E4 FUNC3A 4139 FUNC1C 40B7 FUNC0D 41E4 FUNC3B 40CD FUNC0E
|
||||
4373 FUNC5A 41F6 FUNC3C 4104 FUNC0F 420E FUNC3D 41F6 FUNC5B
|
||||
4167 FUNC1F 42CD FUNC5C 42BD FUNC3E 41C9 FUNC2F 448E FUNC6C
|
||||
4236 FUNC3F 41E4 FUNC4E 41E4 FUNC4F
|
||||
451B FUNC44 4503 FUNC69
|
||||
47B4 FUNC30 47C9 FUNC33 4800 FUNC25 4678 FUNC52 4667 FUNC34
|
||||
4816 FUNC35 483C FUNC63 4838 FUNC54 4797 FUNC37 4B89 FUNC65
|
||||
4AA8 FUNC38 4873 FUNC29 4C77 FUNC66 495A FUNC2A 4980 FUNC2B
|
||||
496D FUNC2C 4999 FUNC2D 4832 FUNC2E 467D FUNC5D
|
||||
466A RETURN_DSBX_AS_ESBX 49BC READTIMEANDDATE
|
||||
4D59 FCBFDOS_CRIT 4D3D RETURN_AX_CLC
|
||||
4D01 SET_RETRY_RF 4CEE STRLEN 4D8E RETURN_BX 4D9B RETURN_CX
|
||||
4D6F FDOS_NOCRIT 4DA8 RETURN_DX 4D03 SET_RETRY 4D82 RELOAD_ES
|
||||
4D33 FDOS_AX_CRIT 4D28 FDOS_CRIT
|
||||
4EED SET_OWNER 4DB5 FUNC48 4E4F FUNC58 4DE2 FUNC49 4EB7 FREE_ALL
|
||||
4E1E FUNC4A 5004 CHECK_DMD_ID
|
||||
5062 CHAR_ERROR 504A ERROR_RET 5015 FUNC59 503D ERROR_EXIT
|
||||
505A FCBERROR_EXIT
|
||||
54D3 FUNC00 52B0 FUNC31 52A3 FUNC50 52A8 FUNC51 52A8 FUNC62
|
||||
51EF FUNC26 51C3 FUNC55 5928 CHECK_EXE 52DE FUNC4B 54F1 FUNC4C
|
||||
55A4 FUNC4D 5936 IMAGE_SIZE
|
||||
59E2 FUNC5F_COMMON 5975 FUNC5E 59B1 FUNC5F
|
||||
5A52 INT2F_ENTRY
|
||||
0000 VARIABLES 0000 DATA
|
||||
132C GLOBAL_PASSWORD 12D6 FDOS_HDS_ROOT 12E6 INFO_FCB
|
||||
131C FDOS_PB 12D4 FDOS_HDS_BLK 12D8 FDOS_HDS_DRV
|
||||
132A FDOS_RET 1316 FDOS_INFO
|
||||
0000 LABELS 0000 CODE
|
||||
7DB4 SHARE_DELAY 6E07 FDOS_MKDDSC
|
||||
6B82 FDOS_GETDPB 682B FDOS_CLOSE 6FB5 FDOS_MOVE
|
||||
6D61 FILE_UPDATE 6552 FDOS_MKDIR 7CD9 READTOD
|
||||
7B7F LDS_SI_DMAPTR 65B4 FDOS_RMDIR 6CA6 FDOS_NEXT
|
||||
6EFD FDOS_EXPAND 6BEA FDOS_SELECT
|
||||
7A9F DISCARD_FILES 7A70 RELEASE_HANDLE 6DB9 FDOS_MKNEW
|
||||
6BB8 FDOS_FLUSH 7108 FDOS_DATTIM 71B2 DBCS_LEAD
|
||||
79EE VFY_DHNDL_PTR 6C7D FDOS_FIRST 6D53 FDOS_COMMIT
|
||||
6B34 FDOS_CURDIR 7C77 MV_JOIN_ROOT 6514 FDOS_ERROR
|
||||
68B5 FDOS_WRITE 6A25 FDOS_ED_FUNCTION 74F0 GET_PB2_DRIVE
|
||||
68EE FDOS_UNLINK 7B8B COPY_ASCIIZ 6434 FDOS_ENTRY
|
||||
7607 UNPARSE 79AB VERIFY_HANDLE 7B7A CURRENT_DSK2AL
|
||||
6E18 BPB2DDSC 654D FDOS_ED_ACCESS 7B60 GET_XFTPTR 685E FDOS_READ
|
||||
77B8 CHECK_DELIM 7AF0 FIND_DHNDL 6E9C FDOS_DDIO 78C6 FIND_XFN
|
||||
7B92 CHECK_JOIN 720B REBUILD_LDT_ROOT 653E FDOS_ED_DRIVE
|
||||
7D6B HASH_PWD 77FD TOUPPER 6C1D FDOS_EXEC 652D FDOS_RESTART
|
||||
78DF ALLOC_DHNDL 6DDD FDOS_LOCK 6AEA FDOS_DUP 65FA FDOS_CHDIR
|
||||
64BD LOCAL_DISK 78ED ALLOC_XFN 69BB FDOS_CHMOD 7B85 LES_DI_DMAPTR
|
||||
77F5 CHECK_SLASH 75F7 HDSBLK 7AC7 IFN2DHNDL 6AF9 FDOS_FDUP
|
||||
673D FDOS_CREAT 65DF UPDATE_DIR_FAT 77EC CHECK_DSLASH
|
||||
7791 PARSE_ONE 7133 TIMESTAMP_DHNDL 67C2 FDOS_OPEN 6960 FDOS_LSEEK
|
||||
8019 FIRST_DEV 7E81 WRITE_DEV 804C IOC6_DEV 8050 IOC7_DEV 7EB6 READ_DEV
|
||||
7E67 DUP_DEV 7DCE OPEN_DEV 7E75 CLOSE_DEV
|
||||
80A9 FDOS_IOCTL
|
||||
82BD FDOS_EXIT 8301 FDOS_FCB
|
||||
8957 ISLOCAL 8815 REDIR_DHNDL_OFFER 8D5B REDIR_BUILD_PATH
|
||||
8891 REDIR_DRV_OFFER 8845 REDIR_MOVE_OFFER 8904 GET_LDT
|
||||
883F REDIR_ASCIIZ_DEV_OFFER 887C REDIR_ASCIIZ_FILE_OFFER
|
||||
8877 REDIR_ASCIIZ_OFFER 8919 GET_LDT_RAW
|
||||
88A7 REDIR_SNEXT_OFFER
|
||||
0000 VARIABLES 0000 DATA
|
||||
137D CHDBLK 1379 DCNT 1377 DIRP 137B FINDDFCB_MASK
|
||||
1357 DIRBUF
|
||||
0000 LABELS 0000 CODE
|
||||
8EE0 FILL_DIRBUF 928A ALLOCDIR 9259 HSHDSCRD
|
||||
8F9B DISCARD_DIRBUF 8F3A FLUSH_DIRBUF 9005 SETENDDIR
|
||||
917E FIXUP_HASHING 9022 FINDDFCB 901F FINDDFCBF 915A MKHSH
|
||||
9025 GETDIR
|
||||
960B UPDATE_DIR 92CE UPDATE_DDSC_FREE 946C FIXFAT
|
||||
9414 ALLOCATE_CLUSTER 936C GETNBLK 9334 BUFFERS_CHECK
|
||||
9595 LOCATE_BUFFER 9523 FATPTR 946A CHANGE_FAT_ENTRY
|
||||
96D3 ZEROBLK 961B FLUSH_DRIVE 92FB DISCARD_DIRTY
|
||||
93A7 ALLOC_CLUSTER 93AA ALLOC_CHAIN 9351 DELFAT
|
||||
92FF DISCARD_ALL 9303 DISCARD_DIR 9382 GETBLK
|
||||
9612 UPDATE_DAT 9616 UPDATE_FAT
|
||||
0000 VARIABLES 0000 DATA
|
||||
13A5 DOSFAT 1395 LASTCL 1388 LOGICAL_DRV 139F CLSIZE
|
||||
13B4 FDRWFLG 139D NFATRECS 13B0 CUR_DMA_SEG 13AE CUR_DMA
|
||||
138A PSECSIZ 1393 DATADD 138E FATADD 13CD REQ_HDR 13A1 SECPERCLU
|
||||
1399 DIRADD 1389 PHYSICAL_DRV 13A3 DIRPERCLU 1391 DIRINROOT
|
||||
1386 HDSADDR 13A8 PBLOCK 13A7 ADRIVE 13AC MULT_SEC 139B NFATS
|
||||
0000 LABELS 0000 CODE
|
||||
9EF3 CLUS2SEC 9CE1 SELECT_PHYSICAL_DRV 9E9E WRITE_BLOCK
|
||||
9819 FDOSRW 9D06 SELECT_ADRIVE 9C59 DEVICE_DRIVER
|
||||
97FA GET_DDSC 9C85 SELECT_LOGICAL_DRV 9C38 BLOCK_DEVICE_DRIVER
|
||||
9EB2 READ_BLOCK 9E79 MARK_LDT_UNSURE 9BF9 DDIOIF 9BD4 BLOCKIF
|
||||
6389 SPACE_OUT 6136 DEL_EOL 6116 PREV_W20 619F DEL_LINE 5EE6 READ_LINE
|
||||
6339 CHAR_INFO 638D BS_OUT 6399 PUT_STRING 60C9 GOTO_BOL 62B4 SAVE_LINE
|
||||
615E DELN_W10 60DD NEXT_CHAR A127 EDIT_SIZE
|
||||
A303 SAVE_HISTORY A2E0 INIT_HISTORY A51D MATCH_WORD
|
||||
A4E4 DEL_CUR_HISTORY_BUFFER A554 DEL_BOL A4D1 DEL_HISTORY_BUFFERS
|
||||
A53C PREV_WORD A502 NEXT_WORD A378 MATCH_CMD A388 SEARCH_CMD A3E1 PREV_CMD
|
||||
A405 NEXT_CMD A418 GOTO_EOL A565 DELN_WORD
|
||||
|
||||
1245
IBMDOS/INT2F.A86
Normal file
1245
IBMDOS/INT2F.A86
Normal file
File diff suppressed because it is too large
Load Diff
468
IBMDOS/IOCTL.A86
Normal file
468
IBMDOS/IOCTL.A86
Normal file
@@ -0,0 +1,468 @@
|
||||
; File : $IOCTL.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: $
|
||||
; IOCTL.A86 1.17 94/11/28 15:42:19
|
||||
; f440B now does not modify net_retry if DX=0
|
||||
; IOCTL.A86 1.16 93/11/08 19:15:18
|
||||
; SETVER to subversion 0xFF disabled int 21/4452
|
||||
; IOCTL.A86 1.15 93/07/26 18:16:16
|
||||
; add some code which disables drdos check if app is SETVER'd
|
||||
; leave said code disabled unless required
|
||||
; IOCTL.A86 1.14 93/07/22 19:29:54
|
||||
; get/set serial number now the correct way round
|
||||
; IOCTL.A86 1.11 93/06/17 22:14:34
|
||||
; support for ioctl 10/11 query ioctl support
|
||||
; ENDLOG
|
||||
;
|
||||
; 7 Nov 87 Removal of development flags
|
||||
; 17 Dec 87 Return "Single device Supported" for IOCTL sub-functions
|
||||
; 0Eh and 0Fh.
|
||||
; 24 Feb 88 Return 1060h from IOCTL sub-function 51h under DOS PLUS
|
||||
; instead of the Concurrent DOS OS version.
|
||||
; 24 Feb 88 Correct Generic IOCTL function and prevent the generation
|
||||
; of critical errors.
|
||||
; 24 May 88 sub-function 53h returns the address of the INT24 handler
|
||||
; for the command processor.
|
||||
; 01 Jun 88 Add sub-function 4454 to support setting the default password
|
||||
; 03 Nov 88 Add History Buffer Sub-Command f4456 for DOSPLUS
|
||||
; 02 Feb 89 Add code page switching sub-function 0Ch
|
||||
; 19 Feb 89 Support Sub-Command f4457 to control SHARE
|
||||
; 15 Mar 89 Do not generate critical errors from 4402 and 4403.
|
||||
; 18 Apr 89 Sub-function 53 only suported for Concurrect DOS
|
||||
; 19 Apr 89 Don't clobber error code on 440D and 440E (pc-cache)
|
||||
; 31 May 89 New function f4458 to return pointer to private data.
|
||||
; 31 May 89 f440B sets up DOS internal data
|
||||
; 15 Jun 89 Don't throw away inheritance bit when masking Share Mode Flags
|
||||
; 11 Oct 89 f4407/07 set AX on return, not just AL
|
||||
; 26 Oct 89 for a few bytes more...
|
||||
; 18 Jan 90 HILOAD interface added onto f4457
|
||||
; 25 Jan 90 INT21/4458 returns a pointer to IDLE_DATA in ES:AX
|
||||
; 13 Jan 90 private_data exported in CDOS for DEBUG systems
|
||||
; 27 Feb 90 4459 provides Int21 function that does Int224 calls
|
||||
; 7 Mar 90 Convert to register preserved function calls
|
||||
; 14 Mar 90 No critical error generated in IOCTL functions
|
||||
; 3 May 90 stop forcing ioctl 4403/3/4/5 errors to ED_ACCESS
|
||||
; 4 Jun 90 445A provides user group support on CDOS
|
||||
; 3 jun 92 Add 4456/2+3 to examine history state, toggle history enable
|
||||
; 30 jul 92 HILOAD now uses official memory strategy calls
|
||||
;
|
||||
include pcmode.equ
|
||||
include fdos.def
|
||||
include i:msdos.equ
|
||||
include i:mserror.equ
|
||||
include i:cmdline.equ
|
||||
include i:driver.equ
|
||||
include i:reqhdr.equ
|
||||
include i:psp.def
|
||||
|
||||
PCM_CODE CSEG BYTE
|
||||
extrn os_version:word
|
||||
extrn patch_version:word
|
||||
|
||||
extrn invalid_function:near
|
||||
extrn error_ret:near
|
||||
extrn fdos_nocrit:near
|
||||
extrn fdos_crit:near
|
||||
extrn fdos_ax_crit:near
|
||||
extrn return_AX_CLC:near
|
||||
extrn return_DX:near
|
||||
extrn return_DSBX_as_ESBX:near
|
||||
extrn set_retry_RF:near
|
||||
extrn patch_version:word
|
||||
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 69 ***
|
||||
; *** set/get serial num ***
|
||||
; *****************************
|
||||
;
|
||||
Public func69
|
||||
func69:
|
||||
call set_retry_RF ; Prepare for an FDOS function
|
||||
mov FD_FUNC,MS_X_IOCTL
|
||||
mov cx,866h ; assume a get serial num
|
||||
cmp al,1 ; check for 0/1
|
||||
mov al,0Dh ; ready for ioctl 0D
|
||||
jb func44common ; go ahead with get serial num
|
||||
mov cl,46h ; maybe it's a set
|
||||
je func44common ; go ahead with set serial num
|
||||
; jmp invalid_function ; ah well, it's an invalid one
|
||||
jmps f44_30
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 44 ***
|
||||
; *** I/O Control ***
|
||||
; *****************************
|
||||
;
|
||||
Public func44
|
||||
func44:
|
||||
call set_retry_RF ; Prepare for an FDOS function
|
||||
func44common:
|
||||
mov FD_IOCTLFUNC,ax ; save subfunction for FDOS
|
||||
mov ioctlRH,22 ; assume RH will be wanted
|
||||
mov ioctlRH+13,0 ; init len and media byte
|
||||
mov word ptr ioctlRH+14,dx ; point at buffer segment
|
||||
mov word ptr ioctlRH+16,es
|
||||
mov word ptr ioctlRH+18,cx ; the Byte Count
|
||||
cmp ax,dosf44_ftl ; Check for a valid PC-DOS
|
||||
jae f44_20 ; sub-functions
|
||||
f44_10:
|
||||
xchg ax,si
|
||||
shl si,1
|
||||
mov si,func44_ft[si]
|
||||
xchg ax,si
|
||||
jmp ax
|
||||
f44_20:
|
||||
sub al,52h-dosf44_ftl ; adjust to our base of 52h
|
||||
jc f44_30 ; bail out if too low
|
||||
cmp ax,ourf44_ftl ; is it too high ?
|
||||
jb f44_10
|
||||
f44_30:
|
||||
jmp invalid_function
|
||||
|
||||
; ***********************************************
|
||||
; *** Sub Function 00 - Get Device Info ***
|
||||
; ***********************************************
|
||||
f4400:
|
||||
call fdos_handle ; execute the function
|
||||
mov dx,ax ; return in DX too
|
||||
return_AX_and_DX:
|
||||
call return_DX ; return to caller in DX
|
||||
jmp return_AX_CLC ; return AX too
|
||||
|
||||
; ***********************************************
|
||||
; *** Sub Function 01 - Set Device Info ***
|
||||
; *** Sub Function 06 - Get Input Status ***
|
||||
; *** Sub Function 07 - Get Output Status ***
|
||||
; ***********************************************
|
||||
f4401:
|
||||
f4406:
|
||||
f4407:
|
||||
call fdos_handle ; Execute the Function
|
||||
jmp return_AX_CLC
|
||||
|
||||
; ************************************************
|
||||
; *** Sub Function 04 - Read Blk Device ***
|
||||
; *** Sub Function 05 - Write Blk Device ***
|
||||
; *** Sub Function 11 - Query ioctl Blk ***
|
||||
; ************************************************
|
||||
;
|
||||
f4404:
|
||||
f4405:
|
||||
f4411:
|
||||
xor bh,bh ; BX = drive number
|
||||
|
||||
; ************************************************
|
||||
; *** Sub Function 02 - Read Character Dev ***
|
||||
; *** Sub Function 03 - Write Character Dev ***
|
||||
; *** Sub Function 10 - Query ioctl Char ***
|
||||
; ************************************************
|
||||
;
|
||||
f4402:
|
||||
f4403:
|
||||
f4410:
|
||||
mov dx,DA_QUERY ; assume we will query support
|
||||
mov al,CMD_QUERY_IOCTL ; and be ready to go
|
||||
mov cx,FD_IOCTLFUNC ; re-read the function number
|
||||
test cl,10h ; is it function 10 of 11?
|
||||
jnz f44ioctl ; yes, we are ready
|
||||
mov dx,DA_IOCTL ; no, we actually want to do it
|
||||
mov al,CMD_INPUT_IOCTL ; even functions are input
|
||||
test cl,1 ; test for input functions
|
||||
jz f44ioctl
|
||||
mov al,CMD_OUTPUT_IOCTL ; odd functions are output
|
||||
f44ioctl:
|
||||
mov FD_IOCTLSTAT,dx ; this device driver support is required
|
||||
mov ioctlRH+2,al ; this is the function
|
||||
call fdos_handle ; Execute the Function
|
||||
mov ax,word ptr ioctlRH+18 ; return # xfered
|
||||
jmp return_AX_CLC
|
||||
|
||||
; *****************************
|
||||
; *** Sub Function 09 ***
|
||||
; *** Networked Media ***
|
||||
; *****************************
|
||||
;
|
||||
f4409:
|
||||
call fdos_drive ; Execute the Function
|
||||
mov dx,ax ; Get the Return Information
|
||||
mov ax,0300h
|
||||
jmps return_AX_and_DX
|
||||
|
||||
; *****************************
|
||||
; *** Sub Function 0A ***
|
||||
; *** Networked Handle ***
|
||||
; *****************************
|
||||
;
|
||||
f440A:
|
||||
call fdos_handle ; Execute the Function
|
||||
mov dx,ax ; Get the Return Information
|
||||
jmp return_DX ; and return in DX
|
||||
|
||||
; *****************************
|
||||
; *** Sub Function 0B ***
|
||||
; *** Update Share Retry ***
|
||||
; *****************************
|
||||
;
|
||||
; dos_CX [1] Number of times to execute the delay loop
|
||||
; which consists of xor cx,cx ! loop $
|
||||
;
|
||||
; dos_DX [3] Number of times to retry
|
||||
;
|
||||
;
|
||||
f440B:
|
||||
mov net_delay,cx
|
||||
test dx,dx
|
||||
jz f440B_10
|
||||
mov net_retry,dx
|
||||
f440b_10:
|
||||
ret
|
||||
|
||||
; *****************************
|
||||
; *** Sub Function 0D ***
|
||||
; *** Device Driver Req ***
|
||||
; *****************************
|
||||
;
|
||||
f440D:
|
||||
xor bh,bh
|
||||
; jmp f440C
|
||||
|
||||
; *****************************
|
||||
; *** Sub Function 0C ***
|
||||
; *** Code Page Switching ***
|
||||
; *****************************
|
||||
;
|
||||
f440C:
|
||||
mov FD_IOCTLSTAT,DA_GETSET ; device driver support required
|
||||
mov FD_HANDLE,bx ; Save the Handle Number
|
||||
mov ioctlRH,23 ; different RH length
|
||||
mov ioctlRH+2,CMD_GENERIC_IOCTL
|
||||
xchg cl,ch ; swap minor/major functions
|
||||
mov word ptr ioctlRH+13,cx ; and store in request header
|
||||
mov word ptr ioctlRH+15,si
|
||||
mov word ptr ioctlRH+17,di
|
||||
mov word ptr ioctlRH+19,dx ; point at buffer segment
|
||||
mov word ptr ioctlRH+21,es
|
||||
call fdos_ax_crit ; Execute the Function and
|
||||
jc fdos_error ; return all error codes
|
||||
ret
|
||||
|
||||
; ***********************************************
|
||||
; *** Sub Function 08 - Removable Media ***
|
||||
; *** Sub Function 0E - Get Logical Drive ***
|
||||
; *** Sub Function 0F - Set Logical Drive ***
|
||||
; ***********************************************
|
||||
;
|
||||
f4408:
|
||||
f440E:
|
||||
f440F:
|
||||
call fdos_drive ; Execute the Function
|
||||
jmp return_AX_CLC ; return result in AX
|
||||
|
||||
|
||||
fdos_drive:
|
||||
;----------
|
||||
xor bh,bh ; BX = the drive number
|
||||
fdos_handle:
|
||||
;----------
|
||||
mov FD_HANDLE,bx
|
||||
call fdos_crit ; then execute the FDOS
|
||||
jnc fdos_OK ; exit on Error
|
||||
add sp,WORD ; discard near return address
|
||||
fdos_error:
|
||||
jmp error_ret ; and return the error
|
||||
fdos_OK:
|
||||
mov ax,FD_IOCTLSTAT ; get the return information
|
||||
ret
|
||||
eject
|
||||
; *****************************
|
||||
; *** CCP/M Extension ***
|
||||
; *** Sub Function 52 ***
|
||||
; *** Return CCP/M Version ***
|
||||
; *****************************
|
||||
;
|
||||
f4452:
|
||||
if DOS5
|
||||
mov es,current_psp ; version is kept in the PSP
|
||||
cmp PSP_VERSION,0FF00h ; sub-version of 255 ?
|
||||
jae f4452_10 ; then say we ain't DRDOS
|
||||
endif
|
||||
mov ax,cs:os_version ; Get OS ver number
|
||||
mov dx,cs:patch_version
|
||||
call return_DX ; return in DX
|
||||
jmp return_AX_CLC ; return in AX
|
||||
|
||||
if DOS5
|
||||
f4452_10:
|
||||
jmp invalid_function
|
||||
endif
|
||||
|
||||
if PASSWORD
|
||||
|
||||
; *****************************
|
||||
; *** CCP/M Extension ***
|
||||
; *** Sub Function 54 ***
|
||||
; *** Set Default PASSWORD ***
|
||||
; *****************************
|
||||
;
|
||||
f4454:
|
||||
mov FD_IOCTLFUNC,0Bh ; save subfunction for FDOS
|
||||
jmp fdos_nocrit ; Execute the Function
|
||||
|
||||
endif
|
||||
|
||||
|
||||
; *****************************
|
||||
; *** CCP/M Extension ***
|
||||
; *** Sub Function 56 ***
|
||||
; *** History Buffer Cntrl ***
|
||||
; *****************************
|
||||
;
|
||||
; This function changes the default history buffer used for func0A:
|
||||
;
|
||||
; On Entry:
|
||||
; DL = 0 -> Standard Process Buffer
|
||||
; DL = 1 -> Command.com history Buffer
|
||||
; DL = 2 -> Toggle history enable/disable
|
||||
; DL = 3 -> Get current state of history buffers
|
||||
; DL = 4 -> Toggle insert mode
|
||||
;
|
||||
; On Exit:
|
||||
; AL = previous history state (Bit 0 set if history on)
|
||||
; Bit 0 -> set if history enabled
|
||||
; Bit 1 -> set if insert enabled
|
||||
; Bit 7 -> set if command history buffer
|
||||
;
|
||||
f4456:
|
||||
mov ax,cle_state ; Get the current History Status
|
||||
cmp dl,2 ; are we disabling/enabling ?
|
||||
jb f4456_10 ; below, switch buffers
|
||||
je f4456_05 ; yes, try and do it
|
||||
cmp dl,4 ; toggle insert state ?
|
||||
jne f4456_20 ; no, return existing state
|
||||
xor al,RLF_INS ; toggle insert state
|
||||
jmps f4456_20 ; set and return prev state
|
||||
|
||||
f4456_05:
|
||||
mov cl,RLF_ENHANCED ; we are interested in enhancements
|
||||
test @hist_flg,cl ; only if history possible
|
||||
jz f4456_20 ; just return existing state
|
||||
xor al,cl ; invert current setting
|
||||
; and fall thru' to enable/disable
|
||||
; standard buffer (never called
|
||||
; by COMMAND...)
|
||||
f4456_10:
|
||||
or al,RLF_INROOT ; assume we are in the root
|
||||
if IDLE_DETECT
|
||||
or idle_flags,IDLE_COMMAND
|
||||
endif
|
||||
test dl,1 ; Get new state and mask bit
|
||||
jnz f4456_20
|
||||
and al,not RLF_INROOT ; we are in application buffer
|
||||
if IDLE_DETECT
|
||||
and idle_flags,not IDLE_COMMAND
|
||||
endif
|
||||
f4456_20:
|
||||
xchg ax,cle_state ; set state, returning old state
|
||||
ret
|
||||
|
||||
|
||||
; *****************************
|
||||
; *** CCP/M Extension ***
|
||||
; *** Sub Function 58 ***
|
||||
; *** Private Data Func ***
|
||||
; *****************************
|
||||
;
|
||||
; On Exit ES:BX points to our DRDOS private data.
|
||||
; ES:AX points to the IDLE Data Area
|
||||
|
||||
f4458:
|
||||
mov bx,offset @private_data
|
||||
call return_DSBX_as_ESBX ; return ES:BX pointing to private data
|
||||
mov ax,offset idle_data
|
||||
jmp return_AX_CLC
|
||||
|
||||
|
||||
|
||||
|
||||
PCM_RODATA CSEG WORD
|
||||
;
|
||||
; PCDOS Sub-Functions Only
|
||||
;
|
||||
func44_ft dw f4400
|
||||
dw f4401
|
||||
dw f4402
|
||||
dw f4403
|
||||
dw f4404
|
||||
dw f4405
|
||||
dw f4406
|
||||
dw f4407
|
||||
dw f4408
|
||||
dw f4409
|
||||
dw f440A
|
||||
dw f440B
|
||||
dw f440C
|
||||
dw f440D
|
||||
dw f440E
|
||||
dw f440F
|
||||
dw f4410
|
||||
dw f4411
|
||||
dosf44_ftl equ (offset $ - offset func44_ft)/2
|
||||
;
|
||||
; CCP/M Sub-Functions Only
|
||||
;
|
||||
dw f4452 ; 4452 OS version no
|
||||
dw invalid_function ; 4453 Invalid Function
|
||||
if PASSWORD
|
||||
dw f4454 ; 4454 set default password
|
||||
else
|
||||
dw invalid_function ; 4454 was set default password
|
||||
endif
|
||||
dw invalid_function ; 4455 Invalid Function
|
||||
dw f4456 ; 4456 history buffer support
|
||||
dw invalid_function ; 4457 was share enable/disable
|
||||
dw f4458 ; 4458 pointer to private data
|
||||
|
||||
ourf44_ftl equ (offset $ - offset func44_ft)/2
|
||||
|
||||
PCMODE_DATA DSEG WORD
|
||||
extrn net_delay:word, net_retry:word
|
||||
extrn @hist_flg:byte
|
||||
extrn @private_data:byte
|
||||
if IDLE_DETECT
|
||||
extrn idle_data:word
|
||||
extrn idle_flags:word
|
||||
endif
|
||||
extrn cle_state:word
|
||||
extrn ioctlRH:byte
|
||||
extrn dos_version:word
|
||||
extrn current_psp:word
|
||||
|
||||
end
|
||||
109
IBMDOS/MAKE.BAT
Normal file
109
IBMDOS/MAKE.BAT
Normal file
@@ -0,0 +1,109 @@
|
||||
@ECHO off
|
||||
|
||||
SET TOOLS=C:\TOOLS
|
||||
|
||||
REM
|
||||
REM YOU SHOULD NOT HAVE TO CHANGE ANYTHING BELOW THIS LINE.
|
||||
REM
|
||||
|
||||
REM Define local Caldera tools
|
||||
SET LOCTOOLS=..\LTOOLS
|
||||
|
||||
IF NOT EXIST BIN\*.* MD BIN
|
||||
|
||||
REM ******************************************
|
||||
REM Build the .A86 files next, get the obj's
|
||||
REM ******************************************
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\buffers.a86 .\bin\buffers.obj $szpz /DDELWATCH /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\dirs.a86 .\bin\dirs.obj $szpz /DDELWATCH
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\fdos.a86 .\bin\fdos.obj $szpz /DDELWATCH /DKANJI /DDOS5 /DPASSWORD /DJOIN /DUNDELETE
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\fcbs.a86 .\bin\fcbs.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\bdevio.a86 .\bin\bdevio.obj $szpz /DDELWATCH /DDOS5 /DJOIN
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\cdevio.a86 .\bin\cdevio.obj $szpz /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\fioctl.a86 .\bin\fioctl.obj $szpz /DPASSWORD /DJOIN /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\redir.a86 .\bin\redir.obj $szpz /DKANJI /DDOS5 /DJOIN
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\header.a86 .\bin\header.obj $szpz /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\pcmif.a86 .\bin\pcmif.obj $szpz /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\cio.a86 .\bin\cio.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\disk.a86 .\bin\disk.obj $szpz /DDELWATCH
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\ioctl.a86 .\bin\ioctl.obj $szpz /DPASSWORD /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\misc.a86 .\bin\misc.obj $szpz /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\support.a86 .\bin\support.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\dosmem.a86 .\bin\dosmem.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\error.a86 .\bin\error.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\process.a86 .\bin\process.obj $szpz /DDOS5
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\network.a86 .\bin\network.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\int2f.a86 .\bin\int2f.obj $szpz /DDOS5 /DDELWATCH
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\history.a86 .\bin\history.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
%LOCTOOLS%\rasm_sh %LOCTOOLS%\rasm86.exe . .\cmdline.a86 .\bin\cmdline.obj
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
|
||||
copy ibmdos.inp .\BIN
|
||||
CD .\BIN
|
||||
..\%LOCTOOLS%\linkcmd.exe ibmdos[i]
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
CD ..
|
||||
%LOCTOOLS%\bin2asc -ob -s128 .\BIN\ibmdos.tmp .\BIN\ibmdos.com
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
%LOCTOOLS%\compbdos .\BIN\ibmdos.com
|
||||
IF ERRORLEVEL 1 GOTO FAILED
|
||||
goto exit
|
||||
|
||||
:failed
|
||||
ECHO Error in Build!
|
||||
goto exit
|
||||
|
||||
:badtool
|
||||
ECHO Can't find that tool!
|
||||
|
||||
:exit
|
||||
REM *********
|
||||
REM CLEANUP
|
||||
REM *********
|
||||
|
||||
SET TOOLS=
|
||||
SET LTOOLS=
|
||||
|
||||
1829
IBMDOS/MISC.A86
Normal file
1829
IBMDOS/MISC.A86
Normal file
File diff suppressed because it is too large
Load Diff
328
IBMDOS/MODFUNC.DEF
Normal file
328
IBMDOS/MODFUNC.DEF
Normal file
@@ -0,0 +1,328 @@
|
||||
; File : $MODFUNC.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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
;
|
||||
;****************************************************************;
|
||||
;* *;
|
||||
;* OS386 Inter-Module Function Definitions *;
|
||||
;* *;
|
||||
;****************************************************************;
|
||||
|
||||
OS386_FUNC equ 2780h ; AX value
|
||||
OS386_INT equ 02Fh ; interrupt number
|
||||
|
||||
; Module definitions
|
||||
USER equ 0
|
||||
SUP equ 1
|
||||
RTM equ 2
|
||||
MEM equ 3
|
||||
DOM equ 4
|
||||
VM equ 5
|
||||
DPMI equ 6
|
||||
DPMS equ 7
|
||||
MIN_MODULE equ 5
|
||||
MAX_MODULE equ 15
|
||||
|
||||
; Internal SUP functions
|
||||
F_NotImp equ SUP + 0100h * 00 ; Function Not Implemented
|
||||
F_Illegal equ SUP + 0100h * 01 ; Illegal Function
|
||||
F_ModuleReg equ SUP + 0100h * 02 ; Register Module
|
||||
F_SysDatAlloc equ SUP + 0100h * 03 ; allocate SYSDAT memory
|
||||
F_SysDat equ SUP + 0100h * 04 ; return SYSDAT selector
|
||||
F_MoveReal equ SUP + 0100h * 05 ; move real mode memory to protected mode
|
||||
F_Reboot equ SUP + 0100h * 06
|
||||
F_Debug equ SUP + 0100h * 07
|
||||
F_ForeCheck equ SUP + 0100h * 08 ; Check for foreground
|
||||
F_RegisterVxD equ SUP + 0100h * 09 ; Register VxD with system
|
||||
F_UnloadVxD equ SUP + 0100h * 10 ; Unload VxD hook
|
||||
F_PostInit equ SUP + 0100h * 11 ; end of initialisation phase
|
||||
F_AllocWindow equ SUP + 0100h * 12 ; allocate a 4K mapping window
|
||||
F_RegisterBoot equ SUP + 0100h * 13 ; register reboot addresses
|
||||
F_EnquireBoot equ SUP + 0100h * 14 ; enquire if reboot active
|
||||
F_GetDebugLevel equ SUP + 0100h * 15 ; get debug level
|
||||
F_SetDebugLevel equ SUP + 0100h * 16 ; set debug level
|
||||
F_Version equ SUP + 0100h * 17 ; version check
|
||||
F_V86BPInstall equ SUP + 0100h * 18 ; install v86 break point
|
||||
F_V86BPRemove equ SUP + 0100h * 19 ; remove v86 break point
|
||||
F_V86BPOffer equ SUP + 0100h * 20 ; offer int 3 as v86 break point
|
||||
F_LoaderCleanup equ SUP + 0100h * 21 ; offer the chance to cleanup
|
||||
F_RegisterVxDWindow equ SUP + 0100h * 22 ; Register VxD mapping window
|
||||
F_RegisterPNW equ SUP + 0100h * 23 ; Register PNW info
|
||||
|
||||
; Internal RTM functions
|
||||
F_PDCount equ RTM + 0100h * 01
|
||||
F_FlgWait equ RTM + 0100h * 02
|
||||
F_FlgSet equ RTM + 0100h * 03
|
||||
F_QMake equ RTM + 0100h * 04
|
||||
F_QOpen equ RTM + 0100h * 05
|
||||
F_QDelete equ RTM + 0100h * 06
|
||||
F_QRead equ RTM + 0100h * 07
|
||||
F_CQread equ RTM + 0100h * 08
|
||||
F_QWrite equ RTM + 0100h * 09
|
||||
F_CQWrite equ RTM + 0100h * 10
|
||||
F_Delay equ RTM + 0100h * 11
|
||||
F_Dispatch equ RTM + 0100h * 12
|
||||
F_PTerm equ RTM + 0100h * 13
|
||||
F_PCreat equ RTM + 0100h * 14
|
||||
F_SetPrior equ RTM + 0100h * 15
|
||||
F_PDAddr equ RTM + 0100h * 16
|
||||
F_PAbort equ RTM + 0100h * 17
|
||||
F_Sleep equ RTM + 0100h * 18
|
||||
F_Wakeup equ RTM + 0100h * 19
|
||||
F_FindPDName equ RTM + 0100h * 20
|
||||
F_SetFlags equ RTM + 0100h * 21
|
||||
F_EndOfInterrupt equ RTM + 0100h * 22 ; Register PIC end of interrupt
|
||||
F_NoAbort equ RTM + 0100h * 23
|
||||
F_OkAbort equ RTM + 0100h * 24
|
||||
F_FlagStatus equ RTM + 0100h * 25
|
||||
F_QRdMX equ RTM + 0100h * 26
|
||||
F_QWrMX equ RTM + 0100h * 27
|
||||
F_FlgAlloc equ RTM + 0100h * 28
|
||||
F_FlgFree equ RTM + 0100h * 29
|
||||
F_NumFlags equ RTM + 0100h * 30
|
||||
F_NDQRead equ RTM + 0100h * 31
|
||||
F_FlgWWTO equ RTM + 0100h * 32
|
||||
F_UdaAlloc equ RTM + 0100h * 33
|
||||
F_UdaFree equ RTM + 0100h * 34
|
||||
F_PFreeze equ RTM + 0100h * 35
|
||||
F_PThaw equ RTM + 0100h * 36
|
||||
F_CritEnter equ RTM + 0100h * 37
|
||||
F_CritExit equ RTM + 0100h * 38
|
||||
F_PCreate equ RTM + 0100h * 39
|
||||
F_PDList equ RTM + 0100h * 40
|
||||
F_PDToName equ RTM + 0100h * 41
|
||||
F_PDToStatus equ RTM + 0100h * 42
|
||||
F_PDToDomain equ RTM + 0100h * 43
|
||||
F_GetPrior equ RTM + 0100h * 44
|
||||
F_QDList equ RTM + 0100h * 45
|
||||
F_QDToName equ RTM + 0100h * 46
|
||||
F_QDToMsgLen equ RTM + 0100h * 47
|
||||
F_QDToMaxMsgs equ RTM + 0100h * 48
|
||||
F_QDToNqPD equ RTM + 0100h * 49
|
||||
F_QDToDqPD equ RTM + 0100h * 50
|
||||
F_QDToNumMsgs equ RTM + 0100h * 51
|
||||
F_QDToFlags equ RTM + 0100h * 52
|
||||
F_NameToQD equ RTM + 0100h * 53
|
||||
F_NameToPD equ RTM + 0100h * 54
|
||||
F_MutexAlloc equ RTM + 0100h * 55
|
||||
F_MutexFree equ RTM + 0100h * 56
|
||||
F_MutexEnter equ RTM + 0100h * 57
|
||||
F_MutexCEnter equ RTM + 0100h * 58
|
||||
F_MutexExit equ RTM + 0100h * 59
|
||||
F_Slice equ RTM + 0100h * 60
|
||||
F_TickLength equ RTM + 0100h * 61
|
||||
F_ProcessID equ RTM + 0100h * 62
|
||||
F_QClose equ RTM + 0100h * 63
|
||||
F_QDispose equ RTM + 0100h * 64
|
||||
F_PDToFlags equ RTM + 0100h * 65
|
||||
F_PDToDParam equ RTM + 0100h * 66
|
||||
F_ReleaseMX equ RTM + 0100h * 67
|
||||
F_SimulateInt equ RTM + 0100h * 68
|
||||
F_SetQFlags equ RTM + 0100h * 69
|
||||
F_TickRate equ RTM + 0100h * 70
|
||||
|
||||
; Internal MEMORY functions
|
||||
F_PdirGet equ MEM + 0100h * 01
|
||||
F_PdirSet equ MEM + 0100h * 02
|
||||
F_PageAlloc equ MEM + 0100h * 03
|
||||
F_RealAllocG equ MEM + 0100h * 04
|
||||
F_RealAllocI equ MEM + 0100h * 05
|
||||
F_PtblRead equ MEM + 0100h * 06
|
||||
F_PtblWrite equ MEM + 0100h * 07
|
||||
F_PageGet equ MEM + 0100h * 08
|
||||
F_PageSet equ MEM + 0100h * 09
|
||||
F_PagesAlloc equ MEM + 0100h * 10
|
||||
F_PageFree equ MEM + 0100h * 11
|
||||
F_MemAlloc equ MEM + 0100h * 12
|
||||
F_MemFree equ MEM + 0100h * 13
|
||||
F_MemSize equ MEM + 0100h * 14
|
||||
F_MemResize equ MEM + 0100h * 15
|
||||
F_DescAlloc equ MEM + 0100h * 16
|
||||
F_DescFree equ MEM + 0100h * 17
|
||||
F_DescGet equ MEM + 0100h * 18
|
||||
F_DescSet equ MEM + 0100h * 19
|
||||
F_DescMemAlloc equ MEM + 0100h * 20
|
||||
F_DescMemFree equ MEM + 0100h * 21
|
||||
F_DescMemSize equ MEM + 0100h * 22
|
||||
F_DescMemResize equ MEM + 0100h * 23
|
||||
F_PageLock equ MEM + 0100h * 24
|
||||
F_PageUnlock equ MEM + 0100h * 25
|
||||
F_PageLockAny equ MEM + 0100h * 26
|
||||
F_PageUnlockReuse equ MEM + 0100h * 27
|
||||
F_PageLockNone equ MEM + 0100h * 28
|
||||
F_PageUnlockNone equ MEM + 0100h * 29
|
||||
F_CallRealRaw equ MEM + 0100h * 30 ; Call real mode (SS:ESP supplied)
|
||||
F_IntRealRaw equ MEM + 0100h * 31 ; Do real mode interrupt (SS:ESP supplied)
|
||||
F_CallReal equ MEM + 0100h * 32 ; Call real mode with RETF frame
|
||||
F_IntReal equ MEM + 0100h * 33 ; Do real mode interrupt
|
||||
F_PagedCallReal equ MEM + 0100h * 34 ; Paged real mode call
|
||||
F_PagedIntReal equ MEM + 0100h * 35 ; Paged real mode interrupt
|
||||
F_CallIretReal equ MEM + 0100h * 36 ; Call real mode with IRET frame
|
||||
F_CallIretRealRaw equ MEM + 0100h * 37 ; Call real mode with IRET frame (SS:ESP supplied)
|
||||
F_CallProt16 equ MEM + 0100h * 38 ; Call protected mode 16 bit code
|
||||
F_CallProt32 equ MEM + 0100h * 39 ; Call protected mode 32 bit code
|
||||
F_IAddPage equ MEM + 0100h * 40 ; add kernel instance data
|
||||
F_BankPageLock equ MEM + 0100h * 41
|
||||
F_BankPageUnlock equ MEM + 0100h * 42
|
||||
F_BankPageLockAny equ MEM + 0100h * 43
|
||||
F_BankPageUnlockReuse equ MEM+0100h * 44
|
||||
F_BankPageLockNone equ MEM + 0100h * 45
|
||||
F_BankPageUnlockNone equ MEM+ 0100h * 46
|
||||
F_GateAlloc equ MEM + 0100h * 47
|
||||
F_GateFree equ MEM + 0100h * 48
|
||||
F_MemTotalFree equ MEM + 0100h * 49
|
||||
F_AddressSpace equ MEM + 0100h * 50
|
||||
F_MemTotal equ MEM + 0100h * 51
|
||||
F_DescRead equ MEM + 0100h * 52
|
||||
F_DescWrite equ MEM + 0100h * 53
|
||||
F_GetStack equ MEM + 0100h * 54
|
||||
F_SetStack equ MEM + 0100h * 55
|
||||
|
||||
; Internal DOMain functions
|
||||
|
||||
F_DAlloc equ DOM + 0100h * 00 ; create a new domain
|
||||
F_DFree equ DOM + 0100h * 01 ; free up a domain
|
||||
F_DGet equ DOM + 0100h * 02 ; get current domain
|
||||
F_DSet equ DOM + 0100h * 03 ; switch to another domain
|
||||
F_SWIntHandler equ DOM + 0100h * 04 ; Install Software Interrupt handler
|
||||
F_PFaultHandler equ DOM + 0100h * 05 ; Install Page Fault handler
|
||||
F_IOExHandler equ DOM + 0100h * 06 ; Install I/O Exception handler
|
||||
F_GenExHandler equ DOM + 0100h * 07 ; Install General Exception handler
|
||||
F_HWIntHandler equ DOM + 0100h * 08 ; Install HW int handler
|
||||
F_IOBitGet equ DOM + 0100h * 09 ; Get domain IO bitmap
|
||||
F_IOBitSet equ DOM + 0100h * 10 ; Set domain IO bitmap
|
||||
F_BankIOBitGet equ DOM + 0100h * 11 ; Get domain banked IO bitmap
|
||||
F_BankIOBitSet equ DOM + 0100h * 12 ; Set domain banked IO bitmap
|
||||
F_BankMemGet equ DOM + 0100h * 13 ; Read domain banked memory
|
||||
F_BankMemSet equ DOM + 0100h * 14 ; Write domain banked memory
|
||||
F_BankPageGet equ DOM + 0100h * 15 ; Get domain banked page table entry
|
||||
F_BankPageSet equ DOM + 0100h * 16 ; Set domain banked page table entry
|
||||
F_RegInstData equ DOM + 0100h * 17 ; register DOS instance data
|
||||
F_NProcesses equ DOM + 0100h * 18 ; Get number of processes in domain
|
||||
F_DFreeze equ DOM + 0100h * 19 ; Suspend domain
|
||||
F_DThaw equ DOM + 0100h * 20 ; Unsuspend domain
|
||||
F_DFork equ DOM + 0100h * 21 ; Fork domain
|
||||
F_DAbort equ DOM + 0100h * 22 ; Abort all processes in domain
|
||||
F_UnlinkHandler equ DOM + 0100h * 23 ; Uninstall a handler
|
||||
F_HWIntDfltHandler equ DOM + 0100h * 24 ; Install HW int default handler
|
||||
F_VHWIntHandler equ DOM + 0100h * 25 ; Install Virtual HW int handler
|
||||
F_VHWIntDfltHandler equ DOM + 0100h * 26 ; Install Virtual HW int default handler
|
||||
F_SwapInHandler equ DOM + 0100h * 27 ; Install process swap in handler
|
||||
F_SwapOutHandler equ DOM + 0100h * 28 ; Install process swap out handler
|
||||
F_DosStartup equ DOM + 0100h * 29 ; Statup a DOS session
|
||||
F_DosShutdown equ DOM + 0100h * 30 ; Terminate a DOS session
|
||||
F_PCreateHandler equ DOM + 0100h * 31 ; Install process create handler
|
||||
F_PDeleteHandler equ DOM + 0100h * 32 ; Install process terminate handler
|
||||
F_RootPD equ DOM + 0100h * 33 ; Get Domain Root Process
|
||||
F_DForeground equ DOM + 0100h * 34 ; Domain has just switched to foreground
|
||||
F_DBackground equ DOM + 0100h * 35 ; Domain will be switching to background
|
||||
F_MapHMA equ DOM + 0100h * 36 ; Map Domains HMA
|
||||
F_AddInstData equ DOM + 0100h * 37 ; add DOS instance data
|
||||
F_DMemFree equ DOM + 0100h * 38 ; get memory available to this domain
|
||||
F_DMemTotal equ DOM + 0100h * 39 ; get memory allocated to this domain
|
||||
F_DGetMemLimit equ DOM + 0100h * 40 ; get limit on local memory allocations
|
||||
F_DSetMemLimit equ DOM + 0100h * 41 ; set limit on local memory allocations
|
||||
F_ReflectInt21 equ DOM + 0100h * 42 ; support for protected mode Int 21's
|
||||
F_DTestRegion equ DOM + 0100h * 43 ; test region for global/local memory
|
||||
F_Switcher equ DOM + 0100h * 44 ; make task switcher call
|
||||
F_HandlerCleanup equ DOM + 0100h * 45 ; debugger hook - remove all handlers for a selector
|
||||
F_DFlagGet equ DOM + 0100h * 46 ; get Domain Flags
|
||||
F_DFlagSet equ DOM + 0100h * 47 ; set Domain Flags
|
||||
F_DSwitchHandler equ DOM + 0100h * 48 ; Install domain switch handler
|
||||
F_GIOExHandler equ DOM + 0100h * 49 ; Install Global I/O Exception handler
|
||||
|
||||
;------------
|
||||
|
||||
; VM Functions
|
||||
|
||||
F_VMProtInit equ VM + 0100h * 00 ; Protected Mode initialisation internal)
|
||||
|
||||
F_LoadMT equ VM + 0100h * 01 ; Load MultiTasking
|
||||
F_UnloadMT equ VM + 0100h * 02 ; Unload MultiTasking
|
||||
F_ConsoleFree equ VM + 0100h * 03 ; Save Console if enabled, then free it
|
||||
F_ConsoleGet equ VM + 0100h * 04 ; Get Console, then restore if enabled
|
||||
F_ConsoleSaveEnable equ VM +0100h * 05 ; Enable Console save/restore
|
||||
F_ConsoleSaveDisable equ VM +0100h * 06 ; Disable Console save/restore
|
||||
|
||||
F_TMInit equ VM + 0100h * 07 ; Task Manager Init
|
||||
F_GetKey equ VM + 0100h * 08 ; Domain Manager to Keyboard Handler
|
||||
F_KeyScanEnable equ VM + 0100h * 09 ; Enable hotkey scanning
|
||||
F_KeyScanDisable equ VM + 0100h * 10 ; Disable hotkey scanning
|
||||
F_ConsoleOwner equ VM + 0100h * 11 ; Get console owner domain id
|
||||
F_DMAHandlerEnable equ VM + 0100h * 12 ; Re-enable DMA address translation
|
||||
F_DMAHandlerDisable equ VM + 0100h * 13 ; Disable DMA address translation
|
||||
F_SetSerialTimeout equ VM + 0100h * 14 ; Set Serial Port Timeout
|
||||
F_SetParallelTimeout equ VM+ 0100h * 15 ; Set Parallel Port Timeout
|
||||
F_VCPIEntry equ VM + 0100h * 16 ; Domain is going into VCPI mode
|
||||
F_VCPIExit equ VM + 0100h * 17 ; Domain has probably come out of VCPI mode
|
||||
F_SetGlobalMsgMode equ VM + 0100h * 18 ; Enter global message display mode
|
||||
F_DisplayGlobalMsg equ VM + 0100h * 19 ; Ditto, plus display message
|
||||
F_ExitGlobalMsgMode equ VM + 0100h * 20 ; Exit global message display mode
|
||||
F_SetDomainMsgMode equ VM + 0100h * 21 ; Enter domain message display mode
|
||||
F_DisplayDomainMsg equ VM + 0100h * 22 ; Ditto, plus display message
|
||||
F_ExitDomainMsgMode equ VM + 0100h * 23 ; Exit domain message display mode
|
||||
F_DisplayFatalMsg equ VM + 0100h * 24 ; Display fatal message
|
||||
F_SetSerialBase equ VM + 0100h * 25 ; Set Serial port base address
|
||||
F_SetParallelBase equ VM + 0100h * 26 ; Set Parallel port base address
|
||||
F_SetSerialIRQ equ VM + 0100h * 27 ; Set Serial port IRQ number
|
||||
F_SetParallelIRQ equ VM + 0100h * 28 ; Set Parallel port IRQ number
|
||||
F_ResetVideo equ VM + 0100h * 29 ; EMERGENCY reset of the video system
|
||||
F_SetMouseIRQ equ VM + 0100h * 30 ; Set mouse IRQ
|
||||
F_CheckNotIdle equ VM + 0100h * 31 ; Check if we are idle or not
|
||||
F_GetMouseInfo equ VM + 0100h * 32
|
||||
F_GetSerialOwner equ VM + 0100h * 33
|
||||
F_GetSerialTimeout equ VM + 0100h * 34
|
||||
F_GetParallelOwner equ VM + 0100h * 35
|
||||
F_GetParallelTimeout equ VM+ 0100h * 36
|
||||
|
||||
LAST_VM_FUNC equ 36
|
||||
|
||||
;------------
|
||||
|
||||
; DPMI Functions
|
||||
|
||||
; These "DPMI" functions are those that are provided by the DPMI module via the
|
||||
; Vladivar interface. True DPMI functions should be accessed via int 31h as per
|
||||
; the DPMI spec.
|
||||
|
||||
F_InitDPMI equ DPMI + 0100h * 0 ; used internally by DPMI. Do not call.
|
||||
F_DescAllocLDT equ DPMI + 0100H * 1 ; allocate an LDT descriptor
|
||||
F_DescFreeLDT equ DPMI + 0100H * 2 ; free an LDT descriptor
|
||||
F_DescGetLDT equ DPMI + 0100H * 3 ; same as F_DescGet, but for LDT
|
||||
F_DescSetLDT equ DPMI + 0100H * 4 ; same as F_DescSet, but for LDT
|
||||
F_DescAllocInt21 equ DPMI + 0100H * 5 ; allocate an LDT descriptor for pmode
|
||||
; int 21 memory allocation.
|
||||
F_WhereIsDPMI equ DPMI + 0100H * 6 ; return address of DPMI global data
|
||||
|
||||
LAST_DPMI_FUNC equ 6
|
||||
|
||||
130
IBMDOS/MSDOS.EQU
Normal file
130
IBMDOS/MSDOS.EQU
Normal file
@@ -0,0 +1,130 @@
|
||||
; File : $MSDOS.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
|
||||
|
||||
|
||||
MS_P_TERMCPM equ 00H
|
||||
MS_C_READ equ 01H
|
||||
MS_C_WRITE equ 02H
|
||||
MS_A_READ equ 03H
|
||||
MS_A_WRITE equ 04H
|
||||
MS_L_WRITE equ 05H
|
||||
MS_C_RAWIO equ 06H
|
||||
MS_C_RAWIN equ 07H
|
||||
MS_C_NOECHO equ 08H
|
||||
MS_C_WRITESTR equ 09H
|
||||
MS_C_READSTR equ 0aH
|
||||
MS_C_STAT equ 0bH
|
||||
MS_C_FLUSH equ 0cH
|
||||
MS_DRV_ALLRESET equ 0dH
|
||||
MS_DRV_SET equ 0eH
|
||||
MS_F_OPEN equ 0fH
|
||||
MS_F_CLOSE equ 10H
|
||||
MS_F_SFIRST equ 11H
|
||||
MS_F_SNEXT equ 12H
|
||||
MS_F_DELETE equ 13H
|
||||
MS_F_READ equ 14H
|
||||
MS_F_WRITE equ 15H
|
||||
MS_F_MAKE equ 16H
|
||||
MS_F_RENAME equ 17H
|
||||
MS_DRV_GET equ 19H
|
||||
MS_F_DMAOFF equ 1aH
|
||||
MS_DRV_ALLOC equ 1bH
|
||||
MS_DRV_ALLOCSPEC equ 1cH
|
||||
MS_F_READRAND equ 21H
|
||||
MS_F_WRITERAND equ 22H
|
||||
MS_F_SIZE equ 23H
|
||||
MS_F_RANDREC equ 24H
|
||||
MS_S_SETINT equ 25H
|
||||
MS_P_MKPSP equ 26H
|
||||
MS_F_READBLK equ 27H
|
||||
MS_F_WRITEBLK equ 28H
|
||||
MS_F_PARSE equ 29H
|
||||
MS_T_GETDATE equ 2aH
|
||||
MS_T_SETDATE equ 2bH
|
||||
MS_T_GETTIME equ 2cH
|
||||
MS_T_SETTIME equ 2dH
|
||||
MS_F_VERIFY equ 2eH
|
||||
MS_F_DMAGET equ 2fH
|
||||
MS_S_BDOSVER equ 30H
|
||||
MS_P_TERMKEEP equ 31H
|
||||
MS_S_BREAK equ 33H
|
||||
MS_S_GETINT equ 35H
|
||||
MS_DRV_SPACE equ 36H
|
||||
MS_S_COUNTRY equ 38H
|
||||
MS_X_MKDIR equ 39H
|
||||
MS_X_RMDIR equ 3aH
|
||||
MS_X_CHDIR equ 3bH
|
||||
MS_X_CREAT equ 3cH
|
||||
MS_X_OPEN equ 3dH
|
||||
MS_X_CLOSE equ 3eH
|
||||
MS_X_READ equ 3fH
|
||||
MS_X_WRITE equ 40H
|
||||
MS_X_UNLINK equ 41H
|
||||
MS_X_LSEEK equ 42H
|
||||
MS_X_CHMOD equ 43H
|
||||
MS_X_IOCTL equ 44H
|
||||
MS_X_DUP equ 45H
|
||||
MS_X_DUP2 equ 46H
|
||||
MS_X_CURDIR equ 47H
|
||||
MS_M_ALLOC equ 48H
|
||||
MS_M_FREE equ 49H
|
||||
MS_M_SETBLOCK equ 4aH
|
||||
MS_X_EXEC equ 4bH
|
||||
MS_X_EXIT equ 4cH
|
||||
MS_X_WAIT equ 4dH
|
||||
MS_X_FIRST equ 4eH
|
||||
MS_X_NEXT equ 4fH
|
||||
MS_P_SETPSP equ 50H
|
||||
MS_F_GETVERIFY equ 54H
|
||||
MS_X_RENAME equ 56H
|
||||
MS_X_DATETIME equ 57H
|
||||
MS_M_STRATEGY equ 58h
|
||||
MS_F_ERROR equ 59H
|
||||
MS_X_MKTEMP equ 5aH
|
||||
MS_X_MKNEW equ 5bH
|
||||
MS_F_LOCK equ 5cH
|
||||
MS_X_EXPAND equ 60H
|
||||
MS_P_GETPSP equ 62H
|
||||
MS_X_GETCP equ 6601h
|
||||
MS_X_SETCP equ 6602h
|
||||
MS_X_SETHC equ 67h
|
||||
MS_X_COMMIT equ 68h
|
||||
|
||||
DOS_INT equ 21h ; DOS Entry Point
|
||||
;
|
||||
STDIN equ 0 ; Standard Console Input Handle
|
||||
STDOUT equ 1 ; Standard Console Output Handle
|
||||
STDERR equ 2 ; Standard Error Output
|
||||
STDAUX equ 3 ; Auxilary Device Handle
|
||||
STDPRN equ 4 ; Printer Device Handle
|
||||
122
IBMDOS/MSERROR.EQU
Normal file
122
IBMDOS/MSERROR.EQU
Normal file
@@ -0,0 +1,122 @@
|
||||
; 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
|
||||
; 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
|
||||
|
||||
ED_FUNCTION equ -01 ; invalid function number
|
||||
ED_FILE equ -02 ; file not found
|
||||
ED_PATH equ -03 ; path not found
|
||||
ED_HANDLE equ -04 ; too many open files
|
||||
ED_ACCESS equ -05 ; file access denied
|
||||
ED_H_MATCH equ -06 ; invalid handle number
|
||||
ED_DMD equ -07 ; memory descriptor destroyed
|
||||
ED_MEMORY equ -08 ; insufficient memory
|
||||
ED_BLOCK equ -09 ; invalid memory block addr
|
||||
ED_ENVIRON equ -10 ; invalid environment
|
||||
ED_FORMAT equ -11 ; invalid format
|
||||
ED_ACC_CODE equ -12 ; invalid access code
|
||||
ED_DATA equ -13 ; invalid data
|
||||
ED_DRIVE equ -15 ; invalid drive specified
|
||||
ED_DIR equ -16 ; can't remove current dir
|
||||
ED_DEVICE equ -17 ; not same device
|
||||
ED_ROOM equ -18 ; no more files
|
||||
|
||||
ED_PROTECT equ -19 ; disk write protected
|
||||
ED_BADUNIT equ -20 ; invalid drive specified
|
||||
ED_NOTREADY equ -21 ; drive doesn't respond
|
||||
ED_BADCMD equ -22 ; invalid command to driver
|
||||
ED_BADDATA equ -23 ; data CRC error
|
||||
ED_BADRHLEN equ -24 ; (shouldn't happen)
|
||||
ED_BADSEEK equ -25 ; can't seek to track
|
||||
ED_BADMEDIA equ -26 ; unrecognizable medium
|
||||
ED_RNF equ -27 ; record/sector not found
|
||||
ED_NOPAPER equ -28 ; printer error
|
||||
ED_WRFAIL equ -29 ; write failed
|
||||
ED_RDFAIL equ -30 ; read failed
|
||||
ED_GENFAIL equ -31 ; anything failed
|
||||
ED_SHAREFAIL equ -32 ; sharing conflict
|
||||
ED_LOCKFAIL equ -33 ; locking conflict
|
||||
ED_DISKCHG equ -34 ; invalid disk change
|
||||
ED_NOFCBS equ -35 ; FCB table exhausted
|
||||
ED_NOLOCKS equ -36 ; lock list items exhausted
|
||||
ED_NET equ -50 ; Network Request Not Supported
|
||||
|
||||
ED_NETACCESS equ -65 ; file access denied
|
||||
|
||||
ED_NETPWD equ -73 ; Server Password Error
|
||||
ED_NETVER equ -74 ; Incorrect Server version
|
||||
ED_NETREQ equ -75 ; No Local Network Resources
|
||||
ED_NETTIME equ -76 ; Network Time Out Error
|
||||
ED_NETCOMM equ -77 ; Network Communications Error
|
||||
ED_NETSRVR equ -78 ; No Server Network Resources
|
||||
ED_NETLOG equ -79 ; Server Not Logged In
|
||||
|
||||
ED_EXISTS equ -80 ; file already exists
|
||||
ED_MAKE equ -82 ; Cannot Make (Files ??)
|
||||
ED_FAIL equ -83 ; FAIL code returned from INT 24
|
||||
ED_STRUCT equ -84 ; Out of Structures
|
||||
ED_ASSIGN equ -85 ; Already Assigned
|
||||
ED_PASSWORD equ -86 ; Invalid Password
|
||||
ED_PARAM equ -87 ; Invalid Parameter
|
||||
ED_NETWRITE equ -88 ; Network write fault
|
||||
ED_NETFUNC equ -89 ; Function not supported on network
|
||||
ED_COMPONENT equ -90 ; system component not installed
|
||||
ED_LASTERROR equ -90 ; Last Error Number Used
|
||||
|
||||
|
||||
CLASS_RESOURCE equ 1 ; Out of Resource
|
||||
CLASS_TEMP equ 2 ; Temporary Situation
|
||||
CLASS_AUTHOR equ 3 ; Authorization Error
|
||||
CLASS_INTERNAL equ 4 ; Internal System Software Error
|
||||
CLASS_HARDWARE equ 5 ; Hardware Failure
|
||||
CLASS_SYSTEM equ 6 ; Serious System Failure
|
||||
CLASS_APPLIC equ 7 ; Application Program Error
|
||||
CLASS_LOST equ 8 ; File/Item Not Found
|
||||
CLASS_FORMAT equ 9 ; File/Item Illegal Format
|
||||
CLASS_LOCKED equ 10 ; File/Item Locked
|
||||
CLASS_MEDIA equ 11 ; Media Failure
|
||||
CLASS_EXISTS equ 12 ; Item Already Exists
|
||||
CLASS_UNKNOWN equ 13 ; Unknown Classification
|
||||
|
||||
ACT_RETRY equ 1 ; Retry a few times then prompt user
|
||||
ACT_DELAY equ 2 ; Delay then as ACT_RETRY
|
||||
ACT_USER equ 3 ; Prompt user to re-enter data
|
||||
ACT_ABORT equ 4 ; Clean Up then ABORT the process
|
||||
ACT_TERM equ 5 ; Terminate immeadiately NO CLEAN UP
|
||||
ACT_IGNORE equ 6 ; Ignore the Error
|
||||
ACT_URETRY equ 7 ; Retry the error after user intervention
|
||||
|
||||
LOC_UNKNOWN equ 1 ; Unknown error location
|
||||
LOC_BLOCK equ 2 ; Block Device Failure
|
||||
LOC_NET equ 3 ; Network Failure
|
||||
LOC_CHAR equ 4 ; Related to Serial/Character devices
|
||||
LOC_MEMORY equ 5 ; Failure related to Memory
|
||||
151
IBMDOS/NETWORK.A86
Normal file
151
IBMDOS/NETWORK.A86
Normal file
@@ -0,0 +1,151 @@
|
||||
; 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
|
||||
include i:mserror.equ
|
||||
include i:redir.equ
|
||||
include i:doshndl.def
|
||||
|
||||
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
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 5E ***
|
||||
; *** Get Machine Name ***
|
||||
; *****************************
|
||||
;
|
||||
Public func5E
|
||||
func5E:
|
||||
cmp al,1 ! jb f5E00 ; Get Machine Name Sub-Function
|
||||
je f5E01 ; Set Machine Name Sub-Function
|
||||
mov ax,I2F_REDIR_5E ; magic int 2F number
|
||||
jmp func5F_common ; use common routine
|
||||
;
|
||||
; Get the current Machine Name
|
||||
;
|
||||
f5E00:
|
||||
mov di,dx ; Copy the 15 Byte Network Name
|
||||
mov si,offset net_name
|
||||
mov cx,16/2
|
||||
rep movsw
|
||||
; mov ch,name_num ; 00 -> Undefined Name
|
||||
; mov cl,netbios ; 00 -> Name Number
|
||||
mov cx,word ptr netbios
|
||||
call return_CX
|
||||
f5E_success:
|
||||
xor ax,ax ; return zero
|
||||
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
|
||||
mov word ptr netbios,cx
|
||||
inc net_set_count
|
||||
push ds ! push es
|
||||
pop ds ! pop es ; Copy the specified name
|
||||
mov si,dx ; to internal save area
|
||||
mov di,offset net_name
|
||||
mov cx,15 ; Copy 15 byte name leave
|
||||
rep movsb ; Terminating 00
|
||||
push es ! pop ds
|
||||
jmps f5E_success
|
||||
|
||||
|
||||
; *****************************
|
||||
; *** DOS Function 5F ***
|
||||
; *** Network Control ***
|
||||
; *****************************
|
||||
;
|
||||
Public func5F
|
||||
func5F:
|
||||
cmp al,07h
|
||||
je func5F_10
|
||||
cmp al,08h
|
||||
jne func5F_40
|
||||
func5F_10:
|
||||
push ax
|
||||
mov al,dl
|
||||
call get_ldt_raw
|
||||
pop ax
|
||||
jc func5F_30
|
||||
cmp es:word ptr LDT_PDT[bx],1
|
||||
jb func5F_30
|
||||
or es:byte ptr LDT_FLAGS+1[bx],LFLG_PHYSICAL/100h
|
||||
cmp al,07h
|
||||
je func5F_30
|
||||
and es:byte ptr LDT_FLAGS+1[bx],(not LFLG_PHYSICAL)/100h
|
||||
func5F_30:
|
||||
jnc func5F_OK
|
||||
mov ax,ED_DRIVE
|
||||
jmp error_exit
|
||||
|
||||
func5F_40:
|
||||
mov ax,I2F_REDIR_5F ; magic int 2F number
|
||||
|
||||
Public func5F_common
|
||||
func5F_common:
|
||||
push ds
|
||||
push int21AX ; AX passed on the stack..
|
||||
push es
|
||||
call reload_ES ; get the segment registers
|
||||
pop ds ; back to entry state
|
||||
stc ; assume it will fail
|
||||
int 2fh ; pass it on to MSNET
|
||||
pop ds ; throw away word on the stack
|
||||
pop ds
|
||||
jc func5F_error
|
||||
func5F_OK:
|
||||
jmp return_AX_CLC ; return the result
|
||||
func5F_error:
|
||||
neg ax ; our error convention is negative..
|
||||
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
|
||||
104
IBMDOS/PATCH.COD
Normal file
104
IBMDOS/PATCH.COD
Normal file
@@ -0,0 +1,104 @@
|
||||
; File : $PATCH.COD$
|
||||
;
|
||||
; 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
|
||||
;*****************************************************
|
||||
;*
|
||||
;* PATCH AREA -- 256 bytes long
|
||||
;*
|
||||
;*****************************************************
|
||||
|
||||
patch:
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;00-0f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;10-1f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;20-2f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;30-3f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;40-4f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;50-5f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;60-6f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;70-7f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;80-8f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;90-9f
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;a0-af
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;b0-bf
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;c0-cf
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;d0-df
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;e0-ef
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
|
||||
nop ! nop ! nop ! nop ! nop ! nop ;f0-ff
|
||||
nop ! nop ! nop ! nop ! nop ! nop
|
||||
nop ! nop ! nop ! nop
|
||||
1028
IBMDOS/PCMIF.A86
Normal file
1028
IBMDOS/PCMIF.A86
Normal file
File diff suppressed because it is too large
Load Diff
179
IBMDOS/PCMODE.EQU
Normal file
179
IBMDOS/PCMODE.EQU
Normal file
@@ -0,0 +1,179 @@
|
||||
; 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
|
||||
; 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.
|
||||
;
|
||||
|
||||
TRUE equ 0FFFFh ; value of TRUE
|
||||
FALSE equ 0 ; value of FALSE
|
||||
|
||||
TRUE_VERSION equ 6
|
||||
|
||||
IDLE_DETECT equ TRUE ; Check for IDLE Process's
|
||||
|
||||
if IDLE_DETECT
|
||||
IDLE_COMMAND equ 0001h ; Command Processor Active
|
||||
IDLE_DOSFUNC equ 0002h ; DOS Function Called
|
||||
IDLE_INT28 equ 0004h ; INT 28 Called
|
||||
|
||||
IDLE_ON equ 4000h ; ReSet when Idle Checking Enabled
|
||||
IDLE_INIT equ 8000h ; ReSet when $IDLE$ Loaded and Active
|
||||
IDLE_DISABLE equ IDLE_INIT + IDLE_ON
|
||||
|
||||
PROC_IDLE equ 0001 ; Process is IDLE
|
||||
PROC_INT28 equ 0002 ; INT28 Polling Loop
|
||||
PROC_KEYIN equ 0003 ; Keyboard Input
|
||||
PROC_DEVIN equ 0004 ; Device Input Routine
|
||||
endif
|
||||
|
||||
|
||||
STACK_SIZE equ 192 ; Local Stack Size (Levels)
|
||||
MAX_PATHLEN equ 80 ; Maximum Path length
|
||||
MAX_FILELEN equ 13
|
||||
|
||||
;
|
||||
; DOS process termination Codes
|
||||
;
|
||||
TERM_NORMAL equ 0 ; Normal Termination
|
||||
TERM_BREAK equ 1 ; Termination by Control Break
|
||||
TERM_ERROR equ 2 ; Termination by Critical Error
|
||||
TERM_RESIDENT equ 3 ; Terminate and Stay Resident
|
||||
|
||||
;
|
||||
; Critical Error responses from the default INT 24 handler and
|
||||
; the DO_INT24 routine.
|
||||
;
|
||||
ERR_IGNORE equ 0 ; Ignore Error
|
||||
ERR_RETRY equ 1 ; Retry the Operation
|
||||
ERR_ABORT equ 2 ; Terminate the Process
|
||||
ERR_FAIL equ 3 ; Fail Function
|
||||
;
|
||||
OK_FAIL equ 0000$1000b ; Fail is a Valid Response
|
||||
OK_RETRY equ 0001$0000b ; Retry is a Valid Response
|
||||
OK_IGNORE equ 0010$0000b ; Ignore is a valid Response
|
||||
OK_RIF equ 0011$1000b ; All Responsese are Valid
|
||||
OK_RI equ 0011$0000b ; Retry and Ignore are Valid
|
||||
OK_RF equ 0001$1000b ; Retry and Fail are Valid
|
||||
;
|
||||
NO_CRIT_ERRORS equ 0100$0000b ; critical error shouldn't be generated
|
||||
; warning - must match FDOS.A86
|
||||
;
|
||||
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
|
||||
|
||||
reg_AX equ word ptr .00
|
||||
reg_AL equ byte ptr .00
|
||||
reg_AH equ byte ptr .01
|
||||
|
||||
reg_BX equ word ptr .02
|
||||
reg_BL equ byte ptr .02
|
||||
reg_BH equ byte ptr .03
|
||||
|
||||
reg_CX equ word ptr .04
|
||||
reg_CL equ byte ptr .04
|
||||
reg_CH equ byte ptr .05
|
||||
|
||||
reg_DX equ word ptr .06
|
||||
reg_DL equ byte ptr .06
|
||||
reg_DH equ byte ptr .07
|
||||
|
||||
reg_SI equ word ptr .08
|
||||
reg_DI equ word ptr .10
|
||||
reg_BP equ word ptr .12
|
||||
|
||||
reg_DS equ word ptr .14
|
||||
reg_ES equ word ptr .16
|
||||
|
||||
reg_IP equ word ptr .18
|
||||
reg_CS equ word ptr .20
|
||||
reg_FLAGS equ word ptr .22
|
||||
|
||||
; Processor Flags
|
||||
CARRY_FLAG equ 0001h ; Carry Flag
|
||||
ZERO_FLAG equ 0040h ; Zero Flag
|
||||
SIGN_FLAG equ 0080h ; Sign Flag
|
||||
INT_FLAG equ 0200h ; Interrupt Flag
|
||||
DIR_FLAG equ 0400h ; Direction Flag
|
||||
OFLW_FLAG equ 0800h ; OverFlow Flag
|
||||
|
||||
DMD_ID equ es:byte ptr .0 ; id code ('M' or 'Z')
|
||||
DMD_PSP equ es:word ptr .1 ; owner of memory block
|
||||
DMD_LEN equ es:word ptr .3 ; length of memory block
|
||||
DMD_IDLE_FLAGS equ es:word ptr .6 ; idle flags live here
|
||||
DMD_NAME equ es:byte ptr .8 ; ASCIIZ name field
|
||||
DMD_NAME_LEN equ 8 ; 8 Bytes long
|
||||
IDM equ 'M' ; not last id code
|
||||
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
|
||||
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
|
||||
1493
IBMDOS/PROCESS.A86
Normal file
1493
IBMDOS/PROCESS.A86
Normal file
File diff suppressed because it is too large
Load Diff
108
IBMDOS/PSP.DEF
Normal file
108
IBMDOS/PSP.DEF
Normal file
@@ -0,0 +1,108 @@
|
||||
; File : $PSP.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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
;
|
||||
; Program Segment Prefix
|
||||
; ----------------------
|
||||
; This structure holds vital information for DOS programs
|
||||
;
|
||||
;*******************************************************************************
|
||||
;*
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 00 | int 20 | memory | *** | jmpf|longjmp off|
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 08 |longjmp seg| int22 Off | int22 Seg | int22 Off |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 10 | int22 Seg | int24 Off | int24 Seg | Parent |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 18 | Default Handle Table |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 20 | XFT (20 entries) |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 28 | XFT contd. | Environ | User SP |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 30 | User SS | xfnmax | xftoff | xftseg |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 38 | res1 | res2 | ric | *** | ********* |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 40 | version | ********* | ********* | ********* |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 48 | ********* | ********* | ********* | ********* |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 50 | int 21 | retf| *** | ********* | ********* |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
;* 58 | ********* | ********* | PSP fcb 1 |
|
||||
;* +-----+-----+-----+-----+-----+-----+-----+-----+
|
||||
|
||||
PSP_INT20 equ es:word ptr .0000h
|
||||
PSP_MEMORY equ es:word ptr .0002h
|
||||
;PSP_??? equ es:byte ptr .0004h
|
||||
PSP_LONGCALL equ es:byte ptr .0005h
|
||||
PSP_LONGOFF equ es:word ptr .0006h
|
||||
PSP_LONGSEG equ es:word ptr .0008h
|
||||
PSP_TERM_IP equ es:word ptr .000Ah
|
||||
PSP_TERM_CS equ es:word ptr .000Ch
|
||||
PSP_BREAK_IP equ es:word ptr .000Eh
|
||||
PSP_BREAK_CS equ es:word ptr .0010h
|
||||
PSP_ERROR_IP equ es:word ptr .0012h
|
||||
PSP_ERROR_CS equ es:word ptr .0014h
|
||||
PSP_PARENT equ es:word ptr .0016h
|
||||
PSP_XFT equ es:byte ptr .0018h
|
||||
;
|
||||
; The Default Handle Table is HERE !!
|
||||
;
|
||||
PSP_ENVIRON equ es:word ptr .002ch
|
||||
PSP_USERSP equ es:word ptr .002eh
|
||||
PSP_USERSS equ es:word ptr .0030h
|
||||
PSP_XFNMAX equ es:word ptr .0032h
|
||||
PSP_XFTPTR equ es:dword ptr .0034h
|
||||
PSP_XFTOFF equ es:word ptr .0034h
|
||||
PSP_XFTSEG equ es:word ptr .0036h
|
||||
PSP_RES1 equ es:word ptr .0038h ; DOS Reserved 0FFFFh
|
||||
PSP_RES2 equ es:word ptr .003Ah ; DOS Reserved 0FFFFh
|
||||
PSP_RIC equ es:byte ptr .003Ch ; Return Interim Character flag
|
||||
PSP_VERSION equ es:word ptr .0040h ; DOS version number
|
||||
|
||||
|
||||
PSP_DOSCALL equ es:word ptr .0050h
|
||||
PSP_DOSRETF equ es:byte ptr .0052h
|
||||
|
||||
PSP_FCB1 equ es:byte ptr .005Ch
|
||||
PSP_FCB2 equ es:byte ptr .006Ch
|
||||
PSP_COMLEN equ es:byte ptr .0080h
|
||||
PSP_COMLINE equ es:byte ptr .0081h
|
||||
|
||||
XFNMAX equ 20
|
||||
|
||||
PSPLEN equ 100h
|
||||
PSPILEN equ 60h
|
||||
1722
IBMDOS/REDIR.A86
Normal file
1722
IBMDOS/REDIR.A86
Normal file
File diff suppressed because it is too large
Load Diff
67
IBMDOS/REDIR.EQU
Normal file
67
IBMDOS/REDIR.EQU
Normal file
@@ -0,0 +1,67 @@
|
||||
; 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
|
||||
|
||||
I2F_PRESCENCE equ 1100h
|
||||
I2F_RMDIR equ 1101h
|
||||
I2F_MKDIR equ 1103h
|
||||
I2F_CHDIR equ 1105h
|
||||
I2F_CLOSE equ 1106h
|
||||
I2F_COMMIT equ 1107h
|
||||
I2F_READ equ 1108h
|
||||
I2F_WRITE equ 1109h
|
||||
I2F_LOCK equ 110Ah
|
||||
I2F_UNLOCK equ 110Bh
|
||||
I2F_SPACE equ 110Ch
|
||||
I2F_SET_ATTR equ 110Eh
|
||||
I2F_GET_ATTR equ 110Fh
|
||||
I2F_REN equ 1111h
|
||||
I2F_DEL equ 1113h
|
||||
I2F_OPEN equ 1116h
|
||||
I2F_CREATE equ 1117h
|
||||
I2F_XCREATE equ 1118h
|
||||
I2F_XSFIRST equ 1119h
|
||||
I2F_SFIRST equ 111Bh
|
||||
I2F_SNEXT equ 111Ch
|
||||
I2F_PCLOSE equ 111Dh
|
||||
I2F_REDIR_5F equ 111Eh
|
||||
I2F_REDIR_5E equ 111Fh
|
||||
I2F_FLUSH equ 1120h
|
||||
I2F_LSEEK equ 1121h
|
||||
I2F_PTERM equ 1122h
|
||||
I2F_PPATH equ 1123h
|
||||
I2F_CTLP_ERR equ 1124h
|
||||
I2F_REDIR_5D equ 1125h
|
||||
I2F_CTLP equ 1126h
|
||||
|
||||
166
IBMDOS/REQHDR.EQU
Normal file
166
IBMDOS/REQHDR.EQU
Normal file
@@ -0,0 +1,166 @@
|
||||
; File : $REQHDR.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
|
||||
|
||||
CMD_INIT equ 0 ; Initialize the Device Driver
|
||||
CMD_MEDIA_CHECK equ 1 ; Request Media Check
|
||||
CMD_BUILD_BPB equ 2 ; Build Drive BPB
|
||||
CMD_INPUT_IOCTL equ 3 ; IOCTL input
|
||||
CMD_INPUT equ 4 ; Input
|
||||
CMD_INPUT_NOWAIT equ 5 ; Non destructive input no wait
|
||||
CMD_INPUT_STATUS equ 6 ; Input status
|
||||
CMD_INPUT_FLUSH equ 7 ; Input flush
|
||||
CMD_OUTPUT equ 8 ; Output
|
||||
CMD_OUTPUT_VERIFY equ 9 ; Output with verify
|
||||
CMD_OUTPUT_STATUS equ 10 ; Output status
|
||||
CMD_OUTPUT_FLUSH equ 11 ; Output flush
|
||||
CMD_OUTPUT_IOCTL equ 12 ; IOCTL output
|
||||
CMD_DEVICE_OPEN equ 13 ; Device OPEN
|
||||
CMD_DEVICE_CLOSE equ 14 ; Device CLOSE
|
||||
CMD_FIXED_MEDIA equ 15 ; Removeable Media Check
|
||||
CMD_GENERIC_IOCTL equ 19 ; Generic IOCTL
|
||||
CMD_GET_DEVICE equ 23 ; Get the Logical Device
|
||||
CMD_SET_DEVICE equ 24 ; Set the Logical Device
|
||||
CMD_QUERY_IOCTL equ 25 ; query ioctl support
|
||||
|
||||
; Generic Request Header Format
|
||||
|
||||
RH_LEN equ es:byte ptr 0[bx]
|
||||
RH_UNIT equ es:byte ptr 1[bx]
|
||||
RH_CMD equ es:byte ptr 2[bx]
|
||||
RH_STATUS equ es:word ptr 3[bx]
|
||||
RHS_DONE equ 0100h
|
||||
RHS_BUSY equ 0200h
|
||||
RHS_IC equ 0400h ; Interim Character
|
||||
RHS_RM equ 0800h
|
||||
RHS_ERROR equ 8000h
|
||||
|
||||
;******
|
||||
;* No longer safe to use - some device drivers trample on them....
|
||||
;*
|
||||
;* RH_STRATEGY equ es:dword ptr 5[bx] ; Device Strategy Routine
|
||||
;* RH_STRATOFF equ es:word ptr 5[bx] ; Strategy Offset
|
||||
;* RH_STRATSEG equ es:word ptr 7[bx] ; Strategy Segment
|
||||
;* RH_INTERRUPT equ es:dword ptr 9[bx] ; Device Interrupt Routine
|
||||
;* RH_INTOFF equ es:word ptr 9[bx] ; Intterupt Offset
|
||||
;* RH_INTSEG equ es:word ptr 11[bx] ; Interrupt Segment
|
||||
;*****
|
||||
|
||||
; Request header for initialization
|
||||
|
||||
RH0_NUNITS equ es:byte ptr 13[bx]
|
||||
RH0_RESIDENT equ es:word ptr 14[bx]
|
||||
RH0_BPBOFF equ es:word ptr 18[bx]
|
||||
RH0_BPBSEG equ es:word ptr 20[bx]
|
||||
RH0_DRIVE equ es:byte ptr 22[bx]
|
||||
RH0_LEN equ 22
|
||||
|
||||
; Request header for media check
|
||||
|
||||
RH1_MEDIA equ es:byte ptr 13[bx] ; BDOS: current media byte
|
||||
RH1_RETURN equ es:byte ptr 14[bx] ; driver: return code (00, 01, FF)
|
||||
RH1_VOLID equ es:dword ptr 15[bx] ; driver: volume label address
|
||||
RH1_LEN equ 15
|
||||
|
||||
; Request header for "build BPB"
|
||||
|
||||
RH2_MEDIA equ es:byte ptr 13[bx] ; BDOS or driver?
|
||||
RH2_BUFFER equ es:dword ptr 14[bx] ; BDOS: scratch buffer for driver use
|
||||
RH2_BPB equ es:dword ptr 18[bx] ; same as the following:
|
||||
RH2_BPBOFF equ es:word ptr 18[bx] ; driver: address of new BPB
|
||||
RH2_BPBSEG equ es:word ptr 20[bx]
|
||||
RH2_LEN equ 24
|
||||
|
||||
; Request header for input/output
|
||||
|
||||
RH4_MEDIA equ es:byte ptr 13[bx] ; BDOS: current media byte
|
||||
RH4_RIC equ es:byte ptr 13[bx] ; BDOS: Return Interim Char flg
|
||||
RH4_BUFFER equ es:dword ptr 14[bx] ; BDOS: disk transfer address
|
||||
RH4_BUFOFF equ es:word ptr 14[bx] ; BDOS: Buffer Offset
|
||||
RH4_BUFSEG equ es:word ptr 16[bx] ; BDOS: Buffer Segment
|
||||
RH4_COUNT equ es:word ptr 18[bx] ; BDOS: sector count
|
||||
RH4_SECTOR equ es:word ptr 20[bx] ; BDOS: starting sector
|
||||
RH4_VOLID equ es:dword ptr 22[bx] ; driver: volume if illegal disk change
|
||||
RH4_BIGSECTOR equ es:dword ptr 26[bx]
|
||||
RH4_BIGSECTORLO equ es:word ptr 26[bx]
|
||||
RH4_BIGSECTORHI equ es:word ptr 28[bx]
|
||||
|
||||
RH4_LEN equ 30
|
||||
|
||||
; Request Header for Non-Destructive Input
|
||||
|
||||
RH5_CHAR equ es:byte ptr 13[bx] ; Character Read from Device
|
||||
RH5_RIC equ es:byte ptr 13[bx] ; BDOS: Return Interim Char flg
|
||||
RH5_LEN equ 14
|
||||
|
||||
; Request Header for Device Open
|
||||
|
||||
RH13_LEN equ 13
|
||||
|
||||
; Request Header for Device Close
|
||||
|
||||
RH14_LEN equ 13
|
||||
|
||||
; Request header for generic IOCTL
|
||||
|
||||
RH19_CATEGORY equ es:word ptr 13[bx] ; BDOS: major/minor function number
|
||||
RH19_MAJOR equ es:byte ptr 13[bx] ; BDOS: Major Function Number
|
||||
RH19_MINOR equ es:byte ptr 14[bx] ; BDOS: Minor Function Number
|
||||
RH19_SI equ es:word ptr 15[bx] ; BDOS: User SI
|
||||
RH19_DI equ es:word ptr 17[bx] ; BDOS: User DI
|
||||
RH19_GENPB equ es:dword ptr 19[bx] ; BDOS: extra parameters
|
||||
RH19_LEN equ 23
|
||||
|
||||
RQ19_SET equ 40h ; set device parameters
|
||||
RQ19_GET equ 60h ; get device parameters
|
||||
RQ19_WRITE equ 41h ; write tracks
|
||||
RQ19_READ equ 61h ; read tracks
|
||||
RQ19_FORMAT equ 42h ; format tracks
|
||||
RQ19_VERIFY equ 62h ; verify tracks
|
||||
|
||||
RQ19_PRP_START equ 4Ch ; start of codepage prepare
|
||||
RQ19_PRP_END equ 4Dh ; end of codepage prepare
|
||||
RQ19_SELECT equ 4Ah ; select code page
|
||||
RQ19_QRY_SEL equ 6Ah ; query selected code page
|
||||
RQ19_QRY_PRP equ 6Bh ; query prepared code page(s)
|
||||
RQ19_DSP_SET equ 5Fh ; set display information
|
||||
RQ19_DSP_GET equ 7Fh ; get display information
|
||||
|
||||
; Request header for get/set drive
|
||||
|
||||
RH24_CMD equ es:byte ptr 14[bx] ; BDOS: Command Code
|
||||
RH24_STATUS equ es:word ptr 15[bx] ; BDOS: Status
|
||||
RH24_RESVD equ es:dword ptr 17[bx] ; BDOS: Reserved
|
||||
RH24_LEN equ 21
|
||||
|
||||
RH_SIZE equ 30 ; maximum size of request header
|
||||
134
IBMDOS/RH.EQU
Normal file
134
IBMDOS/RH.EQU
Normal file
@@ -0,0 +1,134 @@
|
||||
; File : $RH.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
|
||||
;
|
||||
; Request command equates
|
||||
|
||||
CMD_INIT equ 0 ; Initialize the Device Driver
|
||||
CMD_MEDIA_CHECK equ 1 ; Request Media Check
|
||||
CMD_BUILD_BPB equ 2 ; Build Drive BPB
|
||||
CMD_INPUT_IOCTL equ 3 ; IOCTL input
|
||||
CMD_INPUT equ 4 ; Input
|
||||
CMD_INPUT_NOWAIT equ 5 ; Non destructive input no wait
|
||||
CMD_INPUT_STATUS equ 6 ; Input status
|
||||
CMD_INPUT_FLUSH equ 7 ; Input flush
|
||||
CMD_OUTPUT equ 8 ; Output
|
||||
CMD_OUTPUT_VERIFY equ 9 ; Output with verify
|
||||
CMD_OUTPUT_STATUS equ 10 ; Output status
|
||||
CMD_OUTPUT_FLUSH equ 11 ; Output flush
|
||||
CMD_OUTPUT_IOCTL equ 12 ; IOCTL output
|
||||
CMD_DEVICE_OPEN equ 13 ; Device OPEN
|
||||
CMD_DEVICE_CLOSE equ 14 ; Device CLOSE
|
||||
CMD_FIXED_MEDIA equ 15 ; Removeable Media Check
|
||||
CMD_GENERIC_IOCTL equ 19 ; Generic IOCTL
|
||||
CMD_GET_DEVICE equ 23 ; Get the Logical Device
|
||||
CMD_SET_DEVICE equ 24 ; Set the Logical Device
|
||||
|
||||
; Request header definition
|
||||
|
||||
RH_LEN equ byte ptr 0
|
||||
RH_UNIT equ byte ptr 1
|
||||
RH_CMD equ byte ptr 2
|
||||
RH_STATUS equ word ptr 3
|
||||
RHS_DONE equ 0100h
|
||||
RHS_BUSY equ 0200h
|
||||
RHS_RM equ 0800h
|
||||
RHS_ERROR equ 8000h
|
||||
|
||||
;******
|
||||
;* No longer safe to use - some device drivers trample on them....
|
||||
;*
|
||||
;* RH_STRATEGY equ dword ptr 5[bx] ; Device Strategy Routine
|
||||
;* RH_STRATOFF equ word ptr 5[bx] ; Strategy Offset
|
||||
;* RH_STRATSEG equ word ptr 7[bx] ; Strategy Segment
|
||||
;* RH_INTERRUPT equ dword ptr 9[bx] ; Device Interrupt Routine
|
||||
;* RH_INTOFF equ word ptr 9[bx] ; Intterupt Offset
|
||||
;* RH_INTSEG equ word ptr 11[bx] ; Interrupt Segment
|
||||
;*****
|
||||
|
||||
; Request header for media check
|
||||
|
||||
RH1_MEDIA equ byte ptr 13 ; BDOS: current media byte
|
||||
RH1_RETURN equ byte ptr 14 ; driver: return code (00, 01, FF)
|
||||
RH1_VOLID equ dword ptr 15 ; driver: volume label address
|
||||
|
||||
|
||||
; Request header for "build BPB"
|
||||
|
||||
RH2_MEDIA equ byte ptr 13 ; BDOS or driver?
|
||||
RH2_BUFFER equ dword ptr 14 ; BDOS: scratch buffer for driver use
|
||||
RH2_BPB equ dword ptr 18 ; driver: address of new BPB
|
||||
|
||||
|
||||
; Request header for input/output
|
||||
|
||||
RH4_MEDIA equ byte ptr 13 ; BDOS: current media byte
|
||||
RH4_BUFFER equ dword ptr 14 ; BDOS: disk transfer address
|
||||
RH4_BUFOFF equ word ptr 14
|
||||
RH4_BUFSEG equ word ptr 16
|
||||
RH4_COUNT equ word ptr 18 ; BDOS: sector count
|
||||
RH4_SECTOR equ word ptr 22 ; BDOS: starting sector
|
||||
RH4_VOLID equ dword ptr 24 ; driver: volume if illegal disk change
|
||||
|
||||
; Request Header for Non-Destructive Input
|
||||
|
||||
RH5_CHAR equ byte ptr 13 ; Character Read from Device
|
||||
|
||||
; Request header for generic IOCTL
|
||||
|
||||
RH19_CATEGORY equ word ptr 13 ; BDOS: major/minor function number
|
||||
RH19_GENPB equ word ptr 19 ; BDOS: extra parameters
|
||||
|
||||
; Request header for get/set logical drive
|
||||
|
||||
RH24_DRIVE equ byte ptr 13 ; Set logical drive
|
||||
|
||||
; Request header lengths
|
||||
|
||||
RH0_LEN equ 22
|
||||
RH1_LEN equ 15
|
||||
RH2_LEN equ 24
|
||||
if DOS5
|
||||
RH4_LEN equ 30
|
||||
else
|
||||
RH4_LEN equ 22 ; or 24 for big sectors
|
||||
endif
|
||||
RH4_CDEV_LEN equ 22
|
||||
RH5_LEN equ 14
|
||||
RH12_LEN equ 22
|
||||
RH13_LEN equ 13
|
||||
RH14_LEN equ 13
|
||||
RH15_LEN equ 13
|
||||
RH19_LEN equ 23
|
||||
RH24_LEN equ 21
|
||||
|
||||
258
IBMDOS/SUPPORT.A86
Normal file
258
IBMDOS/SUPPORT.A86
Normal file
@@ -0,0 +1,258 @@
|
||||
; File : $SUPPORT.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$
|
||||
; SUPPORT.A86 1.11 93/11/29 13:39:28
|
||||
; Don't rely on DS when return_ called
|
||||
; ENDLOG
|
||||
;
|
||||
; The following Support routines are provided for both the
|
||||
; handle and FCB functions which require critical error handler
|
||||
; support.
|
||||
;
|
||||
; 15 Jun 88 Modify the SYSDAT and SUPERVISOR variables to enable
|
||||
; the relocation of the BDOS into high memory
|
||||
; 5 Jan 89 Only set PCKBD mode if we own the default console
|
||||
; 9 Mar 89 Support a split PCMODE and SYSDAT Segments
|
||||
; 22 Sep 89 LDT support routine added
|
||||
; 29 Jan 90 Int 2A critical section support added to dpbdos_entry
|
||||
; 7 Mar 90 Convert to register preserved function calls
|
||||
; 4 May 90 DRDOS int3x handlers removed (they are pointed to IRET
|
||||
; in PCMODE_DATA by INIT.PCM)
|
||||
; 12 Dec 90 keep error server number inverted so local = 0, more compatible
|
||||
|
||||
;
|
||||
include pcmode.equ
|
||||
include fdos.def
|
||||
include i:mserror.equ
|
||||
include i:doshndl.def
|
||||
|
||||
eject
|
||||
PCM_CODE CSEG BYTE
|
||||
extrn error_exit:near ; Standard Error Exit Routine
|
||||
extrn fcberror_exit:near ; Special FCB function Error Exit
|
||||
extrn fdos_entry:near
|
||||
extrn get_dseg:near
|
||||
|
||||
eject
|
||||
;
|
||||
; STRLEN determines the length of the string passed in DS:SI
|
||||
; and returns the byte length in CX.
|
||||
;
|
||||
Public strlen
|
||||
strlen:
|
||||
push es ! push di
|
||||
push ds ! pop es
|
||||
mov di,si
|
||||
mov cx,0FFFFh
|
||||
sub al,al
|
||||
repnz scasb
|
||||
pop di ! pop es
|
||||
not cx
|
||||
dec cx
|
||||
ret
|
||||
|
||||
eject
|
||||
;
|
||||
; This routine sets the address to be returned to by the
|
||||
; FDOS when an error has occured and the RETRY request has been
|
||||
; made. The set_retry routine should be used as follows:-
|
||||
;
|
||||
; mov al,Valid Error Responses
|
||||
; call set_retry
|
||||
; Init All FDOS Parameters
|
||||
; call fdos_crit
|
||||
;
|
||||
; NB. For register model return with AX = dos_AL extended to 16 bit
|
||||
|
||||
Public set_retry_RF
|
||||
set_retry_RF:
|
||||
mov al,OK_RF ; Valid to RETRY or FAIL
|
||||
; jmp set_retry ; (the most common case)
|
||||
|
||||
Public set_retry
|
||||
set_retry:
|
||||
mov valid_flg,al ; Save Valid Error Reponses
|
||||
pop retry_off ; Save the Routine Address
|
||||
mov retry_sp,sp ; and the Stack Pointer
|
||||
mov al,ah ; get function number
|
||||
xor ah,ah ; make it a word
|
||||
mov FD_FUNC,ax ; save it for the FDOS
|
||||
push ds
|
||||
push bx
|
||||
lds bx,int21regs_ptr ; point to users registers
|
||||
and reg_FLAGS[bx],not CARRY_FLAG
|
||||
mov al,reg_AL[bx] ; clear CY assuming we will succeed
|
||||
pop bx ; and reload AL with entry value
|
||||
pop ds
|
||||
jmp retry_off
|
||||
|
||||
;
|
||||
; The FDOS routine executes the CCP/M FDOS function using the
|
||||
; static FDOS parameter block defined in the Data Segment.
|
||||
;
|
||||
Public fdos_crit
|
||||
fdos_crit:
|
||||
call fdos_nocrit
|
||||
cmp ax,ED_LASTERROR ; Compare against last error code
|
||||
jnb fdos_error ; if NOT below then is ERROR CODE
|
||||
or ax,ax ; Reset the Carry Flag and Return
|
||||
ret
|
||||
|
||||
Public fdos_ax_crit
|
||||
fdos_ax_crit:
|
||||
call fdos_nocrit
|
||||
cmp ax,ED_LASTERROR ; Compare against last error code
|
||||
jnb fdos_error ; if NOT below then is ERROR CODE
|
||||
or ax,ax ; Reset the Carry Flag and Return
|
||||
; jmp return_AX_CLC ; Save the Return Code
|
||||
|
||||
Public return_AX_CLC
|
||||
return_AX_CLC:
|
||||
;-------------
|
||||
; On Entry:
|
||||
; AX to be returned to caller in AX
|
||||
; On Exit:
|
||||
; ES:DI trashed
|
||||
;
|
||||
push ds ! push di
|
||||
lds di,ss:int21regs_ptr
|
||||
mov reg_AX[di],ax ; return AX to caller
|
||||
and reg_FLAGS[di],not CARRY_FLAG
|
||||
pop di ! pop ds
|
||||
ret
|
||||
|
||||
|
||||
fdos_error: ; Process the Error
|
||||
cmp sp,retry_sp ; Is the user expecting use to
|
||||
jnz fdos_e10 ; return or use the default handler
|
||||
jmp error_exit ; If CALLed then return with the error
|
||||
fdos_e10: ; to the calling routine.
|
||||
stc
|
||||
ret
|
||||
|
||||
Public fcbfdos_crit
|
||||
fcbfdos_crit:
|
||||
call fdos_nocrit
|
||||
cmp ax,ED_LASTERROR ; Compare against last error code
|
||||
jnb fcbfdos_error ; if NOT below then is ERROR CODE
|
||||
or ax,ax ; Reset the Carry Flag and Return
|
||||
ret
|
||||
|
||||
fcbfdos_error: ; Process the Error
|
||||
cmp sp,retry_sp ; Is the user expecting use to
|
||||
jnz fcbfdos_e10 ; return or use the default handler
|
||||
jmp fcberror_exit ; If CALLed then return with the error
|
||||
fcbfdos_e10: ; to the calling routine.
|
||||
stc
|
||||
ret
|
||||
|
||||
Public fdos_nocrit
|
||||
fdos_nocrit:
|
||||
mov dx,offset fdos_data ; point to fdos parameter block
|
||||
push ds ! push es
|
||||
push si ! push di ! push bp
|
||||
call fdos_entry ; BDOS module entry point
|
||||
or ax,ax ; Set the Flags
|
||||
pop bp ! pop di ! pop si
|
||||
pop es ! pop ds
|
||||
ret
|
||||
|
||||
|
||||
Public reload_ES
|
||||
reload_ES:
|
||||
; On Entry:
|
||||
; None
|
||||
; On Exit:
|
||||
; ES = callers ES
|
||||
; All regs preserved
|
||||
;
|
||||
push bx
|
||||
les bx,ss:int21regs_ptr
|
||||
mov es,es:reg_ES[bx] ; reload with callers ES
|
||||
pop bx
|
||||
ret
|
||||
|
||||
|
||||
Public return_BX
|
||||
return_BX:
|
||||
;---------
|
||||
; On Entry:
|
||||
; BX to be returned to caller in BX
|
||||
; On Exit:
|
||||
; All regs preserved
|
||||
;
|
||||
push ds ! push bx
|
||||
lds si,ss:int21regs_ptr
|
||||
mov reg_BX[si],bx ; return BX to caller
|
||||
pop bx ! pop ds
|
||||
ret
|
||||
|
||||
Public return_CX
|
||||
return_CX:
|
||||
;---------
|
||||
; On Entry:
|
||||
; CX to be returned to caller in CX
|
||||
; On Exit:
|
||||
; All regs preserved
|
||||
;
|
||||
push ds ! push bx
|
||||
lds bx,ss:int21regs_ptr
|
||||
mov reg_CX[bx],cx ; return CX to caller
|
||||
pop bx ! pop ds
|
||||
ret
|
||||
|
||||
Public return_DX
|
||||
return_DX:
|
||||
;---------
|
||||
; On Entry:
|
||||
; DX to be returned to caller in DX
|
||||
; On Exit:
|
||||
; All regs preserved
|
||||
;
|
||||
push ds ! push bx
|
||||
lds bx,ss:int21regs_ptr
|
||||
mov reg_DX[bx],dx ; return DX to caller
|
||||
pop bx ! pop ds
|
||||
ret
|
||||
|
||||
PCMODE_DATA DSEG WORD
|
||||
|
||||
|
||||
extrn current_psp:word
|
||||
extrn DBCS_tbl:word ; double byte character set table
|
||||
extrn int21regs_ptr:dword
|
||||
extrn retry_off:word
|
||||
extrn retry_sp:word
|
||||
extrn valid_flg:byte
|
||||
|
||||
|
||||
end
|
||||
|
||||
2528
IBMDOS/UTILS.FDO
Normal file
2528
IBMDOS/UTILS.FDO
Normal file
File diff suppressed because it is too large
Load Diff
213
IBMDOS/VECTORS.DEF
Normal file
213
IBMDOS/VECTORS.DEF
Normal file
@@ -0,0 +1,213 @@
|
||||
; File : $VECTORS.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 ***
|
||||
;
|
||||
; $Log$
|
||||
;
|
||||
; ENDLOG
|
||||
|
||||
INT08_OFFSET equ 0020h
|
||||
INT08_SEGMENT equ INT08_OFFSET + 2
|
||||
|
||||
INT09_OFFSET equ 0024h
|
||||
INT09_SEGMENT equ INT09_OFFSET + 2
|
||||
|
||||
INT10_OFFSET equ 0040h
|
||||
INT10_SEGMENT equ INT10_OFFSET + 2
|
||||
|
||||
INT11_OFFSET equ 0044h
|
||||
INT11_SEGMENT equ INT11_OFFSET + 2
|
||||
|
||||
INT12_OFFSET equ 0048h
|
||||
INT12_SEGMENT equ INT12_OFFSET + 2
|
||||
|
||||
INT13_OFFSET equ 004Ch
|
||||
INT13_SEGMENT equ INT13_OFFSET + 2
|
||||
|
||||
INT14_OFFSET equ 0050h
|
||||
INT14_SEGMENT equ INT14_OFFSET + 2
|
||||
|
||||
INT15_OFFSET equ 0054h
|
||||
INT15_SEGMENT equ INT15_OFFSET + 2
|
||||
|
||||
INT16_OFFSET equ 0058h
|
||||
INT16_SEGMENT equ INT16_OFFSET + 2
|
||||
|
||||
INT17_OFFSET equ 005Ch
|
||||
INT17_SEGMENT equ INT17_OFFSET + 2
|
||||
|
||||
INT18_OFFSET equ 0060h
|
||||
INT18_SEGMENT equ INT18_OFFSET + 2
|
||||
|
||||
INT19_OFFSET equ 0064h
|
||||
INT19_SEGMENT equ INT19_OFFSET + 2
|
||||
|
||||
INT1A_OFFSET equ 0068h
|
||||
INT1A_SEGMENT equ INT1A_OFFSET + 2
|
||||
|
||||
INT1B_OFFSET equ 006Ch
|
||||
INT1B_SEGMENT equ INT1B_OFFSET + 2
|
||||
|
||||
INT1C_OFFSET equ 0070h
|
||||
INT1C_SEGMENT equ INT1C_OFFSET + 2
|
||||
|
||||
INT1D_OFFSET equ 0074h
|
||||
INT1D_SEGMENT equ INT1D_OFFSET + 2
|
||||
|
||||
INT1E_OFFSET equ 0078h
|
||||
INT1E_SEGMENT equ INT1E_OFFSET + 2
|
||||
|
||||
INT1F_OFFSET equ 007Ch
|
||||
INT1F_SEGMENT equ INT1F_OFFSET + 2
|
||||
|
||||
INT20_OFFSET equ 0080h
|
||||
INT20_SEGMENT equ INT20_OFFSET + 2
|
||||
|
||||
INT21_OFFSET equ 0084h
|
||||
INT21_SEGMENT equ INT21_OFFSET + 2
|
||||
|
||||
INT22_OFFSET equ 0088h
|
||||
INT22_SEGMENT equ INT22_OFFSET + 2
|
||||
|
||||
INT23_OFFSET equ 008Ch
|
||||
INT23_SEGMENT equ INT23_OFFSET + 2
|
||||
|
||||
INT24_OFFSET equ 0090h
|
||||
INT24_SEGMENT equ INT24_OFFSET + 2
|
||||
|
||||
INT25_OFFSET equ 0094h
|
||||
INT25_SEGMENT equ INT25_OFFSET + 2
|
||||
|
||||
INT26_OFFSET equ 0098h
|
||||
INT26_SEGMENT equ INT26_OFFSET + 2
|
||||
|
||||
INT27_OFFSET equ 009Ch
|
||||
INT27_SEGMENT equ INT27_OFFSET + 2
|
||||
|
||||
INT28_OFFSET equ 00A0h
|
||||
INT28_SEGMENT equ INT28_OFFSET + 2
|
||||
|
||||
INT29_OFFSET equ 00A4h
|
||||
INT29_SEGMENT equ INT29_OFFSET + 2
|
||||
|
||||
INT2A_OFFSET equ 00A8h
|
||||
INT2A_SEGMENT equ INT2A_OFFSET + 2
|
||||
|
||||
INT2B_OFFSET equ 00ACh
|
||||
INT2B_SEGMENT equ INT2B_OFFSET + 2
|
||||
|
||||
INT2C_OFFSET equ 00B0h
|
||||
INT2C_SEGMENT equ INT2C_OFFSET + 2
|
||||
|
||||
INT2D_OFFSET equ 00B4h
|
||||
INT2D_SEGMENT equ INT2D_OFFSET + 2
|
||||
|
||||
INT2E_OFFSET equ 00B8h
|
||||
INT2E_SEGMENT equ INT2E_OFFSET + 2
|
||||
|
||||
INT2F_OFFSET equ 00BCh
|
||||
INT2F_SEGMENT equ INT2F_OFFSET + 2
|
||||
|
||||
INT30_OFFSET equ 00C0h
|
||||
INT30_SEGMENT equ INT30_OFFSET + 2
|
||||
|
||||
INT31_OFFSET equ 00C4h
|
||||
INT31_SEGMENT equ INT31_OFFSET + 2
|
||||
|
||||
INT32_OFFSET equ 00C8h
|
||||
INT32_SEGMENT equ INT32_OFFSET + 2
|
||||
|
||||
INT33_OFFSET equ 00CCh
|
||||
INT33_SEGMENT equ INT33_OFFSET + 2
|
||||
|
||||
INT34_OFFSET equ 00D0h
|
||||
INT34_SEGMENT equ INT34_OFFSET + 2
|
||||
|
||||
INT35_OFFSET equ 00D4h
|
||||
INT35_SEGMENT equ INT35_OFFSET + 2
|
||||
|
||||
INT36_OFFSET equ 00D8h
|
||||
INT36_SEGMENT equ INT36_OFFSET + 2
|
||||
|
||||
INT37_OFFSET equ 00DCh
|
||||
INT37_SEGMENT equ INT37_OFFSET + 2
|
||||
|
||||
INT38_OFFSET equ 00E0h
|
||||
INT38_SEGMENT equ INT38_OFFSET + 2
|
||||
|
||||
INT39_OFFSET equ 00E4h
|
||||
INT39_SEGMENT equ INT39_OFFSET + 2
|
||||
|
||||
INT3A_OFFSET equ 00E8h
|
||||
INT3A_SEGMENT equ INT3A_OFFSET + 2
|
||||
|
||||
INT3B_OFFSET equ 00ECh
|
||||
INT3B_SEGMENT equ INT3B_OFFSET + 2
|
||||
|
||||
INT3C_OFFSET equ 00F0h
|
||||
INT3C_SEGMENT equ INT3C_OFFSET + 2
|
||||
|
||||
INT3D_OFFSET equ 00F4h
|
||||
INT3D_SEGMENT equ INT3D_OFFSET + 2
|
||||
|
||||
INT3E_OFFSET equ 00F8h
|
||||
INT3E_SEGMENT equ INT3E_OFFSET + 2
|
||||
|
||||
INT3F_OFFSET equ 00FCh
|
||||
INT3F_SEGMENT equ INT3F_OFFSET + 2
|
||||
|
||||
INT5B_OFFSET equ 016Ch
|
||||
INT5B_SEGMENT equ INT5B_OFFSET + 2
|
||||
|
||||
INT5C_OFFSET equ 0170h
|
||||
INT5C_SEGMENT equ INT5C_OFFSET + 2
|
||||
|
||||
INTE0_OFFSET equ 0380h ; Concurrent DOS Vector
|
||||
INTE0_SEGMENT equ INTE0_OFFSET + 2
|
||||
|
||||
INTEF_OFFSET equ 03BCh ; GEM Interrupt Vector
|
||||
INTEF_SEGMENT equ INTEF_OFFSET + 2
|
||||
|
||||
;
|
||||
; The following equates determine the vectors that will be saved
|
||||
; during a DISPATCH. A core of vectors is always saved these are
|
||||
; specified by the VEC_LOWCORE and VEC_HIGHCORE equates. Then the
|
||||
; absolute FIRST and LAST vectors that will ever be preserved are
|
||||
; specified by VEC_MINSAVE and VEC_MAXSAVE.
|
||||
;
|
||||
; The VEC_DEFAULT equate specifies the default range of equates
|
||||
; that will be saved if this value is not over-ridden.
|
||||
;
|
||||
VEC_MINSAVE equ 05h ; Concurrent Saves 0 to 4
|
||||
VEC_MAXSAVE equ 0FFh ; Brief 2.01 Uses vectors > F0h
|
||||
VEC_LOWCORE equ 05h
|
||||
VEC_HIGHCORE equ 32h
|
||||
VEC_LOWSPECIAL equ 70h ; 70h-77h are hardware vectors on PC
|
||||
VEC_HIGHSPECIAL equ 77h ; and so are specially saved/restored
|
||||
VEC_DEFAULT equ (VEC_HIGHCORE * 0100h) + VEC_LOWCORE
|
||||
Reference in New Issue
Block a user