Leaked source code of windows server 2003
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

; 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