decoder.asm (3561B)
1tpu X0 Y0 2 ## ${ADDR_DECODER} 3 4 mov UP, DOWN 5 mov UP, ACC 6 mov UP, NIL 7 mov UP, NIL 8 sav 9 10 and 0b11100000 11 jeq 0, b5op 12 swp 13 sav 14 15 and 0b11000000 16 jeq 0b01000000, b2b3op 17 swp 18 sav 19 20 and 0b11100000 21 jeq 0b11100000, b2op 22 swp 23 sav 24 25 jmp b2b2op 26 27b5op: 28 swp 29 sav 30 and 0b11100000 31 mov ACC, RIGHT 32 swp 33 and 0b00011111 34 mov ACC, RIGHT 35 jmp wait 36 37b2b3op: 38 swp 39 sav 40 and 0b11100000 41 mov ACC, RIGHT 42 swp 43 sav 44 and 0b00011000 45 shr 3 46 mov ACC, RIGHT 47 swp 48 and 0b00000111 49 mov ACC, RIGHT 50 jmp wait 51 52b2b2op: 53 swp 54 sav 55 and 0b11110000 56 mov ACC, RIGHT 57 swp 58 sav 59 and 0b00001100 60 shr 2 61 mov ACC, RIGHT 62 swp 63 and 0b00000011 64 mov ACC, RIGHT 65 jmp wait 66 67b2op: 68 swp 69 sav 70 and 0b11111100 71 mov ACC, RIGHT 72 swp 73 and 0b00000011 74 mov ACC, RIGHT 75 76wait: 77 mov UP, NIL 78 mov UP, NIL 79 mov UP, NIL 80 mov UP, NIL 81 82 mov DOWN, RIGHT 83 mov ${ADDR_DECODER}, RIGHT 84 mov ${OP_ACK}, RIGHT 85 mov ${OP_NIL}, RIGHT 86 mov ${OP_NIL}, RIGHT 87end 88 89tpu X0 Y1 90 mov UP, UP 91end 92 93tpu X1 Y0 94 mov LEFT, ACC 95 96 jeq ${INST_JNZ}, inst_jnz 97 jeq ${INST_SHL}, inst_shl 98 jeq ${INST_SHR}, inst_shr 99 jeq ${INST_MOV}, inst_mov 100 jeq ${INST_SWP}, inst_swp 101 jeq ${INST_ADD}, inst_add 102 jeq ${INST_SUB}, inst_sub 103 jeq ${INST_XOR}, inst_xor 104 jeq ${INST_AND}, inst_and 105 jeq ${INST_LDB}, inst_ldb 106 jeq ${INST_STB}, inst_stb 107 jeq ${INST_INP}, inst_inp 108 jeq ${INST_OUT}, inst_out 109 jeq ${INST_NOT}, inst_not 110 jeq ${INST_JRE}, inst_jre 111 jeq ${INST_INC}, inst_inc 112 #jeq ${INST_DEC}, inst_dec 113 ${HLT} 114 115inst_jnz: 116 mov ${ADDR_INST_JNZ}, UP 117 mov ${ADDR_DECODER}, UP 118 mov ${OP_NIL}, UP 119 mov LEFT, UP 120 mov ${OP_NIL}, UP 121 jmp wait 122 123inst_shl: 124 mov ${ADDR_INST_SHL}, UP 125 mov ${ADDR_DECODER}, UP 126 mov ${OP_NIL}, UP 127 mov LEFT, UP 128 mov LEFT, UP 129 jmp wait 130 131inst_shr: 132 mov ${ADDR_INST_SHR}, UP 133 mov ${ADDR_DECODER}, UP 134 mov ${OP_NIL}, UP 135 mov LEFT, UP 136 mov LEFT, UP 137 jmp wait 138 139inst_mov: 140 mov ${ADDR_INST_MOV}, UP 141 mov ${ADDR_DECODER}, UP 142 mov ${OP_NIL}, UP 143 mov LEFT, UP 144 mov LEFT, UP 145 jmp wait 146 147inst_swp: 148 mov ${ADDR_INST_SWP}, UP 149 mov ${ADDR_DECODER}, UP 150 mov ${OP_NIL}, UP 151 mov LEFT, UP 152 mov LEFT, UP 153 jmp wait 154 155inst_add: 156 mov ${ADDR_INST_ADD}, UP 157 mov ${ADDR_DECODER}, UP 158 mov ${OP_NIL}, UP 159 mov LEFT, UP 160 mov LEFT, UP 161 jmp wait 162 163inst_sub: 164 mov ${ADDR_INST_SUB}, UP 165 mov ${ADDR_DECODER}, UP 166 mov ${OP_NIL}, UP 167 mov LEFT, UP 168 mov LEFT, UP 169 jmp wait 170 171inst_xor: 172 mov ${ADDR_INST_XOR}, UP 173 mov ${ADDR_DECODER}, UP 174 mov ${OP_NIL}, UP 175 mov LEFT, UP 176 mov LEFT, UP 177 jmp wait 178 179inst_and: 180 mov ${ADDR_INST_AND}, UP 181 mov ${ADDR_DECODER}, UP 182 mov ${OP_NIL}, UP 183 mov LEFT, UP 184 mov LEFT, UP 185 jmp wait 186 187inst_ldb: 188 mov ${ADDR_INST_LDB}, UP 189 mov ${ADDR_DECODER}, UP 190 mov ${OP_NIL}, UP 191 mov LEFT, UP 192 mov LEFT, UP 193 jmp wait 194 195inst_stb: 196 mov ${ADDR_INST_STB}, UP 197 mov ${ADDR_DECODER}, UP 198 mov ${OP_NIL}, UP 199 mov LEFT, UP 200 mov LEFT, UP 201 jmp wait 202 203inst_inp: 204 mov ${ADDR_INST_INP}, UP 205 mov ${ADDR_DECODER}, UP 206 mov ${OP_NIL}, UP 207 mov LEFT, UP 208 mov ${OP_NIL}, UP 209 jmp wait 210 211inst_out: 212 mov ${ADDR_INST_OUT}, UP 213 mov ${ADDR_DECODER}, UP 214 mov ${OP_NIL}, UP 215 mov LEFT, UP 216 mov ${OP_NIL}, UP 217 jmp wait 218 219inst_not: 220 mov ${ADDR_INST_NOT}, UP 221 mov ${ADDR_DECODER}, UP 222 mov ${OP_NIL}, UP 223 mov LEFT, UP 224 mov ${OP_NIL}, UP 225 jmp wait 226 227inst_jre: 228 mov ${ADDR_INST_JRE}, UP 229 mov ${ADDR_DECODER}, UP 230 mov ${OP_NIL}, UP 231 mov LEFT, UP 232 mov ${OP_NIL}, UP 233 jmp wait 234 235inst_inc: 236 mov ${ADDR_INST_INC}, UP 237 mov ${ADDR_DECODER}, UP 238 mov ${OP_NIL}, UP 239 mov LEFT, UP 240 mov ${OP_NIL}, UP 241 jmp wait 242 243#inst_dec: 244# mov ${ADDR_INST_DEC}, UP 245# mov ${ADDR_DECODER}, UP 246# mov ${OP_NIL}, UP 247# mov LEFT, UP 248# mov ${OP_NIL}, UP 249# jmp wait 250 251wait: 252 mov LEFT, UP 253 mov LEFT, UP 254 mov LEFT, UP 255 mov LEFT, UP 256 mov LEFT, UP 257end