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