summaryrefslogtreecommitdiff
path: root/v4.0/src/DOS/MSCONST.ASM
blob: 126f3223a22ef0e092e389a91f743edea59a86a0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
;	SCCSID = @(#)msconst.asm	1.4 85/09/12
;   Revision history
;      AN000  version 4.00  Jan. 1988
;      AN007  fake version check for IBMCACHE.COM
include mshead.asm
include version.inc

CODE		SEGMENT BYTE PUBLIC 'CODE'
	Extrn	LeaveDOS:NEAR
	Extrn	BadCall:FAR, OKCall:FAR
CODE		ENDS

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.
;

	AsmVars <Kanji, Debug, Redirector, ShareF>

CONSTANTS	SEGMENT WORD PUBLIC 'CONST'

	extrn	sfTabl:DWORD

	ORG	0

	EVEN
;
; WANGO!!!  The following word is used by SHARE and REDIR to determin data
; area compatability.  This location must be incremented EACH TIME the data
; area here gets mucked with.
;
; Also, do NOT change this position relative to DOSGROUP:0.
;
Public MSCT001S,MSCT001E
MSCT001S:
	I_am	DataVersion,WORD,<1>	;AC000; [SYSTEM] version number for DOS DATA

%out WARNING!!! Debug fields are being included!!!
	DB	"BUG "                  ; THIS FIELD MUST BE EVEN # OF BYTES
	I_am	BugTyp,WORD,<0>
	I_am	BugLev,WORD,<0>
include bugtyp.asm

	I_am	MYNUM,WORD,<0>		; [SYSTEM] A number that goes with MYNAME
	I_am	FCBLRU,WORD,<0> 	; [SYSTEM] LRU count for FCB cache
	I_am	OpenLRU,WORD,<0>	; [SYSTEM] LRU count for FCB cache opens
; NOTE: We include the decl of OEM_HANDLER in IBM DOS even though it is not used.
;	This allows the REDIRector to work on either IBM or MS-DOS.
	PUBLIC	OEM_HANDLER
OEM_HANDLER	DD	-1		; [SYSTEM] Pointer to OEM handler code
	I_am	LeaveAddr,WORD,<<OFFSET DOSGroup:LeaveDOS>> ; [SYSTEM]
	I_am	RetryCount,WORD,<3>	; [SYSTEM] Share retries
	I_am	RetryLoop,WORD,<1>	; [SYSTEM] Share retries
	I_am	LastBuffer,DWORD,<-1,-1>; [SYSTEM] Buffer queue recency pointer
	I_am	CONTPOS,WORD		; [SYSTEM] location in buffer of next read
	I_am	arena_head,WORD 	; [SYSTEM] Segment # of first arena in memory
; The following block of data is used by SYSINIT.  Do not change the order or
; size of this block
	PUBLIC	SYSINITVAR		; [SYSTEM]
SYSINITVAR  LABEL   WORD		; [SYSTEM]
	I_am	DPBHEAD,DWORD		; [SYSTEM] Pointer to head of DPB-FAT list
	I_am	sft_addr,DWORD,<<OFFSET DosGroup:sfTabl>,?> ; [SYSTEM] Pointer to first SFT table
	I_am	BCLOCK,DWORD		; [SYSTEM] The CLOCK device
	I_am	BCON,DWORD		; [SYSTEM] Console device entry points
	I_am	MAXSEC,WORD,<128>	; [SYSTEM] Maximum allowed sector size
	I_am	BUFFHEAD,DWORD		; [SYSTEM] Pointer to head of buffer queue
	I_am	CDSADDR,DWORD		; [SYSTEM] Pointer to curdir structure table
	I_am	sftFCB,DWORD		; [SYSTEM] pointer to FCB cache table
	I_am	KeepCount,WORD		; [SYSTEM] count of FCB opens to keep
	I_am	NUMIO,BYTE		; [SYSTEM] Number of disk tables
	I_am	CDSCOUNT,BYTE		; [SYSTEM] Number of CDS structures in above
; A fake header for the NUL device
	I_am	NULDEV,DWORD		; [SYSTEM] Link to rest of device list
	DW	DEVTYP OR ISNULL	; [SYSTEM] Null device attributes
	short_addr  SNULDEV		; [SYSTEM] Strategy entry point
	short_addr  INULDEV		; [SYSTEM] Interrupt entry point
	DB	"NUL     "              ; [SYSTEM] Name of null device
	I_am	Splices,BYTE,<0>	; [SYSTEM] TRUE => splices being done
	I_am	Special_Entries,WORD,<0>; [SYSTEM] address of specail entries	;AN000;
	I_am	IFS_DOS_CALL,DWORD	; [SYSTEM] entry for IFS DOS service	;AN000;
	I_am	IFS_HEADER,DWORD	; [SYSTEM] IFS header chain		;AN000;
	I_am	BUFFERS_PARM1,WORD,<0>	; [SYSTEM] value of BUFFERS= ,m 	;AN000;
	I_am	BUFFERS_PARM2,WORD,<0>	; [SYSTEM] value of BUFFERS= ,n 	;AN000;
	I_am	BOOTDRIVE,BYTE		; [SYSTEM] the boot drive		;AN000;
	I_am	DDMOVE,BYTE,<0> 	; [SYSTEM] 1 if we need DWORD move	;AN000;
	I_am	EXT_MEM_SIZE,WORD,<0>	; [SYSTEM] extended memory size 	;AN000;

	PUBLIC	HASHINITVAR		; [SYSTEM]				;AN000;
HASHINITVAR  LABEL   WORD		; [SYSTEM]				;AN000;
	I_am	BUF_HASH_PTR,DWORD	; [SYSTEM] buffer Hash table addr	;AN000;
	I_am	BUF_HASH_COUNT,WORD,<1> ; [SYSTEM] number of Hash entries	;AN000;
	I_am	SC_CACHE_PTR,DWORD	; [SYSTEM] secondary cache pointer	;AN000;
	I_am	SC_CACHE_COUNT,WORD,<0> ; [SYSTEM] secondary cache count	;AN000;

IF	BUFFERFLAG

	I_am	BUF_EMS_SAFE_FLAG,BYTE,<1>	; indicates whether the page used by buffers is safe or not
	I_am	BUF_EMS_LAST_PAGE,4,<0,0,0,0>	; holds the last page above 640k
	I_am	BUF_EMS_FIRST_PAGE,4,<0,0,0,0>  ; holds the first page above 640K
	I_am	BUF_EMS_NPA640,WORD,<0>		; holds the number of pages above 640K

ENDIF

	I_am	BUF_EMS_MODE,BYTE,<-1>	; [SYSTEM] EMS mode			;AN000;
	I_am	BUF_EMS_HANDLE,WORD	; [SYSTEM] buffer EMS handle		;AN000;
	I_am	BUF_EMS_PAGE_FRAME,WORD ,<-1>;[SYSTEM] EMS page frame number	;AN000;
	I_am	BUF_EMS_SEG_CNT,WORD,<1>; [SYSTEM] EMS seg count		;AN000;
	I_am	BUF_EMS_PFRAME,WORD	; [SYSTEM] EMS page frame seg address	;AN000;
	I_am	BUF_EMS_RESERV,WORD,<0> ; [SYSTEM] reserved			;AN000;

IF	BUFFERFLAG
	I_am	BUF_EMS_MAP_BUFF,1,<0>	; this is not used to save the state of the 
					; of the buffers page. this one byte is
					; retained to keep the size of this data 
					; block the same.
ELSE
	I_am	BUF_EMS_MAP_BUFF,12,<0,0,0,0,0,0,0,0,0,0,0,0>	; map buufer	;AN000;
ENDIF

; End of SYSINITVar block

;
; Sharer jump table
;
PUBLIC	JShare
	EVEN
JShare	LABEL	DWORD
	DW	OFFSET DOSGROUP:BadCall, 0
	DW	OFFSET DOSGROUP:OKCall,  0  ;	1   MFT_enter
	DW	OFFSET DOSGROUP:OKCall,  0  ;	2   MFTClose
	DW	OFFSET DOSGROUP:BadCall, 0  ;	3   MFTclU
	DW	OFFSET DOSGROUP:BadCall, 0  ;	4   MFTCloseP
	DW	OFFSET DOSGROUP:BadCall, 0  ;	5   MFTCloN
	DW	OFFSET DOSGROUP:BadCall, 0  ;	6   set_block
	DW	OFFSET DOSGROUP:BadCall, 0  ;	7   clr_block
	DW	OFFSET DOSGROUP:OKCall,  0  ;	8   chk_block
	DW	OFFSET DOSGROUP:BadCall, 0  ;	9   MFT_get
	DW	OFFSET DOSGROUP:BadCall, 0  ;	10  ShSave
	DW	OFFSET DOSGROUP:BadCall, 0  ;	11  ShChk
	DW	OFFSET DOSGROUP:OKCall , 0  ;	12  ShCol
	DW	OFFSET DOSGROUP:BadCall, 0  ;	13  ShCloseFile
	DW	OFFSET DOSGROUP:BadCall, 0  ;	14  ShSU

MSCT001E:
CONSTANTS	ENDS