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