255 lines
7.7 KiB
NASM
255 lines
7.7 KiB
NASM
|
; SCCSID = @(#)const2.asm 1.4 85/07/24
|
|||
|
|
|||
|
|
|||
|
Break <Initialized data and data used at DOS initialization>
|
|||
|
|
|||
|
;
|
|||
|
; We need to identify the parts of the data area that are relevant to tasks
|
|||
|
; and those that are relevant to the system as a whole. Under 3.0, the system
|
|||
|
; data will be gathered with the system code. The process data under 2.x will
|
|||
|
; be available for swapping and under 3.0 it will be allocated per-process.
|
|||
|
;
|
|||
|
; The data that is system data will be identified by [SYSTEM] in the comments
|
|||
|
; describing that data item.
|
|||
|
;
|
|||
|
|
|||
|
include dossvc.inc
|
|||
|
|
|||
|
; On NT SFT Size is smaller than DOS so we have to pad some space to maintain
|
|||
|
; the offsets in data segmeents. Below FILLSPACE is pad. 59 is the size of
|
|||
|
; DOS5.0 sft entry.
|
|||
|
|
|||
|
FILLSPACE equ (sf_default_number * (59 - (SIZE sf_entry)))
|
|||
|
|
|||
|
AsmVars <Debug, Redirector, ShareF>
|
|||
|
|
|||
|
DOSDATA SEGMENT WORD PUBLIC 'DATA'
|
|||
|
|
|||
|
;
|
|||
|
; Table of routines for assignable devices
|
|||
|
;
|
|||
|
; MSDOS allows assignment if the following standard devices:
|
|||
|
; stdin (usually CON input)
|
|||
|
; stdout (usually CON output)
|
|||
|
; auxin (usually AUX input)
|
|||
|
; auxout (usually AUX output)
|
|||
|
; stdlpt (usually PRN output)
|
|||
|
;
|
|||
|
; SPECIAL NOTE:
|
|||
|
; Status of a file is a strange idea. We choose to handle it in this
|
|||
|
; manner: If we're not at end-of-file, then we always say that we have a
|
|||
|
; character. Otherwise, we return ^Z as the character and set the ZERO
|
|||
|
; flag. In this manner we can support program written under the old DOS
|
|||
|
; (they use ^Z as EOF on devices) and programs written under the new DOS
|
|||
|
; (they use the ZERO flag as EOF).
|
|||
|
|
|||
|
; Default SFTs for boot up
|
|||
|
|
|||
|
Public CONST001S,CONST001E
|
|||
|
CONST001s label byte
|
|||
|
PUBLIC sftabl
|
|||
|
sftabl LABEL DWORD ; [SYSTEM] file table
|
|||
|
DW -1 ; [SYSTEM] link to next table
|
|||
|
DW -1 ; [SYSTEM] link seg to next table
|
|||
|
DW sf_default_number ; [SYSTEM] Number of entries in table
|
|||
|
DB sf_default_number DUP ( (SIZE sf_entry) DUP (0)); [SYSTEM]
|
|||
|
|
|||
|
DB FILLSPACE DUP (0) ; PAD to maintain correct offsets
|
|||
|
|
|||
|
; the next two variables relate to the position of the logical stdout/stdin
|
|||
|
; cursor. They are only meaningful when stdin/stdout are assigned to the
|
|||
|
; console.
|
|||
|
I_am CARPOS,BYTE ; [SYSTEM] cursor position in stdin
|
|||
|
I_am STARTPOS,BYTE ; [SYSTEM] position of cursor at beginning of buffered input call
|
|||
|
I_am INBUF,128 ; [SYSTEM] general device input buffer
|
|||
|
I_am CONBUF,131 ; [SYSTEM] The rest of INBUF and console buffer
|
|||
|
|
|||
|
I_am PFLAG,BYTE ; [SYSTEM] printer echoing flag
|
|||
|
I_am VERFLG,BYTE ; [SYSTEM] Initialize with verify off
|
|||
|
I_am CharCo,BYTE,<00000011B> ; [SYSTEM] Allows statchks every 4 chars...
|
|||
|
I_am chSwitch,BYTE,<'/'> ; UNUSED - obsolete datum, can be reused
|
|||
|
I_am AllocMethod,BYTE ; [SYSTEM] how to alloc first(best)last
|
|||
|
I_am fShare,BYTE,<0> ; [SYSTEM] TRUE => sharing installed
|
|||
|
I_am DIFFNAM,BYTE,<1> ; [SYSTEM] Indicates when MYNAME has
|
|||
|
; changed
|
|||
|
I_am MYNAME,16,<32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32>
|
|||
|
; [SYSTEM] My network name
|
|||
|
|
|||
|
|
|||
|
;
|
|||
|
; The following table is a list of addresses that the sharer patches to be
|
|||
|
; PUSH AX to enable the critical sections
|
|||
|
;
|
|||
|
PUBLIC CritPatch
|
|||
|
CritPatch LABEL WORD
|
|||
|
IRP sect,<critDisk,critDevice>
|
|||
|
IF (NOT REDIRECTOR) AND (NOT SHAREF)
|
|||
|
;
|
|||
|
;SR; Change code patch address to a variable in data segment
|
|||
|
;
|
|||
|
dw OFFSET DOSDATA: redir_patch
|
|||
|
dw OFFSET DOSDATA: redir_patch
|
|||
|
|
|||
|
;hkn Short_Addr E§
|
|||
|
;hkn Short_Addr L§
|
|||
|
|
|||
|
ELSE
|
|||
|
DW 0
|
|||
|
DW 0
|
|||
|
ENDIF
|
|||
|
ENDM
|
|||
|
DW 0
|
|||
|
|
|||
|
;
|
|||
|
; WARNING!!! PRINT and PSPRINT *REQUIRE* ErrorMode to precede INDOS.
|
|||
|
; Also, IBM server 1.0 requires this also.
|
|||
|
;
|
|||
|
EVEN ; Force swap area to start on word boundry
|
|||
|
PUBLIC SWAP_START
|
|||
|
SWAP_START LABEL BYTE
|
|||
|
I_am ErrorMode,BYTE ; Flag for INT 24 processing
|
|||
|
I_am INDOS,BYTE,<0> ; DOS status for interrupt processing
|
|||
|
I_am WPErr,BYTE,<-1> ; Write protect error flag
|
|||
|
I_am EXTERR_LOCUS,BYTE ; Extended Error Locus
|
|||
|
I_am EXTERR,WORD,<0> ; Extended Error code
|
|||
|
|
|||
|
;WARNING Following two bytes Accessed as word in $GetExtendedError
|
|||
|
I_am EXTERR_ACTION,BYTE ; Extended Error Action
|
|||
|
I_am EXTERR_CLASS,BYTE ; Extended Error Class
|
|||
|
; end warning
|
|||
|
|
|||
|
I_am EXTERRPT,DWORD ; Extended Error pointer
|
|||
|
I_am DMAADD,DWORD,<80h,?> ; User's disk transfer address (disp/seg)
|
|||
|
I_am CurrentPDB,WORD ; Current process identifier
|
|||
|
I_am ConC_spsave,WORD ; saved SP before ^C
|
|||
|
I_am exit_code,WORD ; exit code of last proc.
|
|||
|
I_am CURDRV,BYTE ; Default drive (init A)
|
|||
|
I_am CNTCFLAG,BYTE,<0> ; ^C check in dispatch disabled
|
|||
|
; F.C. 2/17/86
|
|||
|
I_am CPSWFLAG,BYTE,<0> ; Code Page Switching Flag DOS 4.00
|
|||
|
I_am CPSWSAVE,BYTE,<0> ; copy of above in case of ABORT
|
|||
|
EVEN
|
|||
|
PUBLIC Swap_Always
|
|||
|
Swap_Always LABEL BYTE
|
|||
|
I_am USER_IN_AX,WORD ; User INPUT AX value (used for
|
|||
|
; extended error type stuff. NOTE:
|
|||
|
; does not have Correct value on
|
|||
|
; 1-12, OEM, Get/Set CurrentPDB,
|
|||
|
; GetExtendedError system calls
|
|||
|
I_am PROC_ID,WORD,<0> ; PID for sharing (0 = local)
|
|||
|
I_am USER_ID,WORD,<0> ; Machine for sharing (0 = local)
|
|||
|
I_am FirstArena,WORD ; first free block found
|
|||
|
I_am BestArena,WORD ; best free block found
|
|||
|
I_am LastArena,WORD ; last free block found
|
|||
|
I_am EndMem,WORD ; End of memory used in DOSINIT
|
|||
|
I_am LASTENT,WORD ; Last entry for directory search
|
|||
|
|
|||
|
I_am FAILERR,BYTE,<0> ; NZ if user did FAIL on I 24
|
|||
|
I_am ALLOWED,BYTE,<0> ; Allowed I 24 answers (see allowed_)
|
|||
|
I_am NoSetDir,BYTE ; true -> do not set directory
|
|||
|
I_am DidCTRLC,BYTE ; true -> we did a ^C exit
|
|||
|
I_am SpaceFlag,BYTE ; true -> embedded spaces are allowed in FCB
|
|||
|
; Warning! The following items are accessed as a WORD in TIME.ASM
|
|||
|
EVEN
|
|||
|
I_am DAY,BYTE,<0> ; Day of month
|
|||
|
I_am MONTH,BYTE,<0> ; Month of year
|
|||
|
I_am YEAR,WORD,<0> ; Year (with century)
|
|||
|
I_am DAYCNT,WORD,<-1> ; Day count from beginning of year
|
|||
|
I_am WEEKDAY,BYTE,<0> ; Day of week
|
|||
|
; end warning
|
|||
|
I_am CONSWAP,BYTE ; TRUE => console was swapped during device read
|
|||
|
I_am IDLEINT,BYTE,<1> ; TRUE => idle int is allowed
|
|||
|
I_am fAborting,BYTE,<0> ; TRUE => abort in progress
|
|||
|
|
|||
|
; Combination of all device call parameters
|
|||
|
PUBLIC DEVCALL ;
|
|||
|
DEVCALL SRHEAD <> ; basic header for disk packet
|
|||
|
PUBLIC CALLUNIT
|
|||
|
CALLUNIT LABEL BYTE ; unit number for disk
|
|||
|
CALLFLSH LABEL WORD ;
|
|||
|
I_am CALLMED,BYTE ; media byte
|
|||
|
CALLBR LABEL DWORD ;
|
|||
|
PUBLIC CALLXAD ;
|
|||
|
CALLXAD LABEL DWORD ;
|
|||
|
I_am CALLRBYT,BYTE ;
|
|||
|
PUBLIC CALLVIDM ;
|
|||
|
CALLVIDM LABEL DWORD ;
|
|||
|
DB 3 DUP(?) ;
|
|||
|
PUBLIC CallBPB ;
|
|||
|
CALLBPB LABEL DWORD ;
|
|||
|
I_am CALLSCNT,WORD ;
|
|||
|
PUBLIC CALLSSEC
|
|||
|
CALLSSEC LABEL WORD ;
|
|||
|
DW ? ;
|
|||
|
I_am CALLVIDRW,DWORD ;
|
|||
|
;
|
|||
|
I_am CALLNEWSC,DWORD ; starting sector for >32mb
|
|||
|
I_am CALLDEVAD,DWORD ; stash for device entry point
|
|||
|
;
|
|||
|
; Same as above for I/O calls ;
|
|||
|
;
|
|||
|
PUBLIC IOCall ;
|
|||
|
IOCALL SRHEAD <> ;
|
|||
|
IOFLSH LABEL WORD ;
|
|||
|
PUBLIC IORCHR ;
|
|||
|
IORCHR LABEL BYTE ;
|
|||
|
I_am IOMED,BYTE ;
|
|||
|
I_am IOXAD,DWORD ;
|
|||
|
I_am IOSCNT,WORD ;
|
|||
|
I_am IOSSEC,WORD ;
|
|||
|
; Call struct for DSKSTATCHK ;
|
|||
|
I_am DSKSTCALL,2,<DRDNDHL,0> ;
|
|||
|
I_am DSKSTCOM,1,<DEVRDND> ;
|
|||
|
I_am DSKSTST,WORD ;
|
|||
|
DB 8 DUP (0) ;
|
|||
|
I_am DSKCHRET,BYTE ;
|
|||
|
|
|||
|
;hkn; short_addr has been changed to provide offset in DOSCODE.
|
|||
|
;hkn; deviobuf is in DATA seg (DOSDATA)
|
|||
|
;hkn short_addr DEVIOBUF ;
|
|||
|
|
|||
|
DW offset DOSDATA:DEVIOBUF
|
|||
|
|
|||
|
DW ? ; DOS segment set at Init
|
|||
|
I_AM DSKSTCNT,WORD,<1> ;
|
|||
|
DW 0 ;
|
|||
|
|
|||
|
I_am CreatePDB,BYTE ; flag for creating a process
|
|||
|
PUBLIC Lock_Buffer ;
|
|||
|
Lock_Buffer LABEL DWORD ;MS. DOS Lock Buffer for Ext Lock
|
|||
|
DD ? ;MS. position
|
|||
|
DD ? ;MS. length
|
|||
|
CONST001e label byte
|
|||
|
|
|||
|
|
|||
|
PUBLIC vheDev
|
|||
|
vheDev SYSDEV <-1,0,0,0,>
|
|||
|
|
|||
|
;hkn; the foll. was moved from dosmes.asm.
|
|||
|
|
|||
|
EVEN ; needed to maintain offsets
|
|||
|
|
|||
|
PUBLIC UserNum, OEMNum
|
|||
|
Public DMES001S,DMES001E
|
|||
|
DMES001S Label byte
|
|||
|
USERNUM DW ? ; 24 bit user number
|
|||
|
DB ?
|
|||
|
IF IBM
|
|||
|
IF IBMCOPYRIGHT
|
|||
|
OEMNUM DB 0 ; 8 bit OEM number
|
|||
|
ELSE
|
|||
|
OEMNUM DB 0FFH ; 8 bit OEM number
|
|||
|
ENDIF
|
|||
|
ELSE
|
|||
|
OEMNUM DB 0FFH
|
|||
|
ENDIF
|
|||
|
|
|||
|
|
|||
|
DMES001E label byte
|
|||
|
|
|||
|
|
|||
|
DOSDATA ENDS
|
|||
|
|
|||
|
|
|||
|
|