|  | File: subscript.t2
For general comments see here 
| 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 |  | ;-------------------------------------------------------------------- |  |  |