summaryrefslogtreecommitdiff
path: root/v4.0/src/CMD/CHKDSK/CHKPARSE.INC
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/CMD/CHKDSK/CHKPARSE.INC')
-rw-r--r--v4.0/src/CMD/CHKDSK/CHKPARSE.INC285
1 files changed, 285 insertions, 0 deletions
diff --git a/v4.0/src/CMD/CHKDSK/CHKPARSE.INC b/v4.0/src/CMD/CHKDSK/CHKPARSE.INC
new file mode 100644
index 0000000..ce76896
--- /dev/null
+++ b/v4.0/src/CMD/CHKDSK/CHKPARSE.INC
@@ -0,0 +1,285 @@
1 ;an000;bgb
2 ;an000;bgb
3 ;an000;bgb
4 ;an000;bgb
5data segment public para 'DATA' ;an000;bgb ;AN000;
6 ;an000;bgb
7 ;an000;bgb
8; ;an000;bgb
9;***************************************************************************** ;an000;bgb
10; Publics ;an000;bgb
11;***************************************************************************** ;an000;bgb
12; ;an000;bgb
13 ;an000;bgb
14; Public Drive_Letter_Buffer ;an000;bgb
15 Public SwBuffer ;an000;bgb
16 Public Switch_F_Buffer ;an000;bgb
17; Public FileSpec_Buffer ;an000;bgb
18 public buffer ;an000;bgb
19 public sw_v, sw_f ;an000;bgb;an020;bgb
20 ;an000;bgb
21; ;an000;bgb
22;*************************************************************************** ;an000;bgb
23; Equates ;an000;bgb
24;*************************************************************************** ;an000;bgb
25; ;an000;bgb
26 ;an000;bgb
27;Match Flags ;an000;bgb
28 ;an000;bgb
29Numeric_Value equ 8000h ; ;an000;bgb;AN000;
30Signed_Numeric_Value equ 4000h ; ;an000;bgb;AN000;
31Simple_String equ 2000h ; ;an000;bgb;AN000;
32Date_String equ 1000h ; ;an000;bgb;AN000;
33Time_String equ 0800h ; ;an000;bgb;AN000;
34Complex_List equ 0400h ; ;an000;bgb;AN000;
35Quoted_String equ 0080h ; ;an000;bgb;AN000;
36Ignore_Colon equ 0010h ; ;an000;bgb;AN000;
37Repeats_Allowed equ 0002h ; ;an000;bgb;AN000;
38Optional equ 0001h ; ;an000;bgb;AN000;
39Filespec equ 0200h ; ;an000;bgb;AN000;
40Drive_Only equ 0100h ; ;an000;bgb;AN000;
41 ;an000;bgb
42;Function_Flags ;an000;bgb
43 ;an000;bgb
44File_Table_Capitalize equ 1 ; ;an000;bgb;AN000;
45Char_Table_Capitalize equ 2 ; ;an000;bgb;AN000;
46Remove_Colon equ 10h ; ;an000;bgb;AN000;
47 ;an000;bgb
48;Extra delimeters and EOL ;an000;bgb
49 ;an000;bgb
50Delimiters_Only equ 1 ; ;an000;bgb;AN000;
51EOL_Or_Delimiters equ 2 ; ;an000;bgb;AN000;
52 ;an000;bgb
53Semi_Colon equ ";" ; ;an000;bgb;AN000;
54Tab equ 09h ; ;an000;bgb;AN000;
55Colon equ ":" ; ;an000;bgb;AN000;
56 ;an000;bgb
57 ;an000;bgb
58;Parse Errors ;an000;bgb
59 ;an000;bgb
60No_Error equ 0 ; ;an000;bgb;AN000;
61Too_Many_Operands equ 1 ; ;an000;bgb;AN000;
62Operand_Missing equ 2 ; ;an000;bgb;AN000;
63Not_In_Switch_List equ 3 ; ;an000;bgb;AN000;
64Not_In_Keyword_List equ 4 ; ;an000;bgb;AN000;
65Out_Of_Range equ 6 ; ;an000;bgb;AN000;
66Not_In_Value_List equ 7 ; ;an000;bgb;AN000;
67Not_In_String_List equ 8 ; ;an000;bgb;AN000;
68Syntax_Error equ 9 ; ;an000;bgb;AN000;
69End_Of_Parse equ -1 ; ;an000;bgb;AN000;
70 ;an000;bgb
71;Return types ;an000;bgb
72 ;an000;bgb
73Type_Reserved equ 0 ; ;an000;bgb;AN000;
74Type_Number equ 1 ; ;an000;bgb;AN000;
75Type_List_Index equ 2 ; ;an000;bgb;AN000;
76Type_String equ 3 ; ;an000;bgb;AN000;
77Type_Complex equ 4 ; ;an000;bgb;AN000;
78Type_Filespec equ 5 ; ;an000;bgb;AN000;
79Type_Drive equ 6 ; ;an000;bgb;AN000;
80Type_Date equ 7 ; ;an000;bgb;AN000;
81Type_Time equ 8 ; ;an000;bgb;AN000;
82Type_Quoted_String equ 9 ; ;an000;bgb;AN000;
83 ;an000;bgb
84;Other ;an000;bgb
85 ;an000;bgb
86None equ 0 ; ;an000;bgb;AN000;
87No_Error equ 0 ; ;an000;bgb;AN000;
88Switch_Found equ 0FFFFh ; ;an000;bgb;AN000;
89Range_Ok equ 1 ; ;an000;bgb;AN000;
90Command_Line_Parms equ 81h ; ;an000;bgb;AN000;
91 ;an000;bgb
92; ;an000;bgb
93;***************************************************************************** ;an000;bgb
94; Parse Structures ;an000;bgb
95;***************************************************************************** ;an000;bgb
96; ;an000;bgb
97 ;an000;bgb
98Control struc ;an000;bgb
99 ;an000;bgb
100Match_Flags dw ? ;an000;bgb
101Function_Flags dw ? ;an000;bgb
102Result dw ? ;an000;bgb
103Values dw ? ;an000;bgb
104Num_Keywords db ? ;an000;bgb
105Keyword db ? ;an000;bgb
106 ;an000;bgb
107Control ends ;an000;bgb
108 ;an000;bgb
109;Drive_Letter_Return struc ; ;an000;bgb ;AN000;
110;Drive_Type db 0 ; ;an000;bgb ;AN000;
111;Drive_Item_Tag db 0 ; ;an000;bgb ;AN000;
112;Drive_Pointer dw 0 ; ;an000;bgb ;AN000;
113;Drive_Number db 0 ;A=1, B=2, C=3 ;an000;bgb ;AN000;
114;Drive_debug db 8 dup(0) ;an000;bgb
115;Drive_Letter_Return ends ; ;an000;bgb ;AN000;
116; ;an000;bgb
117;Filespec_Return struc ;AN000;SM ;an000;bgb
118;Filespec_Type db 0 ;AN000;SM ;an000;bgb
119;FileSpec_Item db 0 ;AN000;SM ;an000;bgb
120;FileSpec_Pointer dw 0 ;AN000;SM ;an000;bgb
121;Filespec_String_Off dw 0 ;AN000;SM ;an000;bgb
122;FileSpec_String_Seg dw 0 ;an000;bgb
123;FileSpec_Return ends ;an000;bgb
124 ;an000;bgb
125single_Return struc ;AN000;SM ;an000;bgb
126dftype db 0 ;AN000;SM ;an000;bgb
127Item db 0 ;AN000;SM ;an000;bgb
128Pointer dw 0 ;AN000;SM ;an000;bgb
129drnum_stroff dw 0 ;AN000;SM ;an000;bgb
130return_strseg dw 0 ;an000;bgb
131single_return ends ;an000;bgb
132 ;an000;bgb
133 ;an000;bgb
134Switch_Return struc ; ;an000;bgb;AN000;
135Switch_Type db 0 ; ;an000;bgb;AN000;
136Switch_Item_Tag db 0 ; ;an000;bgb;AN000;
137Switch_Pointer dw 0 ; ;an000;bgb;AN000;
138Switch_Debug db 4 dup(0) ;an000;bgb
139Switch_Return ends ; ;an000;bgb;AN000;
140 ;an000;bgb
141Switch_Num_Return struc ; ;an000;bgb;AN000;
142Switch_Num_Type db 0 ; ;an000;bgb ;AN000;
143Switch_Num_Item_Tag db 0 ; ;an000;bgb ;AN000;
144Switch_Num_Pointer dw 0 ; ;an000;bgb ;AN000;
145Switch_Number_Low dw 0 ; ;AN0;an000;bgb00;
146Switch_Number_High dw 0 ; ;AN0;an000;bgb00;
147Switch_Num_Return ends ; ;an000;bgb;AN000;
148 ;an000;bgb
149Switch_String_Return struc ; ;an000;bgb;AN000;
150Switch_String_Type db 0 ; ;an000;bgb ;AN000;
151Switch_String_Item_Tag db 0 ; ;an000;bgb ;AN000;
152Switch_String_Pointer dw 0 ; ;an000;bgb ;AN000;
153Switch_String_Off dw 0 ; ;an000;bgb;AN000;
154Switch_String_Seg dw 0 ; ;an000;bgb;AN000;
155Switch_String_Return ends ; ;an000;bgb;AN000;
156 ;an000;bgb
157 ;an000;bgb
158; ;an000;bgb
159;************************************************************************** ;an000;bgb
160; Parse tables ;an000;bgb
161;************************************************************************** ;an000;bgb
162; ;an000;bgb
163Public input_Table ;an000;bgb
164input_Table label byte ; ;AN000;;an000;bgb
165 ;an000;bgb
166 dw offset dg:ext_table ;Point to next level ;A;an000;bgbN000;
167 db Delimiters_Only ; ;an000;bgb;AN000;
168 db 1 ; ;an000;bgb;AN000;
169 db Semi_Colon ; ;an000;bgb;AN000;
170 ;an000;bgb
171Drive_Table label byte ;an000;bgb;AN000;
172 ; ;an000;bgb
173 dw offset dg:Drive_Control_Definition ;Point to next level ;an000;bgb ;AN000;
174 db Delimiters_Only ; ;an000;bgb;AN000;
175 db 1 ; ;an000;bgb;AN000;
176 db Semi_Colon ; ;an000;bgb;AN000;
177 ;an000;bgb
178; ;an000;bgb
179;************************************************************************** ;an000;bgb
180;Define Positionals, Switches and Keywords ;an000;bgb
181;************************************************************************** ;an000;bgb
182; ;an000;bgb
183 ;an000;bgb
184Public ext_table ;an000;bgb
185ext_table label byte ; ;an000;bgb;AN000;
186 ; ;an000;bgb
187 db 0,1 ;up to one parm, either drive or file ;an000;bgb;an026;bgb
188 dw dg:dfcontrol ;Pointer to control table ;an000;bgb ;AN000;
189 db 1 ;1 switch def ;an000;bgb;AN020;bgb
190 dw dg:SwControl ;switch control block ;an000;bgb;AN020;bgb
191 db None ;No Keywords (maxk) ;an000;bgb;AN000;
192 ; ;an000;bgb
193Drive_Control_Definition label byte ; ;an000;bgb;AN000;
194 ; ;an000;bgb
195 db 0,1 ;Only drive letter positional ;an000;bgb;AN000;
196 dw dg:dfControl ;Pointer to control table ;AN0;an000;bgb00;
197 db None ;0 switches ;an000;bgb;AN000;
198 db None ;No Keywords (maxk) ;an000;bgb;AN000;
199 ; ;an000;bgb
200 ;an000;bgb
201 ;an000;bgb
202; ;an000;bgb
203;************************************************************************** ;an000;bgb
204; Define Positionals, Switches and Keywords ;an000;bgb
205;************************************************************************** ;an000;bgb
206; ;an000;bgb
207;this is the new control block for both drive letters and filespecs ;an000;bgb
208Public dfControl ;an000;bgb
209dfControl label byte ; ;AN000;;an000;bgb
210 dw drive_only+FileSpec+Optional ; ;an000;bgb ;AN000;
211 dw None ; ;an000;bgb;AN000;
212 dw dg:Buffer ; ;AN000; ;an000;bgb
213 dw dg:No_Value ; ;an000;bgb;AN000;
214 db None ; ;an000;bgb;AN000;
215 ;an000;bgb
216Public SwControl ;an02;an000;bgb0;bgb
217SwControl label byte ; ;AN020;;an000;bgbbgb
218 dw None ; ;an000;bgb;AN000;
219 dw None ; ;an000;bgb;AN000;
220 dw dg:SwBuffer ; ;AN000;;an000;bgb
221 dw dg:No_Value ;an000;bgb ;AN000;
222 db 2 ; ;an000;bgb;AN020;bgb
223sw_v db "/V",0 ; ;an000;bgb;AN020;bgb
224sw_f db "/F",0 ; ;an000;bgb;AN020;bgb
225 ; ;an000;bgb
226 ;an000;bgb
227; ;an000;bgb
228;***************************************************************************** ;an000;bgb
229; Value lists ;an000;bgb
230;***************************************************************************** ;an000;bgb
231; ;an000;bgb
232 ;an000;bgb
233No_Value db 0 ; ;an000;bgb;AN000;
234 ;an000;bgb
235 ;an000;bgb
236; ;an000;bgb
237;************************************************************************ ;an000;bgb
238; PARSE Return Buffers ;an000;bgb
239;************************************************************************ ;an000;bgb
240; ;an000;bgb
241; these buffers were replaced by a single buffer due to the parser bug ;an000;bgb
242;Drive_Letter_Buffer Drive_Letter_Return <> ;Example of structure ;an000;bgb ;AN000;
243;FileSpec_Buffer FileSpec_Return <> ; ;an000;bgb
244SwBuffer Switch_Return <> ; ;an000;bgb;AN000;
245Switch_F_Buffer Switch_Return <> ; ;an000;bgb;AN000;
246buffer single_return <> ; new results buffer ;an000;bgb
247data ends ; ;an000;bgb;AN000;
248 ;an000;bgb
249; ;an000;bgb
250;***************************************************************************** ;an000;bgb
251; SysParse Routines ;an000;bgb
252;***************************************************************************** ;an000;bgb
253; ;an000;bgb
254 ;an000;bgb
255 ;an000;bgb
256code segment public para 'CODE' ;an000;bgb
257 ;an000;bgb
258FarSW equ Not_Include ; ;an000;bgb;AN000; ;AN000;
259DateSW equ Not_Include ; ;an000;bgb;AN000;
260TimeSW equ Not_Include ; ;an000;bgb;AN000;
261FileSW equ Do_Include ; ;an000;bgb;AN000;
262CAPSW equ Not_Include ; ;an000;bgb;AN000;
263CmpxSW equ Not_Include ; ;an000;bgb;AN000;
264NumSW equ Not_Include ; ;an000;bgb;AN000;
265KeySW equ Not_Include ; ;an000;bgb;AN000;
266SwSW equ Do_Include ; ;an000;bgb;AN000;
267Val1SW equ Not_Include ; ;an000;bgb;AN000;
268Val2SW equ Not_Include ; ;an000;bgb;AN000;
269Val3SW equ Not_Include ; ;an000;bgb;AN000;
270DrvSW equ Do_Include ; ;an000;bgb;AN000;
271QusSW equ Not_Include ; ;an000;bgb;AN000;
272basesw equ 1 ;use ds as the default register ;an025;bgb
273incsw equ 0 ;include psdata myself ;an028;bgb
274code ends ;an028;bgb
275
276
277data segment PUBLIC para 'DATA' ;an028;bgb
278include psdata.inc ;an028;bgb
279data ends ;an028;bgb
280
281code segment PUBLIC para 'CODE' ;an028;bgb
282pathlabl parser ;an028;bgb
283INCLUDE PARSE.ASM ;AN000; ;an028;bgb
284pathlabl parser ;an028;bgb
285code ends ;an000;bgb