include "hdr1.html"; ?>
| 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 | ;-------------------------------------------------------------------- | ||||||||