1 1.1.1.5 christos /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */ 2 1.1 christos #line 1 "rl78-decode.opc" 3 1.1 christos /* -*- c -*- */ 4 1.1.1.10 christos /* Copyright (C) 2012-2026 Free Software Foundation, Inc. 5 1.1.1.2 christos Contributed by Red Hat. 6 1.1.1.2 christos Written by DJ Delorie. 7 1.1.1.2 christos 8 1.1.1.2 christos This file is part of the GNU opcodes library. 9 1.1.1.2 christos 10 1.1.1.2 christos This library is free software; you can redistribute it and/or modify 11 1.1.1.2 christos it under the terms of the GNU General Public License as published by 12 1.1.1.2 christos the Free Software Foundation; either version 3, or (at your option) 13 1.1.1.2 christos any later version. 14 1.1.1.2 christos 15 1.1.1.2 christos It is distributed in the hope that it will be useful, but WITHOUT 16 1.1.1.2 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17 1.1.1.2 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 18 1.1.1.2 christos License for more details. 19 1.1.1.2 christos 20 1.1.1.2 christos You should have received a copy of the GNU General Public License 21 1.1.1.2 christos along with this program; if not, write to the Free Software 22 1.1.1.2 christos Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 23 1.1.1.2 christos MA 02110-1301, USA. */ 24 1.1.1.2 christos 25 1.1 christos #include "sysdep.h" 26 1.1 christos #include <stdio.h> 27 1.1 christos #include <stdlib.h> 28 1.1 christos #include <string.h> 29 1.1.1.5 christos #include "bfd.h" 30 1.1.1.5 christos #include "opintl.h" 31 1.1 christos #include "opcode/rl78.h" 32 1.1 christos 33 1.1 christos static int trace = 0; 34 1.1 christos 35 1.1 christos typedef struct 36 1.1 christos { 37 1.1 christos RL78_Opcode_Decoded * rl78; 38 1.1 christos int (* getbyte)(void *); 39 1.1 christos void * ptr; 40 1.1 christos unsigned char * op; 41 1.1 christos } LocalData; 42 1.1 christos 43 1.1 christos #define ID(x) rl78->id = RLO_##x, rl78->lineno = __LINE__ 44 1.1 christos #define OP(n,t,r,a) (rl78->op[n].type = t, \ 45 1.1 christos rl78->op[n].reg = r, \ 46 1.1 christos rl78->op[n].addend = a ) 47 1.1 christos #define OPX(n,t,r1,r2,a) \ 48 1.1 christos (rl78->op[n].type = t, \ 49 1.1 christos rl78->op[n].reg = r1, \ 50 1.1 christos rl78->op[n].reg2 = r2, \ 51 1.1 christos rl78->op[n].addend = a ) 52 1.1 christos 53 1.1 christos #define W() rl78->size = RL78_Word 54 1.1 christos 55 1.1 christos #define AU ATTRIBUTE_UNUSED 56 1.1.1.4 christos 57 1.1.1.4 christos #define OP_BUF_LEN 20 58 1.1.1.4 christos #define GETBYTE() (ld->rl78->n_bytes < (OP_BUF_LEN - 1) ? ld->op [ld->rl78->n_bytes++] = ld->getbyte (ld->ptr): 0) 59 1.1 christos #define B ((unsigned long) GETBYTE()) 60 1.1 christos 61 1.1 christos #define SYNTAX(x) rl78->syntax = x 62 1.1 christos 63 1.1 christos #define UNSUPPORTED() \ 64 1.1 christos rl78->syntax = "*unknown*" 65 1.1 christos 66 1.1 christos #define RB(x) ((x)+RL78_Reg_X) 67 1.1 christos #define RW(x) ((x)+RL78_Reg_AX) 68 1.1 christos 69 1.1 christos #define Fz rl78->flags = RL78_PSW_Z 70 1.1 christos #define Fza rl78->flags = RL78_PSW_Z | RL78_PSW_AC 71 1.1 christos #define Fzc rl78->flags = RL78_PSW_Z | RL78_PSW_CY 72 1.1 christos #define Fzac rl78->flags = RL78_PSW_Z | RL78_PSW_AC | RL78_PSW_CY 73 1.1 christos #define Fa rl78->flags = RL78_PSW_AC 74 1.1 christos #define Fc rl78->flags = RL78_PSW_CY 75 1.1 christos #define Fac rl78->flags = RL78_PSW_AC | RL78_PSW_CY 76 1.1 christos 77 1.1 christos #define IMMU(bytes) immediate (bytes, 0, ld) 78 1.1 christos #define IMMS(bytes) immediate (bytes, 1, ld) 79 1.1 christos 80 1.1 christos static int 81 1.1 christos immediate (int bytes, int sign_extend, LocalData * ld) 82 1.1 christos { 83 1.1 christos unsigned long i = 0; 84 1.1 christos 85 1.1 christos switch (bytes) 86 1.1 christos { 87 1.1 christos case 1: 88 1.1 christos i |= B; 89 1.1 christos if (sign_extend && (i & 0x80)) 90 1.1 christos i -= 0x100; 91 1.1 christos break; 92 1.1 christos case 2: 93 1.1 christos i |= B; 94 1.1 christos i |= B << 8; 95 1.1 christos if (sign_extend && (i & 0x8000)) 96 1.1 christos i -= 0x10000; 97 1.1 christos break; 98 1.1 christos case 3: 99 1.1 christos i |= B; 100 1.1 christos i |= B << 8; 101 1.1 christos i |= B << 16; 102 1.1 christos if (sign_extend && (i & 0x800000)) 103 1.1 christos i -= 0x1000000; 104 1.1 christos break; 105 1.1 christos default: 106 1.1.1.5 christos opcodes_error_handler 107 1.1.1.5 christos /* xgettext:c-format */ 108 1.1.1.5 christos (_("internal error: immediate() called with invalid byte count %d"), 109 1.1.1.5 christos bytes); 110 1.1 christos abort(); 111 1.1 christos } 112 1.1 christos return i; 113 1.1 christos } 114 1.1 christos 115 1.1 christos #define DC(c) OP (0, RL78_Operand_Immediate, 0, c) 116 1.1 christos #define DR(r) OP (0, RL78_Operand_Register, RL78_Reg_##r, 0) 117 1.1 christos #define DRB(r) OP (0, RL78_Operand_Register, RB(r), 0) 118 1.1 christos #define DRW(r) OP (0, RL78_Operand_Register, RW(r), 0) 119 1.1 christos #define DM(r,a) OP (0, RL78_Operand_Indirect, RL78_Reg_##r, a) 120 1.1 christos #define DM2(r1,r2,a) OPX (0, RL78_Operand_Indirect, RL78_Reg_##r1, RL78_Reg_##r2, a) 121 1.1 christos #define DE() rl78->op[0].use_es = 1 122 1.1 christos #define DB(b) set_bit (rl78->op, b) 123 1.1 christos #define DCY() DR(PSW); DB(0) 124 1.1 christos #define DPUSH() OP (0, RL78_Operand_PreDec, RL78_Reg_SP, 0); 125 1.1 christos 126 1.1 christos #define SC(c) OP (1, RL78_Operand_Immediate, 0, c) 127 1.1 christos #define SR(r) OP (1, RL78_Operand_Register, RL78_Reg_##r, 0) 128 1.1 christos #define SRB(r) OP (1, RL78_Operand_Register, RB(r), 0) 129 1.1 christos #define SRW(r) OP (1, RL78_Operand_Register, RW(r), 0) 130 1.1 christos #define SM(r,a) OP (1, RL78_Operand_Indirect, RL78_Reg_##r, a) 131 1.1 christos #define SM2(r1,r2,a) OPX (1, RL78_Operand_Indirect, RL78_Reg_##r1, RL78_Reg_##r2, a) 132 1.1 christos #define SE() rl78->op[1].use_es = 1 133 1.1 christos #define SB(b) set_bit (rl78->op+1, b) 134 1.1 christos #define SCY() SR(PSW); SB(0) 135 1.1 christos #define COND(c) rl78->op[1].condition = RL78_Condition_##c 136 1.1 christos #define SPOP() OP (1, RL78_Operand_PostInc, RL78_Reg_SP, 0); 137 1.1 christos 138 1.1 christos static void 139 1.1 christos set_bit (RL78_Opcode_Operand *op, int bit) 140 1.1 christos { 141 1.1 christos op->bit_number = bit; 142 1.1 christos switch (op->type) { 143 1.1 christos case RL78_Operand_Register: 144 1.1 christos op->type = RL78_Operand_Bit; 145 1.1 christos break; 146 1.1 christos case RL78_Operand_Indirect: 147 1.1 christos op->type = RL78_Operand_BitIndirect; 148 1.1 christos break; 149 1.1 christos default: 150 1.1 christos break; 151 1.1 christos } 152 1.1 christos } 153 1.1 christos 154 1.1 christos static int 155 1.1 christos saddr (int x) 156 1.1 christos { 157 1.1 christos if (x < 0x20) 158 1.1 christos return 0xfff00 + x; 159 1.1 christos return 0xffe00 + x; 160 1.1 christos } 161 1.1 christos 162 1.1 christos static int 163 1.1 christos sfr (int x) 164 1.1 christos { 165 1.1 christos return 0xfff00 + x; 166 1.1 christos } 167 1.1 christos 168 1.1 christos #define SADDR saddr (IMMU (1)) 169 1.1 christos #define SFR sfr (IMMU (1)) 170 1.1 christos 171 1.1 christos int 172 1.1 christos rl78_decode_opcode (unsigned long pc AU, 173 1.1 christos RL78_Opcode_Decoded * rl78, 174 1.1 christos int (* getbyte)(void *), 175 1.1.1.2 christos void * ptr, 176 1.1.1.2 christos RL78_Dis_Isa isa) 177 1.1 christos { 178 1.1 christos LocalData lds, * ld = &lds; 179 1.1.1.4 christos unsigned char op_buf[OP_BUF_LEN] = {0}; 180 1.1 christos unsigned char *op = op_buf; 181 1.1 christos int op0, op1; 182 1.1 christos 183 1.1 christos lds.rl78 = rl78; 184 1.1 christos lds.getbyte = getbyte; 185 1.1 christos lds.ptr = ptr; 186 1.1 christos lds.op = op; 187 1.1 christos 188 1.1 christos memset (rl78, 0, sizeof (*rl78)); 189 1.1 christos 190 1.1 christos start_again: 191 1.1 christos 192 1.1 christos /* Byte registers, not including A. */ 193 1.1 christos /* Word registers, not including AX. */ 194 1.1 christos 195 1.1 christos /*----------------------------------------------------------------------*/ 196 1.1 christos /* ES: prefix */ 197 1.1 christos 198 1.1 christos GETBYTE (); 199 1.1 christos switch (op[0] & 0xff) 200 1.1 christos { 201 1.1 christos case 0x00: 202 1.1 christos { 203 1.1 christos /** 0000 0000 nop */ 204 1.1 christos if (trace) 205 1.1 christos { 206 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 207 1.1 christos "/** 0000 0000 nop */", 208 1.1 christos op[0]); 209 1.1 christos } 210 1.1 christos SYNTAX("nop"); 211 1.1.1.5 christos #line 917 "rl78-decode.opc" 212 1.1 christos ID(nop); 213 1.1.1.2 christos 214 1.1 christos /*----------------------------------------------------------------------*/ 215 1.1.1.2 christos 216 1.1 christos } 217 1.1 christos break; 218 1.1 christos case 0x01: 219 1.1 christos case 0x03: 220 1.1 christos case 0x05: 221 1.1 christos case 0x07: 222 1.1 christos { 223 1.1 christos /** 0000 0rw1 addw %0, %1 */ 224 1.1.1.5 christos #line 280 "rl78-decode.opc" 225 1.1 christos int rw AU = (op[0] >> 1) & 0x03; 226 1.1 christos if (trace) 227 1.1 christos { 228 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 229 1.1 christos "/** 0000 0rw1 addw %0, %1 */", 230 1.1 christos op[0]); 231 1.1 christos printf (" rw = 0x%x\n", rw); 232 1.1 christos } 233 1.1 christos SYNTAX("addw %0, %1"); 234 1.1.1.5 christos #line 280 "rl78-decode.opc" 235 1.1 christos ID(add); W(); DR(AX); SRW(rw); Fzac; 236 1.1.1.2 christos 237 1.1 christos } 238 1.1 christos break; 239 1.1 christos case 0x02: 240 1.1 christos { 241 1.1.1.2 christos /** 0000 0010 addw %0, %e!1 */ 242 1.1 christos if (trace) 243 1.1 christos { 244 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 245 1.1.1.2 christos "/** 0000 0010 addw %0, %e!1 */", 246 1.1 christos op[0]); 247 1.1 christos } 248 1.1.1.2 christos SYNTAX("addw %0, %e!1"); 249 1.1.1.5 christos #line 271 "rl78-decode.opc" 250 1.1 christos ID(add); W(); DR(AX); SM(None, IMMU(2)); Fzac; 251 1.1.1.2 christos 252 1.1 christos } 253 1.1 christos break; 254 1.1 christos case 0x04: 255 1.1 christos { 256 1.1 christos /** 0000 0100 addw %0, #%1 */ 257 1.1 christos if (trace) 258 1.1 christos { 259 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 260 1.1 christos "/** 0000 0100 addw %0, #%1 */", 261 1.1 christos op[0]); 262 1.1 christos } 263 1.1 christos SYNTAX("addw %0, #%1"); 264 1.1.1.5 christos #line 277 "rl78-decode.opc" 265 1.1 christos ID(add); W(); DR(AX); SC(IMMU(2)); Fzac; 266 1.1.1.2 christos 267 1.1 christos } 268 1.1 christos break; 269 1.1 christos case 0x06: 270 1.1 christos { 271 1.1 christos /** 0000 0110 addw %0, %1 */ 272 1.1 christos if (trace) 273 1.1 christos { 274 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 275 1.1 christos "/** 0000 0110 addw %0, %1 */", 276 1.1 christos op[0]); 277 1.1 christos } 278 1.1 christos SYNTAX("addw %0, %1"); 279 1.1.1.5 christos #line 283 "rl78-decode.opc" 280 1.1 christos ID(add); W(); DR(AX); SM(None, SADDR); Fzac; 281 1.1.1.2 christos 282 1.1 christos } 283 1.1 christos break; 284 1.1 christos case 0x08: 285 1.1 christos { 286 1.1 christos /** 0000 1000 xch a, x */ 287 1.1 christos if (trace) 288 1.1 christos { 289 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 290 1.1 christos "/** 0000 1000 xch a, x */", 291 1.1 christos op[0]); 292 1.1 christos } 293 1.1 christos SYNTAX("xch a, x"); 294 1.1.1.5 christos #line 1240 "rl78-decode.opc" 295 1.1 christos ID(xch); DR(A); SR(X); 296 1.1.1.2 christos 297 1.1 christos /*----------------------------------------------------------------------*/ 298 1.1.1.2 christos 299 1.1 christos } 300 1.1 christos break; 301 1.1 christos case 0x09: 302 1.1 christos { 303 1.1.1.2 christos /** 0000 1001 mov %0, %e1 */ 304 1.1 christos if (trace) 305 1.1 christos { 306 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 307 1.1.1.2 christos "/** 0000 1001 mov %0, %e1 */", 308 1.1 christos op[0]); 309 1.1 christos } 310 1.1.1.2 christos SYNTAX("mov %0, %e1"); 311 1.1.1.5 christos #line 684 "rl78-decode.opc" 312 1.1 christos ID(mov); DR(A); SM(B, IMMU(2)); 313 1.1.1.2 christos 314 1.1 christos } 315 1.1 christos break; 316 1.1 christos case 0x0a: 317 1.1 christos { 318 1.1 christos /** 0000 1010 add %0, #%1 */ 319 1.1 christos if (trace) 320 1.1 christos { 321 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 322 1.1 christos "/** 0000 1010 add %0, #%1 */", 323 1.1 christos op[0]); 324 1.1 christos } 325 1.1 christos SYNTAX("add %0, #%1"); 326 1.1.1.5 christos #line 234 "rl78-decode.opc" 327 1.1 christos ID(add); DM(None, SADDR); SC(IMMU(1)); Fzac; 328 1.1.1.2 christos 329 1.1 christos /*----------------------------------------------------------------------*/ 330 1.1.1.2 christos 331 1.1 christos } 332 1.1 christos break; 333 1.1 christos case 0x0b: 334 1.1 christos { 335 1.1 christos /** 0000 1011 add %0, %1 */ 336 1.1 christos if (trace) 337 1.1 christos { 338 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 339 1.1 christos "/** 0000 1011 add %0, %1 */", 340 1.1 christos op[0]); 341 1.1 christos } 342 1.1 christos SYNTAX("add %0, %1"); 343 1.1.1.5 christos #line 228 "rl78-decode.opc" 344 1.1 christos ID(add); DR(A); SM(None, SADDR); Fzac; 345 1.1.1.2 christos 346 1.1 christos } 347 1.1 christos break; 348 1.1 christos case 0x0c: 349 1.1 christos { 350 1.1 christos /** 0000 1100 add %0, #%1 */ 351 1.1 christos if (trace) 352 1.1 christos { 353 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 354 1.1 christos "/** 0000 1100 add %0, #%1 */", 355 1.1 christos op[0]); 356 1.1 christos } 357 1.1 christos SYNTAX("add %0, #%1"); 358 1.1.1.5 christos #line 222 "rl78-decode.opc" 359 1.1 christos ID(add); DR(A); SC(IMMU(1)); Fzac; 360 1.1.1.2 christos 361 1.1 christos } 362 1.1 christos break; 363 1.1 christos case 0x0d: 364 1.1 christos { 365 1.1.1.2 christos /** 0000 1101 add %0, %e1 */ 366 1.1 christos if (trace) 367 1.1 christos { 368 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 369 1.1.1.2 christos "/** 0000 1101 add %0, %e1 */", 370 1.1 christos op[0]); 371 1.1 christos } 372 1.1.1.2 christos SYNTAX("add %0, %e1"); 373 1.1.1.5 christos #line 210 "rl78-decode.opc" 374 1.1 christos ID(add); DR(A); SM(HL, 0); Fzac; 375 1.1.1.2 christos 376 1.1 christos } 377 1.1 christos break; 378 1.1 christos case 0x0e: 379 1.1 christos { 380 1.1.1.2 christos /** 0000 1110 add %0, %ea1 */ 381 1.1 christos if (trace) 382 1.1 christos { 383 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 384 1.1.1.2 christos "/** 0000 1110 add %0, %ea1 */", 385 1.1 christos op[0]); 386 1.1 christos } 387 1.1.1.2 christos SYNTAX("add %0, %ea1"); 388 1.1.1.5 christos #line 216 "rl78-decode.opc" 389 1.1 christos ID(add); DR(A); SM(HL, IMMU(1)); Fzac; 390 1.1.1.2 christos 391 1.1 christos } 392 1.1 christos break; 393 1.1 christos case 0x0f: 394 1.1 christos { 395 1.1.1.2 christos /** 0000 1111 add %0, %e!1 */ 396 1.1 christos if (trace) 397 1.1 christos { 398 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 399 1.1.1.2 christos "/** 0000 1111 add %0, %e!1 */", 400 1.1 christos op[0]); 401 1.1 christos } 402 1.1.1.2 christos SYNTAX("add %0, %e!1"); 403 1.1.1.5 christos #line 207 "rl78-decode.opc" 404 1.1 christos ID(add); DR(A); SM(None, IMMU(2)); Fzac; 405 1.1.1.2 christos 406 1.1 christos } 407 1.1 christos break; 408 1.1 christos case 0x10: 409 1.1 christos { 410 1.1 christos /** 0001 0000 addw %0, #%1 */ 411 1.1 christos if (trace) 412 1.1 christos { 413 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 414 1.1 christos "/** 0001 0000 addw %0, #%1 */", 415 1.1 christos op[0]); 416 1.1 christos } 417 1.1 christos SYNTAX("addw %0, #%1"); 418 1.1.1.5 christos #line 286 "rl78-decode.opc" 419 1.1 christos ID(add); W(); DR(SP); SC(IMMU(1)); Fzac; 420 1.1.1.2 christos 421 1.1 christos /*----------------------------------------------------------------------*/ 422 1.1.1.2 christos 423 1.1 christos } 424 1.1 christos break; 425 1.1 christos case 0x11: 426 1.1 christos { 427 1.1 christos /** 0001 0001 es: */ 428 1.1 christos if (trace) 429 1.1 christos { 430 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 431 1.1 christos "/** 0001 0001 es: */", 432 1.1 christos op[0]); 433 1.1 christos } 434 1.1 christos SYNTAX("es:"); 435 1.1.1.5 christos #line 199 "rl78-decode.opc" 436 1.1 christos DE(); SE(); 437 1.1 christos op ++; 438 1.1 christos pc ++; 439 1.1 christos goto start_again; 440 1.1.1.2 christos 441 1.1 christos /*----------------------------------------------------------------------*/ 442 1.1.1.2 christos 443 1.1 christos } 444 1.1 christos break; 445 1.1 christos case 0x12: 446 1.1 christos case 0x14: 447 1.1 christos case 0x16: 448 1.1 christos { 449 1.1 christos /** 0001 0ra0 movw %0, %1 */ 450 1.1.1.5 christos #line 865 "rl78-decode.opc" 451 1.1 christos int ra AU = (op[0] >> 1) & 0x03; 452 1.1 christos if (trace) 453 1.1 christos { 454 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 455 1.1 christos "/** 0001 0ra0 movw %0, %1 */", 456 1.1 christos op[0]); 457 1.1 christos printf (" ra = 0x%x\n", ra); 458 1.1 christos } 459 1.1 christos SYNTAX("movw %0, %1"); 460 1.1.1.5 christos #line 865 "rl78-decode.opc" 461 1.1 christos ID(mov); W(); DRW(ra); SR(AX); 462 1.1.1.2 christos 463 1.1 christos } 464 1.1 christos break; 465 1.1 christos case 0x13: 466 1.1 christos case 0x15: 467 1.1 christos case 0x17: 468 1.1 christos { 469 1.1 christos /** 0001 0ra1 movw %0, %1 */ 470 1.1.1.5 christos #line 862 "rl78-decode.opc" 471 1.1 christos int ra AU = (op[0] >> 1) & 0x03; 472 1.1 christos if (trace) 473 1.1 christos { 474 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 475 1.1 christos "/** 0001 0ra1 movw %0, %1 */", 476 1.1 christos op[0]); 477 1.1 christos printf (" ra = 0x%x\n", ra); 478 1.1 christos } 479 1.1 christos SYNTAX("movw %0, %1"); 480 1.1.1.5 christos #line 862 "rl78-decode.opc" 481 1.1 christos ID(mov); W(); DR(AX); SRW(ra); 482 1.1.1.2 christos 483 1.1 christos } 484 1.1 christos break; 485 1.1 christos case 0x18: 486 1.1 christos { 487 1.1.1.2 christos /** 0001 1000 mov %e0, %1 */ 488 1.1 christos if (trace) 489 1.1 christos { 490 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 491 1.1.1.2 christos "/** 0001 1000 mov %e0, %1 */", 492 1.1 christos op[0]); 493 1.1 christos } 494 1.1.1.2 christos SYNTAX("mov %e0, %1"); 495 1.1.1.5 christos #line 735 "rl78-decode.opc" 496 1.1.1.2 christos ID(mov); DM(B, IMMU(2)); SR(A); 497 1.1.1.2 christos 498 1.1 christos } 499 1.1 christos break; 500 1.1 christos case 0x19: 501 1.1 christos { 502 1.1.1.2 christos /** 0001 1001 mov %e0, #%1 */ 503 1.1 christos if (trace) 504 1.1 christos { 505 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 506 1.1.1.2 christos "/** 0001 1001 mov %e0, #%1 */", 507 1.1 christos op[0]); 508 1.1 christos } 509 1.1.1.2 christos SYNTAX("mov %e0, #%1"); 510 1.1.1.5 christos #line 732 "rl78-decode.opc" 511 1.1.1.2 christos ID(mov); DM(B, IMMU(2)); SC(IMMU(1)); 512 1.1.1.2 christos 513 1.1 christos } 514 1.1 christos break; 515 1.1 christos case 0x1a: 516 1.1 christos { 517 1.1 christos /** 0001 1010 addc %0, #%1 */ 518 1.1 christos if (trace) 519 1.1 christos { 520 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 521 1.1 christos "/** 0001 1010 addc %0, #%1 */", 522 1.1 christos op[0]); 523 1.1 christos } 524 1.1 christos SYNTAX("addc %0, #%1"); 525 1.1.1.5 christos #line 266 "rl78-decode.opc" 526 1.1 christos ID(addc); DM(None, SADDR); SC(IMMU(1)); Fzac; 527 1.1.1.2 christos 528 1.1 christos /*----------------------------------------------------------------------*/ 529 1.1.1.2 christos 530 1.1 christos } 531 1.1 christos break; 532 1.1 christos case 0x1b: 533 1.1 christos { 534 1.1 christos /** 0001 1011 addc %0, %1 */ 535 1.1 christos if (trace) 536 1.1 christos { 537 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 538 1.1 christos "/** 0001 1011 addc %0, %1 */", 539 1.1 christos op[0]); 540 1.1 christos } 541 1.1 christos SYNTAX("addc %0, %1"); 542 1.1.1.5 christos #line 263 "rl78-decode.opc" 543 1.1 christos ID(addc); DR(A); SM(None, SADDR); Fzac; 544 1.1.1.2 christos 545 1.1 christos } 546 1.1 christos break; 547 1.1 christos case 0x1c: 548 1.1 christos { 549 1.1 christos /** 0001 1100 addc %0, #%1 */ 550 1.1 christos if (trace) 551 1.1 christos { 552 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 553 1.1 christos "/** 0001 1100 addc %0, #%1 */", 554 1.1 christos op[0]); 555 1.1 christos } 556 1.1 christos SYNTAX("addc %0, #%1"); 557 1.1.1.5 christos #line 254 "rl78-decode.opc" 558 1.1 christos ID(addc); DR(A); SC(IMMU(1)); Fzac; 559 1.1.1.2 christos 560 1.1 christos } 561 1.1 christos break; 562 1.1 christos case 0x1d: 563 1.1 christos { 564 1.1.1.2 christos /** 0001 1101 addc %0, %e1 */ 565 1.1 christos if (trace) 566 1.1 christos { 567 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 568 1.1.1.2 christos "/** 0001 1101 addc %0, %e1 */", 569 1.1 christos op[0]); 570 1.1 christos } 571 1.1.1.2 christos SYNTAX("addc %0, %e1"); 572 1.1.1.5 christos #line 242 "rl78-decode.opc" 573 1.1 christos ID(addc); DR(A); SM(HL, 0); Fzac; 574 1.1.1.2 christos 575 1.1 christos } 576 1.1 christos break; 577 1.1 christos case 0x1e: 578 1.1 christos { 579 1.1.1.2 christos /** 0001 1110 addc %0, %ea1 */ 580 1.1 christos if (trace) 581 1.1 christos { 582 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 583 1.1.1.2 christos "/** 0001 1110 addc %0, %ea1 */", 584 1.1 christos op[0]); 585 1.1 christos } 586 1.1.1.2 christos SYNTAX("addc %0, %ea1"); 587 1.1.1.5 christos #line 251 "rl78-decode.opc" 588 1.1 christos ID(addc); DR(A); SM(HL, IMMU(1)); Fzac; 589 1.1.1.2 christos 590 1.1 christos } 591 1.1 christos break; 592 1.1 christos case 0x1f: 593 1.1 christos { 594 1.1.1.2 christos /** 0001 1111 addc %0, %e!1 */ 595 1.1 christos if (trace) 596 1.1 christos { 597 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 598 1.1.1.2 christos "/** 0001 1111 addc %0, %e!1 */", 599 1.1 christos op[0]); 600 1.1 christos } 601 1.1.1.2 christos SYNTAX("addc %0, %e!1"); 602 1.1.1.5 christos #line 239 "rl78-decode.opc" 603 1.1 christos ID(addc); DR(A); SM(None, IMMU(2)); Fzac; 604 1.1.1.2 christos 605 1.1 christos } 606 1.1 christos break; 607 1.1 christos case 0x20: 608 1.1 christos { 609 1.1 christos /** 0010 0000 subw %0, #%1 */ 610 1.1 christos if (trace) 611 1.1 christos { 612 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 613 1.1 christos "/** 0010 0000 subw %0, #%1 */", 614 1.1 christos op[0]); 615 1.1 christos } 616 1.1 christos SYNTAX("subw %0, #%1"); 617 1.1.1.5 christos #line 1204 "rl78-decode.opc" 618 1.1 christos ID(sub); W(); DR(SP); SC(IMMU(1)); Fzac; 619 1.1.1.2 christos 620 1.1 christos /*----------------------------------------------------------------------*/ 621 1.1.1.2 christos 622 1.1 christos } 623 1.1 christos break; 624 1.1 christos case 0x21: 625 1.1 christos case 0x23: 626 1.1 christos case 0x25: 627 1.1 christos case 0x27: 628 1.1 christos { 629 1.1 christos /** 0010 0rw1 subw %0, %1 */ 630 1.1.1.5 christos #line 1198 "rl78-decode.opc" 631 1.1 christos int rw AU = (op[0] >> 1) & 0x03; 632 1.1 christos if (trace) 633 1.1 christos { 634 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 635 1.1 christos "/** 0010 0rw1 subw %0, %1 */", 636 1.1 christos op[0]); 637 1.1 christos printf (" rw = 0x%x\n", rw); 638 1.1 christos } 639 1.1 christos SYNTAX("subw %0, %1"); 640 1.1.1.5 christos #line 1198 "rl78-decode.opc" 641 1.1 christos ID(sub); W(); DR(AX); SRW(rw); Fzac; 642 1.1.1.2 christos 643 1.1 christos } 644 1.1 christos break; 645 1.1 christos case 0x22: 646 1.1 christos { 647 1.1.1.2 christos /** 0010 0010 subw %0, %e!1 */ 648 1.1 christos if (trace) 649 1.1 christos { 650 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 651 1.1.1.2 christos "/** 0010 0010 subw %0, %e!1 */", 652 1.1 christos op[0]); 653 1.1 christos } 654 1.1.1.2 christos SYNTAX("subw %0, %e!1"); 655 1.1.1.5 christos #line 1189 "rl78-decode.opc" 656 1.1 christos ID(sub); W(); DR(AX); SM(None, IMMU(2)); Fzac; 657 1.1.1.2 christos 658 1.1 christos } 659 1.1 christos break; 660 1.1 christos case 0x24: 661 1.1 christos { 662 1.1 christos /** 0010 0100 subw %0, #%1 */ 663 1.1 christos if (trace) 664 1.1 christos { 665 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 666 1.1 christos "/** 0010 0100 subw %0, #%1 */", 667 1.1 christos op[0]); 668 1.1 christos } 669 1.1 christos SYNTAX("subw %0, #%1"); 670 1.1.1.5 christos #line 1195 "rl78-decode.opc" 671 1.1 christos ID(sub); W(); DR(AX); SC(IMMU(2)); Fzac; 672 1.1.1.2 christos 673 1.1 christos } 674 1.1 christos break; 675 1.1 christos case 0x26: 676 1.1 christos { 677 1.1 christos /** 0010 0110 subw %0, %1 */ 678 1.1 christos if (trace) 679 1.1 christos { 680 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 681 1.1 christos "/** 0010 0110 subw %0, %1 */", 682 1.1 christos op[0]); 683 1.1 christos } 684 1.1 christos SYNTAX("subw %0, %1"); 685 1.1.1.5 christos #line 1201 "rl78-decode.opc" 686 1.1 christos ID(sub); W(); DR(AX); SM(None, SADDR); Fzac; 687 1.1.1.2 christos 688 1.1 christos } 689 1.1 christos break; 690 1.1 christos case 0x28: 691 1.1 christos { 692 1.1.1.2 christos /** 0010 1000 mov %e0, %1 */ 693 1.1 christos if (trace) 694 1.1 christos { 695 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 696 1.1.1.2 christos "/** 0010 1000 mov %e0, %1 */", 697 1.1 christos op[0]); 698 1.1 christos } 699 1.1.1.2 christos SYNTAX("mov %e0, %1"); 700 1.1.1.5 christos #line 747 "rl78-decode.opc" 701 1.1 christos ID(mov); DM(C, IMMU(2)); SR(A); 702 1.1.1.2 christos 703 1.1 christos } 704 1.1 christos break; 705 1.1 christos case 0x29: 706 1.1 christos { 707 1.1.1.2 christos /** 0010 1001 mov %0, %e1 */ 708 1.1 christos if (trace) 709 1.1 christos { 710 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 711 1.1.1.2 christos "/** 0010 1001 mov %0, %e1 */", 712 1.1 christos op[0]); 713 1.1 christos } 714 1.1.1.2 christos SYNTAX("mov %0, %e1"); 715 1.1.1.5 christos #line 690 "rl78-decode.opc" 716 1.1 christos ID(mov); DR(A); SM(C, IMMU(2)); 717 1.1.1.2 christos 718 1.1 christos } 719 1.1 christos break; 720 1.1 christos case 0x2a: 721 1.1 christos { 722 1.1 christos /** 0010 1010 sub %0, #%1 */ 723 1.1 christos if (trace) 724 1.1 christos { 725 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 726 1.1 christos "/** 0010 1010 sub %0, #%1 */", 727 1.1 christos op[0]); 728 1.1 christos } 729 1.1 christos SYNTAX("sub %0, #%1"); 730 1.1.1.5 christos #line 1152 "rl78-decode.opc" 731 1.1 christos ID(sub); DM(None, SADDR); SC(IMMU(1)); Fzac; 732 1.1.1.2 christos 733 1.1 christos /*----------------------------------------------------------------------*/ 734 1.1.1.2 christos 735 1.1 christos } 736 1.1 christos break; 737 1.1 christos case 0x2b: 738 1.1 christos { 739 1.1 christos /** 0010 1011 sub %0, %1 */ 740 1.1 christos if (trace) 741 1.1 christos { 742 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 743 1.1 christos "/** 0010 1011 sub %0, %1 */", 744 1.1 christos op[0]); 745 1.1 christos } 746 1.1 christos SYNTAX("sub %0, %1"); 747 1.1.1.5 christos #line 1146 "rl78-decode.opc" 748 1.1 christos ID(sub); DR(A); SM(None, SADDR); Fzac; 749 1.1.1.2 christos 750 1.1 christos } 751 1.1 christos break; 752 1.1 christos case 0x2c: 753 1.1 christos { 754 1.1 christos /** 0010 1100 sub %0, #%1 */ 755 1.1 christos if (trace) 756 1.1 christos { 757 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 758 1.1 christos "/** 0010 1100 sub %0, #%1 */", 759 1.1 christos op[0]); 760 1.1 christos } 761 1.1 christos SYNTAX("sub %0, #%1"); 762 1.1.1.5 christos #line 1140 "rl78-decode.opc" 763 1.1 christos ID(sub); DR(A); SC(IMMU(1)); Fzac; 764 1.1.1.2 christos 765 1.1 christos } 766 1.1 christos break; 767 1.1 christos case 0x2d: 768 1.1 christos { 769 1.1.1.2 christos /** 0010 1101 sub %0, %e1 */ 770 1.1 christos if (trace) 771 1.1 christos { 772 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 773 1.1.1.2 christos "/** 0010 1101 sub %0, %e1 */", 774 1.1 christos op[0]); 775 1.1 christos } 776 1.1.1.2 christos SYNTAX("sub %0, %e1"); 777 1.1.1.5 christos #line 1128 "rl78-decode.opc" 778 1.1 christos ID(sub); DR(A); SM(HL, 0); Fzac; 779 1.1.1.2 christos 780 1.1 christos } 781 1.1 christos break; 782 1.1 christos case 0x2e: 783 1.1 christos { 784 1.1.1.2 christos /** 0010 1110 sub %0, %ea1 */ 785 1.1 christos if (trace) 786 1.1 christos { 787 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 788 1.1.1.2 christos "/** 0010 1110 sub %0, %ea1 */", 789 1.1 christos op[0]); 790 1.1 christos } 791 1.1.1.2 christos SYNTAX("sub %0, %ea1"); 792 1.1.1.5 christos #line 1134 "rl78-decode.opc" 793 1.1 christos ID(sub); DR(A); SM(HL, IMMU(1)); Fzac; 794 1.1.1.2 christos 795 1.1 christos } 796 1.1 christos break; 797 1.1 christos case 0x2f: 798 1.1 christos { 799 1.1.1.2 christos /** 0010 1111 sub %0, %e!1 */ 800 1.1 christos if (trace) 801 1.1 christos { 802 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 803 1.1.1.2 christos "/** 0010 1111 sub %0, %e!1 */", 804 1.1 christos op[0]); 805 1.1 christos } 806 1.1.1.2 christos SYNTAX("sub %0, %e!1"); 807 1.1.1.5 christos #line 1125 "rl78-decode.opc" 808 1.1 christos ID(sub); DR(A); SM(None, IMMU(2)); Fzac; 809 1.1.1.2 christos 810 1.1 christos } 811 1.1 christos break; 812 1.1 christos case 0x30: 813 1.1 christos case 0x32: 814 1.1 christos case 0x34: 815 1.1 christos case 0x36: 816 1.1 christos { 817 1.1 christos /** 0011 0rg0 movw %0, #%1 */ 818 1.1.1.5 christos #line 859 "rl78-decode.opc" 819 1.1 christos int rg AU = (op[0] >> 1) & 0x03; 820 1.1 christos if (trace) 821 1.1 christos { 822 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 823 1.1 christos "/** 0011 0rg0 movw %0, #%1 */", 824 1.1 christos op[0]); 825 1.1 christos printf (" rg = 0x%x\n", rg); 826 1.1 christos } 827 1.1 christos SYNTAX("movw %0, #%1"); 828 1.1.1.5 christos #line 859 "rl78-decode.opc" 829 1.1 christos ID(mov); W(); DRW(rg); SC(IMMU(2)); 830 1.1.1.2 christos 831 1.1 christos } 832 1.1 christos break; 833 1.1 christos case 0x31: 834 1.1 christos GETBYTE (); 835 1.1 christos switch (op[1] & 0x8f) 836 1.1 christos { 837 1.1 christos case 0x00: 838 1.1 christos { 839 1.1 christos /** 0011 0001 0bit 0000 btclr %s1, $%a0 */ 840 1.1.1.5 christos #line 422 "rl78-decode.opc" 841 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 842 1.1 christos if (trace) 843 1.1 christos { 844 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 845 1.1 christos "/** 0011 0001 0bit 0000 btclr %s1, $%a0 */", 846 1.1 christos op[0], op[1]); 847 1.1 christos printf (" bit = 0x%x\n", bit); 848 1.1 christos } 849 1.1 christos SYNTAX("btclr %s1, $%a0"); 850 1.1.1.5 christos #line 422 "rl78-decode.opc" 851 1.1 christos ID(branch_cond_clear); SM(None, SADDR); SB(bit); DC(pc+IMMS(1)+4); COND(T); 852 1.1.1.2 christos 853 1.1 christos /*----------------------------------------------------------------------*/ 854 1.1.1.2 christos 855 1.1 christos } 856 1.1 christos break; 857 1.1 christos case 0x01: 858 1.1 christos { 859 1.1 christos /** 0011 0001 0bit 0001 btclr %1, $%a0 */ 860 1.1.1.5 christos #line 416 "rl78-decode.opc" 861 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 862 1.1 christos if (trace) 863 1.1 christos { 864 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 865 1.1 christos "/** 0011 0001 0bit 0001 btclr %1, $%a0 */", 866 1.1 christos op[0], op[1]); 867 1.1 christos printf (" bit = 0x%x\n", bit); 868 1.1 christos } 869 1.1 christos SYNTAX("btclr %1, $%a0"); 870 1.1.1.5 christos #line 416 "rl78-decode.opc" 871 1.1 christos ID(branch_cond_clear); DC(pc+IMMS(1)+3); SR(A); SB(bit); COND(T); 872 1.1.1.2 christos 873 1.1 christos } 874 1.1 christos break; 875 1.1 christos case 0x02: 876 1.1 christos { 877 1.1 christos /** 0011 0001 0bit 0010 bt %s1, $%a0 */ 878 1.1.1.5 christos #line 408 "rl78-decode.opc" 879 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 880 1.1 christos if (trace) 881 1.1 christos { 882 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 883 1.1 christos "/** 0011 0001 0bit 0010 bt %s1, $%a0 */", 884 1.1 christos op[0], op[1]); 885 1.1 christos printf (" bit = 0x%x\n", bit); 886 1.1 christos } 887 1.1 christos SYNTAX("bt %s1, $%a0"); 888 1.1.1.5 christos #line 408 "rl78-decode.opc" 889 1.1 christos ID(branch_cond); SM(None, SADDR); SB(bit); DC(pc+IMMS(1)+4); COND(T); 890 1.1.1.2 christos 891 1.1 christos /*----------------------------------------------------------------------*/ 892 1.1.1.2 christos 893 1.1 christos } 894 1.1 christos break; 895 1.1 christos case 0x03: 896 1.1 christos { 897 1.1 christos /** 0011 0001 0bit 0011 bt %1, $%a0 */ 898 1.1.1.5 christos #line 402 "rl78-decode.opc" 899 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 900 1.1 christos if (trace) 901 1.1 christos { 902 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 903 1.1 christos "/** 0011 0001 0bit 0011 bt %1, $%a0 */", 904 1.1 christos op[0], op[1]); 905 1.1 christos printf (" bit = 0x%x\n", bit); 906 1.1 christos } 907 1.1 christos SYNTAX("bt %1, $%a0"); 908 1.1.1.5 christos #line 402 "rl78-decode.opc" 909 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+3); SR(A); SB(bit); COND(T); 910 1.1.1.2 christos 911 1.1 christos } 912 1.1 christos break; 913 1.1 christos case 0x04: 914 1.1 christos { 915 1.1 christos /** 0011 0001 0bit 0100 bf %s1, $%a0 */ 916 1.1.1.5 christos #line 369 "rl78-decode.opc" 917 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 918 1.1 christos if (trace) 919 1.1 christos { 920 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 921 1.1 christos "/** 0011 0001 0bit 0100 bf %s1, $%a0 */", 922 1.1 christos op[0], op[1]); 923 1.1 christos printf (" bit = 0x%x\n", bit); 924 1.1 christos } 925 1.1 christos SYNTAX("bf %s1, $%a0"); 926 1.1.1.5 christos #line 369 "rl78-decode.opc" 927 1.1 christos ID(branch_cond); SM(None, SADDR); SB(bit); DC(pc+IMMS(1)+4); COND(F); 928 1.1.1.2 christos 929 1.1 christos /*----------------------------------------------------------------------*/ 930 1.1.1.2 christos 931 1.1 christos } 932 1.1 christos break; 933 1.1 christos case 0x05: 934 1.1 christos { 935 1.1 christos /** 0011 0001 0bit 0101 bf %1, $%a0 */ 936 1.1.1.5 christos #line 363 "rl78-decode.opc" 937 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 938 1.1 christos if (trace) 939 1.1 christos { 940 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 941 1.1 christos "/** 0011 0001 0bit 0101 bf %1, $%a0 */", 942 1.1 christos op[0], op[1]); 943 1.1 christos printf (" bit = 0x%x\n", bit); 944 1.1 christos } 945 1.1 christos SYNTAX("bf %1, $%a0"); 946 1.1.1.5 christos #line 363 "rl78-decode.opc" 947 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+3); SR(A); SB(bit); COND(F); 948 1.1.1.2 christos 949 1.1 christos } 950 1.1 christos break; 951 1.1 christos case 0x07: 952 1.1 christos { 953 1.1 christos /** 0011 0001 0cnt 0111 shl %0, %1 */ 954 1.1.1.5 christos #line 1081 "rl78-decode.opc" 955 1.1 christos int cnt AU = (op[1] >> 4) & 0x07; 956 1.1 christos if (trace) 957 1.1 christos { 958 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 959 1.1 christos "/** 0011 0001 0cnt 0111 shl %0, %1 */", 960 1.1 christos op[0], op[1]); 961 1.1 christos printf (" cnt = 0x%x\n", cnt); 962 1.1 christos } 963 1.1 christos SYNTAX("shl %0, %1"); 964 1.1.1.5 christos #line 1081 "rl78-decode.opc" 965 1.1 christos ID(shl); DR(C); SC(cnt); 966 1.1.1.2 christos 967 1.1 christos } 968 1.1 christos break; 969 1.1 christos case 0x08: 970 1.1 christos { 971 1.1 christos /** 0011 0001 0cnt 1000 shl %0, %1 */ 972 1.1.1.5 christos #line 1078 "rl78-decode.opc" 973 1.1 christos int cnt AU = (op[1] >> 4) & 0x07; 974 1.1 christos if (trace) 975 1.1 christos { 976 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 977 1.1 christos "/** 0011 0001 0cnt 1000 shl %0, %1 */", 978 1.1 christos op[0], op[1]); 979 1.1 christos printf (" cnt = 0x%x\n", cnt); 980 1.1 christos } 981 1.1 christos SYNTAX("shl %0, %1"); 982 1.1.1.5 christos #line 1078 "rl78-decode.opc" 983 1.1 christos ID(shl); DR(B); SC(cnt); 984 1.1.1.2 christos 985 1.1 christos } 986 1.1 christos break; 987 1.1 christos case 0x09: 988 1.1 christos { 989 1.1 christos /** 0011 0001 0cnt 1001 shl %0, %1 */ 990 1.1.1.5 christos #line 1075 "rl78-decode.opc" 991 1.1 christos int cnt AU = (op[1] >> 4) & 0x07; 992 1.1 christos if (trace) 993 1.1 christos { 994 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 995 1.1 christos "/** 0011 0001 0cnt 1001 shl %0, %1 */", 996 1.1 christos op[0], op[1]); 997 1.1 christos printf (" cnt = 0x%x\n", cnt); 998 1.1 christos } 999 1.1 christos SYNTAX("shl %0, %1"); 1000 1.1.1.5 christos #line 1075 "rl78-decode.opc" 1001 1.1 christos ID(shl); DR(A); SC(cnt); 1002 1.1.1.2 christos 1003 1.1 christos } 1004 1.1 christos break; 1005 1.1 christos case 0x0a: 1006 1.1 christos { 1007 1.1 christos /** 0011 0001 0cnt 1010 shr %0, %1 */ 1008 1.1.1.5 christos #line 1092 "rl78-decode.opc" 1009 1.1 christos int cnt AU = (op[1] >> 4) & 0x07; 1010 1.1 christos if (trace) 1011 1.1 christos { 1012 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1013 1.1 christos "/** 0011 0001 0cnt 1010 shr %0, %1 */", 1014 1.1 christos op[0], op[1]); 1015 1.1 christos printf (" cnt = 0x%x\n", cnt); 1016 1.1 christos } 1017 1.1 christos SYNTAX("shr %0, %1"); 1018 1.1.1.5 christos #line 1092 "rl78-decode.opc" 1019 1.1 christos ID(shr); DR(A); SC(cnt); 1020 1.1.1.2 christos 1021 1.1 christos } 1022 1.1 christos break; 1023 1.1 christos case 0x0b: 1024 1.1 christos { 1025 1.1 christos /** 0011 0001 0cnt 1011 sar %0, %1 */ 1026 1.1.1.5 christos #line 1039 "rl78-decode.opc" 1027 1.1 christos int cnt AU = (op[1] >> 4) & 0x07; 1028 1.1 christos if (trace) 1029 1.1 christos { 1030 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1031 1.1 christos "/** 0011 0001 0cnt 1011 sar %0, %1 */", 1032 1.1 christos op[0], op[1]); 1033 1.1 christos printf (" cnt = 0x%x\n", cnt); 1034 1.1 christos } 1035 1.1 christos SYNTAX("sar %0, %1"); 1036 1.1.1.5 christos #line 1039 "rl78-decode.opc" 1037 1.1 christos ID(sar); DR(A); SC(cnt); 1038 1.1.1.2 christos 1039 1.1 christos } 1040 1.1 christos break; 1041 1.1 christos case 0x0c: 1042 1.1 christos case 0x8c: 1043 1.1 christos { 1044 1.1 christos /** 0011 0001 wcnt 1100 shlw %0, %1 */ 1045 1.1.1.5 christos #line 1087 "rl78-decode.opc" 1046 1.1 christos int wcnt AU = (op[1] >> 4) & 0x0f; 1047 1.1 christos if (trace) 1048 1.1 christos { 1049 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1050 1.1 christos "/** 0011 0001 wcnt 1100 shlw %0, %1 */", 1051 1.1 christos op[0], op[1]); 1052 1.1 christos printf (" wcnt = 0x%x\n", wcnt); 1053 1.1 christos } 1054 1.1 christos SYNTAX("shlw %0, %1"); 1055 1.1.1.5 christos #line 1087 "rl78-decode.opc" 1056 1.1 christos ID(shl); W(); DR(BC); SC(wcnt); 1057 1.1.1.2 christos 1058 1.1 christos /*----------------------------------------------------------------------*/ 1059 1.1.1.2 christos 1060 1.1 christos } 1061 1.1 christos break; 1062 1.1 christos case 0x0d: 1063 1.1 christos case 0x8d: 1064 1.1 christos { 1065 1.1 christos /** 0011 0001 wcnt 1101 shlw %0, %1 */ 1066 1.1.1.5 christos #line 1084 "rl78-decode.opc" 1067 1.1 christos int wcnt AU = (op[1] >> 4) & 0x0f; 1068 1.1 christos if (trace) 1069 1.1 christos { 1070 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1071 1.1 christos "/** 0011 0001 wcnt 1101 shlw %0, %1 */", 1072 1.1 christos op[0], op[1]); 1073 1.1 christos printf (" wcnt = 0x%x\n", wcnt); 1074 1.1 christos } 1075 1.1 christos SYNTAX("shlw %0, %1"); 1076 1.1.1.5 christos #line 1084 "rl78-decode.opc" 1077 1.1 christos ID(shl); W(); DR(AX); SC(wcnt); 1078 1.1.1.2 christos 1079 1.1 christos } 1080 1.1 christos break; 1081 1.1 christos case 0x0e: 1082 1.1 christos case 0x8e: 1083 1.1 christos { 1084 1.1 christos /** 0011 0001 wcnt 1110 shrw %0, %1 */ 1085 1.1.1.5 christos #line 1095 "rl78-decode.opc" 1086 1.1 christos int wcnt AU = (op[1] >> 4) & 0x0f; 1087 1.1 christos if (trace) 1088 1.1 christos { 1089 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1090 1.1 christos "/** 0011 0001 wcnt 1110 shrw %0, %1 */", 1091 1.1 christos op[0], op[1]); 1092 1.1 christos printf (" wcnt = 0x%x\n", wcnt); 1093 1.1 christos } 1094 1.1 christos SYNTAX("shrw %0, %1"); 1095 1.1.1.5 christos #line 1095 "rl78-decode.opc" 1096 1.1 christos ID(shr); W(); DR(AX); SC(wcnt); 1097 1.1.1.2 christos 1098 1.1 christos /*----------------------------------------------------------------------*/ 1099 1.1.1.2 christos 1100 1.1 christos } 1101 1.1 christos break; 1102 1.1 christos case 0x0f: 1103 1.1 christos case 0x8f: 1104 1.1 christos { 1105 1.1 christos /** 0011 0001 wcnt 1111 sarw %0, %1 */ 1106 1.1.1.5 christos #line 1042 "rl78-decode.opc" 1107 1.1 christos int wcnt AU = (op[1] >> 4) & 0x0f; 1108 1.1 christos if (trace) 1109 1.1 christos { 1110 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1111 1.1 christos "/** 0011 0001 wcnt 1111 sarw %0, %1 */", 1112 1.1 christos op[0], op[1]); 1113 1.1 christos printf (" wcnt = 0x%x\n", wcnt); 1114 1.1 christos } 1115 1.1 christos SYNTAX("sarw %0, %1"); 1116 1.1.1.5 christos #line 1042 "rl78-decode.opc" 1117 1.1 christos ID(sar); W(); DR(AX); SC(wcnt); 1118 1.1.1.2 christos 1119 1.1 christos /*----------------------------------------------------------------------*/ 1120 1.1.1.2 christos 1121 1.1 christos } 1122 1.1 christos break; 1123 1.1 christos case 0x80: 1124 1.1 christos { 1125 1.1 christos /** 0011 0001 1bit 0000 btclr %s1, $%a0 */ 1126 1.1.1.5 christos #line 419 "rl78-decode.opc" 1127 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 1128 1.1 christos if (trace) 1129 1.1 christos { 1130 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1131 1.1 christos "/** 0011 0001 1bit 0000 btclr %s1, $%a0 */", 1132 1.1 christos op[0], op[1]); 1133 1.1 christos printf (" bit = 0x%x\n", bit); 1134 1.1 christos } 1135 1.1 christos SYNTAX("btclr %s1, $%a0"); 1136 1.1.1.5 christos #line 419 "rl78-decode.opc" 1137 1.1 christos ID(branch_cond_clear); SM(None, SFR); SB(bit); DC(pc+IMMS(1)+4); COND(T); 1138 1.1.1.2 christos 1139 1.1 christos } 1140 1.1 christos break; 1141 1.1 christos case 0x81: 1142 1.1 christos { 1143 1.1.1.2 christos /** 0011 0001 1bit 0001 btclr %e1, $%a0 */ 1144 1.1.1.5 christos #line 413 "rl78-decode.opc" 1145 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 1146 1.1 christos if (trace) 1147 1.1 christos { 1148 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1149 1.1.1.2 christos "/** 0011 0001 1bit 0001 btclr %e1, $%a0 */", 1150 1.1 christos op[0], op[1]); 1151 1.1 christos printf (" bit = 0x%x\n", bit); 1152 1.1 christos } 1153 1.1.1.2 christos SYNTAX("btclr %e1, $%a0"); 1154 1.1.1.5 christos #line 413 "rl78-decode.opc" 1155 1.1 christos ID(branch_cond_clear); DC(pc+IMMS(1)+3); SM(HL,0); SB(bit); COND(T); 1156 1.1.1.2 christos 1157 1.1 christos } 1158 1.1 christos break; 1159 1.1 christos case 0x82: 1160 1.1 christos { 1161 1.1 christos /** 0011 0001 1bit 0010 bt %s1, $%a0 */ 1162 1.1.1.5 christos #line 405 "rl78-decode.opc" 1163 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 1164 1.1 christos if (trace) 1165 1.1 christos { 1166 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1167 1.1 christos "/** 0011 0001 1bit 0010 bt %s1, $%a0 */", 1168 1.1 christos op[0], op[1]); 1169 1.1 christos printf (" bit = 0x%x\n", bit); 1170 1.1 christos } 1171 1.1 christos SYNTAX("bt %s1, $%a0"); 1172 1.1.1.5 christos #line 405 "rl78-decode.opc" 1173 1.1 christos ID(branch_cond); SM(None, SFR); SB(bit); DC(pc+IMMS(1)+4); COND(T); 1174 1.1.1.2 christos 1175 1.1 christos } 1176 1.1 christos break; 1177 1.1 christos case 0x83: 1178 1.1 christos { 1179 1.1.1.2 christos /** 0011 0001 1bit 0011 bt %e1, $%a0 */ 1180 1.1.1.5 christos #line 399 "rl78-decode.opc" 1181 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 1182 1.1 christos if (trace) 1183 1.1 christos { 1184 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1185 1.1.1.2 christos "/** 0011 0001 1bit 0011 bt %e1, $%a0 */", 1186 1.1 christos op[0], op[1]); 1187 1.1 christos printf (" bit = 0x%x\n", bit); 1188 1.1 christos } 1189 1.1.1.2 christos SYNTAX("bt %e1, $%a0"); 1190 1.1.1.5 christos #line 399 "rl78-decode.opc" 1191 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+3); SM(HL,0); SB(bit); COND(T); 1192 1.1.1.2 christos 1193 1.1 christos } 1194 1.1 christos break; 1195 1.1 christos case 0x84: 1196 1.1 christos { 1197 1.1 christos /** 0011 0001 1bit 0100 bf %s1, $%a0 */ 1198 1.1.1.5 christos #line 366 "rl78-decode.opc" 1199 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 1200 1.1 christos if (trace) 1201 1.1 christos { 1202 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1203 1.1 christos "/** 0011 0001 1bit 0100 bf %s1, $%a0 */", 1204 1.1 christos op[0], op[1]); 1205 1.1 christos printf (" bit = 0x%x\n", bit); 1206 1.1 christos } 1207 1.1 christos SYNTAX("bf %s1, $%a0"); 1208 1.1.1.5 christos #line 366 "rl78-decode.opc" 1209 1.1 christos ID(branch_cond); SM(None, SFR); SB(bit); DC(pc+IMMS(1)+4); COND(F); 1210 1.1.1.2 christos 1211 1.1 christos } 1212 1.1 christos break; 1213 1.1 christos case 0x85: 1214 1.1 christos { 1215 1.1.1.2 christos /** 0011 0001 1bit 0101 bf %e1, $%a0 */ 1216 1.1.1.5 christos #line 360 "rl78-decode.opc" 1217 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 1218 1.1 christos if (trace) 1219 1.1 christos { 1220 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1221 1.1.1.2 christos "/** 0011 0001 1bit 0101 bf %e1, $%a0 */", 1222 1.1 christos op[0], op[1]); 1223 1.1 christos printf (" bit = 0x%x\n", bit); 1224 1.1 christos } 1225 1.1.1.2 christos SYNTAX("bf %e1, $%a0"); 1226 1.1.1.5 christos #line 360 "rl78-decode.opc" 1227 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+3); SM(HL,0); SB(bit); COND(F); 1228 1.1.1.2 christos 1229 1.1 christos } 1230 1.1 christos break; 1231 1.1 christos default: UNSUPPORTED(); break; 1232 1.1 christos } 1233 1.1 christos break; 1234 1.1 christos case 0x33: 1235 1.1 christos case 0x35: 1236 1.1 christos case 0x37: 1237 1.1 christos { 1238 1.1 christos /** 0011 0ra1 xchw %0, %1 */ 1239 1.1.1.5 christos #line 1245 "rl78-decode.opc" 1240 1.1 christos int ra AU = (op[0] >> 1) & 0x03; 1241 1.1 christos if (trace) 1242 1.1 christos { 1243 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1244 1.1 christos "/** 0011 0ra1 xchw %0, %1 */", 1245 1.1 christos op[0]); 1246 1.1 christos printf (" ra = 0x%x\n", ra); 1247 1.1 christos } 1248 1.1 christos SYNTAX("xchw %0, %1"); 1249 1.1.1.5 christos #line 1245 "rl78-decode.opc" 1250 1.1 christos ID(xch); W(); DR(AX); SRW(ra); 1251 1.1.1.2 christos 1252 1.1 christos /*----------------------------------------------------------------------*/ 1253 1.1.1.2 christos 1254 1.1 christos } 1255 1.1 christos break; 1256 1.1 christos case 0x38: 1257 1.1 christos { 1258 1.1.1.2 christos /** 0011 1000 mov %e0, #%1 */ 1259 1.1 christos if (trace) 1260 1.1 christos { 1261 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1262 1.1.1.2 christos "/** 0011 1000 mov %e0, #%1 */", 1263 1.1 christos op[0]); 1264 1.1 christos } 1265 1.1.1.2 christos SYNTAX("mov %e0, #%1"); 1266 1.1.1.5 christos #line 744 "rl78-decode.opc" 1267 1.1.1.2 christos ID(mov); DM(C, IMMU(2)); SC(IMMU(1)); 1268 1.1.1.2 christos 1269 1.1 christos } 1270 1.1 christos break; 1271 1.1 christos case 0x39: 1272 1.1 christos { 1273 1.1.1.2 christos /** 0011 1001 mov %e0, #%1 */ 1274 1.1 christos if (trace) 1275 1.1 christos { 1276 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1277 1.1.1.2 christos "/** 0011 1001 mov %e0, #%1 */", 1278 1.1 christos op[0]); 1279 1.1 christos } 1280 1.1.1.2 christos SYNTAX("mov %e0, #%1"); 1281 1.1.1.5 christos #line 738 "rl78-decode.opc" 1282 1.1.1.2 christos ID(mov); DM(BC, IMMU(2)); SC(IMMU(1)); 1283 1.1.1.2 christos 1284 1.1 christos } 1285 1.1 christos break; 1286 1.1 christos case 0x3a: 1287 1.1 christos { 1288 1.1 christos /** 0011 1010 subc %0, #%1 */ 1289 1.1 christos if (trace) 1290 1.1 christos { 1291 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1292 1.1 christos "/** 0011 1010 subc %0, #%1 */", 1293 1.1 christos op[0]); 1294 1.1 christos } 1295 1.1 christos SYNTAX("subc %0, #%1"); 1296 1.1.1.5 christos #line 1184 "rl78-decode.opc" 1297 1.1 christos ID(subc); DM(None, SADDR); SC(IMMU(1)); Fzac; 1298 1.1.1.2 christos 1299 1.1 christos /*----------------------------------------------------------------------*/ 1300 1.1.1.2 christos 1301 1.1 christos } 1302 1.1 christos break; 1303 1.1 christos case 0x3b: 1304 1.1 christos { 1305 1.1 christos /** 0011 1011 subc %0, %1 */ 1306 1.1 christos if (trace) 1307 1.1 christos { 1308 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1309 1.1 christos "/** 0011 1011 subc %0, %1 */", 1310 1.1 christos op[0]); 1311 1.1 christos } 1312 1.1 christos SYNTAX("subc %0, %1"); 1313 1.1.1.5 christos #line 1181 "rl78-decode.opc" 1314 1.1 christos ID(subc); DR(A); SM(None, SADDR); Fzac; 1315 1.1.1.2 christos 1316 1.1 christos } 1317 1.1 christos break; 1318 1.1 christos case 0x3c: 1319 1.1 christos { 1320 1.1 christos /** 0011 1100 subc %0, #%1 */ 1321 1.1 christos if (trace) 1322 1.1 christos { 1323 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1324 1.1 christos "/** 0011 1100 subc %0, #%1 */", 1325 1.1 christos op[0]); 1326 1.1 christos } 1327 1.1 christos SYNTAX("subc %0, #%1"); 1328 1.1.1.5 christos #line 1172 "rl78-decode.opc" 1329 1.1 christos ID(subc); DR(A); SC(IMMU(1)); Fzac; 1330 1.1.1.2 christos 1331 1.1 christos } 1332 1.1 christos break; 1333 1.1 christos case 0x3d: 1334 1.1 christos { 1335 1.1.1.2 christos /** 0011 1101 subc %0, %e1 */ 1336 1.1 christos if (trace) 1337 1.1 christos { 1338 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1339 1.1.1.2 christos "/** 0011 1101 subc %0, %e1 */", 1340 1.1 christos op[0]); 1341 1.1 christos } 1342 1.1.1.2 christos SYNTAX("subc %0, %e1"); 1343 1.1.1.5 christos #line 1160 "rl78-decode.opc" 1344 1.1 christos ID(subc); DR(A); SM(HL, 0); Fzac; 1345 1.1.1.2 christos 1346 1.1 christos } 1347 1.1 christos break; 1348 1.1 christos case 0x3e: 1349 1.1 christos { 1350 1.1.1.2 christos /** 0011 1110 subc %0, %ea1 */ 1351 1.1 christos if (trace) 1352 1.1 christos { 1353 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1354 1.1.1.2 christos "/** 0011 1110 subc %0, %ea1 */", 1355 1.1 christos op[0]); 1356 1.1 christos } 1357 1.1.1.2 christos SYNTAX("subc %0, %ea1"); 1358 1.1.1.5 christos #line 1169 "rl78-decode.opc" 1359 1.1 christos ID(subc); DR(A); SM(HL, IMMU(1)); Fzac; 1360 1.1.1.2 christos 1361 1.1 christos } 1362 1.1 christos break; 1363 1.1 christos case 0x3f: 1364 1.1 christos { 1365 1.1.1.2 christos /** 0011 1111 subc %0, %e!1 */ 1366 1.1 christos if (trace) 1367 1.1 christos { 1368 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1369 1.1.1.2 christos "/** 0011 1111 subc %0, %e!1 */", 1370 1.1 christos op[0]); 1371 1.1 christos } 1372 1.1.1.2 christos SYNTAX("subc %0, %e!1"); 1373 1.1.1.5 christos #line 1157 "rl78-decode.opc" 1374 1.1 christos ID(subc); DR(A); SM(None, IMMU(2)); Fzac; 1375 1.1.1.2 christos 1376 1.1 christos } 1377 1.1 christos break; 1378 1.1 christos case 0x40: 1379 1.1 christos { 1380 1.1.1.2 christos /** 0100 0000 cmp %e!0, #%1 */ 1381 1.1 christos if (trace) 1382 1.1 christos { 1383 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1384 1.1.1.2 christos "/** 0100 0000 cmp %e!0, #%1 */", 1385 1.1 christos op[0]); 1386 1.1 christos } 1387 1.1.1.2 christos SYNTAX("cmp %e!0, #%1"); 1388 1.1.1.5 christos #line 486 "rl78-decode.opc" 1389 1.1 christos ID(cmp); DM(None, IMMU(2)); SC(IMMU(1)); Fzac; 1390 1.1.1.2 christos 1391 1.1 christos } 1392 1.1 christos break; 1393 1.1 christos case 0x41: 1394 1.1 christos { 1395 1.1 christos /** 0100 0001 mov %0, #%1 */ 1396 1.1 christos if (trace) 1397 1.1 christos { 1398 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1399 1.1 christos "/** 0100 0001 mov %0, #%1 */", 1400 1.1 christos op[0]); 1401 1.1 christos } 1402 1.1 christos SYNTAX("mov %0, #%1"); 1403 1.1.1.5 christos #line 723 "rl78-decode.opc" 1404 1.1.1.2 christos ID(mov); DR(ES); SC(IMMU(1)); 1405 1.1.1.2 christos 1406 1.1 christos } 1407 1.1 christos break; 1408 1.1 christos case 0x42: 1409 1.1 christos { 1410 1.1.1.2 christos /** 0100 0010 cmpw %0, %e!1 */ 1411 1.1 christos if (trace) 1412 1.1 christos { 1413 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1414 1.1.1.2 christos "/** 0100 0010 cmpw %0, %e!1 */", 1415 1.1 christos op[0]); 1416 1.1 christos } 1417 1.1.1.2 christos SYNTAX("cmpw %0, %e!1"); 1418 1.1.1.5 christos #line 537 "rl78-decode.opc" 1419 1.1 christos ID(cmp); W(); DR(AX); SM(None, IMMU(2)); Fzac; 1420 1.1.1.2 christos 1421 1.1 christos } 1422 1.1 christos break; 1423 1.1 christos case 0x43: 1424 1.1 christos case 0x45: 1425 1.1 christos case 0x47: 1426 1.1 christos { 1427 1.1 christos /** 0100 0ra1 cmpw %0, %1 */ 1428 1.1.1.5 christos #line 546 "rl78-decode.opc" 1429 1.1 christos int ra AU = (op[0] >> 1) & 0x03; 1430 1.1 christos if (trace) 1431 1.1 christos { 1432 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1433 1.1 christos "/** 0100 0ra1 cmpw %0, %1 */", 1434 1.1 christos op[0]); 1435 1.1 christos printf (" ra = 0x%x\n", ra); 1436 1.1 christos } 1437 1.1 christos SYNTAX("cmpw %0, %1"); 1438 1.1.1.5 christos #line 546 "rl78-decode.opc" 1439 1.1 christos ID(cmp); W(); DR(AX); SRW(ra); Fzac; 1440 1.1.1.2 christos 1441 1.1 christos } 1442 1.1 christos break; 1443 1.1 christos case 0x44: 1444 1.1 christos { 1445 1.1 christos /** 0100 0100 cmpw %0, #%1 */ 1446 1.1 christos if (trace) 1447 1.1 christos { 1448 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1449 1.1 christos "/** 0100 0100 cmpw %0, #%1 */", 1450 1.1 christos op[0]); 1451 1.1 christos } 1452 1.1 christos SYNTAX("cmpw %0, #%1"); 1453 1.1.1.5 christos #line 543 "rl78-decode.opc" 1454 1.1 christos ID(cmp); W(); DR(AX); SC(IMMU(2)); Fzac; 1455 1.1.1.2 christos 1456 1.1 christos } 1457 1.1 christos break; 1458 1.1 christos case 0x46: 1459 1.1 christos { 1460 1.1 christos /** 0100 0110 cmpw %0, %1 */ 1461 1.1 christos if (trace) 1462 1.1 christos { 1463 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1464 1.1 christos "/** 0100 0110 cmpw %0, %1 */", 1465 1.1 christos op[0]); 1466 1.1 christos } 1467 1.1 christos SYNTAX("cmpw %0, %1"); 1468 1.1.1.5 christos #line 549 "rl78-decode.opc" 1469 1.1 christos ID(cmp); W(); DR(AX); SM(None, SADDR); Fzac; 1470 1.1.1.2 christos 1471 1.1 christos /*----------------------------------------------------------------------*/ 1472 1.1.1.2 christos 1473 1.1 christos } 1474 1.1 christos break; 1475 1.1 christos case 0x48: 1476 1.1 christos { 1477 1.1.1.2 christos /** 0100 1000 mov %e0, %1 */ 1478 1.1 christos if (trace) 1479 1.1 christos { 1480 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1481 1.1.1.2 christos "/** 0100 1000 mov %e0, %1 */", 1482 1.1 christos op[0]); 1483 1.1 christos } 1484 1.1.1.2 christos SYNTAX("mov %e0, %1"); 1485 1.1.1.5 christos #line 741 "rl78-decode.opc" 1486 1.1.1.2 christos ID(mov); DM(BC, IMMU(2)); SR(A); 1487 1.1.1.2 christos 1488 1.1 christos } 1489 1.1 christos break; 1490 1.1 christos case 0x49: 1491 1.1 christos { 1492 1.1.1.2 christos /** 0100 1001 mov %0, %e1 */ 1493 1.1 christos if (trace) 1494 1.1 christos { 1495 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1496 1.1.1.2 christos "/** 0100 1001 mov %0, %e1 */", 1497 1.1 christos op[0]); 1498 1.1 christos } 1499 1.1.1.2 christos SYNTAX("mov %0, %e1"); 1500 1.1.1.5 christos #line 687 "rl78-decode.opc" 1501 1.1 christos ID(mov); DR(A); SM(BC, IMMU(2)); 1502 1.1.1.2 christos 1503 1.1 christos } 1504 1.1 christos break; 1505 1.1 christos case 0x4a: 1506 1.1 christos { 1507 1.1 christos /** 0100 1010 cmp %0, #%1 */ 1508 1.1 christos if (trace) 1509 1.1 christos { 1510 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1511 1.1 christos "/** 0100 1010 cmp %0, #%1 */", 1512 1.1 christos op[0]); 1513 1.1 christos } 1514 1.1 christos SYNTAX("cmp %0, #%1"); 1515 1.1.1.5 christos #line 489 "rl78-decode.opc" 1516 1.1 christos ID(cmp); DM(None, SADDR); SC(IMMU(1)); Fzac; 1517 1.1.1.2 christos 1518 1.1 christos } 1519 1.1 christos break; 1520 1.1 christos case 0x4b: 1521 1.1 christos { 1522 1.1 christos /** 0100 1011 cmp %0, %1 */ 1523 1.1 christos if (trace) 1524 1.1 christos { 1525 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1526 1.1 christos "/** 0100 1011 cmp %0, %1 */", 1527 1.1 christos op[0]); 1528 1.1 christos } 1529 1.1 christos SYNTAX("cmp %0, %1"); 1530 1.1.1.5 christos #line 516 "rl78-decode.opc" 1531 1.1 christos ID(cmp); DR(A); SM(None, SADDR); Fzac; 1532 1.1.1.2 christos 1533 1.1 christos /*----------------------------------------------------------------------*/ 1534 1.1.1.2 christos 1535 1.1 christos } 1536 1.1 christos break; 1537 1.1 christos case 0x4c: 1538 1.1 christos { 1539 1.1 christos /** 0100 1100 cmp %0, #%1 */ 1540 1.1 christos if (trace) 1541 1.1 christos { 1542 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1543 1.1 christos "/** 0100 1100 cmp %0, #%1 */", 1544 1.1 christos op[0]); 1545 1.1 christos } 1546 1.1 christos SYNTAX("cmp %0, #%1"); 1547 1.1.1.5 christos #line 507 "rl78-decode.opc" 1548 1.1 christos ID(cmp); DR(A); SC(IMMU(1)); Fzac; 1549 1.1.1.2 christos 1550 1.1 christos } 1551 1.1 christos break; 1552 1.1 christos case 0x4d: 1553 1.1 christos { 1554 1.1.1.2 christos /** 0100 1101 cmp %0, %e1 */ 1555 1.1 christos if (trace) 1556 1.1 christos { 1557 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1558 1.1.1.2 christos "/** 0100 1101 cmp %0, %e1 */", 1559 1.1 christos op[0]); 1560 1.1 christos } 1561 1.1.1.2 christos SYNTAX("cmp %0, %e1"); 1562 1.1.1.5 christos #line 495 "rl78-decode.opc" 1563 1.1 christos ID(cmp); DR(A); SM(HL, 0); Fzac; 1564 1.1.1.2 christos 1565 1.1 christos } 1566 1.1 christos break; 1567 1.1 christos case 0x4e: 1568 1.1 christos { 1569 1.1.1.2 christos /** 0100 1110 cmp %0, %ea1 */ 1570 1.1 christos if (trace) 1571 1.1 christos { 1572 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1573 1.1.1.2 christos "/** 0100 1110 cmp %0, %ea1 */", 1574 1.1 christos op[0]); 1575 1.1 christos } 1576 1.1.1.2 christos SYNTAX("cmp %0, %ea1"); 1577 1.1.1.5 christos #line 504 "rl78-decode.opc" 1578 1.1 christos ID(cmp); DR(A); SM(HL, IMMU(1)); Fzac; 1579 1.1.1.2 christos 1580 1.1 christos } 1581 1.1 christos break; 1582 1.1 christos case 0x4f: 1583 1.1 christos { 1584 1.1.1.2 christos /** 0100 1111 cmp %0, %e!1 */ 1585 1.1 christos if (trace) 1586 1.1 christos { 1587 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1588 1.1.1.2 christos "/** 0100 1111 cmp %0, %e!1 */", 1589 1.1 christos op[0]); 1590 1.1 christos } 1591 1.1.1.2 christos SYNTAX("cmp %0, %e!1"); 1592 1.1.1.5 christos #line 492 "rl78-decode.opc" 1593 1.1 christos ID(cmp); DR(A); SM(None, IMMU(2)); Fzac; 1594 1.1.1.2 christos 1595 1.1 christos } 1596 1.1 christos break; 1597 1.1 christos case 0x50: 1598 1.1 christos case 0x51: 1599 1.1 christos case 0x52: 1600 1.1 christos case 0x53: 1601 1.1 christos case 0x54: 1602 1.1 christos case 0x55: 1603 1.1 christos case 0x56: 1604 1.1 christos case 0x57: 1605 1.1 christos { 1606 1.1 christos /** 0101 0reg mov %0, #%1 */ 1607 1.1.1.5 christos #line 675 "rl78-decode.opc" 1608 1.1 christos int reg AU = op[0] & 0x07; 1609 1.1 christos if (trace) 1610 1.1 christos { 1611 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1612 1.1 christos "/** 0101 0reg mov %0, #%1 */", 1613 1.1 christos op[0]); 1614 1.1 christos printf (" reg = 0x%x\n", reg); 1615 1.1 christos } 1616 1.1 christos SYNTAX("mov %0, #%1"); 1617 1.1.1.5 christos #line 675 "rl78-decode.opc" 1618 1.1 christos ID(mov); DRB(reg); SC(IMMU(1)); 1619 1.1.1.2 christos 1620 1.1 christos } 1621 1.1 christos break; 1622 1.1 christos case 0x58: 1623 1.1 christos { 1624 1.1.1.2 christos /** 0101 1000 movw %e0, %1 */ 1625 1.1 christos if (trace) 1626 1.1 christos { 1627 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1628 1.1.1.2 christos "/** 0101 1000 movw %e0, %1 */", 1629 1.1 christos op[0]); 1630 1.1 christos } 1631 1.1.1.2 christos SYNTAX("movw %e0, %1"); 1632 1.1.1.5 christos #line 877 "rl78-decode.opc" 1633 1.1 christos ID(mov); W(); DM(B, IMMU(2)); SR(AX); 1634 1.1.1.2 christos 1635 1.1 christos } 1636 1.1 christos break; 1637 1.1 christos case 0x59: 1638 1.1 christos { 1639 1.1.1.2 christos /** 0101 1001 movw %0, %e1 */ 1640 1.1 christos if (trace) 1641 1.1 christos { 1642 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1643 1.1.1.2 christos "/** 0101 1001 movw %0, %e1 */", 1644 1.1 christos op[0]); 1645 1.1 christos } 1646 1.1.1.2 christos SYNTAX("movw %0, %e1"); 1647 1.1.1.5 christos #line 868 "rl78-decode.opc" 1648 1.1 christos ID(mov); W(); DR(AX); SM(B, IMMU(2)); 1649 1.1.1.2 christos 1650 1.1 christos } 1651 1.1 christos break; 1652 1.1 christos case 0x5a: 1653 1.1 christos { 1654 1.1 christos /** 0101 1010 and %0, #%1 */ 1655 1.1 christos if (trace) 1656 1.1 christos { 1657 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1658 1.1 christos "/** 0101 1010 and %0, #%1 */", 1659 1.1 christos op[0]); 1660 1.1 christos } 1661 1.1 christos SYNTAX("and %0, #%1"); 1662 1.1.1.5 christos #line 318 "rl78-decode.opc" 1663 1.1 christos ID(and); DM(None, SADDR); SC(IMMU(1)); Fz; 1664 1.1.1.2 christos 1665 1.1 christos /*----------------------------------------------------------------------*/ 1666 1.1.1.2 christos 1667 1.1 christos } 1668 1.1 christos break; 1669 1.1 christos case 0x5b: 1670 1.1 christos { 1671 1.1 christos /** 0101 1011 and %0, %1 */ 1672 1.1 christos if (trace) 1673 1.1 christos { 1674 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1675 1.1 christos "/** 0101 1011 and %0, %1 */", 1676 1.1 christos op[0]); 1677 1.1 christos } 1678 1.1 christos SYNTAX("and %0, %1"); 1679 1.1.1.5 christos #line 315 "rl78-decode.opc" 1680 1.1 christos ID(and); DR(A); SM(None, SADDR); Fz; 1681 1.1.1.2 christos 1682 1.1 christos } 1683 1.1 christos break; 1684 1.1 christos case 0x5c: 1685 1.1 christos { 1686 1.1 christos /** 0101 1100 and %0, #%1 */ 1687 1.1 christos if (trace) 1688 1.1 christos { 1689 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1690 1.1 christos "/** 0101 1100 and %0, #%1 */", 1691 1.1 christos op[0]); 1692 1.1 christos } 1693 1.1 christos SYNTAX("and %0, #%1"); 1694 1.1.1.5 christos #line 306 "rl78-decode.opc" 1695 1.1 christos ID(and); DR(A); SC(IMMU(1)); Fz; 1696 1.1.1.2 christos 1697 1.1 christos } 1698 1.1 christos break; 1699 1.1 christos case 0x5d: 1700 1.1 christos { 1701 1.1.1.2 christos /** 0101 1101 and %0, %e1 */ 1702 1.1 christos if (trace) 1703 1.1 christos { 1704 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1705 1.1.1.2 christos "/** 0101 1101 and %0, %e1 */", 1706 1.1 christos op[0]); 1707 1.1 christos } 1708 1.1.1.2 christos SYNTAX("and %0, %e1"); 1709 1.1.1.5 christos #line 294 "rl78-decode.opc" 1710 1.1 christos ID(and); DR(A); SM(HL, 0); Fz; 1711 1.1.1.2 christos 1712 1.1 christos } 1713 1.1 christos break; 1714 1.1 christos case 0x5e: 1715 1.1 christos { 1716 1.1.1.2 christos /** 0101 1110 and %0, %ea1 */ 1717 1.1 christos if (trace) 1718 1.1 christos { 1719 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1720 1.1.1.2 christos "/** 0101 1110 and %0, %ea1 */", 1721 1.1 christos op[0]); 1722 1.1 christos } 1723 1.1.1.2 christos SYNTAX("and %0, %ea1"); 1724 1.1.1.5 christos #line 300 "rl78-decode.opc" 1725 1.1 christos ID(and); DR(A); SM(HL, IMMU(1)); Fz; 1726 1.1.1.2 christos 1727 1.1 christos } 1728 1.1 christos break; 1729 1.1 christos case 0x5f: 1730 1.1 christos { 1731 1.1.1.2 christos /** 0101 1111 and %0, %e!1 */ 1732 1.1 christos if (trace) 1733 1.1 christos { 1734 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1735 1.1.1.2 christos "/** 0101 1111 and %0, %e!1 */", 1736 1.1 christos op[0]); 1737 1.1 christos } 1738 1.1.1.2 christos SYNTAX("and %0, %e!1"); 1739 1.1.1.5 christos #line 291 "rl78-decode.opc" 1740 1.1 christos ID(and); DR(A); SM(None, IMMU(2)); Fz; 1741 1.1.1.2 christos 1742 1.1 christos } 1743 1.1 christos break; 1744 1.1 christos case 0x60: 1745 1.1 christos case 0x62: 1746 1.1 christos case 0x63: 1747 1.1 christos case 0x64: 1748 1.1 christos case 0x65: 1749 1.1 christos case 0x66: 1750 1.1 christos case 0x67: 1751 1.1 christos { 1752 1.1 christos /** 0110 0rba mov %0, %1 */ 1753 1.1.1.5 christos #line 678 "rl78-decode.opc" 1754 1.1 christos int rba AU = op[0] & 0x07; 1755 1.1 christos if (trace) 1756 1.1 christos { 1757 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 1758 1.1 christos "/** 0110 0rba mov %0, %1 */", 1759 1.1 christos op[0]); 1760 1.1 christos printf (" rba = 0x%x\n", rba); 1761 1.1 christos } 1762 1.1 christos SYNTAX("mov %0, %1"); 1763 1.1.1.5 christos #line 678 "rl78-decode.opc" 1764 1.1 christos ID(mov); DR(A); SRB(rba); 1765 1.1.1.2 christos 1766 1.1 christos } 1767 1.1 christos break; 1768 1.1 christos case 0x61: 1769 1.1 christos GETBYTE (); 1770 1.1 christos switch (op[1] & 0xff) 1771 1.1 christos { 1772 1.1 christos case 0x00: 1773 1.1 christos case 0x01: 1774 1.1 christos case 0x02: 1775 1.1 christos case 0x03: 1776 1.1 christos case 0x04: 1777 1.1 christos case 0x05: 1778 1.1 christos case 0x06: 1779 1.1 christos case 0x07: 1780 1.1 christos { 1781 1.1 christos /** 0110 0001 0000 0reg add %0, %1 */ 1782 1.1.1.5 christos #line 231 "rl78-decode.opc" 1783 1.1 christos int reg AU = op[1] & 0x07; 1784 1.1 christos if (trace) 1785 1.1 christos { 1786 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1787 1.1 christos "/** 0110 0001 0000 0reg add %0, %1 */", 1788 1.1 christos op[0], op[1]); 1789 1.1 christos printf (" reg = 0x%x\n", reg); 1790 1.1 christos } 1791 1.1 christos SYNTAX("add %0, %1"); 1792 1.1.1.5 christos #line 231 "rl78-decode.opc" 1793 1.1 christos ID(add); DRB(reg); SR(A); Fzac; 1794 1.1.1.2 christos 1795 1.1 christos } 1796 1.1 christos break; 1797 1.1 christos case 0x08: 1798 1.1 christos case 0x0a: 1799 1.1 christos case 0x0b: 1800 1.1 christos case 0x0c: 1801 1.1 christos case 0x0d: 1802 1.1 christos case 0x0e: 1803 1.1 christos case 0x0f: 1804 1.1 christos { 1805 1.1 christos /** 0110 0001 0000 1rba add %0, %1 */ 1806 1.1.1.5 christos #line 225 "rl78-decode.opc" 1807 1.1 christos int rba AU = op[1] & 0x07; 1808 1.1 christos if (trace) 1809 1.1 christos { 1810 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1811 1.1 christos "/** 0110 0001 0000 1rba add %0, %1 */", 1812 1.1 christos op[0], op[1]); 1813 1.1 christos printf (" rba = 0x%x\n", rba); 1814 1.1 christos } 1815 1.1 christos SYNTAX("add %0, %1"); 1816 1.1.1.5 christos #line 225 "rl78-decode.opc" 1817 1.1 christos ID(add); DR(A); SRB(rba); Fzac; 1818 1.1.1.2 christos 1819 1.1 christos } 1820 1.1 christos break; 1821 1.1 christos case 0x09: 1822 1.1 christos { 1823 1.1.1.2 christos /** 0110 0001 0000 1001 addw %0, %ea1 */ 1824 1.1 christos if (trace) 1825 1.1 christos { 1826 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1827 1.1.1.2 christos "/** 0110 0001 0000 1001 addw %0, %ea1 */", 1828 1.1 christos op[0], op[1]); 1829 1.1 christos } 1830 1.1.1.2 christos SYNTAX("addw %0, %ea1"); 1831 1.1.1.5 christos #line 274 "rl78-decode.opc" 1832 1.1 christos ID(add); W(); DR(AX); SM(HL, IMMU(1)); Fzac; 1833 1.1.1.2 christos 1834 1.1 christos } 1835 1.1 christos break; 1836 1.1 christos case 0x10: 1837 1.1 christos case 0x11: 1838 1.1 christos case 0x12: 1839 1.1 christos case 0x13: 1840 1.1 christos case 0x14: 1841 1.1 christos case 0x15: 1842 1.1 christos case 0x16: 1843 1.1 christos case 0x17: 1844 1.1 christos { 1845 1.1 christos /** 0110 0001 0001 0reg addc %0, %1 */ 1846 1.1.1.5 christos #line 260 "rl78-decode.opc" 1847 1.1 christos int reg AU = op[1] & 0x07; 1848 1.1 christos if (trace) 1849 1.1 christos { 1850 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1851 1.1 christos "/** 0110 0001 0001 0reg addc %0, %1 */", 1852 1.1 christos op[0], op[1]); 1853 1.1 christos printf (" reg = 0x%x\n", reg); 1854 1.1 christos } 1855 1.1 christos SYNTAX("addc %0, %1"); 1856 1.1.1.5 christos #line 260 "rl78-decode.opc" 1857 1.1 christos ID(addc); DRB(reg); SR(A); Fzac; 1858 1.1.1.2 christos 1859 1.1 christos } 1860 1.1 christos break; 1861 1.1 christos case 0x18: 1862 1.1 christos case 0x1a: 1863 1.1 christos case 0x1b: 1864 1.1 christos case 0x1c: 1865 1.1 christos case 0x1d: 1866 1.1 christos case 0x1e: 1867 1.1 christos case 0x1f: 1868 1.1 christos { 1869 1.1 christos /** 0110 0001 0001 1rba addc %0, %1 */ 1870 1.1.1.5 christos #line 257 "rl78-decode.opc" 1871 1.1 christos int rba AU = op[1] & 0x07; 1872 1.1 christos if (trace) 1873 1.1 christos { 1874 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1875 1.1 christos "/** 0110 0001 0001 1rba addc %0, %1 */", 1876 1.1 christos op[0], op[1]); 1877 1.1 christos printf (" rba = 0x%x\n", rba); 1878 1.1 christos } 1879 1.1 christos SYNTAX("addc %0, %1"); 1880 1.1.1.5 christos #line 257 "rl78-decode.opc" 1881 1.1 christos ID(addc); DR(A); SRB(rba); Fzac; 1882 1.1.1.2 christos 1883 1.1 christos } 1884 1.1 christos break; 1885 1.1 christos case 0x20: 1886 1.1 christos case 0x21: 1887 1.1 christos case 0x22: 1888 1.1 christos case 0x23: 1889 1.1 christos case 0x24: 1890 1.1 christos case 0x25: 1891 1.1 christos case 0x26: 1892 1.1 christos case 0x27: 1893 1.1 christos { 1894 1.1 christos /** 0110 0001 0010 0reg sub %0, %1 */ 1895 1.1.1.5 christos #line 1149 "rl78-decode.opc" 1896 1.1 christos int reg AU = op[1] & 0x07; 1897 1.1 christos if (trace) 1898 1.1 christos { 1899 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1900 1.1 christos "/** 0110 0001 0010 0reg sub %0, %1 */", 1901 1.1 christos op[0], op[1]); 1902 1.1 christos printf (" reg = 0x%x\n", reg); 1903 1.1 christos } 1904 1.1 christos SYNTAX("sub %0, %1"); 1905 1.1.1.5 christos #line 1149 "rl78-decode.opc" 1906 1.1 christos ID(sub); DRB(reg); SR(A); Fzac; 1907 1.1.1.2 christos 1908 1.1 christos } 1909 1.1 christos break; 1910 1.1 christos case 0x28: 1911 1.1 christos case 0x2a: 1912 1.1 christos case 0x2b: 1913 1.1 christos case 0x2c: 1914 1.1 christos case 0x2d: 1915 1.1 christos case 0x2e: 1916 1.1 christos case 0x2f: 1917 1.1 christos { 1918 1.1 christos /** 0110 0001 0010 1rba sub %0, %1 */ 1919 1.1.1.5 christos #line 1143 "rl78-decode.opc" 1920 1.1 christos int rba AU = op[1] & 0x07; 1921 1.1 christos if (trace) 1922 1.1 christos { 1923 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1924 1.1 christos "/** 0110 0001 0010 1rba sub %0, %1 */", 1925 1.1 christos op[0], op[1]); 1926 1.1 christos printf (" rba = 0x%x\n", rba); 1927 1.1 christos } 1928 1.1 christos SYNTAX("sub %0, %1"); 1929 1.1.1.5 christos #line 1143 "rl78-decode.opc" 1930 1.1 christos ID(sub); DR(A); SRB(rba); Fzac; 1931 1.1.1.2 christos 1932 1.1 christos } 1933 1.1 christos break; 1934 1.1 christos case 0x29: 1935 1.1 christos { 1936 1.1.1.2 christos /** 0110 0001 0010 1001 subw %0, %ea1 */ 1937 1.1 christos if (trace) 1938 1.1 christos { 1939 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1940 1.1.1.2 christos "/** 0110 0001 0010 1001 subw %0, %ea1 */", 1941 1.1 christos op[0], op[1]); 1942 1.1 christos } 1943 1.1.1.2 christos SYNTAX("subw %0, %ea1"); 1944 1.1.1.5 christos #line 1192 "rl78-decode.opc" 1945 1.1 christos ID(sub); W(); DR(AX); SM(HL, IMMU(1)); Fzac; 1946 1.1.1.2 christos 1947 1.1 christos } 1948 1.1 christos break; 1949 1.1 christos case 0x30: 1950 1.1 christos case 0x31: 1951 1.1 christos case 0x32: 1952 1.1 christos case 0x33: 1953 1.1 christos case 0x34: 1954 1.1 christos case 0x35: 1955 1.1 christos case 0x36: 1956 1.1 christos case 0x37: 1957 1.1 christos { 1958 1.1 christos /** 0110 0001 0011 0reg subc %0, %1 */ 1959 1.1.1.5 christos #line 1178 "rl78-decode.opc" 1960 1.1 christos int reg AU = op[1] & 0x07; 1961 1.1 christos if (trace) 1962 1.1 christos { 1963 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1964 1.1 christos "/** 0110 0001 0011 0reg subc %0, %1 */", 1965 1.1 christos op[0], op[1]); 1966 1.1 christos printf (" reg = 0x%x\n", reg); 1967 1.1 christos } 1968 1.1 christos SYNTAX("subc %0, %1"); 1969 1.1.1.5 christos #line 1178 "rl78-decode.opc" 1970 1.1 christos ID(subc); DRB(reg); SR(A); Fzac; 1971 1.1.1.2 christos 1972 1.1 christos } 1973 1.1 christos break; 1974 1.1 christos case 0x38: 1975 1.1 christos case 0x3a: 1976 1.1 christos case 0x3b: 1977 1.1 christos case 0x3c: 1978 1.1 christos case 0x3d: 1979 1.1 christos case 0x3e: 1980 1.1 christos case 0x3f: 1981 1.1 christos { 1982 1.1 christos /** 0110 0001 0011 1rba subc %0, %1 */ 1983 1.1.1.5 christos #line 1175 "rl78-decode.opc" 1984 1.1 christos int rba AU = op[1] & 0x07; 1985 1.1 christos if (trace) 1986 1.1 christos { 1987 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 1988 1.1 christos "/** 0110 0001 0011 1rba subc %0, %1 */", 1989 1.1 christos op[0], op[1]); 1990 1.1 christos printf (" rba = 0x%x\n", rba); 1991 1.1 christos } 1992 1.1 christos SYNTAX("subc %0, %1"); 1993 1.1.1.5 christos #line 1175 "rl78-decode.opc" 1994 1.1 christos ID(subc); DR(A); SRB(rba); Fzac; 1995 1.1.1.2 christos 1996 1.1 christos } 1997 1.1 christos break; 1998 1.1 christos case 0x40: 1999 1.1 christos case 0x41: 2000 1.1 christos case 0x42: 2001 1.1 christos case 0x43: 2002 1.1 christos case 0x44: 2003 1.1 christos case 0x45: 2004 1.1 christos case 0x46: 2005 1.1 christos case 0x47: 2006 1.1 christos { 2007 1.1 christos /** 0110 0001 0100 0reg cmp %0, %1 */ 2008 1.1.1.5 christos #line 513 "rl78-decode.opc" 2009 1.1 christos int reg AU = op[1] & 0x07; 2010 1.1 christos if (trace) 2011 1.1 christos { 2012 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2013 1.1 christos "/** 0110 0001 0100 0reg cmp %0, %1 */", 2014 1.1 christos op[0], op[1]); 2015 1.1 christos printf (" reg = 0x%x\n", reg); 2016 1.1 christos } 2017 1.1 christos SYNTAX("cmp %0, %1"); 2018 1.1.1.5 christos #line 513 "rl78-decode.opc" 2019 1.1 christos ID(cmp); DRB(reg); SR(A); Fzac; 2020 1.1.1.2 christos 2021 1.1 christos } 2022 1.1 christos break; 2023 1.1 christos case 0x48: 2024 1.1 christos case 0x4a: 2025 1.1 christos case 0x4b: 2026 1.1 christos case 0x4c: 2027 1.1 christos case 0x4d: 2028 1.1 christos case 0x4e: 2029 1.1 christos case 0x4f: 2030 1.1 christos { 2031 1.1 christos /** 0110 0001 0100 1rba cmp %0, %1 */ 2032 1.1.1.5 christos #line 510 "rl78-decode.opc" 2033 1.1 christos int rba AU = op[1] & 0x07; 2034 1.1 christos if (trace) 2035 1.1 christos { 2036 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2037 1.1 christos "/** 0110 0001 0100 1rba cmp %0, %1 */", 2038 1.1 christos op[0], op[1]); 2039 1.1 christos printf (" rba = 0x%x\n", rba); 2040 1.1 christos } 2041 1.1 christos SYNTAX("cmp %0, %1"); 2042 1.1.1.5 christos #line 510 "rl78-decode.opc" 2043 1.1 christos ID(cmp); DR(A); SRB(rba); Fzac; 2044 1.1.1.2 christos 2045 1.1 christos } 2046 1.1 christos break; 2047 1.1 christos case 0x49: 2048 1.1 christos { 2049 1.1.1.2 christos /** 0110 0001 0100 1001 cmpw %0, %ea1 */ 2050 1.1 christos if (trace) 2051 1.1 christos { 2052 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2053 1.1.1.2 christos "/** 0110 0001 0100 1001 cmpw %0, %ea1 */", 2054 1.1 christos op[0], op[1]); 2055 1.1 christos } 2056 1.1.1.2 christos SYNTAX("cmpw %0, %ea1"); 2057 1.1.1.5 christos #line 540 "rl78-decode.opc" 2058 1.1 christos ID(cmp); W(); DR(AX); SM(HL, IMMU(1)); Fzac; 2059 1.1.1.2 christos 2060 1.1 christos } 2061 1.1 christos break; 2062 1.1 christos case 0x50: 2063 1.1 christos case 0x51: 2064 1.1 christos case 0x52: 2065 1.1 christos case 0x53: 2066 1.1 christos case 0x54: 2067 1.1 christos case 0x55: 2068 1.1 christos case 0x56: 2069 1.1 christos case 0x57: 2070 1.1 christos { 2071 1.1 christos /** 0110 0001 0101 0reg and %0, %1 */ 2072 1.1.1.5 christos #line 312 "rl78-decode.opc" 2073 1.1 christos int reg AU = op[1] & 0x07; 2074 1.1 christos if (trace) 2075 1.1 christos { 2076 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2077 1.1 christos "/** 0110 0001 0101 0reg and %0, %1 */", 2078 1.1 christos op[0], op[1]); 2079 1.1 christos printf (" reg = 0x%x\n", reg); 2080 1.1 christos } 2081 1.1 christos SYNTAX("and %0, %1"); 2082 1.1.1.5 christos #line 312 "rl78-decode.opc" 2083 1.1 christos ID(and); DRB(reg); SR(A); Fz; 2084 1.1.1.2 christos 2085 1.1 christos } 2086 1.1 christos break; 2087 1.1 christos case 0x58: 2088 1.1 christos case 0x5a: 2089 1.1 christos case 0x5b: 2090 1.1 christos case 0x5c: 2091 1.1 christos case 0x5d: 2092 1.1 christos case 0x5e: 2093 1.1 christos case 0x5f: 2094 1.1 christos { 2095 1.1 christos /** 0110 0001 0101 1rba and %0, %1 */ 2096 1.1.1.5 christos #line 309 "rl78-decode.opc" 2097 1.1 christos int rba AU = op[1] & 0x07; 2098 1.1 christos if (trace) 2099 1.1 christos { 2100 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2101 1.1 christos "/** 0110 0001 0101 1rba and %0, %1 */", 2102 1.1 christos op[0], op[1]); 2103 1.1 christos printf (" rba = 0x%x\n", rba); 2104 1.1 christos } 2105 1.1 christos SYNTAX("and %0, %1"); 2106 1.1.1.5 christos #line 309 "rl78-decode.opc" 2107 1.1 christos ID(and); DR(A); SRB(rba); Fz; 2108 1.1.1.2 christos 2109 1.1 christos } 2110 1.1 christos break; 2111 1.1 christos case 0x59: 2112 1.1 christos { 2113 1.1.1.2 christos /** 0110 0001 0101 1001 inc %ea0 */ 2114 1.1 christos if (trace) 2115 1.1 christos { 2116 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2117 1.1.1.2 christos "/** 0110 0001 0101 1001 inc %ea0 */", 2118 1.1 christos op[0], op[1]); 2119 1.1 christos } 2120 1.1.1.2 christos SYNTAX("inc %ea0"); 2121 1.1.1.5 christos #line 590 "rl78-decode.opc" 2122 1.1 christos ID(add); DM(HL, IMMU(1)); SC(1); Fza; 2123 1.1.1.2 christos 2124 1.1 christos } 2125 1.1 christos break; 2126 1.1 christos case 0x60: 2127 1.1 christos case 0x61: 2128 1.1 christos case 0x62: 2129 1.1 christos case 0x63: 2130 1.1 christos case 0x64: 2131 1.1 christos case 0x65: 2132 1.1 christos case 0x66: 2133 1.1 christos case 0x67: 2134 1.1 christos { 2135 1.1 christos /** 0110 0001 0110 0reg or %0, %1 */ 2136 1.1.1.5 christos #line 967 "rl78-decode.opc" 2137 1.1 christos int reg AU = op[1] & 0x07; 2138 1.1 christos if (trace) 2139 1.1 christos { 2140 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2141 1.1 christos "/** 0110 0001 0110 0reg or %0, %1 */", 2142 1.1 christos op[0], op[1]); 2143 1.1 christos printf (" reg = 0x%x\n", reg); 2144 1.1 christos } 2145 1.1 christos SYNTAX("or %0, %1"); 2146 1.1.1.5 christos #line 967 "rl78-decode.opc" 2147 1.1 christos ID(or); DRB(reg); SR(A); Fz; 2148 1.1.1.2 christos 2149 1.1 christos } 2150 1.1 christos break; 2151 1.1 christos case 0x68: 2152 1.1 christos case 0x6a: 2153 1.1 christos case 0x6b: 2154 1.1 christos case 0x6c: 2155 1.1 christos case 0x6d: 2156 1.1 christos case 0x6e: 2157 1.1 christos case 0x6f: 2158 1.1 christos { 2159 1.1 christos /** 0110 0001 0110 1rba or %0, %1 */ 2160 1.1.1.5 christos #line 964 "rl78-decode.opc" 2161 1.1 christos int rba AU = op[1] & 0x07; 2162 1.1 christos if (trace) 2163 1.1 christos { 2164 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2165 1.1 christos "/** 0110 0001 0110 1rba or %0, %1 */", 2166 1.1 christos op[0], op[1]); 2167 1.1 christos printf (" rba = 0x%x\n", rba); 2168 1.1 christos } 2169 1.1 christos SYNTAX("or %0, %1"); 2170 1.1.1.5 christos #line 964 "rl78-decode.opc" 2171 1.1 christos ID(or); DR(A); SRB(rba); Fz; 2172 1.1.1.2 christos 2173 1.1 christos } 2174 1.1 christos break; 2175 1.1 christos case 0x69: 2176 1.1 christos { 2177 1.1.1.2 christos /** 0110 0001 0110 1001 dec %ea0 */ 2178 1.1 christos if (trace) 2179 1.1 christos { 2180 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2181 1.1.1.2 christos "/** 0110 0001 0110 1001 dec %ea0 */", 2182 1.1 christos op[0], op[1]); 2183 1.1 christos } 2184 1.1.1.2 christos SYNTAX("dec %ea0"); 2185 1.1.1.5 christos #line 557 "rl78-decode.opc" 2186 1.1 christos ID(sub); DM(HL, IMMU(1)); SC(1); Fza; 2187 1.1.1.2 christos 2188 1.1 christos } 2189 1.1 christos break; 2190 1.1 christos case 0x70: 2191 1.1 christos case 0x71: 2192 1.1 christos case 0x72: 2193 1.1 christos case 0x73: 2194 1.1 christos case 0x74: 2195 1.1 christos case 0x75: 2196 1.1 christos case 0x76: 2197 1.1 christos case 0x77: 2198 1.1 christos { 2199 1.1 christos /** 0110 0001 0111 0reg xor %0, %1 */ 2200 1.1.1.5 christos #line 1271 "rl78-decode.opc" 2201 1.1 christos int reg AU = op[1] & 0x07; 2202 1.1 christos if (trace) 2203 1.1 christos { 2204 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2205 1.1 christos "/** 0110 0001 0111 0reg xor %0, %1 */", 2206 1.1 christos op[0], op[1]); 2207 1.1 christos printf (" reg = 0x%x\n", reg); 2208 1.1 christos } 2209 1.1 christos SYNTAX("xor %0, %1"); 2210 1.1.1.5 christos #line 1271 "rl78-decode.opc" 2211 1.1 christos ID(xor); DRB(reg); SR(A); Fz; 2212 1.1.1.2 christos 2213 1.1 christos } 2214 1.1 christos break; 2215 1.1 christos case 0x78: 2216 1.1 christos case 0x7a: 2217 1.1 christos case 0x7b: 2218 1.1 christos case 0x7c: 2219 1.1 christos case 0x7d: 2220 1.1 christos case 0x7e: 2221 1.1 christos case 0x7f: 2222 1.1 christos { 2223 1.1 christos /** 0110 0001 0111 1rba xor %0, %1 */ 2224 1.1.1.5 christos #line 1268 "rl78-decode.opc" 2225 1.1 christos int rba AU = op[1] & 0x07; 2226 1.1 christos if (trace) 2227 1.1 christos { 2228 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2229 1.1 christos "/** 0110 0001 0111 1rba xor %0, %1 */", 2230 1.1 christos op[0], op[1]); 2231 1.1 christos printf (" rba = 0x%x\n", rba); 2232 1.1 christos } 2233 1.1 christos SYNTAX("xor %0, %1"); 2234 1.1.1.5 christos #line 1268 "rl78-decode.opc" 2235 1.1 christos ID(xor); DR(A); SRB(rba); Fz; 2236 1.1.1.2 christos 2237 1.1 christos } 2238 1.1 christos break; 2239 1.1 christos case 0x79: 2240 1.1 christos { 2241 1.1.1.2 christos /** 0110 0001 0111 1001 incw %ea0 */ 2242 1.1 christos if (trace) 2243 1.1 christos { 2244 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2245 1.1.1.2 christos "/** 0110 0001 0111 1001 incw %ea0 */", 2246 1.1 christos op[0], op[1]); 2247 1.1 christos } 2248 1.1.1.2 christos SYNTAX("incw %ea0"); 2249 1.1.1.5 christos #line 604 "rl78-decode.opc" 2250 1.1 christos ID(add); W(); DM(HL, IMMU(1)); SC(1); 2251 1.1.1.2 christos 2252 1.1 christos } 2253 1.1 christos break; 2254 1.1 christos case 0x80: 2255 1.1 christos case 0x81: 2256 1.1 christos { 2257 1.1.1.2 christos /** 0110 0001 1000 000 add %0, %e1 */ 2258 1.1 christos if (trace) 2259 1.1 christos { 2260 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2261 1.1.1.2 christos "/** 0110 0001 1000 000 add %0, %e1 */", 2262 1.1 christos op[0], op[1]); 2263 1.1 christos } 2264 1.1.1.2 christos SYNTAX("add %0, %e1"); 2265 1.1.1.5 christos #line 213 "rl78-decode.opc" 2266 1.1 christos ID(add); DR(A); SM2(HL, B, 0); Fzac; 2267 1.1.1.2 christos 2268 1.1 christos } 2269 1.1 christos break; 2270 1.1 christos case 0x82: 2271 1.1 christos { 2272 1.1.1.2 christos /** 0110 0001 1000 0010 add %0, %e1 */ 2273 1.1 christos if (trace) 2274 1.1 christos { 2275 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2276 1.1.1.2 christos "/** 0110 0001 1000 0010 add %0, %e1 */", 2277 1.1 christos op[0], op[1]); 2278 1.1 christos } 2279 1.1.1.2 christos SYNTAX("add %0, %e1"); 2280 1.1.1.5 christos #line 219 "rl78-decode.opc" 2281 1.1 christos ID(add); DR(A); SM2(HL, C, 0); Fzac; 2282 1.1.1.2 christos 2283 1.1 christos } 2284 1.1 christos break; 2285 1.1 christos case 0x84: 2286 1.1 christos case 0x85: 2287 1.1 christos case 0x86: 2288 1.1 christos case 0x87: 2289 1.1 christos case 0x94: 2290 1.1 christos case 0x95: 2291 1.1 christos case 0x96: 2292 1.1 christos case 0x97: 2293 1.1 christos case 0xa4: 2294 1.1 christos case 0xa5: 2295 1.1 christos case 0xa6: 2296 1.1 christos case 0xa7: 2297 1.1 christos case 0xb4: 2298 1.1 christos case 0xb5: 2299 1.1 christos case 0xb6: 2300 1.1 christos case 0xb7: 2301 1.1 christos case 0xc4: 2302 1.1 christos case 0xc5: 2303 1.1 christos case 0xc6: 2304 1.1 christos case 0xc7: 2305 1.1 christos case 0xd4: 2306 1.1 christos case 0xd5: 2307 1.1 christos case 0xd6: 2308 1.1 christos case 0xd7: 2309 1.1 christos case 0xe4: 2310 1.1 christos case 0xe5: 2311 1.1 christos case 0xe6: 2312 1.1 christos case 0xe7: 2313 1.1 christos case 0xf4: 2314 1.1 christos case 0xf5: 2315 1.1 christos case 0xf6: 2316 1.1 christos case 0xf7: 2317 1.1 christos { 2318 1.1 christos /** 0110 0001 1nnn 01mm callt [%x0] */ 2319 1.1.1.5 christos #line 439 "rl78-decode.opc" 2320 1.1 christos int nnn AU = (op[1] >> 4) & 0x07; 2321 1.1.1.5 christos #line 439 "rl78-decode.opc" 2322 1.1 christos int mm AU = op[1] & 0x03; 2323 1.1 christos if (trace) 2324 1.1 christos { 2325 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2326 1.1 christos "/** 0110 0001 1nnn 01mm callt [%x0] */", 2327 1.1 christos op[0], op[1]); 2328 1.1 christos printf (" nnn = 0x%x,", nnn); 2329 1.1 christos printf (" mm = 0x%x\n", mm); 2330 1.1 christos } 2331 1.1 christos SYNTAX("callt [%x0]"); 2332 1.1.1.5 christos #line 439 "rl78-decode.opc" 2333 1.1 christos ID(call); DM(None, 0x80 + mm*16 + nnn*2); 2334 1.1.1.2 christos 2335 1.1 christos /*----------------------------------------------------------------------*/ 2336 1.1.1.2 christos 2337 1.1 christos } 2338 1.1 christos break; 2339 1.1 christos case 0x88: 2340 1.1 christos case 0x8a: 2341 1.1 christos case 0x8b: 2342 1.1 christos case 0x8c: 2343 1.1 christos case 0x8d: 2344 1.1 christos case 0x8e: 2345 1.1 christos case 0x8f: 2346 1.1 christos { 2347 1.1 christos /** 0110 0001 1000 1reg xch %0, %1 */ 2348 1.1.1.5 christos #line 1230 "rl78-decode.opc" 2349 1.1 christos int reg AU = op[1] & 0x07; 2350 1.1 christos if (trace) 2351 1.1 christos { 2352 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2353 1.1 christos "/** 0110 0001 1000 1reg xch %0, %1 */", 2354 1.1 christos op[0], op[1]); 2355 1.1 christos printf (" reg = 0x%x\n", reg); 2356 1.1 christos } 2357 1.1 christos SYNTAX("xch %0, %1"); 2358 1.1.1.5 christos #line 1230 "rl78-decode.opc" 2359 1.1 christos /* Note: DECW uses reg == X, so this must follow DECW */ 2360 1.1 christos ID(xch); DR(A); SRB(reg); 2361 1.1.1.2 christos 2362 1.1 christos } 2363 1.1 christos break; 2364 1.1 christos case 0x89: 2365 1.1 christos { 2366 1.1.1.2 christos /** 0110 0001 1000 1001 decw %ea0 */ 2367 1.1 christos if (trace) 2368 1.1 christos { 2369 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2370 1.1.1.2 christos "/** 0110 0001 1000 1001 decw %ea0 */", 2371 1.1 christos op[0], op[1]); 2372 1.1 christos } 2373 1.1.1.2 christos SYNTAX("decw %ea0"); 2374 1.1.1.5 christos #line 571 "rl78-decode.opc" 2375 1.1 christos ID(sub); W(); DM(HL, IMMU(1)); SC(1); 2376 1.1.1.2 christos 2377 1.1 christos } 2378 1.1 christos break; 2379 1.1 christos case 0x90: 2380 1.1 christos { 2381 1.1.1.2 christos /** 0110 0001 1001 0000 addc %0, %e1 */ 2382 1.1 christos if (trace) 2383 1.1 christos { 2384 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2385 1.1.1.2 christos "/** 0110 0001 1001 0000 addc %0, %e1 */", 2386 1.1 christos op[0], op[1]); 2387 1.1 christos } 2388 1.1.1.2 christos SYNTAX("addc %0, %e1"); 2389 1.1.1.5 christos #line 245 "rl78-decode.opc" 2390 1.1 christos ID(addc); DR(A); SM2(HL, B, 0); Fzac; 2391 1.1.1.2 christos 2392 1.1 christos } 2393 1.1 christos break; 2394 1.1 christos case 0x92: 2395 1.1 christos { 2396 1.1.1.2 christos /** 0110 0001 1001 0010 addc %0, %e1 */ 2397 1.1 christos if (trace) 2398 1.1 christos { 2399 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2400 1.1.1.2 christos "/** 0110 0001 1001 0010 addc %0, %e1 */", 2401 1.1 christos op[0], op[1]); 2402 1.1 christos } 2403 1.1.1.2 christos SYNTAX("addc %0, %e1"); 2404 1.1.1.5 christos #line 248 "rl78-decode.opc" 2405 1.1 christos ID(addc); DR(A); SM2(HL, C, 0); Fzac; 2406 1.1.1.2 christos 2407 1.1 christos } 2408 1.1 christos break; 2409 1.1 christos case 0xa0: 2410 1.1 christos case 0xa1: 2411 1.1 christos { 2412 1.1.1.2 christos /** 0110 0001 1010 000 sub %0, %e1 */ 2413 1.1 christos if (trace) 2414 1.1 christos { 2415 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2416 1.1.1.2 christos "/** 0110 0001 1010 000 sub %0, %e1 */", 2417 1.1 christos op[0], op[1]); 2418 1.1 christos } 2419 1.1.1.2 christos SYNTAX("sub %0, %e1"); 2420 1.1.1.5 christos #line 1131 "rl78-decode.opc" 2421 1.1 christos ID(sub); DR(A); SM2(HL, B, 0); Fzac; 2422 1.1.1.2 christos 2423 1.1 christos } 2424 1.1 christos break; 2425 1.1 christos case 0xa2: 2426 1.1 christos { 2427 1.1.1.2 christos /** 0110 0001 1010 0010 sub %0, %e1 */ 2428 1.1 christos if (trace) 2429 1.1 christos { 2430 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2431 1.1.1.2 christos "/** 0110 0001 1010 0010 sub %0, %e1 */", 2432 1.1 christos op[0], op[1]); 2433 1.1 christos } 2434 1.1.1.2 christos SYNTAX("sub %0, %e1"); 2435 1.1.1.5 christos #line 1137 "rl78-decode.opc" 2436 1.1 christos ID(sub); DR(A); SM2(HL, C, 0); Fzac; 2437 1.1.1.2 christos 2438 1.1 christos } 2439 1.1 christos break; 2440 1.1 christos case 0xa8: 2441 1.1 christos { 2442 1.1 christos /** 0110 0001 1010 1000 xch %0, %1 */ 2443 1.1 christos if (trace) 2444 1.1 christos { 2445 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2446 1.1 christos "/** 0110 0001 1010 1000 xch %0, %1 */", 2447 1.1 christos op[0], op[1]); 2448 1.1 christos } 2449 1.1 christos SYNTAX("xch %0, %1"); 2450 1.1.1.5 christos #line 1234 "rl78-decode.opc" 2451 1.1 christos ID(xch); DR(A); SM(None, SADDR); 2452 1.1.1.2 christos 2453 1.1 christos } 2454 1.1 christos break; 2455 1.1 christos case 0xa9: 2456 1.1 christos { 2457 1.1.1.2 christos /** 0110 0001 1010 1001 xch %0, %e1 */ 2458 1.1 christos if (trace) 2459 1.1 christos { 2460 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2461 1.1.1.2 christos "/** 0110 0001 1010 1001 xch %0, %e1 */", 2462 1.1 christos op[0], op[1]); 2463 1.1 christos } 2464 1.1.1.2 christos SYNTAX("xch %0, %e1"); 2465 1.1.1.5 christos #line 1227 "rl78-decode.opc" 2466 1.1 christos ID(xch); DR(A); SM2(HL, C, 0); 2467 1.1.1.2 christos 2468 1.1 christos } 2469 1.1 christos break; 2470 1.1 christos case 0xaa: 2471 1.1 christos { 2472 1.1.1.2 christos /** 0110 0001 1010 1010 xch %0, %e!1 */ 2473 1.1 christos if (trace) 2474 1.1 christos { 2475 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2476 1.1.1.2 christos "/** 0110 0001 1010 1010 xch %0, %e!1 */", 2477 1.1 christos op[0], op[1]); 2478 1.1 christos } 2479 1.1.1.2 christos SYNTAX("xch %0, %e!1"); 2480 1.1.1.5 christos #line 1209 "rl78-decode.opc" 2481 1.1 christos ID(xch); DR(A); SM(None, IMMU(2)); 2482 1.1.1.2 christos 2483 1.1 christos } 2484 1.1 christos break; 2485 1.1 christos case 0xab: 2486 1.1 christos { 2487 1.1.1.2 christos /** 0110 0001 1010 1011 xch %0, %s1 */ 2488 1.1 christos if (trace) 2489 1.1 christos { 2490 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2491 1.1.1.3 christos "/** 0110 0001 1010 1011 xch %0, %s1 */", 2492 1.1 christos op[0], op[1]); 2493 1.1 christos } 2494 1.1.1.2 christos SYNTAX("xch %0, %s1"); 2495 1.1.1.5 christos #line 1237 "rl78-decode.opc" 2496 1.1 christos ID(xch); DR(A); SM(None, SFR); 2497 1.1.1.2 christos 2498 1.1 christos } 2499 1.1 christos break; 2500 1.1 christos case 0xac: 2501 1.1 christos { 2502 1.1.1.2 christos /** 0110 0001 1010 1100 xch %0, %e1 */ 2503 1.1 christos if (trace) 2504 1.1 christos { 2505 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2506 1.1.1.2 christos "/** 0110 0001 1010 1100 xch %0, %e1 */", 2507 1.1 christos op[0], op[1]); 2508 1.1 christos } 2509 1.1.1.2 christos SYNTAX("xch %0, %e1"); 2510 1.1.1.5 christos #line 1218 "rl78-decode.opc" 2511 1.1 christos ID(xch); DR(A); SM(HL, 0); 2512 1.1.1.2 christos 2513 1.1 christos } 2514 1.1 christos break; 2515 1.1 christos case 0xad: 2516 1.1 christos { 2517 1.1.1.2 christos /** 0110 0001 1010 1101 xch %0, %ea1 */ 2518 1.1 christos if (trace) 2519 1.1 christos { 2520 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2521 1.1.1.2 christos "/** 0110 0001 1010 1101 xch %0, %ea1 */", 2522 1.1 christos op[0], op[1]); 2523 1.1 christos } 2524 1.1.1.2 christos SYNTAX("xch %0, %ea1"); 2525 1.1.1.5 christos #line 1224 "rl78-decode.opc" 2526 1.1 christos ID(xch); DR(A); SM(HL, IMMU(1)); 2527 1.1.1.2 christos 2528 1.1 christos } 2529 1.1 christos break; 2530 1.1 christos case 0xae: 2531 1.1 christos { 2532 1.1.1.2 christos /** 0110 0001 1010 1110 xch %0, %e1 */ 2533 1.1 christos if (trace) 2534 1.1 christos { 2535 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2536 1.1.1.2 christos "/** 0110 0001 1010 1110 xch %0, %e1 */", 2537 1.1 christos op[0], op[1]); 2538 1.1 christos } 2539 1.1.1.2 christos SYNTAX("xch %0, %e1"); 2540 1.1.1.5 christos #line 1212 "rl78-decode.opc" 2541 1.1 christos ID(xch); DR(A); SM(DE, 0); 2542 1.1.1.2 christos 2543 1.1 christos } 2544 1.1 christos break; 2545 1.1 christos case 0xaf: 2546 1.1 christos { 2547 1.1.1.3 christos /** 0110 0001 1010 1111 xch %0, %ea1 */ 2548 1.1 christos if (trace) 2549 1.1 christos { 2550 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2551 1.1.1.3 christos "/** 0110 0001 1010 1111 xch %0, %ea1 */", 2552 1.1 christos op[0], op[1]); 2553 1.1 christos } 2554 1.1.1.2 christos SYNTAX("xch %0, %ea1"); 2555 1.1.1.5 christos #line 1215 "rl78-decode.opc" 2556 1.1 christos ID(xch); DR(A); SM(DE, IMMU(1)); 2557 1.1.1.2 christos 2558 1.1 christos } 2559 1.1 christos break; 2560 1.1 christos case 0xb0: 2561 1.1 christos { 2562 1.1.1.2 christos /** 0110 0001 1011 0000 subc %0, %e1 */ 2563 1.1 christos if (trace) 2564 1.1 christos { 2565 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2566 1.1.1.2 christos "/** 0110 0001 1011 0000 subc %0, %e1 */", 2567 1.1 christos op[0], op[1]); 2568 1.1 christos } 2569 1.1.1.2 christos SYNTAX("subc %0, %e1"); 2570 1.1.1.5 christos #line 1163 "rl78-decode.opc" 2571 1.1 christos ID(subc); DR(A); SM2(HL, B, 0); Fzac; 2572 1.1.1.2 christos 2573 1.1 christos } 2574 1.1 christos break; 2575 1.1 christos case 0xb2: 2576 1.1 christos { 2577 1.1.1.2 christos /** 0110 0001 1011 0010 subc %0, %e1 */ 2578 1.1 christos if (trace) 2579 1.1 christos { 2580 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2581 1.1.1.2 christos "/** 0110 0001 1011 0010 subc %0, %e1 */", 2582 1.1 christos op[0], op[1]); 2583 1.1 christos } 2584 1.1.1.2 christos SYNTAX("subc %0, %e1"); 2585 1.1.1.5 christos #line 1166 "rl78-decode.opc" 2586 1.1 christos ID(subc); DR(A); SM2(HL, C, 0); Fzac; 2587 1.1.1.2 christos 2588 1.1 christos } 2589 1.1 christos break; 2590 1.1 christos case 0xb8: 2591 1.1 christos { 2592 1.1 christos /** 0110 0001 1011 1000 mov %0, %1 */ 2593 1.1 christos if (trace) 2594 1.1 christos { 2595 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2596 1.1 christos "/** 0110 0001 1011 1000 mov %0, %1 */", 2597 1.1 christos op[0], op[1]); 2598 1.1 christos } 2599 1.1 christos SYNTAX("mov %0, %1"); 2600 1.1.1.5 christos #line 729 "rl78-decode.opc" 2601 1.1.1.2 christos ID(mov); DR(ES); SM(None, SADDR); 2602 1.1.1.2 christos 2603 1.1 christos } 2604 1.1 christos break; 2605 1.1 christos case 0xb9: 2606 1.1 christos { 2607 1.1.1.2 christos /** 0110 0001 1011 1001 xch %0, %e1 */ 2608 1.1 christos if (trace) 2609 1.1 christos { 2610 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2611 1.1.1.2 christos "/** 0110 0001 1011 1001 xch %0, %e1 */", 2612 1.1 christos op[0], op[1]); 2613 1.1 christos } 2614 1.1.1.2 christos SYNTAX("xch %0, %e1"); 2615 1.1.1.5 christos #line 1221 "rl78-decode.opc" 2616 1.1 christos ID(xch); DR(A); SM2(HL, B, 0); 2617 1.1.1.2 christos 2618 1.1 christos } 2619 1.1 christos break; 2620 1.1 christos case 0xc0: 2621 1.1 christos { 2622 1.1.1.2 christos /** 0110 0001 1100 0000 cmp %0, %e1 */ 2623 1.1 christos if (trace) 2624 1.1 christos { 2625 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2626 1.1.1.2 christos "/** 0110 0001 1100 0000 cmp %0, %e1 */", 2627 1.1 christos op[0], op[1]); 2628 1.1 christos } 2629 1.1.1.2 christos SYNTAX("cmp %0, %e1"); 2630 1.1.1.5 christos #line 498 "rl78-decode.opc" 2631 1.1 christos ID(cmp); DR(A); SM2(HL, B, 0); Fzac; 2632 1.1.1.2 christos 2633 1.1 christos } 2634 1.1 christos break; 2635 1.1 christos case 0xc2: 2636 1.1 christos { 2637 1.1.1.2 christos /** 0110 0001 1100 0010 cmp %0, %e1 */ 2638 1.1 christos if (trace) 2639 1.1 christos { 2640 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2641 1.1.1.2 christos "/** 0110 0001 1100 0010 cmp %0, %e1 */", 2642 1.1 christos op[0], op[1]); 2643 1.1 christos } 2644 1.1.1.2 christos SYNTAX("cmp %0, %e1"); 2645 1.1.1.5 christos #line 501 "rl78-decode.opc" 2646 1.1 christos ID(cmp); DR(A); SM2(HL, C, 0); Fzac; 2647 1.1.1.2 christos 2648 1.1 christos } 2649 1.1 christos break; 2650 1.1 christos case 0xc3: 2651 1.1 christos { 2652 1.1 christos /** 0110 0001 1100 0011 bh $%a0 */ 2653 1.1 christos if (trace) 2654 1.1 christos { 2655 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2656 1.1 christos "/** 0110 0001 1100 0011 bh $%a0 */", 2657 1.1 christos op[0], op[1]); 2658 1.1 christos } 2659 1.1 christos SYNTAX("bh $%a0"); 2660 1.1.1.5 christos #line 346 "rl78-decode.opc" 2661 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+3); SR(None); COND(H); 2662 1.1.1.2 christos 2663 1.1 christos } 2664 1.1 christos break; 2665 1.1 christos case 0xc8: 2666 1.1 christos { 2667 1.1 christos /** 0110 0001 1100 1000 sk%c1 */ 2668 1.1 christos if (trace) 2669 1.1 christos { 2670 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2671 1.1 christos "/** 0110 0001 1100 1000 sk%c1 */", 2672 1.1 christos op[0], op[1]); 2673 1.1 christos } 2674 1.1 christos SYNTAX("sk%c1"); 2675 1.1.1.5 christos #line 1100 "rl78-decode.opc" 2676 1.1 christos ID(skip); COND(C); 2677 1.1.1.2 christos 2678 1.1 christos } 2679 1.1 christos break; 2680 1.1 christos case 0xc9: 2681 1.1 christos { 2682 1.1.1.2 christos /** 0110 0001 1100 1001 mov %0, %e1 */ 2683 1.1 christos if (trace) 2684 1.1 christos { 2685 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2686 1.1.1.2 christos "/** 0110 0001 1100 1001 mov %0, %e1 */", 2687 1.1 christos op[0], op[1]); 2688 1.1 christos } 2689 1.1.1.2 christos SYNTAX("mov %0, %e1"); 2690 1.1.1.5 christos #line 666 "rl78-decode.opc" 2691 1.1 christos ID(mov); DR(A); SM2(HL, B, 0); 2692 1.1.1.2 christos 2693 1.1 christos } 2694 1.1 christos break; 2695 1.1 christos case 0xca: 2696 1.1 christos case 0xda: 2697 1.1 christos case 0xea: 2698 1.1 christos case 0xfa: 2699 1.1 christos { 2700 1.1 christos /** 0110 0001 11rg 1010 call %0 */ 2701 1.1.1.5 christos #line 436 "rl78-decode.opc" 2702 1.1 christos int rg AU = (op[1] >> 4) & 0x03; 2703 1.1 christos if (trace) 2704 1.1 christos { 2705 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2706 1.1 christos "/** 0110 0001 11rg 1010 call %0 */", 2707 1.1 christos op[0], op[1]); 2708 1.1 christos printf (" rg = 0x%x\n", rg); 2709 1.1 christos } 2710 1.1 christos SYNTAX("call %0"); 2711 1.1.1.5 christos #line 436 "rl78-decode.opc" 2712 1.1 christos ID(call); DRW(rg); 2713 1.1.1.2 christos 2714 1.1 christos } 2715 1.1 christos break; 2716 1.1 christos case 0xcb: 2717 1.1 christos { 2718 1.1 christos /** 0110 0001 1100 1011 br ax */ 2719 1.1 christos if (trace) 2720 1.1 christos { 2721 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2722 1.1 christos "/** 0110 0001 1100 1011 br ax */", 2723 1.1 christos op[0], op[1]); 2724 1.1 christos } 2725 1.1 christos SYNTAX("br ax"); 2726 1.1.1.5 christos #line 386 "rl78-decode.opc" 2727 1.1 christos ID(branch); DR(AX); 2728 1.1.1.2 christos 2729 1.1 christos /*----------------------------------------------------------------------*/ 2730 1.1.1.2 christos 2731 1.1 christos } 2732 1.1 christos break; 2733 1.1 christos case 0xcc: 2734 1.1 christos { 2735 1.1 christos /** 0110 0001 1100 1100 brk */ 2736 1.1 christos if (trace) 2737 1.1 christos { 2738 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2739 1.1 christos "/** 0110 0001 1100 1100 brk */", 2740 1.1 christos op[0], op[1]); 2741 1.1 christos } 2742 1.1 christos SYNTAX("brk"); 2743 1.1.1.5 christos #line 394 "rl78-decode.opc" 2744 1.1 christos ID(break); 2745 1.1.1.2 christos 2746 1.1 christos /*----------------------------------------------------------------------*/ 2747 1.1.1.2 christos 2748 1.1 christos } 2749 1.1 christos break; 2750 1.1 christos case 0xcd: 2751 1.1 christos { 2752 1.1 christos /** 0110 0001 1100 1101 pop %s0 */ 2753 1.1 christos if (trace) 2754 1.1 christos { 2755 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2756 1.1 christos "/** 0110 0001 1100 1101 pop %s0 */", 2757 1.1 christos op[0], op[1]); 2758 1.1 christos } 2759 1.1 christos SYNTAX("pop %s0"); 2760 1.1.1.5 christos #line 995 "rl78-decode.opc" 2761 1.1 christos ID(mov); W(); DR(PSW); SPOP(); 2762 1.1.1.2 christos 2763 1.1 christos /*----------------------------------------------------------------------*/ 2764 1.1.1.2 christos 2765 1.1 christos } 2766 1.1 christos break; 2767 1.1 christos case 0xce: 2768 1.1 christos { 2769 1.1.1.2 christos /** 0110 0001 1100 1110 movs %ea0, %1 */ 2770 1.1 christos if (trace) 2771 1.1 christos { 2772 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2773 1.1.1.2 christos "/** 0110 0001 1100 1110 movs %ea0, %1 */", 2774 1.1 christos op[0], op[1]); 2775 1.1 christos } 2776 1.1.1.2 christos SYNTAX("movs %ea0, %1"); 2777 1.1.1.5 christos #line 817 "rl78-decode.opc" 2778 1.1 christos ID(mov); DM(HL, IMMU(1)); SR(X); Fzc; 2779 1.1.1.2 christos 2780 1.1 christos /*----------------------------------------------------------------------*/ 2781 1.1.1.2 christos 2782 1.1 christos } 2783 1.1 christos break; 2784 1.1 christos case 0xcf: 2785 1.1 christos case 0xdf: 2786 1.1 christos case 0xef: 2787 1.1 christos case 0xff: 2788 1.1 christos { 2789 1.1 christos /** 0110 0001 11rb 1111 sel rb%1 */ 2790 1.1.1.5 christos #line 1047 "rl78-decode.opc" 2791 1.1 christos int rb AU = (op[1] >> 4) & 0x03; 2792 1.1 christos if (trace) 2793 1.1 christos { 2794 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2795 1.1 christos "/** 0110 0001 11rb 1111 sel rb%1 */", 2796 1.1 christos op[0], op[1]); 2797 1.1 christos printf (" rb = 0x%x\n", rb); 2798 1.1 christos } 2799 1.1 christos SYNTAX("sel rb%1"); 2800 1.1.1.5 christos #line 1047 "rl78-decode.opc" 2801 1.1 christos ID(sel); SC(rb); 2802 1.1.1.2 christos 2803 1.1 christos /*----------------------------------------------------------------------*/ 2804 1.1.1.2 christos 2805 1.1 christos } 2806 1.1 christos break; 2807 1.1 christos case 0xd0: 2808 1.1 christos { 2809 1.1.1.2 christos /** 0110 0001 1101 0000 and %0, %e1 */ 2810 1.1 christos if (trace) 2811 1.1 christos { 2812 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2813 1.1.1.2 christos "/** 0110 0001 1101 0000 and %0, %e1 */", 2814 1.1 christos op[0], op[1]); 2815 1.1 christos } 2816 1.1.1.2 christos SYNTAX("and %0, %e1"); 2817 1.1.1.5 christos #line 297 "rl78-decode.opc" 2818 1.1 christos ID(and); DR(A); SM2(HL, B, 0); Fz; 2819 1.1.1.2 christos 2820 1.1 christos } 2821 1.1 christos break; 2822 1.1 christos case 0xd2: 2823 1.1 christos { 2824 1.1.1.2 christos /** 0110 0001 1101 0010 and %0, %e1 */ 2825 1.1 christos if (trace) 2826 1.1 christos { 2827 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2828 1.1.1.2 christos "/** 0110 0001 1101 0010 and %0, %e1 */", 2829 1.1 christos op[0], op[1]); 2830 1.1 christos } 2831 1.1.1.2 christos SYNTAX("and %0, %e1"); 2832 1.1.1.5 christos #line 303 "rl78-decode.opc" 2833 1.1 christos ID(and); DR(A); SM2(HL, C, 0); Fz; 2834 1.1.1.2 christos 2835 1.1 christos } 2836 1.1 christos break; 2837 1.1 christos case 0xd3: 2838 1.1 christos { 2839 1.1 christos /** 0110 0001 1101 0011 bnh $%a0 */ 2840 1.1 christos if (trace) 2841 1.1 christos { 2842 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2843 1.1 christos "/** 0110 0001 1101 0011 bnh $%a0 */", 2844 1.1 christos op[0], op[1]); 2845 1.1 christos } 2846 1.1 christos SYNTAX("bnh $%a0"); 2847 1.1.1.5 christos #line 349 "rl78-decode.opc" 2848 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+3); SR(None); COND(NH); 2849 1.1.1.2 christos 2850 1.1 christos } 2851 1.1 christos break; 2852 1.1 christos case 0xd8: 2853 1.1 christos { 2854 1.1 christos /** 0110 0001 1101 1000 sk%c1 */ 2855 1.1 christos if (trace) 2856 1.1 christos { 2857 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2858 1.1 christos "/** 0110 0001 1101 1000 sk%c1 */", 2859 1.1 christos op[0], op[1]); 2860 1.1 christos } 2861 1.1 christos SYNTAX("sk%c1"); 2862 1.1.1.5 christos #line 1106 "rl78-decode.opc" 2863 1.1 christos ID(skip); COND(NC); 2864 1.1.1.2 christos 2865 1.1 christos } 2866 1.1 christos break; 2867 1.1 christos case 0xd9: 2868 1.1 christos { 2869 1.1.1.2 christos /** 0110 0001 1101 1001 mov %e0, %1 */ 2870 1.1 christos if (trace) 2871 1.1 christos { 2872 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2873 1.1.1.2 christos "/** 0110 0001 1101 1001 mov %e0, %1 */", 2874 1.1 christos op[0], op[1]); 2875 1.1 christos } 2876 1.1.1.2 christos SYNTAX("mov %e0, %1"); 2877 1.1.1.5 christos #line 633 "rl78-decode.opc" 2878 1.1 christos ID(mov); DM2(HL, B, 0); SR(A); 2879 1.1.1.2 christos 2880 1.1 christos } 2881 1.1 christos break; 2882 1.1 christos case 0xdb: 2883 1.1 christos { 2884 1.1 christos /** 0110 0001 1101 1011 ror %0, %1 */ 2885 1.1 christos if (trace) 2886 1.1 christos { 2887 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2888 1.1 christos "/** 0110 0001 1101 1011 ror %0, %1 */", 2889 1.1 christos op[0], op[1]); 2890 1.1 christos } 2891 1.1 christos SYNTAX("ror %0, %1"); 2892 1.1.1.5 christos #line 1028 "rl78-decode.opc" 2893 1.1 christos ID(ror); DR(A); SC(1); 2894 1.1.1.2 christos 2895 1.1 christos } 2896 1.1 christos break; 2897 1.1 christos case 0xdc: 2898 1.1 christos { 2899 1.1 christos /** 0110 0001 1101 1100 rolc %0, %1 */ 2900 1.1 christos if (trace) 2901 1.1 christos { 2902 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2903 1.1 christos "/** 0110 0001 1101 1100 rolc %0, %1 */", 2904 1.1 christos op[0], op[1]); 2905 1.1 christos } 2906 1.1 christos SYNTAX("rolc %0, %1"); 2907 1.1.1.5 christos #line 1022 "rl78-decode.opc" 2908 1.1 christos ID(rolc); DR(A); SC(1); 2909 1.1.1.2 christos 2910 1.1 christos } 2911 1.1 christos break; 2912 1.1 christos case 0xdd: 2913 1.1 christos { 2914 1.1 christos /** 0110 0001 1101 1101 push %s1 */ 2915 1.1 christos if (trace) 2916 1.1 christos { 2917 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2918 1.1 christos "/** 0110 0001 1101 1101 push %s1 */", 2919 1.1 christos op[0], op[1]); 2920 1.1 christos } 2921 1.1 christos SYNTAX("push %s1"); 2922 1.1.1.5 christos #line 1003 "rl78-decode.opc" 2923 1.1 christos ID(mov); W(); DPUSH(); SR(PSW); 2924 1.1.1.2 christos 2925 1.1 christos /*----------------------------------------------------------------------*/ 2926 1.1.1.2 christos 2927 1.1 christos } 2928 1.1 christos break; 2929 1.1 christos case 0xde: 2930 1.1 christos { 2931 1.1.1.2 christos /** 0110 0001 1101 1110 cmps %0, %ea1 */ 2932 1.1 christos if (trace) 2933 1.1 christos { 2934 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2935 1.1.1.2 christos "/** 0110 0001 1101 1110 cmps %0, %ea1 */", 2936 1.1 christos op[0], op[1]); 2937 1.1 christos } 2938 1.1.1.2 christos SYNTAX("cmps %0, %ea1"); 2939 1.1.1.5 christos #line 532 "rl78-decode.opc" 2940 1.1 christos ID(cmp); DR(X); SM(HL, IMMU(1)); Fzac; 2941 1.1.1.2 christos 2942 1.1 christos /*----------------------------------------------------------------------*/ 2943 1.1.1.2 christos 2944 1.1 christos } 2945 1.1 christos break; 2946 1.1 christos case 0xe0: 2947 1.1 christos { 2948 1.1.1.2 christos /** 0110 0001 1110 0000 or %0, %e1 */ 2949 1.1 christos if (trace) 2950 1.1 christos { 2951 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2952 1.1.1.2 christos "/** 0110 0001 1110 0000 or %0, %e1 */", 2953 1.1 christos op[0], op[1]); 2954 1.1 christos } 2955 1.1.1.2 christos SYNTAX("or %0, %e1"); 2956 1.1.1.5 christos #line 952 "rl78-decode.opc" 2957 1.1 christos ID(or); DR(A); SM2(HL, B, 0); Fz; 2958 1.1.1.2 christos 2959 1.1 christos } 2960 1.1 christos break; 2961 1.1 christos case 0xe2: 2962 1.1 christos { 2963 1.1.1.2 christos /** 0110 0001 1110 0010 or %0, %e1 */ 2964 1.1 christos if (trace) 2965 1.1 christos { 2966 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2967 1.1.1.2 christos "/** 0110 0001 1110 0010 or %0, %e1 */", 2968 1.1 christos op[0], op[1]); 2969 1.1 christos } 2970 1.1.1.2 christos SYNTAX("or %0, %e1"); 2971 1.1.1.5 christos #line 958 "rl78-decode.opc" 2972 1.1 christos ID(or); DR(A); SM2(HL, C, 0); Fz; 2973 1.1.1.2 christos 2974 1.1 christos } 2975 1.1 christos break; 2976 1.1 christos case 0xe3: 2977 1.1 christos { 2978 1.1 christos /** 0110 0001 1110 0011 sk%c1 */ 2979 1.1 christos if (trace) 2980 1.1 christos { 2981 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2982 1.1 christos "/** 0110 0001 1110 0011 sk%c1 */", 2983 1.1 christos op[0], op[1]); 2984 1.1 christos } 2985 1.1 christos SYNTAX("sk%c1"); 2986 1.1.1.5 christos #line 1103 "rl78-decode.opc" 2987 1.1 christos ID(skip); COND(H); 2988 1.1.1.2 christos 2989 1.1 christos } 2990 1.1 christos break; 2991 1.1 christos case 0xe8: 2992 1.1 christos { 2993 1.1 christos /** 0110 0001 1110 1000 sk%c1 */ 2994 1.1 christos if (trace) 2995 1.1 christos { 2996 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 2997 1.1 christos "/** 0110 0001 1110 1000 sk%c1 */", 2998 1.1 christos op[0], op[1]); 2999 1.1 christos } 3000 1.1 christos SYNTAX("sk%c1"); 3001 1.1.1.5 christos #line 1115 "rl78-decode.opc" 3002 1.1 christos ID(skip); COND(Z); 3003 1.1.1.2 christos 3004 1.1 christos /*----------------------------------------------------------------------*/ 3005 1.1.1.2 christos 3006 1.1 christos } 3007 1.1 christos break; 3008 1.1 christos case 0xe9: 3009 1.1 christos { 3010 1.1.1.2 christos /** 0110 0001 1110 1001 mov %0, %e1 */ 3011 1.1 christos if (trace) 3012 1.1 christos { 3013 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3014 1.1.1.2 christos "/** 0110 0001 1110 1001 mov %0, %e1 */", 3015 1.1 christos op[0], op[1]); 3016 1.1 christos } 3017 1.1.1.2 christos SYNTAX("mov %0, %e1"); 3018 1.1.1.5 christos #line 669 "rl78-decode.opc" 3019 1.1 christos ID(mov); DR(A); SM2(HL, C, 0); 3020 1.1.1.2 christos 3021 1.1 christos } 3022 1.1 christos break; 3023 1.1 christos case 0xeb: 3024 1.1 christos { 3025 1.1 christos /** 0110 0001 1110 1011 rol %0, %1 */ 3026 1.1 christos if (trace) 3027 1.1 christos { 3028 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3029 1.1 christos "/** 0110 0001 1110 1011 rol %0, %1 */", 3030 1.1 christos op[0], op[1]); 3031 1.1 christos } 3032 1.1 christos SYNTAX("rol %0, %1"); 3033 1.1.1.5 christos #line 1019 "rl78-decode.opc" 3034 1.1 christos ID(rol); DR(A); SC(1); 3035 1.1.1.2 christos 3036 1.1 christos } 3037 1.1 christos break; 3038 1.1 christos case 0xec: 3039 1.1 christos { 3040 1.1 christos /** 0110 0001 1110 1100 retb */ 3041 1.1 christos if (trace) 3042 1.1 christos { 3043 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3044 1.1 christos "/** 0110 0001 1110 1100 retb */", 3045 1.1 christos op[0], op[1]); 3046 1.1 christos } 3047 1.1 christos SYNTAX("retb"); 3048 1.1.1.5 christos #line 1014 "rl78-decode.opc" 3049 1.1 christos ID(reti); 3050 1.1.1.2 christos 3051 1.1 christos /*----------------------------------------------------------------------*/ 3052 1.1.1.2 christos 3053 1.1 christos } 3054 1.1 christos break; 3055 1.1 christos case 0xed: 3056 1.1 christos { 3057 1.1 christos /** 0110 0001 1110 1101 halt */ 3058 1.1 christos if (trace) 3059 1.1 christos { 3060 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3061 1.1 christos "/** 0110 0001 1110 1101 halt */", 3062 1.1 christos op[0], op[1]); 3063 1.1 christos } 3064 1.1 christos SYNTAX("halt"); 3065 1.1.1.5 christos #line 582 "rl78-decode.opc" 3066 1.1 christos ID(halt); 3067 1.1.1.2 christos 3068 1.1 christos /*----------------------------------------------------------------------*/ 3069 1.1.1.2 christos 3070 1.1 christos } 3071 1.1 christos break; 3072 1.1 christos case 0xee: 3073 1.1 christos case 0xfe: 3074 1.1 christos { 3075 1.1 christos /** 0110 0001 111r 1110 rolwc %0, %1 */ 3076 1.1.1.5 christos #line 1025 "rl78-decode.opc" 3077 1.1 christos int r AU = (op[1] >> 4) & 0x01; 3078 1.1 christos if (trace) 3079 1.1 christos { 3080 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3081 1.1 christos "/** 0110 0001 111r 1110 rolwc %0, %1 */", 3082 1.1 christos op[0], op[1]); 3083 1.1 christos printf (" r = 0x%x\n", r); 3084 1.1 christos } 3085 1.1 christos SYNTAX("rolwc %0, %1"); 3086 1.1.1.5 christos #line 1025 "rl78-decode.opc" 3087 1.1 christos ID(rolc); W(); DRW(r); SC(1); 3088 1.1.1.2 christos 3089 1.1 christos } 3090 1.1 christos break; 3091 1.1 christos case 0xf0: 3092 1.1 christos { 3093 1.1.1.2 christos /** 0110 0001 1111 0000 xor %0, %e1 */ 3094 1.1 christos if (trace) 3095 1.1 christos { 3096 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3097 1.1.1.2 christos "/** 0110 0001 1111 0000 xor %0, %e1 */", 3098 1.1 christos op[0], op[1]); 3099 1.1 christos } 3100 1.1.1.2 christos SYNTAX("xor %0, %e1"); 3101 1.1.1.5 christos #line 1256 "rl78-decode.opc" 3102 1.1 christos ID(xor); DR(A); SM2(HL, B, 0); Fz; 3103 1.1.1.2 christos 3104 1.1 christos } 3105 1.1 christos break; 3106 1.1 christos case 0xf2: 3107 1.1 christos { 3108 1.1.1.2 christos /** 0110 0001 1111 0010 xor %0, %e1 */ 3109 1.1 christos if (trace) 3110 1.1 christos { 3111 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3112 1.1.1.2 christos "/** 0110 0001 1111 0010 xor %0, %e1 */", 3113 1.1 christos op[0], op[1]); 3114 1.1 christos } 3115 1.1.1.2 christos SYNTAX("xor %0, %e1"); 3116 1.1.1.5 christos #line 1262 "rl78-decode.opc" 3117 1.1 christos ID(xor); DR(A); SM2(HL, C, 0); Fz; 3118 1.1.1.2 christos 3119 1.1 christos } 3120 1.1 christos break; 3121 1.1 christos case 0xf3: 3122 1.1 christos { 3123 1.1 christos /** 0110 0001 1111 0011 sk%c1 */ 3124 1.1 christos if (trace) 3125 1.1 christos { 3126 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3127 1.1 christos "/** 0110 0001 1111 0011 sk%c1 */", 3128 1.1 christos op[0], op[1]); 3129 1.1 christos } 3130 1.1 christos SYNTAX("sk%c1"); 3131 1.1.1.5 christos #line 1109 "rl78-decode.opc" 3132 1.1 christos ID(skip); COND(NH); 3133 1.1.1.2 christos 3134 1.1 christos } 3135 1.1 christos break; 3136 1.1 christos case 0xf8: 3137 1.1 christos { 3138 1.1 christos /** 0110 0001 1111 1000 sk%c1 */ 3139 1.1 christos if (trace) 3140 1.1 christos { 3141 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3142 1.1 christos "/** 0110 0001 1111 1000 sk%c1 */", 3143 1.1 christos op[0], op[1]); 3144 1.1 christos } 3145 1.1 christos SYNTAX("sk%c1"); 3146 1.1.1.5 christos #line 1112 "rl78-decode.opc" 3147 1.1 christos ID(skip); COND(NZ); 3148 1.1.1.2 christos 3149 1.1 christos } 3150 1.1 christos break; 3151 1.1 christos case 0xf9: 3152 1.1 christos { 3153 1.1.1.2 christos /** 0110 0001 1111 1001 mov %e0, %1 */ 3154 1.1 christos if (trace) 3155 1.1 christos { 3156 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3157 1.1.1.2 christos "/** 0110 0001 1111 1001 mov %e0, %1 */", 3158 1.1 christos op[0], op[1]); 3159 1.1 christos } 3160 1.1.1.2 christos SYNTAX("mov %e0, %1"); 3161 1.1.1.5 christos #line 642 "rl78-decode.opc" 3162 1.1 christos ID(mov); DM2(HL, C, 0); SR(A); 3163 1.1.1.2 christos 3164 1.1 christos } 3165 1.1 christos break; 3166 1.1 christos case 0xfb: 3167 1.1 christos { 3168 1.1 christos /** 0110 0001 1111 1011 rorc %0, %1 */ 3169 1.1 christos if (trace) 3170 1.1 christos { 3171 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3172 1.1 christos "/** 0110 0001 1111 1011 rorc %0, %1 */", 3173 1.1 christos op[0], op[1]); 3174 1.1 christos } 3175 1.1 christos SYNTAX("rorc %0, %1"); 3176 1.1.1.5 christos #line 1031 "rl78-decode.opc" 3177 1.1 christos ID(rorc); DR(A); SC(1); 3178 1.1.1.2 christos 3179 1.1 christos /*----------------------------------------------------------------------*/ 3180 1.1.1.2 christos 3181 1.1 christos /* Note that the branch insns need to be listed before the shift 3182 1.1 christos ones, as "shift count of zero" means "branch insn" */ 3183 1.1.1.2 christos 3184 1.1 christos } 3185 1.1 christos break; 3186 1.1 christos case 0xfc: 3187 1.1 christos { 3188 1.1 christos /** 0110 0001 1111 1100 reti */ 3189 1.1 christos if (trace) 3190 1.1 christos { 3191 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3192 1.1 christos "/** 0110 0001 1111 1100 reti */", 3193 1.1 christos op[0], op[1]); 3194 1.1 christos } 3195 1.1 christos SYNTAX("reti"); 3196 1.1.1.5 christos #line 1011 "rl78-decode.opc" 3197 1.1 christos ID(reti); 3198 1.1.1.2 christos 3199 1.1 christos } 3200 1.1 christos break; 3201 1.1 christos case 0xfd: 3202 1.1 christos { 3203 1.1.1.2 christos /** 0110 0001 1111 1101 stop */ 3204 1.1 christos if (trace) 3205 1.1 christos { 3206 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3207 1.1.1.2 christos "/** 0110 0001 1111 1101 stop */", 3208 1.1 christos op[0], op[1]); 3209 1.1 christos } 3210 1.1 christos SYNTAX("stop"); 3211 1.1.1.5 christos #line 1120 "rl78-decode.opc" 3212 1.1 christos ID(stop); 3213 1.1.1.2 christos 3214 1.1 christos /*----------------------------------------------------------------------*/ 3215 1.1.1.2 christos 3216 1.1 christos } 3217 1.1 christos break; 3218 1.1 christos default: UNSUPPORTED(); break; 3219 1.1 christos } 3220 1.1 christos break; 3221 1.1 christos case 0x68: 3222 1.1 christos { 3223 1.1.1.2 christos /** 0110 1000 movw %e0, %1 */ 3224 1.1 christos if (trace) 3225 1.1 christos { 3226 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3227 1.1.1.2 christos "/** 0110 1000 movw %e0, %1 */", 3228 1.1 christos op[0]); 3229 1.1 christos } 3230 1.1.1.2 christos SYNTAX("movw %e0, %1"); 3231 1.1.1.5 christos #line 880 "rl78-decode.opc" 3232 1.1 christos ID(mov); W(); DM(C, IMMU(2)); SR(AX); 3233 1.1.1.2 christos 3234 1.1 christos } 3235 1.1 christos break; 3236 1.1 christos case 0x69: 3237 1.1 christos { 3238 1.1.1.2 christos /** 0110 1001 movw %0, %e1 */ 3239 1.1 christos if (trace) 3240 1.1 christos { 3241 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3242 1.1.1.2 christos "/** 0110 1001 movw %0, %e1 */", 3243 1.1 christos op[0]); 3244 1.1 christos } 3245 1.1.1.2 christos SYNTAX("movw %0, %e1"); 3246 1.1.1.5 christos #line 871 "rl78-decode.opc" 3247 1.1 christos ID(mov); W(); DR(AX); SM(C, IMMU(2)); 3248 1.1.1.2 christos 3249 1.1 christos } 3250 1.1 christos break; 3251 1.1 christos case 0x6a: 3252 1.1 christos { 3253 1.1 christos /** 0110 1010 or %0, #%1 */ 3254 1.1 christos if (trace) 3255 1.1 christos { 3256 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3257 1.1 christos "/** 0110 1010 or %0, #%1 */", 3258 1.1 christos op[0]); 3259 1.1 christos } 3260 1.1 christos SYNTAX("or %0, #%1"); 3261 1.1.1.5 christos #line 973 "rl78-decode.opc" 3262 1.1 christos ID(or); DM(None, SADDR); SC(IMMU(1)); Fz; 3263 1.1.1.2 christos 3264 1.1 christos /*----------------------------------------------------------------------*/ 3265 1.1.1.2 christos 3266 1.1 christos } 3267 1.1 christos break; 3268 1.1 christos case 0x6b: 3269 1.1 christos { 3270 1.1 christos /** 0110 1011 or %0, %1 */ 3271 1.1 christos if (trace) 3272 1.1 christos { 3273 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3274 1.1 christos "/** 0110 1011 or %0, %1 */", 3275 1.1 christos op[0]); 3276 1.1 christos } 3277 1.1 christos SYNTAX("or %0, %1"); 3278 1.1.1.5 christos #line 970 "rl78-decode.opc" 3279 1.1 christos ID(or); DR(A); SM(None, SADDR); Fz; 3280 1.1.1.2 christos 3281 1.1 christos } 3282 1.1 christos break; 3283 1.1 christos case 0x6c: 3284 1.1 christos { 3285 1.1 christos /** 0110 1100 or %0, #%1 */ 3286 1.1 christos if (trace) 3287 1.1 christos { 3288 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3289 1.1 christos "/** 0110 1100 or %0, #%1 */", 3290 1.1 christos op[0]); 3291 1.1 christos } 3292 1.1 christos SYNTAX("or %0, #%1"); 3293 1.1.1.5 christos #line 961 "rl78-decode.opc" 3294 1.1 christos ID(or); DR(A); SC(IMMU(1)); Fz; 3295 1.1.1.2 christos 3296 1.1 christos } 3297 1.1 christos break; 3298 1.1 christos case 0x6d: 3299 1.1 christos { 3300 1.1.1.2 christos /** 0110 1101 or %0, %e1 */ 3301 1.1 christos if (trace) 3302 1.1 christos { 3303 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3304 1.1.1.2 christos "/** 0110 1101 or %0, %e1 */", 3305 1.1 christos op[0]); 3306 1.1 christos } 3307 1.1.1.2 christos SYNTAX("or %0, %e1"); 3308 1.1.1.5 christos #line 949 "rl78-decode.opc" 3309 1.1 christos ID(or); DR(A); SM(HL, 0); Fz; 3310 1.1.1.2 christos 3311 1.1 christos } 3312 1.1 christos break; 3313 1.1 christos case 0x6e: 3314 1.1 christos { 3315 1.1.1.2 christos /** 0110 1110 or %0, %ea1 */ 3316 1.1 christos if (trace) 3317 1.1 christos { 3318 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3319 1.1.1.2 christos "/** 0110 1110 or %0, %ea1 */", 3320 1.1 christos op[0]); 3321 1.1 christos } 3322 1.1.1.2 christos SYNTAX("or %0, %ea1"); 3323 1.1.1.5 christos #line 955 "rl78-decode.opc" 3324 1.1 christos ID(or); DR(A); SM(HL, IMMU(1)); Fz; 3325 1.1.1.2 christos 3326 1.1 christos } 3327 1.1 christos break; 3328 1.1 christos case 0x6f: 3329 1.1 christos { 3330 1.1.1.2 christos /** 0110 1111 or %0, %e!1 */ 3331 1.1 christos if (trace) 3332 1.1 christos { 3333 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3334 1.1.1.2 christos "/** 0110 1111 or %0, %e!1 */", 3335 1.1 christos op[0]); 3336 1.1 christos } 3337 1.1.1.2 christos SYNTAX("or %0, %e!1"); 3338 1.1.1.5 christos #line 946 "rl78-decode.opc" 3339 1.1 christos ID(or); DR(A); SM(None, IMMU(2)); Fz; 3340 1.1.1.2 christos 3341 1.1 christos } 3342 1.1 christos break; 3343 1.1 christos case 0x70: 3344 1.1 christos case 0x72: 3345 1.1 christos case 0x73: 3346 1.1 christos case 0x74: 3347 1.1 christos case 0x75: 3348 1.1 christos case 0x76: 3349 1.1 christos case 0x77: 3350 1.1 christos { 3351 1.1 christos /** 0111 0rba mov %0, %1 */ 3352 1.1.1.5 christos #line 702 "rl78-decode.opc" 3353 1.1 christos int rba AU = op[0] & 0x07; 3354 1.1 christos if (trace) 3355 1.1 christos { 3356 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 3357 1.1 christos "/** 0111 0rba mov %0, %1 */", 3358 1.1 christos op[0]); 3359 1.1 christos printf (" rba = 0x%x\n", rba); 3360 1.1 christos } 3361 1.1 christos SYNTAX("mov %0, %1"); 3362 1.1.1.5 christos #line 702 "rl78-decode.opc" 3363 1.1 christos ID(mov); DRB(rba); SR(A); 3364 1.1.1.2 christos 3365 1.1 christos } 3366 1.1 christos break; 3367 1.1 christos case 0x71: 3368 1.1 christos GETBYTE (); 3369 1.1 christos switch (op[1] & 0xff) 3370 1.1 christos { 3371 1.1 christos case 0x00: 3372 1.1 christos case 0x10: 3373 1.1 christos case 0x20: 3374 1.1 christos case 0x30: 3375 1.1 christos case 0x40: 3376 1.1 christos case 0x50: 3377 1.1 christos case 0x60: 3378 1.1 christos case 0x70: 3379 1.1 christos { 3380 1.1.1.2 christos /** 0111 0001 0bit 0000 set1 %e!0 */ 3381 1.1.1.5 christos #line 1052 "rl78-decode.opc" 3382 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3383 1.1 christos if (trace) 3384 1.1 christos { 3385 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3386 1.1.1.2 christos "/** 0111 0001 0bit 0000 set1 %e!0 */", 3387 1.1 christos op[0], op[1]); 3388 1.1 christos printf (" bit = 0x%x\n", bit); 3389 1.1 christos } 3390 1.1.1.2 christos SYNTAX("set1 %e!0"); 3391 1.1.1.5 christos #line 1052 "rl78-decode.opc" 3392 1.1 christos ID(mov); DM(None, IMMU(2)); DB(bit); SC(1); 3393 1.1.1.2 christos 3394 1.1 christos } 3395 1.1 christos break; 3396 1.1 christos case 0x01: 3397 1.1 christos case 0x11: 3398 1.1 christos case 0x21: 3399 1.1 christos case 0x31: 3400 1.1 christos case 0x41: 3401 1.1 christos case 0x51: 3402 1.1 christos case 0x61: 3403 1.1 christos case 0x71: 3404 1.1 christos { 3405 1.1 christos /** 0111 0001 0bit 0001 mov1 %0, cy */ 3406 1.1.1.5 christos #line 809 "rl78-decode.opc" 3407 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3408 1.1 christos if (trace) 3409 1.1 christos { 3410 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3411 1.1 christos "/** 0111 0001 0bit 0001 mov1 %0, cy */", 3412 1.1 christos op[0], op[1]); 3413 1.1 christos printf (" bit = 0x%x\n", bit); 3414 1.1 christos } 3415 1.1 christos SYNTAX("mov1 %0, cy"); 3416 1.1.1.5 christos #line 809 "rl78-decode.opc" 3417 1.1 christos ID(mov); DM(None, SADDR); DB(bit); SCY(); 3418 1.1.1.2 christos 3419 1.1 christos } 3420 1.1 christos break; 3421 1.1 christos case 0x02: 3422 1.1 christos case 0x12: 3423 1.1 christos case 0x22: 3424 1.1 christos case 0x32: 3425 1.1 christos case 0x42: 3426 1.1 christos case 0x52: 3427 1.1 christos case 0x62: 3428 1.1 christos case 0x72: 3429 1.1 christos { 3430 1.1 christos /** 0111 0001 0bit 0010 set1 %0 */ 3431 1.1.1.5 christos #line 1070 "rl78-decode.opc" 3432 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3433 1.1 christos if (trace) 3434 1.1 christos { 3435 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3436 1.1 christos "/** 0111 0001 0bit 0010 set1 %0 */", 3437 1.1 christos op[0], op[1]); 3438 1.1 christos printf (" bit = 0x%x\n", bit); 3439 1.1 christos } 3440 1.1 christos SYNTAX("set1 %0"); 3441 1.1.1.5 christos #line 1070 "rl78-decode.opc" 3442 1.1 christos ID(mov); DM(None, SADDR); DB(bit); SC(1); 3443 1.1.1.2 christos 3444 1.1 christos /*----------------------------------------------------------------------*/ 3445 1.1.1.2 christos 3446 1.1 christos } 3447 1.1 christos break; 3448 1.1 christos case 0x03: 3449 1.1 christos case 0x13: 3450 1.1 christos case 0x23: 3451 1.1 christos case 0x33: 3452 1.1 christos case 0x43: 3453 1.1 christos case 0x53: 3454 1.1 christos case 0x63: 3455 1.1 christos case 0x73: 3456 1.1 christos { 3457 1.1 christos /** 0111 0001 0bit 0011 clr1 %0 */ 3458 1.1.1.5 christos #line 462 "rl78-decode.opc" 3459 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3460 1.1 christos if (trace) 3461 1.1 christos { 3462 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3463 1.1 christos "/** 0111 0001 0bit 0011 clr1 %0 */", 3464 1.1 christos op[0], op[1]); 3465 1.1 christos printf (" bit = 0x%x\n", bit); 3466 1.1 christos } 3467 1.1 christos SYNTAX("clr1 %0"); 3468 1.1.1.5 christos #line 462 "rl78-decode.opc" 3469 1.1 christos ID(mov); DM(None, SADDR); DB(bit); SC(0); 3470 1.1.1.2 christos 3471 1.1 christos /*----------------------------------------------------------------------*/ 3472 1.1.1.2 christos 3473 1.1 christos } 3474 1.1 christos break; 3475 1.1 christos case 0x04: 3476 1.1 christos case 0x14: 3477 1.1 christos case 0x24: 3478 1.1 christos case 0x34: 3479 1.1 christos case 0x44: 3480 1.1 christos case 0x54: 3481 1.1 christos case 0x64: 3482 1.1 christos case 0x74: 3483 1.1 christos { 3484 1.1 christos /** 0111 0001 0bit 0100 mov1 cy, %1 */ 3485 1.1.1.5 christos #line 803 "rl78-decode.opc" 3486 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3487 1.1 christos if (trace) 3488 1.1 christos { 3489 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3490 1.1 christos "/** 0111 0001 0bit 0100 mov1 cy, %1 */", 3491 1.1 christos op[0], op[1]); 3492 1.1 christos printf (" bit = 0x%x\n", bit); 3493 1.1 christos } 3494 1.1 christos SYNTAX("mov1 cy, %1"); 3495 1.1.1.5 christos #line 803 "rl78-decode.opc" 3496 1.1 christos ID(mov); DCY(); SM(None, SADDR); SB(bit); 3497 1.1.1.2 christos 3498 1.1 christos } 3499 1.1 christos break; 3500 1.1 christos case 0x05: 3501 1.1 christos case 0x15: 3502 1.1 christos case 0x25: 3503 1.1 christos case 0x35: 3504 1.1 christos case 0x45: 3505 1.1 christos case 0x55: 3506 1.1 christos case 0x65: 3507 1.1 christos case 0x75: 3508 1.1 christos { 3509 1.1 christos /** 0111 0001 0bit 0101 and1 cy, %s1 */ 3510 1.1.1.5 christos #line 332 "rl78-decode.opc" 3511 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3512 1.1 christos if (trace) 3513 1.1 christos { 3514 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3515 1.1 christos "/** 0111 0001 0bit 0101 and1 cy, %s1 */", 3516 1.1 christos op[0], op[1]); 3517 1.1 christos printf (" bit = 0x%x\n", bit); 3518 1.1 christos } 3519 1.1 christos SYNTAX("and1 cy, %s1"); 3520 1.1.1.5 christos #line 332 "rl78-decode.opc" 3521 1.1 christos ID(and); DCY(); SM(None, SADDR); SB(bit); 3522 1.1.1.2 christos 3523 1.1 christos /*----------------------------------------------------------------------*/ 3524 1.1.1.2 christos 3525 1.1 christos /* Note that the branch insns need to be listed before the shift 3526 1.1 christos ones, as "shift count of zero" means "branch insn" */ 3527 1.1.1.2 christos 3528 1.1 christos } 3529 1.1 christos break; 3530 1.1 christos case 0x06: 3531 1.1 christos case 0x16: 3532 1.1 christos case 0x26: 3533 1.1 christos case 0x36: 3534 1.1 christos case 0x46: 3535 1.1 christos case 0x56: 3536 1.1 christos case 0x66: 3537 1.1 christos case 0x76: 3538 1.1 christos { 3539 1.1 christos /** 0111 0001 0bit 0110 or1 cy, %s1 */ 3540 1.1.1.5 christos #line 987 "rl78-decode.opc" 3541 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3542 1.1 christos if (trace) 3543 1.1 christos { 3544 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3545 1.1 christos "/** 0111 0001 0bit 0110 or1 cy, %s1 */", 3546 1.1 christos op[0], op[1]); 3547 1.1 christos printf (" bit = 0x%x\n", bit); 3548 1.1 christos } 3549 1.1 christos SYNTAX("or1 cy, %s1"); 3550 1.1.1.5 christos #line 987 "rl78-decode.opc" 3551 1.1 christos ID(or); DCY(); SM(None, SADDR); SB(bit); 3552 1.1.1.2 christos 3553 1.1 christos /*----------------------------------------------------------------------*/ 3554 1.1.1.2 christos 3555 1.1 christos } 3556 1.1 christos break; 3557 1.1 christos case 0x07: 3558 1.1 christos case 0x17: 3559 1.1 christos case 0x27: 3560 1.1 christos case 0x37: 3561 1.1 christos case 0x47: 3562 1.1 christos case 0x57: 3563 1.1 christos case 0x67: 3564 1.1 christos case 0x77: 3565 1.1 christos { 3566 1.1 christos /** 0111 0001 0bit 0111 xor1 cy, %s1 */ 3567 1.1.1.5 christos #line 1291 "rl78-decode.opc" 3568 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3569 1.1 christos if (trace) 3570 1.1 christos { 3571 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3572 1.1 christos "/** 0111 0001 0bit 0111 xor1 cy, %s1 */", 3573 1.1 christos op[0], op[1]); 3574 1.1 christos printf (" bit = 0x%x\n", bit); 3575 1.1 christos } 3576 1.1 christos SYNTAX("xor1 cy, %s1"); 3577 1.1.1.5 christos #line 1291 "rl78-decode.opc" 3578 1.1 christos ID(xor); DCY(); SM(None, SADDR); SB(bit); 3579 1.1.1.2 christos 3580 1.1 christos /*----------------------------------------------------------------------*/ 3581 1.1.1.2 christos 3582 1.1 christos } 3583 1.1 christos break; 3584 1.1 christos case 0x08: 3585 1.1 christos case 0x18: 3586 1.1 christos case 0x28: 3587 1.1 christos case 0x38: 3588 1.1 christos case 0x48: 3589 1.1 christos case 0x58: 3590 1.1 christos case 0x68: 3591 1.1 christos case 0x78: 3592 1.1 christos { 3593 1.1.1.2 christos /** 0111 0001 0bit 1000 clr1 %e!0 */ 3594 1.1.1.5 christos #line 444 "rl78-decode.opc" 3595 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3596 1.1 christos if (trace) 3597 1.1 christos { 3598 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3599 1.1.1.2 christos "/** 0111 0001 0bit 1000 clr1 %e!0 */", 3600 1.1 christos op[0], op[1]); 3601 1.1 christos printf (" bit = 0x%x\n", bit); 3602 1.1 christos } 3603 1.1.1.2 christos SYNTAX("clr1 %e!0"); 3604 1.1.1.5 christos #line 444 "rl78-decode.opc" 3605 1.1 christos ID(mov); DM(None, IMMU(2)); DB(bit); SC(0); 3606 1.1.1.2 christos 3607 1.1 christos } 3608 1.1 christos break; 3609 1.1 christos case 0x09: 3610 1.1 christos case 0x19: 3611 1.1 christos case 0x29: 3612 1.1 christos case 0x39: 3613 1.1 christos case 0x49: 3614 1.1 christos case 0x59: 3615 1.1 christos case 0x69: 3616 1.1 christos case 0x79: 3617 1.1 christos { 3618 1.1 christos /** 0111 0001 0bit 1001 mov1 %s0, cy */ 3619 1.1.1.5 christos #line 812 "rl78-decode.opc" 3620 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3621 1.1 christos if (trace) 3622 1.1 christos { 3623 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3624 1.1 christos "/** 0111 0001 0bit 1001 mov1 %s0, cy */", 3625 1.1 christos op[0], op[1]); 3626 1.1 christos printf (" bit = 0x%x\n", bit); 3627 1.1 christos } 3628 1.1 christos SYNTAX("mov1 %s0, cy"); 3629 1.1.1.5 christos #line 812 "rl78-decode.opc" 3630 1.1 christos ID(mov); DM(None, SFR); DB(bit); SCY(); 3631 1.1.1.2 christos 3632 1.1 christos /*----------------------------------------------------------------------*/ 3633 1.1.1.2 christos 3634 1.1 christos } 3635 1.1 christos break; 3636 1.1 christos case 0x0a: 3637 1.1 christos case 0x1a: 3638 1.1 christos case 0x2a: 3639 1.1 christos case 0x3a: 3640 1.1 christos case 0x4a: 3641 1.1 christos case 0x5a: 3642 1.1 christos case 0x6a: 3643 1.1 christos case 0x7a: 3644 1.1 christos { 3645 1.1 christos /** 0111 0001 0bit 1010 set1 %s0 */ 3646 1.1.1.5 christos #line 1064 "rl78-decode.opc" 3647 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3648 1.1 christos if (trace) 3649 1.1 christos { 3650 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3651 1.1 christos "/** 0111 0001 0bit 1010 set1 %s0 */", 3652 1.1 christos op[0], op[1]); 3653 1.1 christos printf (" bit = 0x%x\n", bit); 3654 1.1 christos } 3655 1.1 christos SYNTAX("set1 %s0"); 3656 1.1.1.5 christos #line 1064 "rl78-decode.opc" 3657 1.1 christos op0 = SFR; 3658 1.1 christos ID(mov); DM(None, op0); DB(bit); SC(1); 3659 1.1 christos if (op0 == RL78_SFR_PSW && bit == 7) 3660 1.1 christos rl78->syntax = "ei"; 3661 1.1.1.2 christos 3662 1.1 christos } 3663 1.1 christos break; 3664 1.1 christos case 0x0b: 3665 1.1 christos case 0x1b: 3666 1.1 christos case 0x2b: 3667 1.1 christos case 0x3b: 3668 1.1 christos case 0x4b: 3669 1.1 christos case 0x5b: 3670 1.1 christos case 0x6b: 3671 1.1 christos case 0x7b: 3672 1.1 christos { 3673 1.1 christos /** 0111 0001 0bit 1011 clr1 %s0 */ 3674 1.1.1.5 christos #line 456 "rl78-decode.opc" 3675 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3676 1.1 christos if (trace) 3677 1.1 christos { 3678 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3679 1.1 christos "/** 0111 0001 0bit 1011 clr1 %s0 */", 3680 1.1 christos op[0], op[1]); 3681 1.1 christos printf (" bit = 0x%x\n", bit); 3682 1.1 christos } 3683 1.1 christos SYNTAX("clr1 %s0"); 3684 1.1.1.5 christos #line 456 "rl78-decode.opc" 3685 1.1 christos op0 = SFR; 3686 1.1 christos ID(mov); DM(None, op0); DB(bit); SC(0); 3687 1.1 christos if (op0 == RL78_SFR_PSW && bit == 7) 3688 1.1 christos rl78->syntax = "di"; 3689 1.1.1.2 christos 3690 1.1 christos } 3691 1.1 christos break; 3692 1.1 christos case 0x0c: 3693 1.1 christos case 0x1c: 3694 1.1 christos case 0x2c: 3695 1.1 christos case 0x3c: 3696 1.1 christos case 0x4c: 3697 1.1 christos case 0x5c: 3698 1.1 christos case 0x6c: 3699 1.1 christos case 0x7c: 3700 1.1 christos { 3701 1.1 christos /** 0111 0001 0bit 1100 mov1 cy, %s1 */ 3702 1.1.1.5 christos #line 806 "rl78-decode.opc" 3703 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3704 1.1 christos if (trace) 3705 1.1 christos { 3706 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3707 1.1 christos "/** 0111 0001 0bit 1100 mov1 cy, %s1 */", 3708 1.1 christos op[0], op[1]); 3709 1.1 christos printf (" bit = 0x%x\n", bit); 3710 1.1 christos } 3711 1.1 christos SYNTAX("mov1 cy, %s1"); 3712 1.1.1.5 christos #line 806 "rl78-decode.opc" 3713 1.1 christos ID(mov); DCY(); SM(None, SFR); SB(bit); 3714 1.1.1.2 christos 3715 1.1 christos } 3716 1.1 christos break; 3717 1.1 christos case 0x0d: 3718 1.1 christos case 0x1d: 3719 1.1 christos case 0x2d: 3720 1.1 christos case 0x3d: 3721 1.1 christos case 0x4d: 3722 1.1 christos case 0x5d: 3723 1.1 christos case 0x6d: 3724 1.1 christos case 0x7d: 3725 1.1 christos { 3726 1.1 christos /** 0111 0001 0bit 1101 and1 cy, %s1 */ 3727 1.1.1.5 christos #line 329 "rl78-decode.opc" 3728 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3729 1.1 christos if (trace) 3730 1.1 christos { 3731 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3732 1.1 christos "/** 0111 0001 0bit 1101 and1 cy, %s1 */", 3733 1.1 christos op[0], op[1]); 3734 1.1 christos printf (" bit = 0x%x\n", bit); 3735 1.1 christos } 3736 1.1 christos SYNTAX("and1 cy, %s1"); 3737 1.1.1.5 christos #line 329 "rl78-decode.opc" 3738 1.1 christos ID(and); DCY(); SM(None, SFR); SB(bit); 3739 1.1.1.2 christos 3740 1.1 christos } 3741 1.1 christos break; 3742 1.1 christos case 0x0e: 3743 1.1 christos case 0x1e: 3744 1.1 christos case 0x2e: 3745 1.1 christos case 0x3e: 3746 1.1 christos case 0x4e: 3747 1.1 christos case 0x5e: 3748 1.1 christos case 0x6e: 3749 1.1 christos case 0x7e: 3750 1.1 christos { 3751 1.1 christos /** 0111 0001 0bit 1110 or1 cy, %s1 */ 3752 1.1.1.5 christos #line 984 "rl78-decode.opc" 3753 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3754 1.1 christos if (trace) 3755 1.1 christos { 3756 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3757 1.1 christos "/** 0111 0001 0bit 1110 or1 cy, %s1 */", 3758 1.1 christos op[0], op[1]); 3759 1.1 christos printf (" bit = 0x%x\n", bit); 3760 1.1 christos } 3761 1.1 christos SYNTAX("or1 cy, %s1"); 3762 1.1.1.5 christos #line 984 "rl78-decode.opc" 3763 1.1 christos ID(or); DCY(); SM(None, SFR); SB(bit); 3764 1.1.1.2 christos 3765 1.1 christos } 3766 1.1 christos break; 3767 1.1 christos case 0x0f: 3768 1.1 christos case 0x1f: 3769 1.1 christos case 0x2f: 3770 1.1 christos case 0x3f: 3771 1.1 christos case 0x4f: 3772 1.1 christos case 0x5f: 3773 1.1 christos case 0x6f: 3774 1.1 christos case 0x7f: 3775 1.1 christos { 3776 1.1 christos /** 0111 0001 0bit 1111 xor1 cy, %s1 */ 3777 1.1.1.5 christos #line 1288 "rl78-decode.opc" 3778 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3779 1.1 christos if (trace) 3780 1.1 christos { 3781 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3782 1.1 christos "/** 0111 0001 0bit 1111 xor1 cy, %s1 */", 3783 1.1 christos op[0], op[1]); 3784 1.1 christos printf (" bit = 0x%x\n", bit); 3785 1.1 christos } 3786 1.1 christos SYNTAX("xor1 cy, %s1"); 3787 1.1.1.5 christos #line 1288 "rl78-decode.opc" 3788 1.1 christos ID(xor); DCY(); SM(None, SFR); SB(bit); 3789 1.1.1.2 christos 3790 1.1 christos } 3791 1.1 christos break; 3792 1.1 christos case 0x80: 3793 1.1 christos { 3794 1.1 christos /** 0111 0001 1000 0000 set1 cy */ 3795 1.1 christos if (trace) 3796 1.1 christos { 3797 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3798 1.1 christos "/** 0111 0001 1000 0000 set1 cy */", 3799 1.1 christos op[0], op[1]); 3800 1.1 christos } 3801 1.1 christos SYNTAX("set1 cy"); 3802 1.1.1.5 christos #line 1061 "rl78-decode.opc" 3803 1.1 christos ID(mov); DCY(); SC(1); 3804 1.1.1.2 christos 3805 1.1 christos } 3806 1.1 christos break; 3807 1.1 christos case 0x81: 3808 1.1 christos case 0x91: 3809 1.1 christos case 0xa1: 3810 1.1 christos case 0xb1: 3811 1.1 christos case 0xc1: 3812 1.1 christos case 0xd1: 3813 1.1 christos case 0xe1: 3814 1.1 christos case 0xf1: 3815 1.1 christos { 3816 1.1.1.2 christos /** 0111 0001 1bit 0001 mov1 %e0, cy */ 3817 1.1.1.5 christos #line 791 "rl78-decode.opc" 3818 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3819 1.1 christos if (trace) 3820 1.1 christos { 3821 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3822 1.1.1.2 christos "/** 0111 0001 1bit 0001 mov1 %e0, cy */", 3823 1.1 christos op[0], op[1]); 3824 1.1 christos printf (" bit = 0x%x\n", bit); 3825 1.1 christos } 3826 1.1.1.2 christos SYNTAX("mov1 %e0, cy"); 3827 1.1.1.5 christos #line 791 "rl78-decode.opc" 3828 1.1 christos ID(mov); DM(HL, 0); DB(bit); SCY(); 3829 1.1.1.2 christos 3830 1.1 christos } 3831 1.1 christos break; 3832 1.1 christos case 0x82: 3833 1.1 christos case 0x92: 3834 1.1 christos case 0xa2: 3835 1.1 christos case 0xb2: 3836 1.1 christos case 0xc2: 3837 1.1 christos case 0xd2: 3838 1.1 christos case 0xe2: 3839 1.1 christos case 0xf2: 3840 1.1 christos { 3841 1.1.1.2 christos /** 0111 0001 1bit 0010 set1 %e0 */ 3842 1.1.1.5 christos #line 1055 "rl78-decode.opc" 3843 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3844 1.1 christos if (trace) 3845 1.1 christos { 3846 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3847 1.1.1.2 christos "/** 0111 0001 1bit 0010 set1 %e0 */", 3848 1.1 christos op[0], op[1]); 3849 1.1 christos printf (" bit = 0x%x\n", bit); 3850 1.1 christos } 3851 1.1.1.2 christos SYNTAX("set1 %e0"); 3852 1.1.1.5 christos #line 1055 "rl78-decode.opc" 3853 1.1 christos ID(mov); DM(HL, 0); DB(bit); SC(1); 3854 1.1.1.2 christos 3855 1.1 christos } 3856 1.1 christos break; 3857 1.1 christos case 0x83: 3858 1.1 christos case 0x93: 3859 1.1 christos case 0xa3: 3860 1.1 christos case 0xb3: 3861 1.1 christos case 0xc3: 3862 1.1 christos case 0xd3: 3863 1.1 christos case 0xe3: 3864 1.1 christos case 0xf3: 3865 1.1 christos { 3866 1.1.1.2 christos /** 0111 0001 1bit 0011 clr1 %e0 */ 3867 1.1.1.5 christos #line 447 "rl78-decode.opc" 3868 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3869 1.1 christos if (trace) 3870 1.1 christos { 3871 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3872 1.1.1.2 christos "/** 0111 0001 1bit 0011 clr1 %e0 */", 3873 1.1 christos op[0], op[1]); 3874 1.1 christos printf (" bit = 0x%x\n", bit); 3875 1.1 christos } 3876 1.1.1.2 christos SYNTAX("clr1 %e0"); 3877 1.1.1.5 christos #line 447 "rl78-decode.opc" 3878 1.1 christos ID(mov); DM(HL, 0); DB(bit); SC(0); 3879 1.1.1.2 christos 3880 1.1 christos } 3881 1.1 christos break; 3882 1.1 christos case 0x84: 3883 1.1 christos case 0x94: 3884 1.1 christos case 0xa4: 3885 1.1 christos case 0xb4: 3886 1.1 christos case 0xc4: 3887 1.1 christos case 0xd4: 3888 1.1 christos case 0xe4: 3889 1.1 christos case 0xf4: 3890 1.1 christos { 3891 1.1.1.2 christos /** 0111 0001 1bit 0100 mov1 cy, %e1 */ 3892 1.1.1.5 christos #line 797 "rl78-decode.opc" 3893 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3894 1.1 christos if (trace) 3895 1.1 christos { 3896 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3897 1.1.1.2 christos "/** 0111 0001 1bit 0100 mov1 cy, %e1 */", 3898 1.1 christos op[0], op[1]); 3899 1.1 christos printf (" bit = 0x%x\n", bit); 3900 1.1 christos } 3901 1.1.1.2 christos SYNTAX("mov1 cy, %e1"); 3902 1.1.1.5 christos #line 797 "rl78-decode.opc" 3903 1.1 christos ID(mov); DCY(); SM(HL, 0); SB(bit); 3904 1.1.1.2 christos 3905 1.1 christos } 3906 1.1 christos break; 3907 1.1 christos case 0x85: 3908 1.1 christos case 0x95: 3909 1.1 christos case 0xa5: 3910 1.1 christos case 0xb5: 3911 1.1 christos case 0xc5: 3912 1.1 christos case 0xd5: 3913 1.1 christos case 0xe5: 3914 1.1 christos case 0xf5: 3915 1.1 christos { 3916 1.1.1.2 christos /** 0111 0001 1bit 0101 and1 cy, %e1 */ 3917 1.1.1.5 christos #line 323 "rl78-decode.opc" 3918 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3919 1.1 christos if (trace) 3920 1.1 christos { 3921 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3922 1.1.1.2 christos "/** 0111 0001 1bit 0101 and1 cy, %e1 */", 3923 1.1 christos op[0], op[1]); 3924 1.1 christos printf (" bit = 0x%x\n", bit); 3925 1.1 christos } 3926 1.1.1.2 christos SYNTAX("and1 cy, %e1"); 3927 1.1.1.5 christos #line 323 "rl78-decode.opc" 3928 1.1 christos ID(and); DCY(); SM(HL, 0); SB(bit); 3929 1.1.1.2 christos 3930 1.1 christos } 3931 1.1 christos break; 3932 1.1 christos case 0x86: 3933 1.1 christos case 0x96: 3934 1.1 christos case 0xa6: 3935 1.1 christos case 0xb6: 3936 1.1 christos case 0xc6: 3937 1.1 christos case 0xd6: 3938 1.1 christos case 0xe6: 3939 1.1 christos case 0xf6: 3940 1.1 christos { 3941 1.1.1.2 christos /** 0111 0001 1bit 0110 or1 cy, %e1 */ 3942 1.1.1.5 christos #line 978 "rl78-decode.opc" 3943 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3944 1.1 christos if (trace) 3945 1.1 christos { 3946 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3947 1.1.1.2 christos "/** 0111 0001 1bit 0110 or1 cy, %e1 */", 3948 1.1 christos op[0], op[1]); 3949 1.1 christos printf (" bit = 0x%x\n", bit); 3950 1.1 christos } 3951 1.1.1.2 christos SYNTAX("or1 cy, %e1"); 3952 1.1.1.5 christos #line 978 "rl78-decode.opc" 3953 1.1 christos ID(or); DCY(); SM(HL, 0); SB(bit); 3954 1.1.1.2 christos 3955 1.1 christos } 3956 1.1 christos break; 3957 1.1 christos case 0x87: 3958 1.1 christos case 0x97: 3959 1.1 christos case 0xa7: 3960 1.1 christos case 0xb7: 3961 1.1 christos case 0xc7: 3962 1.1 christos case 0xd7: 3963 1.1 christos case 0xe7: 3964 1.1 christos case 0xf7: 3965 1.1 christos { 3966 1.1.1.2 christos /** 0111 0001 1bit 0111 xor1 cy, %e1 */ 3967 1.1.1.5 christos #line 1282 "rl78-decode.opc" 3968 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 3969 1.1 christos if (trace) 3970 1.1 christos { 3971 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3972 1.1.1.2 christos "/** 0111 0001 1bit 0111 xor1 cy, %e1 */", 3973 1.1 christos op[0], op[1]); 3974 1.1 christos printf (" bit = 0x%x\n", bit); 3975 1.1 christos } 3976 1.1.1.2 christos SYNTAX("xor1 cy, %e1"); 3977 1.1.1.5 christos #line 1282 "rl78-decode.opc" 3978 1.1 christos ID(xor); DCY(); SM(HL, 0); SB(bit); 3979 1.1.1.2 christos 3980 1.1 christos } 3981 1.1 christos break; 3982 1.1 christos case 0x88: 3983 1.1 christos { 3984 1.1 christos /** 0111 0001 1000 1000 clr1 cy */ 3985 1.1 christos if (trace) 3986 1.1 christos { 3987 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 3988 1.1 christos "/** 0111 0001 1000 1000 clr1 cy */", 3989 1.1 christos op[0], op[1]); 3990 1.1 christos } 3991 1.1 christos SYNTAX("clr1 cy"); 3992 1.1.1.5 christos #line 453 "rl78-decode.opc" 3993 1.1 christos ID(mov); DCY(); SC(0); 3994 1.1.1.2 christos 3995 1.1 christos } 3996 1.1 christos break; 3997 1.1 christos case 0x89: 3998 1.1 christos case 0x99: 3999 1.1 christos case 0xa9: 4000 1.1 christos case 0xb9: 4001 1.1 christos case 0xc9: 4002 1.1 christos case 0xd9: 4003 1.1 christos case 0xe9: 4004 1.1 christos case 0xf9: 4005 1.1 christos { 4006 1.1.1.2 christos /** 0111 0001 1bit 1001 mov1 %e0, cy */ 4007 1.1.1.5 christos #line 794 "rl78-decode.opc" 4008 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 4009 1.1 christos if (trace) 4010 1.1 christos { 4011 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4012 1.1.1.2 christos "/** 0111 0001 1bit 1001 mov1 %e0, cy */", 4013 1.1 christos op[0], op[1]); 4014 1.1 christos printf (" bit = 0x%x\n", bit); 4015 1.1 christos } 4016 1.1.1.2 christos SYNTAX("mov1 %e0, cy"); 4017 1.1.1.5 christos #line 794 "rl78-decode.opc" 4018 1.1 christos ID(mov); DR(A); DB(bit); SCY(); 4019 1.1.1.2 christos 4020 1.1 christos } 4021 1.1 christos break; 4022 1.1 christos case 0x8a: 4023 1.1 christos case 0x9a: 4024 1.1 christos case 0xaa: 4025 1.1 christos case 0xba: 4026 1.1 christos case 0xca: 4027 1.1 christos case 0xda: 4028 1.1 christos case 0xea: 4029 1.1 christos case 0xfa: 4030 1.1 christos { 4031 1.1 christos /** 0111 0001 1bit 1010 set1 %0 */ 4032 1.1.1.5 christos #line 1058 "rl78-decode.opc" 4033 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 4034 1.1 christos if (trace) 4035 1.1 christos { 4036 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4037 1.1 christos "/** 0111 0001 1bit 1010 set1 %0 */", 4038 1.1 christos op[0], op[1]); 4039 1.1 christos printf (" bit = 0x%x\n", bit); 4040 1.1 christos } 4041 1.1 christos SYNTAX("set1 %0"); 4042 1.1.1.5 christos #line 1058 "rl78-decode.opc" 4043 1.1 christos ID(mov); DR(A); DB(bit); SC(1); 4044 1.1.1.2 christos 4045 1.1 christos } 4046 1.1 christos break; 4047 1.1 christos case 0x8b: 4048 1.1 christos case 0x9b: 4049 1.1 christos case 0xab: 4050 1.1 christos case 0xbb: 4051 1.1 christos case 0xcb: 4052 1.1 christos case 0xdb: 4053 1.1 christos case 0xeb: 4054 1.1 christos case 0xfb: 4055 1.1 christos { 4056 1.1 christos /** 0111 0001 1bit 1011 clr1 %0 */ 4057 1.1.1.5 christos #line 450 "rl78-decode.opc" 4058 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 4059 1.1 christos if (trace) 4060 1.1 christos { 4061 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4062 1.1 christos "/** 0111 0001 1bit 1011 clr1 %0 */", 4063 1.1 christos op[0], op[1]); 4064 1.1 christos printf (" bit = 0x%x\n", bit); 4065 1.1 christos } 4066 1.1 christos SYNTAX("clr1 %0"); 4067 1.1.1.5 christos #line 450 "rl78-decode.opc" 4068 1.1 christos ID(mov); DR(A); DB(bit); SC(0); 4069 1.1.1.2 christos 4070 1.1 christos } 4071 1.1 christos break; 4072 1.1 christos case 0x8c: 4073 1.1 christos case 0x9c: 4074 1.1 christos case 0xac: 4075 1.1 christos case 0xbc: 4076 1.1 christos case 0xcc: 4077 1.1 christos case 0xdc: 4078 1.1 christos case 0xec: 4079 1.1 christos case 0xfc: 4080 1.1 christos { 4081 1.1.1.2 christos /** 0111 0001 1bit 1100 mov1 cy, %e1 */ 4082 1.1.1.5 christos #line 800 "rl78-decode.opc" 4083 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 4084 1.1 christos if (trace) 4085 1.1 christos { 4086 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4087 1.1.1.2 christos "/** 0111 0001 1bit 1100 mov1 cy, %e1 */", 4088 1.1 christos op[0], op[1]); 4089 1.1 christos printf (" bit = 0x%x\n", bit); 4090 1.1 christos } 4091 1.1.1.2 christos SYNTAX("mov1 cy, %e1"); 4092 1.1.1.5 christos #line 800 "rl78-decode.opc" 4093 1.1 christos ID(mov); DCY(); SR(A); SB(bit); 4094 1.1.1.2 christos 4095 1.1 christos } 4096 1.1 christos break; 4097 1.1 christos case 0x8d: 4098 1.1 christos case 0x9d: 4099 1.1 christos case 0xad: 4100 1.1 christos case 0xbd: 4101 1.1 christos case 0xcd: 4102 1.1 christos case 0xdd: 4103 1.1 christos case 0xed: 4104 1.1 christos case 0xfd: 4105 1.1 christos { 4106 1.1 christos /** 0111 0001 1bit 1101 and1 cy, %1 */ 4107 1.1.1.5 christos #line 326 "rl78-decode.opc" 4108 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 4109 1.1 christos if (trace) 4110 1.1 christos { 4111 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4112 1.1 christos "/** 0111 0001 1bit 1101 and1 cy, %1 */", 4113 1.1 christos op[0], op[1]); 4114 1.1 christos printf (" bit = 0x%x\n", bit); 4115 1.1 christos } 4116 1.1 christos SYNTAX("and1 cy, %1"); 4117 1.1.1.5 christos #line 326 "rl78-decode.opc" 4118 1.1 christos ID(and); DCY(); SR(A); SB(bit); 4119 1.1.1.2 christos 4120 1.1 christos } 4121 1.1 christos break; 4122 1.1 christos case 0x8e: 4123 1.1 christos case 0x9e: 4124 1.1 christos case 0xae: 4125 1.1 christos case 0xbe: 4126 1.1 christos case 0xce: 4127 1.1 christos case 0xde: 4128 1.1 christos case 0xee: 4129 1.1 christos case 0xfe: 4130 1.1 christos { 4131 1.1 christos /** 0111 0001 1bit 1110 or1 cy, %1 */ 4132 1.1.1.5 christos #line 981 "rl78-decode.opc" 4133 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 4134 1.1 christos if (trace) 4135 1.1 christos { 4136 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4137 1.1 christos "/** 0111 0001 1bit 1110 or1 cy, %1 */", 4138 1.1 christos op[0], op[1]); 4139 1.1 christos printf (" bit = 0x%x\n", bit); 4140 1.1 christos } 4141 1.1 christos SYNTAX("or1 cy, %1"); 4142 1.1.1.5 christos #line 981 "rl78-decode.opc" 4143 1.1 christos ID(or); DCY(); SR(A); SB(bit); 4144 1.1.1.2 christos 4145 1.1 christos } 4146 1.1 christos break; 4147 1.1 christos case 0x8f: 4148 1.1 christos case 0x9f: 4149 1.1 christos case 0xaf: 4150 1.1 christos case 0xbf: 4151 1.1 christos case 0xcf: 4152 1.1 christos case 0xdf: 4153 1.1 christos case 0xef: 4154 1.1 christos case 0xff: 4155 1.1 christos { 4156 1.1 christos /** 0111 0001 1bit 1111 xor1 cy, %1 */ 4157 1.1.1.5 christos #line 1285 "rl78-decode.opc" 4158 1.1 christos int bit AU = (op[1] >> 4) & 0x07; 4159 1.1 christos if (trace) 4160 1.1 christos { 4161 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4162 1.1 christos "/** 0111 0001 1bit 1111 xor1 cy, %1 */", 4163 1.1 christos op[0], op[1]); 4164 1.1 christos printf (" bit = 0x%x\n", bit); 4165 1.1 christos } 4166 1.1 christos SYNTAX("xor1 cy, %1"); 4167 1.1.1.5 christos #line 1285 "rl78-decode.opc" 4168 1.1 christos ID(xor); DCY(); SR(A); SB(bit); 4169 1.1.1.2 christos 4170 1.1 christos } 4171 1.1 christos break; 4172 1.1 christos case 0xc0: 4173 1.1 christos { 4174 1.1 christos /** 0111 0001 1100 0000 not1 cy */ 4175 1.1 christos if (trace) 4176 1.1 christos { 4177 1.1 christos printf ("\033[33m%s\033[0m %02x %02x\n", 4178 1.1 christos "/** 0111 0001 1100 0000 not1 cy */", 4179 1.1 christos op[0], op[1]); 4180 1.1 christos } 4181 1.1 christos SYNTAX("not1 cy"); 4182 1.1.1.5 christos #line 922 "rl78-decode.opc" 4183 1.1 christos ID(xor); DCY(); SC(1); 4184 1.1.1.2 christos 4185 1.1 christos /*----------------------------------------------------------------------*/ 4186 1.1.1.2 christos 4187 1.1 christos } 4188 1.1 christos break; 4189 1.1 christos default: UNSUPPORTED(); break; 4190 1.1 christos } 4191 1.1 christos break; 4192 1.1 christos case 0x78: 4193 1.1 christos { 4194 1.1.1.2 christos /** 0111 1000 movw %e0, %1 */ 4195 1.1 christos if (trace) 4196 1.1 christos { 4197 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4198 1.1.1.2 christos "/** 0111 1000 movw %e0, %1 */", 4199 1.1 christos op[0]); 4200 1.1 christos } 4201 1.1.1.2 christos SYNTAX("movw %e0, %1"); 4202 1.1.1.5 christos #line 883 "rl78-decode.opc" 4203 1.1 christos ID(mov); W(); DM(BC, IMMU(2)); SR(AX); 4204 1.1.1.2 christos 4205 1.1 christos } 4206 1.1 christos break; 4207 1.1 christos case 0x79: 4208 1.1 christos { 4209 1.1.1.2 christos /** 0111 1001 movw %0, %e1 */ 4210 1.1 christos if (trace) 4211 1.1 christos { 4212 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4213 1.1.1.2 christos "/** 0111 1001 movw %0, %e1 */", 4214 1.1 christos op[0]); 4215 1.1 christos } 4216 1.1.1.2 christos SYNTAX("movw %0, %e1"); 4217 1.1.1.5 christos #line 874 "rl78-decode.opc" 4218 1.1 christos ID(mov); W(); DR(AX); SM(BC, IMMU(2)); 4219 1.1.1.2 christos 4220 1.1 christos } 4221 1.1 christos break; 4222 1.1 christos case 0x7a: 4223 1.1 christos { 4224 1.1 christos /** 0111 1010 xor %0, #%1 */ 4225 1.1 christos if (trace) 4226 1.1 christos { 4227 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4228 1.1 christos "/** 0111 1010 xor %0, #%1 */", 4229 1.1 christos op[0]); 4230 1.1 christos } 4231 1.1 christos SYNTAX("xor %0, #%1"); 4232 1.1.1.5 christos #line 1277 "rl78-decode.opc" 4233 1.1 christos ID(xor); DM(None, SADDR); SC(IMMU(1)); Fz; 4234 1.1.1.2 christos 4235 1.1 christos /*----------------------------------------------------------------------*/ 4236 1.1.1.2 christos 4237 1.1 christos } 4238 1.1 christos break; 4239 1.1 christos case 0x7b: 4240 1.1 christos { 4241 1.1 christos /** 0111 1011 xor %0, %1 */ 4242 1.1 christos if (trace) 4243 1.1 christos { 4244 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4245 1.1 christos "/** 0111 1011 xor %0, %1 */", 4246 1.1 christos op[0]); 4247 1.1 christos } 4248 1.1 christos SYNTAX("xor %0, %1"); 4249 1.1.1.5 christos #line 1274 "rl78-decode.opc" 4250 1.1 christos ID(xor); DR(A); SM(None, SADDR); Fz; 4251 1.1.1.2 christos 4252 1.1 christos } 4253 1.1 christos break; 4254 1.1 christos case 0x7c: 4255 1.1 christos { 4256 1.1 christos /** 0111 1100 xor %0, #%1 */ 4257 1.1 christos if (trace) 4258 1.1 christos { 4259 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4260 1.1 christos "/** 0111 1100 xor %0, #%1 */", 4261 1.1 christos op[0]); 4262 1.1 christos } 4263 1.1 christos SYNTAX("xor %0, #%1"); 4264 1.1.1.5 christos #line 1265 "rl78-decode.opc" 4265 1.1 christos ID(xor); DR(A); SC(IMMU(1)); Fz; 4266 1.1.1.2 christos 4267 1.1 christos } 4268 1.1 christos break; 4269 1.1 christos case 0x7d: 4270 1.1 christos { 4271 1.1.1.2 christos /** 0111 1101 xor %0, %e1 */ 4272 1.1 christos if (trace) 4273 1.1 christos { 4274 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4275 1.1.1.2 christos "/** 0111 1101 xor %0, %e1 */", 4276 1.1 christos op[0]); 4277 1.1 christos } 4278 1.1.1.2 christos SYNTAX("xor %0, %e1"); 4279 1.1.1.5 christos #line 1253 "rl78-decode.opc" 4280 1.1 christos ID(xor); DR(A); SM(HL, 0); Fz; 4281 1.1.1.2 christos 4282 1.1 christos } 4283 1.1 christos break; 4284 1.1 christos case 0x7e: 4285 1.1 christos { 4286 1.1.1.2 christos /** 0111 1110 xor %0, %ea1 */ 4287 1.1 christos if (trace) 4288 1.1 christos { 4289 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4290 1.1.1.2 christos "/** 0111 1110 xor %0, %ea1 */", 4291 1.1 christos op[0]); 4292 1.1 christos } 4293 1.1.1.2 christos SYNTAX("xor %0, %ea1"); 4294 1.1.1.5 christos #line 1259 "rl78-decode.opc" 4295 1.1 christos ID(xor); DR(A); SM(HL, IMMU(1)); Fz; 4296 1.1.1.2 christos 4297 1.1 christos } 4298 1.1 christos break; 4299 1.1 christos case 0x7f: 4300 1.1 christos { 4301 1.1.1.2 christos /** 0111 1111 xor %0, %e!1 */ 4302 1.1 christos if (trace) 4303 1.1 christos { 4304 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4305 1.1.1.2 christos "/** 0111 1111 xor %0, %e!1 */", 4306 1.1 christos op[0]); 4307 1.1 christos } 4308 1.1.1.2 christos SYNTAX("xor %0, %e!1"); 4309 1.1.1.5 christos #line 1250 "rl78-decode.opc" 4310 1.1 christos ID(xor); DR(A); SM(None, IMMU(2)); Fz; 4311 1.1.1.2 christos 4312 1.1 christos } 4313 1.1 christos break; 4314 1.1 christos case 0x80: 4315 1.1 christos case 0x81: 4316 1.1 christos case 0x82: 4317 1.1 christos case 0x83: 4318 1.1 christos case 0x84: 4319 1.1 christos case 0x85: 4320 1.1 christos case 0x86: 4321 1.1 christos case 0x87: 4322 1.1 christos { 4323 1.1 christos /** 1000 0reg inc %0 */ 4324 1.1.1.5 christos #line 593 "rl78-decode.opc" 4325 1.1 christos int reg AU = op[0] & 0x07; 4326 1.1 christos if (trace) 4327 1.1 christos { 4328 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4329 1.1 christos "/** 1000 0reg inc %0 */", 4330 1.1 christos op[0]); 4331 1.1 christos printf (" reg = 0x%x\n", reg); 4332 1.1 christos } 4333 1.1 christos SYNTAX("inc %0"); 4334 1.1.1.5 christos #line 593 "rl78-decode.opc" 4335 1.1 christos ID(add); DRB(reg); SC(1); Fza; 4336 1.1.1.2 christos 4337 1.1 christos } 4338 1.1 christos break; 4339 1.1 christos case 0x88: 4340 1.1 christos { 4341 1.1.1.2 christos /** 1000 1000 mov %0, %ea1 */ 4342 1.1 christos if (trace) 4343 1.1 christos { 4344 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4345 1.1.1.2 christos "/** 1000 1000 mov %0, %ea1 */", 4346 1.1 christos op[0]); 4347 1.1 christos } 4348 1.1.1.2 christos SYNTAX("mov %0, %ea1"); 4349 1.1.1.5 christos #line 672 "rl78-decode.opc" 4350 1.1 christos ID(mov); DR(A); SM(SP, IMMU(1)); 4351 1.1.1.2 christos 4352 1.1 christos } 4353 1.1 christos break; 4354 1.1 christos case 0x89: 4355 1.1 christos { 4356 1.1.1.2 christos /** 1000 1001 mov %0, %e1 */ 4357 1.1 christos if (trace) 4358 1.1 christos { 4359 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4360 1.1.1.2 christos "/** 1000 1001 mov %0, %e1 */", 4361 1.1 christos op[0]); 4362 1.1 christos } 4363 1.1.1.2 christos SYNTAX("mov %0, %e1"); 4364 1.1.1.5 christos #line 654 "rl78-decode.opc" 4365 1.1 christos ID(mov); DR(A); SM(DE, 0); 4366 1.1.1.2 christos 4367 1.1 christos } 4368 1.1 christos break; 4369 1.1 christos case 0x8a: 4370 1.1 christos { 4371 1.1.1.2 christos /** 1000 1010 mov %0, %ea1 */ 4372 1.1 christos if (trace) 4373 1.1 christos { 4374 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4375 1.1.1.2 christos "/** 1000 1010 mov %0, %ea1 */", 4376 1.1 christos op[0]); 4377 1.1 christos } 4378 1.1.1.2 christos SYNTAX("mov %0, %ea1"); 4379 1.1.1.5 christos #line 657 "rl78-decode.opc" 4380 1.1 christos ID(mov); DR(A); SM(DE, IMMU(1)); 4381 1.1.1.2 christos 4382 1.1 christos } 4383 1.1 christos break; 4384 1.1 christos case 0x8b: 4385 1.1 christos { 4386 1.1.1.2 christos /** 1000 1011 mov %0, %e1 */ 4387 1.1 christos if (trace) 4388 1.1 christos { 4389 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4390 1.1.1.2 christos "/** 1000 1011 mov %0, %e1 */", 4391 1.1 christos op[0]); 4392 1.1 christos } 4393 1.1.1.2 christos SYNTAX("mov %0, %e1"); 4394 1.1.1.5 christos #line 660 "rl78-decode.opc" 4395 1.1 christos ID(mov); DR(A); SM(HL, 0); 4396 1.1.1.2 christos 4397 1.1 christos } 4398 1.1 christos break; 4399 1.1 christos case 0x8c: 4400 1.1 christos { 4401 1.1.1.2 christos /** 1000 1100 mov %0, %ea1 */ 4402 1.1 christos if (trace) 4403 1.1 christos { 4404 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4405 1.1.1.2 christos "/** 1000 1100 mov %0, %ea1 */", 4406 1.1 christos op[0]); 4407 1.1 christos } 4408 1.1.1.2 christos SYNTAX("mov %0, %ea1"); 4409 1.1.1.5 christos #line 663 "rl78-decode.opc" 4410 1.1 christos ID(mov); DR(A); SM(HL, IMMU(1)); 4411 1.1.1.2 christos 4412 1.1 christos } 4413 1.1 christos break; 4414 1.1 christos case 0x8d: 4415 1.1 christos { 4416 1.1 christos /** 1000 1101 mov %0, %1 */ 4417 1.1 christos if (trace) 4418 1.1 christos { 4419 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4420 1.1 christos "/** 1000 1101 mov %0, %1 */", 4421 1.1 christos op[0]); 4422 1.1 christos } 4423 1.1 christos SYNTAX("mov %0, %1"); 4424 1.1.1.5 christos #line 696 "rl78-decode.opc" 4425 1.1 christos ID(mov); DR(A); SM(None, SADDR); 4426 1.1.1.2 christos 4427 1.1 christos } 4428 1.1 christos break; 4429 1.1 christos case 0x8e: 4430 1.1 christos { 4431 1.1 christos /** 1000 1110 mov %0, %s1 */ 4432 1.1 christos if (trace) 4433 1.1 christos { 4434 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4435 1.1 christos "/** 1000 1110 mov %0, %s1 */", 4436 1.1 christos op[0]); 4437 1.1 christos } 4438 1.1 christos SYNTAX("mov %0, %s1"); 4439 1.1.1.5 christos #line 693 "rl78-decode.opc" 4440 1.1 christos ID(mov); DR(A); SM(None, SFR); 4441 1.1.1.2 christos 4442 1.1 christos } 4443 1.1 christos break; 4444 1.1 christos case 0x8f: 4445 1.1 christos { 4446 1.1.1.2 christos /** 1000 1111 mov %0, %e!1 */ 4447 1.1 christos if (trace) 4448 1.1 christos { 4449 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4450 1.1.1.2 christos "/** 1000 1111 mov %0, %e!1 */", 4451 1.1 christos op[0]); 4452 1.1 christos } 4453 1.1.1.2 christos SYNTAX("mov %0, %e!1"); 4454 1.1.1.5 christos #line 651 "rl78-decode.opc" 4455 1.1 christos ID(mov); DR(A); SM(None, IMMU(2)); 4456 1.1.1.2 christos 4457 1.1 christos } 4458 1.1 christos break; 4459 1.1 christos case 0x90: 4460 1.1 christos case 0x91: 4461 1.1 christos case 0x92: 4462 1.1 christos case 0x93: 4463 1.1 christos case 0x94: 4464 1.1 christos case 0x95: 4465 1.1 christos case 0x96: 4466 1.1 christos case 0x97: 4467 1.1 christos { 4468 1.1 christos /** 1001 0reg dec %0 */ 4469 1.1.1.5 christos #line 560 "rl78-decode.opc" 4470 1.1 christos int reg AU = op[0] & 0x07; 4471 1.1 christos if (trace) 4472 1.1 christos { 4473 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4474 1.1 christos "/** 1001 0reg dec %0 */", 4475 1.1 christos op[0]); 4476 1.1 christos printf (" reg = 0x%x\n", reg); 4477 1.1 christos } 4478 1.1 christos SYNTAX("dec %0"); 4479 1.1.1.5 christos #line 560 "rl78-decode.opc" 4480 1.1 christos ID(sub); DRB(reg); SC(1); Fza; 4481 1.1.1.2 christos 4482 1.1 christos } 4483 1.1 christos break; 4484 1.1 christos case 0x98: 4485 1.1 christos { 4486 1.1.1.2 christos /** 1001 1000 mov %a0, %1 */ 4487 1.1 christos if (trace) 4488 1.1 christos { 4489 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4490 1.1.1.2 christos "/** 1001 1000 mov %a0, %1 */", 4491 1.1 christos op[0]); 4492 1.1 christos } 4493 1.1.1.2 christos SYNTAX("mov %a0, %1"); 4494 1.1.1.5 christos #line 648 "rl78-decode.opc" 4495 1.1 christos ID(mov); DM(SP, IMMU(1)); SR(A); 4496 1.1.1.2 christos 4497 1.1 christos } 4498 1.1 christos break; 4499 1.1 christos case 0x99: 4500 1.1 christos { 4501 1.1.1.2 christos /** 1001 1001 mov %e0, %1 */ 4502 1.1 christos if (trace) 4503 1.1 christos { 4504 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4505 1.1.1.2 christos "/** 1001 1001 mov %e0, %1 */", 4506 1.1 christos op[0]); 4507 1.1 christos } 4508 1.1.1.2 christos SYNTAX("mov %e0, %1"); 4509 1.1.1.5 christos #line 621 "rl78-decode.opc" 4510 1.1 christos ID(mov); DM(DE, 0); SR(A); 4511 1.1.1.2 christos 4512 1.1 christos } 4513 1.1 christos break; 4514 1.1 christos case 0x9a: 4515 1.1 christos { 4516 1.1.1.3 christos /** 1001 1010 mov %ea0, %1 */ 4517 1.1 christos if (trace) 4518 1.1 christos { 4519 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4520 1.1.1.3 christos "/** 1001 1010 mov %ea0, %1 */", 4521 1.1 christos op[0]); 4522 1.1 christos } 4523 1.1.1.2 christos SYNTAX("mov %ea0, %1"); 4524 1.1.1.5 christos #line 627 "rl78-decode.opc" 4525 1.1 christos ID(mov); DM(DE, IMMU(1)); SR(A); 4526 1.1.1.2 christos 4527 1.1 christos } 4528 1.1 christos break; 4529 1.1 christos case 0x9b: 4530 1.1 christos { 4531 1.1.1.2 christos /** 1001 1011 mov %e0, %1 */ 4532 1.1 christos if (trace) 4533 1.1 christos { 4534 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4535 1.1.1.2 christos "/** 1001 1011 mov %e0, %1 */", 4536 1.1 christos op[0]); 4537 1.1 christos } 4538 1.1.1.2 christos SYNTAX("mov %e0, %1"); 4539 1.1.1.5 christos #line 630 "rl78-decode.opc" 4540 1.1 christos ID(mov); DM(HL, 0); SR(A); 4541 1.1.1.2 christos 4542 1.1 christos } 4543 1.1 christos break; 4544 1.1 christos case 0x9c: 4545 1.1 christos { 4546 1.1.1.2 christos /** 1001 1100 mov %ea0, %1 */ 4547 1.1 christos if (trace) 4548 1.1 christos { 4549 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4550 1.1.1.2 christos "/** 1001 1100 mov %ea0, %1 */", 4551 1.1 christos op[0]); 4552 1.1 christos } 4553 1.1.1.2 christos SYNTAX("mov %ea0, %1"); 4554 1.1.1.5 christos #line 639 "rl78-decode.opc" 4555 1.1 christos ID(mov); DM(HL, IMMU(1)); SR(A); 4556 1.1.1.2 christos 4557 1.1 christos } 4558 1.1 christos break; 4559 1.1 christos case 0x9d: 4560 1.1 christos { 4561 1.1 christos /** 1001 1101 mov %0, %1 */ 4562 1.1 christos if (trace) 4563 1.1 christos { 4564 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4565 1.1 christos "/** 1001 1101 mov %0, %1 */", 4566 1.1 christos op[0]); 4567 1.1 christos } 4568 1.1 christos SYNTAX("mov %0, %1"); 4569 1.1.1.5 christos #line 753 "rl78-decode.opc" 4570 1.1 christos ID(mov); DM(None, SADDR); SR(A); 4571 1.1.1.2 christos 4572 1.1 christos } 4573 1.1 christos break; 4574 1.1 christos case 0x9e: 4575 1.1 christos { 4576 1.1.1.2 christos /** 1001 1110 mov %s0, %1 */ 4577 1.1 christos if (trace) 4578 1.1 christos { 4579 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4580 1.1.1.3 christos "/** 1001 1110 mov %s0, %1 */", 4581 1.1 christos op[0]); 4582 1.1 christos } 4583 1.1.1.2 christos SYNTAX("mov %s0, %1"); 4584 1.1.1.5 christos #line 786 "rl78-decode.opc" 4585 1.1 christos ID(mov); DM(None, SFR); SR(A); 4586 1.1.1.2 christos 4587 1.1 christos /*----------------------------------------------------------------------*/ 4588 1.1.1.2 christos 4589 1.1 christos } 4590 1.1 christos break; 4591 1.1 christos case 0x9f: 4592 1.1 christos { 4593 1.1.1.2 christos /** 1001 1111 mov %e!0, %1 */ 4594 1.1 christos if (trace) 4595 1.1 christos { 4596 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4597 1.1.1.2 christos "/** 1001 1111 mov %e!0, %1 */", 4598 1.1 christos op[0]); 4599 1.1 christos } 4600 1.1.1.2 christos SYNTAX("mov %e!0, %1"); 4601 1.1.1.5 christos #line 618 "rl78-decode.opc" 4602 1.1 christos ID(mov); DM(None, IMMU(2)); SR(A); 4603 1.1.1.2 christos 4604 1.1 christos } 4605 1.1 christos break; 4606 1.1 christos case 0xa0: 4607 1.1 christos { 4608 1.1.1.2 christos /** 1010 0000 inc %e!0 */ 4609 1.1 christos if (trace) 4610 1.1 christos { 4611 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4612 1.1.1.2 christos "/** 1010 0000 inc %e!0 */", 4613 1.1 christos op[0]); 4614 1.1 christos } 4615 1.1.1.2 christos SYNTAX("inc %e!0"); 4616 1.1.1.5 christos #line 587 "rl78-decode.opc" 4617 1.1 christos ID(add); DM(None, IMMU(2)); SC(1); Fza; 4618 1.1.1.2 christos 4619 1.1 christos } 4620 1.1 christos break; 4621 1.1 christos case 0xa1: 4622 1.1 christos case 0xa3: 4623 1.1 christos case 0xa5: 4624 1.1 christos case 0xa7: 4625 1.1 christos { 4626 1.1 christos /** 1010 0rg1 incw %0 */ 4627 1.1.1.5 christos #line 607 "rl78-decode.opc" 4628 1.1 christos int rg AU = (op[0] >> 1) & 0x03; 4629 1.1 christos if (trace) 4630 1.1 christos { 4631 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4632 1.1 christos "/** 1010 0rg1 incw %0 */", 4633 1.1 christos op[0]); 4634 1.1 christos printf (" rg = 0x%x\n", rg); 4635 1.1 christos } 4636 1.1 christos SYNTAX("incw %0"); 4637 1.1.1.5 christos #line 607 "rl78-decode.opc" 4638 1.1 christos ID(add); W(); DRW(rg); SC(1); 4639 1.1.1.2 christos 4640 1.1 christos } 4641 1.1 christos break; 4642 1.1 christos case 0xa2: 4643 1.1 christos { 4644 1.1.1.2 christos /** 1010 0010 incw %e!0 */ 4645 1.1 christos if (trace) 4646 1.1 christos { 4647 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4648 1.1.1.2 christos "/** 1010 0010 incw %e!0 */", 4649 1.1 christos op[0]); 4650 1.1 christos } 4651 1.1.1.2 christos SYNTAX("incw %e!0"); 4652 1.1.1.5 christos #line 601 "rl78-decode.opc" 4653 1.1 christos ID(add); W(); DM(None, IMMU(2)); SC(1); 4654 1.1.1.2 christos 4655 1.1 christos } 4656 1.1 christos break; 4657 1.1 christos case 0xa4: 4658 1.1 christos { 4659 1.1 christos /** 1010 0100 inc %0 */ 4660 1.1 christos if (trace) 4661 1.1 christos { 4662 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4663 1.1 christos "/** 1010 0100 inc %0 */", 4664 1.1 christos op[0]); 4665 1.1 christos } 4666 1.1 christos SYNTAX("inc %0"); 4667 1.1.1.5 christos #line 596 "rl78-decode.opc" 4668 1.1 christos ID(add); DM(None, SADDR); SC(1); Fza; 4669 1.1.1.2 christos 4670 1.1 christos /*----------------------------------------------------------------------*/ 4671 1.1.1.2 christos 4672 1.1 christos } 4673 1.1 christos break; 4674 1.1 christos case 0xa6: 4675 1.1 christos { 4676 1.1 christos /** 1010 0110 incw %0 */ 4677 1.1 christos if (trace) 4678 1.1 christos { 4679 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4680 1.1 christos "/** 1010 0110 incw %0 */", 4681 1.1 christos op[0]); 4682 1.1 christos } 4683 1.1 christos SYNTAX("incw %0"); 4684 1.1.1.5 christos #line 610 "rl78-decode.opc" 4685 1.1 christos ID(add); W(); DM(None, SADDR); SC(1); 4686 1.1.1.2 christos 4687 1.1 christos /*----------------------------------------------------------------------*/ 4688 1.1.1.2 christos 4689 1.1 christos } 4690 1.1 christos break; 4691 1.1 christos case 0xa8: 4692 1.1 christos { 4693 1.1.1.2 christos /** 1010 1000 movw %0, %a1 */ 4694 1.1 christos if (trace) 4695 1.1 christos { 4696 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4697 1.1.1.2 christos "/** 1010 1000 movw %0, %a1 */", 4698 1.1 christos op[0]); 4699 1.1 christos } 4700 1.1.1.2 christos SYNTAX("movw %0, %a1"); 4701 1.1.1.5 christos #line 856 "rl78-decode.opc" 4702 1.1 christos ID(mov); W(); DR(AX); SM(SP, IMMU(1)); 4703 1.1.1.2 christos 4704 1.1 christos } 4705 1.1 christos break; 4706 1.1 christos case 0xa9: 4707 1.1 christos { 4708 1.1.1.2 christos /** 1010 1001 movw %0, %e1 */ 4709 1.1 christos if (trace) 4710 1.1 christos { 4711 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4712 1.1.1.2 christos "/** 1010 1001 movw %0, %e1 */", 4713 1.1 christos op[0]); 4714 1.1 christos } 4715 1.1.1.2 christos SYNTAX("movw %0, %e1"); 4716 1.1.1.5 christos #line 844 "rl78-decode.opc" 4717 1.1 christos ID(mov); W(); DR(AX); SM(DE, 0); 4718 1.1.1.2 christos 4719 1.1 christos } 4720 1.1 christos break; 4721 1.1 christos case 0xaa: 4722 1.1 christos { 4723 1.1.1.3 christos /** 1010 1010 movw %0, %ea1 */ 4724 1.1 christos if (trace) 4725 1.1 christos { 4726 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4727 1.1.1.3 christos "/** 1010 1010 movw %0, %ea1 */", 4728 1.1 christos op[0]); 4729 1.1 christos } 4730 1.1.1.2 christos SYNTAX("movw %0, %ea1"); 4731 1.1.1.5 christos #line 847 "rl78-decode.opc" 4732 1.1 christos ID(mov); W(); DR(AX); SM(DE, IMMU(1)); 4733 1.1.1.2 christos 4734 1.1 christos } 4735 1.1 christos break; 4736 1.1 christos case 0xab: 4737 1.1 christos { 4738 1.1.1.2 christos /** 1010 1011 movw %0, %e1 */ 4739 1.1 christos if (trace) 4740 1.1 christos { 4741 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4742 1.1.1.2 christos "/** 1010 1011 movw %0, %e1 */", 4743 1.1 christos op[0]); 4744 1.1 christos } 4745 1.1.1.2 christos SYNTAX("movw %0, %e1"); 4746 1.1.1.5 christos #line 850 "rl78-decode.opc" 4747 1.1 christos ID(mov); W(); DR(AX); SM(HL, 0); 4748 1.1.1.2 christos 4749 1.1 christos } 4750 1.1 christos break; 4751 1.1 christos case 0xac: 4752 1.1 christos { 4753 1.1.1.2 christos /** 1010 1100 movw %0, %ea1 */ 4754 1.1 christos if (trace) 4755 1.1 christos { 4756 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4757 1.1.1.2 christos "/** 1010 1100 movw %0, %ea1 */", 4758 1.1 christos op[0]); 4759 1.1 christos } 4760 1.1.1.2 christos SYNTAX("movw %0, %ea1"); 4761 1.1.1.5 christos #line 853 "rl78-decode.opc" 4762 1.1 christos ID(mov); W(); DR(AX); SM(HL, IMMU(1)); 4763 1.1.1.2 christos 4764 1.1 christos } 4765 1.1 christos break; 4766 1.1 christos case 0xad: 4767 1.1 christos { 4768 1.1 christos /** 1010 1101 movw %0, %1 */ 4769 1.1 christos if (trace) 4770 1.1 christos { 4771 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4772 1.1 christos "/** 1010 1101 movw %0, %1 */", 4773 1.1 christos op[0]); 4774 1.1 christos } 4775 1.1 christos SYNTAX("movw %0, %1"); 4776 1.1.1.5 christos #line 886 "rl78-decode.opc" 4777 1.1 christos ID(mov); W(); DR(AX); SM(None, SADDR); 4778 1.1.1.2 christos 4779 1.1 christos } 4780 1.1 christos break; 4781 1.1 christos case 0xae: 4782 1.1 christos { 4783 1.1 christos /** 1010 1110 movw %0, %s1 */ 4784 1.1 christos if (trace) 4785 1.1 christos { 4786 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4787 1.1 christos "/** 1010 1110 movw %0, %s1 */", 4788 1.1 christos op[0]); 4789 1.1 christos } 4790 1.1 christos SYNTAX("movw %0, %s1"); 4791 1.1.1.5 christos #line 889 "rl78-decode.opc" 4792 1.1 christos ID(mov); W(); DR(AX); SM(None, SFR); 4793 1.1.1.2 christos 4794 1.1 christos } 4795 1.1 christos break; 4796 1.1 christos case 0xaf: 4797 1.1 christos { 4798 1.1.1.2 christos /** 1010 1111 movw %0, %e!1 */ 4799 1.1 christos if (trace) 4800 1.1 christos { 4801 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4802 1.1.1.2 christos "/** 1010 1111 movw %0, %e!1 */", 4803 1.1 christos op[0]); 4804 1.1 christos } 4805 1.1.1.2 christos SYNTAX("movw %0, %e!1"); 4806 1.1.1.5 christos #line 840 "rl78-decode.opc" 4807 1.1 christos ID(mov); W(); DR(AX); SM(None, IMMU(2)); 4808 1.1.1.2 christos 4809 1.1.1.2 christos 4810 1.1 christos } 4811 1.1 christos break; 4812 1.1 christos case 0xb0: 4813 1.1 christos { 4814 1.1.1.2 christos /** 1011 0000 dec %e!0 */ 4815 1.1 christos if (trace) 4816 1.1 christos { 4817 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4818 1.1.1.2 christos "/** 1011 0000 dec %e!0 */", 4819 1.1 christos op[0]); 4820 1.1 christos } 4821 1.1.1.2 christos SYNTAX("dec %e!0"); 4822 1.1.1.5 christos #line 554 "rl78-decode.opc" 4823 1.1 christos ID(sub); DM(None, IMMU(2)); SC(1); Fza; 4824 1.1.1.2 christos 4825 1.1 christos } 4826 1.1 christos break; 4827 1.1 christos case 0xb1: 4828 1.1 christos case 0xb3: 4829 1.1 christos case 0xb5: 4830 1.1 christos case 0xb7: 4831 1.1 christos { 4832 1.1 christos /** 1011 0rg1 decw %0 */ 4833 1.1.1.5 christos #line 574 "rl78-decode.opc" 4834 1.1 christos int rg AU = (op[0] >> 1) & 0x03; 4835 1.1 christos if (trace) 4836 1.1 christos { 4837 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4838 1.1 christos "/** 1011 0rg1 decw %0 */", 4839 1.1 christos op[0]); 4840 1.1 christos printf (" rg = 0x%x\n", rg); 4841 1.1 christos } 4842 1.1 christos SYNTAX("decw %0"); 4843 1.1.1.5 christos #line 574 "rl78-decode.opc" 4844 1.1 christos ID(sub); W(); DRW(rg); SC(1); 4845 1.1.1.2 christos 4846 1.1 christos } 4847 1.1 christos break; 4848 1.1 christos case 0xb2: 4849 1.1 christos { 4850 1.1.1.2 christos /** 1011 0010 decw %e!0 */ 4851 1.1 christos if (trace) 4852 1.1 christos { 4853 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4854 1.1.1.2 christos "/** 1011 0010 decw %e!0 */", 4855 1.1 christos op[0]); 4856 1.1 christos } 4857 1.1.1.2 christos SYNTAX("decw %e!0"); 4858 1.1.1.5 christos #line 568 "rl78-decode.opc" 4859 1.1 christos ID(sub); W(); DM(None, IMMU(2)); SC(1); 4860 1.1.1.2 christos 4861 1.1 christos } 4862 1.1 christos break; 4863 1.1 christos case 0xb4: 4864 1.1 christos { 4865 1.1 christos /** 1011 0100 dec %0 */ 4866 1.1 christos if (trace) 4867 1.1 christos { 4868 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4869 1.1 christos "/** 1011 0100 dec %0 */", 4870 1.1 christos op[0]); 4871 1.1 christos } 4872 1.1 christos SYNTAX("dec %0"); 4873 1.1.1.5 christos #line 563 "rl78-decode.opc" 4874 1.1 christos ID(sub); DM(None, SADDR); SC(1); Fza; 4875 1.1.1.2 christos 4876 1.1 christos /*----------------------------------------------------------------------*/ 4877 1.1.1.2 christos 4878 1.1 christos } 4879 1.1 christos break; 4880 1.1 christos case 0xb6: 4881 1.1 christos { 4882 1.1 christos /** 1011 0110 decw %0 */ 4883 1.1 christos if (trace) 4884 1.1 christos { 4885 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4886 1.1 christos "/** 1011 0110 decw %0 */", 4887 1.1 christos op[0]); 4888 1.1 christos } 4889 1.1 christos SYNTAX("decw %0"); 4890 1.1.1.5 christos #line 577 "rl78-decode.opc" 4891 1.1 christos ID(sub); W(); DM(None, SADDR); SC(1); 4892 1.1.1.2 christos 4893 1.1 christos /*----------------------------------------------------------------------*/ 4894 1.1.1.2 christos 4895 1.1 christos } 4896 1.1 christos break; 4897 1.1 christos case 0xb8: 4898 1.1 christos { 4899 1.1.1.2 christos /** 1011 1000 movw %a0, %1 */ 4900 1.1 christos if (trace) 4901 1.1 christos { 4902 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4903 1.1.1.2 christos "/** 1011 1000 movw %a0, %1 */", 4904 1.1 christos op[0]); 4905 1.1 christos } 4906 1.1.1.2 christos SYNTAX("movw %a0, %1"); 4907 1.1.1.5 christos #line 837 "rl78-decode.opc" 4908 1.1 christos ID(mov); W(); DM(SP, IMMU(1)); SR(AX); 4909 1.1.1.2 christos 4910 1.1 christos } 4911 1.1 christos break; 4912 1.1 christos case 0xb9: 4913 1.1 christos { 4914 1.1.1.2 christos /** 1011 1001 movw %e0, %1 */ 4915 1.1 christos if (trace) 4916 1.1 christos { 4917 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4918 1.1.1.2 christos "/** 1011 1001 movw %e0, %1 */", 4919 1.1 christos op[0]); 4920 1.1 christos } 4921 1.1.1.2 christos SYNTAX("movw %e0, %1"); 4922 1.1.1.5 christos #line 825 "rl78-decode.opc" 4923 1.1 christos ID(mov); W(); DM(DE, 0); SR(AX); 4924 1.1.1.2 christos 4925 1.1 christos } 4926 1.1 christos break; 4927 1.1 christos case 0xba: 4928 1.1 christos { 4929 1.1.1.3 christos /** 1011 1010 movw %ea0, %1 */ 4930 1.1 christos if (trace) 4931 1.1 christos { 4932 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4933 1.1.1.3 christos "/** 1011 1010 movw %ea0, %1 */", 4934 1.1 christos op[0]); 4935 1.1 christos } 4936 1.1.1.2 christos SYNTAX("movw %ea0, %1"); 4937 1.1.1.5 christos #line 828 "rl78-decode.opc" 4938 1.1 christos ID(mov); W(); DM(DE, IMMU(1)); SR(AX); 4939 1.1.1.2 christos 4940 1.1 christos } 4941 1.1 christos break; 4942 1.1 christos case 0xbb: 4943 1.1 christos { 4944 1.1.1.2 christos /** 1011 1011 movw %e0, %1 */ 4945 1.1 christos if (trace) 4946 1.1 christos { 4947 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4948 1.1.1.2 christos "/** 1011 1011 movw %e0, %1 */", 4949 1.1 christos op[0]); 4950 1.1 christos } 4951 1.1.1.2 christos SYNTAX("movw %e0, %1"); 4952 1.1.1.5 christos #line 831 "rl78-decode.opc" 4953 1.1 christos ID(mov); W(); DM(HL, 0); SR(AX); 4954 1.1.1.2 christos 4955 1.1 christos } 4956 1.1 christos break; 4957 1.1 christos case 0xbc: 4958 1.1 christos { 4959 1.1.1.2 christos /** 1011 1100 movw %ea0, %1 */ 4960 1.1 christos if (trace) 4961 1.1 christos { 4962 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4963 1.1.1.2 christos "/** 1011 1100 movw %ea0, %1 */", 4964 1.1 christos op[0]); 4965 1.1 christos } 4966 1.1.1.2 christos SYNTAX("movw %ea0, %1"); 4967 1.1.1.5 christos #line 834 "rl78-decode.opc" 4968 1.1 christos ID(mov); W(); DM(HL, IMMU(1)); SR(AX); 4969 1.1.1.2 christos 4970 1.1 christos } 4971 1.1 christos break; 4972 1.1 christos case 0xbd: 4973 1.1 christos { 4974 1.1 christos /** 1011 1101 movw %0, %1 */ 4975 1.1 christos if (trace) 4976 1.1 christos { 4977 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4978 1.1 christos "/** 1011 1101 movw %0, %1 */", 4979 1.1 christos op[0]); 4980 1.1 christos } 4981 1.1 christos SYNTAX("movw %0, %1"); 4982 1.1.1.5 christos #line 901 "rl78-decode.opc" 4983 1.1 christos ID(mov); W(); DM(None, SADDR); SR(AX); 4984 1.1.1.2 christos 4985 1.1 christos } 4986 1.1 christos break; 4987 1.1 christos case 0xbe: 4988 1.1 christos { 4989 1.1.1.2 christos /** 1011 1110 movw %s0, %1 */ 4990 1.1 christos if (trace) 4991 1.1 christos { 4992 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 4993 1.1.1.2 christos "/** 1011 1110 movw %s0, %1 */", 4994 1.1 christos op[0]); 4995 1.1 christos } 4996 1.1.1.2 christos SYNTAX("movw %s0, %1"); 4997 1.1.1.5 christos #line 907 "rl78-decode.opc" 4998 1.1 christos ID(mov); W(); DM(None, SFR); SR(AX); 4999 1.1.1.2 christos 5000 1.1 christos /*----------------------------------------------------------------------*/ 5001 1.1.1.2 christos 5002 1.1 christos } 5003 1.1 christos break; 5004 1.1 christos case 0xbf: 5005 1.1 christos { 5006 1.1.1.2 christos /** 1011 1111 movw %e!0, %1 */ 5007 1.1 christos if (trace) 5008 1.1 christos { 5009 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5010 1.1.1.2 christos "/** 1011 1111 movw %e!0, %1 */", 5011 1.1 christos op[0]); 5012 1.1 christos } 5013 1.1.1.2 christos SYNTAX("movw %e!0, %1"); 5014 1.1.1.5 christos #line 822 "rl78-decode.opc" 5015 1.1 christos ID(mov); W(); DM(None, IMMU(2)); SR(AX); 5016 1.1.1.2 christos 5017 1.1 christos } 5018 1.1 christos break; 5019 1.1 christos case 0xc0: 5020 1.1 christos case 0xc2: 5021 1.1 christos case 0xc4: 5022 1.1 christos case 0xc6: 5023 1.1 christos { 5024 1.1 christos /** 1100 0rg0 pop %0 */ 5025 1.1.1.5 christos #line 992 "rl78-decode.opc" 5026 1.1 christos int rg AU = (op[0] >> 1) & 0x03; 5027 1.1 christos if (trace) 5028 1.1 christos { 5029 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5030 1.1 christos "/** 1100 0rg0 pop %0 */", 5031 1.1 christos op[0]); 5032 1.1 christos printf (" rg = 0x%x\n", rg); 5033 1.1 christos } 5034 1.1 christos SYNTAX("pop %0"); 5035 1.1.1.5 christos #line 992 "rl78-decode.opc" 5036 1.1 christos ID(mov); W(); DRW(rg); SPOP(); 5037 1.1.1.2 christos 5038 1.1 christos } 5039 1.1 christos break; 5040 1.1 christos case 0xc1: 5041 1.1 christos case 0xc3: 5042 1.1 christos case 0xc5: 5043 1.1 christos case 0xc7: 5044 1.1 christos { 5045 1.1 christos /** 1100 0rg1 push %1 */ 5046 1.1.1.5 christos #line 1000 "rl78-decode.opc" 5047 1.1 christos int rg AU = (op[0] >> 1) & 0x03; 5048 1.1 christos if (trace) 5049 1.1 christos { 5050 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5051 1.1 christos "/** 1100 0rg1 push %1 */", 5052 1.1 christos op[0]); 5053 1.1 christos printf (" rg = 0x%x\n", rg); 5054 1.1 christos } 5055 1.1 christos SYNTAX("push %1"); 5056 1.1.1.5 christos #line 1000 "rl78-decode.opc" 5057 1.1 christos ID(mov); W(); DPUSH(); SRW(rg); 5058 1.1.1.2 christos 5059 1.1 christos } 5060 1.1 christos break; 5061 1.1 christos case 0xc8: 5062 1.1 christos { 5063 1.1.1.2 christos /** 1100 1000 mov %a0, #%1 */ 5064 1.1 christos if (trace) 5065 1.1 christos { 5066 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5067 1.1.1.2 christos "/** 1100 1000 mov %a0, #%1 */", 5068 1.1 christos op[0]); 5069 1.1 christos } 5070 1.1.1.2 christos SYNTAX("mov %a0, #%1"); 5071 1.1.1.5 christos #line 645 "rl78-decode.opc" 5072 1.1 christos ID(mov); DM(SP, IMMU(1)); SC(IMMU(1)); 5073 1.1.1.2 christos 5074 1.1 christos } 5075 1.1 christos break; 5076 1.1 christos case 0xc9: 5077 1.1 christos { 5078 1.1 christos /** 1100 1001 movw %0, #%1 */ 5079 1.1 christos if (trace) 5080 1.1 christos { 5081 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5082 1.1 christos "/** 1100 1001 movw %0, #%1 */", 5083 1.1 christos op[0]); 5084 1.1 christos } 5085 1.1 christos SYNTAX("movw %0, #%1"); 5086 1.1.1.5 christos #line 898 "rl78-decode.opc" 5087 1.1 christos ID(mov); W(); DM(None, SADDR); SC(IMMU(2)); 5088 1.1.1.2 christos 5089 1.1 christos } 5090 1.1 christos break; 5091 1.1 christos case 0xca: 5092 1.1 christos { 5093 1.1.1.2 christos /** 1100 1010 mov %ea0, #%1 */ 5094 1.1 christos if (trace) 5095 1.1 christos { 5096 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5097 1.1.1.2 christos "/** 1100 1010 mov %ea0, #%1 */", 5098 1.1 christos op[0]); 5099 1.1 christos } 5100 1.1.1.2 christos SYNTAX("mov %ea0, #%1"); 5101 1.1.1.5 christos #line 624 "rl78-decode.opc" 5102 1.1 christos ID(mov); DM(DE, IMMU(1)); SC(IMMU(1)); 5103 1.1.1.2 christos 5104 1.1 christos } 5105 1.1 christos break; 5106 1.1 christos case 0xcb: 5107 1.1 christos { 5108 1.1.1.2 christos /** 1100 1011 movw %s0, #%1 */ 5109 1.1 christos if (trace) 5110 1.1 christos { 5111 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5112 1.1.1.3 christos "/** 1100 1011 movw %s0, #%1 */", 5113 1.1 christos op[0]); 5114 1.1 christos } 5115 1.1.1.2 christos SYNTAX("movw %s0, #%1"); 5116 1.1.1.5 christos #line 904 "rl78-decode.opc" 5117 1.1 christos ID(mov); W(); DM(None, SFR); SC(IMMU(2)); 5118 1.1.1.2 christos 5119 1.1 christos } 5120 1.1 christos break; 5121 1.1 christos case 0xcc: 5122 1.1 christos { 5123 1.1.1.2 christos /** 1100 1100 mov %ea0, #%1 */ 5124 1.1 christos if (trace) 5125 1.1 christos { 5126 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5127 1.1.1.2 christos "/** 1100 1100 mov %ea0, #%1 */", 5128 1.1 christos op[0]); 5129 1.1 christos } 5130 1.1.1.2 christos SYNTAX("mov %ea0, #%1"); 5131 1.1.1.5 christos #line 636 "rl78-decode.opc" 5132 1.1 christos ID(mov); DM(HL, IMMU(1)); SC(IMMU(1)); 5133 1.1.1.2 christos 5134 1.1 christos } 5135 1.1 christos break; 5136 1.1 christos case 0xcd: 5137 1.1 christos { 5138 1.1 christos /** 1100 1101 mov %0, #%1 */ 5139 1.1 christos if (trace) 5140 1.1 christos { 5141 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5142 1.1 christos "/** 1100 1101 mov %0, #%1 */", 5143 1.1 christos op[0]); 5144 1.1 christos } 5145 1.1 christos SYNTAX("mov %0, #%1"); 5146 1.1.1.5 christos #line 750 "rl78-decode.opc" 5147 1.1 christos ID(mov); DM(None, SADDR); SC(IMMU(1)); 5148 1.1.1.2 christos 5149 1.1 christos } 5150 1.1 christos break; 5151 1.1 christos case 0xce: 5152 1.1 christos { 5153 1.1 christos /** 1100 1110 mov %s0, #%1 */ 5154 1.1 christos if (trace) 5155 1.1 christos { 5156 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5157 1.1 christos "/** 1100 1110 mov %s0, #%1 */", 5158 1.1 christos op[0]); 5159 1.1 christos } 5160 1.1 christos SYNTAX("mov %s0, #%1"); 5161 1.1.1.5 christos #line 756 "rl78-decode.opc" 5162 1.1 christos op0 = SFR; 5163 1.1 christos op1 = IMMU(1); 5164 1.1 christos ID(mov); DM(None, op0); SC(op1); 5165 1.1.1.2 christos if (op0 == 0xffffb && isa == RL78_ISA_G14) 5166 1.1 christos switch (op1) 5167 1.1 christos { 5168 1.1 christos case 0x01: 5169 1.1 christos rl78->syntax = "mulhu"; ID(mulhu); 5170 1.1 christos break; 5171 1.1 christos case 0x02: 5172 1.1 christos rl78->syntax = "mulh"; ID(mulh); 5173 1.1 christos break; 5174 1.1 christos case 0x03: 5175 1.1 christos rl78->syntax = "divhu"; ID(divhu); 5176 1.1 christos break; 5177 1.1 christos case 0x04: 5178 1.1.1.2 christos rl78->syntax = "divwu <old-encoding>"; ID(divwu); 5179 1.1 christos break; 5180 1.1 christos case 0x05: 5181 1.1 christos rl78->syntax = "machu"; ID(machu); 5182 1.1 christos break; 5183 1.1 christos case 0x06: 5184 1.1 christos rl78->syntax = "mach"; ID(mach); 5185 1.1 christos break; 5186 1.1.1.2 christos case 0x0b: 5187 1.1.1.2 christos rl78->syntax = "divwu"; ID(divwu); 5188 1.1.1.2 christos break; 5189 1.1 christos } 5190 1.1.1.2 christos 5191 1.1 christos } 5192 1.1 christos break; 5193 1.1 christos case 0xcf: 5194 1.1 christos { 5195 1.1.1.2 christos /** 1100 1111 mov %e!0, #%1 */ 5196 1.1 christos if (trace) 5197 1.1 christos { 5198 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5199 1.1.1.2 christos "/** 1100 1111 mov %e!0, #%1 */", 5200 1.1 christos op[0]); 5201 1.1 christos } 5202 1.1.1.2 christos SYNTAX("mov %e!0, #%1"); 5203 1.1.1.5 christos #line 615 "rl78-decode.opc" 5204 1.1 christos ID(mov); DM(None, IMMU(2)); SC(IMMU(1)); 5205 1.1.1.2 christos 5206 1.1 christos } 5207 1.1 christos break; 5208 1.1 christos case 0xd0: 5209 1.1 christos case 0xd1: 5210 1.1 christos case 0xd2: 5211 1.1 christos case 0xd3: 5212 1.1 christos { 5213 1.1 christos /** 1101 00rg cmp0 %0 */ 5214 1.1.1.5 christos #line 524 "rl78-decode.opc" 5215 1.1 christos int rg AU = op[0] & 0x03; 5216 1.1 christos if (trace) 5217 1.1 christos { 5218 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5219 1.1 christos "/** 1101 00rg cmp0 %0 */", 5220 1.1 christos op[0]); 5221 1.1 christos printf (" rg = 0x%x\n", rg); 5222 1.1 christos } 5223 1.1 christos SYNTAX("cmp0 %0"); 5224 1.1.1.5 christos #line 524 "rl78-decode.opc" 5225 1.1 christos ID(cmp); DRB(rg); SC(0); Fzac; 5226 1.1.1.2 christos 5227 1.1 christos } 5228 1.1 christos break; 5229 1.1 christos case 0xd4: 5230 1.1 christos { 5231 1.1 christos /** 1101 0100 cmp0 %0 */ 5232 1.1 christos if (trace) 5233 1.1 christos { 5234 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5235 1.1 christos "/** 1101 0100 cmp0 %0 */", 5236 1.1 christos op[0]); 5237 1.1 christos } 5238 1.1 christos SYNTAX("cmp0 %0"); 5239 1.1.1.5 christos #line 527 "rl78-decode.opc" 5240 1.1 christos ID(cmp); DM(None, SADDR); SC(0); Fzac; 5241 1.1.1.2 christos 5242 1.1 christos /*----------------------------------------------------------------------*/ 5243 1.1.1.2 christos 5244 1.1 christos } 5245 1.1 christos break; 5246 1.1 christos case 0xd5: 5247 1.1 christos { 5248 1.1.1.2 christos /** 1101 0101 cmp0 %e!0 */ 5249 1.1 christos if (trace) 5250 1.1 christos { 5251 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5252 1.1.1.2 christos "/** 1101 0101 cmp0 %e!0 */", 5253 1.1 christos op[0]); 5254 1.1 christos } 5255 1.1.1.2 christos SYNTAX("cmp0 %e!0"); 5256 1.1.1.5 christos #line 521 "rl78-decode.opc" 5257 1.1 christos ID(cmp); DM(None, IMMU(2)); SC(0); Fzac; 5258 1.1.1.2 christos 5259 1.1 christos } 5260 1.1 christos break; 5261 1.1 christos case 0xd6: 5262 1.1 christos { 5263 1.1 christos /** 1101 0110 mulu x */ 5264 1.1 christos if (trace) 5265 1.1 christos { 5266 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5267 1.1 christos "/** 1101 0110 mulu x */", 5268 1.1 christos op[0]); 5269 1.1 christos } 5270 1.1 christos SYNTAX("mulu x"); 5271 1.1.1.5 christos #line 912 "rl78-decode.opc" 5272 1.1.1.3 christos ID(mulu); 5273 1.1.1.2 christos 5274 1.1 christos /*----------------------------------------------------------------------*/ 5275 1.1.1.2 christos 5276 1.1 christos } 5277 1.1 christos break; 5278 1.1 christos case 0xd7: 5279 1.1 christos { 5280 1.1 christos /** 1101 0111 ret */ 5281 1.1 christos if (trace) 5282 1.1 christos { 5283 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5284 1.1 christos "/** 1101 0111 ret */", 5285 1.1 christos op[0]); 5286 1.1 christos } 5287 1.1 christos SYNTAX("ret"); 5288 1.1.1.5 christos #line 1008 "rl78-decode.opc" 5289 1.1 christos ID(ret); 5290 1.1.1.2 christos 5291 1.1 christos } 5292 1.1 christos break; 5293 1.1 christos case 0xd8: 5294 1.1 christos { 5295 1.1 christos /** 1101 1000 mov %0, %1 */ 5296 1.1 christos if (trace) 5297 1.1 christos { 5298 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5299 1.1 christos "/** 1101 1000 mov %0, %1 */", 5300 1.1 christos op[0]); 5301 1.1 christos } 5302 1.1 christos SYNTAX("mov %0, %1"); 5303 1.1.1.5 christos #line 717 "rl78-decode.opc" 5304 1.1 christos ID(mov); DR(X); SM(None, SADDR); 5305 1.1.1.2 christos 5306 1.1 christos } 5307 1.1 christos break; 5308 1.1 christos case 0xd9: 5309 1.1 christos { 5310 1.1.1.2 christos /** 1101 1001 mov %0, %e!1 */ 5311 1.1 christos if (trace) 5312 1.1 christos { 5313 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5314 1.1.1.2 christos "/** 1101 1001 mov %0, %e!1 */", 5315 1.1 christos op[0]); 5316 1.1 christos } 5317 1.1.1.2 christos SYNTAX("mov %0, %e!1"); 5318 1.1.1.5 christos #line 714 "rl78-decode.opc" 5319 1.1 christos ID(mov); DR(X); SM(None, IMMU(2)); 5320 1.1.1.2 christos 5321 1.1 christos } 5322 1.1 christos break; 5323 1.1 christos case 0xda: 5324 1.1 christos case 0xea: 5325 1.1 christos case 0xfa: 5326 1.1 christos { 5327 1.1 christos /** 11ra 1010 movw %0, %1 */ 5328 1.1.1.5 christos #line 895 "rl78-decode.opc" 5329 1.1 christos int ra AU = (op[0] >> 4) & 0x03; 5330 1.1 christos if (trace) 5331 1.1 christos { 5332 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5333 1.1 christos "/** 11ra 1010 movw %0, %1 */", 5334 1.1 christos op[0]); 5335 1.1 christos printf (" ra = 0x%x\n", ra); 5336 1.1 christos } 5337 1.1 christos SYNTAX("movw %0, %1"); 5338 1.1.1.5 christos #line 895 "rl78-decode.opc" 5339 1.1 christos ID(mov); W(); DRW(ra); SM(None, SADDR); 5340 1.1.1.2 christos 5341 1.1 christos } 5342 1.1 christos break; 5343 1.1 christos case 0xdb: 5344 1.1 christos case 0xeb: 5345 1.1 christos case 0xfb: 5346 1.1 christos { 5347 1.1.1.3 christos /** 11ra 1011 movw %0, %es!1 */ 5348 1.1.1.5 christos #line 892 "rl78-decode.opc" 5349 1.1 christos int ra AU = (op[0] >> 4) & 0x03; 5350 1.1 christos if (trace) 5351 1.1 christos { 5352 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5353 1.1.1.3 christos "/** 11ra 1011 movw %0, %es!1 */", 5354 1.1 christos op[0]); 5355 1.1 christos printf (" ra = 0x%x\n", ra); 5356 1.1 christos } 5357 1.1.1.3 christos SYNTAX("movw %0, %es!1"); 5358 1.1.1.5 christos #line 892 "rl78-decode.opc" 5359 1.1 christos ID(mov); W(); DRW(ra); SM(None, IMMU(2)); 5360 1.1.1.2 christos 5361 1.1 christos } 5362 1.1 christos break; 5363 1.1 christos case 0xdc: 5364 1.1 christos { 5365 1.1 christos /** 1101 1100 bc $%a0 */ 5366 1.1 christos if (trace) 5367 1.1 christos { 5368 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5369 1.1 christos "/** 1101 1100 bc $%a0 */", 5370 1.1 christos op[0]); 5371 1.1 christos } 5372 1.1 christos SYNTAX("bc $%a0"); 5373 1.1.1.5 christos #line 340 "rl78-decode.opc" 5374 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(C); 5375 1.1.1.2 christos 5376 1.1 christos } 5377 1.1 christos break; 5378 1.1 christos case 0xdd: 5379 1.1 christos { 5380 1.1 christos /** 1101 1101 bz $%a0 */ 5381 1.1 christos if (trace) 5382 1.1 christos { 5383 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5384 1.1 christos "/** 1101 1101 bz $%a0 */", 5385 1.1 christos op[0]); 5386 1.1 christos } 5387 1.1 christos SYNTAX("bz $%a0"); 5388 1.1.1.5 christos #line 352 "rl78-decode.opc" 5389 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(Z); 5390 1.1.1.2 christos 5391 1.1 christos } 5392 1.1 christos break; 5393 1.1 christos case 0xde: 5394 1.1 christos { 5395 1.1 christos /** 1101 1110 bnc $%a0 */ 5396 1.1 christos if (trace) 5397 1.1 christos { 5398 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5399 1.1 christos "/** 1101 1110 bnc $%a0 */", 5400 1.1 christos op[0]); 5401 1.1 christos } 5402 1.1 christos SYNTAX("bnc $%a0"); 5403 1.1.1.5 christos #line 343 "rl78-decode.opc" 5404 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(NC); 5405 1.1.1.2 christos 5406 1.1 christos } 5407 1.1 christos break; 5408 1.1 christos case 0xdf: 5409 1.1 christos { 5410 1.1 christos /** 1101 1111 bnz $%a0 */ 5411 1.1 christos if (trace) 5412 1.1 christos { 5413 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5414 1.1 christos "/** 1101 1111 bnz $%a0 */", 5415 1.1 christos op[0]); 5416 1.1 christos } 5417 1.1 christos SYNTAX("bnz $%a0"); 5418 1.1.1.5 christos #line 355 "rl78-decode.opc" 5419 1.1 christos ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(NZ); 5420 1.1.1.2 christos 5421 1.1 christos /*----------------------------------------------------------------------*/ 5422 1.1.1.2 christos 5423 1.1 christos } 5424 1.1 christos break; 5425 1.1 christos case 0xe0: 5426 1.1 christos case 0xe1: 5427 1.1 christos case 0xe2: 5428 1.1 christos case 0xe3: 5429 1.1 christos { 5430 1.1 christos /** 1110 00rg oneb %0 */ 5431 1.1.1.5 christos #line 930 "rl78-decode.opc" 5432 1.1 christos int rg AU = op[0] & 0x03; 5433 1.1 christos if (trace) 5434 1.1 christos { 5435 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5436 1.1 christos "/** 1110 00rg oneb %0 */", 5437 1.1 christos op[0]); 5438 1.1 christos printf (" rg = 0x%x\n", rg); 5439 1.1 christos } 5440 1.1 christos SYNTAX("oneb %0"); 5441 1.1.1.5 christos #line 930 "rl78-decode.opc" 5442 1.1 christos ID(mov); DRB(rg); SC(1); 5443 1.1.1.2 christos 5444 1.1 christos } 5445 1.1 christos break; 5446 1.1 christos case 0xe4: 5447 1.1 christos { 5448 1.1 christos /** 1110 0100 oneb %0 */ 5449 1.1 christos if (trace) 5450 1.1 christos { 5451 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5452 1.1 christos "/** 1110 0100 oneb %0 */", 5453 1.1 christos op[0]); 5454 1.1 christos } 5455 1.1 christos SYNTAX("oneb %0"); 5456 1.1.1.5 christos #line 933 "rl78-decode.opc" 5457 1.1 christos ID(mov); DM(None, SADDR); SC(1); 5458 1.1.1.2 christos 5459 1.1 christos /*----------------------------------------------------------------------*/ 5460 1.1.1.2 christos 5461 1.1 christos } 5462 1.1 christos break; 5463 1.1 christos case 0xe5: 5464 1.1 christos { 5465 1.1.1.2 christos /** 1110 0101 oneb %e!0 */ 5466 1.1 christos if (trace) 5467 1.1 christos { 5468 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5469 1.1.1.2 christos "/** 1110 0101 oneb %e!0 */", 5470 1.1 christos op[0]); 5471 1.1 christos } 5472 1.1.1.2 christos SYNTAX("oneb %e!0"); 5473 1.1.1.5 christos #line 927 "rl78-decode.opc" 5474 1.1 christos ID(mov); DM(None, IMMU(2)); SC(1); 5475 1.1.1.2 christos 5476 1.1 christos } 5477 1.1 christos break; 5478 1.1 christos case 0xe6: 5479 1.1 christos { 5480 1.1 christos /** 1110 0110 onew %0 */ 5481 1.1 christos if (trace) 5482 1.1 christos { 5483 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5484 1.1 christos "/** 1110 0110 onew %0 */", 5485 1.1 christos op[0]); 5486 1.1 christos } 5487 1.1 christos SYNTAX("onew %0"); 5488 1.1.1.5 christos #line 938 "rl78-decode.opc" 5489 1.1 christos ID(mov); DR(AX); SC(1); 5490 1.1.1.2 christos 5491 1.1 christos } 5492 1.1 christos break; 5493 1.1 christos case 0xe7: 5494 1.1 christos { 5495 1.1 christos /** 1110 0111 onew %0 */ 5496 1.1 christos if (trace) 5497 1.1 christos { 5498 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5499 1.1 christos "/** 1110 0111 onew %0 */", 5500 1.1 christos op[0]); 5501 1.1 christos } 5502 1.1 christos SYNTAX("onew %0"); 5503 1.1.1.5 christos #line 941 "rl78-decode.opc" 5504 1.1 christos ID(mov); DR(BC); SC(1); 5505 1.1.1.2 christos 5506 1.1 christos /*----------------------------------------------------------------------*/ 5507 1.1.1.2 christos 5508 1.1 christos } 5509 1.1 christos break; 5510 1.1 christos case 0xe8: 5511 1.1 christos { 5512 1.1 christos /** 1110 1000 mov %0, %1 */ 5513 1.1 christos if (trace) 5514 1.1 christos { 5515 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5516 1.1 christos "/** 1110 1000 mov %0, %1 */", 5517 1.1 christos op[0]); 5518 1.1 christos } 5519 1.1 christos SYNTAX("mov %0, %1"); 5520 1.1.1.5 christos #line 705 "rl78-decode.opc" 5521 1.1 christos ID(mov); DR(B); SM(None, SADDR); 5522 1.1.1.2 christos 5523 1.1 christos } 5524 1.1 christos break; 5525 1.1 christos case 0xe9: 5526 1.1 christos { 5527 1.1.1.2 christos /** 1110 1001 mov %0, %e!1 */ 5528 1.1 christos if (trace) 5529 1.1 christos { 5530 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5531 1.1.1.2 christos "/** 1110 1001 mov %0, %e!1 */", 5532 1.1 christos op[0]); 5533 1.1 christos } 5534 1.1.1.2 christos SYNTAX("mov %0, %e!1"); 5535 1.1.1.5 christos #line 699 "rl78-decode.opc" 5536 1.1 christos ID(mov); DR(B); SM(None, IMMU(2)); 5537 1.1.1.2 christos 5538 1.1 christos } 5539 1.1 christos break; 5540 1.1 christos case 0xec: 5541 1.1 christos { 5542 1.1 christos /** 1110 1100 br !%!a0 */ 5543 1.1 christos if (trace) 5544 1.1 christos { 5545 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5546 1.1 christos "/** 1110 1100 br !%!a0 */", 5547 1.1 christos op[0]); 5548 1.1 christos } 5549 1.1 christos SYNTAX("br !%!a0"); 5550 1.1.1.5 christos #line 374 "rl78-decode.opc" 5551 1.1 christos ID(branch); DC(IMMU(3)); 5552 1.1.1.2 christos 5553 1.1 christos } 5554 1.1 christos break; 5555 1.1 christos case 0xed: 5556 1.1 christos { 5557 1.1 christos /** 1110 1101 br %!a0 */ 5558 1.1 christos if (trace) 5559 1.1 christos { 5560 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5561 1.1 christos "/** 1110 1101 br %!a0 */", 5562 1.1 christos op[0]); 5563 1.1 christos } 5564 1.1 christos SYNTAX("br %!a0"); 5565 1.1.1.5 christos #line 377 "rl78-decode.opc" 5566 1.1 christos ID(branch); DC(IMMU(2)); 5567 1.1.1.2 christos 5568 1.1 christos } 5569 1.1 christos break; 5570 1.1 christos case 0xee: 5571 1.1 christos { 5572 1.1 christos /** 1110 1110 br $%!a0 */ 5573 1.1 christos if (trace) 5574 1.1 christos { 5575 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5576 1.1 christos "/** 1110 1110 br $%!a0 */", 5577 1.1 christos op[0]); 5578 1.1 christos } 5579 1.1 christos SYNTAX("br $%!a0"); 5580 1.1.1.5 christos #line 380 "rl78-decode.opc" 5581 1.1 christos ID(branch); DC(pc+IMMS(2)+3); 5582 1.1.1.2 christos 5583 1.1 christos } 5584 1.1 christos break; 5585 1.1 christos case 0xef: 5586 1.1 christos { 5587 1.1 christos /** 1110 1111 br $%a0 */ 5588 1.1 christos if (trace) 5589 1.1 christos { 5590 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5591 1.1 christos "/** 1110 1111 br $%a0 */", 5592 1.1 christos op[0]); 5593 1.1 christos } 5594 1.1 christos SYNTAX("br $%a0"); 5595 1.1.1.5 christos #line 383 "rl78-decode.opc" 5596 1.1 christos ID(branch); DC(pc+IMMS(1)+2); 5597 1.1.1.2 christos 5598 1.1 christos } 5599 1.1 christos break; 5600 1.1 christos case 0xf0: 5601 1.1 christos case 0xf1: 5602 1.1 christos case 0xf2: 5603 1.1 christos case 0xf3: 5604 1.1 christos { 5605 1.1 christos /** 1111 00rg clrb %0 */ 5606 1.1.1.5 christos #line 470 "rl78-decode.opc" 5607 1.1 christos int rg AU = op[0] & 0x03; 5608 1.1 christos if (trace) 5609 1.1 christos { 5610 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5611 1.1 christos "/** 1111 00rg clrb %0 */", 5612 1.1 christos op[0]); 5613 1.1 christos printf (" rg = 0x%x\n", rg); 5614 1.1 christos } 5615 1.1 christos SYNTAX("clrb %0"); 5616 1.1.1.5 christos #line 470 "rl78-decode.opc" 5617 1.1 christos ID(mov); DRB(rg); SC(0); 5618 1.1.1.2 christos 5619 1.1 christos } 5620 1.1 christos break; 5621 1.1 christos case 0xf4: 5622 1.1 christos { 5623 1.1 christos /** 1111 0100 clrb %0 */ 5624 1.1 christos if (trace) 5625 1.1 christos { 5626 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5627 1.1 christos "/** 1111 0100 clrb %0 */", 5628 1.1 christos op[0]); 5629 1.1 christos } 5630 1.1 christos SYNTAX("clrb %0"); 5631 1.1.1.5 christos #line 473 "rl78-decode.opc" 5632 1.1 christos ID(mov); DM(None, SADDR); SC(0); 5633 1.1.1.2 christos 5634 1.1 christos /*----------------------------------------------------------------------*/ 5635 1.1.1.2 christos 5636 1.1 christos } 5637 1.1 christos break; 5638 1.1 christos case 0xf5: 5639 1.1 christos { 5640 1.1.1.2 christos /** 1111 0101 clrb %e!0 */ 5641 1.1 christos if (trace) 5642 1.1 christos { 5643 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5644 1.1.1.2 christos "/** 1111 0101 clrb %e!0 */", 5645 1.1 christos op[0]); 5646 1.1 christos } 5647 1.1.1.2 christos SYNTAX("clrb %e!0"); 5648 1.1.1.5 christos #line 467 "rl78-decode.opc" 5649 1.1 christos ID(mov); DM(None, IMMU(2)); SC(0); 5650 1.1.1.2 christos 5651 1.1 christos } 5652 1.1 christos break; 5653 1.1 christos case 0xf6: 5654 1.1 christos { 5655 1.1 christos /** 1111 0110 clrw %0 */ 5656 1.1 christos if (trace) 5657 1.1 christos { 5658 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5659 1.1 christos "/** 1111 0110 clrw %0 */", 5660 1.1 christos op[0]); 5661 1.1 christos } 5662 1.1 christos SYNTAX("clrw %0"); 5663 1.1.1.5 christos #line 478 "rl78-decode.opc" 5664 1.1 christos ID(mov); DR(AX); SC(0); 5665 1.1.1.2 christos 5666 1.1 christos } 5667 1.1 christos break; 5668 1.1 christos case 0xf7: 5669 1.1 christos { 5670 1.1 christos /** 1111 0111 clrw %0 */ 5671 1.1 christos if (trace) 5672 1.1 christos { 5673 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5674 1.1 christos "/** 1111 0111 clrw %0 */", 5675 1.1 christos op[0]); 5676 1.1 christos } 5677 1.1 christos SYNTAX("clrw %0"); 5678 1.1.1.5 christos #line 481 "rl78-decode.opc" 5679 1.1 christos ID(mov); DR(BC); SC(0); 5680 1.1.1.2 christos 5681 1.1 christos /*----------------------------------------------------------------------*/ 5682 1.1.1.2 christos 5683 1.1 christos } 5684 1.1 christos break; 5685 1.1 christos case 0xf8: 5686 1.1 christos { 5687 1.1 christos /** 1111 1000 mov %0, %1 */ 5688 1.1 christos if (trace) 5689 1.1 christos { 5690 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5691 1.1 christos "/** 1111 1000 mov %0, %1 */", 5692 1.1 christos op[0]); 5693 1.1 christos } 5694 1.1 christos SYNTAX("mov %0, %1"); 5695 1.1.1.5 christos #line 711 "rl78-decode.opc" 5696 1.1 christos ID(mov); DR(C); SM(None, SADDR); 5697 1.1.1.2 christos 5698 1.1 christos } 5699 1.1 christos break; 5700 1.1 christos case 0xf9: 5701 1.1 christos { 5702 1.1.1.2 christos /** 1111 1001 mov %0, %e!1 */ 5703 1.1 christos if (trace) 5704 1.1 christos { 5705 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5706 1.1.1.2 christos "/** 1111 1001 mov %0, %e!1 */", 5707 1.1 christos op[0]); 5708 1.1 christos } 5709 1.1.1.2 christos SYNTAX("mov %0, %e!1"); 5710 1.1.1.5 christos #line 708 "rl78-decode.opc" 5711 1.1 christos ID(mov); DR(C); SM(None, IMMU(2)); 5712 1.1.1.2 christos 5713 1.1 christos } 5714 1.1 christos break; 5715 1.1 christos case 0xfc: 5716 1.1 christos { 5717 1.1 christos /** 1111 1100 call !%!a0 */ 5718 1.1 christos if (trace) 5719 1.1 christos { 5720 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5721 1.1 christos "/** 1111 1100 call !%!a0 */", 5722 1.1 christos op[0]); 5723 1.1 christos } 5724 1.1 christos SYNTAX("call !%!a0"); 5725 1.1.1.5 christos #line 427 "rl78-decode.opc" 5726 1.1 christos ID(call); DC(IMMU(3)); 5727 1.1.1.2 christos 5728 1.1 christos } 5729 1.1 christos break; 5730 1.1 christos case 0xfd: 5731 1.1 christos { 5732 1.1 christos /** 1111 1101 call %!a0 */ 5733 1.1 christos if (trace) 5734 1.1 christos { 5735 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5736 1.1 christos "/** 1111 1101 call %!a0 */", 5737 1.1 christos op[0]); 5738 1.1 christos } 5739 1.1 christos SYNTAX("call %!a0"); 5740 1.1.1.5 christos #line 430 "rl78-decode.opc" 5741 1.1 christos ID(call); DC(IMMU(2)); 5742 1.1.1.2 christos 5743 1.1 christos } 5744 1.1 christos break; 5745 1.1 christos case 0xfe: 5746 1.1 christos { 5747 1.1 christos /** 1111 1110 call $%!a0 */ 5748 1.1 christos if (trace) 5749 1.1 christos { 5750 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5751 1.1 christos "/** 1111 1110 call $%!a0 */", 5752 1.1 christos op[0]); 5753 1.1 christos } 5754 1.1 christos SYNTAX("call $%!a0"); 5755 1.1.1.5 christos #line 433 "rl78-decode.opc" 5756 1.1 christos ID(call); DC(pc+IMMS(2)+3); 5757 1.1.1.2 christos 5758 1.1 christos } 5759 1.1 christos break; 5760 1.1 christos case 0xff: 5761 1.1 christos { 5762 1.1 christos /** 1111 1111 brk1 */ 5763 1.1 christos if (trace) 5764 1.1 christos { 5765 1.1 christos printf ("\033[33m%s\033[0m %02x\n", 5766 1.1 christos "/** 1111 1111 brk1 */", 5767 1.1 christos op[0]); 5768 1.1 christos } 5769 1.1 christos SYNTAX("brk1"); 5770 1.1.1.5 christos #line 391 "rl78-decode.opc" 5771 1.1 christos ID(break); 5772 1.1.1.2 christos 5773 1.1 christos } 5774 1.1 christos break; 5775 1.1 christos } 5776 1.1.1.5 christos #line 1296 "rl78-decode.opc" 5777 1.1 christos 5778 1.1 christos return rl78->n_bytes; 5779 1.1 christos } 5780