1/* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
2#line 1 "rl78-decode.opc"
3/* -*- c -*- */
4/* Copyright (C) 2012-2022 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
33static int trace = 0;
34
35typedef 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
80static int
81immediate (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
138static void
139set_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
154static int
155saddr (int x)
156{
157  if (x < 0x20)
158    return 0xfff00 + x;
159  return 0xffe00 + x;
160}
161
162static int
163sfr (int x)
164{
165  return 0xfff00 + x;
166}
167
168#define SADDR saddr (IMMU (1))
169#define SFR sfr (IMMU (1))
170
171int
172rl78_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