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