summaryrefslogtreecommitdiff
path: root/v4.0/src/CMD/CHKDSK/CHKPARSE.INC
blob: ce76896a24bfb0ffe5a9003040fb19402d55c37b (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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
										;an000;bgb
										;an000;bgb
										;an000;bgb
										;an000;bgb
data	segment public para 'DATA'                                              ;an000;bgb     ;AN000;
										;an000;bgb
										;an000;bgb
;										;an000;bgb
;*****************************************************************************	;an000;bgb
; Publics									;an000;bgb
;*****************************************************************************	;an000;bgb
;										;an000;bgb
										;an000;bgb
;	Public	Drive_Letter_Buffer						;an000;bgb
	Public	SwBuffer							;an000;bgb
	Public	Switch_F_Buffer 						;an000;bgb
;	Public	FileSpec_Buffer 						;an000;bgb
	public	buffer								;an000;bgb
	public	sw_v, sw_f							;an000;bgb;an020;bgb
										;an000;bgb
;										;an000;bgb
;***************************************************************************	;an000;bgb
; Equates									;an000;bgb
;***************************************************************************	;an000;bgb
;										;an000;bgb
										;an000;bgb
;Match Flags									;an000;bgb
										;an000;bgb
Numeric_Value		equ	8000h		;				;an000;bgb;AN000;
Signed_Numeric_Value	equ	4000h		;				;an000;bgb;AN000;
Simple_String		equ	2000h		;				;an000;bgb;AN000;
Date_String		equ	1000h		;				;an000;bgb;AN000;
Time_String		equ	0800h		;				;an000;bgb;AN000;
Complex_List		equ	0400h		;				;an000;bgb;AN000;
Quoted_String		equ	0080h		;				;an000;bgb;AN000;
Ignore_Colon		equ	0010h		;				;an000;bgb;AN000;
Repeats_Allowed 	equ	0002h		;				;an000;bgb;AN000;
Optional		equ	0001h		;				;an000;bgb;AN000;
Filespec		equ	0200h		;				;an000;bgb;AN000;
Drive_Only		equ	0100h		;				;an000;bgb;AN000;
										;an000;bgb
;Function_Flags 								;an000;bgb
										;an000;bgb
File_Table_Capitalize	equ	1		;				;an000;bgb;AN000;
Char_Table_Capitalize	equ	2		;				;an000;bgb;AN000;
Remove_Colon		equ	10h		;				;an000;bgb;AN000;
										;an000;bgb
;Extra delimeters and EOL							;an000;bgb
										;an000;bgb
Delimiters_Only 	equ	1		;				;an000;bgb;AN000;
EOL_Or_Delimiters	equ	2		;				;an000;bgb;AN000;
										;an000;bgb
Semi_Colon		equ	";"             ;                               ;an000;bgb;AN000;
Tab			equ	09h		;				;an000;bgb;AN000;
Colon			equ	":"             ;                               ;an000;bgb;AN000;
										;an000;bgb
										;an000;bgb
;Parse Errors									;an000;bgb
										;an000;bgb
No_Error		equ	0		;				;an000;bgb;AN000;
Too_Many_Operands	equ	1		;				;an000;bgb;AN000;
Operand_Missing 	equ	2		;				;an000;bgb;AN000;
Not_In_Switch_List	equ	3		;				;an000;bgb;AN000;
Not_In_Keyword_List	equ	4		;				;an000;bgb;AN000;
Out_Of_Range		equ	6		;				;an000;bgb;AN000;
Not_In_Value_List	equ	7		;				;an000;bgb;AN000;
Not_In_String_List	equ	8		;				;an000;bgb;AN000;
Syntax_Error		equ	9		;				;an000;bgb;AN000;
End_Of_Parse		equ	-1		;				;an000;bgb;AN000;
										;an000;bgb
;Return types									;an000;bgb
										;an000;bgb
Type_Reserved		equ	0		;				;an000;bgb;AN000;
Type_Number		equ	1		;				;an000;bgb;AN000;
Type_List_Index 	equ	2		;				;an000;bgb;AN000;
Type_String		equ	3		;				;an000;bgb;AN000;
Type_Complex		equ	4		;				;an000;bgb;AN000;
Type_Filespec		equ	5		;				;an000;bgb;AN000;
Type_Drive		equ	6		;				;an000;bgb;AN000;
Type_Date		equ	7		;				;an000;bgb;AN000;
Type_Time		equ	8		;				;an000;bgb;AN000;
Type_Quoted_String	equ	9		;				;an000;bgb;AN000;
										;an000;bgb
;Other										;an000;bgb
										;an000;bgb
None			equ	0		;				;an000;bgb;AN000;
No_Error		equ	0		;				;an000;bgb;AN000;
Switch_Found		equ	0FFFFh		;				;an000;bgb;AN000;
Range_Ok		equ	1		;				;an000;bgb;AN000;
Command_Line_Parms	equ	81h		;				;an000;bgb;AN000;
										;an000;bgb
;										;an000;bgb
;*****************************************************************************	;an000;bgb
; Parse Structures								;an000;bgb
;*****************************************************************************	;an000;bgb
;										;an000;bgb
										;an000;bgb
Control 	 struc								;an000;bgb
										;an000;bgb
Match_Flags	dw	?							;an000;bgb
Function_Flags	dw	?							;an000;bgb
Result		dw	?							;an000;bgb
Values		dw	?							;an000;bgb
Num_Keywords	db	?							;an000;bgb
Keyword 	db	?							;an000;bgb
										;an000;bgb
Control 	ends								;an000;bgb
										;an000;bgb
;Drive_Letter_Return	 struc			 ;				;an000;bgb ;AN000;
;Drive_Type		 db	 0			 ;			;an000;bgb	   ;AN000;
;Drive_Item_Tag 	 db	 0			 ;			;an000;bgb	   ;AN000;
;Drive_Pointer		 dw	 0			 ;			;an000;bgb	   ;AN000;
;Drive_Number		 db	 0			 ;A=1, B=2, C=3 	;an000;bgb	   ;AN000;
;Drive_debug		 db	 8 dup(0)					;an000;bgb
;Drive_Letter_Return	 ends			 ;				;an000;bgb ;AN000;
;										;an000;bgb
;Filespec_Return struc				 ;AN000;SM			;an000;bgb
;Filespec_Type		 db	 0		 ;AN000;SM			;an000;bgb
;FileSpec_Item		 db	 0		 ;AN000;SM			;an000;bgb
;FileSpec_Pointer	 dw	 0		 ;AN000;SM			;an000;bgb
;Filespec_String_Off	 dw	 0		 ;AN000;SM			;an000;bgb
;FileSpec_String_Seg	 dw	 0						;an000;bgb
;FileSpec_Return ends								;an000;bgb
										;an000;bgb
single_Return struc			      ;AN000;SM 			;an000;bgb
dftype		  db	  0		  ;AN000;SM				;an000;bgb
Item		  db	  0		  ;AN000;SM				;an000;bgb
Pointer 	  dw	  0		  ;AN000;SM				;an000;bgb
drnum_stroff	  dw	  0		  ;AN000;SM				;an000;bgb
return_strseg		 dw	 0						;an000;bgb
single_return	ends								;an000;bgb
										;an000;bgb
										;an000;bgb
Switch_Return	 struc				;				;an000;bgb;AN000;
Switch_Type	db	0			;				;an000;bgb;AN000;
Switch_Item_Tag db	0			;				;an000;bgb;AN000;
Switch_Pointer	dw	0			;				;an000;bgb;AN000;
Switch_Debug	db	4 dup(0)						;an000;bgb
Switch_Return	 ends				;				;an000;bgb;AN000;
										;an000;bgb
Switch_Num_Return    struc			;				;an000;bgb;AN000;
Switch_Num_Type     db	    0			    ;				;an000;bgb    ;AN000;
Switch_Num_Item_Tag db	    0			    ;				;an000;bgb    ;AN000;
Switch_Num_Pointer  dw	    0			    ;				;an000;bgb    ;AN000;
Switch_Number_Low   dw	    0		    ;				    ;AN0;an000;bgb00;
Switch_Number_High  dw	    0		    ;				    ;AN0;an000;bgb00;
Switch_Num_Return    ends			;				;an000;bgb;AN000;
										;an000;bgb
Switch_String_Return   struc			;				;an000;bgb;AN000;
Switch_String_Type     db      0		       ;			;an000;bgb	 ;AN000;
Switch_String_Item_Tag db      0		       ;			;an000;bgb	 ;AN000;
Switch_String_Pointer  dw      0		       ;			;an000;bgb	 ;AN000;
Switch_String_Off	dw	0		;				;an000;bgb;AN000;
Switch_String_Seg	dw	0		;				;an000;bgb;AN000;
Switch_String_Return ends			;				;an000;bgb;AN000;
										;an000;bgb
										;an000;bgb
;										;an000;bgb
;**************************************************************************	;an000;bgb
; Parse tables									;an000;bgb
;**************************************************************************	;an000;bgb
;										;an000;bgb
Public	input_Table								;an000;bgb
input_Table	 label	 byte		 ;				 ;AN000;;an000;bgb
										;an000;bgb
	dw	offset dg:ext_table		;Point to next level	      ;A;an000;bgbN000;
	db	Delimiters_Only 		;				;an000;bgb;AN000;
	db	1				;				;an000;bgb;AN000;
	db	Semi_Colon			;				;an000;bgb;AN000;
										;an000;bgb
Drive_Table		label	byte						;an000;bgb;AN000;
						;				;an000;bgb
	dw	offset dg:Drive_Control_Definition ;Point to next level 	;an000;bgb   ;AN000;
	db	Delimiters_Only 		;				;an000;bgb;AN000;
	db	1				;				;an000;bgb;AN000;
	db	Semi_Colon			;				;an000;bgb;AN000;
										;an000;bgb
;										;an000;bgb
;**************************************************************************	;an000;bgb
;Define Positionals, Switches and Keywords					;an000;bgb
;**************************************************************************	;an000;bgb
;										;an000;bgb
										;an000;bgb
Public	ext_table								;an000;bgb
ext_table		   label   byte 	;				;an000;bgb;AN000;
						;				;an000;bgb
	db	0,1			;up to one parm, either drive or file	;an000;bgb;an026;bgb
	dw	dg:dfcontrol			     ;Pointer to control table	;an000;bgb     ;AN000;
	db	1				;1 switch  def			;an000;bgb;AN020;bgb
	dw	dg:SwControl		;switch control block			;an000;bgb;AN020;bgb
	db	None				;No Keywords (maxk)		;an000;bgb;AN000;
						;				;an000;bgb
Drive_Control_Definition  label   byte		;				;an000;bgb;AN000;
						;				;an000;bgb
	db	0,1				;Only drive letter positional	;an000;bgb;AN000;
	dw	dg:dfControl		    ;Pointer to control table	    ;AN0;an000;bgb00;
	db	None				;0 switches			;an000;bgb;AN000;
	db	None				;No Keywords (maxk)		;an000;bgb;AN000;
						;				;an000;bgb
										;an000;bgb
										;an000;bgb
;										;an000;bgb
;**************************************************************************	;an000;bgb
; Define Positionals, Switches and Keywords					;an000;bgb
;**************************************************************************	;an000;bgb
;										;an000;bgb
;this is the new control block for both drive letters and filespecs		;an000;bgb
Public	dfControl								;an000;bgb
dfControl	 label	 byte		 ;				 ;AN000;;an000;bgb
	dw	drive_only+FileSpec+Optional		   ;			;an000;bgb	     ;AN000;
	dw	None				;				;an000;bgb;AN000;
	dw	dg:Buffer	       ;			       ;AN000;	;an000;bgb
	dw	dg:No_Value			;				;an000;bgb;AN000;
	db	None				;				;an000;bgb;AN000;
										;an000;bgb
Public	SwControl							   ;an02;an000;bgb0;bgb
SwControl	 label	 byte		 ;				 ;AN020;;an000;bgbbgb
	dw	None				;				;an000;bgb;AN000;
	dw	None				;				;an000;bgb;AN000;
	dw	dg:SwBuffer		 ;				 ;AN000;;an000;bgb
	dw	dg:No_Value							;an000;bgb   ;AN000;
	db	2				;				;an000;bgb;AN020;bgb
sw_v	db	"/V",0                          ;                               ;an000;bgb;AN020;bgb
sw_f	db	"/F",0                          ;                               ;an000;bgb;AN020;bgb
						;				;an000;bgb
										;an000;bgb
;										;an000;bgb
;*****************************************************************************	;an000;bgb
; Value lists									;an000;bgb
;*****************************************************************************	;an000;bgb
;										;an000;bgb
										;an000;bgb
No_Value	db	0			 ;				;an000;bgb;AN000;
										;an000;bgb
										;an000;bgb
;										;an000;bgb
;************************************************************************	;an000;bgb
; PARSE Return Buffers								;an000;bgb
;************************************************************************	;an000;bgb
;										;an000;bgb
; these buffers were replaced by a single buffer due to the parser bug		;an000;bgb
;Drive_Letter_Buffer	 Drive_Letter_Return	 <>  ;Example of structure	;an000;bgb ;AN000;
;FileSpec_Buffer	 FileSpec_Return	 <>  ;				;an000;bgb
SwBuffer		Switch_Return		<>  ;				;an000;bgb;AN000;
Switch_F_Buffer 	Switch_Return		<>  ;				;an000;bgb;AN000;
buffer			single_return		<>  ; new results buffer	;an000;bgb
data	ends					;				;an000;bgb;AN000;
										;an000;bgb
;										;an000;bgb
;*****************************************************************************	;an000;bgb
; SysParse Routines								;an000;bgb
;*****************************************************************************	;an000;bgb
;										;an000;bgb
										;an000;bgb
										;an000;bgb
code	segment public	para 'CODE'                                             ;an000;bgb
										;an000;bgb
FarSW	equ	Not_Include			;				;an000;bgb;AN000; ;AN000;
DateSW	equ	Not_Include			;				;an000;bgb;AN000;
TimeSW	equ	Not_Include			;				;an000;bgb;AN000;
FileSW	equ	Do_Include			;				;an000;bgb;AN000;
CAPSW	equ	Not_Include			;				;an000;bgb;AN000;
CmpxSW	equ	Not_Include			;				;an000;bgb;AN000;
NumSW	equ	Not_Include			;				;an000;bgb;AN000;
KeySW	equ	Not_Include			;				;an000;bgb;AN000;
SwSW	equ	Do_Include			;				;an000;bgb;AN000;
Val1SW	equ	Not_Include			;				;an000;bgb;AN000;
Val2SW	equ	Not_Include			;				;an000;bgb;AN000;
Val3SW	equ	Not_Include			;				;an000;bgb;AN000;
DrvSW	equ	Do_Include			;				;an000;bgb;AN000;
QusSW	equ	Not_Include			;				;an000;bgb;AN000;
basesw	equ	1 ;use ds as the default register				;an025;bgb
incsw	equ	0 ;include psdata myself					;an028;bgb
code	ends									;an028;bgb


data	segment PUBLIC para 'DATA'                                              ;an028;bgb
include psdata.inc								;an028;bgb
data	ends									;an028;bgb

code	segment PUBLIC para 'CODE'                                              ;an028;bgb
pathlabl parser 								;an028;bgb
INCLUDE PARSE.ASM				;AN000; 			;an028;bgb
pathlabl parser 								;an028;bgb
code	ends									;an000;bgb