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
|
;****************************************************************************** ;AN000;
; IFSFUNC Parse Symbol File ;AN000;
; ;AN000;
; Parsing: NAMES = n ;;;alias[n | (n {m})] ;AN000;
; ;AN000;
; Modification history: ;AN000;
; Created: May 30 1987 ;AN000;
; ;AN000;
; LOD - 35 ;AN000;
; ;AN000;
;****************************************************************************** ;AN000;
;AN000;
IFSF_PARMS LABEL WORD ; IFSFUNC parms input block ;AN000;
DW IFSF_PARMSX ; offset of ifsfunc parms extension block ;AN000;
DB 0 ; No extra delimeters or eol chars ;AN000;
;AN000;
IFSF_PARMSX LABEL BYTE ; IFSFUNC parm extension block ;AN000;
DB 0,0,0 ; 0 positionals, 0 switches ;AN000;
DB 1 ; 1 keyword (NAMES=) ;AN000;
DW IFSF_K1 ;AN000;
;AN000;
IFSF_K1 LABEL WORD ; IFSFUNC 1 keyword ;AN000;
DW 8001h ; Numeric/optional(NAMES= ok) ;AN000;
DW 0 ; no function ;AN000;
DW IFSF_RESULT ; Result buffer ;AN000;
DW IFSF_K1_VAL ; value list ;AN000;
DB 1 ; 1 keyword ;AN000;
DB "NAMES=",0 ;AN000;
;AN000;
IFSF_K1_VAL LABEL BYTE ; value definition ;AN000;
DB 1 ; # value defns: get one: n or (n,m) ;AN000;
DB 1 ; # ranges ;AN000;
DB "N" ; value to return if n in range ;AN000;
DD 0,255 ; range ;AN000;
;AN000;
;AN000;
;;;alias Complex control blocks ;AN000;
; ;AN000;
; IFSF_COMPLEX_PARMS LABEL WORD ;AN000;
; DW IFSF_COMPLEX_PARMSX ;AN000;
; DB 0 ; No extra delimeters or eol chars ;AN000;
; ;AN000;
; IFSF_COMPLEX_PARMSX LABEL BYTE ; ;AN000;
; DB 1,2 ; Min 1, Max 2 positionals ;AN000;
; DW IFSF_COMPLEX_POS1 ;AN000;
; DW IFSF_COMPLEX_POS2 ;AN000;
; DB 0,0 ; 0 switches, 0 keywords ;AN000;
; ;AN000;
; IFSF_COMPLEX_POS1 LABEL WORD ; ;AN000;
; DW 8001h ; N - optional ;AN000;
; DW 0 ; no function ;AN000;
; DW IFSF_RESULT ; Result buffer ;AN000;
; DW IFSF_POS_VAL ; value list ;AN000;
; DB 0 ; no switches/keywords ;AN000;
; ;AN000;
; IFSF_COMPLEX_POS2 LABEL WORD ; ;AN000;
; DW 8001H ; Numeric value, optional ;AN000;
; DW 0 ; no function ;AN000;
; DW IFSF_RESULT ; Result value buffer ;AN000;
; DW IFSF_POS_VAL ; value list ;AN000;
;;;alias DB 0 ; no switches/keywords ;AN000;
; ;AN000;
;FSF_POS_VAL LABEL BYTE ; value definition ;AN000;
; DB 2 ; N and M ;AN000;
; DB 2 ; 2 ranges ;AN000;
; DB "N" ; item tag for N ;AN000;
; DD 0,255 ; range of N ;AN000;
; DB "M" ; item tag for M ;AN000;
;;;aliasDD 0,8160 ; range of M ;AN000;
;AN000;
IFSF_RESULT LABEL BYTE ;AN000;
DB ? ; type - 1=number, 4=complex ;AN000;
IFSF_TAG DB ? ; item tag returned: N,M or FF ;AN000;
DW ? ;AN000;
IFSF_NM DB ? ; actual n or m value ;AN000;
DB ? ;AN000;
DB ? ;AN000;
DB ? ;AN000;
;AN000;
;AN000;
; parser assemble switches ;AN000;
DateSW equ 0 ;AN000;
TimeSW equ 0 ;AN000;
FileSW equ 0 ;AN000;
CAPSW equ 0 ;AN000;
DrvSW equ 0 ;AN000;
QusSW equ 0 ;AN000;
SwSW equ 0 ;AN000;
Val3SW equ 0 ;AN000;
;AN000;
;AN000;
include PARSE.ASM ;together with PSDATA.INC ;AN000;
|