include "hdr1.html"; ?>
Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | ; tape1.d/subscript.t2 | ||||||||
2 | 0 | ;--------------------- | ||||||||
3 | 0 | ; | ||||||||
4 | 0 | =2649 | ||||||||
5 | 2649 | Subscript:: | ; | |||||||
6 | 2649 | ; an array identifier has been read in a context which expects a subscript. | ||||||||
7 | 2649 | ; | ||||||||
8 | 2649 | .ent: | ; | |||||||
9 | 2649 | 0442151 | inc | stkp | ; | @2649 | ||||
10 | 2649+ | 0605077 | lod | .lnk | ; | |||||
11 | 2650 | 2210646377776 | inc | stkp | / | sto | -2 | ;store return address | @2650 | |
12 | 2651 | 2210646537777 | inc | stkp | / | cls | -1 | ; | ||
13 | 2652 | 1661044 | _err25: | lnk | errlnk | ;error 25: missing ) after subscript | @2652 | |||
14 | 2652+ | 0603427 | lod | idptr | ;push id info to stack | |||||
15 | 2653 | call | ; | |||||||
15+1 | 2653 | 7323731005012 | lnk | push.lnk | : | jmp | push.ent | |||
16 | 2654 | call | ;get next token | @2654 | ||||||
16+1 | 2654 | 7322411004503 | lnk | advance.lnk | : | jmp | advance.ent | |||
17 | 2655 | 0600600 | lod | token | ;which should be a... | |||||
18 | 2655+ | 0124323 | sub | K47 | ;=47 [(] | |||||
19 | 2656 | 1145141 | jz | .ok1 | ;OK, skip error | @2656 | ||||
20 | 2656+ | _err26: | ; | |||||||
21 | 2656+ | 1661044 | lnk | errlnk | ;error 26: missing bracket | |||||
22 | 2657 | 1004772 | jmp | error2 | ;call error routine | |||||
23 | 2657+ | ; | ||||||||
24 | 2657+ | 0603430 | .ok1: | lod | W1816 | ;get id pointer? | ||||
25 | 2658 | 0010646377775 | o00 | stkp | / | 20 | -3 | ; | @2658 | |
26 | 2659 | .loop1: | ; | |||||||
27 | 2659 | call | ;get integer expression | |||||||
27+1 | 2659 | 7326171005506 | lnk | IntExprn.lnk | : | jmp | IntExprn.ent | |||
28 | 2660 | 0600600 | lod | token | ;check token | @2660 | ||||
29 | 2660+ | 0124363 | sub | K41 | ;=41 [,] | |||||
30 | 2661 | 1045143 | jz | .loop1 | ;more subscripts | |||||
31 | 2661+ | 0124364 | sub | K7b | ;=7 ->[)] | |||||
32 | 2662 | 1045147 | jz | .end1 | ;end of subscript list | @2662 | ||||
33 | 2662+ | 1004772 | jmp | error2 | ;call error routine | |||||
34 | 2663 | ; | ||||||||
35 | 2663 | 0604340 | .end1: | lod | K2b | ;=2 | ||||
36 | 2663+ | 0424300 | stn | W2240 | ;allow for 2 entries basic overhead | |||||
37 | 2664 | 0602151 | lod | stkp | ; | @2664 | ||||
38 | 2664+ | 0404305 | sto | W2245 | ;temporary pointer into stack | |||||
39 | 2665 | .loop2: | ; | |||||||
40 | 2665 | 0444300 | inc | W2240 | ;bump counter | |||||
41 | 2665+ | 0040000 | o02 | 0 | ;=1 | |||||
42 | 2666 | 2721426600000 | o27 | W2245 | / | lod | 0 | ;decrement temp stack ptr and load | @2666 | |
43 | 2667 | 1045154 | jz | .end2 | ;start of subscript list | |||||
44 | 2667+ | 1005151 | jmp | .loop2 | ;loop until stopper found | |||||
45 | 2668 | ; | ||||||||
46 | 2668 | 0604300 | .end2: | lod | W2240 | ;get count | @2668 | |||
47 | 2668+ | 1320015 | sll | 13 | ;shift to F2 position | |||||
48 | 2669 | 0404306 | sto | W2246 | ;and save it | |||||
49 | 2669+ | 1661044 | _err27: | lnk | errlnk | ;error 27: wrong number of subscripts | ||||
50 | 2670 | 0021426600001 | o00 | W2245 | / | lod | 1 | ;get array variable info | @2670 | |
51 | 2671 | 0404031 | sto | IdInfo | ; | |||||
52 | 2671+ | 0064365 | and | W2293 | ;=<000:770> mask for F2 | |||||
53 | 2672 | 1045162 | jz | .unset | ;zero? unknown | @2672 | ||||
54 | 2672+ | 0124306 | sub | W2246 | ;compare with number supplied | |||||
55 | 2673 | 1045165 | jz | .match | ;OK, go ahead | |||||
56 | 2673+ | 1004772 | jmp | error2 | ;call error routine | |||||
57 | 2674 | ; | ||||||||
58 | 2674 | 0021426577777 | .unset: | o00 | W2245 | / | lod | -1 | ;get real id pointer | @2674 |
59 | 2675 | 0400004 | sto | 4 | ; | |||||
60 | 2675+ | 0604306 | lod | W2246 | ;get supplied subscr count | |||||
61 | 2676 | 0000022477777 | o00 | 4 | / | ads | -1 | ;assume it's right, all later refs | @2676 | |
62 | 2677 | ; must agree | ||||||||
63 | 2677 | .match: | ; | |||||||
64 | 2677 | 0604300 | lod | W2240 | ;save subscr count | |||||
65 | 2677+ | 0404306 | sto | W2246 | ;for undoing stack when finished | |||||
66 | 2678 | 1105207 | jmp | .skip | ;-->> | @2678 | ||||
67 | 2678+ | =2695+ | ||||||||
68 | 2695+ | .skip: | ; | |||||||
69 | 2695+ | 0601425 | lod | errsw | ;any error so far | |||||
70 | 2696 | 1145166 | jz | .cont | ;no, continue | @2696 | ||||
71 | 2696+ | 0601437 | lod | W799 | ; film switch? | |||||
72 | 2697 | 1045212 | jz | .2698 | ; to core? | |||||
73 | 2697+ | 1105166 | jmp | .cont | ;-->> | |||||
74 | 2698 | ; | ||||||||
75 | 2698 | =2678+ | ||||||||
76 | 2678+ | .cont: | ; | |||||||
77 | 2678+ | 0603523 | lod | GPs+46 | ;=>GP1 30;GP7F 6,04 | |||||
78 | 2679 | call | ;lod array,call index1 | |||||||
78+1 | 2679 | 7320121004033 | lnk | gencode.lnk | : | jmp | gencode.ent | |||
79 | 2680 | .loop3: | ; | |||||||
80 | 2680 | 0040000 | o02 | 0 | ;=1 | @2680 | ||||
81 | 2680+ | 0164300 | bus | W2240 | ;decrement subscript number | |||||
82 | 2681 | 0404300 | sto | W2240 | ;and save | |||||
83 | 2681+ | 1045200 | jz | .end3 | ;finished | |||||
84 | 2682 | 2221426600001 | inc | W2245 | / | lod | 1 | ;get next subscript | @2682 | |
85 | 2683 | 0404031 | sto | IdInfo | ; | |||||
86 | 2683+ | 0000000 | o00 | 0 | ; | |||||
87 | 2684 | call | ;call 2601 | @2684 | ||||||
87+1 | 2684 | 7323761005051 | lnk | FreeTemp.lnk | : | jmp | FreeTemp.ent | |||
88 | 2685 | 0000000 | o00 | 0 | ; | |||||
89 | 2685+ | 0603524 | lod | GPs+47 | ;=>GP1 30;GP2F 7,44 | |||||
90 | 2686 | call | ;lod index,goto index2 | @2686 | ||||||
90+1 | 2686 | 7320121004033 | lnk | gencode.lnk | : | jmp | gencode.ent | |||
91 | 2687 | 1005170 | jmp | .loop3 | ;and repeat | |||||
92 | 2687+ | pad | ; | |||||||
92+1 | 2687+ | 0000000 | 00 | 0 | ||||||
93 | 2688 | ; | ||||||||
94 | 2688 | 2221426600001 | .end3: | inc | W2245 | / | lod | 1 | ;get final subscript | @2688 |
95 | 2689 | 0404031 | sto | IdInfo | ;store for Gencode | |||||
96 | 2689+ | pad | ; | |||||||
96+1 | 2689+ | 0000000 | 00 | 0 | ||||||
97 | 2690 | call | ;mark free if temp | @2690 | ||||||
97+1 | 2690 | 7323761005051 | lnk | FreeTemp.lnk | : | jmp | FreeTemp.ent | |||
98 | 2691 | pad | ; | |||||||
98+1 | 2691 | 0000000 | 00 | 0 | ||||||
99 | 2691+ | 0603525 | lod | GPs+48 | ;=>GP1 30;GP2F 8,44 | |||||
100 | 2692 | call | ;lod index,goto index3 | @2692 | ||||||
100+1 | 2692 | 7320121004033 | lnk | gencode.lnk | : | jmp | gencode.ent | |||
101 | 2693 | call | ;discard closing ) | |||||||
101+1 | 2693 | 7322411004503 | lnk | advance.lnk | : | jmp | advance.ent | |||
102 | 2694 | 0604347 | lod | K4a | ;=4 basic stack overhead | @2694 | ||||
103 | 2694+ | 0104306 | add | W2246 | ;add number of subscripts | |||||
104 | 2695 | 1007133 | jmp | UnwindN | ;unwind stack and return | |||||
105 | 2695+ | ; | ||||||||
106 | 2695+ | =2698 | ||||||||
107 | 2698 | .2698: | ; | |||||||
108 | 2698 | 0044306 | o02 | W2246 | ; | |||||
109 | 2698+ | 1320001 | sll | 1 | ; | |||||
110 | 2699 | 0101421 | add | W785 | ; | |||||
111 | 2699+ | 0404307 | sto | W2247 | ; | |||||
112 | 2700 | 0127525 | sub | stkbase | ; | @2700 | ||||
113 | 2700+ | 1125166 | jn | .cont | ; | |||||
114 | 2701 | call | ; | |||||||
114+1 | 2701 | 7306145002005 | lnk | L1029.lnk | : | jmp | L1029.ent | |||
115 | 2702 | 0044307 | o02 | W2247 | ; | @2702 | ||||
116 | 2702+ | 0167525 | bus | stkbase | ; | |||||
117 | 2703 | 7306145022064 | lnk | L1026.lnk | : | jn | L1026.1076 | ;if < call 1076 | ||
118 | 2704 | 0604340 | lod | K2b | ;=2 | @2704 | ||||
119 | 2704+ | 0104306 | add | W2246 | ; | |||||
120 | 2705 | 0162151 | bus | stkp | ; | |||||
121 | 2705+ | 0344305 | stc | W2245 | ; | |||||
122 | 2706 | 1105166 | jmp | .cont | ; | @2706 | ||||
123 | 2706+ | ; | ||||||||
124 | 2706+ | 0000000 | o00 | 0 | ||||||
125 | 2707 | ;-------------------------------------------------------------------- |