Wolfgang Schwotzer | 22b4d0e | 2017-10-21 15:44:36 +0200 | [diff] [blame^] | 1 | |
| 2 | // M6800/2 instructions |
| 3 | static const inst_page1 g_m6800_inst_page1_table[256] = { |
| 4 | // 0x0x, inherent instructions |
| 5 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 6 | { M680X_INS_NOP, inh_hid, inh_hid }, |
| 7 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 8 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 9 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 10 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 11 | { M680X_INS_TAP, inh_hid, inh_hid }, |
| 12 | { M680X_INS_TPA, inh_hid, inh_hid }, |
| 13 | { M680X_INS_INX, inh_hid, inh_hid }, |
| 14 | { M680X_INS_DEX, inh_hid, inh_hid }, |
| 15 | { M680X_INS_CLV, inh_hid, inh_hid }, |
| 16 | { M680X_INS_SEV, inh_hid, inh_hid }, |
| 17 | { M680X_INS_CLC, inh_hid, inh_hid }, |
| 18 | { M680X_INS_SEC, inh_hid, inh_hid }, |
| 19 | { M680X_INS_CLI, inh_hid, inh_hid }, |
| 20 | { M680X_INS_SEI, inh_hid, inh_hid }, |
| 21 | // 0x1x, inherent instructions |
| 22 | { M680X_INS_SBA, inh_hid, inh_hid }, |
| 23 | { M680X_INS_CBA, inh_hid, inh_hid }, |
| 24 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 25 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 26 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 27 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 28 | { M680X_INS_TAB, inh_hid, inh_hid }, |
| 29 | { M680X_INS_TBA, inh_hid, inh_hid }, |
| 30 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 31 | { M680X_INS_DAA, inh_hid, inh_hid }, |
| 32 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 33 | { M680X_INS_ABA, inh_hid, inh_hid }, |
| 34 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 35 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 36 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 37 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 38 | // 0x2x, relative branch instructions |
| 39 | { M680X_INS_BRA, rel8_hid, inh_hid }, |
| 40 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 41 | { M680X_INS_BHI, rel8_hid, inh_hid }, |
| 42 | { M680X_INS_BLS, rel8_hid, inh_hid }, |
| 43 | { M680X_INS_BCC, rel8_hid, inh_hid }, |
| 44 | { M680X_INS_BCS, rel8_hid, inh_hid }, |
| 45 | { M680X_INS_BNE, rel8_hid, inh_hid }, |
| 46 | { M680X_INS_BEQ, rel8_hid, inh_hid }, |
| 47 | { M680X_INS_BVC, rel8_hid, inh_hid }, |
| 48 | { M680X_INS_BVS, rel8_hid, inh_hid }, |
| 49 | { M680X_INS_BPL, rel8_hid, inh_hid }, |
| 50 | { M680X_INS_BMI, rel8_hid, inh_hid }, |
| 51 | { M680X_INS_BGE, rel8_hid, inh_hid }, |
| 52 | { M680X_INS_BLT, rel8_hid, inh_hid }, |
| 53 | { M680X_INS_BGT, rel8_hid, inh_hid }, |
| 54 | { M680X_INS_BLE, rel8_hid, inh_hid }, |
| 55 | // 0x3x, inherent instructions |
| 56 | { M680X_INS_TSX, inh_hid, inh_hid }, |
| 57 | { M680X_INS_INS, inh_hid, inh_hid }, |
| 58 | { M680X_INS_PULA, inh_hid, inh_hid }, |
| 59 | { M680X_INS_PULB, inh_hid, inh_hid }, |
| 60 | { M680X_INS_DES, inh_hid, inh_hid }, |
| 61 | { M680X_INS_TXS, inh_hid, inh_hid }, |
| 62 | { M680X_INS_PSHA, inh_hid, inh_hid }, |
| 63 | { M680X_INS_PSHB, inh_hid, inh_hid }, |
| 64 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 65 | { M680X_INS_RTS, inh_hid, inh_hid }, |
| 66 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 67 | { M680X_INS_RTI, inh_hid, inh_hid }, |
| 68 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 69 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 70 | { M680X_INS_WAI, inh_hid, inh_hid }, |
| 71 | { M680X_INS_SWI, inh_hid, inh_hid }, |
| 72 | // 0x4x, Register A instructions |
| 73 | { M680X_INS_NEGA, inh_hid, inh_hid }, |
| 74 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 75 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 76 | { M680X_INS_COMA, inh_hid, inh_hid }, |
| 77 | { M680X_INS_LSRA, inh_hid, inh_hid }, |
| 78 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 79 | { M680X_INS_RORA, inh_hid, inh_hid }, |
| 80 | { M680X_INS_ASRA, inh_hid, inh_hid }, |
| 81 | { M680X_INS_ASLA, inh_hid, inh_hid }, |
| 82 | { M680X_INS_ROLA, inh_hid, inh_hid }, |
| 83 | { M680X_INS_DECA, inh_hid, inh_hid }, |
| 84 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 85 | { M680X_INS_INCA, inh_hid, inh_hid }, |
| 86 | { M680X_INS_TSTA, inh_hid, inh_hid }, |
| 87 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 88 | { M680X_INS_CLRA, inh_hid, inh_hid }, |
| 89 | // 0x5x, Register B instructions |
| 90 | { M680X_INS_NEGB, inh_hid, inh_hid }, |
| 91 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 92 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 93 | { M680X_INS_COMB, inh_hid, inh_hid }, |
| 94 | { M680X_INS_LSRB, inh_hid, inh_hid }, |
| 95 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 96 | { M680X_INS_RORB, inh_hid, inh_hid }, |
| 97 | { M680X_INS_ASRB, inh_hid, inh_hid }, |
| 98 | { M680X_INS_ASLB, inh_hid, inh_hid }, |
| 99 | { M680X_INS_ROLB, inh_hid, inh_hid }, |
| 100 | { M680X_INS_DECB, inh_hid, inh_hid }, |
| 101 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 102 | { M680X_INS_INCB, inh_hid, inh_hid }, |
| 103 | { M680X_INS_TSTB, inh_hid, inh_hid }, |
| 104 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 105 | { M680X_INS_CLRB, inh_hid, inh_hid }, |
| 106 | // 0x6x, indexed instructions |
| 107 | { M680X_INS_NEG, idxX_hid, inh_hid }, |
| 108 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 109 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 110 | { M680X_INS_COM, idxX_hid, inh_hid }, |
| 111 | { M680X_INS_LSR, idxX_hid, inh_hid }, |
| 112 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 113 | { M680X_INS_ROR, idxX_hid, inh_hid }, |
| 114 | { M680X_INS_ASR, idxX_hid, inh_hid }, |
| 115 | { M680X_INS_ASL, idxX_hid, inh_hid }, |
| 116 | { M680X_INS_ROL, idxX_hid, inh_hid }, |
| 117 | { M680X_INS_DEC, idxX_hid, inh_hid }, |
| 118 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 119 | { M680X_INS_INC, idxX_hid, inh_hid }, |
| 120 | { M680X_INS_TST, idxX_hid, inh_hid }, |
| 121 | { M680X_INS_JMP, idxX_hid, inh_hid }, |
| 122 | { M680X_INS_CLR, idxX_hid, inh_hid }, |
| 123 | // 0x7x, extended instructions |
| 124 | { M680X_INS_NEG, ext_hid, inh_hid }, |
| 125 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 126 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 127 | { M680X_INS_COM, ext_hid, inh_hid }, |
| 128 | { M680X_INS_LSR, ext_hid, inh_hid }, |
| 129 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 130 | { M680X_INS_ROR, ext_hid, inh_hid }, |
| 131 | { M680X_INS_ASR, ext_hid, inh_hid }, |
| 132 | { M680X_INS_ASL, ext_hid, inh_hid }, |
| 133 | { M680X_INS_ROL, ext_hid, inh_hid }, |
| 134 | { M680X_INS_DEC, ext_hid, inh_hid }, |
| 135 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 136 | { M680X_INS_INC, ext_hid, inh_hid }, |
| 137 | { M680X_INS_TST, ext_hid, inh_hid }, |
| 138 | { M680X_INS_JMP, ext_hid, inh_hid }, |
| 139 | { M680X_INS_CLR, ext_hid, inh_hid }, |
| 140 | // 0x8x, immediate instructions with Register A,X,S |
| 141 | { M680X_INS_SUBA, imm8_hid, inh_hid }, |
| 142 | { M680X_INS_CMPA, imm8_hid, inh_hid }, |
| 143 | { M680X_INS_SBCA, imm8_hid, inh_hid }, |
| 144 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 145 | { M680X_INS_ANDA, imm8_hid, inh_hid }, |
| 146 | { M680X_INS_BITA, imm8_hid, inh_hid }, |
| 147 | { M680X_INS_LDAA, imm8_hid, inh_hid }, |
| 148 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 149 | { M680X_INS_EORA, imm8_hid, inh_hid }, |
| 150 | { M680X_INS_ADCA, imm8_hid, inh_hid }, |
| 151 | { M680X_INS_ORAA, imm8_hid, inh_hid }, |
| 152 | { M680X_INS_ADDA, imm8_hid, inh_hid }, |
| 153 | { M680X_INS_CPX, imm16_hid, inh_hid }, |
| 154 | { M680X_INS_BSR, rel8_hid, inh_hid }, |
| 155 | { M680X_INS_LDS, imm16_hid, inh_hid }, |
| 156 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 157 | // 0x9x, direct instructions with register A,X,S |
| 158 | { M680X_INS_SUBA, dir_hid, inh_hid }, |
| 159 | { M680X_INS_CMPA, dir_hid, inh_hid }, |
| 160 | { M680X_INS_SBCA, dir_hid, inh_hid }, |
| 161 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 162 | { M680X_INS_ANDA, dir_hid, inh_hid }, |
| 163 | { M680X_INS_BITA, dir_hid, inh_hid }, |
| 164 | { M680X_INS_LDAA, dir_hid, inh_hid }, |
| 165 | { M680X_INS_STAA, dir_hid, inh_hid }, |
| 166 | { M680X_INS_EORA, dir_hid, inh_hid }, |
| 167 | { M680X_INS_ADCA, dir_hid, inh_hid }, |
| 168 | { M680X_INS_ORAA, dir_hid, inh_hid }, |
| 169 | { M680X_INS_ADDA, dir_hid, inh_hid }, |
| 170 | { M680X_INS_CPX, dir_hid, inh_hid }, |
| 171 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 172 | { M680X_INS_LDS, dir_hid, inh_hid }, |
| 173 | { M680X_INS_STS, dir_hid, inh_hid }, |
| 174 | // 0xAx, indexed instructions with Register A,X |
| 175 | { M680X_INS_SUBA, idxX_hid, inh_hid }, |
| 176 | { M680X_INS_CMPA, idxX_hid, inh_hid }, |
| 177 | { M680X_INS_SBCA, idxX_hid, inh_hid }, |
| 178 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 179 | { M680X_INS_ANDA, idxX_hid, inh_hid }, |
| 180 | { M680X_INS_BITA, idxX_hid, inh_hid }, |
| 181 | { M680X_INS_LDAA, idxX_hid, inh_hid }, |
| 182 | { M680X_INS_STAA, idxX_hid, inh_hid }, |
| 183 | { M680X_INS_EORA, idxX_hid, inh_hid }, |
| 184 | { M680X_INS_ADCA, idxX_hid, inh_hid }, |
| 185 | { M680X_INS_ORAA, idxX_hid, inh_hid }, |
| 186 | { M680X_INS_ADDA, idxX_hid, inh_hid }, |
| 187 | { M680X_INS_CPX, idxX_hid, inh_hid }, |
| 188 | { M680X_INS_JSR, idxX_hid, inh_hid }, |
| 189 | { M680X_INS_LDS, idxX_hid, inh_hid }, |
| 190 | { M680X_INS_STS, idxX_hid, inh_hid }, |
| 191 | // 0xBx, extended instructions with register A,X,S |
| 192 | { M680X_INS_SUBA, ext_hid, inh_hid }, |
| 193 | { M680X_INS_CMPA, ext_hid, inh_hid }, |
| 194 | { M680X_INS_SBCA, ext_hid, inh_hid }, |
| 195 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 196 | { M680X_INS_ANDA, ext_hid, inh_hid }, |
| 197 | { M680X_INS_BITA, ext_hid, inh_hid }, |
| 198 | { M680X_INS_LDAA, ext_hid, inh_hid }, |
| 199 | { M680X_INS_STAA, ext_hid, inh_hid }, |
| 200 | { M680X_INS_EORA, ext_hid, inh_hid }, |
| 201 | { M680X_INS_ADCA, ext_hid, inh_hid }, |
| 202 | { M680X_INS_ORAA, ext_hid, inh_hid }, |
| 203 | { M680X_INS_ADDA, ext_hid, inh_hid }, |
| 204 | { M680X_INS_CPX, ext_hid, inh_hid }, |
| 205 | { M680X_INS_JSR, ext_hid, inh_hid }, |
| 206 | { M680X_INS_LDS, ext_hid, inh_hid }, |
| 207 | { M680X_INS_STS, ext_hid, inh_hid }, |
| 208 | // 0xCx, immediate instructions with register B,X |
| 209 | { M680X_INS_SUBB, imm8_hid, inh_hid }, |
| 210 | { M680X_INS_CMPB, imm8_hid, inh_hid }, |
| 211 | { M680X_INS_SBCB, imm8_hid, inh_hid }, |
| 212 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 213 | { M680X_INS_ANDB, imm8_hid, inh_hid }, |
| 214 | { M680X_INS_BITB, imm8_hid, inh_hid }, |
| 215 | { M680X_INS_LDAB, imm8_hid, inh_hid }, |
| 216 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 217 | { M680X_INS_EORB, imm8_hid, inh_hid }, |
| 218 | { M680X_INS_ADCB, imm8_hid, inh_hid }, |
| 219 | { M680X_INS_ORAB, imm8_hid, inh_hid }, |
| 220 | { M680X_INS_ADDB, imm8_hid, inh_hid }, |
| 221 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 222 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 223 | { M680X_INS_LDX, imm16_hid, inh_hid }, |
| 224 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 225 | // 0xDx direct instructions with register B,X |
| 226 | { M680X_INS_SUBB, dir_hid, inh_hid }, |
| 227 | { M680X_INS_CMPB, dir_hid, inh_hid }, |
| 228 | { M680X_INS_SBCB, dir_hid, inh_hid }, |
| 229 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 230 | { M680X_INS_ANDB, dir_hid, inh_hid }, |
| 231 | { M680X_INS_BITB, dir_hid, inh_hid }, |
| 232 | { M680X_INS_LDAB, dir_hid, inh_hid }, |
| 233 | { M680X_INS_STAB, dir_hid, inh_hid }, |
| 234 | { M680X_INS_EORB, dir_hid, inh_hid }, |
| 235 | { M680X_INS_ADCB, dir_hid, inh_hid }, |
| 236 | { M680X_INS_ORAB, dir_hid, inh_hid }, |
| 237 | { M680X_INS_ADDB, dir_hid, inh_hid }, |
| 238 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 239 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 240 | { M680X_INS_LDX, dir_hid, inh_hid }, |
| 241 | { M680X_INS_STX, dir_hid, inh_hid }, |
| 242 | // 0xEx, indexed instruction with register B,X |
| 243 | { M680X_INS_SUBB, idxX_hid, inh_hid }, |
| 244 | { M680X_INS_CMPB, idxX_hid, inh_hid }, |
| 245 | { M680X_INS_SBCB, idxX_hid, inh_hid }, |
| 246 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 247 | { M680X_INS_ANDB, idxX_hid, inh_hid }, |
| 248 | { M680X_INS_BITB, idxX_hid, inh_hid }, |
| 249 | { M680X_INS_LDAB, idxX_hid, inh_hid }, |
| 250 | { M680X_INS_STAB, idxX_hid, inh_hid }, |
| 251 | { M680X_INS_EORB, idxX_hid, inh_hid }, |
| 252 | { M680X_INS_ADCB, idxX_hid, inh_hid }, |
| 253 | { M680X_INS_ORAB, idxX_hid, inh_hid }, |
| 254 | { M680X_INS_ADDB, idxX_hid, inh_hid }, |
| 255 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 256 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 257 | { M680X_INS_LDX, idxX_hid, inh_hid }, |
| 258 | { M680X_INS_STX, idxX_hid, inh_hid }, |
| 259 | // 0xFx, extended instructions with register B,U |
| 260 | { M680X_INS_SUBB, ext_hid, inh_hid }, |
| 261 | { M680X_INS_CMPB, ext_hid, inh_hid }, |
| 262 | { M680X_INS_SBCB, ext_hid, inh_hid }, |
| 263 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 264 | { M680X_INS_ANDB, ext_hid, inh_hid }, |
| 265 | { M680X_INS_BITB, ext_hid, inh_hid }, |
| 266 | { M680X_INS_LDAB, ext_hid, inh_hid }, |
| 267 | { M680X_INS_STAB, ext_hid, inh_hid }, |
| 268 | { M680X_INS_EORB, ext_hid, inh_hid }, |
| 269 | { M680X_INS_ADCB, ext_hid, inh_hid }, |
| 270 | { M680X_INS_ORAB, ext_hid, inh_hid }, |
| 271 | { M680X_INS_ADDB, ext_hid, inh_hid }, |
| 272 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 273 | { M680X_INS_ILLGL, illgl_hid, inh_hid }, |
| 274 | { M680X_INS_LDX, ext_hid, inh_hid }, |
| 275 | { M680X_INS_STX, ext_hid, inh_hid }, |
| 276 | }; |
| 277 | |