include "hdr1.html"; ?>
Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | ; tape1.d/advance.t2 | ||||||||
2 | 0 | ;------------------- | ||||||||
3 | 0 | ; | ||||||||
4 | 0 | advance:: | ; | |||||||
5 | 0 | ; | ||||||||
6 | 0 | ; process identifer, constant for expressions etc. | ||||||||
7 | 0 | ; advance2, is alternate entry bypassing initial gettoken call | ||||||||
8 | 0 | ; for identifier - lookup in dic and report non-declaration | ||||||||
9 | 0 | ; for FP constants - convert constituents into FP num and store | ||||||||
10 | 0 | ; in constant list | ||||||||
11 | 0 | ; also handles %1 construct, location refs | ||||||||
12 | 0 | ; | ||||||||
13 | 0 | =2371 | ||||||||
14 | 2371 | .ent: | ; | |||||||
15 | 2371 | call | ; | @2371 | ||||||
15+1 | 2371 | 7305105001222 | lnk | gettoken.lnk | : | jmp | gettoken.ent | |||
16 | 2372 | advance2.ent: | ; | |||||||
17 | 2372 | 0600600 | lod | token | ;token (symbol identity) | @2372 | ||||
18 | 2372+ | 1124513 | jn | .const | ;constant | |||||
19 | 2373 | 1044512 | jz | .ident | ;identifier | |||||
20 | 2373+ | 0124312 | sub | K20 | ;=20 | |||||
21 | 2374 | 1044541 | jz | .true | ; symbol=TRUE | @2374 | ||||
22 | 2374+ | 0124313 | sub | K1b | ;=1 | |||||
23 | 2375 | 1144541 | jz | .false | ; symbol=FALSE | |||||
24 | 2375+ | 0124314 | sub | K32a | ;=32 | |||||
25 | 2376 | 1044544 | jz | .location | ; symbol=LOCATION | @2376 | ||||
26 | 2376+ | ; | ||||||||
27 | 2376+ | ; identifiers come here after calling lookupid | ||||||||
28 | 2376+ | _err20: | ; | |||||||
29 | 2376+ | 1661044 | lnk | errlnk | ;error 20: identifier not declared | |||||
30 | 2377 | 1044772 | jz | error2 | ;error, id not found in dict | |||||
31 | 2377+ | 1104615 | jmp | .idOK | ; -->>OK, identifier declared | |||||
32 | 2378 | ; | ||||||||
33 | 2378 | =2445+ | ||||||||
34 | 2445+ | .idOK: | ; | |||||||
35 | 2445+ | 0124313 | sub | K1b | ;=1 | |||||
36 | 2446 | jnz | ; | |||||||
36+1 | 2446 | 1044617 | jz | .1 | ||||||
36+2 | 2446+ | 1004540 | jmp | advance.ret | ||||||
36+3 | 2447 | .1: | ; | |||||||
37 | 2447 | call | ; | @2447 | ||||||
37+1 | 2447 | 7305105001222 | lnk | gettoken.lnk | : | jmp | gettoken.ent | |||
38 | 2448 | 0040000 | o02 | 0 | ; | @2448 | ||||
39 | 2448+ | 0120576 | sub | ident | ; | |||||
40 | 2449 | 1044623 | jz | .doPC | ;process %1 construct | |||||
41 | 2449+ | _err54: | ; | |||||||
42 | 2449+ | 1661044 | lnk | errlnk | ;error 54 % not followed by 1 or | |||||
43 | 2450 | ;occurrence of # within inner string | ||||||||
44 | 2450 | 1001070 | jmp | Error | ;call error routine | @2450 | ||||
45 | 2450+ | pad | ; | |||||||
45+1 | 2450+ | 0000000 | 00 | 0 | ||||||
46 | 2451 | =2378 | ||||||||
47 | 2378 | .ident: | ; | |||||||
48 | 2378 | call | ;lookup identifier | @2378 | ||||||
48+1 | 2378 | 7316111003423 | lnk | lookupid.lnk | : | jmp | lookupid.ent | |||
49 | 2379 | 1104510 | jmp | _err20 | ;not declared | |||||
50 | 2379+ | ; | ||||||||
51 | 2379+ | 0040600 | .const: | o02 | token | ;token+1 | ||||
52 | 2380 | 1124624 | jn | .icon | ;integer/boolean | @2380 | ||||
53 | 2380+ | pad | ; | |||||||
53+1 | 2380+ | 0000000 | 00 | 0 | ||||||
54 | 2381 | 0604315 | lod | procbit1 | ; | |||||
55 | 2381+ | 0200576 | exa | ident | ;get packed value | |||||
56 | 2382 | 1540000 | flt | 4096 | ;convert to floating point | @2382 | ||||
57 | 2382+ | 0200577 | exa | decscale | ;exchange with decscale | |||||
58 | 2383 | 0424305 | stn | W2245 | ;store decimal scale | |||||
59 | 2383+ | 1124520 | jn | .conneg | ; | |||||
60 | 2384 | 0020000 | neg | 0 | ; | @2384 | ||||
61 | 2384+ | .conneg: | ; | |||||||
62 | 2384+ | 1010534 | jmp | .con1 | ; | |||||
63 | 2385 | ; | ||||||||
64 | 2385 | =4444 | ||||||||
65 | 4444 | .con1: | ; | |||||||
66 | 4444 | 0110554 | add | K76 | ;=76 | @4444 | ||||
67 | 4444+ | 1130536 | jn | .con2 | ;scale > 76 | |||||
68 | 4445 | 0130554 | sub | K76 | ;=76 | |||||
69 | 4445+ | 0124313 | sub | K1b | ;=1 | |||||
70 | 4446 | 1004521 | jmp | .con5 | ; | @4446 | ||||
71 | 4446+ | ; | ||||||||
72 | 4446+ | .con2: | ; | |||||||
73 | 4446+ | 0204305 | exa | W2245 | ; | |||||
74 | 4447 | 1030542 | jn | .con2a | ; | |||||
75 | 4447+ | 0610557 | lod | K1EN78 | ; | |||||
76 | 4448 | 1460577 | fmu | decscale | ; | @4448 | ||||
77 | 4448+ | 0400577 | sto | decscale | ; | |||||
78 | 4449 | 0624305 | lcs | W2245 | ; | |||||
79 | 4449+ | 1010534 | jmp | .con1 | ; | |||||
80 | 4450 | ; | ||||||||
81 | 4450 | .con2a: | ; | |||||||
82 | 4450 | 0602177 | lod | MaxInt | ;also = MaxReal | @4450 | ||||
83 | 4450+ | 1004532 | jmp | .storeconst | ; | |||||
84 | 4451 | ; | ||||||||
85 | 4451 | .con3: | ; | |||||||
86 | 4451 | 0604306 | lod | W2246 | ; | |||||
87 | 4451+ | 0070555 | and | W4461 | ; | |||||
88 | 4452 | 0340004 | stc | 4 | ; | @4452 | ||||
89 | 4452+ | 0600577 | lod | decscale | ; | |||||
90 | 4453 | 0070555 | and | W4461 | ; | |||||
91 | 4453+ | 0100004 | add | 4 | ; | |||||
92 | 4454 | 0170556 | bus | W4462 | ; | @4454 | ||||
93 | 4454+ | .con4: | ; | |||||||
94 | 4454+ | 1030542 | jn | .con2a | ; | |||||
95 | 4455 | jnz | ; | |||||||
95+1 | 4455 | 1050550 | jz | .1 | ||||||
95+2 | 4455+ | 1004536 | jmp | advance.con8 | ||||||
95+3 | 4456 | .1: | ; | |||||||
96 | 4456 | 0604306 | lod | W2246 | ; | @4456 | ||||
97 | 4456+ | 0520004 | sbs | 4 | ; | |||||
98 | 4457 | 0600577 | lod | decscale | ; | |||||
99 | 4457+ | 0070555 | and | W4461 | ; | |||||
100 | 4458 | 0160577 | bus | decscale | ; | @4458 | ||||
101 | 4458+ | 1260004 | mur | 4 | ; | |||||
102 | 4459 | 1320001 | sll | 1 | ; | |||||
103 | 4459+ | 1110546 | jmp | .con4 | ; | |||||
104 | 4460 | =2385 | ||||||||
105 | 2385 | ; | ||||||||
106 | 2385 | .con5: | ; | |||||||
107 | 2385 | 1320040 | sll | 32 | ; | @2385 | ||||
108 | 2385+ | 0344307 | stc | W2247 | ; | |||||
109 | 2386 | 0604316 | lod | K1.0 | ;=1.0 | @2386 | ||||
110 | 2386+ | 0344306 | stc | W2246 | ; | |||||
111 | 2387 | 0124364 | sub | K7b | ;=7 | |||||
112 | 2387+ | .con6: | ; | |||||||
113 | 2387+ | 0204307 | exa | W2247 | ; | |||||
114 | 2388 | 1124526 | jn | .con7 | ; | @2388 | ||||
115 | 2388+ | 0204306 | exa | W2246 | ; | |||||
116 | 2389 | 0021437464402 | o00 | W2247 | / | fmu | W2299+7 | ; | ||
117 | 2390 | 0204306 | exa | W2246 | ; | @2390 | ||||
118 | 2390+ | .con7: | ; | |||||||
119 | 2390+ | 1320001 | sll | 1 | ; | |||||
120 | 2391 | 0244307 | exc | W2247 | ; | |||||
121 | 2391+ | 1124523 | jn | .con6 | ; | |||||
122 | 2392 | 0604305 | lod | W2245 | ; | @2392 | ||||
123 | 2392+ | 1030543 | jn | .con3 | ; | |||||
124 | 2393 | 0600577 | lod | decscale | ; | |||||
125 | 2393+ | 1504306 | fdv | W2246 | ; | |||||
126 | 2394 | .storeconst: | ; | |||||||
127 | 2394 | 0021422340000 | o00 | constptr | / | stc | 0 | ;store constant in list | @2394 | |
128 | 2395 | 0040000 | o02 | 0 | ;=1 | |||||
129 | 2395+ | 0764304 | o37 | constptr | ;decrement pointer, original in Acc | |||||
130 | 2396 | 0100576 | add | ident | ;add type info, saved in ident | @2396 | ||||
131 | 2396+ | 0343427 | stc | idptr | ;store info for reference | |||||
132 | 2397 | 0104502 | add | advance.lnk | ;load return address | |||||
133 | 2397+ | 1105013 | jmp | StkCheck | ;and check we haven't wrapped | |||||
134 | 2398 | ; | ||||||||
135 | 2398 | .con8: | ; | |||||||
136 | 2398 | 0600577 | lod | decscale | ; | @2398 | ||||
137 | 2398+ | 1464306 | fmu | W2246 | ; | |||||
138 | 2399 | 1004532 | jmp | .storeconst | ; | |||||
139 | 2399+ | ; | ||||||||
140 | 2399+ | pad | ; | |||||||
140+1 | 2399+ | 0000000 | 00 | 0 | ||||||
141 | 2400 | ; | ||||||||
142 | 2400 | .ret: | ; | |||||||
143 | 2400 | ret | ; | @2400 | ||||||
143+1 | 2400 | 0022413000001 | o00 | advance.lnk | / | jmp | 1 | |||
144 | 2401 | ; | ||||||||
145 | 2401 | ; TRUE/FALSE comes here | ||||||||
146 | 2401 | ; | ||||||||
147 | 2401 | .true: | ; true | |||||||
148 | 2401 | 0604321 | lod | False | ;=04000000000000 (true) | |||||
149 | 2401+ | .false: | ; false (acc was 0) | |||||||
150 | 2401+ | 0400576 | sto | ident | ;store value | |||||
151 | 2402 | 0604322 | lod | TBool | ;=00100000000000 (boolean) | @2402 | ||||
152 | 2402+ | 1004625 | jmp | .bcon | ; | |||||
153 | 2403 | ; | ||||||||
154 | 2403 | 0000000000000 | +0 | ;unreferenced | @2403 | |||||
155 | 2404 | ; | ||||||||
156 | 2404 | .location: | ; | |||||||
157 | 2404 | call | ; | |||||||
157+1 | 2404 | 7305105001222 | lnk | gettoken.lnk | : | jmp | gettoken.ent | |||
158 | 2405 | 0600600 | lod | token | ; | |||||
159 | 2405+ | 0124323 | sub | K47 | ;=47 [(] | |||||
160 | 2406 | 1044550 | jz | .loc1 | ; | @2406 | ||||
161 | 2406+ | .locerr: | ; | |||||||
162 | 2406+ | 0604340 | lod | K2b | ;=2 | |||||
163 | 2407 | 1661044 | _err21: | lnk | errlnk | ;error 21: location not followed by integer id | ||||
164 | 2407+ | 1001070 | jmp | Error | ;call error rtne | |||||
165 | 2408 | ; | ||||||||
166 | 2408 | .loc1: | ; | |||||||
167 | 2408 | call | ;get identifier | @2408 | ||||||
167+1 | 2408 | 7305105001222 | lnk | gettoken.lnk | : | jmp | gettoken.ent | |||
168 | 2409 | 0600600 | lod | token | ;check token | |||||
169 | 2409+ | 1044553 | jz | .loc2 | ;is identifer, OK | |||||
170 | 2410 | 0604340 | lod | K2b | ;=2 | @2410 | ||||
171 | 2410+ | 1004547 | jmp | _err21 | ;report error | |||||
172 | 2411 | ; | ||||||||
173 | 2411 | .loc2: | ; | |||||||
174 | 2411 | call | ;lookup identifier | |||||||
174+1 | 2411 | 7316111003423 | lnk | lookupid.lnk | : | jmp | lookupid.ent | |||
175 | 2412 | 1144510 | jz | _err20 | ;not declared | @2412 | ||||
176 | 2412+ | 0603427 | lod | idptr | ; | |||||
177 | 2413 | 0064324 | and | T_Mask | ;=00700000000000 | |||||
178 | 2413+ | 0124320 | sub | IntBit | ;=00200000000000 type=integer | |||||
179 | 2414 | jnz | ; | |||||||
179+1 | 2414 | 1044557 | jz | .1 | ||||||
179+2 | 2414+ | 1104546 | jmp | advance.locerr | ||||||
179+3 | 2415 | .1: | ; | |||||||
180 | 2415 | 0603427 | lod | idptr | ; | |||||
181 | 2415+ | 0064325 | and | W2261 | ;=00001776017777 | |||||
182 | 2416 | 0104326 | add | W2262 | ;=04300001000000 | @2416 | ||||
183 | 2416+ | 0403427 | sto | idptr | ; | |||||
184 | 2417 | call | ;get closing paren | |||||||
184+1 | 2417 | 7305105001222 | lnk | gettoken.lnk | : | jmp | gettoken.ent | |||
185 | 2418 | 0740600 | lzs | token | ;make sure it is | @2418 | ||||
186 | 2418+ | 0124327 | sub | K48 | ;=48 [)] | |||||
187 | 2419 | 1044540 | jz | .ret | ;OK | |||||
188 | 2419+ | 1104546 | jmp | .locerr | ;shout if not | |||||
189 | 2420 | ; | ||||||||
190 | 2420 | =2451 | ||||||||
191 | 2451 | ; | ||||||||
192 | 2451 | .doPC: | ; | |||||||
193 | 2451 | call | ; | |||||||
193+1 | 2451 | 7312031002420 | lnk | skipcomment.lnk | : | jmp | skipcomment.ent | |||
194 | 2452 | 1004503 | jmp | advance.ent | ;and try again | @2452 | ||||
195 | 2452+ | ; | ||||||||
196 | 2452+ | .icon: | ; | |||||||
197 | 2452+ | 0604320 | lod | IntBit | ;=00200000000000 (int type bits) | |||||
198 | 2453 | .bcon: | ; | |||||||
199 | 2453 | 0200576 | exa | ident | ;get const value, save type | |||||
200 | 2453+ | 1004532 | jmp | .storeconst | ; |