summaryrefslogtreecommitdiff
path: root/v4.0/src/CMD/FORMAT/FORPARSE.INC
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/CMD/FORMAT/FORPARSE.INC')
-rw-r--r--v4.0/src/CMD/FORMAT/FORPARSE.INC523
1 files changed, 523 insertions, 0 deletions
diff --git a/v4.0/src/CMD/FORMAT/FORPARSE.INC b/v4.0/src/CMD/FORMAT/FORPARSE.INC
new file mode 100644
index 0000000..393b425
--- /dev/null
+++ b/v4.0/src/CMD/FORMAT/FORPARSE.INC
@@ -0,0 +1,523 @@
1;
2
3
4
5data segment public para 'DATA'
6
7;
8;*****************************************************************************
9; Publics
10;*****************************************************************************
11;
12
13 Public Drive_Letter_Buffer
14 Public Switch_Buffer
15 Public Switch_Num_Buffer
16 Public Switch_String_Buffer
17
18
19;
20;***************************************************************************
21; Equates
22;***************************************************************************
23;
24
25;Match Flags
26
27Numeric_Value equ 8000h ; ;AN000;
28Signed_Numeric_Value equ 4000h ; ;AN000;
29Simple_String equ 2000h ; ;AN000;
30Date_String equ 1000h ; ;AN000;
31Time_String equ 0800h ; ;AN000;
32Complex_List equ 0400h ; ;AN000;
33Filespec equ 0200h ; ;AN000;
34Drive_Only equ 0100h ; ;AN000;
35Quoted_String equ 0080h ; ;AN000;
36Ignore_Colon equ 0010h ; ;AN000;
37Repeats_Allowed equ 0002h ; ;AN000;
38Optional equ 0001h ; ;AN000;
39
40;Function_Flags
41
42File_Table_Capitalize equ 1 ; ;AN000;
43Char_Table_Capitalize equ 2 ; ;AN000;
44Remove_Colon equ 10h ; ;AN000;
45
46;Extra delimeters and EOL
47
48Delimiters_Only equ 1 ; ;AN000;
49EOL_Or_Delimiters equ 2 ; ;AN000;
50
51Semi_Colon equ ";" ; ;AN000;
52Tab equ 09h ; ;AN000;
53Colon equ ":" ; ;AN000;
54
55
56;Parse Errors
57
58No_Error equ 0 ; ;AN000;
59Too_Many_Operands equ 1 ; ;AN000;
60Operand_Missing equ 2 ; ;AN000;
61Not_In_Switch_List equ 3 ; ;AN000;
62Not_In_Keyword_List equ 4 ; ;AN000;
63Out_Of_Range equ 6 ; ;AN000;
64Not_In_Value_List equ 7 ; ;AN000;
65Not_In_String_List equ 8 ; ;AN000;
66Syntax_Error equ 9 ; ;AN000;
67End_Of_Parse equ -1 ; ;AN000;
68
69;Return types
70
71Type_Reserved equ 0 ; ;AN000;
72Type_Number equ 1 ; ;AN000;
73Type_List_Index equ 2 ; ;AN000;
74Type_String equ 3 ; ;AN000;
75Type_Complex equ 4 ; ;AN000;
76Type_Filespec equ 5 ; ;AN000;
77Type_Drive equ 6 ; ;AN000;
78Type_Date equ 7 ; ;AN000;
79Type_Time equ 8 ; ;AN000;
80Type_Quoted_String equ 9 ; ;AN000;
81
82;Other
83
84None equ 0 ; ;AN000;
85No_Error equ 0 ; ;AN000;
86Switch_Found equ 0FFFFh ; ;AN000;
87Range_Ok equ 1 ; ;AN000;
88Command_Line_Parms equ 81h ; ;AN000;
89
90;
91;*****************************************************************************
92; Parse Structures
93;*****************************************************************************
94;
95
96Control struc
97
98Match_Flags dw ?
99Function_Flags dw ?
100Result dw ?
101Values dw ?
102Num_Keywords db ?
103Keyword db ?
104
105Control ends
106
107Drive_Letter_Return struc ; ;AN000;
108
109Drive_Type db 0 ; ;AN000;
110Drive_Item_Tag db 0 ; ;AN000;
111Drive_Pointer dw 0 ; ;AN000;
112Drive_Number db 0 ;A=1, B=2, C=3 ;AN000;
113Drive_debug db 8 dup(0)
114
115Drive_Letter_Return ends ; ;AN000;
116
117Switch_Return struc ; ;AN000;
118
119Switch_Type db 0 ; ;AN000;
120Switch_Item_Tag db 0 ; ;AN000;
121Switch_Pointer dw 0 ; ;AN000;
122Switch_Debug db 4 dup(0)
123
124Switch_Return ends ; ;AN000;
125
126Switch_Num_Return struc ; ;AN000;
127
128Switch_Num_Type db 0 ; ;AN000;
129Switch_Num_Item_Tag db 0 ; ;AN000;
130Switch_Num_Pointer dw 0 ; ;AN000;
131Switch_Number_Low dw 0 ; ;AN000;
132Switch_Number_High dw 0 ; ;AN000;
133
134Switch_Num_Return ends ; ;AN000;
135
136Switch_String_Return struc ; ;AN000;
137
138Switch_String_Type db 0 ; ;AN000;
139Switch_String_Item_Tag db 0 ; ;AN000;
140Switch_String_Pointer dw 0 ; ;AN000;
141Switch_String_Off dw 0 ; ;AN000;
142Switch_String_Seg dw 0 ; ;AN000;
143
144Switch_String_Return ends ; ;AN000;
145
146
147;
148;**************************************************************************
149; Parse tables
150;**************************************************************************
151;
152
153IF FSExec ;conditionally assemble /FS: ;an018; dms;
154
155Switch_FS_Table label byte ; ;AN000;
156
157 dw Drive_Control_Definition ;Point to next level ;AN000;
158 db 0 ; ;AN000;
159
160ENDIF ;end conditional assembly /FS: ;an018; dms;
161
162Command_Line_Table label byte ; ;AN000;
163
164 dw Command_Control ;Point to next level ;AN000;
165 db 0 ; ;AN000;
166
167;
168;**************************************************************************
169;Define Positionals, Switches and Keywords
170;**************************************************************************
171;
172
173
174IF FSExec ;conditionally assemble /FS: ;an018; dms;
175
176Drive_Control_Definition label byte ; ;AN000;
177
178 db 1,1 ;Only drive letter posistional ;AN000;
179 dw Positional_Control ;Pointer to control table ;AN000;
180 db 1 ;1 switch ;AN000;
181 dw Switch_FS_Control ; ;AN000;
182 db None ;No Keywords (maxk) ;AN000;
183
184ENDIF ;end conditional assembly /FS: ;an018; dms;
185
186Command_Control label byte ; ;AN000;
187
188 db 1,1 ;Only drive letter posistional ;AN000;
189 dw Positional_Control ;Pointer to control table ;AN000;
190IF ShipDisk
191 db 13 ;if /Z switch needed ;an000; dms;
192ELSE
193 db 12 ; ;AC001;
194ENDIF
195 dw Switch_V_Control ;Without quotes AN000;
196 dw Switch_S_Control ; ;AN000;
197 dw Switch_4_Control ; ;AN000;
198 dw Switch_1_Control ; ;AN000;
199 dw Switch_8_Control ; ;AN000;
200 dw Switch_B_Control ; ;AN000;
201 dw Switch_T_Control ; ;AN000;
202 dw Switch_N_Control ; ;AN000;
203 dw Switch_Select_Control ; ;AN000;
204 dw Switch_Backup_Control ; ;AN000;
205 dw Switch_Autotest_Control ; ;AN000;
206 dw Switch_F_Control ; ;AC001;
207IF ShipDisk
208 dw Switch_Z_Control ;1 sector/cluster switch ;an000; dms;
209ENDIF
210 db None ;No Keywords (maxk) ;AN000;
211
212;
213;**************************************************************************
214;Control Tables
215;**************************************************************************
216;
217
218Positional_Control label byte ; ;AN000;
219
220 dw Drive_Only ;Match_Flag ;AN000;
221 dw None ;No function flags ;AN000;
222 dw Drive_Letter_Buffer ;Where it will be returned ;AN000;
223 dw No_Value ;No value ranges defined ;AN000;
224 db None ;No defined switches/keywords ;AN000;
225
226IF FSExec ;conditionally assemble /FS: ;an018; dms;
227
228Switch_FS_Control label byte
229 dw Simple_String ;/FS:xxxxx ;AN000;
230 dw File_Table_Capitalize ;Make it uppercase ;AN000;
231 dw Switch_String_Buffer ; ;AN000;
232 dw No_Value ; ;AN000;
233 db 1 ; ;AN000;
234 db "/FS",0 ; ;AN000;
235
236ENDIF ;end conditional assembly /FS: ;an018; dms;
237
238Switch_V_Control label byte ; ;AN000;
239
240 dw Simple_String+Quoted_String+Optional ;/v:xxxxxxxx ;AN000;
241 dw File_Table_Capitalize ; ;AN000;
242 dw Switch_String_Buffer ; ;AN000;
243 dw No_Value ; ;AN000;
244 db 1 ; ;AN000;
245 db "/V",0 ; ;AN000;
246
247Switch_S_Control label byte ; ;AN000;
248
249 dw None ; ;AN000;
250 dw None ; ;AN000;
251 dw Switch_Buffer ; ;AN000;
252 dw No_Value ; ;AN000;
253 db 1 ; ;AN000;
254 db "/S",0 ; ;AN000;
255
256Switch_4_Control label byte ; ;AN000;
257
258 dw None ; ;AN000;
259 dw None ; ;AN000;
260 dw Switch_Buffer ; ;AN000;
261 dw No_Value ; ;AN000;
262 db 1 ; ;AN000;
263 db "/4",0 ; ;AN000;
264
265Switch_1_Control label byte ; ;AN000;
266
267 dw None ; ;AN000;
268 dw None ; ;AN000;
269 dw Switch_Buffer ; ;AN000;
270 dw No_Value ; ;AN000;
271 db 1 ; ;AN000;
272 db "/1",0 ; ;AN000;
273
274Switch_8_Control label byte ; ;AN000;
275
276 dw None ; ;AN000;
277 dw None ; ;AN000;
278 dw Switch_Buffer ; ;AN000;
279 dw No_Value ; ;AN000;
280 db 1 ; ;AN000;
281 db "/8",0 ; ;AN000;
282
283Switch_B_Control label byte ; ;AN000;
284
285 dw None ; ;AN000;
286 dw None ; ;AN000;
287 dw Switch_Buffer ; ;AN000;
288 dw No_Value ; ;AN000;
289 db 1 ; ;AN000;
290 db "/B",0 ; ;AN000;
291
292Switch_T_Control label byte ; ;AN000;
293
294 dw Numeric_Value ; ;AN000;
295 dw None ; ;AN000;
296 dw Switch_Num_Buffer ; ;AN000;
297 dw Switch_T_Value ; ;AN000;
298 db 1 ; ;AN000;
299 db "/T",0 ; ;AN000;
300
301Switch_N_Control label byte ; ;AN000;
302
303 dw Numeric_Value ; ;AN000;
304 dw None ; ;AN000;
305 dw Switch_Num_Buffer ; ;AN000;
306 dw Switch_N_Value ; ;AN000;
307 db 1 ; ;AN000;
308 db "/N",0 ; ;AN000;
309
310Switch_Select_Control label byte ; ;AN000;
311
312 dw None ; ;AN000;
313 dw None ; ;AN000;
314 dw Switch_Buffer ; ;AN000;
315 dw No_Value ; ;AN000;
316 db 1 ; ;AN000;
317 db "/SELECT",0 ; ;AN000;
318
319Switch_Backup_Control label byte ; ;AN000;
320
321 dw None ; ;AN000;
322 dw None ; ;AN000;
323 dw Switch_Buffer ; ;AN000;
324 dw No_Value ; ;AN000;
325 db 1 ; ;AN000;
326 db "/BACKUP",0 ; ;AN000;
327
328Switch_Autotest_Control label byte ; ;AN000;
329
330 dw None ; ;AN000;
331 dw None ; ;AN000;
332 dw Switch_Buffer ; ;AN000;
333 dw No_Value ; ;AN000;
334 db 1 ; ;AN000;
335 db "/AUTOTEST",0 ; ;AN000;
336
337Switch_F_Control label byte ; ;AN001;
338 dw Simple_String ;/F:xxxxx ;AN001;
339 dw File_Table_Capitalize ;Make it uppercase ;AN001;
340 dw Switch_String_Buffer ; ;AN001;
341 dw Switch_Size_Value ; ;AN001;
342 db 1 ; ;AN001;
343 db "/F",0 ; ;AN001;
344
345IF ShipDisk
346
347Switch_Z_Control label byte ;control structure for /Z ;an000; dms;
348 dw None ; ;an000; dms;
349 dw None ; ;an000; dms;
350 dw Switch_Buffer ; ;an000; dms;
351 dw No_Value ; ;an000; dms;
352 db 1 ; ;an000; dms;
353 db "/Z",0 ; ;an000; dms;
354
355ENDIF
356
357;
358;************************************************************************
359; PARSE Value Lists
360;************************************************************************
361;
362
363Switch_T_Value label byte ; ;AN000;
364
365 db 1 ;Range only ;ANOOO;
366 db 1 ;1 range ;ANOOO;
367 db Range_OK ;Item_Tag ;ANOOO;
368 dd 1 ;1 is low bound ;ANOOO;
369 dd 1024 ;2**10 is max ;AN000;
370
371Switch_N_Value label byte ; ;AN000;
372
373 db 1 ;Range only ;ANOOO;
374 db 1 ;1 range ;ANOOO;
375 db Range_OK ;Item_Tag ;ANOOO;
376 dd 1 ;1 is low bound ;ANOOO;
377 dd 64 ;2**6 is max ;AN000;
378
379Switch_Size_Value label byte ; ;AN001;
380
381 db 3 ;Look for strings ;AN001;
382 db 0 ;No ranges ;AN001;
383 db 0 ;No numerics ;AN001;
384 db 27 ;16 possible strings ;AN001;
385 db Size_160 ; ;AN001;
386 dw String_160k_1 ;/F:160 ;AN001;
387 db Size_160 ; ;AN001;
388 dw String_160k_2 ;/F:160K ;AN001;
389 db Size_160 ; ;AN001;
390 dw String_160k_3 ;/F:160KB ;AN001;
391 db Size_180 ; ;AN001;
392 dw String_180k_1 ;/F:180 ;AN001;
393 db Size_180 ; ;AN001;
394 dw String_180k_2 ;/F:180K ;AN001;
395 db Size_180 ; ;AN001;
396 dw String_180k_3 ;/F:180KB ;AN001;
397 db Size_320 ; ;AN001;
398 dw String_320k_1 ;/F:320 ;AN001;
399 db Size_320 ; ;AN001;
400 dw String_320k_2 ;/F:320K ;AN001;
401 db Size_320 ; ;AN001;
402 dw String_320k_3 ;/F:320KB ;AN001;
403 db Size_360 ; ;AN001;
404 dw String_360k_1 ;/F:360 ;AN001;
405 db Size_360 ; ;AN001;
406 dw String_360k_2 ;/F:360K ;AN001;
407 db Size_360 ; ;AN001;
408 dw String_360k_3 ;/F:360KB ;AN001;
409 db Size_720 ; ;AN001;
410 dw String_720k_1 ;/F:720 ;AN001;
411 db Size_720 ; ;AN001;
412 dw String_720k_2 ;/F:720K ;AN001;
413 db Size_720 ; ;AN001;
414 dw String_720k_3 ;/F:720KB ;AN001;
415 db Size_1200 ; ;AN001;
416 dw String_1200k_1 ;/F:1200 ;AN001;
417 db Size_1200 ; ;AN001;
418 dw String_1200k_2 ;/F:1200K ;AN001;
419 db Size_1200 ; ;AN001;
420 dw String_1200k_3 ;/F:1200KB ;AN001;
421 db Size_1200 ; ;AN001;
422 dw String_1200k_4 ;/F:1.2 ;AN001;
423 db Size_1200 ; ;AN001;
424 dw String_1200k_5 ;/F:1.2M ;AN001;
425 db Size_1200 ; ;AN001;
426 dw String_1200k_6 ;/F:1.2MB ;AN001;
427 db Size_1440 ; ;AN001;
428 dw String_1440k_1 ;/F:1440 ;AN001;
429 db Size_1440 ; ;AN001;
430 dw String_1440k_2 ;/F:1440K ;AN001;
431 db Size_1440 ; ;AN001;
432 dw String_1440k_3 ;/F:1440KB ;AN001;
433 db Size_1440 ; ;AN001;
434 dw String_1440k_4 ;/F:1.44 ;AN001;
435 db Size_1440 ; ;AN001;
436 dw String_1440k_5 ;/F:1.44M ;AN001;
437 db Size_1440 ; ;AN001;
438 dw String_1440k_6 ;/F:1.44MB ;AN001;
439
440
441No_Value label byte ; ;AN000;
442 db 0 ; ;AN000;
443
444;
445;*****************************************************************************
446; Data Area for value lists
447;*****************************************************************************
448;
449
450;
451;The following are a list of the allowed strings for the /F:xxxxx switch.
452;
453
454String_160k_1 db "160" ,Asciiz_End ; ;AN001;
455String_160k_2 db "160K" ,Asciiz_End ; ;AN001;
456String_160k_3 db "160KB" ,Asciiz_End ; ;AN001;
457String_180k_1 db "180" ,Asciiz_End ; ;AN001;
458String_180k_2 db "180K" ,Asciiz_End ; ;AN001;
459String_180k_3 db "180KB" ,Asciiz_End ; ;AN001;
460String_320k_1 db "320" ,Asciiz_End ; ;AN001;
461String_320k_2 db "320K" ,Asciiz_End ; ;AN001;
462String_320k_3 db "320KB" ,Asciiz_End ; ;AN001;
463String_360k_1 db "360" ,Asciiz_End ; ;AN001;
464String_360k_2 db "360K" ,Asciiz_End ; ;AN001;
465String_360k_3 db "360KB" ,Asciiz_End ; ;AN001;
466String_720k_1 db "720" ,Asciiz_End ; ;AN001;
467String_720k_2 db "720K" ,Asciiz_End ; ;AN001;
468String_720k_3 db "720KB" ,Asciiz_End ; ;AN001;
469String_1200k_1 db "1200" ,Asciiz_End ; ;AN001;
470String_1200k_2 db "1200K",Asciiz_End ; ;AN001;
471String_1200k_3 db "1200KB",Asciiz_End ; ;AN001;
472String_1200k_4 db "1.2" ,Asciiz_End ; ;AN001;
473String_1200k_5 db "1.2M" ,Asciiz_End ; ;AN001;
474String_1200k_6 db "1.2MB" ,Asciiz_End ; ;AN001;
475String_1440k_1 db "1440" ,Asciiz_End ; ;AN001;
476String_1440k_2 db "1440K",Asciiz_End ; ;AN001;
477String_1440k_3 db "1440KB",Asciiz_End ; ;AN001;
478String_1440k_4 db "1.44",Asciiz_End ; ;AN001;
479String_1440k_5 db "1.44M",Asciiz_End ; ;AN001;
480String_1440k_6 db "1.44MB",Asciiz_End ; ;AN001;
481
482;
483;************************************************************************
484; PARSE Return Buffers
485;************************************************************************
486;
487
488Drive_Letter_Buffer Drive_Letter_Return <> ;Example of structure ;AN000;
489Switch_Buffer Switch_Return <> ; ;AN000;
490Switch_Num_Buffer Switch_Num_Return <> ; ;AN000;
491Switch_String_Buffer Switch_String_Return <> ; ;AN000;
492
493data ends
494
495;
496;*****************************************************************************
497; SysParse Routines
498;*****************************************************************************
499;
500
501
502code segment public para 'CODE'
503 assume cs:code,ds:Data
504
505FarSW equ Not_Include ;AN000;
506DateSW equ Not_Include ; ;AN000;
507TimeSW equ Not_Include ; ;AN000;
508FileSW equ Do_Include ; ;AN000;
509CAPSW equ Do_Include ; ;AN000;
510CmpxSW equ Not_Include ; ;AN000;
511NumSW equ Do_Include ; ;AN000;
512KeySW equ Not_Include ; ;AN000;
513SwSW equ Do_Include ; ;AN000;
514Val1SW equ DO_Include ; ;AN000;
515Val2SW equ Not_Include ; ;AN000;
516Val3SW equ Do_Include ; ;AN001;
517DrvSW equ Do_Include ; ;AN000;
518QusSW equ Do_Include ; ;AN000;
519
520INCLUDE PARSE.ASM ; ;AN000;
521
522
523code ends