summaryrefslogtreecommitdiff
path: root/v4.0/src/CMD/RECOVER/RECPARSE.INC
blob: dbe4712e211691437551ac027b5504e9dc5bc364 (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
const	segment public para 'const' ;AC000;bgb
;***************************************************************************
; Equates
;***************************************************************************
;
;Match Flags
Numeric_Value		equ	8000h		; AN000
Signed_Numeric_Value	equ	4000h		; AN000
Simple_String		equ	2000h		; AN000
Date_String		equ	1000h		; AN000
Time_String		equ	0800h		; AN000
Complex_List		equ	0400h		; AN000
Filespec		equ	0200h		; AN000
Drive_Only		equ	0100h		; AN000
Quoted_String		equ	0080h		; AN000
Ignore_Colon		equ	0010h		; AN000
Repeats_Allowed 	equ	0002h		; AN000
Optional		equ	0001h		; AN000

;Function_Flags

File_Table_Capitalize	equ	1		; AN000
Char_Table_Capitalize	equ	2		; AN000
Remove_Colon		equ	10h		; AN000

;Extra delimeters and EOL

No_Extra_Delimiters	equ	00h		; AN000;SM
Delimiters_Only 	equ	1		; AN000
EOL_Or_Delimiters	equ	2		; AN000

Semi_Colon		equ	";"             ; AN000
Tab			equ	09h		; AN000
Colon			equ	":"             ; AN000


;Parse Errors

No_Error		equ	0		; AN000
Too_Many_Operands	equ	1		; AN000
Operand_Missing 	equ	2		; AN000
Not_In_Switch_List	equ	3		; AN000
Not_In_Keyword_List	equ	4		; AN000
Out_Of_Range		equ	6		; AN000
Not_In_Value_List	equ	7		; AN000
Not_In_String_List	equ	8		; AN000
Syntax_Error		equ	9		; AN000
End_Of_Parse		equ	-1		; AN000

;Return types

Type_Reserved		equ	0		;				;AN000;
Type_Number		equ	1		;				;AN000;
Type_List_Index 	equ	2		;				;AN000;
Type_String		equ	3		;				;AN000;
Type_Complex		equ	4		;				;AN000;
Type_Filespec		equ	5		;				;AN000;
Type_Drive		equ	6		;				;AN000;
Type_Date		equ	7		;				;AN000;
Type_Time		equ	8		;				;AN000;
Type_Quoted_String	equ	9		;				;AN000;


;Other

None			equ	0		; AN000
No_Error		equ	0		; AN000
Switch_Found		equ	0FFFFh		; AN000
Range_Ok		equ	1		; AN000
Command_Line_Parms	equ	81h		; AN000
const	ends  ;AC000;bgb

data	segment public para 'DATA'  ;AC000;bgb
;***************************************************************************** ;AN000;bgb
;***************************************************************************** ;AN000;bgb
; Parse Tables								       ;AN000;bgb
;***************************************************************************** ;AN000;bgb
;***************************************************************************** ;AN000;bgb
;									       ;AN000;bgb
;The following parse control block can be used for any command which	       ;AN000;bgb
;needs only one optional file specification an operand.  Returns a	       ;AN000;bgb
;pointer to the unverified string in PARSE1_OUTPUT.  Currently used	       ;AN000;bgb
;for the RECOVER command.						       ;AN000;bgb
;***************************************************************************** ;AN000;bgb
;;;;db 'PARSE TABLE AREA'                                                      ;AN000;bgb
 public parms_input_block, parms_ext_block, control_block, value_list_block
 public results_block, parse_type, parse_code, parse_addr,
									       ;AN000;bgb
;***************************************************************************** ;AN000;bgb
; This is the parms input block pointed to by es:di before calling sysparse.   ;AN000;bgb
; it is the top level table.						       ;AN000;bgb
parms_input_block LABEL   BYTE						       ;AN000;bgb
		DW	dg:parms_ext_block	  ; addr of parms extension block ;AN000;bgb
		DB	0			; no delimiters or eol chars   ;AN000;bgb
									       ;AN000;bgb
;***************************************************************************** ;AN000;bgb
; This is the parms extension block pointed to by the parms input block.       ;AN000;bgb
; it defines the number and type of parameters allowed in the command line.    ;AN000;bgb
parms_ext_block LABEL	BYTE						       ;AN000;bgb
		DB	1,1			; only one positional parm     ;AN000;bgb
		DW	dg:control_block       ; addr of positional control block ;AN000;bgb
		DB	0			;	 no switches	       ;AN000;bgb
		DB	0			;	 no keywords	       ;AN000;bgb
;									       ;AN000;bgb
;PARSE control block for an optional file specification (upper cased)	       ;AN000;bgb
;or drive number							       ;AN000;bgb
;									       ;AN000;bgb
;***************************************************************************** ;AN000;bgb
; This is the control block for either drive letter "c:", or filename.ext, or  ;AN000;bgb
; both "c:filename.ext" entered in the command line. it is pointed to by the   ;AN000;bgb
; parms extension block.						       ;AN000;bgb
control_block	LABEL	BYTE						       ;AN000;bgb
		Dw	$p_file_spc+$p_drv_only ; allowable return values	;AN000;bgb
						; 0200 = filespec	       ;AN000;bgb
						; 0100 = drive only	       ;AN000;bgb
		DW	1			; capitalize - file table	;AN000;bgb
		DW	dg:results_block	   ; points to reults block	   ;AN000;bgb
		DW	dg:value_list_block	   ; point to valu list block	   ;AN000;bgb
		DB	0			; no keyword synonyms		;AN000;bgb
;										;AN000;bgb
;Indicates no value list for PARSE.						;AN000;bgb
;*****************************************************************************	;AN000;bgb
; This is the value list block pointed to by the control block.  This table is	;AN000;bgb
; used to define the type of numeric or string parameters expected.  Since no	;AN000;bgb
; parameters with numerics or strings are used, this block is set to zero.	;AN000;bgb
value_list_block DW	 0			 ;AN000;  no values		;AN000;bgb
										;AN000;bgb
;										;AN000;bgb
;Common output blocks for PARSE number, complex, or string values.		;AN000;bgb
;*****************************************************************************	;AN000;bgb
; This is the results block pointed to by the control block.			;AN000;bgb
; both "c:filename.ext" entered in the command line. it is pointed to by the    ;AN000;bgb
; parms extension block.							;AN000;bgb
results_block	LABEL	BYTE			;AN000; 			;AN000;bgb
PARSE_TYPE     DB      0		       ; type of parm returned		;AN000;bgb
PARSE_CODE     DB      0		       ; matched item tag / return valu ;AN000;bgb
PARSE_SYN      DW      0		       ;	es offset of synonym	;AN000;bgb
PARSE_ADDR     DD      0		       ; either a numeric value, or	;AN000;bgb
	       dd      0 ;parser puts in too many;the offset of string value	;AN000;bgb

;;;;DB 'PARSE AREA ENDS'
data	ends									;AN000;bgb
										;AN000;bgb
;										;AN000;
code	segment PUBLIC para 'CODE'   ;AC000;bgb                                 ;AN000;
;*****************************************************************************	;AN000;
; SysParse Routines								;AN000;
;*****************************************************************************	;AN000;
FarSW	equ	Not_Include			;				;AN000;
DateSW	equ	Not_Include			;				;AN000;
TimeSW	equ	Not_Include			;				;AN000;
FileSW	equ	Do_Include			;				;AN000;
CAPSW	equ	Not_Include			;				;AN000;
CmpxSW	equ	Not_Include			;				;AN000;
NumSW	equ	Not_Include			;				;AN000;
KeySW	equ	Not_Include			;				;AN000;
SwSW	equ	Not_Include			;				;AN000;
Val1SW	equ	Not_Include			;				;AN000;
Val2SW	equ	Not_Include			;				;AN000;
Val3SW	equ	Not_Include			;				;AN000;
DrvSW	equ	Do_Include			;				;AN000;
QusSW	equ	Not_Include			;
basesw	equ	1 ;use ds as the default register				;an040;bgb
incsw	equ	0 ;include psdata myself					;an040;bgb
code	ends									;an040;bgb
										;an040;bgb
										;an040;bgb
data	segment PUBLIC para 'DATA'                                              ;an040;bgb
include psdata.inc								;an040;bgb
data	ends									;an040;bgb
										;an040;bgb
code	segment PUBLIC para 'CODE'                                              ;an040;bgb
pathlabl parser 								;an040;bgb
INCLUDE PARSE.ASM				;AN000; 			;an040;bgb
pathlabl parser 								;an040;bgb
code	ends									;an040;bgb