1 ;****************************************************************************** ;AN000;
2 ; IFSFUNC Parse Symbol File ;AN000;
4 ; Parsing: NAMES = n ;;;alias[n | (n {m})] ;AN000;
6 ; Modification history: ;AN000;
7 ; Created: May 30 1987 ;AN000;
11 ;****************************************************************************** ;AN000;
13 IFSF_PARMS LABEL WORD ; IFSFUNC parms input block ;AN000;
14 DW IFSF_PARMSX ; offset of ifsfunc parms extension block ;AN000;
15 DB 0 ; No extra delimeters or eol chars ;AN000;
17 IFSF_PARMSX LABEL BYTE ; IFSFUNC parm extension block ;AN000;
18 DB 0,0,0 ; 0 positionals, 0 switches ;AN000;
19 DB 1 ; 1 keyword (NAMES=) ;AN000;
22 IFSF_K1 LABEL WORD ; IFSFUNC 1 keyword ;AN000;
23 DW 8001h ; Numeric/optional(NAMES= ok) ;AN000;
24 DW 0 ; no function ;AN000;
25 DW IFSF_RESULT ; Result buffer ;AN000;
26 DW IFSF_K1_VAL ; value list ;AN000;
27 DB 1 ; 1 keyword ;AN000;
30 IFSF_K1_VAL LABEL BYTE ; value definition ;AN000;
31 DB 1 ; # value defns: get one: n or (n,m) ;AN000;
32 DB 1 ; # ranges ;AN000;
33 DB "N" ; value to return if n in range ;AN000;
34 DD 0,255 ; range ;AN000;
37 ;;;alias Complex control blocks ;AN000;
39 ; IFSF_COMPLEX_PARMS LABEL WORD ;AN000;
40 ; DW IFSF_COMPLEX_PARMSX ;AN000;
41 ; DB 0 ; No extra delimeters or eol chars ;AN000;
43 ; IFSF_COMPLEX_PARMSX LABEL BYTE ; ;AN000;
44 ; DB 1,2 ; Min 1, Max 2 positionals ;AN000;
45 ; DW IFSF_COMPLEX_POS1 ;AN000;
46 ; DW IFSF_COMPLEX_POS2 ;AN000;
47 ; DB 0,0 ; 0 switches, 0 keywords ;AN000;
49 ; IFSF_COMPLEX_POS1 LABEL WORD ; ;AN000;
50 ; DW 8001h ; N - optional ;AN000;
51 ; DW 0 ; no function ;AN000;
52 ; DW IFSF_RESULT ; Result buffer ;AN000;
53 ; DW IFSF_POS_VAL ; value list ;AN000;
54 ; DB 0 ; no switches/keywords ;AN000;
56 ; IFSF_COMPLEX_POS2 LABEL WORD ; ;AN000;
57 ; DW 8001H ; Numeric value, optional ;AN000;
58 ; DW 0 ; no function ;AN000;
59 ; DW IFSF_RESULT ; Result value buffer ;AN000;
60 ; DW IFSF_POS_VAL ; value list ;AN000;
61 ;;;alias DB 0 ; no switches/keywords ;AN000;
63 ;FSF_POS_VAL LABEL BYTE ; value definition ;AN000;
64 ; DB 2 ; N and M ;AN000;
65 ; DB 2 ; 2 ranges ;AN000;
66 ; DB "N" ; item tag for N ;AN000;
67 ; DD 0,255 ; range of N ;AN000;
68 ; DB "M" ; item tag for M ;AN000;
69 ;;;aliasDD 0,8160 ; range of M ;AN000;
71 IFSF_RESULT LABEL BYTE ;AN000;
72 DB ? ; type - 1=number, 4=complex ;AN000;
73 IFSF_TAG DB ? ; item tag returned: N,M or FF ;AN000;
75 IFSF_NM DB ? ; actual n or m value ;AN000;
81 ; parser assemble switches ;AN000;
92 include PARSE.ASM ;together with PSDATA.INC ;AN000;