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 | ; | |||||