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
immediate(int bytes,int sign_extend,LocalData * ld)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
set_bit(RL78_Opcode_Operand * op,int bit)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
saddr(int x)148 saddr (int x)
149 {
150 if (x < 0x20)
151 return 0xfff00 + x;
152 return 0xffe00 + x;
153 }
154
155 static int
sfr(int x)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
rl78_decode_opcode(unsigned long pc AU,RL78_Opcode_Decoded * rl78,int (* getbyte)(void *),void * ptr)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 }
5772