include "hdr1.html"; ?>
| Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | ; tape1.d/primary.t2 | ||||||||
| 2 | 0 | ;------------------- | ||||||||
| 3 | 0 | ; | ||||||||
| 4 | 0 | =2420 | ||||||||
| 5 | 2420 | ; | ||||||||
| 6 | 2420 | Primary:: | ; | |||||||
| 7 | 2420 | ; | ||||||||
| 8 | 2420 | Primary.ent: | ; | |||||||
| 9 | 2420 | 1661044 | _err22: | lnk | errlnk | ;error 22: bad primary in exprn | @2420 | |||
| 10 | 2420+ | 0604502 | lod | .lnk | ; | |||||
| 11 | 2421 | call | ;stack return address | |||||||
| 11+1 | 2421 | 7323731005012 | lnk | push.lnk | : | jmp | push.ent | |||
| 12 | 2422 | 0600600 | lod | token | ;check token | @2422 | ||||
| 13 | 2422+ | 0124323 | sub | K47 | ;=47 [(] | |||||
| 14 | 2423 | 1044610 | jz | .nest | ;nested expression | |||||
| 15 | 2423+ | .prim: | ; | |||||||
| 16 | 2423+ | 0603427 | lod | idptr | ; | |||||
| 17 | 2424 | 0064324 | and | T_Mask | ;=00700000000000 | @2424 | ||||
| 18 | 2424+ | pad | ; | |||||||
| 18+1 | 2424+ | 0000000 | 00 | 0 | ||||||
| 19 | 2425 | call | ;add type info to stack | |||||||
| 19+1 | 2425 | 7323731005012 | lnk | push.lnk | : | jmp | push.ent | |||
| 20 | 2426 | 0603427 | lod | idptr | ; | @2426 | ||||
| 21 | 2426+ | 0064360 | and | procbit2 | ;=02000000000000 (procedure bit) | |||||
| 22 | 2427 | 1144575 | jz | .prim1 | ;not a procedure | |||||
| 23 | 2427+ | 0140000 | cla | 0 | ; | |||||
| 24 | 2428 | call | ;function call | |||||||
| 24+1 | 2428 | 7331155010611 | lnk | CallFunc.lnk | : | jmp | CallFunc.ent | |||
| 25 | 2429 | 1005073 | jmp | Pop1 | ;return via stack | |||||
| 26 | 2429+ | ; | ||||||||
| 27 | 2429+ | .prim1: | ; | |||||||
| 28 | 2429+ | 0603427 | lod | idptr | ; | |||||
| 29 | 2430 | 0064372 | and | arrbit1 | ;=01000000000000 array ? | @2430 | ||||
| 30 | 2430+ | 1144602 | jz | .prim3 | ;not an array | |||||
| 31 | 2431 | call | ;compile subscript | |||||||
| 31+1 | 2431 | 7324375005131 | lnk | Subscript.lnk | : | jmp | Subscript.ent | |||
| 32 | 2432 | pad | ; | @2432 | ||||||
| 32+1 | 2432 | 0000000 | 00 | 0 | ||||||
| 33 | 2432+ | .prim2: | ; | |||||||
| 34 | 2432+ | 0603515 | lod | GPs+40 | ;={GP2M 1,20;GP0F 30,0} | |||||
| 35 | 2433 | call | ; store address of result, fetch it | |||||||
| 35+1 | 2433 | 7320121004033 | lnk | gencode.lnk | : | jmp | gencode.ent | |||
| 36 | 2434 | 1005073 | jmp | Pop1 | ; return via stack | @2434 | ||||
| 37 | 2434+ | ; | ||||||||
| 38 | 2434+ | ; if it's not an array or proc then it should be a call by name | ||||||||
| 39 | 2434+ | ; | ||||||||
| 40 | 2434+ | .prim3: | ; | |||||||
| 41 | 2434+ | 0603427 | lod | idptr | ; | |||||
| 42 | 2435 | 0404031 | sto | IdInfo | ; | |||||
| 43 | 2435+ | 0064367 | and | Bit33a | ;=0040000000000 Name flag | |||||
| 44 | 2436 | 1044772 | jz | error2 | ;error, not CBN! | @2436 | ||||
| 45 | 2436+ | 0603514 | lod | GPs+39 | ;={GP1M 00;GP0 73,0;GP1F 40} | |||||
| 46 | 2437 | call | ; code to invoke thunk | |||||||
| 46+1 | 2437 | 7320121004033 | lnk | gencode.lnk | : | jmp | gencode.ent | |||
| 47 | 2438 | call | ; | @2438 | ||||||
| 47+1 | 2438 | 7322411004503 | lnk | advance.lnk | : | jmp | advance.ent | |||
| 48 | 2439 | 1104600 | jmp | .prim2 | ; | |||||
| 49 | 2439+ | ; | ||||||||
| 50 | 2439+ | pad | ||||||||
| 50+1 | 2439+ | 0000000 | 00 | 0 | ||||||
| 51 | 2440 | ;-------------------------------- | ||||||||
| 52 | 2440 | ; nested expression as primary | ||||||||
| 53 | 2440 | .nest: | ; | |||||||
| 54 | 2440 | 0040000 | o02 | 0 | ;=1 | @2440 | ||||
| 55 | 2440+ | 0404300 | sto | W2240 | ;W2240 := 1 | |||||
| 56 | 2441 | call | ;get nested expression | |||||||
| 56+1 | 2441 | 7323131004627 | lnk | expression.lnk | : | jmp | expression.ent | |||
| 57 | 2442 | 0600600 | lod | token | ;check closing delimiter | @2442 | ||||
| 58 | 2442+ | 0124327 | sub | K48 | ;=48 [)] | |||||
| 59 | 2443 | jnz | ;missing ')' | |||||||
| 59+1 | 2443 | 1044614 | jz | .1 | ||||||
| 59+2 | 2443+ | 1105140 | jmp | _err26 | ||||||
| 59+3 | 2444 | .1: | ; | |||||||
| 60 | 2444 | call | ;move to next item | @2444 | ||||||
| 60+1 | 2444 | 7322411004503 | lnk | advance.lnk | : | jmp | advance.ent | |||
| 61 | 2445 | 1005073 | jmp | Pop1 | ;return via stack | |||||
| 62 | 2445+ | ;-------------------------------------------------------------------- | ||||||||
| 63 | 2445+ | =4489 | ||||||||
| 64 | 4489 | CallFunc:: | ; | |||||||
| 65 | 4489 | ; | ||||||||
| 66 | 4489 | ;preliminaries to function call? | ||||||||
| 67 | 4489 | ; | ||||||||
| 68 | 4489 | .ent: | ; | |||||||
| 69 | 4489 | 0400004 | sto | 4 | ;save Acc over tests | |||||
| 70 | 4489+ | 0610350 | lod | errtab+22 | ;error 22 | |||||
| 71 | 4490 | 0401044 | sto | errlnk | ; | @4490 | ||||
| 72 | 4490+ | 0603427 | lod | idptr | ;get id information | |||||
| 73 | 4491 | 0064315 | and | procbit1 | ;=00300000000000 check not procedure | |||||
| 74 | 4491+ | 1041070 | jz | Error | ;call error - procedure in expression | |||||
| 75 | 4492 | 0600004 | lod | 4 | ;re-load save Acc | @4492 | ||||
| 76 | 4492+ | 1006266 | jmp | CallProc.ent | ;jump into function/procedure call | |||||
| 77 | 4493 | ;-------------------------------------------------------------------- | ||||||||