Line | Address | Object Code
| Label | F1 | N1 | B | F2 | N2 | Comments | Check
|
---|
1 | 0 | | ; tape1.d/boolexp.t2 |
|
2 | 0 | | ;------------------- |
|
3 | 0 | | ; |
|
4 | 0 | | ; compile boolean expression |
|
5 | 0 | | ; |
|
6 | 0 | | compbool:: | ; | |
|
7 | 0 | | ; |
|
8 | 0 | | =2915 | |
|
9 | 2915 | 0000000000000 | W2915: | +0 | ; | @2915
|
10 | 2916 | | =2917 | |
|
11 | 2917 | 0000000000000 | W2917: | +0 | ; | @2917
|
12 | 2918 | 0000000000041 | W2918: | +33 | ; | @2918
|
13 | 2919 | 0000000000043 | W2919: | +35 | ; | @2919
|
14 | 2920 | 0000000000044 | W2920: | +36 | ; | @2920
|
15 | 2921 | 0000000000042 | W2921: | +34 | ; | @2921
|
16 | 2922 | 0000000000055 | W2922: | +45 | ; | @2922
|
17 | 2923 | | | ; | |
|
18 | 2923 | | ; |
|
19 | 2923 | | .ent: | ; | |
|
20 | 2923 | 0605541 | | lod | .lnk | | | | ; return address | @2923
|
21 | 2923+ | | | pad | | | | | ; |
|
21+1 | 2923+ | 0000000 | | 00 | 0 | | | | |
|
22 | 2924 | | | call | | | | | ; stack return address | @2924
|
22+1 | 2924 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
23 | 2925 | 2210646537777 | | inc | stkp | / | cls | -1 | ; |
|
24 | 2926 | 0021403005556 | | o00 | W2240 | / | jmp | .sw-1 | ;switch | @2926
|
25 | 2927 | | ; |
|
26 | 2927 | | .sw: | ; | |
|
27 | 2927 | | | call | | | | | ; +1 get token | @2927
|
27+1 | 2927 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
28 | 2928 | 1105566 | | jmp | .sw2 | : | pad | | ; +2 | @2928
|
28+1 | 2928+ | 0000000 | | 00 | 0 | | | | |
|
29 | 2929 | 3021415005565 | | lod | W2243 | : | jmp | .sw3 | ; +3 |
|
30 | 2930 | 0604303 | | lod | W2243 | : | pad | | ; +4 | @2930
|
30+1 | 2930+ | 0000000 | | 00 | 0 | | | | |
|
31 | 2931 | | | call | | | | | ; |
|
31+1 | 2931 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
32 | 2932 | 1005607 | | jmp | .2951 | : | pad | | ; | @2932
|
32+1 | 2932+ | 0000000 | | 00 | 0 | | | | |
|
33 | 2933 | | .sw3: | ; | |
|
34 | 2933 | | | call | | | | | ; |
|
34+1 | 2933 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
35 | 2934 | 1005602 | | jmp | .2946 | | | | ; | @2934
|
36 | 2934+ | | ; |
|
37 | 2934+ | | .sw2: | ; | |
|
38 | 2934+ | 0600600 | | lod | token | | | | ;token | @2934+
|
39 | 2935 | 0124340 | | sub | K2b | | | | ;=2 [if] |
|
40 | 2935+ | 1045637 | | jz | .bcond | | | | ;special case |
|
41 | 2936 | | | call | | | | | ;test for operand/operator | @2936
|
41+1 | 2936 | 7326605005766 | | lnk | L3062.lnk | : | jmp | L3062.ent | |
|
42 | 2937 | | .bloop: | ; | |
|
43 | 2937 | 1045574 | | jz | .cont | | | | ;->OK |
|
44 | 2937+ | | .bloopa: | ; | |
|
45 | 2937+ | 0600600 | | lod | token | | | | ; |
|
46 | 2938 | | | call | | | | | ; | @2938
|
46+1 | 2938 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
47 | 2939 | | | call | | | | | ; |
|
47+1 | 2939 | 7326611005775 | | lnk | L3069.lnk | : | jmp | L3069.ent | |
|
48 | 2940 | | ; |
|
49 | 2940 | | .cont: | ; | |
|
50 | 2940 | | | call | | | | | ; | @2940
|
50+1 | 2940 | 7326605005760 | | lnk | TBoolVar.lnk | : | jmp | TBoolVar.ent | |
|
51 | 2941 | 1145577 | | jz | .2943P | | | | ; |
|
52 | 2941+ | | | pad | | | | | ;no-op |
|
52+1 | 2941+ | 0000000 | | 00 | 0 | | | | |
|
53 | 2942 | | .2942: | ; | |
|
54 | 2942 | | | call | | | | | ; | @2942
|
54+1 | 2942 | 7326605006002 | | lnk | BoolPrim.lnk | : | jmp | BoolPrim.ent | |
|
55 | 2943 | 1005607 | | jmp | .2951 | | | | ; |
|
56 | 2943+ | | ; |
|
57 | 2943+ | 0603427 | .2943P: | lod | idptr | | | | ; |
|
58 | 2944 | | | call | | | | | ; | @2944
|
58+1 | 2944 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
59 | 2945 | | | call | | | | | ; |
|
59+1 | 2945 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
60 | 2946 | | .2946: | ; | |
|
61 | 2946 | | | call | | | | | ; | @2946
|
61+1 | 2946 | 7326621005641 | | lnk | BoolFactor.lnk | : | jmp | BoolFactor.ent | |
|
62 | 2947 | 1145571 | | jz | .bloopa | | | | ; |
|
63 | 2947+ | | | nop | | | | | ; |
|
63+1 | 2947+ | 1005604 | | jmp | .1 | | | | |
|
63+2 | 2948 | | .1: | ; | |
|
64 | 2948 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; | @2948
|
65 | 2949 | 1145635 | | jz | .2973P | | | | ; |
|
66 | 2949+ | 0000000 | | o00 | 0 | | | | ; |
|
67 | 2950 | | | call | | | | | ; | @2950
|
67+1 | 2950 | 7323731005037 | | lnk | GenLoad0.lnk | : | jmp | GenLoad0.ent | |
|
68 | 2951 | | ; from 2943 |
|
69 | 2951 | | .2951: | call | | | | | |
|
69+1 | 2951 | 7326611005655 | | lnk | L2989.lnk | : | jmp | L2989.ent | |
|
70 | 2952 | 1125621 | | jn | .2961P | | | | ; | @2952
|
71 | 2952+ | 0000000 | | o00 | 0 | | | | ; no-op |
|
72 | 2953 | | .2953: | ; | |
|
73 | 2953 | | | call | | | | | ; test for eqv/hk/or |
|
73+1 | 2953 | 7326605005772 | | lnk | BoolOper1.lnk | : | jmp | BoolOper1.ent | |
|
74 | 2954 | 1045620 | | jz | .2960 | | | | ;yes, get rest of expression | @2954
|
75 | 2954+ | 0000000 | | o00 | 0 | | | | ;no-op |
|
76 | 2955 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; |
|
77 | 2956 | 0064345 | | and | W2277 | | | | ;=0001774017777 | @2956
|
78 | 2956+ | 1045616 | | jz | .2958 | | | | ;zero-> |
|
79 | 2957 | 1005620 | | jmp | .2960 | | | | ; |
|
80 | 2957+ | | ; |
|
81 | 2957+ | | | pad | | | | | ; |
|
81+1 | 2957+ | 0000000 | | 00 | 0 | | | | |
|
82 | 2958 | | ; |
|
83 | 2958 | 0010646577776 | .2958: | o00 | stkp | / | lod | -2 | ; | @2958
|
84 | 2959 | 1144752 | | jz | expression.done | | | | ; |
|
85 | 2959+ | | | pad | | | | | ;noop |
|
85+1 | 2959+ | 0000000 | | 00 | 0 | | | | |
|
86 | 2960 | | .2960: | ; | |
|
87 | 2960 | | | call | | | | | ; | @2960
|
87+1 | 2960 | 7326605006045 | | lnk | L3109.lnk | : | jmp | L3109.ent | |
|
88 | 2961 | 1005607 | | jmp | .2951 | | | | |
|
89 | 2961+ | | ; |
|
90 | 2961+ | 0600600 | .2961P: | lod | token | | | | ; |
|
91 | 2962 | | | call | | | | | ; | @2962
|
91+1 | 2962 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
92 | 2963 | | | call | | | | | ; |
|
92+1 | 2963 | 7326611005775 | | lnk | L3069.lnk | : | jmp | L3069.ent | |
|
93 | 2964 | | | call | | | | | ; | @2964
|
93+1 | 2964 | 7326605005760 | | lnk | TBoolVar.lnk | : | jmp | TBoolVar.ent | |
|
94 | 2965 | 1025634 | | jn | .2972 | | | | ; |
|
95 | 2965+ | 0603427 | | lod | idptr | | | | ; |
|
96 | 2966 | | | call | | | | | ; | @2966
|
96+1 | 2966 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
97 | 2967 | | | call | | | | | ; |
|
97+1 | 2967 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
98 | 2968 | | | call | | | | | ; | @2968
|
98+1 | 2968 | 7326611005655 | | lnk | L2989.lnk | : | jmp | L2989.ent | |
|
99 | 2969 | 1045611 | | jz | .2953 | | | | ; |
|
100 | 2969+ | 0000000 | | o00 | 0 | | | | ; |
|
101 | 2970 | | | call | | | | | ; | @2970
|
101+1 | 2970 | 7323761005021 | | lnk | SaveTemp.lnk | : | jmp | SaveTemp.ent | |
|
102 | 2971 | 1005571 | | jmp | .bloop | | | | ; |
|
103 | 2971+ | | ; |
|
104 | 2971+ | 0000000 | | o00 | 0 | | | | ; |
|
105 | 2972 | | ; |
|
106 | 2972 | | .2972: | call | | | | | ; | @2972
|
106+1 | 2972 | 7323761005021 | | lnk | SaveTemp.lnk | : | jmp | SaveTemp.ent | |
|
107 | 2973 | 1005576 | | jmp | .2942 | | | | ; |
|
108 | 2973+ | | ; |
|
109 | 2973+ | 0604340 | .2973P: | lod | K2b | | | | ;=2 |
|
110 | 2974 | 1661044 | _err34: | lnk | errlnk | | | | ;error 34: empty boolean expr | @2974
|
111 | 2974+ | 1001070 | | jmp | Error | | | | ;call error routine |
|
112 | 2975 | | .bcond: | ; | |
|
113 | 2975 | | | call | | | | | ; |
|
113+1 | 2975 | 7326605006100 | | lnk | L3136.lnk | : | jmp | L3136.ent | |
|
114 | 2976 | 1144752 | | jz | expression.done | | | | ; | @2976
|
115 | 2976+ | | | pad | | | | | ; |
|
115+1 | 2976+ | 0000000 | | 00 | 0 | | | | |
|
116 | 2977 | | ;-------------------------------------------------------------------- |
|
117 | 2977 | | ; |
|
118 | 2977 | | BoolFactor:: | ; | |
|
119 | 2977 | | ; |
|
120 | 2977 | | .ent: | ; | |
|
121 | 2977 | | | call | | | | | ; test equiv/hook/or |
|
121+1 | 2977 | 7326605005772 | | lnk | BoolOper1.lnk | : | jmp | BoolOper1.ent | |
|
122 | 2978 | 1125652 | | jn | .2986P | | | | ;no, end of boolean expression | @2978
|
123 | 2978+ | 0000000 | | o00 | 0 | | | | |
|
124 | 2979 | 0010646577776 | | o00 | stkp | / | lod | -2 | ; |
|
125 | 2980 | 1045654 | | jz | .2988 | | | | ; | @2980
|
126 | 2980+ | 0000000 | | o00 | 0 | | | | ; |
|
127 | 2981 | 0125546 | | sub | W2918 | | | | ; |
|
128 | 2981+ | 1045654 | | jz | .2988 | | | | ; |
|
129 | 2982 | 0124341 | | sub | K3a | | | | ;=3 | @2982
|
130 | 2982+ | 1145647 | | jz | .2983P | | | | ; |
|
131 | 2983 | 1005651 | | jmp | .2985 | | | | ; |
|
132 | 2983+ | | ; |
|
133 | 2983+ | | .2983P: | ; | |
|
134 | 2983+ | 0600600 | | lod | token | | | | ; |
|
135 | 2984 | 0125547 | | sub | W2919 | | | | ; | @2984
|
136 | 2984+ | 1145652 | | jz | .2986P | | | | ; |
|
137 | 2985 | | .2985: | ; | |
|
138 | 2985 | 0600600 | | lod | token | | | | ; |
|
139 | 2985+ | 0165546 | | bus | W2918 | | | | ; |
|
140 | 2986 | | .2986: | ; | |
|
141 | 2986 | 1025654 | | jn | .2988 | | | | ; | @2986
|
142 | 2986+ | | ; from 2978 |
|
143 | 2986+ | 0604321 | .2986P: | lod | False | | | | ; |
|
144 | 2987 | | | ret | | | | | ;return |
|
144+1 | 2987 | 0026623000001 | | o00 | BoolFactor.lnk | / | jmp | 1 | |
|
145 | 2988 | | ; from 2986 |
|
146 | 2988 | | .2988: | ; | |
|
147 | 2988 | 0626623000001 | | cla | Link5 | / | jmp | 1 | ;return, clearing acc |
|
148 | 2989 | | ;--------------------------------------------------------- |
|
149 | 2989 | | ; |
|
150 | 2989 | | L2989:: | ; | |
|
151 | 2989 | | ; |
|
152 | 2989 | | .ent: | ; | |
|
153 | 2989 | | | call | | | | | ; compile bool factor | @2989
|
153+1 | 2989 | 7326621005641 | | lnk | BoolFactor.lnk | : | jmp | BoolFactor.ent | |
|
154 | 2990 | 1025667 | | jn | .2999 | | | | ; return acc=0 | @2990
|
155 | 2990+ | 0000000 | | o00 | 0 | | | | ; no-op |
|
156 | 2991 | 0010646577776 | | o00 | stkp | / | lod | -2 | ; |
|
157 | 2992 | 1145670 | | jz | .3000P | | | | ; | @2992
|
158 | 2992+ | 0405543 | | sto | W2915 | | | | ; |
|
159 | 2993 | 0125547 | | sub | W2919 | | | | ; |
|
160 | 2993+ | 1145662 | | jz | .2994P | | | | ; |
|
161 | 2994 | 1005664 | | jmp | .2996 | | | | ; | @2994
|
162 | 2994+ | | ; |
|
163 | 2994+ | 0600600 | .2994P: | lod | token | | | | ; |
|
164 | 2995 | 0125550 | | sub | W2920 | | | | ; |
|
165 | 2995+ | 1145670 | | jz | .3000P | | | | ; |
|
166 | 2996 | | .2996: | ; | |
|
167 | 2996 | 0605543 | | lod | W2915 | | | | ; | @2996
|
168 | 2996+ | 0165546 | | bus | W2918 | | | | ; |
|
169 | 2997 | 1025667 | | jn | .2999 | | | | ; |
|
170 | 2997+ | 0600600 | | lod | token | | | | ; |
|
171 | 2998 | 0165551 | | bus | W2921 | | | | ; | @2998
|
172 | 2998+ | 1125670 | | jn | .3000P | | | | ; |
|
173 | 2999 | | .2999: | ; | |
|
174 | 2999 | 0626613000001 | | cla | Link30a | / | jmp | 1 | ; return with acc zero |
|
175 | 3000 | | ; |
|
176 | 3000 | 0000000 | | o00 | 0 | | | | |
|
177 | 3000+ | | ; |
|
178 | 3000+ | 0604321 | .3000P: | lod | False | | | | ; |
|
179 | 3001 | | | ret | | | | | ; return non-zero |
|
179+1 | 3001 | 0026613000001 | | o00 | L2989.lnk | / | jmp | 1 | |
|
180 | 3002 | | ;-------------------------------------------------------------------- |
|
181 | 3002 | | ; BoolComp - generate code for Boolean comparison. Assume first arithmetic |
|
182 | 3002 | | ; expression already compiled, result on stack. |
|
183 | 3002 | | ; |
|
184 | 3002 | | BoolComp:: | ; | |
|
185 | 3002 | | ; |
|
186 | 3002 | | .ent: | ; | |
|
187 | 3002 | 0605541 | | lod | .lnk | | | | ;return address | @3002
|
188 | 3002+ | 1661044 | _err35: | lnk | errlnk | | | | ;error 35: missing rel op |
|
189 | 3003 | 0010646177777 | | o00 | stkp | / | exa | -1 | ;swap with expression result |
|
190 | 3004 | | | call | | | | | ;save expression result | @3004
|
190+1 | 3004 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
191 | 3005 | | | call | | | | | ;check for rel operator |
|
191+1 | 3005 | 7323761105003 | | lnk | Relop.lnk | : | jmp | Relop.ent | |
|
192 | 3006 | 1045677 | | jz | .1 | | | | ;OK, save operator | @3006
|
193 | 3006+ | 1004772 | | jmp | error2 | | | | ;error |
|
194 | 3007 | | ; |
|
195 | 3007 | | .1: | ; | |
|
196 | 3007 | 0600600 | | lod | token | | | | ; |
|
197 | 3007+ | 0544300 | | cls | W2240 | | | | ; |
|
198 | 3008 | | | call | | | | | ;add operator to stack | @3008
|
198+1 | 3008 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
199 | 3009 | | | call | | | | | ;get next token |
|
199+1 | 3009 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
200 | 3010 | 0600600 | | lod | token | | | | ;load token id | @3010
|
201 | 3010+ | 1025750 | | jn | .bconst | | | | ;<0, constant |
|
202 | 3011 | | | call | | | | | ;get variable? |
|
202+1 | 3011 | 7323761005054 | | lnk | SimpleTerm.lnk | : | jmp | SimpleTerm.ent | |
|
203 | 3012 | 1025713 | | jn | .bcomplex | | | | ; | @3012
|
204 | 3012+ | | .bnonzero: | ; | |
|
205 | 3012+ | 0603427 | | lod | idptr | | | | ;get id/const info |
|
206 | 3013 | | | call | | | | | ;add info to stack |
|
206+1 | 3013 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
207 | 3014 | | | call | | | | | ;get next token | @3014
|
207+1 | 3014 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
208 | 3015 | | | call | | | | | ;test for arith operator |
|
208+1 | 3015 | 7323761005070 | | lnk | TestArithOp.lnk | : | jmp | TestArithOp.ent | |
|
209 | 3016 | 1025720 | | jn | .bsimple | | | | ;no, end of arith expression | @3016
|
210 | 3016+ | 0040000 | | o02 | 0 | | | | ;=1 |
|
211 | 3017 | 2710646600000 | | o27 | stkp | / | lod | 0 | ;pop item from stack |
|
212 | 3018 | | .bfull: | ; | |
|
213 | 3018 | 0404303 | | sto | W2243 | | | | ;save info on 1st part of exprn | @3018
|
214 | 3018+ | 0444300 | | inc | W2240 | | | | ;bump entry switch |
|
215 | 3019 | | .bcomplex: | ; | |
|
216 | 3019 | | | call | | | | | ; |
|
216+1 | 3019 | 7323761005021 | | lnk | SaveTemp.lnk | : | jmp | SaveTemp.ent | |
|
217 | 3020 | 0444300 | | inc | W2240 | | | | ;bump entry switch | @3020
|
218 | 3020+ | 0444300 | | inc | W2240 | | | | ;by (another) 2 |
|
219 | 3021 | | | call | | | | | ;compile rest of expression |
|
219+1 | 3021 | 7323131004627 | | lnk | expression.lnk | : | jmp | expression.ent | |
|
220 | 3022 | | | call | | | | | ;store result in temp | @3022
|
220+1 | 3022 | 7323761005021 | | lnk | SaveTemp.lnk | : | jmp | SaveTemp.ent | |
|
221 | 3023 | | | call | | | | | ; |
|
221+1 | 3023 | 7323731005040 | | lnk | GenLoad2.lnk | : | jmp | GenLoad2.ent | |
|
222 | 3024 | | .bsimple: | ; | |
|
223 | 3024 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; | @3024
|
224 | 3025 | 0404031 | | sto | IdInfo | | | | ; |
|
225 | 3025+ | 0540004 | | cls | 4 | | | | ; |
|
226 | 3026 | | | call | | | | | ; | @3026
|
226+1 | 3026 | 7323761005051 | | lnk | FreeTemp.lnk | : | jmp | FreeTemp.ent | |
|
227 | 3027 | | .bdone: | ; | |
|
228 | 3027 | 0604322 | | lod | TBool | | | | ; |
|
229 | 3027+ | | | pad | | | | | ;noop |
|
229+1 | 3027+ | 0000000 | | 00 | 0 | | | | |
|
230 | 3028 | 0010646177775 | | o00 | stkp | / | exa | -3 | ; | @3028
|
231 | 3029 | 0404306 | | sto | W2246 | | | | ;comparison type |
|
232 | 3029+ | 0604340 | | lod | K2b | | | | ;=2 |
|
233 | 3030 | 2710646600000 | | o27 | stkp | / | lod | 0 | ;reload operator | @3030
|
234 | 3031 | 0124332 | | sub | K52 | | | | ;=52 [GR] odd case |
|
235 | 3031+ | 1045731 | | jz | .bgr | | | | ;yes, skip |
|
236 | 3032 | 0104337 | | add | K24a | | | | ; | @3032
|
237 | 3032+ | 0104313 | | add | K1b | | | | ;=1 convert less (28) to 1 etc. |
|
238 | 3033 | | .bgr: | ; | |
|
239 | 3033 | 2400022605734 | | ads | 4 | / | lod | CmpTab | ;load appropriate pattern |
|
240 | 3034 | | | call | | | | | ;and generate the ocode | @3034
|
240+1 | 3034 | 7320121004032 | | lnk | gencode1.lnk | : | jmp | gencode1.ent | |
|
241 | 3035 | 1005073 | | jmp | Pop1 | | | | ;return via stack |
|
242 | 3035+ | | | pad | | | | | |
|
242+1 | 3035+ | 0000000 | | 00 | 0 | | | | |
|
243 | 3036 | | ;------- |
|
244 | 3036 | | ; |
|
245 | 3036 | | CmpTab: | ; | |
|
246 | 3036 | 0000000000043 | | +35 | ; +0 GR | @3036
|
247 | 3037 | 0000000000042 | | +34 | ; +1 LS | @3037
|
248 | 3038 | 0000000000044 | | +36 | ; +2 LE | @3038
|
249 | 3039 | 0000000000040 | | +32 | ; +3 EQ | @3039
|
250 | 3040 | 0000000000045 | | +37 | ; +4 GE | @3040
|
251 | 3041 | 0000000000037 | | +31 | ; +5 NE | @3041
|
252 | 3042 | 0000000000111 | | +73 | ; +6 GR rev | @3042
|
253 | 3043 | 0000000000041 | | +33 | ; +7 LS rev | @3043
|
254 | 3044 | 0000000000112 | | +74 | ; +8 LE rev | @3044
|
255 | 3045 | 0000000000114 | | +76 | ; +9 EQ rev | @3045
|
256 | 3046 | 0000000000115 | | +77 | ;+10 GE rev | @3046
|
257 | 3047 | 0000000000113 | | +75 | ;+11 NE rev | @3047
|
258 | 3048 | | ; |
|
259 | 3048 | | .bconst: | ; | |
|
260 | 3048 | 0016136600000 | | o00 | idptr | / | lod | 0 | ;fetch constant value | @3048
|
261 | 3049 | | | jnz | | | | | ;non-zero, normal test needed |
|
261+1 | 3049 | 1045752 | | jz | .1 | | | | |
|
261+2 | 3049+ | 1105704 | | jmp | BoolComp.bnonzero | | | | |
|
261+3 | 3050 | | .1: | ; | |
|
262 | 3050 | | | call | | | | | ;get next token | @3050
|
262+1 | 3050 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
263 | 3051 | | | call | | | | | ;arith operator - expression incomplete? |
|
263+1 | 3051 | 7323761005070 | | lnk | TestArithOp.lnk | : | jmp | TestArithOp.ent | |
|
264 | 3052 | 1125755 | | jn | .bcrev | | | | ;no, just constant | @3052
|
265 | 3052+ | 0603427 | | lod | idptr | | | | ; |
|
266 | 3053 | 1005712 | | jmp | .bfull | | | | ; |
|
267 | 3053+ | | ; |
|
268 | 3053+ | | .bcrev: | ; | |
|
269 | 3053+ | 0604350 | | lod | W2280 | | | | ;=6 |
|
270 | 3054 | 0400004 | | sto | 4 | | | | ;modify base for second set | @3054
|
271 | 3054+ | 0442151 | | inc | stkp | | | | ; |
|
272 | 3055 | 1005723 | | jmp | .bdone | | | | ; |
|
273 | 3055+ | | | pad | | | | | ; |
|
273+1 | 3055+ | 0000000 | | 00 | 0 | | | | |
|
274 | 3056 | | ;-------------------------------------------------------------------- |
|
275 | 3056 | | ; |
|
276 | 3056 | | TBoolVar:: | ; | |
|
277 | 3056 | | ; |
|
278 | 3056 | | .ent: | ; | |
|
279 | 3056 | | | call | | | | | ; | @3056
|
279+1 | 3056 | 7323761005054 | | lnk | SimpleTerm.lnk | : | jmp | SimpleTerm.ent | |
|
280 | 3057 | | .ret1: | ; | |
|
281 | 3057 | 0026607020001 | | o00 | .lnk | / | jn | 1 | ;return +1 if <(not an operand) |
|
282 | 3058 | 0603427 | | lod | idptr | | | | ; | @3058
|
283 | 3058+ | 0064324 | | and | T_Mask | | | | ;=00700000000000 |
|
284 | 3059 | 0164322 | | bus | TBool | | | | ;type=bool? |
|
285 | 3059+ | 1045765 | | jz | .rett | | | | ;yes, return true |
|
286 | 3060 | | ; |
|
287 | 3060 | | .retf: | ; | |
|
288 | 3060 | 0604321 | | lod | False | | | | ;=04000000000000 | @3060
|
289 | 3060+ | 1005761 | | jmp | .ret1 | | | | ;return with acc < 0 |
|
290 | 3061 | | ; |
|
291 | 3061 | | .rett: | ; | |
|
292 | 3061 | 0626607000001 | | cla | .lnk | / | jmp | 1 | ;return +1 with 0 in acc |
|
293 | 3062 | | ;-------------------------------------------------------------------- |
|
294 | 3062 | | ; |
|
295 | 3062 | | ; |
|
296 | 3062 | | L3062.ent: | ; | |
|
297 | 3062 | | | call | | | | | ; | @3062
|
297+1 | 3062 | 7323761004775 | | lnk | TestOpd.lnk | : | jmp | TestOpd.ent | |
|
298 | 3063 | 1045765 | | jz | .rett | | | | ;return with acc = 0 - constant/identifier etc. |
|
299 | 3063+ | | | pad | | | | | ; |
|
299+1 | 3063+ | 0000000 | | 00 | 0 | | | | |
|
300 | 3064 | | | call | | | | | ; | @3064
|
300+1 | 3064 | 7323761005070 | | lnk | TestArithOp.lnk | : | jmp | TestArithOp.ent | |
|
301 | 3065 | 1045765 | | jz | .rett | | | | ;return with acc = 0 |
|
302 | 3065+ | 1005764 | | jmp | .retf | | | | ;return with acc < 0 |
|
303 | 3066 | | ;-------------------------------------------------------------------- |
|
304 | 3066 | | ; |
|
305 | 3066 | | ; test for boolean low priority operators [equiv, hook, or] |
|
306 | 3066 | | ; |
|
307 | 3066 | | BoolOper1.ent: | ; | |
|
308 | 3066 | 0600600 | | lod | token | | | | ;token | @3066
|
309 | 3066+ | 0125546 | | sub | W2918 | | | | ;=33 [equiv,hook,or] |
|
310 | 3067 | 1025764 | | jn | .retf | | | | ;no -> return with < 0 |
|
311 | 3067+ | 0164341 | | bus | K3a | | | | ;=3 |
|
312 | 3068 | 1025764 | | jn | .retf | | | | ;no -> return with < 0 | @3068
|
313 | 3068+ | 1005765 | | jmp | .rett | | | | ;return with 0 |
|
314 | 3069 | | ;-------------------------------------------------------------------- |
|
315 | 3069 | | ; |
|
316 | 3069 | | L3069:: | ; | |
|
317 | 3069 | | ; |
|
318 | 3069 | | .ent: | ; | |
|
319 | 3069 | | | call | | | | | ; | @3069
|
319+1 | 3069 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
320 | 3070 | | | call | | | | | ; | @3070
|
320+1 | 3070 | 7326605005766 | | lnk | L3062.lnk | : | jmp | L3062.ent | |
|
321 | 3071 | 1046001 | | jz | .3073 | | | | ; |
|
322 | 3071+ | 0604340 | | lod | K2b | | | | ;=2 |
|
323 | 3072 | 1661044 | _err36: | lnk | errlnk | | | | ;error 36: missing operand in boolex | @3072
|
324 | 3072+ | 1001070 | | jmp | Error | | | | ; call error routine |
|
325 | 3073 | | .3073: | ; | |
|
326 | 3073 | | | ret | | | | | ; |
|
326+1 | 3073 | 0026613000001 | | o00 | L3069.lnk | / | jmp | 1 | |
|
327 | 3074 | | ;-------------------------------------------------------------------- |
|
328 | 3074 | | ; |
|
329 | 3074 | | BoolPrim:: | ; | |
|
330 | 3074 | | ; |
|
331 | 3074 | | .ent: | ; | |
|
332 | 3074 | 1661044 | _err37: | lnk | errlnk | | | | ;error 37: bad bool primary | @3074
|
333 | 3074+ | 0605541 | | lod | .lnk | | | | ; |
|
334 | 3075 | | | call | | | | | ; |
|
334+1 | 3075 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
335 | 3076 | 0600600 | | lod | token | | | | ; | @3076
|
336 | 3076+ | 0124323 | | sub | K47 | | | | ;=47 [(] |
|
337 | 3077 | 1046017 | | jz | .bnest | | | | ;nested expression |
|
338 | 3077+ | 0104331 | | add | K10a | | | | ;=10 =>[NOT] |
|
339 | 3078 | 1046034 | | jz | .bnot | | | | ;unary operator | @3078
|
340 | 3078+ | 0600600 | | lod | token | | | | ; |
|
341 | 3079 | 1046010 | | jz | .bident | | | | ;identifer |
|
342 | 3079+ | 1106014 | | jmp | .bother | | | | ;-> |
|
343 | 3080 | | ; |
|
344 | 3080 | | .bident: | ; | |
|
345 | 3080 | 0603427 | | lod | idptr | | | | ; | @3080
|
346 | 3080+ | 0064324 | | and | T_Mask | | | | ;=00700000000000 |
|
347 | 3081 | 0124322 | | sub | TBool | | | | ;=00100000000000 |
|
348 | 3081+ | 1144567 | | jz | Primary.prim | | | | ;not |
|
349 | 3082 | | .bconst: | ; | |
|
350 | 3082 | 0604340 | | lod | K2b | | | | ;=2 | @3082
|
351 | 3082+ | 0404300 | | sto | W2240 | | | | ;set entry switch=2 |
|
352 | 3083 | | | call | | | | | ;compile arithmetic expression |
|
352+1 | 3083 | 7323131004627 | | lnk | expression.lnk | : | jmp | expression.ent | |
|
353 | 3084 | 1006117 | | jmp | L3136.3 | | | | ;-> | @3084
|
354 | 3084+ | | ; |
|
355 | 3084+ | | .bother: | ; | |
|
356 | 3084+ | 1026012 | | jn | .bconst | | | | ;constant |
|
357 | 3085 | | | call | | | | | ; |
|
357+1 | 3085 | 7323761005070 | | lnk | TestArithOp.lnk | : | jmp | TestArithOp.ent | |
|
358 | 3086 | 1046012 | | jz | .bconst | | | | ; | @3086
|
359 | 3086+ | 1004772 | | jmp | error2 | | | | ;error |
|
360 | 3087 | | ; |
|
361 | 3087 | | .bnest: | ; | |
|
362 | 3087 | | | call | | | | | ; |
|
362+1 | 3087 | 7326605006126 | | lnk | L3158.lnk | : | jmp | L3158.ent | |
|
363 | 3088 | 0600600 | | lod | token | | | | ; | @3088
|
364 | 3088+ | 0124327 | | sub | K48 | | | | ;=48 [)] |
|
365 | 3089 | 1046022 | | jz | .bterm | | | | ; |
|
366 | 3089+ | 1105140 | | jmp | _err26 | | | | ; |
|
367 | 3090 | | ; |
|
368 | 3090 | | .bterm: | ; | |
|
369 | 3090 | | | call | | | | | ; | @3090
|
369+1 | 3090 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
370 | 3091 | 0604322 | | lod | TBool | | | | ; |
|
371 | 3091+ | 0205545 | | exa | W2917 | | | | ; |
|
372 | 3092 | 0124322 | | sub | TBool | | | | ; | @3092
|
373 | 3092+ | 1045073 | | jz | Pop1 | | | | ;return via stack |
|
374 | 3093 | | | call | | | | | ; |
|
374+1 | 3093 | 7323761005070 | | lnk | TestArithOp.lnk | : | jmp | TestArithOp.ent | |
|
375 | 3094 | 1026117 | | jn | L3136.3 | | | | ; | @3094
|
376 | 3094+ | 0040000 | | o02 | 0 | | | | ;=1 |
|
377 | 3095 | 2710646600000 | | o27 | stkp | / | lod | 0 | ; |
|
378 | 3096 | 0404303 | | sto | W2243 | | | | ; | @3096
|
379 | 3096+ | 0604347 | | lod | K4a | | | | ;=4 |
|
380 | 3097 | 0404300 | | sto | W2240 | | | | ; |
|
381 | 3097+ | | | pad | | | | | ; |
|
381+1 | 3097+ | 0000000 | | 00 | 0 | | | | |
|
382 | 3098 | | | call | | | | | ; | @3098
|
382+1 | 3098 | 7323131004627 | | lnk | expression.lnk | : | jmp | expression.ent | |
|
383 | 3099 | 1006117 | | jmp | L3136.3 | | | | ; |
|
384 | 3099+ | | | pad | | | | | ; |
|
384+1 | 3099+ | 0000000 | | 00 | 0 | | | | |
|
385 | 3100 | | ; |
|
386 | 3100 | | .bnot: | ; | |
|
387 | 3100 | | | call | | | | | ; | @3100
|
387+1 | 3100 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
388 | 3101 | | | call | | | | | ; |
|
388+1 | 3101 | 7326605005760 | | lnk | TBoolVar.lnk | : | jmp | TBoolVar.ent | |
|
389 | 3102 | 1026043 | | jn | .3107 | | | | ; | @3102
|
390 | 3102+ | 0603427 | | lod | idptr | | | | ; |
|
391 | 3103 | | | call | | | | | ; |
|
391+1 | 3103 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
392 | 3104 | | | call | | | | | ; | @3104
|
392+1 | 3104 | 7323731005037 | | lnk | GenLoad0.lnk | : | jmp | GenLoad0.ent | |
|
393 | 3105 | | | call | | | | | ; |
|
393+1 | 3105 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
394 | 3106 | | .3106: | ; | |
|
395 | 3106 | 0603501 | | lod | GPs+28 | | | | ; | @3106
|
396 | 3106+ | 1006123 | | jmp | L3136.6 | | | | ; |
|
397 | 3107 | | ; |
|
398 | 3107 | | .3107: | call | | | | | ; |
|
398+1 | 3107 | 7326605006002 | | lnk | BoolPrim.lnk | : | jmp | BoolPrim.ent | |
|
399 | 3108 | 1006042 | | jmp | .3106 | | | | ; | @3108
|
400 | 3108+ | | | pad | | | | | ; |
|
400+1 | 3108+ | 0000000 | | 00 | 0 | | | | |
|
401 | 3109 | | ; |
|
402 | 3109 | | ;L3109:: |
|
403 | 3109 | | ; |
|
404 | 3109 | | L3109.ent: | ; | |
|
405 | 3109 | 0010646577777 | | o00 | stkp | / | lod | -1 | ; |
|
406 | 3110 | 0404031 | | sto | IdInfo | | | | ; | @3110
|
407 | 3110+ | 0064324 | | and | T_Mask | | | | ;=00700000000000 |
|
408 | 3111 | 0164322 | | bus | TBool | | | | ; |
|
409 | 3111+ | 1126053 | | jn | .3115P | | | | ; |
|
410 | 3112 | 0010646577775 | | o00 | stkp | / | lod | -3 | ; | @3112
|
411 | 3113 | 1046055 | | jz | .3117 | | | | ; |
|
412 | 3113+ | 0405543 | | sto | W2915 | | | | ; |
|
413 | 3114 | 0064324 | | and | T_Mask | | | | ;=00700000000000 | @3114
|
414 | 3114+ | 0124322 | | sub | TBool | | | | ; |
|
415 | 3115 | 1046056 | | jz | .3118 | | | | ; |
|
416 | 3115+ | | .3115P: | ; | |
|
417 | 3115+ | 0604357 | | lod | W2287 | | | | ; |
|
418 | 3116 | | _err38: | ; | |
|
419 | 3116 | 1661044 | | lnk | errlnk | | | | ;error 38: illegal operator in boolex | @3116
|
420 | 3116+ | 1001070 | | jmp | Error | | | | ;call error routine |
|
421 | 3117 | | .3117: | ; | |
|
422 | 3117 | 0605574 | | lod | compbool.cont | | | | ; |
|
423 | 3117+ | 1006054 | | jmp | _err38 | | | | ; |
|
424 | 3118 | | ; |
|
425 | 3118 | 0605543 | .3118: | lod | W2915 | | | | ; | @3118
|
426 | 3118+ | 0064345 | | and | W2277 | | | | ; |
|
427 | 3119 | 1046062 | | jz | .3122 | | | | ; |
|
428 | 3119+ | 0605543 | | lod | W2915 | | | | ; |
|
429 | 3120 | 0404031 | | sto | IdInfo | | | | ; | @3120
|
430 | 3120+ | 0604322 | | lod | TBool | | | | ; |
|
431 | 3121 | 0010646377775 | | o00 | stkp | / | sto | -3 | ; |
|
432 | 3122 | | .3122: | ; | |
|
433 | 3122 | 0604031 | | lod | IdInfo | | | | ; | @3122
|
434 | 3122+ | 0000000 | | o00 | 0 | | | | ; |
|
435 | 3123 | | | call | | | | | ; |
|
435+1 | 3123 | 7323761005051 | | lnk | FreeTemp.lnk | : | jmp | FreeTemp.ent | |
|
436 | 3124 | 0010646577776 | | o00 | stkp | / | lod | -2 | ; | @3124
|
437 | 3125 | 0165550 | | bus | W2920 | | | | ; |
|
438 | 3125+ | 1026055 | | jn | .3117 | | | | ; |
|
439 | 3126 | 0164341 | | bus | K3a | | | | ;=3 | @3126
|
440 | 3126+ | 1026055 | | jn | .3117 | | | | ; |
|
441 | 3127 | 2026616606074 | | sto | W2915 | / | lod | Tab3132 | ; |
|
442 | 3128 | 1046055 | | jz | .3117 | | | | ; | @3128
|
443 | 3128+ | 0000000 | | o00 | 0 | | | | ; |
|
444 | 3129 | | | call | | | | | ; |
|
444+1 | 3129 | 7320121004032 | | lnk | gencode1.lnk | : | jmp | gencode1.ent | |
|
445 | 3130 | 0604340 | | lod | K2b | | | | ;=2 | @3130
|
446 | 3130+ | 0562151 | | o27 | stkp | | | | ; |
|
447 | 3131 | | | ret | | | | | ; |
|
447+1 | 3131 | 0026607000001 | | o00 | BoolPrim.lnk | / | jmp | 1 | |
|
448 | 3132 | | ; |
|
449 | 3132 | | Tab3132: | ; | |
|
450 | 3132 | 0000000000046 | | +38 | |
|
451 | 3133 | 0000000000000 | | +0 | |
|
452 | 3134 | 0000000000036 | | +30 | |
|
453 | 3135 | 0000000000035 | | +29 | |
|
454 | 3136 | | ;-------------------------------------------------------------------- |
|
455 | 3136 | | ; |
|
456 | 3136 | | L3136:: | ; | |
|
457 | 3136 | | ; |
|
458 | 3136 | | L3136.ent: | ; | |
|
459 | 3136 | 0605541 | | lod | .lnk | | | | ; | @3136
|
460 | 3136+ | 0545230 | | cls | W2712 | | | | ; |
|
461 | 3137 | | | call | | | | | ; |
|
461+1 | 3137 | 7323731005012 | | lnk | push.lnk | : | jmp | push.ent | |
|
462 | 3138 | | | call | | | | | ; | @3138
|
462+1 | 3138 | 7325115005260 | | lnk | compif.lnk | : | jmp | compif.ent | |
|
463 | 3139 | 1006105 | | jmp | .1 | | | | ; |
|
464 | 3139+ | | ; |
|
465 | 3139+ | | | pad | | | | | ; |
|
465+1 | 3139+ | 0000000 | | 00 | 0 | | | | |
|
466 | 3140 | 0000000000000 | | +0 | ; | @3140
|
467 | 3141 | | ; |
|
468 | 3141 | | .1: | ; | |
|
469 | 3141 | | | call | | | | | ; |
|
469+1 | 3141 | 7326605006127 | | lnk | L3159.lnk | : | jmp | L3159.ent | |
|
470 | 3142 | 0600600 | | lod | token | | | | ; | @3142
|
471 | 3142+ | 0124370 | | sub | W2296 | | | | ; |
|
472 | 3143 | 1146124 | | jz | .7 | | | | ; |
|
473 | 3143+ | 1105236 | | jmp | _err28 | | | | ; |
|
474 | 3144 | | ; |
|
475 | 3144 | | .2: | ; | |
|
476 | 3144 | 0544300 | | cls | W2240 | | | | ; | @3144
|
477 | 3144+ | 0604335 | | lod | W2269 | | | | ; |
|
478 | 3145 | | | call | | | | | ; |
|
478+1 | 3145 | 7320121004032 | | lnk | gencode1.lnk | : | jmp | gencode1.ent | |
|
479 | 3146 | 0444300 | | inc | W2240 | | | | ; | @3146
|
480 | 3146+ | 0605545 | | lod | W2917 | | | | ; |
|
481 | 3147 | 0124322 | | sub | TBool | | | | ; |
|
482 | 3147+ | 1046121 | | jz | .4 | | | | ; |
|
483 | 3148 | | | call | | | | | ; | @3148
|
483+1 | 3148 | 7323131004627 | | lnk | expression.lnk | : | jmp | expression.ent | |
|
484 | 3149 | | | pad | | | | | ; |
|
484+1 | 3149 | 0000000 | | 00 | 0 | | | | |
|
485 | 3149+ | 0604346 | | lod | W2278 | | | | ; |
|
486 | 3150 | | | call | | | | | ; | @3150
|
486+1 | 3150 | 7320121004032 | | lnk | gencode1.lnk | : | jmp | gencode1.ent | |
|
487 | 3151 | | .3: | ; | |
|
488 | 3151 | | | call | | | | | ; |
|
488+1 | 3151 | 7326605005672 | | lnk | BoolComp.lnk | : | jmp | BoolComp.ent | |
|
489 | 3152 | 1005073 | | jmp | Pop1 | | | | ;return via stack | @3152
|
490 | 3152+ | | | pad | | | | | |
|
490+1 | 3152+ | 0000000 | | 00 | 0 | | | | |
|
491 | 3153 | | ; |
|
492 | 3153 | | .4: | ; | |
|
493 | 3153 | | | call | | | | | ; |
|
493+1 | 3153 | 7326605005553 | | lnk | compbool.lnk | : | jmp | compbool.ent | |
|
494 | 3154 | | | pad | | | | | ; | @3154
|
494+1 | 3154 | 0000000 | | 00 | 0 | | | | |
|
495 | 3154+ | | .5: | ; | |
|
496 | 3154+ | 0603474 | | lod | GPs+23 | | | | ;=04000000000014 |
|
497 | 3155 | | .6: | ; | |
|
498 | 3155 | | | call | | | | | ; |
|
498+1 | 3155 | 7320121004033 | | lnk | gencode.lnk | : | jmp | gencode.ent | |
|
499 | 3156 | 1005073 | | jmp | Pop1 | | | | ;return via stack | @3156
|
500 | 3156+ | | ; |
|
501 | 3156+ | | .7: | ; | |
|
502 | 3156+ | 0040000 | | o02 | 0 | | | | ;=1 |
|
503 | 3157 | 0562151 | | o27 | stkp | | | | ; |
|
504 | 3157+ | 1006110 | | jmp | .2 | | | | ; |
|
505 | 3158 | | ;-------------------------------------------------------------------- |
|