1 ; returns current char in A
2 ; sets zero flag on EOL
18 ;EXPR - VARIABLE-TYPE EXPRESSION EVALUATION
19 ; Expression type is returned in A'F':
20 ; Numeric - A' bit 7=0, F' sign bit cleared.
21 ; String - A' bit 7=1, F' sign bit set.
22 ;Floating-point or integer result returned in HLH'L'C
23 ; Integer result denoted by C=0 and HLH'L' non-zero.
24 ;String result returned in string accumulator, DE set.
25 ; DE addresses byte after last (E=length).
27 ;Hierarchy is: (1) Variables, functions,
28 ; constants, bracketed expressions.
37 ;ITEM - VARIABLE TYPE NUMERIC OR STRING ITEM.
38 ;Item type is returned in A: Bit 7=0 numeric.
40 ;Numeric item returned in HLH'L'C.
41 ;String item returned in string accumulator,
42 ; DE addresses byte after last (E=length).
47 ; parse integer expression
48 ; Output: Integer in HLH'L', C=0
49 ; Destroys: A,C,H,L,A',B',C',H',L',F,F'
52 jp z,error_integer_expected
66 jp c,error_integer_expected
68 jp nc,error_integer_expected
102 ; parse string expression
103 ;String result returned in string accumulator, DE set.
104 ; DE addresses byte after last (E=length).
107 jp z,error_string_expected
111 jp nz,error_string_expected
119 jp z,error_string_expected
130 errmsg_integer_expected:
131 defx "integer expected"
134 errmsg_string_expected:
135 defx "string expected"
139 error_integer_expected:
140 ld hl,errmsg_integer_expected
143 ld hl,errmsg_out_of_range
145 error_string_expected:
146 ld hl,errmsg_string_expected