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