You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
245 lines
10 KiB
245 lines
10 KiB
; SCCSID = @(#)msdata.asm 1.8 85/09/12
|
|
|
|
;
|
|
;----------------------------------------------------------------------------
|
|
;
|
|
; M008 : Renamed callback_ss & callback_sp to AbsRdWr_SS & AbsRdWr_SP
|
|
; To be used in Absolute Read/Write DISK routines
|
|
; M019 DB 10/26/90 - Disk write optimization: removed HIGH_SECTOR_TEMP.
|
|
;
|
|
;----------------------------------------------------------------------------
|
|
;
|
|
AsmVars <Debug, Redirector, ShareF>
|
|
|
|
;
|
|
;smr;--- These extrns should be in DOSCODE segment
|
|
;
|
|
DOSCODE SEGMENT BYTE PUBLIC 'CODE'
|
|
;hkn; extrn ucase_tab:byte
|
|
;hkn; extrn file_ucase_tab:byte
|
|
;hkn; extrn file_char_tab:byte
|
|
;hkn; extrn collate_tab:byte
|
|
;hkn; extrn dbcs_tab:byte
|
|
;hkn; extrn map_case:byte
|
|
|
|
extrn DIVOV:near
|
|
extrn QUIT:near
|
|
extrn COMMAND:near
|
|
extrn ABSDRD:near
|
|
extrn ABSDWRT:near
|
|
extrn Stay_resident:near
|
|
extrn INT2F:near
|
|
extrn CALL_ENTRY:near
|
|
extrn IRETT:near
|
|
|
|
DOSCODE ENDS
|
|
;
|
|
Break <Uninitialized data overlayed by initialization code>
|
|
|
|
DOSDATA SEGMENT WORD PUBLIC 'DATA'
|
|
; Init code overlaps with data area below
|
|
|
|
; ORG 0
|
|
PUBLIC MSDAT001S,MSDAT001E
|
|
MSDAT001S label byte
|
|
|
|
I_am TIMEBUF,6 ; Time read from clock device
|
|
I_am DEVIOBUF,2 ; Buffer for I/O under file assignment
|
|
;
|
|
; The following areas are used as temp buffer in EXEC system call
|
|
;
|
|
I_am OPENBUF,128 ; buffer for name operations
|
|
I_am RenBuf,128 ; buffer for rename destination
|
|
; Buffer for search calls
|
|
I_am SEARCHBUF,53 ; internal search buffer
|
|
ifdef JAPAN
|
|
I_am DummyCDS,curdirLen_JPN
|
|
else
|
|
I_am DummyCDS,curdirLen
|
|
endif
|
|
;
|
|
; End of contiguous buffer
|
|
;
|
|
; Temporary directory entry for use by many routines. Device directory
|
|
; entries (bogus) are built here.
|
|
;
|
|
PUBLIC DevFCB
|
|
DEVFCB LABEL BYTE ; Uses NAME1, NAME2, combined
|
|
; WARNING.. do not alter position of NAME1 relative to DEVFCB
|
|
; without first examining BUILD_DEVICE_ENT. Look carefully at DOS_RENAME
|
|
; as well as it is the only guy who uses NAME2 and DESTSTART.
|
|
I_am NAME1,12 ; File name buffer
|
|
I_am NAME2,13 ;
|
|
I_am DESTSTART,WORD ;
|
|
DB ((SIZE DIR_ENTRY) - ($ - DEVFCB)) DUP (?)
|
|
;
|
|
; End Temporary directory entry.
|
|
;
|
|
I_am ATTRIB,BYTE ; storage for file attributes
|
|
I_am EXTFCB,BYTE ; TRUE => extended FCB in use
|
|
I_am SATTRIB,BYTE ; Storage for search attributes
|
|
I_AM open_access,BYTE ; access of open system call
|
|
I_am FoundDel,BYTE ; true => file was deleted
|
|
I_am Found_dev,BYTE ; true => search found a device
|
|
I_am fSplice,BYTE ; true => do a splice in transpath
|
|
I_am fSharing,BYTE ; TRUE => no redirection
|
|
I_am SECCLUSPOS,BYTE ; Position of first sector within cluster
|
|
I_am TRANS,BYTE ;
|
|
I_am READOP,BYTE ;
|
|
I_am THISDRV,BYTE ;
|
|
I_am CLUSFAC,BYTE ;
|
|
I_am CLUSSPLIT,BYTE ;
|
|
I_am INSMODE,BYTE ; true => insert mode in buffered read
|
|
I_am cMeta,BYTE ; count of meta'ed components found
|
|
I_am VOLID,BYTE ;
|
|
I_am exit_type,BYTE ; type of exit...
|
|
|
|
EVEN
|
|
|
|
; WARNING - the following two items are accessed as a word
|
|
I_am CREATING,BYTE ; true => creating a file
|
|
I_am DELALL,BYTE ; = 0 iff BUGBUG
|
|
; = DIRFREE iff BUGBUG
|
|
I_am EXITHOLD,DWORD ; Temp location for proc terminate
|
|
I_am user_SP,WORD ; User SP for system call
|
|
I_am user_SS,WORD ; User SS for system call
|
|
I_am CONTSTK,WORD ;
|
|
I_am THISDPB,DWORD ;
|
|
I_am CLUSSAVE,WORD ;
|
|
I_am CLUSSEC,DWORD ;>32mb AC0000
|
|
I_am PREREAD,WORD ; 0 means preread; 1 means optional
|
|
I_am FATBYT,WORD ; Used by ALLOCATE
|
|
I_am FATBYTE,WORD ; Used by $SLEAZEFUNC
|
|
I_am DEVPT,DWORD ;
|
|
I_am THISSFT,DWORD ; Address of user SFT
|
|
I_am THISCDS,DWORD ; Address of current CDS
|
|
I_am THISFCB,DWORD ; Address of user FCB
|
|
I_am SFN,WORD,<-1> ; SystemFileNumber found for accessfile
|
|
I_am JFN,WORD ; JobFileNumber found for accessfile
|
|
I_am PJFN,DWORD ; PointerJobFileNumber found for accessfile
|
|
I_am WFP_START,WORD ;
|
|
I_am REN_WFP,WORD ;
|
|
I_am CURR_DIR_END,WORD ;
|
|
I_am NEXTADD,WORD ;
|
|
I_am LASTPOS,WORD ;
|
|
I_am CLUSNUM,WORD ;
|
|
I_am DIRSEC,DWORD ;>32mb AC0000
|
|
I_am DIRSTART,WORD ;
|
|
I_am SECPOS,DWORD ;>32mb Position of first sector accessed
|
|
I_am VALSEC,DWORD ;>32mb Number of valid (previously written)
|
|
; sectors
|
|
I_am BYTSECPOS,WORD ; Position of first byte within sector
|
|
I_am BYTPOS,4 ; Byte position in file of access
|
|
I_am BYTCNT1,WORD ; No. of bytes in first sector
|
|
I_am BYTCNT2,WORD ; No. of bytes in last sector
|
|
I_am SECCNT,WORD ; No. of whole sectors
|
|
I_am ENTFREE,WORD ;
|
|
I_am ENTLAST,WORD ;
|
|
I_am NXTCLUSNUM,WORD ;
|
|
I_am GROWCNT,DWORD ;
|
|
I_am CURBUF,DWORD ;
|
|
I_am CONSft,DWORD ; SFT of console swapped guy.
|
|
I_am SaveBX,WORD ;
|
|
I_am SaveDS,WORD ;
|
|
I_am restore_tmp,WORD ; return address for restore world
|
|
I_am NSS,WORD
|
|
I_am NSP,WORD
|
|
I_am EXTOPEN_FLAG,WORD,<0> ;FT. extended open input flag ;AN000;
|
|
I_am EXTOPEN_ON,BYTE,<0> ;FT. extended open conditional flag ;AN000;
|
|
I_am EXTOPEN_IO_MODE,WORD,<0>;FT. extende open io mode ;AN000;
|
|
I_am SAVE_DI,WORD ;FT. extende open saved DI ;AN000;
|
|
I_am SAVE_ES,WORD ;FT. extende open saved ES ;AN000;
|
|
I_am SAVE_DX,WORD ;FT. extende open saved DX ;AN000;
|
|
I_am SAVE_CX,WORD ;FT. extende open saved CX ;AN000;
|
|
I_am SAVE_BX,WORD ;FT. extende open saved BX ;AN000;
|
|
I_am SAVE_SI,WORD ;FT. extende open saved SI ;AN000;
|
|
I_am SAVE_DS,WORD ;FT. extende open saved DS ;AN000;
|
|
|
|
; HIGH_SECTOR is a hack to allow passing 32-bit sector numbers where
|
|
; we used to just pass 16 bits in a register. Now High_SECTOR holds
|
|
; the high 16, the low 16 are still in the register.
|
|
|
|
I_am HIGH_SECTOR,WORD,<0> ;>32mb higher sector # ;AN000;
|
|
|
|
I_am UU_HIGH_SECTOR_TEMP,WORD,<0> ;M019: Unused
|
|
|
|
I_am DISK_FULL,BYTE ;>32mb indicating disk full when 1 ;AN000;
|
|
I_am TEMP_VAR,WORD ; temporary variable for everyone ;AN000;
|
|
I_am TEMP_VAR2,WORD ; temporary variable 2 for everyone ;AN000;
|
|
I_am DrvErr,BYTE ; used to save drive error ;AN000;
|
|
I_am DOS34_FLAG,WORD,<0> ; common flag for DOS 3.4 ;AN000;
|
|
I_am NO_FILTER_PATH,DWORD ; pointer to orignal path ;AN000;
|
|
I_am NO_FILTER_DPATH,DWORD ; pointer to orignal path of destination;AN000;
|
|
; M008
|
|
I_am AbsRdWr_SS,WORD ; INT 25/26 user stack segment
|
|
I_am AbsRdWr_SP,WORD ; INT 25/26 user stack offset
|
|
I_am UU_Callback_flag,BYTE,<0> ; Unused
|
|
; M008
|
|
|
|
|
|
; make those pushes fast!!!
|
|
EVEN
|
|
StackSize = 180h ; gross but effective
|
|
;;;StackSize = 300h ; This is a "trial" change IBM hasn't
|
|
;;; ; made up their minds about
|
|
|
|
;
|
|
; WARNING!!!! DskStack may grow into AUXSTACK due to interrupt service.
|
|
; This is NO problem as long as AUXSTACK comes immediately before DSKSTACK
|
|
;
|
|
|
|
PUBLIC RENAMEDMA,AuxStack,DskStack,IOStack
|
|
RENAMEDMA LABEL BYTE ; See DOS_RENAME
|
|
|
|
DB StackSize DUP (?) ;
|
|
AuxStack LABEL BYTE
|
|
|
|
DB StackSize DUP (?) ;
|
|
DskStack LABEL BYTE
|
|
|
|
DB StackSize DUP (?) ;
|
|
IOStack LABEL BYTE
|
|
|
|
|
|
; patch space for Boca folks.
|
|
; Say What????!!! This does NOT go into the swappable area!
|
|
; NOTE: We include the decl of ibmpatch in ms-dos even though it is not needed.
|
|
; This allows the REDIRector to work on either IBM or MS-DOS.
|
|
|
|
PUBLIC IBMPATCH
|
|
IBMPATCH label byte
|
|
I_am PRINTER_FLAG,BYTE,<0> ; [SYSTEM] status of PRINT utility
|
|
I_am VOLCHNG_FLAG,BYTE,<0> ; [SYSTEM] true if volume label created
|
|
I_am VIRTUAL_OPEN,BYTE,<0> ; [SYSTEM] non-zero if we opened a virtual file
|
|
|
|
; Following 4 variables moved to MSDATA.asm from MSTABLE.asm (P4986)
|
|
I_am FSeek_drive,BYTE ;AN000; fastseek drive #
|
|
I_am FSeek_firclus,WORD ;AN000; fastseek first cluster #
|
|
I_am FSeek_logclus,WORD ;AN000; fastseek logical cluster #
|
|
I_am FSeek_logsave,WORD ;AN000; fastseek returned log clus #
|
|
; I_am UU_ACT_PAGE,WORD,<-1> ;;;;;;; ;BL ; active EMS page ;AN000;
|
|
I_am TEMP_DOSLOC,WORD,<-1> ;stores the temporary location of dos
|
|
;at SYSINIT time.
|
|
|
|
|
|
SWAP_END LABEL BYTE
|
|
PUBLIC SWAP_END
|
|
|
|
; THE FOLLOWING BYTE MUST BE HERE, IMMEDIATELY FOLLOWING SWAP_END. IT CANNOT
|
|
; BE USED. If the size of the swap data area is ODD, it will be rounded up
|
|
; to include this byte.
|
|
DB ?
|
|
|
|
;hkn; DB (512+80+32-(SWAP_END-ibmpatch)) DUP (?)
|
|
|
|
|
|
DOSDATA ENDS
|
|
|
|
|
|
|
|
DOSDATALAST SEGMENT
|
|
|
|
MSDAT001e label byte
|
|
|
|
DOSDATALAST ENDS
|
|
|