1 // license:BSD-3-Clause
2 // copyright-holders:Wilbert Pol
3 #define RLC_8BIT(x)             \
4 {                               \
5 	uint8_t f;           \
6 	(x)=(uint8_t)(((x)<<1)|((x)>>7));      \
7 	if( (x)&1 )                 \
8 		f=FLAG_C;               \
9 	else                        \
10 		f=0;                    \
11 	if( (x)==0 )                \
12 		f|=FLAG_Z;              \
13 	m_F=f;          \
14 }
15 
16 #define RL_8BIT(x)              \
17 {                               \
18 	uint8_t r;           \
19 	r=((x)&0x80)?FLAG_C:0;      \
20 	(x)=(uint8_t)(((x)<<1)|((m_F&FLAG_C)?1:0));    \
21 	if( (x)==0 )                \
22 		r|=FLAG_Z;              \
23 	m_F=r;          \
24 }
25 
26 #define RRC_8BIT(x)             \
27 {                               \
28 	uint8_t f;           \
29 	(x)=(uint8_t)(((x)>>1)|((x)<<7));      \
30 	if( (x)&0x80 )              \
31 		f=FLAG_C;               \
32 	else                        \
33 		f=0;                    \
34 	if( (x)==0 )                \
35 		f|=FLAG_Z;              \
36 	m_F=f;          \
37 }
38 
39 #define RR_8BIT(x)              \
40 {                               \
41 	uint8_t r;           \
42 	r=((x)&1)?FLAG_C:0;         \
43 	(x)=(uint8_t)(((x)>>1)|((m_F&FLAG_C)?0x80:0));     \
44 	if( (x)==0 )                \
45 		r|=FLAG_Z;              \
46 	m_F=r;          \
47 }
48 
49 #define SLA_8BIT(x)             \
50 {                               \
51 	uint8_t f;           \
52 	if( (x)&0x80 )              \
53 		f=FLAG_C;               \
54 	else                        \
55 		f=0;                    \
56 	(x)<<=1;                    \
57 	if( (x)==0 )                \
58 		f|=FLAG_Z;              \
59 	m_F=f;          \
60 }
61 
62 #define SRA_8BIT(x)             \
63 {                               \
64 	uint8_t f;           \
65 	if( (x)&1 )                 \
66 		f=FLAG_C;               \
67 	else                        \
68 		f=0;                    \
69 	(x)=(uint8_t)(((char)(x))>>1);     \
70 	if( (x)==0 )                \
71 		f|=FLAG_Z;              \
72 	m_F=f;          \
73 }
74 
75 #define SWAP_8BIT(x)            \
76 	(x)=(uint8_t)(((x)>>4)|((x)<<4));      \
77 	if( (x)==0 )                \
78 		m_F=FLAG_Z; \
79 	else                        \
80 		m_F=0;
81 
82 
83 #define SRL_8BIT(x)             \
84 {                               \
85 	uint8_t f;           \
86 	if( (x)&1 )                 \
87 		f=FLAG_C;               \
88 	else                        \
89 		f=0;                    \
90 	(x)>>=1;                    \
91 	if( (x)==0 )                \
92 		f|=FLAG_Z;              \
93 	m_F=f;          \
94 }
95 
96 #define BIT_8BIT(n,x)           \
97 	if( (x)&(1<<(n)) )          \
98 		m_F=(uint8_t)(FLAG_H|(m_F&FLAG_C));  \
99 	else                        \
100 		m_F=(uint8_t)(FLAG_Z|FLAG_H|(m_F&FLAG_C));
101 
102 #define RES_8BIT(n,x)   (x)&=~(1<<(n));
103 
104 #define SET_8BIT(n,x)   (x)|=(1<<(n));
105 
106 /**********************************************************/
107 
108 case 0x00:
109 	/*      RLC B */
110 
111 	RLC_8BIT (m_B)
112 	break;
113 case 0x01:
114 	/*      RLC C */
115 
116 	RLC_8BIT (m_C)
117 	break;
118 case 0x02:
119 	/*      RLC D */
120 
121 	RLC_8BIT (m_D)
122 	break;
123 case 0x03:
124 	/*      RLC E */
125 
126 	RLC_8BIT (m_E)
127 	break;
128 case 0x04:
129 	/*      RLC H */
130 
131 	RLC_8BIT (m_H)
132 	break;
133 case 0x05:
134 	/*      RLC L */
135 
136 	RLC_8BIT (m_L)
137 	break;
138 case 0x06:
139 	/*      RLC (HL) */
140 	{
141 		uint16_t addr = ( m_H << 8 ) | m_L;
142 
143 		x = mem_read_byte( addr );
144 		RLC_8BIT (x)
145 		mem_write_byte( addr, x );
146 	}
147 	break;
148 case 0x07:
149 	/*      RLC A */
150 
151 	RLC_8BIT (m_A)
152 	break;
153 case 0x08:
154 	/*      RRC B */
155 
156 	RRC_8BIT (m_B)
157 	break;
158 case 0x09:
159 	/*      RRC C */
160 
161 	RRC_8BIT (m_C)
162 	break;
163 case 0x0A:
164 	/*      RRC D */
165 
166 	RRC_8BIT (m_D)
167 	break;
168 case 0x0B:
169 	/*      RRC E */
170 
171 	RRC_8BIT (m_E)
172 	break;
173 case 0x0C:
174 	/*      RRC H */
175 
176 	RRC_8BIT (m_H)
177 	break;
178 case 0x0D:
179 	/*      RRC L */
180 
181 	RRC_8BIT (m_L)
182 	break;
183 case 0x0E:
184 	/*      RRC (HL) */
185 	{
186 		uint16_t addr = ( m_H << 8 ) | m_L;
187 
188 		x = mem_read_byte( addr);
189 		RRC_8BIT (x)
190 		mem_write_byte( addr, x);
191 	}
192 	break;
193 case 0x0F:
194 	/*      RRC A */
195 
196 	RRC_8BIT (m_A)
197 	break;
198 case 0x10:
199 	/*      RL B */
200 
201 	RL_8BIT (m_B)
202 	break;
203 case 0x11:
204 	/*      RL C */
205 
206 	RL_8BIT (m_C)
207 	break;
208 case 0x12:
209 	/*      RL D */
210 
211 	RL_8BIT (m_D)
212 	break;
213 case 0x13:
214 	/*      RL E */
215 
216 	RL_8BIT (m_E)
217 	break;
218 case 0x14:
219 	/*      RL H */
220 
221 	RL_8BIT (m_H)
222 	break;
223 case 0x15:
224 	/*      RL L */
225 
226 	RL_8BIT (m_L)
227 	break;
228 case 0x16:
229 	/*      RL (HL) */
230 	{
231 		uint16_t addr = ( m_H << 8 ) | m_L;
232 
233 		x = mem_read_byte( addr);
234 		RL_8BIT (x)
235 		mem_write_byte( addr, x);
236 	}
237 	break;
238 case 0x17:
239 	/*      RL A */
240 
241 	RL_8BIT (m_A)
242 	break;
243 case 0x18:
244 	/*      RR B */
245 
246 	RR_8BIT (m_B)
247 	break;
248 case 0x19:
249 	/*      RR C */
250 
251 	RR_8BIT (m_C)
252 	break;
253 case 0x1A:
254 	/*      RR D */
255 
256 	RR_8BIT (m_D)
257 	break;
258 case 0x1B:
259 	/*      RR E */
260 
261 	RR_8BIT (m_E)
262 	break;
263 case 0x1C:
264 	/*      RR H */
265 
266 	RR_8BIT (m_H)
267 	break;
268 case 0x1D:
269 	/*      RR L */
270 
271 	RR_8BIT (m_L)
272 	break;
273 case 0x1E:
274 	/*      RR (HL) */
275 	{
276 		uint16_t addr = ( m_H << 8 ) | m_L;
277 
278 		x = mem_read_byte( addr);
279 		RR_8BIT (x)
280 		mem_write_byte( addr, x);
281 	}
282 	break;
283 case 0x1F:
284 	/*      RR A */
285 
286 	RR_8BIT (m_A)
287 	break;
288 case 0x20:
289 	/*      SLA B */
290 
291 	SLA_8BIT (m_B)
292 	break;
293 case 0x21:
294 	/*      SLA C */
295 
296 	SLA_8BIT (m_C)
297 	break;
298 case 0x22:
299 	/*      SLA D */
300 
301 	SLA_8BIT (m_D)
302 	break;
303 case 0x23:
304 	/*      SLA E */
305 
306 	SLA_8BIT (m_E)
307 	break;
308 case 0x24:
309 	/*      SLA H */
310 
311 	SLA_8BIT (m_H)
312 	break;
313 case 0x25:
314 	/*      SLA L */
315 
316 	SLA_8BIT (m_L)
317 	break;
318 case 0x26:
319 	/*      SLA (HL) */
320 	{
321 		uint16_t addr = ( m_H << 8 ) | m_L;
322 
323 		x = mem_read_byte( addr);
324 		SLA_8BIT (x)
325 		mem_write_byte( addr, x);
326 	}
327 	break;
328 case 0x27:
329 	/*      SLA A */
330 
331 	SLA_8BIT (m_A)
332 	break;
333 case 0x28:
334 	/*      SRA B */
335 
336 	SRA_8BIT (m_B)
337 	break;
338 case 0x29:
339 	/*      SRA C */
340 
341 	SRA_8BIT (m_C)
342 	break;
343 case 0x2A:
344 	/*      SRA D */
345 
346 	SRA_8BIT (m_D)
347 	break;
348 case 0x2B:
349 	/*      SRA E */
350 
351 	SRA_8BIT (m_E)
352 	break;
353 case 0x2C:
354 	/*      SRA H */
355 
356 	SRA_8BIT (m_H)
357 	break;
358 case 0x2D:
359 	/*      SRA L */
360 
361 	SRA_8BIT (m_L)
362 	break;
363 case 0x2E:
364 	/*      SRA (HL) */
365 	{
366 		uint16_t addr = ( m_H << 8 ) | m_L;
367 
368 		x = mem_read_byte( addr);
369 		SRA_8BIT (x)
370 		mem_write_byte( addr, x);
371 	}
372 	break;
373 case 0x2F:
374 	/*      SRA A */
375 
376 	SRA_8BIT (m_A)
377 	break;
378 case 0x30:
379 	/*      SWAP B */
380 
381 	SWAP_8BIT (m_B)
382 	break;
383 case 0x31:
384 	/*      SWAP C */
385 
386 	SWAP_8BIT (m_C)
387 	break;
388 case 0x32:
389 	/*      SWAP D */
390 
391 	SWAP_8BIT (m_D)
392 	break;
393 case 0x33:
394 	/*      SWAP E */
395 
396 	SWAP_8BIT (m_E)
397 	break;
398 case 0x34:
399 	/*      SWAP H */
400 
401 	SWAP_8BIT (m_H)
402 	break;
403 case 0x35:
404 	/*      SWAP L */
405 
406 	SWAP_8BIT (m_L)
407 	break;
408 case 0x36:
409 	/*      SWAP (HL) */
410 	{
411 		uint16_t addr = ( m_H << 8 ) | m_L;
412 
413 		x = mem_read_byte( addr);
414 		SWAP_8BIT (x)
415 		mem_write_byte( addr, x);
416 	}
417 	break;
418 case 0x37:
419 	/*      SWAP A */
420 
421 	SWAP_8BIT (m_A)
422 	break;
423 case 0x38:
424 	/*      SRL B */
425 
426 	SRL_8BIT (m_B)
427 	break;
428 case 0x39:
429 	/*      SRL C */
430 
431 	SRL_8BIT (m_C)
432 	break;
433 case 0x3A:
434 	/*      SRL D */
435 
436 	SRL_8BIT (m_D)
437 	break;
438 case 0x3B:
439 	/*      SRL E */
440 
441 	SRL_8BIT (m_E)
442 	break;
443 case 0x3C:
444 	/*      SRL H */
445 
446 	SRL_8BIT (m_H)
447 	break;
448 case 0x3D:
449 	/*      SRL L */
450 
451 	SRL_8BIT (m_L)
452 	break;
453 case 0x3E:
454 	/*      SRL (HL) */
455 	{
456 		uint16_t addr = ( m_H << 8 ) | m_L;
457 
458 		x = mem_read_byte( addr);
459 		SRL_8BIT (x)
460 		mem_write_byte( addr, x);
461 	}
462 	break;
463 case 0x3F:
464 	/*      SRL A */
465 
466 	SRL_8BIT (m_A)
467 	break;
468 case 0x40:
469 	/*      BIT 0,B */
470 
471 	BIT_8BIT (0, m_B)
472 	break;
473 case 0x41:
474 	/*      BIT 0,C */
475 
476 	BIT_8BIT (0, m_C)
477 	break;
478 case 0x42:
479 	/*      BIT 0,D */
480 
481 	BIT_8BIT (0, m_D)
482 	break;
483 case 0x43:
484 	/*      BIT 0,E */
485 
486 	BIT_8BIT (0, m_E)
487 	break;
488 case 0x44:
489 	/*      BIT 0,H */
490 
491 	BIT_8BIT (0, m_H)
492 	break;
493 case 0x45:
494 	/*      BIT 0,L */
495 
496 	BIT_8BIT (0, m_L)
497 	break;
498 case 0x46:
499 	/*      BIT 0,(HL) */
500 	{
501 		uint16_t addr = ( m_H << 8 ) | m_L;
502 
503 		x = mem_read_byte( addr);
504 		BIT_8BIT (0, x)
505 	}
506 	break;
507 case 0x47:
508 	/*      BIT 0,A */
509 
510 	BIT_8BIT (0, m_A)
511 	break;
512 case 0x48:
513 	/*      BIT 1,B */
514 
515 	BIT_8BIT (1, m_B)
516 	break;
517 case 0x49:
518 	/*      BIT 1,C */
519 
520 	BIT_8BIT (1, m_C)
521 	break;
522 case 0x4A:
523 	/*      BIT 1,D */
524 
525 	BIT_8BIT (1, m_D)
526 	break;
527 case 0x4B:
528 	/*      BIT 1,E */
529 
530 	BIT_8BIT (1, m_E)
531 	break;
532 case 0x4C:
533 	/*      BIT 1,H */
534 
535 	BIT_8BIT (1, m_H)
536 	break;
537 case 0x4D:
538 	/*      BIT 1,L */
539 
540 	BIT_8BIT (1, m_L)
541 	break;
542 case 0x4E:
543 	/*      BIT 1,(HL) */
544 	{
545 		uint16_t addr = ( m_H << 8 ) | m_L;
546 
547 		x = mem_read_byte( addr);
548 		BIT_8BIT (1, x)
549 	}
550 	break;
551 case 0x4F:
552 	/*      BIT 1,A */
553 
554 	BIT_8BIT (1, m_A)
555 	break;
556 case 0x50:
557 	/*      BIT 2,B */
558 
559 	BIT_8BIT (2, m_B)
560 	break;
561 case 0x51:
562 	/*      BIT 2,C */
563 
564 	BIT_8BIT (2, m_C)
565 	break;
566 case 0x52:
567 	/*      BIT 2,D */
568 
569 	BIT_8BIT (2, m_D)
570 	break;
571 case 0x53:
572 	/*      BIT 2,E */
573 
574 	BIT_8BIT (2, m_E)
575 	break;
576 case 0x54:
577 	/*      BIT 2,H */
578 
579 	BIT_8BIT (2, m_H)
580 	break;
581 case 0x55:
582 	/*      BIT 2,L */
583 
584 	BIT_8BIT (2, m_L)
585 	break;
586 case 0x56:
587 	/*      BIT 2,(HL) */
588 	{
589 		uint16_t addr = ( m_H << 8 ) | m_L;
590 
591 		x = mem_read_byte( addr);
592 		BIT_8BIT (2, x)
593 	}
594 	break;
595 case 0x57:
596 	/*      BIT 2,A */
597 
598 	BIT_8BIT (2, m_A)
599 	break;
600 case 0x58:
601 	/*      BIT 3,B */
602 
603 	BIT_8BIT (3, m_B)
604 	break;
605 case 0x59:
606 	/*      BIT 3,C */
607 
608 	BIT_8BIT (3, m_C)
609 	break;
610 case 0x5A:
611 	/*      BIT 3,D */
612 
613 	BIT_8BIT (3, m_D)
614 	break;
615 case 0x5B:
616 	/*      BIT 3,E */
617 
618 	BIT_8BIT (3, m_E)
619 	break;
620 case 0x5C:
621 	/*      BIT 3,H */
622 
623 	BIT_8BIT (3, m_H)
624 	break;
625 case 0x5D:
626 	/*      BIT 3,L */
627 
628 	BIT_8BIT (3, m_L)
629 	break;
630 case 0x5E:
631 	/*      BIT 3,(HL) */
632 	{
633 		uint16_t addr = ( m_H << 8 ) | m_L;
634 
635 		x = mem_read_byte( addr);
636 		BIT_8BIT (3, x)
637 	}
638 	break;
639 case 0x5F:
640 	/*      BIT 3,A */
641 
642 	BIT_8BIT (3, m_A)
643 	break;
644 case 0x60:
645 	/*      BIT 4,B */
646 
647 	BIT_8BIT (4, m_B)
648 	break;
649 case 0x61:
650 	/*      BIT 4,C */
651 
652 	BIT_8BIT (4, m_C)
653 	break;
654 case 0x62:
655 	/*      BIT 4,D */
656 
657 	BIT_8BIT (4, m_D)
658 	break;
659 case 0x63:
660 	/*      BIT 4,E */
661 
662 	BIT_8BIT (4, m_E)
663 	break;
664 case 0x64:
665 	/*      BIT 4,H */
666 
667 	BIT_8BIT (4, m_H)
668 	break;
669 case 0x65:
670 	/*      BIT 4,L */
671 
672 	BIT_8BIT (4, m_L)
673 	break;
674 case 0x66:
675 	/*      BIT 4,(HL) */
676 	{
677 		uint16_t addr = ( m_H << 8 ) | m_L;
678 
679 		x = mem_read_byte( addr);
680 		BIT_8BIT (4, x)
681 	}
682 	break;
683 case 0x67:
684 	/*      BIT 4,A */
685 
686 	BIT_8BIT (4, m_A)
687 	break;
688 case 0x68:
689 	/*      BIT 5,B */
690 
691 	BIT_8BIT (5, m_B)
692 	break;
693 case 0x69:
694 	/*      BIT 5,C */
695 
696 	BIT_8BIT (5, m_C)
697 	break;
698 case 0x6A:
699 	/*      BIT 5,D */
700 
701 	BIT_8BIT (5, m_D)
702 	break;
703 case 0x6B:
704 	/*      BIT 5,E */
705 
706 	BIT_8BIT (5, m_E)
707 	break;
708 case 0x6C:
709 	/*      BIT 5,H */
710 
711 	BIT_8BIT (5, m_H)
712 	break;
713 case 0x6D:
714 	/*      BIT 5,L */
715 
716 	BIT_8BIT (5, m_L)
717 	break;
718 case 0x6E:
719 	/*      BIT 5,(HL) */
720 	{
721 		uint16_t addr = ( m_H << 8 ) | m_L;
722 
723 		x = mem_read_byte( addr);
724 		BIT_8BIT (5, x)
725 	}
726 	break;
727 case 0x6F:
728 	/*      BIT 5,A */
729 
730 	BIT_8BIT (5, m_A)
731 	break;
732 case 0x70:
733 	/*      BIT 6,B */
734 
735 	BIT_8BIT (6, m_B)
736 	break;
737 case 0x71:
738 	/*      BIT 6,C */
739 
740 	BIT_8BIT (6, m_C)
741 	break;
742 case 0x72:
743 	/*      BIT 6,D */
744 
745 	BIT_8BIT (6, m_D)
746 	break;
747 case 0x73:
748 	/*      BIT 6,E */
749 
750 	BIT_8BIT (6, m_E)
751 	break;
752 case 0x74:
753 	/*      BIT 6,H */
754 
755 	BIT_8BIT (6, m_H)
756 	break;
757 case 0x75:
758 	/*      BIT 6,L */
759 
760 	BIT_8BIT (6, m_L)
761 	break;
762 case 0x76:
763 	/*      BIT 6,(HL) */
764 	{
765 		uint16_t addr = ( m_H << 8 ) | m_L;
766 
767 		x = mem_read_byte( addr);
768 		BIT_8BIT (6, x)
769 	}
770 	break;
771 case 0x77:
772 	/*      BIT 6,A */
773 
774 	BIT_8BIT (6, m_A)
775 	break;
776 case 0x78:
777 	/*      BIT 7,B */
778 
779 	BIT_8BIT (7, m_B)
780 	break;
781 case 0x79:
782 	/*      BIT 7,C */
783 
784 	BIT_8BIT (7, m_C)
785 	break;
786 case 0x7A:
787 	/*      BIT 7,D */
788 
789 	BIT_8BIT (7, m_D)
790 	break;
791 case 0x7B:
792 	/*      BIT 7,E */
793 
794 	BIT_8BIT (7, m_E)
795 	break;
796 case 0x7C:
797 	/*      BIT 7,H */
798 
799 	BIT_8BIT (7, m_H)
800 	break;
801 case 0x7D:
802 	/*      BIT 7,L */
803 
804 	BIT_8BIT (7, m_L)
805 	break;
806 case 0x7E:
807 	/*      BIT 7,(HL) */
808 	{
809 		uint16_t addr = ( m_H << 8 ) | m_L;
810 
811 		x = mem_read_byte( addr);
812 		BIT_8BIT (7, x)
813 	}
814 	break;
815 case 0x7F:
816 	/*      BIT 7,A */
817 
818 	BIT_8BIT (7, m_A)
819 	break;
820 case 0x80:
821 	/*      RES 0,B */
822 
823 	RES_8BIT (0, m_B)
824 	break;
825 case 0x81:
826 	/*      RES 0,C */
827 
828 	RES_8BIT (0, m_C)
829 	break;
830 case 0x82:
831 	/*      RES 0,D */
832 
833 	RES_8BIT (0, m_D)
834 	break;
835 case 0x83:
836 	/*      RES 0,E */
837 
838 	RES_8BIT (0, m_E)
839 	break;
840 case 0x84:
841 	/*      RES 0,H */
842 
843 	RES_8BIT (0, m_H)
844 	break;
845 case 0x85:
846 	/*      RES 0,L */
847 
848 	RES_8BIT (0, m_L)
849 	break;
850 case 0x86:
851 	/*      RES 0,(HL) */
852 	{
853 		uint16_t addr = ( m_H << 8 ) | m_L;
854 
855 		x = mem_read_byte( addr);
856 		RES_8BIT (0, x)
857 		mem_write_byte( addr, x);
858 	}
859 	break;
860 case 0x87:
861 	/*      RES 0,A */
862 
863 	RES_8BIT (0, m_A)
864 	break;
865 case 0x88:
866 	/*      RES 1,B */
867 
868 	RES_8BIT (1, m_B)
869 	break;
870 case 0x89:
871 	/*      RES 1,C */
872 
873 	RES_8BIT (1, m_C)
874 	break;
875 case 0x8A:
876 	/*      RES 1,D */
877 
878 	RES_8BIT (1, m_D)
879 	break;
880 case 0x8B:
881 	/*      RES 1,E */
882 
883 	RES_8BIT (1, m_E)
884 	break;
885 case 0x8C:
886 	/*      RES 1,H */
887 
888 	RES_8BIT (1, m_H)
889 	break;
890 case 0x8D:
891 	/*      RES 1,L */
892 
893 	RES_8BIT (1, m_L)
894 	break;
895 case 0x8E:
896 	/*      RES 1,(HL) */
897 	{
898 		uint16_t addr = ( m_H << 8 ) | m_L;
899 
900 		x = mem_read_byte( addr);
901 		RES_8BIT (1, x)
902 		mem_write_byte( addr, x);
903 	}
904 	break;
905 case 0x8F:
906 	/*      RES 1,A */
907 
908 	RES_8BIT (1, m_A)
909 	break;
910 case 0x90:
911 	/*      RES 2,B */
912 
913 	RES_8BIT (2, m_B)
914 	break;
915 case 0x91:
916 	/*      RES 2,C */
917 
918 	RES_8BIT (2, m_C)
919 	break;
920 case 0x92:
921 	/*      RES 2,D */
922 
923 	RES_8BIT (2, m_D)
924 	break;
925 case 0x93:
926 	/*      RES 2,E */
927 
928 	RES_8BIT (2, m_E)
929 	break;
930 case 0x94:
931 	/*      RES 2,H */
932 
933 	RES_8BIT (2, m_H)
934 	break;
935 case 0x95:
936 	/*      RES 2,L */
937 
938 	RES_8BIT (2, m_L)
939 	break;
940 case 0x96:
941 	/*      RES 2,(HL) */
942 	{
943 		uint16_t addr = ( m_H << 8 ) | m_L;
944 
945 		x = mem_read_byte( addr);
946 		RES_8BIT (2, x)
947 		mem_write_byte( addr, x);
948 	}
949 	break;
950 case 0x97:
951 	/*      RES 2,A */
952 
953 	RES_8BIT (2, m_A)
954 	break;
955 case 0x98:
956 	/*      RES 3,B */
957 
958 	RES_8BIT (3, m_B)
959 	break;
960 case 0x99:
961 	/*      RES 3,C */
962 
963 	RES_8BIT (3, m_C)
964 	break;
965 case 0x9A:
966 	/*      RES 3,D */
967 
968 	RES_8BIT (3, m_D)
969 	break;
970 case 0x9B:
971 	/*      RES 3,E */
972 
973 	RES_8BIT (3, m_E)
974 	break;
975 case 0x9C:
976 	/*      RES 3,H */
977 
978 	RES_8BIT (3, m_H)
979 	break;
980 case 0x9D:
981 	/*      RES 3,L */
982 
983 	RES_8BIT (3, m_L)
984 	break;
985 case 0x9E:
986 	/*      RES 3,(HL) */
987 	{
988 		uint16_t addr = ( m_H << 8 ) | m_L;
989 
990 		x = mem_read_byte( addr);
991 		RES_8BIT (3, x)
992 		mem_write_byte( addr, x);
993 	}
994 	break;
995 case 0x9F:
996 	/*      RES 3,A */
997 
998 	RES_8BIT (3, m_A)
999 	break;
1000 case 0xA0:
1001 	/*      RES 4,B */
1002 
1003 	RES_8BIT (4, m_B)
1004 	break;
1005 case 0xA1:
1006 	/*      RES 4,C */
1007 
1008 	RES_8BIT (4, m_C)
1009 	break;
1010 case 0xA2:
1011 	/*      RES 4,D */
1012 
1013 	RES_8BIT (4, m_D)
1014 	break;
1015 case 0xA3:
1016 	/*      RES 4,E */
1017 
1018 	RES_8BIT (4, m_E)
1019 	break;
1020 case 0xA4:
1021 	/*      RES 4,H */
1022 
1023 	RES_8BIT (4, m_H)
1024 	break;
1025 case 0xA5:
1026 	/*      RES 4,L */
1027 
1028 	RES_8BIT (4, m_L)
1029 	break;
1030 case 0xA6:
1031 	/*      RES 4,(HL) */
1032 	{
1033 		uint16_t addr = ( m_H << 8 ) | m_L;
1034 
1035 		x = mem_read_byte( addr);
1036 		RES_8BIT (4, x)
1037 		mem_write_byte( addr, x);
1038 	}
1039 	break;
1040 case 0xA7:
1041 	/*      RES 4,A */
1042 
1043 	RES_8BIT (4, m_A)
1044 	break;
1045 case 0xA8:
1046 	/*      RES 5,B */
1047 
1048 	RES_8BIT (5, m_B)
1049 	break;
1050 case 0xA9:
1051 	/*      RES 5,C */
1052 
1053 	RES_8BIT (5, m_C)
1054 	break;
1055 case 0xAA:
1056 	/*      RES 5,D */
1057 
1058 	RES_8BIT (5, m_D)
1059 	break;
1060 case 0xAB:
1061 	/*      RES 5,E */
1062 
1063 	RES_8BIT (5, m_E)
1064 	break;
1065 case 0xAC:
1066 	/*      RES 5,H */
1067 
1068 	RES_8BIT (5, m_H)
1069 	break;
1070 case 0xAD:
1071 	/*      RES 5,L */
1072 
1073 	RES_8BIT (5, m_L)
1074 	break;
1075 case 0xAE:
1076 	/*      RES 5,(HL) */
1077 	{
1078 		uint16_t addr = ( m_H << 8 ) | m_L;
1079 
1080 		x = mem_read_byte( addr);
1081 		RES_8BIT (5, x)
1082 		mem_write_byte( addr, x);
1083 	}
1084 	break;
1085 case 0xAF:
1086 	/*      RES 5,A */
1087 
1088 	RES_8BIT (5, m_A)
1089 	break;
1090 case 0xB0:
1091 	/*      RES 6,B */
1092 
1093 	RES_8BIT (6, m_B)
1094 	break;
1095 case 0xB1:
1096 	/*      RES 6,C */
1097 
1098 	RES_8BIT (6, m_C)
1099 	break;
1100 case 0xB2:
1101 	/*      RES 6,D */
1102 
1103 	RES_8BIT (6, m_D)
1104 	break;
1105 case 0xB3:
1106 	/*      RES 6,E */
1107 
1108 	RES_8BIT (6, m_E)
1109 	break;
1110 case 0xB4:
1111 	/*      RES 6,H */
1112 
1113 	RES_8BIT (6, m_H)
1114 	break;
1115 case 0xB5:
1116 	/*      RES 6,L */
1117 
1118 	RES_8BIT (6, m_L)
1119 	break;
1120 case 0xB6:
1121 	/*      RES 6,(HL) */
1122 	{
1123 		uint16_t addr = ( m_H << 8 ) | m_L;
1124 
1125 		x = mem_read_byte( addr);
1126 		RES_8BIT (6, x)
1127 		mem_write_byte( addr, x);
1128 	}
1129 	break;
1130 case 0xB7:
1131 	/*      RES 6,A */
1132 
1133 	RES_8BIT (6, m_A)
1134 	break;
1135 case 0xB8:
1136 	/*      RES 7,B */
1137 
1138 	RES_8BIT (7, m_B)
1139 	break;
1140 case 0xB9:
1141 	/*      RES 7,C */
1142 
1143 	RES_8BIT (7, m_C)
1144 	break;
1145 case 0xBA:
1146 	/*      RES 7,D */
1147 
1148 	RES_8BIT (7, m_D)
1149 	break;
1150 case 0xBB:
1151 	/*      RES 7,E */
1152 
1153 	RES_8BIT (7, m_E)
1154 	break;
1155 case 0xBC:
1156 	/*      RES 7,H */
1157 
1158 	RES_8BIT (7, m_H)
1159 	break;
1160 case 0xBD:
1161 	/*      RES 7,L */
1162 
1163 	RES_8BIT (7, m_L)
1164 	break;
1165 case 0xBE:
1166 	/*      RES 7,(HL) */
1167 	{
1168 		uint16_t addr = ( m_H << 8 ) | m_L;
1169 
1170 		x = mem_read_byte( addr);
1171 		RES_8BIT (7, x)
1172 		mem_write_byte( addr, x);
1173 	}
1174 	break;
1175 case 0xBF:
1176 	/*      RES 7,A */
1177 
1178 	RES_8BIT (7, m_A)
1179 	break;
1180 case 0xC0:
1181 	/*      SET 0,B */
1182 
1183 	SET_8BIT (0, m_B)
1184 	break;
1185 case 0xC1:
1186 	/*      SET 0,C */
1187 
1188 	SET_8BIT (0, m_C)
1189 	break;
1190 case 0xC2:
1191 	/*      SET 0,D */
1192 
1193 	SET_8BIT (0, m_D)
1194 	break;
1195 case 0xC3:
1196 	/*      SET 0,E */
1197 
1198 	SET_8BIT (0, m_E)
1199 	break;
1200 case 0xC4:
1201 	/*      SET 0,H */
1202 
1203 	SET_8BIT (0, m_H)
1204 	break;
1205 case 0xC5:
1206 	/*      SET 0,L */
1207 
1208 	SET_8BIT (0, m_L)
1209 	break;
1210 case 0xC6:
1211 	/*      SET 0,(HL) */
1212 	{
1213 		uint16_t addr = ( m_H << 8 ) | m_L;
1214 
1215 		x = mem_read_byte( addr);
1216 		SET_8BIT (0, x)
1217 		mem_write_byte( addr, x);
1218 	}
1219 	break;
1220 case 0xC7:
1221 	/*      SET 0,A */
1222 
1223 	SET_8BIT (0, m_A)
1224 	break;
1225 case 0xC8:
1226 	/*      SET 1,B */
1227 
1228 	SET_8BIT (1, m_B)
1229 	break;
1230 case 0xC9:
1231 	/*      SET 1,C */
1232 
1233 	SET_8BIT (1, m_C)
1234 	break;
1235 case 0xCA:
1236 	/*      SET 1,D */
1237 
1238 	SET_8BIT (1, m_D)
1239 	break;
1240 case 0xCB:
1241 	/*      SET 1,E */
1242 
1243 	SET_8BIT (1, m_E)
1244 	break;
1245 case 0xCC:
1246 	/*      SET 1,H */
1247 
1248 	SET_8BIT (1, m_H)
1249 	break;
1250 case 0xCD:
1251 	/*      SET 1,L */
1252 
1253 	SET_8BIT (1, m_L)
1254 	break;
1255 case 0xCE:
1256 	/*      SET 1,(HL) */
1257 	{
1258 		uint16_t addr = ( m_H << 8 ) | m_L;
1259 
1260 		x = mem_read_byte( addr);
1261 		SET_8BIT (1, x)
1262 		mem_write_byte( addr, x);
1263 	}
1264 	break;
1265 case 0xCF:
1266 	/*      SET 1,A */
1267 
1268 	SET_8BIT (1, m_A)
1269 	break;
1270 case 0xD0:
1271 	/*      SET 2,B */
1272 
1273 	SET_8BIT (2, m_B)
1274 	break;
1275 case 0xD1:
1276 	/*      SET 2,C */
1277 
1278 	SET_8BIT (2, m_C)
1279 	break;
1280 case 0xD2:
1281 	/*      SET 2,D */
1282 
1283 	SET_8BIT (2, m_D)
1284 	break;
1285 case 0xD3:
1286 	/*      SET 2,E */
1287 
1288 	SET_8BIT (2, m_E)
1289 	break;
1290 case 0xD4:
1291 	/*      SET 2,H */
1292 
1293 	SET_8BIT (2, m_H)
1294 	break;
1295 case 0xD5:
1296 	/*      SET 2,L */
1297 
1298 	SET_8BIT (2, m_L)
1299 	break;
1300 case 0xD6:
1301 	/*      SET 2,(HL) */
1302 	{
1303 		uint16_t addr = ( m_H << 8 ) | m_L;
1304 
1305 		x = mem_read_byte( addr);
1306 		SET_8BIT (2, x)
1307 		mem_write_byte( addr, x);
1308 	}
1309 	break;
1310 case 0xD7:
1311 	/*      SET 2,A */
1312 
1313 	SET_8BIT (2, m_A)
1314 	break;
1315 case 0xD8:
1316 	/*      SET 3,B */
1317 
1318 	SET_8BIT (3, m_B)
1319 	break;
1320 case 0xD9:
1321 	/*      SET 3,C */
1322 
1323 	SET_8BIT (3, m_C)
1324 	break;
1325 case 0xDA:
1326 	/*      SET 3,D */
1327 
1328 	SET_8BIT (3, m_D)
1329 	break;
1330 case 0xDB:
1331 	/*      SET 3,E */
1332 
1333 	SET_8BIT (3, m_E)
1334 	break;
1335 case 0xDC:
1336 	/*      SET 3,H */
1337 
1338 	SET_8BIT (3, m_H)
1339 	break;
1340 case 0xDD:
1341 	/*      SET 3,L */
1342 
1343 	SET_8BIT (3, m_L)
1344 	break;
1345 case 0xDE:
1346 	/*      SET 3,(HL) */
1347 	{
1348 		uint16_t addr = ( m_H << 8 ) | m_L;
1349 
1350 		x = mem_read_byte( addr);
1351 		SET_8BIT (3, x)
1352 		mem_write_byte( addr, x);
1353 	}
1354 	break;
1355 case 0xDF:
1356 	/*      SET 3,A */
1357 
1358 	SET_8BIT (3, m_A)
1359 	break;
1360 case 0xE0:
1361 	/*      SET 4,B */
1362 
1363 	SET_8BIT (4, m_B)
1364 	break;
1365 case 0xE1:
1366 	/*      SET 4,C */
1367 
1368 	SET_8BIT (4, m_C)
1369 	break;
1370 case 0xE2:
1371 	/*      SET 4,D */
1372 
1373 	SET_8BIT (4, m_D)
1374 	break;
1375 case 0xE3:
1376 	/*      SET 4,E */
1377 
1378 	SET_8BIT (4, m_E)
1379 	break;
1380 case 0xE4:
1381 	/*      SET 4,H */
1382 
1383 	SET_8BIT (4, m_H)
1384 	break;
1385 case 0xE5:
1386 	/*      SET 4,L */
1387 
1388 	SET_8BIT (4, m_L)
1389 	break;
1390 case 0xE6:
1391 	/*      SET 4,(HL) */
1392 	{
1393 		uint16_t addr = ( m_H << 8 ) | m_L;
1394 
1395 		x = mem_read_byte( addr);
1396 		SET_8BIT (4, x)
1397 		mem_write_byte( addr, x);
1398 	}
1399 	break;
1400 case 0xE7:
1401 	/*      SET 4,A */
1402 
1403 	SET_8BIT (4, m_A)
1404 	break;
1405 case 0xE8:
1406 	/*      SET 5,B */
1407 
1408 	SET_8BIT (5, m_B)
1409 	break;
1410 case 0xE9:
1411 	/*      SET 5,C */
1412 
1413 	SET_8BIT (5, m_C)
1414 	break;
1415 case 0xEA:
1416 	/*      SET 5,D */
1417 
1418 	SET_8BIT (5, m_D)
1419 	break;
1420 case 0xEB:
1421 	/*      SET 5,E */
1422 
1423 	SET_8BIT (5, m_E)
1424 	break;
1425 case 0xEC:
1426 	/*      SET 5,H */
1427 
1428 	SET_8BIT (5, m_H)
1429 	break;
1430 case 0xED:
1431 	/*      SET 5,L */
1432 
1433 	SET_8BIT (5, m_L)
1434 	break;
1435 case 0xEE:
1436 	/*      SET 5,(HL) */
1437 	{
1438 		uint16_t addr = ( m_H << 8 ) | m_L;
1439 
1440 		x = mem_read_byte( addr);
1441 		SET_8BIT (5, x)
1442 		mem_write_byte( addr, x);
1443 	}
1444 	break;
1445 case 0xEF:
1446 	/*      SET 5,A */
1447 
1448 	SET_8BIT (5, m_A)
1449 	break;
1450 case 0xF0:
1451 	/*      SET 6,B */
1452 
1453 	SET_8BIT (6, m_B)
1454 	break;
1455 case 0xF1:
1456 	/*      SET 6,C */
1457 
1458 	SET_8BIT (6, m_C)
1459 	break;
1460 case 0xF2:
1461 	/*      SET 6,D */
1462 
1463 	SET_8BIT (6, m_D)
1464 	break;
1465 case 0xF3:
1466 	/*      SET 6,E */
1467 
1468 	SET_8BIT (6, m_E)
1469 	break;
1470 case 0xF4:
1471 	/*      SET 6,H */
1472 
1473 	SET_8BIT (6, m_H)
1474 	break;
1475 case 0xF5:
1476 	/*      SET 6,L */
1477 
1478 	SET_8BIT (6, m_L)
1479 	break;
1480 case 0xF6:
1481 	/*      SET 6,(HL) */
1482 	{
1483 		uint16_t addr = ( m_H << 8 ) | m_L;
1484 
1485 		x = mem_read_byte( addr);
1486 		SET_8BIT (6, x)
1487 		mem_write_byte( addr, x);
1488 	}
1489 	break;
1490 case 0xF7:
1491 	/*      SET 6,A */
1492 
1493 	SET_8BIT (6, m_A)
1494 	break;
1495 case 0xF8:
1496 	/*      SET 7,B */
1497 
1498 	SET_8BIT (7, m_B)
1499 	break;
1500 case 0xF9:
1501 	/*      SET 7,C */
1502 
1503 	SET_8BIT (7, m_C)
1504 	break;
1505 case 0xFA:
1506 	/*      SET 7,D */
1507 
1508 	SET_8BIT (7, m_D)
1509 	break;
1510 case 0xFB:
1511 	/*      SET 7,E */
1512 
1513 	SET_8BIT (7, m_E)
1514 	break;
1515 case 0xFC:
1516 	/*      SET 7,H */
1517 
1518 	SET_8BIT (7, m_H)
1519 	break;
1520 case 0xFD:
1521 	/*      SET 7,L */
1522 
1523 	SET_8BIT (7, m_L)
1524 	break;
1525 case 0xFE:
1526 	/*      SET 7,(HL) */
1527 	{
1528 		uint16_t addr = ( m_H << 8 ) | m_L;
1529 
1530 		x = mem_read_byte( addr);
1531 		SET_8BIT (7, x)
1532 		mem_write_byte( addr, x);
1533 	}
1534 	break;
1535 case 0xFF:
1536 	/*      SET 7,A */
1537 
1538 	SET_8BIT (7, m_A)
1539 	break;
1540