| Line | Address | Object Code
| Label | F1 | N1 | B | F2 | N2 | Comments | Check
|
|---|
| 1 | 0 | | ; tape1.d/elliott.t2 |
|
| 2 | 0 | | ;------------------- |
|
| 3 | 0 | | ; |
|
| 4 | 0 | | ; call of ELLIOTT procedure to generate code statements |
|
| 5 | 0 | | ; |
|
| 6 | 0 | | =2181 | |
|
| 7 | 2181 | | Elliott:: | ; | |
|
| 8 | 2181 | | Elliott: | ; | |
|
| 9 | 2181 | | | call | | | | | ;get token | @2181
|
| 9+1 | 2181 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
| 10 | 2182 | 0600600 | | lod | token | | | | ;check it | @2182
|
| 11 | 2182+ | 0122204 | | sub | K47a | | | | ;=47, [(] |
|
| 12 | 2183 | 1044210 | | jz | .ok1 | | | | ;OK, |
|
| 13 | 2183+ | 1004216 | | jmp | _err51 | | | | ;missing '(' |
|
| 14 | 2184 | | ; |
|
| 15 | 2184 | | .ok1: | ; | |
|
| 16 | 2184 | | | call | | | | | ;align to full word | @2184
|
| 16+1 | 2184 | 7307255001654 | | lnk | putNop.lnk | : | jmp | putNop.ent | |
|
| 17 | 2185 | | | call | | | | | ;get two-digit opcode |
|
| 17+1 | 2185 | 7307175004251 | | lnk | GetOpCode.lnk | : | jmp | GetOpCode.ent | |
|
| 18 | 2186 | 0040600 | | o02 | token | | | | ;token+1 | @2186
|
| 19 | 2186+ | 0122201 | | sub | K42 | | | | ;=42 [,]+1 |
|
| 20 | 2187 | 1044214 | | jz | .comma1 | | | | ; |
|
| 21 | 2187+ | 1004216 | | jmp | _err51 | | | | ; |
|
| 22 | 2188 | | ; |
|
| 23 | 2188 | | ; first instruction complete, check for B digit |
|
| 24 | 2188 | | ; |
|
| 25 | 2188 | | .comma1: | ; | |
|
| 26 | 2188 | | | call | | | | | ;get next token | @2188
|
| 26+1 | 2188 | 7305105001222 | | lnk | gettoken.lnk | : | jmp | gettoken.ent | |
|
| 27 | 2189 | 0040600 | | o02 | token | | | | ;token+1 |
|
| 28 | 2189+ | 1024217 | | jn | .ok2 | | | | ;integer constant |
|
| 29 | 2190 | | _err51: | ; | |
|
| 30 | 2190 | 1661044 | | lnk | errlnk | | | | ;error 51: error in ELLIOTT call | @2190
|
| 31 | 2190+ | 1001070 | | jmp | Error | | | | ;call error routine |
|
| 32 | 2191 | | ; |
|
| 33 | 2191 | | .ok2: | ; | |
|
| 34 | 2191 | 0600576 | | lod | ident | | | | ;constant value |
|
| 35 | 2191+ | 1144222 | | jz | .Bdigit0 | | | | ;B-digit = 0 |
|
| 36 | 2192 | 0122207 | | sub | K1c | | | | ;=1 | @2192
|
| 37 | 2192+ | 1144221 | | jz | .Bdigit1 | | | | ;B-digit = 1 |
|
| 38 | 2193 | 1004216 | | jmp | _err51 | | | | ; |
|
| 39 | 2193+ | | ; |
|
| 40 | 2193+ | | .Bdigit1: | ; | |
|
| 41 | 2193+ | 0602225 | | lod | Bbit | | | | ;=<000/000> |
|
| 42 | 2194 | 0501423 | | ads | Link9 | | | | ;mark instruction to include it | @2194
|
| 43 | 2194+ | | .Bdigit0: | ; | |
|
| 44 | 2194+ | 1004234 | | jmp | .skip1 | | | | ;-->> |
|
| 45 | 2195 | | =2204 | |
|
| 46 | 2204 | | .skip1: | ; | |
|
| 47 | 2204 | | | call | | | | | ;get comma |
|
| 47+1 | 2204 | 7305105001222 | | lnk | gettoken.lnk | : | jmp | gettoken.ent | |
|
| 48 | 2205 | 0040600 | | o02 | token | | | | ;token+1 |
|
| 49 | 2205+ | 0122201 | | sub | K42 | | | | ;=42=>[,]+1 and check it |
|
| 50 | 2206 | 1044237 | | jz | .comma2 | | | | ;OK, | @2206
|
| 51 | 2206+ | 1004216 | | jmp | _err51 | | | | ;missing comma |
|
| 52 | 2207 | | ; |
|
| 53 | 2207 | | .comma2: | ; | |
|
| 54 | 2207 | 0601423 | | lod | Link9 | | | | ;load 1st instruction |
|
| 55 | 2207+ | 1004223 | | jmp | .skip2 | | | | ;-->> |
|
| 56 | 2208 | | =2195 | |
|
| 57 | 2195 | | .skip2: | ; | |
|
| 58 | 2195 | | | call | | | | | ;generate ocode for it |
|
| 58+1 | 2195 | 7307175001640 | | lnk | GenInst.lnk | : | jmp | GenInst.ent | |
|
| 59 | 2196 | | | call | | | | | ;get second instruction | @2196
|
| 59+1 | 2196 | 7307175004251 | | lnk | GetOpCode.lnk | : | jmp | GetOpCode.ent | |
|
| 60 | 2197 | 0042204 | | o02 | K47a | | | | ;=47+1=>48, [)] |
|
| 61 | 2197+ | 0120600 | | sub | token | | | | ;check delimiter |
|
| 62 | 2198 | 1144227 | | jz | .parenOK | | | | ;OK, | @2198
|
| 63 | 2198+ | 1004216 | | jmp | _err51 | | | | ;missing ')' |
|
| 64 | 2199 | | ; |
|
| 65 | 2199 | 0000000 | | o00 | 0 | | | | ; |
|
| 66 | 2199+ | | ; |
|
| 67 | 2199+ | | .parenOK: | ; | |
|
| 68 | 2199+ | 0601423 | | lod | Link9 | | | | ;get second instruction |
|
| 69 | 2200 | | | call | | | | | ;generate ocode for that | @2200
|
| 69+1 | 2200 | 7307175001640 | | lnk | GenInst.lnk | : | jmp | GenInst.ent | |
|
| 70 | 2201 | | | call | | | | | ;discard closing paren, get next |
|
| 70+1 | 2201 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
| 71 | 2202 | 1003342 | | jmp | L1762 | | | | ;return to statement (proc call) | @2202
|
| 72 | 2202+ | | ; |
|
| 73 | 2202+ | 0000000 | | o00 | 0 | | | | ; |
|
| 74 | 2203 | | ; |
|
| 75 | 2203 | | elliott: | ; | |
|
| 76 | 2203 | 0455454515764 | | 'ELLIOT' | ;ELLIOT | @2203
|
| 77 | 2204 | | ;-------------------------------------------------------------------- |
|
| 78 | 2204 | | ; get single opcode digit - must be 0-7 and followed by a comma |
|
| 79 | 2204 | | ; |
|
| 80 | 2204 | | =2208 | |
|
| 81 | 2208 | | GetFnDigit:: | ; | |
|
| 82 | 2208 | | ; |
|
| 83 | 2208 | | .ent: | ; | |
|
| 84 | 2208 | | | call | | | | | ; | @2208
|
| 84+1 | 2208 | 7305105001222 | | lnk | gettoken.lnk | : | jmp | gettoken.ent | |
|
| 85 | 2209 | 0040600 | | o02 | token | | | | ;token+1 |
|
| 86 | 2209+ | 1024277 | | jn | .ok1 | | | | ;integer constant |
|
| 87 | 2210 | 1004216 | | jmp | _err51 | | | | ;error | @2210
|
| 88 | 2210+ | | ; |
|
| 89 | 2210+ | | =2239 | |
|
| 90 | 2239 | | .ok1: | ; | |
|
| 91 | 2239 | 0600576 | | lod | ident | | | | ;get integer value |
|
| 92 | 2239+ | 1104242 | | jmp | .skip1 | | | | ;-->> |
|
| 93 | 2240 | | =2210+ | |
|
| 94 | 2210+ | | .skip1: | ; | |
|
| 95 | 2210+ | 0401476 | | sto | putcode.lnk | | | | ;store 1st fn digit | @2210+
|
| 96 | 2211 | 0061454 | | and | K7 | | | | ;mask to 3 bits |
|
| 97 | 2211+ | 0120576 | | sub | ident | | | | ;check same value |
|
| 98 | 2212 | 1044245 | | jz | .ok2 | | | | ; | @2212
|
| 99 | 2212+ | 1004216 | | jmp | _err51 | | | | ;error |
|
| 100 | 2213 | | ; |
|
| 101 | 2213 | | .ok2: | call | | | | | ;get following comma | @2213
|
| 101+1 | 2213 | 7305105001222 | | lnk | gettoken.lnk | : | jmp | gettoken.ent | |
|
| 102 | 2214 | 0040600 | | o02 | token | | | | ;token+1 | @2214
|
| 103 | 2214+ | 0122201 | | sub | K42 | | | | ;=42 => [,]+1 |
|
| 104 | 2215 | 1044250 | | jz | .comma1 | | | | ; |
|
| 105 | 2215+ | 1004216 | | jmp | _err51 | | | | ;error |
|
| 106 | 2216 | | ; |
|
| 107 | 2216 | | .comma1: | ; | |
|
| 108 | 2216 | | | ret | | | | | ; |
|
| 108+1 | 2216 | 0020123000001 | | o00 | GetFnDigit.lnk | / | jmp | 1 | |
|
| 109 | 2217 | | ;-------------------------------------------------------------------- |
|
| 110 | 2217 | | ; get opcode (and address) part of Elliott call |
|
| 111 | 2217 | | ; appears as three argument, first two are opcode digits |
|
| 112 | 2217 | | ; third is the address part |
|
| 113 | 2217 | | ; final delimiter not checked, may be comma or closing paren |
|
| 114 | 2217 | | ; |
|
| 115 | 2217 | | GetOpCode:: | ; | |
|
| 116 | 2217 | | ; |
|
| 117 | 2217 | | .ent: | ; | |
|
| 118 | 2217 | | | call | | | | | ;get 1st digit | @2217
|
| 118+1 | 2217 | 7320121004240 | | lnk | GetFnDigit.lnk | : | jmp | GetFnDigit.ent | |
|
| 119 | 2218 | 0601476 | | lod | putcode.lnk | | | | ;answer saved here | @2218
|
| 120 | 2218+ | 0401423 | | sto | Link9 | | | | ;save 1st digit |
|
| 121 | 2219 | | | call | | | | | ;get second digit |
|
| 121+1 | 2219 | 7320121004240 | | lnk | GetFnDigit.lnk | : | jmp | GetFnDigit.ent | |
|
| 122 | 2220 | 0601423 | | lod | Link9 | | | | ;reload 1st digit | @2220
|
| 123 | 2220+ | 1320003 | | sll | 3 | | | | ;shift left 3 bits |
|
| 124 | 2221 | 0101476 | | add | putcode.lnk | | | | ;and add second digit |
|
| 125 | 2221+ | 1320015 | | sll | 13 | | | | ;shift result left 13 bits |
|
| 126 | 2222 | 0102226 | | add | K6 | | | | ;make type 6 entry for putcode | @2222
|
| 127 | 2222+ | 0401423 | | sto | Link9 | | | | ;save it. |
|
| 128 | 2223 | | | call | | | | | ;get next token (address) |
|
| 128+1 | 2223 | 7305105001222 | | lnk | gettoken.lnk | : | jmp | gettoken.ent | |
|
| 129 | 2224 | 0600600 | | lod | token | | | | ; | @2224
|
| 130 | 2224+ | 1044263 | | jz | .ident | | | | ;identifier |
|
| 131 | 2225 | 0102205 | | add | K2a | | | | ;=2 |
|
| 132 | 2225+ | 1144273 | | jz | .int | | | | ;integer constant |
|
| 133 | 2226 | 1004216 | | jmp | _err51 | | | | ;error | @2226
|
| 134 | 2226+ | | ; |
|
| 135 | 2226+ | | | pad | | | | | ; |
|
| 135+1 | 2226+ | 0000000 | | 00 | 0 | | | | |
|
| 136 | 2227 | | ; |
|
| 137 | 2227 | | .ident: | ; | |
|
| 138 | 2227 | | | call | | | | | ;process identifier |
|
| 138+1 | 2227 | 7322411004504 | | lnk | advance2.lnk | : | jmp | advance2.ent | |
|
| 139 | 2228 | 0603427 | | lod | idptr | | | | ;id information | @2228
|
| 140 | 2228+ | 0062242 | | and | W1186 | | | | ;=03440000000000 |
|
| 141 | 2229 | 0122236 | | sub | Bit33 | | | | ;=00100000000000 |
|
| 142 | 2229+ | 1044216 | | jz | _err51 | | | | ;error |
|
| 143 | 2230 | 0603427 | | lod | idptr | | | | ; | @2230
|
| 144 | 2230+ | 0062221 | | and | typbits | | | | ;=03700000000000 |
|
| 145 | 2231 | 0127032 | | sub | W3610 | | | | ;=00400000000000 |
|
| 146 | 2231+ | 1044216 | | jz | _err51 | | | | ;error |
|
| 147 | 2232 | 0603427 | | lod | idptr | | | | ; | @2232
|
| 148 | 2232+ | 0062232 | | and | procbit | | | | ;=02000000000000 |
|
| 149 | 2233 | 1044272 | | jz | .nonproc | | | | ;not a procedure name |
|
| 150 | 2233+ | 1004216 | | jmp | _err51 | | | | ;error |
|
| 151 | 2234 | | ; |
|
| 152 | 2234 | | .nonproc: | ; | |
|
| 153 | 2234 | 0607033 | | lod | W3611 | | | | ;=0000036017777 | @2234
|
| 154 | 2234+ | 0063427 | | and | idptr | | | | ;mask with id info |
|
| 155 | 2235 | 1104274 | | jmp | .ok | | | | ;store as address part |
|
| 156 | 2235+ | | ; |
|
| 157 | 2235+ | | ; integer constant as address - OK |
|
| 158 | 2235+ | | ; |
|
| 159 | 2235+ | 0602225 | .int: | lod | Bbit | | | | ;=<000/000> mark as absolute constant? |
|
| 160 | 2236 | 0100576 | | add | ident | | | | ; | @2236
|
| 161 | 2236+ | | .ok: | ; | |
|
| 162 | 2236+ | 0401422 | | sto | GenAdr | | | | ;save address, |
|
| 163 | 2237 | | | call | | | | | ;get next token |
|
| 163+1 | 2237 | 7322411004503 | | lnk | advance.lnk | : | jmp | advance.ent | |
|
| 164 | 2238 | | | ret | | | | | ;and return | @2238
|
| 164+1 | 2238 | 0007177000001 | | o00 | GetOpCode.lnk | / | jmp | 1 | |
|
| 165 | 2239 | | ; |
|
| 166 | 2239 | | ;-------------------------------------------------------------------- |
|