Home | History | Annotate | Line # | Download | only in opcodes
      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