| Line | Address | Object Code | Label | F1 | N1 | B | F2 | N2 | Comments | Check | 
|---|
| 1 | 0 |  | ; tape2/indexing.t2 |  | 
| 2 | 0 |  | ;-------------------------------------------------------------------- |  | 
| 3 | 0 |  | ; index1 - first stage of indexing |  | 
| 4 | 0 |  | ; acc points at array info |  | 
| 5 | 0 |  | Indexing:: | ; |  |  | 
| 6 | 0 |  | Index1: | ; |  |  | 
| 7 | 0 | 2070636577777 |  | sto | ARptr | / | lod | -1 | ;store address, get bound list | @6937 | 
| 8 | 1 | 0416150 |  | sto | BLptr |  |  |  | ;save bound list | @6938 | 
| 9 | 1+ | 0555121 |  | cls | W6737 |  |  |  | ;clear partial index |  | 
| 10 | 2 |  | .ret: | ; |  |  | 
| 11 | 2 | 2200007000000 |  | inc | T2Link | / | jmp | 0 | ;return after bumping return | @6939 | 
| 12 | 3 |  | ;-------------------------------------------------------------------- |  | 
| 13 | 3 |  | ; index2 - intermediate stage, |  | 
| 14 | 3 |  | ; acc contains subscript value, assume Index1 done |  | 
| 15 | 3 |  | Index2: | ; |  |  | 
| 16 | 3 | 2270642120000 |  | inc | BLptr | / | sub | 0 | ;remove lower bound | @6940 | 
| 17 | 4 | 1120011 |  | jn | SubOflo |  |  |  | ;out-of range | @6941 | 
| 18 | 4+ | 0515121 |  | ads | W6737 |  |  |  | ;add to index |  | 
| 19 | 5 | 2270642120000 |  | inc | BLptr | / | sub | 0 | ;check upper bound | @6942 | 
| 20 | 6 | 1120014 |  | jn | .2A |  |  |  | ;OK, | @6943 | 
| 21 | 6+ | 1100011 |  | jmp | SubOflo |  |  |  | ;over the top, abort |  | 
| 22 | 7 |  | ;-------------------------------------------------------------------- |  | 
| 23 | 7 |  | ; index3 - final subscript to indexing operation |  | 
| 24 | 7 |  | ; acc contains final subscript, return with address of element |  | 
| 25 | 7 |  | ; |  | 
| 26 | 7 |  | Index3: | ; |  |  | 
| 27 | 7 | 0070642120001 |  | o00 | BLptr | / | sub | 1 | ;remove lower bnd | @6944 | 
| 28 | 8 | 1120011 |  | jn | SubOflo |  |  |  | ;out of range | @6945 | 
| 29 | 8+ | 0515121 |  | ads | W6737 |  |  |  | ;add to index |  | 
| 30 | 9 | 0070642120002 |  | o00 | BLptr | / | sub | 2 | ;check upper limit | @6946 | 
| 31 | 10 | 1020013 |  | jn | .3A |  |  |  | ;OK, skip | @6947 | 
| 32 | 10+ | 1100011 |  | jmp | SubOflo |  |  |  | ;report out of range |  | 
| 33 | 11 |  | ; |  | 
| 34 | 11 |  | .3A: | ; |  |  | 
| 35 | 11 | 0615121 |  | lod | W6737 |  |  |  | ;get index value | @6948 | 
| 36 | 11+ | 0116147 |  | add | ARptr |  |  |  | ;add base address |  | 
| 37 | 12 | 1000002 |  | jmp | .ret |  |  |  | ;return address of element | @6949 | 
| 38 | 12+ |  | ;-------- |  | 
| 39 | 12+ |  | ; from Index2, subscript OK |  | 
| 40 | 12+ |  | .2A: | ; |  |  | 
| 41 | 12+ | 0615121 |  | lod | W6737 |  |  |  | ;present index |  | 
| 42 | 13 | 0070643240002 |  | o00 | BLptr | / | mul | 2 | ;multiply by stride | @6950 | 
| 43 | 14 | 1360000 |  | ara | 0 |  |  |  | ; | @6951 | 
| 44 | 14+ | 0415121 |  | sto | W6737 |  |  |  | ;updated index |  | 
| 45 | 15 | 1000002 |  | jmp | .ret |  |  |  | ; | @6952 | 
| 46 | 15+ |  | ; |  | 
| 47 | 15+ | 0000000 |  | o00 | 0 |  |  |  | ; |  | 
| 48 | 16 |  | =7109 |  |  | 
| 49 | 7109 |  | ;-------------------------------------------------------------------- |  | 
| 50 | 7109 |  | ; Size: get size of array (address in arg1) |  | 
| 51 | 7109 |  | Size: | ; |  |  | 
| 52 | 7109 | 0000072577777 |  | o00 | arg1 | / | lod | -1 | ;get address of store used | @7109 | 
| 53 | 7110 | 2000072600000 |  | sto | arg1 | / | lod | 0 | ;size is top half of word | @7110 | 
| 54 | 7111 | 1220024 |  | srl | 20 |  |  |  | ;shift down to normal | @7111 | 
| 55 | 7111+ | 0116210 |  | add | N1 |  |  |  | ;=-1 less overhead |  | 
| 56 | 7112 | 1000052 |  | jmp | retlnk1 |  |  |  | ;and return it | @7112 | 
| 57 | 7112+ |  | ;-------------------------------------------------------------------- |  | 
| 58 | 7112+ |  | ; |  | 
| 59 | 7112+ |  | Range: | ; |  |  | 
| 60 | 7112+ | 0455120 |  | inc | W6736 |  |  |  | ;set flag for lowbound |  | 
| 61 | 7113 |  | Lowbound: | ; |  |  | 
| 62 | 7113 | 0000072577777 |  | o00 | arg1 | / | lod | -1 | ;address of array descriptor | @7113 | 
| 63 | 7114 | 2000022600000 |  | sto | 4 | / | lod | 0 | ; | @7114 | 
| 64 | 7115 | 0076222 |  | and | K127 |  |  |  | ;=127 | @7115 | 
| 65 | 7115+ | 0120017 |  | sub | arg2 |  |  |  | ; |  | 
| 66 | 7116 | 1120011 |  | jn | SubOflo |  |  |  | ;arg2 > no dims | @7116 | 
| 67 | 7116+ | 0600017 |  | lod | arg2 |  |  |  | ;reload arg2 |  | 
| 68 | 7117 | 1120011 |  | jn | SubOflo |  |  |  | ;arg2 <= 0 | @7117 | 
| 69 | 7117+ | 1140011 |  | jz | SubOflo |  |  |  | ; |  | 
| 70 | 7118 | 0100004 |  | add | 4 |  |  |  | ;add base address | @7118 | 
| 71 | 7118+ | 0115120 |  | add | W6736 |  |  |  | ;add flag (0/1) |  | 
| 72 | 7119 | 2400076577777 |  | ads | arg2 | / | lod | -1 | ;get range/lowbound | @7119 | 
| 73 | 7120 | 1000052 |  | jmp | retlnk1 |  |  |  | ;return it | @7120 | 
| 74 | 7120+ |  | ; |  | 
| 75 | 7120+ | 0000000 |  | o00 | 0 |  |  |  | ; |  | 
| 76 | 7121 |  | ; no refs |  | 
| 77 | 7121 |  | ;L7121: |  | 
| 78 | 7121 | 1000052 |  | jmp | retlnk1 |  |  |  | ; | @7121 | 
| 79 | 7121+ |  | ; |  | 
| 80 | 7121+ | 0000000 |  | o00 | 0 |  |  |  | ; |  | 
| 81 | 7122 |  | ;-------------------------------------------------------------------- |  |