windows-nt/Source/XPSP1/NT/base/mvdm/dos/v86/inc/const2.asm
2020-09-26 16:20:57 +08:00

255 lines
7.7 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; 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&sect
;hkn Short_Addr L&sect
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