Yoshikazu Abe / Mbed 2 deprecated abz80

Dependencies:   mbed

Committer:
abegaichi
Date:
Sat May 07 19:06:35 2011 +0000
Revision:
1:bd86d49d7622
Parent:
0:40cf46d9746d
20110508

Who changed what in which revision?

UserRevisionLine numberNew contents of line
abegaichi 0:40cf46d9746d 1 /**************************************************************************/
abegaichi 0:40cf46d9746d 2 /*** ***/
abegaichi 1:bd86d49d7622 3 /*** Z80 compatible cpu ***/
abegaichi 0:40cf46d9746d 4 /*** ***/
abegaichi 1:bd86d49d7622 5 /*** Original1 : MAME Z80 ***/
abegaichi 1:bd86d49d7622 6 /*** Original2 : CP/M Player for Win32 Takeda.Toshiya 2004.03.05 ***/
abegaichi 1:bd86d49d7622 7 /*** MODIFY : Y.ABE 2007.11.05 Renesas sh2 BIG ENDIAN ***/
abegaichi 1:bd86d49d7622 8 /*** MODIFY : Y.ABE 2011.04.29 mbed ***/
abegaichi 0:40cf46d9746d 9 /*** ***/
abegaichi 0:40cf46d9746d 10 /**************************************************************************/
abegaichi 0:40cf46d9746d 11 #include <stdio.h>
abegaichi 0:40cf46d9746d 12 #include "define.h"
abegaichi 0:40cf46d9746d 13
abegaichi 0:40cf46d9746d 14 // Z80 register
abegaichi 0:40cf46d9746d 15 #define AF regs[0].w
abegaichi 0:40cf46d9746d 16 #define BC regs[1].w
abegaichi 1:bd86d49d7622 17 #define DE regs[2].w
abegaichi 0:40cf46d9746d 18 #define HL regs[3].w
abegaichi 0:40cf46d9746d 19 #define IX regs[4].w
abegaichi 0:40cf46d9746d 20 #define IY regs[5].w
abegaichi 0:40cf46d9746d 21
abegaichi 0:40cf46d9746d 22
abegaichi 0:40cf46d9746d 23 #ifdef _BIG_ENDIAN
abegaichi 0:40cf46d9746d 24
abegaichi 0:40cf46d9746d 25 #define _F regs[0].b[1]
abegaichi 0:40cf46d9746d 26 #define _A regs[0].b[0]
abegaichi 0:40cf46d9746d 27 #define _C regs[1].b[1]
abegaichi 0:40cf46d9746d 28 #define _B regs[1].b[0]
abegaichi 0:40cf46d9746d 29 #define _E regs[2].b[1]
abegaichi 0:40cf46d9746d 30 #define _D regs[2].b[0]
abegaichi 0:40cf46d9746d 31 #define _L regs[3].b[1]
abegaichi 0:40cf46d9746d 32 #define _H regs[3].b[0]
abegaichi 0:40cf46d9746d 33 #define _XL regs[4].b[1]
abegaichi 0:40cf46d9746d 34 #define _XH regs[4].b[0]
abegaichi 0:40cf46d9746d 35 #define _YL regs[5].b[1]
abegaichi 0:40cf46d9746d 36 #define _YH regs[5].b[0]
abegaichi 0:40cf46d9746d 37
abegaichi 0:40cf46d9746d 38 #else
abegaichi 0:40cf46d9746d 39
abegaichi 0:40cf46d9746d 40 #define _F regs[0].b[0]
abegaichi 0:40cf46d9746d 41 #define _A regs[0].b[1]
abegaichi 0:40cf46d9746d 42 #define _C regs[1].b[0]
abegaichi 0:40cf46d9746d 43 #define _B regs[1].b[1]
abegaichi 0:40cf46d9746d 44 #define _E regs[2].b[0]
abegaichi 0:40cf46d9746d 45 #define _D regs[2].b[1]
abegaichi 0:40cf46d9746d 46 #define _L regs[3].b[0]
abegaichi 0:40cf46d9746d 47 #define _H regs[3].b[1]
abegaichi 0:40cf46d9746d 48 #define _XL regs[4].b[0]
abegaichi 0:40cf46d9746d 49 #define _XH regs[4].b[1]
abegaichi 0:40cf46d9746d 50 #define _YL regs[5].b[0]
abegaichi 0:40cf46d9746d 51 #define _YH regs[5].b[1]
abegaichi 0:40cf46d9746d 52
abegaichi 0:40cf46d9746d 53 #endif
abegaichi 0:40cf46d9746d 54
abegaichi 0:40cf46d9746d 55
abegaichi 0:40cf46d9746d 56 // FLAG
abegaichi 0:40cf46d9746d 57 #define CF 0x01
abegaichi 0:40cf46d9746d 58 #define NF 0x02
abegaichi 0:40cf46d9746d 59 #define PF 0x04
abegaichi 0:40cf46d9746d 60 #define VF 0x04
abegaichi 0:40cf46d9746d 61 #define XF 0x08
abegaichi 0:40cf46d9746d 62 #define HF 0x10
abegaichi 0:40cf46d9746d 63 #define YF 0x20
abegaichi 0:40cf46d9746d 64 #define ZF 0x40
abegaichi 0:40cf46d9746d 65 #define SF 0x80
abegaichi 0:40cf46d9746d 66
abegaichi 1:bd86d49d7622 67 // mbed serial
abegaichi 0:40cf46d9746d 68 extern void SendZ80( char data );
abegaichi 0:40cf46d9746d 69 extern short RecvZ80( void );
abegaichi 0:40cf46d9746d 70 extern short BusySioZ80( void );
abegaichi 1:bd86d49d7622 71
abegaichi 0:40cf46d9746d 72 // mbed led
abegaichi 0:40cf46d9746d 73 extern void OutLedZ80( unsigned char data );
abegaichi 0:40cf46d9746d 74
abegaichi 0:40cf46d9746d 75
abegaichi 0:40cf46d9746d 76 void Z80Init( void );
abegaichi 0:40cf46d9746d 77 void Z80Reset( void );
abegaichi 0:40cf46d9746d 78 int Z80Run( void );
abegaichi 0:40cf46d9746d 79 void execute_op( void );
abegaichi 0:40cf46d9746d 80 void execute_opCB( void );
abegaichi 0:40cf46d9746d 81 void execute_opDD( void );
abegaichi 0:40cf46d9746d 82 void execute_opED( void );
abegaichi 0:40cf46d9746d 83 void execute_opFD( void );
abegaichi 0:40cf46d9746d 84 void execute_opXY( void );
abegaichi 0:40cf46d9746d 85
abegaichi 0:40cf46d9746d 86
abegaichi 1:bd86d49d7622 87 // cpu register
abegaichi 0:40cf46d9746d 88 union REGTYPE {
abegaichi 0:40cf46d9746d 89 uint8 b[2];
abegaichi 0:40cf46d9746d 90 uint16 w;
abegaichi 0:40cf46d9746d 91 } regs[6];
abegaichi 0:40cf46d9746d 92
abegaichi 0:40cf46d9746d 93
abegaichi 0:40cf46d9746d 94 uint8 _I, _R;
abegaichi 0:40cf46d9746d 95 uint16 exAF, exBC, exDE, exHL;
abegaichi 0:40cf46d9746d 96 uint16 SP, PC;
abegaichi 0:40cf46d9746d 97 uint8 IM, IFF1, IFF2, HALT;
abegaichi 0:40cf46d9746d 98 uint16 EA;
abegaichi 0:40cf46d9746d 99
abegaichi 1:bd86d49d7622 100 // z80 memory
abegaichi 1:bd86d49d7622 101 uint8 Z80Memory[Z80_MEM_SIZE];
abegaichi 0:40cf46d9746d 102
abegaichi 0:40cf46d9746d 103
abegaichi 0:40cf46d9746d 104 int count;
abegaichi 0:40cf46d9746d 105
abegaichi 1:bd86d49d7622 106 //
abegaichi 0:40cf46d9746d 107 uint16 prvPC;
abegaichi 0:40cf46d9746d 108
abegaichi 0:40cf46d9746d 109
abegaichi 1:bd86d49d7622 110 //
abegaichi 0:40cf46d9746d 111 static const char cc_op[0x100] = {
abegaichi 0:40cf46d9746d 112 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4, 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4,
abegaichi 0:40cf46d9746d 113 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4, 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4,
abegaichi 0:40cf46d9746d 114 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
abegaichi 0:40cf46d9746d 115 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4,
abegaichi 0:40cf46d9746d 116 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
abegaichi 0:40cf46d9746d 117 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4,
abegaichi 0:40cf46d9746d 118 5,10,10,10,10,11, 7,11, 5,10,10, 0,10,17, 7,11, 5,10,10,11,10,11, 7,11, 5, 4,10,11,10, 0, 7,11,
abegaichi 0:40cf46d9746d 119 5,10,10,19,10,11, 7,11, 5, 4,10, 4,10, 0, 7,11, 5,10,10, 4,10,11, 7,11, 5, 6,10, 4,10, 0, 7,11
abegaichi 0:40cf46d9746d 120 };
abegaichi 0:40cf46d9746d 121
abegaichi 0:40cf46d9746d 122
abegaichi 0:40cf46d9746d 123 static const char cc_ex[0x100] = {
abegaichi 0:40cf46d9746d 124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
abegaichi 0:40cf46d9746d 125 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
abegaichi 0:40cf46d9746d 126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
abegaichi 0:40cf46d9746d 127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
abegaichi 0:40cf46d9746d 128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
abegaichi 0:40cf46d9746d 129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0, 5, 5, 5, 5, 0, 0, 0, 0,
abegaichi 0:40cf46d9746d 130 6, 0, 0, 0, 7, 0, 0, 2, 6, 0, 0, 0, 7, 0, 0, 2, 6, 0, 0, 0, 7, 0, 0, 2, 6, 0, 0, 0, 7, 0, 0, 2,
abegaichi 0:40cf46d9746d 131 6, 0, 0, 0, 7, 0, 0, 2, 6, 0, 0, 0, 7, 0, 0, 2, 6, 0, 0, 0, 7, 0, 0, 2, 6, 0, 0, 0, 7, 0, 0, 2
abegaichi 0:40cf46d9746d 132 };
abegaichi 0:40cf46d9746d 133
abegaichi 0:40cf46d9746d 134 static const char cc_cb[0x100] = {
abegaichi 0:40cf46d9746d 135 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
abegaichi 0:40cf46d9746d 136 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
abegaichi 0:40cf46d9746d 137 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8,
abegaichi 0:40cf46d9746d 138 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8, 8, 8, 8, 8, 8, 8,12, 8,
abegaichi 0:40cf46d9746d 139 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
abegaichi 0:40cf46d9746d 140 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
abegaichi 0:40cf46d9746d 141 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8,
abegaichi 0:40cf46d9746d 142 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8, 8, 8, 8, 8, 8, 8,15, 8
abegaichi 0:40cf46d9746d 143 };
abegaichi 0:40cf46d9746d 144
abegaichi 0:40cf46d9746d 145 static const char cc_ed[0x100] = {
abegaichi 0:40cf46d9746d 146 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
abegaichi 0:40cf46d9746d 147 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
abegaichi 0:40cf46d9746d 148 12,12,15,20, 8, 8, 8, 9,12,12,15,20, 8, 8, 8, 9,12,12,15,20, 8, 8, 8, 9,12,12,15,20, 8, 8, 8, 9,
abegaichi 0:40cf46d9746d 149 12,12,15,20, 8, 8, 8,18,12,12,15,20, 8, 8, 8,18,12,12,15,20, 8, 8, 8, 8,12,12,15,20, 8, 8, 8, 8,
abegaichi 0:40cf46d9746d 150 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
abegaichi 0:40cf46d9746d 151 16,16,16,16, 8, 8, 8, 8,16,16,16,16, 8, 8, 8, 8,16,16,16,16, 8, 8, 8, 8,16,16,16,16, 8, 8, 8, 8,
abegaichi 0:40cf46d9746d 152 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
abegaichi 0:40cf46d9746d 153 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
abegaichi 0:40cf46d9746d 154 };
abegaichi 0:40cf46d9746d 155
abegaichi 0:40cf46d9746d 156 static const char cc_xy[0x100] = {
abegaichi 0:40cf46d9746d 157 4, 4, 4, 4, 4, 4, 4, 4, 4,15, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,15, 4, 4, 4, 4, 4, 4,
abegaichi 0:40cf46d9746d 158 4,14,20,10, 9, 9, 9, 4, 4,15,20,10, 9, 9, 9, 4, 4, 4, 4, 4,23,23,19, 4, 4,15, 4, 4, 4, 4, 4, 4,
abegaichi 0:40cf46d9746d 159 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4,
abegaichi 0:40cf46d9746d 160 9, 9, 9, 9, 9, 9,19, 9, 9, 9, 9, 9, 9, 9,19, 9,19,19,19,19,19,19, 4,19, 4, 4, 4, 4, 9, 9,19, 4,
abegaichi 0:40cf46d9746d 161 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4,
abegaichi 0:40cf46d9746d 162 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4, 4, 4, 4, 4, 9, 9,19, 4,
abegaichi 0:40cf46d9746d 163 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
abegaichi 0:40cf46d9746d 164 4,14, 4,23, 4,15, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,10, 4, 4, 4, 4, 4, 4
abegaichi 0:40cf46d9746d 165 };
abegaichi 0:40cf46d9746d 166
abegaichi 0:40cf46d9746d 167
abegaichi 0:40cf46d9746d 168
abegaichi 0:40cf46d9746d 169 static const uint16 DAATable[0x800] = {
abegaichi 0:40cf46d9746d 170 0x0044,0x0100,0x0200,0x0304,0x0400,0x0504,0x0604,0x0700,0x0808,0x090c,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510,
abegaichi 0:40cf46d9746d 171 0x1000,0x1104,0x1204,0x1300,0x1404,0x1500,0x1600,0x1704,0x180c,0x1908,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530,
abegaichi 0:40cf46d9746d 172 0x2020,0x2124,0x2224,0x2320,0x2424,0x2520,0x2620,0x2724,0x282c,0x2928,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534,
abegaichi 0:40cf46d9746d 173 0x3024,0x3120,0x3220,0x3324,0x3420,0x3524,0x3624,0x3720,0x3828,0x392c,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510,
abegaichi 0:40cf46d9746d 174 0x4000,0x4104,0x4204,0x4300,0x4404,0x4500,0x4600,0x4704,0x480c,0x4908,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514,
abegaichi 0:40cf46d9746d 175 0x5004,0x5100,0x5200,0x5304,0x5400,0x5504,0x5604,0x5700,0x5808,0x590c,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534,
abegaichi 0:40cf46d9746d 176 0x6024,0x6120,0x6220,0x6324,0x6420,0x6524,0x6624,0x6720,0x6828,0x692c,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530,
abegaichi 0:40cf46d9746d 177 0x7020,0x7124,0x7224,0x7320,0x7424,0x7520,0x7620,0x7724,0x782c,0x7928,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590,
abegaichi 0:40cf46d9746d 178 0x8080,0x8184,0x8284,0x8380,0x8484,0x8580,0x8680,0x8784,0x888c,0x8988,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594,
abegaichi 0:40cf46d9746d 179 0x9084,0x9180,0x9280,0x9384,0x9480,0x9584,0x9684,0x9780,0x9888,0x998c,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
abegaichi 0:40cf46d9746d 180 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701,0x0809,0x090d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
abegaichi 0:40cf46d9746d 181 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705,0x180d,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
abegaichi 0:40cf46d9746d 182 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725,0x282d,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
abegaichi 0:40cf46d9746d 183 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721,0x3829,0x392d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
abegaichi 0:40cf46d9746d 184 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705,0x480d,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
abegaichi 0:40cf46d9746d 185 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701,0x5809,0x590d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
abegaichi 0:40cf46d9746d 186 0x6025,0x6121,0x6221,0x6325,0x6421,0x6525,0x6625,0x6721,0x6829,0x692d,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531,
abegaichi 0:40cf46d9746d 187 0x7021,0x7125,0x7225,0x7321,0x7425,0x7521,0x7621,0x7725,0x782d,0x7929,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591,
abegaichi 0:40cf46d9746d 188 0x8081,0x8185,0x8285,0x8381,0x8485,0x8581,0x8681,0x8785,0x888d,0x8989,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595,
abegaichi 0:40cf46d9746d 189 0x9085,0x9181,0x9281,0x9385,0x9481,0x9585,0x9685,0x9781,0x9889,0x998d,0xa0b5,0xa1b1,0xa2b1,0xa3b5,0xa4b1,0xa5b5,
abegaichi 0:40cf46d9746d 190 0xa0a5,0xa1a1,0xa2a1,0xa3a5,0xa4a1,0xa5a5,0xa6a5,0xa7a1,0xa8a9,0xa9ad,0xb0b1,0xb1b5,0xb2b5,0xb3b1,0xb4b5,0xb5b1,
abegaichi 0:40cf46d9746d 191 0xb0a1,0xb1a5,0xb2a5,0xb3a1,0xb4a5,0xb5a1,0xb6a1,0xb7a5,0xb8ad,0xb9a9,0xc095,0xc191,0xc291,0xc395,0xc491,0xc595,
abegaichi 0:40cf46d9746d 192 0xc085,0xc181,0xc281,0xc385,0xc481,0xc585,0xc685,0xc781,0xc889,0xc98d,0xd091,0xd195,0xd295,0xd391,0xd495,0xd591,
abegaichi 0:40cf46d9746d 193 0xd081,0xd185,0xd285,0xd381,0xd485,0xd581,0xd681,0xd785,0xd88d,0xd989,0xe0b1,0xe1b5,0xe2b5,0xe3b1,0xe4b5,0xe5b1,
abegaichi 0:40cf46d9746d 194 0xe0a1,0xe1a5,0xe2a5,0xe3a1,0xe4a5,0xe5a1,0xe6a1,0xe7a5,0xe8ad,0xe9a9,0xf0b5,0xf1b1,0xf2b1,0xf3b5,0xf4b1,0xf5b5,
abegaichi 0:40cf46d9746d 195 0xf0a5,0xf1a1,0xf2a1,0xf3a5,0xf4a1,0xf5a5,0xf6a5,0xf7a1,0xf8a9,0xf9ad,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
abegaichi 0:40cf46d9746d 196 0x0045,0x0101,0x0201,0x0305,0x0401,0x0505,0x0605,0x0701,0x0809,0x090d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
abegaichi 0:40cf46d9746d 197 0x1001,0x1105,0x1205,0x1301,0x1405,0x1501,0x1601,0x1705,0x180d,0x1909,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
abegaichi 0:40cf46d9746d 198 0x2021,0x2125,0x2225,0x2321,0x2425,0x2521,0x2621,0x2725,0x282d,0x2929,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
abegaichi 0:40cf46d9746d 199 0x3025,0x3121,0x3221,0x3325,0x3421,0x3525,0x3625,0x3721,0x3829,0x392d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
abegaichi 0:40cf46d9746d 200 0x4001,0x4105,0x4205,0x4301,0x4405,0x4501,0x4601,0x4705,0x480d,0x4909,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
abegaichi 0:40cf46d9746d 201 0x5005,0x5101,0x5201,0x5305,0x5401,0x5505,0x5605,0x5701,0x5809,0x590d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
abegaichi 0:40cf46d9746d 202 0x0604,0x0700,0x0808,0x090c,0x0a0c,0x0b08,0x0c0c,0x0d08,0x0e08,0x0f0c,0x1010,0x1114,0x1214,0x1310,0x1414,0x1510,
abegaichi 0:40cf46d9746d 203 0x1600,0x1704,0x180c,0x1908,0x1a08,0x1b0c,0x1c08,0x1d0c,0x1e0c,0x1f08,0x2030,0x2134,0x2234,0x2330,0x2434,0x2530,
abegaichi 0:40cf46d9746d 204 0x2620,0x2724,0x282c,0x2928,0x2a28,0x2b2c,0x2c28,0x2d2c,0x2e2c,0x2f28,0x3034,0x3130,0x3230,0x3334,0x3430,0x3534,
abegaichi 0:40cf46d9746d 205 0x3624,0x3720,0x3828,0x392c,0x3a2c,0x3b28,0x3c2c,0x3d28,0x3e28,0x3f2c,0x4010,0x4114,0x4214,0x4310,0x4414,0x4510,
abegaichi 0:40cf46d9746d 206 0x4600,0x4704,0x480c,0x4908,0x4a08,0x4b0c,0x4c08,0x4d0c,0x4e0c,0x4f08,0x5014,0x5110,0x5210,0x5314,0x5410,0x5514,
abegaichi 0:40cf46d9746d 207 0x5604,0x5700,0x5808,0x590c,0x5a0c,0x5b08,0x5c0c,0x5d08,0x5e08,0x5f0c,0x6034,0x6130,0x6230,0x6334,0x6430,0x6534,
abegaichi 0:40cf46d9746d 208 0x6624,0x6720,0x6828,0x692c,0x6a2c,0x6b28,0x6c2c,0x6d28,0x6e28,0x6f2c,0x7030,0x7134,0x7234,0x7330,0x7434,0x7530,
abegaichi 0:40cf46d9746d 209 0x7620,0x7724,0x782c,0x7928,0x7a28,0x7b2c,0x7c28,0x7d2c,0x7e2c,0x7f28,0x8090,0x8194,0x8294,0x8390,0x8494,0x8590,
abegaichi 0:40cf46d9746d 210 0x8680,0x8784,0x888c,0x8988,0x8a88,0x8b8c,0x8c88,0x8d8c,0x8e8c,0x8f88,0x9094,0x9190,0x9290,0x9394,0x9490,0x9594,
abegaichi 0:40cf46d9746d 211 0x9684,0x9780,0x9888,0x998c,0x9a8c,0x9b88,0x9c8c,0x9d88,0x9e88,0x9f8c,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
abegaichi 0:40cf46d9746d 212 0x0605,0x0701,0x0809,0x090d,0x0a0d,0x0b09,0x0c0d,0x0d09,0x0e09,0x0f0d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
abegaichi 0:40cf46d9746d 213 0x1601,0x1705,0x180d,0x1909,0x1a09,0x1b0d,0x1c09,0x1d0d,0x1e0d,0x1f09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
abegaichi 0:40cf46d9746d 214 0x2621,0x2725,0x282d,0x2929,0x2a29,0x2b2d,0x2c29,0x2d2d,0x2e2d,0x2f29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
abegaichi 0:40cf46d9746d 215 0x3625,0x3721,0x3829,0x392d,0x3a2d,0x3b29,0x3c2d,0x3d29,0x3e29,0x3f2d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
abegaichi 0:40cf46d9746d 216 0x4601,0x4705,0x480d,0x4909,0x4a09,0x4b0d,0x4c09,0x4d0d,0x4e0d,0x4f09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
abegaichi 0:40cf46d9746d 217 0x5605,0x5701,0x5809,0x590d,0x5a0d,0x5b09,0x5c0d,0x5d09,0x5e09,0x5f0d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
abegaichi 0:40cf46d9746d 218 0x6625,0x6721,0x6829,0x692d,0x6a2d,0x6b29,0x6c2d,0x6d29,0x6e29,0x6f2d,0x7031,0x7135,0x7235,0x7331,0x7435,0x7531,
abegaichi 0:40cf46d9746d 219 0x7621,0x7725,0x782d,0x7929,0x7a29,0x7b2d,0x7c29,0x7d2d,0x7e2d,0x7f29,0x8091,0x8195,0x8295,0x8391,0x8495,0x8591,
abegaichi 0:40cf46d9746d 220 0x8681,0x8785,0x888d,0x8989,0x8a89,0x8b8d,0x8c89,0x8d8d,0x8e8d,0x8f89,0x9095,0x9191,0x9291,0x9395,0x9491,0x9595,
abegaichi 0:40cf46d9746d 221 0x9685,0x9781,0x9889,0x998d,0x9a8d,0x9b89,0x9c8d,0x9d89,0x9e89,0x9f8d,0xa0b5,0xa1b1,0xa2b1,0xa3b5,0xa4b1,0xa5b5,
abegaichi 0:40cf46d9746d 222 0xa6a5,0xa7a1,0xa8a9,0xa9ad,0xaaad,0xaba9,0xacad,0xada9,0xaea9,0xafad,0xb0b1,0xb1b5,0xb2b5,0xb3b1,0xb4b5,0xb5b1,
abegaichi 0:40cf46d9746d 223 0xb6a1,0xb7a5,0xb8ad,0xb9a9,0xbaa9,0xbbad,0xbca9,0xbdad,0xbead,0xbfa9,0xc095,0xc191,0xc291,0xc395,0xc491,0xc595,
abegaichi 0:40cf46d9746d 224 0xc685,0xc781,0xc889,0xc98d,0xca8d,0xcb89,0xcc8d,0xcd89,0xce89,0xcf8d,0xd091,0xd195,0xd295,0xd391,0xd495,0xd591,
abegaichi 0:40cf46d9746d 225 0xd681,0xd785,0xd88d,0xd989,0xda89,0xdb8d,0xdc89,0xdd8d,0xde8d,0xdf89,0xe0b1,0xe1b5,0xe2b5,0xe3b1,0xe4b5,0xe5b1,
abegaichi 0:40cf46d9746d 226 0xe6a1,0xe7a5,0xe8ad,0xe9a9,0xeaa9,0xebad,0xeca9,0xedad,0xeead,0xefa9,0xf0b5,0xf1b1,0xf2b1,0xf3b5,0xf4b1,0xf5b5,
abegaichi 0:40cf46d9746d 227 0xf6a5,0xf7a1,0xf8a9,0xf9ad,0xfaad,0xfba9,0xfcad,0xfda9,0xfea9,0xffad,0x0055,0x0111,0x0211,0x0315,0x0411,0x0515,
abegaichi 0:40cf46d9746d 228 0x0605,0x0701,0x0809,0x090d,0x0a0d,0x0b09,0x0c0d,0x0d09,0x0e09,0x0f0d,0x1011,0x1115,0x1215,0x1311,0x1415,0x1511,
abegaichi 0:40cf46d9746d 229 0x1601,0x1705,0x180d,0x1909,0x1a09,0x1b0d,0x1c09,0x1d0d,0x1e0d,0x1f09,0x2031,0x2135,0x2235,0x2331,0x2435,0x2531,
abegaichi 0:40cf46d9746d 230 0x2621,0x2725,0x282d,0x2929,0x2a29,0x2b2d,0x2c29,0x2d2d,0x2e2d,0x2f29,0x3035,0x3131,0x3231,0x3335,0x3431,0x3535,
abegaichi 0:40cf46d9746d 231 0x3625,0x3721,0x3829,0x392d,0x3a2d,0x3b29,0x3c2d,0x3d29,0x3e29,0x3f2d,0x4011,0x4115,0x4215,0x4311,0x4415,0x4511,
abegaichi 0:40cf46d9746d 232 0x4601,0x4705,0x480d,0x4909,0x4a09,0x4b0d,0x4c09,0x4d0d,0x4e0d,0x4f09,0x5015,0x5111,0x5211,0x5315,0x5411,0x5515,
abegaichi 0:40cf46d9746d 233 0x5605,0x5701,0x5809,0x590d,0x5a0d,0x5b09,0x5c0d,0x5d09,0x5e09,0x5f0d,0x6035,0x6131,0x6231,0x6335,0x6431,0x6535,
abegaichi 0:40cf46d9746d 234 0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080a,0x090e,0x0402,0x0506,0x0606,0x0702,0x080a,0x090e,
abegaichi 0:40cf46d9746d 235 0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180e,0x190a,0x1406,0x1502,0x1602,0x1706,0x180e,0x190a,
abegaichi 0:40cf46d9746d 236 0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282e,0x292a,0x2426,0x2522,0x2622,0x2726,0x282e,0x292a,
abegaichi 0:40cf46d9746d 237 0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382a,0x392e,0x3422,0x3526,0x3626,0x3722,0x382a,0x392e,
abegaichi 0:40cf46d9746d 238 0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480e,0x490a,0x4406,0x4502,0x4602,0x4706,0x480e,0x490a,
abegaichi 0:40cf46d9746d 239 0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580a,0x590e,0x5402,0x5506,0x5606,0x5702,0x580a,0x590e,
abegaichi 0:40cf46d9746d 240 0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682a,0x692e,0x6422,0x6526,0x6626,0x6722,0x682a,0x692e,
abegaichi 0:40cf46d9746d 241 0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782e,0x792a,0x7426,0x7522,0x7622,0x7726,0x782e,0x792a,
abegaichi 0:40cf46d9746d 242 0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888e,0x898a,0x8486,0x8582,0x8682,0x8786,0x888e,0x898a,
abegaichi 0:40cf46d9746d 243 0x9086,0x9182,0x9282,0x9386,0x9482,0x9586,0x9686,0x9782,0x988a,0x998e,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
abegaichi 0:40cf46d9746d 244 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
abegaichi 0:40cf46d9746d 245 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
abegaichi 0:40cf46d9746d 246 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
abegaichi 0:40cf46d9746d 247 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
abegaichi 0:40cf46d9746d 248 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
abegaichi 0:40cf46d9746d 249 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,
abegaichi 0:40cf46d9746d 250 0xa0a7,0xa1a3,0xa2a3,0xa3a7,0xa4a3,0xa5a7,0xa6a7,0xa7a3,0xa8ab,0xa9af,0xa4a3,0xa5a7,0xa6a7,0xa7a3,0xa8ab,0xa9af,
abegaichi 0:40cf46d9746d 251 0xb0a3,0xb1a7,0xb2a7,0xb3a3,0xb4a7,0xb5a3,0xb6a3,0xb7a7,0xb8af,0xb9ab,0xb4a7,0xb5a3,0xb6a3,0xb7a7,0xb8af,0xb9ab,
abegaichi 0:40cf46d9746d 252 0xc087,0xc183,0xc283,0xc387,0xc483,0xc587,0xc687,0xc783,0xc88b,0xc98f,0xc483,0xc587,0xc687,0xc783,0xc88b,0xc98f,
abegaichi 0:40cf46d9746d 253 0xd083,0xd187,0xd287,0xd383,0xd487,0xd583,0xd683,0xd787,0xd88f,0xd98b,0xd487,0xd583,0xd683,0xd787,0xd88f,0xd98b,
abegaichi 0:40cf46d9746d 254 0xe0a3,0xe1a7,0xe2a7,0xe3a3,0xe4a7,0xe5a3,0xe6a3,0xe7a7,0xe8af,0xe9ab,0xe4a7,0xe5a3,0xe6a3,0xe7a7,0xe8af,0xe9ab,
abegaichi 0:40cf46d9746d 255 0xf0a7,0xf1a3,0xf2a3,0xf3a7,0xf4a3,0xf5a7,0xf6a7,0xf7a3,0xf8ab,0xf9af,0xf4a3,0xf5a7,0xf6a7,0xf7a3,0xf8ab,0xf9af,
abegaichi 0:40cf46d9746d 256 0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080b,0x090f,0x0403,0x0507,0x0607,0x0703,0x080b,0x090f,
abegaichi 0:40cf46d9746d 257 0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180f,0x190b,0x1407,0x1503,0x1603,0x1707,0x180f,0x190b,
abegaichi 0:40cf46d9746d 258 0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282f,0x292b,0x2427,0x2523,0x2623,0x2727,0x282f,0x292b,
abegaichi 0:40cf46d9746d 259 0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
abegaichi 0:40cf46d9746d 260 0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
abegaichi 0:40cf46d9746d 261 0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
abegaichi 0:40cf46d9746d 262 0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
abegaichi 0:40cf46d9746d 263 0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
abegaichi 0:40cf46d9746d 264 0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
abegaichi 0:40cf46d9746d 265 0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,
abegaichi 0:40cf46d9746d 266 0xfabe,0xfbba,0xfcbe,0xfdba,0xfeba,0xffbe,0x0046,0x0102,0x0202,0x0306,0x0402,0x0506,0x0606,0x0702,0x080a,0x090e,
abegaichi 0:40cf46d9746d 267 0x0a1e,0x0b1a,0x0c1e,0x0d1a,0x0e1a,0x0f1e,0x1002,0x1106,0x1206,0x1302,0x1406,0x1502,0x1602,0x1706,0x180e,0x190a,
abegaichi 0:40cf46d9746d 268 0x1a1a,0x1b1e,0x1c1a,0x1d1e,0x1e1e,0x1f1a,0x2022,0x2126,0x2226,0x2322,0x2426,0x2522,0x2622,0x2726,0x282e,0x292a,
abegaichi 0:40cf46d9746d 269 0x2a3a,0x2b3e,0x2c3a,0x2d3e,0x2e3e,0x2f3a,0x3026,0x3122,0x3222,0x3326,0x3422,0x3526,0x3626,0x3722,0x382a,0x392e,
abegaichi 0:40cf46d9746d 270 0x3a3e,0x3b3a,0x3c3e,0x3d3a,0x3e3a,0x3f3e,0x4002,0x4106,0x4206,0x4302,0x4406,0x4502,0x4602,0x4706,0x480e,0x490a,
abegaichi 0:40cf46d9746d 271 0x4a1a,0x4b1e,0x4c1a,0x4d1e,0x4e1e,0x4f1a,0x5006,0x5102,0x5202,0x5306,0x5402,0x5506,0x5606,0x5702,0x580a,0x590e,
abegaichi 0:40cf46d9746d 272 0x5a1e,0x5b1a,0x5c1e,0x5d1a,0x5e1a,0x5f1e,0x6026,0x6122,0x6222,0x6326,0x6422,0x6526,0x6626,0x6722,0x682a,0x692e,
abegaichi 0:40cf46d9746d 273 0x6a3e,0x6b3a,0x6c3e,0x6d3a,0x6e3a,0x6f3e,0x7022,0x7126,0x7226,0x7322,0x7426,0x7522,0x7622,0x7726,0x782e,0x792a,
abegaichi 0:40cf46d9746d 274 0x7a3a,0x7b3e,0x7c3a,0x7d3e,0x7e3e,0x7f3a,0x8082,0x8186,0x8286,0x8382,0x8486,0x8582,0x8682,0x8786,0x888e,0x898a,
abegaichi 0:40cf46d9746d 275 0x8a9a,0x8b9e,0x8c9a,0x8d9e,0x8e9e,0x8f9a,0x9086,0x9182,0x9282,0x9386,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
abegaichi 0:40cf46d9746d 276 0x3a3f,0x3b3b,0x3c3f,0x3d3b,0x3e3b,0x3f3f,0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
abegaichi 0:40cf46d9746d 277 0x4a1b,0x4b1f,0x4c1b,0x4d1f,0x4e1f,0x4f1b,0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
abegaichi 0:40cf46d9746d 278 0x5a1f,0x5b1b,0x5c1f,0x5d1b,0x5e1b,0x5f1f,0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
abegaichi 0:40cf46d9746d 279 0x6a3f,0x6b3b,0x6c3f,0x6d3b,0x6e3b,0x6f3f,0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
abegaichi 0:40cf46d9746d 280 0x7a3b,0x7b3f,0x7c3b,0x7d3f,0x7e3f,0x7f3b,0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
abegaichi 0:40cf46d9746d 281 0x8a9b,0x8b9f,0x8c9b,0x8d9f,0x8e9f,0x8f9b,0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f,
abegaichi 0:40cf46d9746d 282 0x9a9f,0x9b9b,0x9c9f,0x9d9b,0x9e9b,0x9f9f,0xa0a7,0xa1a3,0xa2a3,0xa3a7,0xa4a3,0xa5a7,0xa6a7,0xa7a3,0xa8ab,0xa9af,
abegaichi 0:40cf46d9746d 283 0xaabf,0xabbb,0xacbf,0xadbb,0xaebb,0xafbf,0xb0a3,0xb1a7,0xb2a7,0xb3a3,0xb4a7,0xb5a3,0xb6a3,0xb7a7,0xb8af,0xb9ab,
abegaichi 0:40cf46d9746d 284 0xbabb,0xbbbf,0xbcbb,0xbdbf,0xbebf,0xbfbb,0xc087,0xc183,0xc283,0xc387,0xc483,0xc587,0xc687,0xc783,0xc88b,0xc98f,
abegaichi 0:40cf46d9746d 285 0xca9f,0xcb9b,0xcc9f,0xcd9b,0xce9b,0xcf9f,0xd083,0xd187,0xd287,0xd383,0xd487,0xd583,0xd683,0xd787,0xd88f,0xd98b,
abegaichi 0:40cf46d9746d 286 0xda9b,0xdb9f,0xdc9b,0xdd9f,0xde9f,0xdf9b,0xe0a3,0xe1a7,0xe2a7,0xe3a3,0xe4a7,0xe5a3,0xe6a3,0xe7a7,0xe8af,0xe9ab,
abegaichi 0:40cf46d9746d 287 0xeabb,0xebbf,0xecbb,0xedbf,0xeebf,0xefbb,0xf0a7,0xf1a3,0xf2a3,0xf3a7,0xf4a3,0xf5a7,0xf6a7,0xf7a3,0xf8ab,0xf9af,
abegaichi 0:40cf46d9746d 288 0xfabf,0xfbbb,0xfcbf,0xfdbb,0xfebb,0xffbf,0x0047,0x0103,0x0203,0x0307,0x0403,0x0507,0x0607,0x0703,0x080b,0x090f,
abegaichi 0:40cf46d9746d 289 0x0a1f,0x0b1b,0x0c1f,0x0d1b,0x0e1b,0x0f1f,0x1003,0x1107,0x1207,0x1303,0x1407,0x1503,0x1603,0x1707,0x180f,0x190b,
abegaichi 0:40cf46d9746d 290 0x1a1b,0x1b1f,0x1c1b,0x1d1f,0x1e1f,0x1f1b,0x2023,0x2127,0x2227,0x2323,0x2427,0x2523,0x2623,0x2727,0x282f,0x292b,
abegaichi 0:40cf46d9746d 291 0x2a3b,0x2b3f,0x2c3b,0x2d3f,0x2e3f,0x2f3b,0x3027,0x3123,0x3223,0x3327,0x3423,0x3527,0x3627,0x3723,0x382b,0x392f,
abegaichi 0:40cf46d9746d 292 0x3a3f,0x3b3b,0x3c3f,0x3d3b,0x3e3b,0x3f3f,0x4003,0x4107,0x4207,0x4303,0x4407,0x4503,0x4603,0x4707,0x480f,0x490b,
abegaichi 0:40cf46d9746d 293 0x4a1b,0x4b1f,0x4c1b,0x4d1f,0x4e1f,0x4f1b,0x5007,0x5103,0x5203,0x5307,0x5403,0x5507,0x5607,0x5703,0x580b,0x590f,
abegaichi 0:40cf46d9746d 294 0x5a1f,0x5b1b,0x5c1f,0x5d1b,0x5e1b,0x5f1f,0x6027,0x6123,0x6223,0x6327,0x6423,0x6527,0x6627,0x6723,0x682b,0x692f,
abegaichi 0:40cf46d9746d 295 0x6a3f,0x6b3b,0x6c3f,0x6d3b,0x6e3b,0x6f3f,0x7023,0x7127,0x7227,0x7323,0x7427,0x7523,0x7623,0x7727,0x782f,0x792b,
abegaichi 0:40cf46d9746d 296 0x7a3b,0x7b3f,0x7c3b,0x7d3f,0x7e3f,0x7f3b,0x8083,0x8187,0x8287,0x8383,0x8487,0x8583,0x8683,0x8787,0x888f,0x898b,
abegaichi 0:40cf46d9746d 297 0x8a9b,0x8b9f,0x8c9b,0x8d9f,0x8e9f,0x8f9b,0x9087,0x9183,0x9283,0x9387,0x9483,0x9587,0x9687,0x9783,0x988b,0x998f
abegaichi 0:40cf46d9746d 298 };
abegaichi 0:40cf46d9746d 299
abegaichi 0:40cf46d9746d 300 static const uint8 irep_tmp[4][4] = {
abegaichi 0:40cf46d9746d 301 {0,0,1,0},{0,1,0,1},{1,0,1,1},{0,1,1,0}
abegaichi 0:40cf46d9746d 302 };
abegaichi 0:40cf46d9746d 303
abegaichi 0:40cf46d9746d 304 static const uint8 drep_tmp[4][4] = {
abegaichi 0:40cf46d9746d 305 {0,1,0,0},{1,0,0,1},{0,0,1,0},{0,1,0,1}
abegaichi 0:40cf46d9746d 306 };
abegaichi 0:40cf46d9746d 307
abegaichi 0:40cf46d9746d 308 static const uint8 breg_tmp[256] = {
abegaichi 0:40cf46d9746d 309 0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,
abegaichi 0:40cf46d9746d 310 1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,
abegaichi 0:40cf46d9746d 311 0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,
abegaichi 0:40cf46d9746d 312 0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,
abegaichi 0:40cf46d9746d 313 1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,
abegaichi 0:40cf46d9746d 314 0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,
abegaichi 0:40cf46d9746d 315 1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,
abegaichi 0:40cf46d9746d 316 1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1
abegaichi 0:40cf46d9746d 317 };
abegaichi 0:40cf46d9746d 318
abegaichi 0:40cf46d9746d 319 static const uint8 SZ[256] = {
abegaichi 0:40cf46d9746d 320 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 321 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 322 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 323 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 324 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 325 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 326 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 327 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 328 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 329 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 330 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 331 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 332 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 333 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 334 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 335 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8
abegaichi 0:40cf46d9746d 336 };
abegaichi 0:40cf46d9746d 337
abegaichi 0:40cf46d9746d 338 static const uint8 SZ_BIT[256] = {
abegaichi 0:40cf46d9746d 339 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 340 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 341 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 342 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 343 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 344 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 345 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 346 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 347 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 348 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 349 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 350 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 351 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 352 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 353 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 354 0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8
abegaichi 0:40cf46d9746d 355 };
abegaichi 0:40cf46d9746d 356
abegaichi 0:40cf46d9746d 357 static const uint8 SZP[256] = {
abegaichi 0:40cf46d9746d 358 0x44,0x00,0x00,0x04,0x00,0x04,0x04,0x00,0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c,
abegaichi 0:40cf46d9746d 359 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08,
abegaichi 0:40cf46d9746d 360 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24,0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28,
abegaichi 0:40cf46d9746d 361 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20,0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c,
abegaichi 0:40cf46d9746d 362 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04,0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08,
abegaichi 0:40cf46d9746d 363 0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00,0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c,
abegaichi 0:40cf46d9746d 364 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20,0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c,
abegaichi 0:40cf46d9746d 365 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24,0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28,
abegaichi 0:40cf46d9746d 366 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88,
abegaichi 0:40cf46d9746d 367 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c,
abegaichi 0:40cf46d9746d 368 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0,0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac,
abegaichi 0:40cf46d9746d 369 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4,0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8,
abegaichi 0:40cf46d9746d 370 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80,0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c,
abegaichi 0:40cf46d9746d 371 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84,0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88,
abegaichi 0:40cf46d9746d 372 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4,0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8,
abegaichi 0:40cf46d9746d 373 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0,0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
abegaichi 0:40cf46d9746d 374 };
abegaichi 0:40cf46d9746d 375
abegaichi 0:40cf46d9746d 376 static const uint8 SZHV_inc[256] = {
abegaichi 0:40cf46d9746d 377 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 378 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 379 0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 380 0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 381 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 382 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
abegaichi 0:40cf46d9746d 383 0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 384 0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
abegaichi 0:40cf46d9746d 385 0x94,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 386 0x90,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 387 0xb0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 388 0xb0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 389 0x90,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 390 0x90,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
abegaichi 0:40cf46d9746d 391 0xb0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
abegaichi 0:40cf46d9746d 392 0xb0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8
abegaichi 0:40cf46d9746d 393 };
abegaichi 0:40cf46d9746d 394
abegaichi 0:40cf46d9746d 395 static const uint8 SZHV_dec[256] = {
abegaichi 0:40cf46d9746d 396 0x42,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x1a,
abegaichi 0:40cf46d9746d 397 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x1a,
abegaichi 0:40cf46d9746d 398 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x3a,
abegaichi 0:40cf46d9746d 399 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x3a,
abegaichi 0:40cf46d9746d 400 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x1a,
abegaichi 0:40cf46d9746d 401 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x1a,
abegaichi 0:40cf46d9746d 402 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x3a,
abegaichi 0:40cf46d9746d 403 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x3e,
abegaichi 0:40cf46d9746d 404 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x9a,
abegaichi 0:40cf46d9746d 405 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x9a,
abegaichi 0:40cf46d9746d 406 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xba,
abegaichi 0:40cf46d9746d 407 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xba,
abegaichi 0:40cf46d9746d 408 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x9a,
abegaichi 0:40cf46d9746d 409 0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x9a,
abegaichi 0:40cf46d9746d 410 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xba,
abegaichi 0:40cf46d9746d 411 0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xba
abegaichi 0:40cf46d9746d 412 };
abegaichi 0:40cf46d9746d 413
abegaichi 0:40cf46d9746d 414 /* --------------------------------------------------------------------------
abegaichi 1:bd86d49d7622 415 memory write
abegaichi 0:40cf46d9746d 416 -------------------------------------------------------------------------- */
abegaichi 0:40cf46d9746d 417 void CPM_WriteMemory( uint16 addr, uint8 data )
abegaichi 0:40cf46d9746d 418 {
abegaichi 0:40cf46d9746d 419 Z80Memory[addr] = data;
abegaichi 0:40cf46d9746d 420 }
abegaichi 0:40cf46d9746d 421 /* --------------------------------------------------------------------------
abegaichi 1:bd86d49d7622 422 memory read
abegaichi 0:40cf46d9746d 423 -------------------------------------------------------------------------- */
abegaichi 0:40cf46d9746d 424 uint8 CPM_ReadMemory( uint16 addr )
abegaichi 0:40cf46d9746d 425 {
abegaichi 0:40cf46d9746d 426 return Z80Memory[addr];
abegaichi 0:40cf46d9746d 427 }
abegaichi 0:40cf46d9746d 428
abegaichi 0:40cf46d9746d 429 /* --------------------------------------------------------------------------
abegaichi 1:bd86d49d7622 430 output
abegaichi 0:40cf46d9746d 431 -------------------------------------------------------------------------- */
abegaichi 0:40cf46d9746d 432
abegaichi 0:40cf46d9746d 433 void cpm_WriteIO( uint8 laddr, uint8 haddr, uint8 data )
abegaichi 0:40cf46d9746d 434 {
abegaichi 0:40cf46d9746d 435 switch( laddr ) {
abegaichi 0:40cf46d9746d 436
abegaichi 1:bd86d49d7622 437 case 0x00: // serial output data
abegaichi 0:40cf46d9746d 438 SendZ80( data );
abegaichi 0:40cf46d9746d 439 break;
abegaichi 0:40cf46d9746d 440
abegaichi 0:40cf46d9746d 441 case 0x01:
abegaichi 0:40cf46d9746d 442 OutLedZ80( data );
abegaichi 0:40cf46d9746d 443 break;
abegaichi 0:40cf46d9746d 444
abegaichi 0:40cf46d9746d 445 case 0xff: // disk flash
abegaichi 0:40cf46d9746d 446 break;
abegaichi 0:40cf46d9746d 447 }
abegaichi 0:40cf46d9746d 448 }
abegaichi 0:40cf46d9746d 449 /* --------------------------------------------------------------------------
abegaichi 1:bd86d49d7622 450 input
abegaichi 0:40cf46d9746d 451 -------------------------------------------------------------------------- */
abegaichi 0:40cf46d9746d 452 uint8 cpm_ReadIO( uint8 laddr, uint8 haddr )
abegaichi 0:40cf46d9746d 453 {
abegaichi 0:40cf46d9746d 454 uint8 ret=0;
abegaichi 0:40cf46d9746d 455
abegaichi 0:40cf46d9746d 456 switch( laddr ) {
abegaichi 0:40cf46d9746d 457
abegaichi 1:bd86d49d7622 458 case 0x00: // serial input data
abegaichi 0:40cf46d9746d 459 ret = RecvZ80();
abegaichi 0:40cf46d9746d 460 break;
abegaichi 0:40cf46d9746d 461
abegaichi 1:bd86d49d7622 462 case 0x01: // serial status
abegaichi 0:40cf46d9746d 463 if( BusySioZ80() == -1 ) {
abegaichi 1:bd86d49d7622 464 ret = 1; //
abegaichi 0:40cf46d9746d 465 } else {
abegaichi 1:bd86d49d7622 466 ret = 0; // Arrival to data
abegaichi 0:40cf46d9746d 467 }
abegaichi 0:40cf46d9746d 468 break;
abegaichi 0:40cf46d9746d 469
abegaichi 0:40cf46d9746d 470
abegaichi 0:40cf46d9746d 471
abegaichi 0:40cf46d9746d 472 default:
abegaichi 0:40cf46d9746d 473 ret = 0xff;
abegaichi 0:40cf46d9746d 474 break;
abegaichi 0:40cf46d9746d 475 }
abegaichi 0:40cf46d9746d 476
abegaichi 0:40cf46d9746d 477 return ret;
abegaichi 0:40cf46d9746d 478 }
abegaichi 0:40cf46d9746d 479 /* --------------------------------------------------------------------------
abegaichi 1:bd86d49d7622 480 debugger
abegaichi 0:40cf46d9746d 481 -------------------------------------------------------------------------- */
abegaichi 0:40cf46d9746d 482 void DispAdrDat( uint16 addr, uint8 dt )
abegaichi 0:40cf46d9746d 483 {
abegaichi 0:40cf46d9746d 484 // int8 buf[12];
abegaichi 0:40cf46d9746d 485
abegaichi 0:40cf46d9746d 486 #if 0
abegaichi 0:40cf46d9746d 487 b2a4( addr, buf );
abegaichi 0:40cf46d9746d 488 wsend( SCU_Z80_PORT, buf );
abegaichi 0:40cf46d9746d 489 wsend( SCU_Z80_PORT, ":" );
abegaichi 0:40cf46d9746d 490 b2a2( dt, buf );
abegaichi 0:40cf46d9746d 491 wsend( SCU_Z80_PORT, buf );
abegaichi 0:40cf46d9746d 492 wsend( SCU_Z80_PORT, " " );
abegaichi 0:40cf46d9746d 493 #endif
abegaichi 0:40cf46d9746d 494
abegaichi 0:40cf46d9746d 495 }
abegaichi 0:40cf46d9746d 496
abegaichi 0:40cf46d9746d 497 void DispReg( void )
abegaichi 0:40cf46d9746d 498 {
abegaichi 1:bd86d49d7622 499 char buf[128];
abegaichi 1:bd86d49d7622 500
abegaichi 1:bd86d49d7622 501 WSendZ80( "PC SP IR IX IY AF BC DE HL AF\' BC\' DE\' HL\'\n\r" );
abegaichi 0:40cf46d9746d 502 sprintf( buf, "%04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n\r",
abegaichi 0:40cf46d9746d 503 PC, SP, (_I<<8)|_R, IX, IY, AF, BC, DE, HL, exAF, exBC, exDE, exHL );
abegaichi 1:bd86d49d7622 504 WSendZ80( buf );
abegaichi 1:bd86d49d7622 505 if( HALT ) {
abegaichi 1:bd86d49d7622 506 WSendZ80( "NOW HLAT\n\r" );
abegaichi 0:40cf46d9746d 507 }
abegaichi 0:40cf46d9746d 508 }
abegaichi 0:40cf46d9746d 509
abegaichi 0:40cf46d9746d 510 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 511 /* */
abegaichi 1:bd86d49d7622 512 /* */
abegaichi 1:bd86d49d7622 513 /* */
abegaichi 0:40cf46d9746d 514 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 515 void ClearZ80Memory( void )
abegaichi 0:40cf46d9746d 516 {
abegaichi 0:40cf46d9746d 517 int i;
abegaichi 0:40cf46d9746d 518
abegaichi 0:40cf46d9746d 519 for( i=0; i<Z80_MEM_SIZE; i++ ) {
abegaichi 0:40cf46d9746d 520 Z80Memory[i] = 0;
abegaichi 0:40cf46d9746d 521 }
abegaichi 0:40cf46d9746d 522 }
abegaichi 0:40cf46d9746d 523
abegaichi 0:40cf46d9746d 524 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 525 /* */
abegaichi 1:bd86d49d7622 526 /* */
abegaichi 1:bd86d49d7622 527 /* */
abegaichi 0:40cf46d9746d 528 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 529 uint8 ReadMemory( uint16 addr )
abegaichi 0:40cf46d9746d 530 {
abegaichi 0:40cf46d9746d 531 return Z80Memory[addr];
abegaichi 0:40cf46d9746d 532 }
abegaichi 0:40cf46d9746d 533 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 534 /* */
abegaichi 1:bd86d49d7622 535 /* */
abegaichi 1:bd86d49d7622 536 /* */
abegaichi 0:40cf46d9746d 537 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 538 void WriteMemory( uint16 addr, uint8 val )
abegaichi 0:40cf46d9746d 539 {
abegaichi 0:40cf46d9746d 540 Z80Memory[addr] = val;
abegaichi 0:40cf46d9746d 541 }
abegaichi 0:40cf46d9746d 542 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 543 /* */
abegaichi 1:bd86d49d7622 544 /* */
abegaichi 1:bd86d49d7622 545 /* */
abegaichi 0:40cf46d9746d 546 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 547 uint16 ReadMemory16( uint16 addr )
abegaichi 0:40cf46d9746d 548 {
abegaichi 0:40cf46d9746d 549 return ReadMemory( addr ) | (ReadMemory( addr + 1 ) << 8);
abegaichi 0:40cf46d9746d 550 }
abegaichi 0:40cf46d9746d 551 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 552 /* */
abegaichi 1:bd86d49d7622 553 /* */
abegaichi 1:bd86d49d7622 554 /* */
abegaichi 0:40cf46d9746d 555 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 556 void WriteMemory16( uint16 addr, uint16 val )
abegaichi 0:40cf46d9746d 557 {
abegaichi 0:40cf46d9746d 558 WriteMemory( addr, val & 0xff );
abegaichi 0:40cf46d9746d 559 WriteMemory( addr + 1, val >> 8 );
abegaichi 0:40cf46d9746d 560 }
abegaichi 0:40cf46d9746d 561 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 562 /* */
abegaichi 1:bd86d49d7622 563 /* */
abegaichi 1:bd86d49d7622 564 /* */
abegaichi 0:40cf46d9746d 565 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 566 uint8 Fetch( void )
abegaichi 0:40cf46d9746d 567 {
abegaichi 0:40cf46d9746d 568 return ReadMemory( PC++ );
abegaichi 0:40cf46d9746d 569 }
abegaichi 0:40cf46d9746d 570 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 571 /* */
abegaichi 1:bd86d49d7622 572 /* */
abegaichi 1:bd86d49d7622 573 /* */
abegaichi 0:40cf46d9746d 574 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 575 uint16 Fetch16( void )
abegaichi 0:40cf46d9746d 576 {
abegaichi 0:40cf46d9746d 577 uint16 tmp;
abegaichi 0:40cf46d9746d 578
abegaichi 0:40cf46d9746d 579 tmp = Fetch();
abegaichi 0:40cf46d9746d 580 tmp |= Fetch() << 8;
abegaichi 0:40cf46d9746d 581 return tmp;
abegaichi 0:40cf46d9746d 582 }
abegaichi 0:40cf46d9746d 583
abegaichi 0:40cf46d9746d 584 uint16 POP( void )
abegaichi 0:40cf46d9746d 585 {
abegaichi 0:40cf46d9746d 586 uint16 res;
abegaichi 0:40cf46d9746d 587
abegaichi 0:40cf46d9746d 588 res = ReadMemory16( SP );
abegaichi 0:40cf46d9746d 589 SP += 2;
abegaichi 0:40cf46d9746d 590 return res;
abegaichi 0:40cf46d9746d 591 }
abegaichi 0:40cf46d9746d 592
abegaichi 0:40cf46d9746d 593 void PUSH( uint16 val )
abegaichi 0:40cf46d9746d 594 {
abegaichi 0:40cf46d9746d 595 SP -= 2;
abegaichi 0:40cf46d9746d 596 WriteMemory16( SP, val );
abegaichi 0:40cf46d9746d 597 }
abegaichi 0:40cf46d9746d 598
abegaichi 0:40cf46d9746d 599 // I/O
abegaichi 0:40cf46d9746d 600 uint8 ReadIO(uint8 laddr, uint8 haddr)
abegaichi 0:40cf46d9746d 601 {
abegaichi 0:40cf46d9746d 602 return cpm_ReadIO(laddr, haddr);
abegaichi 0:40cf46d9746d 603 }
abegaichi 0:40cf46d9746d 604
abegaichi 0:40cf46d9746d 605 void WriteIO(uint8 laddr, uint8 haddr, uint8 val)
abegaichi 0:40cf46d9746d 606 {
abegaichi 0:40cf46d9746d 607 cpm_WriteIO(laddr, haddr, val);
abegaichi 0:40cf46d9746d 608 }
abegaichi 0:40cf46d9746d 609
abegaichi 0:40cf46d9746d 610 // IRQ
abegaichi 0:40cf46d9746d 611 void InterruptFinished( void )
abegaichi 0:40cf46d9746d 612 {
abegaichi 0:40cf46d9746d 613 //cpm_DoRETI();
abegaichi 0:40cf46d9746d 614 }
abegaichi 0:40cf46d9746d 615
abegaichi 0:40cf46d9746d 616 void InterruptEnabled( void )
abegaichi 0:40cf46d9746d 617 {
abegaichi 0:40cf46d9746d 618 //cpm_DoIRQ();
abegaichi 0:40cf46d9746d 619 }
abegaichi 0:40cf46d9746d 620
abegaichi 0:40cf46d9746d 621
abegaichi 0:40cf46d9746d 622
abegaichi 0:40cf46d9746d 623
abegaichi 1:bd86d49d7622 624 //
abegaichi 0:40cf46d9746d 625 void EAX( void )
abegaichi 0:40cf46d9746d 626 {
abegaichi 0:40cf46d9746d 627 int16 res;
abegaichi 0:40cf46d9746d 628
abegaichi 0:40cf46d9746d 629 res = Fetch();
abegaichi 0:40cf46d9746d 630 EA = IX + ((res < 128) ? res : res - 256);
abegaichi 0:40cf46d9746d 631 }
abegaichi 0:40cf46d9746d 632
abegaichi 0:40cf46d9746d 633 void EAY( void )
abegaichi 0:40cf46d9746d 634 {
abegaichi 0:40cf46d9746d 635 int16 res;
abegaichi 0:40cf46d9746d 636
abegaichi 0:40cf46d9746d 637 res = Fetch();
abegaichi 0:40cf46d9746d 638 EA = IY + ((res < 128) ? res : res - 256);
abegaichi 0:40cf46d9746d 639 }
abegaichi 0:40cf46d9746d 640
abegaichi 0:40cf46d9746d 641
abegaichi 0:40cf46d9746d 642 void EAY2( void )
abegaichi 0:40cf46d9746d 643 {
abegaichi 0:40cf46d9746d 644 int8 res;
abegaichi 0:40cf46d9746d 645
abegaichi 0:40cf46d9746d 646 res = Fetch();
abegaichi 0:40cf46d9746d 647 EA = IY + (int16)res;
abegaichi 0:40cf46d9746d 648 }
abegaichi 0:40cf46d9746d 649
abegaichi 0:40cf46d9746d 650
abegaichi 1:bd86d49d7622 651 //
abegaichi 0:40cf46d9746d 652 void JP( void )
abegaichi 0:40cf46d9746d 653 {
abegaichi 0:40cf46d9746d 654 PC = ReadMemory16(PC);
abegaichi 0:40cf46d9746d 655 }
abegaichi 0:40cf46d9746d 656
abegaichi 0:40cf46d9746d 657 void JP_COND( uint8 cond )
abegaichi 0:40cf46d9746d 658 {
abegaichi 0:40cf46d9746d 659 if( cond ) {
abegaichi 0:40cf46d9746d 660 PC = ReadMemory16( PC );
abegaichi 0:40cf46d9746d 661 } else {
abegaichi 0:40cf46d9746d 662 PC += 2;
abegaichi 0:40cf46d9746d 663 }
abegaichi 0:40cf46d9746d 664 }
abegaichi 0:40cf46d9746d 665
abegaichi 0:40cf46d9746d 666 void JR( void )
abegaichi 0:40cf46d9746d 667 {
abegaichi 0:40cf46d9746d 668 int res = Fetch();
abegaichi 0:40cf46d9746d 669 PC += (res < 128) ? res : res - 256;
abegaichi 0:40cf46d9746d 670 }
abegaichi 0:40cf46d9746d 671
abegaichi 0:40cf46d9746d 672 void JR_COND( uint8 cond, uint8 opcode )
abegaichi 0:40cf46d9746d 673 {
abegaichi 0:40cf46d9746d 674 if( cond ) {
abegaichi 0:40cf46d9746d 675 int res = Fetch();
abegaichi 0:40cf46d9746d 676 PC += (res < 128) ? res : res - 256;
abegaichi 0:40cf46d9746d 677 count -= (int)cc_ex[opcode];
abegaichi 0:40cf46d9746d 678 } else {
abegaichi 0:40cf46d9746d 679 PC++;
abegaichi 0:40cf46d9746d 680 }
abegaichi 0:40cf46d9746d 681 }
abegaichi 0:40cf46d9746d 682
abegaichi 0:40cf46d9746d 683 void CALL( void )
abegaichi 0:40cf46d9746d 684 {
abegaichi 0:40cf46d9746d 685 EA = Fetch16();
abegaichi 0:40cf46d9746d 686 PUSH( PC );
abegaichi 0:40cf46d9746d 687 PC = EA;
abegaichi 0:40cf46d9746d 688 }
abegaichi 0:40cf46d9746d 689
abegaichi 0:40cf46d9746d 690 void CALL_COND( uint8 cond, uint8 opcode )
abegaichi 0:40cf46d9746d 691 {
abegaichi 0:40cf46d9746d 692 if( cond ) {
abegaichi 0:40cf46d9746d 693 EA = Fetch16();
abegaichi 0:40cf46d9746d 694 PUSH( PC );
abegaichi 0:40cf46d9746d 695 PC = EA;
abegaichi 0:40cf46d9746d 696 count -= (int)cc_ex[opcode];
abegaichi 0:40cf46d9746d 697 } else {
abegaichi 0:40cf46d9746d 698 PC += 2;
abegaichi 0:40cf46d9746d 699 }
abegaichi 0:40cf46d9746d 700 }
abegaichi 0:40cf46d9746d 701
abegaichi 0:40cf46d9746d 702 void RET( void )
abegaichi 0:40cf46d9746d 703 {
abegaichi 0:40cf46d9746d 704 PC = POP();
abegaichi 0:40cf46d9746d 705 }
abegaichi 0:40cf46d9746d 706
abegaichi 0:40cf46d9746d 707 void RET_COND( uint8 cond, uint8 opcode )
abegaichi 0:40cf46d9746d 708 {
abegaichi 0:40cf46d9746d 709 if( cond ) {
abegaichi 0:40cf46d9746d 710 PC = POP();
abegaichi 0:40cf46d9746d 711 count -= (int)cc_ex[opcode];
abegaichi 0:40cf46d9746d 712 }
abegaichi 0:40cf46d9746d 713 }
abegaichi 0:40cf46d9746d 714
abegaichi 0:40cf46d9746d 715 void DI( void )
abegaichi 0:40cf46d9746d 716 {
abegaichi 0:40cf46d9746d 717 IFF1 = IFF2 = 0;
abegaichi 0:40cf46d9746d 718 }
abegaichi 0:40cf46d9746d 719
abegaichi 0:40cf46d9746d 720 void EI( void )
abegaichi 0:40cf46d9746d 721 {
abegaichi 1:bd86d49d7622 722 IFF1 = 3; //
abegaichi 0:40cf46d9746d 723 IFF2 = 1;
abegaichi 0:40cf46d9746d 724 }
abegaichi 0:40cf46d9746d 725
abegaichi 0:40cf46d9746d 726 void RST( uint16 addr )
abegaichi 0:40cf46d9746d 727 {
abegaichi 0:40cf46d9746d 728 PUSH(PC);
abegaichi 0:40cf46d9746d 729 PC = addr;
abegaichi 0:40cf46d9746d 730 }
abegaichi 0:40cf46d9746d 731
abegaichi 0:40cf46d9746d 732 void RETN( void )
abegaichi 0:40cf46d9746d 733 {
abegaichi 0:40cf46d9746d 734 PC = POP();
abegaichi 0:40cf46d9746d 735 IFF1 = IFF2;
abegaichi 0:40cf46d9746d 736 if(IFF1 == 1) InterruptEnabled();
abegaichi 0:40cf46d9746d 737 }
abegaichi 0:40cf46d9746d 738
abegaichi 0:40cf46d9746d 739 void RETI( void )
abegaichi 0:40cf46d9746d 740 {
abegaichi 0:40cf46d9746d 741 PC = POP();
abegaichi 0:40cf46d9746d 742 IFF1 = IFF2;
abegaichi 0:40cf46d9746d 743 InterruptFinished();
abegaichi 0:40cf46d9746d 744 }
abegaichi 0:40cf46d9746d 745
abegaichi 0:40cf46d9746d 746
abegaichi 0:40cf46d9746d 747 uint16 EXSP( uint16 reg )
abegaichi 0:40cf46d9746d 748 {
abegaichi 0:40cf46d9746d 749 uint16 res;
abegaichi 0:40cf46d9746d 750
abegaichi 0:40cf46d9746d 751 res = ReadMemory16( SP );
abegaichi 0:40cf46d9746d 752 WriteMemory16( SP, reg );
abegaichi 0:40cf46d9746d 753 return res;
abegaichi 0:40cf46d9746d 754 }
abegaichi 0:40cf46d9746d 755
abegaichi 0:40cf46d9746d 756 uint8 INC( uint8 value )
abegaichi 0:40cf46d9746d 757 {
abegaichi 0:40cf46d9746d 758 value++;
abegaichi 0:40cf46d9746d 759 _F = (_F & CF) | SZHV_inc[value];
abegaichi 0:40cf46d9746d 760 return value;
abegaichi 0:40cf46d9746d 761 }
abegaichi 0:40cf46d9746d 762
abegaichi 0:40cf46d9746d 763 uint8 DEC( uint8 value )
abegaichi 0:40cf46d9746d 764 {
abegaichi 0:40cf46d9746d 765 uint8 res = value - 1;
abegaichi 0:40cf46d9746d 766 _F = (_F & CF) | SZHV_dec[res];
abegaichi 0:40cf46d9746d 767 return res;
abegaichi 0:40cf46d9746d 768 }
abegaichi 0:40cf46d9746d 769
abegaichi 0:40cf46d9746d 770 void ADD( uint8 value )
abegaichi 0:40cf46d9746d 771 {
abegaichi 0:40cf46d9746d 772 uint16 val;
abegaichi 0:40cf46d9746d 773 uint16 res;
abegaichi 0:40cf46d9746d 774
abegaichi 0:40cf46d9746d 775 val = value;
abegaichi 0:40cf46d9746d 776 res = _A + val;
abegaichi 0:40cf46d9746d 777
abegaichi 0:40cf46d9746d 778 _F = SZ[res & 0xff] | ((res >> 8) & CF) | ((_A ^ res ^ val) & HF) | (((val ^ _A ^ 0x80) & (val ^ res) & 0x80) >> 5);
abegaichi 0:40cf46d9746d 779 _A = (uint8)res;
abegaichi 0:40cf46d9746d 780 }
abegaichi 0:40cf46d9746d 781
abegaichi 0:40cf46d9746d 782 void ADC( uint8 value )
abegaichi 0:40cf46d9746d 783 {
abegaichi 0:40cf46d9746d 784 uint16 val = value;
abegaichi 0:40cf46d9746d 785 uint16 res = _A + val + (_F & CF);
abegaichi 0:40cf46d9746d 786 _F = SZ[res & 0xff] | ((res >> 8) & CF) | ((_A ^ res ^ val) & HF) | (((val ^ _A ^ 0x80) & (val ^ res) & 0x80) >> 5);
abegaichi 0:40cf46d9746d 787 _A = (uint8)res;
abegaichi 0:40cf46d9746d 788 }
abegaichi 0:40cf46d9746d 789
abegaichi 0:40cf46d9746d 790 void SUB( uint8 value )
abegaichi 0:40cf46d9746d 791 {
abegaichi 0:40cf46d9746d 792 uint16 val = value;
abegaichi 0:40cf46d9746d 793 uint16 res = _A - val;
abegaichi 0:40cf46d9746d 794 _F = SZ[res & 0xff] | ((res >> 8) & CF) | NF | ((_A ^ res ^ val) & HF) | (((val ^ _A) & (_A ^ res) & 0x80) >> 5);
abegaichi 0:40cf46d9746d 795 _A = (uint8)res;
abegaichi 0:40cf46d9746d 796 }
abegaichi 0:40cf46d9746d 797
abegaichi 0:40cf46d9746d 798 void SBC( uint8 value )
abegaichi 0:40cf46d9746d 799 {
abegaichi 0:40cf46d9746d 800 uint16 val = value;
abegaichi 0:40cf46d9746d 801 uint16 res = _A - val - (_F & CF);
abegaichi 0:40cf46d9746d 802 _F = SZ[res & 0xff] | ((res >> 8) & CF) | NF | ((_A ^ res ^ val) & HF) | (((val ^ _A) & (_A ^ res) & 0x80) >> 5);
abegaichi 0:40cf46d9746d 803 _A = (uint8)res;
abegaichi 0:40cf46d9746d 804 }
abegaichi 0:40cf46d9746d 805
abegaichi 0:40cf46d9746d 806 uint16 ADD16( uint16 dreg, uint16 sreg )
abegaichi 0:40cf46d9746d 807 {
abegaichi 0:40cf46d9746d 808 uint32 res = dreg + sreg;
abegaichi 0:40cf46d9746d 809 _F = (uint8)((_F & (SF | ZF | VF)) | (((dreg ^ res ^ sreg) >> 8) & HF) | ((res >> 16) & CF) | ((res >> 8) & (YF | XF)));
abegaichi 0:40cf46d9746d 810 return (uint16)res;
abegaichi 0:40cf46d9746d 811 }
abegaichi 0:40cf46d9746d 812
abegaichi 0:40cf46d9746d 813 void ADC16( uint16 reg )
abegaichi 0:40cf46d9746d 814 {
abegaichi 0:40cf46d9746d 815 uint32 res = HL + reg + (_F & CF);
abegaichi 0:40cf46d9746d 816 _F = (uint8)((((HL ^ res ^ reg) >> 8) & HF) | ((res >> 16) & CF) | ((res >> 8) & (SF | YF | XF)) | ((res & 0xffff) ? 0 : ZF) | (((reg ^ HL ^ 0x8000) & (reg ^ res) & 0x8000) >> 13));
abegaichi 0:40cf46d9746d 817 HL = (uint16)res;
abegaichi 0:40cf46d9746d 818 }
abegaichi 0:40cf46d9746d 819
abegaichi 0:40cf46d9746d 820 void SBC16( uint16 reg )
abegaichi 0:40cf46d9746d 821 {
abegaichi 0:40cf46d9746d 822 uint32 res = HL - reg - (_F & CF);
abegaichi 0:40cf46d9746d 823 _F = (uint8)((((HL ^ res ^ reg) >> 8) & HF) | NF | ((res >> 16) & CF) | ((res >> 8) & (SF | YF | XF)) | ((res & 0xffff) ? 0 : ZF) | (((reg ^ HL) & (HL ^ res) &0x8000) >> 13));
abegaichi 0:40cf46d9746d 824 HL = (uint16)res;
abegaichi 0:40cf46d9746d 825 }
abegaichi 0:40cf46d9746d 826
abegaichi 0:40cf46d9746d 827 void NEG( void )
abegaichi 0:40cf46d9746d 828 {
abegaichi 0:40cf46d9746d 829 uint8 value = _A;
abegaichi 0:40cf46d9746d 830 _A = 0;
abegaichi 0:40cf46d9746d 831 SUB( value );
abegaichi 0:40cf46d9746d 832 }
abegaichi 0:40cf46d9746d 833
abegaichi 0:40cf46d9746d 834 void DAA( void )
abegaichi 0:40cf46d9746d 835 {
abegaichi 0:40cf46d9746d 836 uint16 idx = _A;
abegaichi 0:40cf46d9746d 837 if(_F & CF) idx |= 0x100;
abegaichi 0:40cf46d9746d 838 if(_F & HF) idx |= 0x200;
abegaichi 0:40cf46d9746d 839 if(_F & NF) idx |= 0x400;
abegaichi 0:40cf46d9746d 840 AF = DAATable[idx];
abegaichi 0:40cf46d9746d 841 }
abegaichi 0:40cf46d9746d 842
abegaichi 0:40cf46d9746d 843
abegaichi 0:40cf46d9746d 844 void AND( uint8 value )
abegaichi 0:40cf46d9746d 845 {
abegaichi 0:40cf46d9746d 846 _A &= value;
abegaichi 0:40cf46d9746d 847 _F = SZP[_A] | HF;
abegaichi 0:40cf46d9746d 848 }
abegaichi 0:40cf46d9746d 849
abegaichi 0:40cf46d9746d 850 void OR( uint8 value )
abegaichi 0:40cf46d9746d 851 {
abegaichi 0:40cf46d9746d 852 _A |= value;
abegaichi 0:40cf46d9746d 853 _F = SZP[_A];
abegaichi 0:40cf46d9746d 854 }
abegaichi 0:40cf46d9746d 855
abegaichi 0:40cf46d9746d 856 void XOR( uint8 value )
abegaichi 0:40cf46d9746d 857 {
abegaichi 0:40cf46d9746d 858 _A ^= value;
abegaichi 0:40cf46d9746d 859 _F = SZP[_A];
abegaichi 0:40cf46d9746d 860 }
abegaichi 0:40cf46d9746d 861
abegaichi 0:40cf46d9746d 862 void CP( uint8 value )
abegaichi 0:40cf46d9746d 863 {
abegaichi 0:40cf46d9746d 864 uint16 val = value;
abegaichi 0:40cf46d9746d 865 uint16 res = _A - val;
abegaichi 0:40cf46d9746d 866 _F = (SZ[res & 0xff] & (SF | ZF)) | (val & (YF | XF)) | ((res >> 8) & CF) | NF | ((_A ^ res ^ val) & HF) | ((((val ^ _A) & (_A ^ res)) >> 5) & VF);
abegaichi 0:40cf46d9746d 867 }
abegaichi 0:40cf46d9746d 868
abegaichi 0:40cf46d9746d 869 void RLCA( void )
abegaichi 0:40cf46d9746d 870 {
abegaichi 0:40cf46d9746d 871 _A = (_A << 1) | (_A >> 7);
abegaichi 0:40cf46d9746d 872 _F = (_F & (SF | ZF | PF)) | (_A & (YF | XF | CF));
abegaichi 0:40cf46d9746d 873 }
abegaichi 0:40cf46d9746d 874
abegaichi 0:40cf46d9746d 875 void RRCA( void )
abegaichi 0:40cf46d9746d 876 {
abegaichi 0:40cf46d9746d 877 _F = (_F & (SF | ZF | PF)) | (_A & CF);
abegaichi 0:40cf46d9746d 878 _A = (_A >> 1) | (_A << 7);
abegaichi 0:40cf46d9746d 879 _F |= (_A & (YF | XF));
abegaichi 0:40cf46d9746d 880 }
abegaichi 0:40cf46d9746d 881
abegaichi 0:40cf46d9746d 882 void RLA( void )
abegaichi 0:40cf46d9746d 883 {
abegaichi 0:40cf46d9746d 884 uint8 res = (_A << 1) | (_F & CF);
abegaichi 0:40cf46d9746d 885 uint8 c = (_A & 0x80) ? CF : 0;
abegaichi 0:40cf46d9746d 886 _F = (_F & (SF | ZF | PF)) | c | (res & (YF | XF));
abegaichi 0:40cf46d9746d 887 _A = res;
abegaichi 0:40cf46d9746d 888 }
abegaichi 0:40cf46d9746d 889
abegaichi 0:40cf46d9746d 890 void RRA( void )
abegaichi 0:40cf46d9746d 891 {
abegaichi 0:40cf46d9746d 892 uint8 res = (_A >> 1) | (_F << 7);
abegaichi 0:40cf46d9746d 893 uint8 c = (_A & 0x01) ? CF : 0;
abegaichi 0:40cf46d9746d 894 _F = (_F & (SF | ZF | PF)) | c | (res & (YF | XF));
abegaichi 0:40cf46d9746d 895 _A = res;
abegaichi 0:40cf46d9746d 896 }
abegaichi 0:40cf46d9746d 897
abegaichi 0:40cf46d9746d 898 void RRD( void )
abegaichi 0:40cf46d9746d 899 {
abegaichi 0:40cf46d9746d 900 uint8 n = ReadMemory( HL );
abegaichi 0:40cf46d9746d 901 WriteMemory(HL, (n >> 4) | (_A << 4));
abegaichi 0:40cf46d9746d 902 _A = (_A & 0xf0) | (n & 0x0f);
abegaichi 0:40cf46d9746d 903 _F = (_F & CF) | SZP[_A];
abegaichi 0:40cf46d9746d 904 }
abegaichi 0:40cf46d9746d 905
abegaichi 0:40cf46d9746d 906 void RLD( void )
abegaichi 0:40cf46d9746d 907 {
abegaichi 0:40cf46d9746d 908 uint8 n = ReadMemory( HL );
abegaichi 0:40cf46d9746d 909 WriteMemory(HL, (n << 4) | (_A & 0x0f));
abegaichi 0:40cf46d9746d 910 _A = (_A & 0xf0) | (n >> 4);
abegaichi 0:40cf46d9746d 911 _F = (_F & CF) | SZP[_A];
abegaichi 0:40cf46d9746d 912 }
abegaichi 0:40cf46d9746d 913
abegaichi 0:40cf46d9746d 914 uint8 RLC( uint8 value )
abegaichi 0:40cf46d9746d 915 {
abegaichi 0:40cf46d9746d 916 uint8 res = value;
abegaichi 0:40cf46d9746d 917 uint8 c = (res & 0x80) ? CF : 0;
abegaichi 0:40cf46d9746d 918 res = ((res << 1) | (res >> 7)) & 0xff;
abegaichi 0:40cf46d9746d 919 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 920 return res;
abegaichi 0:40cf46d9746d 921 }
abegaichi 0:40cf46d9746d 922
abegaichi 0:40cf46d9746d 923 uint8 RRC( uint8 value )
abegaichi 0:40cf46d9746d 924 {
abegaichi 0:40cf46d9746d 925 uint8 res = value;
abegaichi 0:40cf46d9746d 926 uint8 c = (res & 0x01) ? CF : 0;
abegaichi 0:40cf46d9746d 927 res = ((res >> 1) | (res << 7)) & 0xff;
abegaichi 0:40cf46d9746d 928 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 929 return res;
abegaichi 0:40cf46d9746d 930 }
abegaichi 0:40cf46d9746d 931
abegaichi 0:40cf46d9746d 932 uint8 RL( uint8 value )
abegaichi 0:40cf46d9746d 933 {
abegaichi 0:40cf46d9746d 934 uint8 res = value;
abegaichi 0:40cf46d9746d 935 uint8 c = (res & 0x80) ? CF : 0;
abegaichi 0:40cf46d9746d 936 res = ((res << 1) | (_F & CF)) & 0xff;
abegaichi 0:40cf46d9746d 937 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 938 return res;
abegaichi 0:40cf46d9746d 939 }
abegaichi 0:40cf46d9746d 940
abegaichi 0:40cf46d9746d 941 uint8 RR( uint8 value )
abegaichi 0:40cf46d9746d 942 {
abegaichi 0:40cf46d9746d 943 uint8 res = value;
abegaichi 0:40cf46d9746d 944 uint8 c = (res & 0x01) ? CF : 0;
abegaichi 0:40cf46d9746d 945 res = ((res >> 1) | (_F << 7)) & 0xff;
abegaichi 0:40cf46d9746d 946 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 947 return res;
abegaichi 0:40cf46d9746d 948 }
abegaichi 0:40cf46d9746d 949
abegaichi 0:40cf46d9746d 950 uint8 SLA( uint8 value )
abegaichi 0:40cf46d9746d 951 {
abegaichi 0:40cf46d9746d 952 uint8 res = value;
abegaichi 0:40cf46d9746d 953 uint8 c = (res & 0x80) ? CF : 0;
abegaichi 0:40cf46d9746d 954 res = (res << 1) & 0xff;
abegaichi 0:40cf46d9746d 955 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 956 return res;
abegaichi 0:40cf46d9746d 957 }
abegaichi 0:40cf46d9746d 958
abegaichi 0:40cf46d9746d 959 uint8 SRA( uint8 value )
abegaichi 0:40cf46d9746d 960 {
abegaichi 0:40cf46d9746d 961 uint8 res = value;
abegaichi 0:40cf46d9746d 962 uint8 c = (res & 0x01) ? CF : 0;
abegaichi 0:40cf46d9746d 963 res = ((res >> 1) | (res & 0x80)) & 0xff;
abegaichi 0:40cf46d9746d 964 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 965 return res;
abegaichi 0:40cf46d9746d 966 }
abegaichi 0:40cf46d9746d 967
abegaichi 0:40cf46d9746d 968 uint8 SLL( uint8 value )
abegaichi 0:40cf46d9746d 969 {
abegaichi 0:40cf46d9746d 970 uint8 res = value;
abegaichi 0:40cf46d9746d 971 uint8 c = (res & 0x80) ? CF : 0;
abegaichi 0:40cf46d9746d 972 res = ((res << 1) | 0x01) & 0xff;
abegaichi 0:40cf46d9746d 973 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 974 return res;
abegaichi 0:40cf46d9746d 975 }
abegaichi 0:40cf46d9746d 976
abegaichi 0:40cf46d9746d 977 uint8 SRL( uint8 value )
abegaichi 0:40cf46d9746d 978 {
abegaichi 0:40cf46d9746d 979 uint8 res = value;
abegaichi 0:40cf46d9746d 980 uint8 c = (res & 0x01) ? CF : 0;
abegaichi 0:40cf46d9746d 981 res = (res >> 1) & 0xff;
abegaichi 0:40cf46d9746d 982 _F = SZP[res] | c;
abegaichi 0:40cf46d9746d 983 return res;
abegaichi 0:40cf46d9746d 984 }
abegaichi 0:40cf46d9746d 985
abegaichi 0:40cf46d9746d 986 void BIT( uint8 bit, uint8 reg )
abegaichi 0:40cf46d9746d 987 {
abegaichi 0:40cf46d9746d 988 _F = (_F & CF) | HF | SZ_BIT[reg & (1 << bit)];
abegaichi 0:40cf46d9746d 989 }
abegaichi 0:40cf46d9746d 990
abegaichi 0:40cf46d9746d 991 void BIT_XY( uint8 bit, uint8 reg )
abegaichi 0:40cf46d9746d 992 {
abegaichi 0:40cf46d9746d 993 _F = (_F & CF) | HF | (SZ_BIT[reg & (1 << bit)] & ~(YF | XF)) | ((EA >> 8) & (YF | XF));
abegaichi 0:40cf46d9746d 994 }
abegaichi 0:40cf46d9746d 995
abegaichi 0:40cf46d9746d 996 uint8 RES( uint8 bit, uint8 value )
abegaichi 0:40cf46d9746d 997 {
abegaichi 0:40cf46d9746d 998 return value & ~(1 << bit);
abegaichi 0:40cf46d9746d 999 }
abegaichi 0:40cf46d9746d 1000
abegaichi 0:40cf46d9746d 1001 uint8 SET( uint8 bit, uint8 value )
abegaichi 0:40cf46d9746d 1002 {
abegaichi 0:40cf46d9746d 1003 return value | (1 << bit);
abegaichi 0:40cf46d9746d 1004 }
abegaichi 0:40cf46d9746d 1005
abegaichi 0:40cf46d9746d 1006 void LDI( void )
abegaichi 0:40cf46d9746d 1007 {
abegaichi 0:40cf46d9746d 1008 uint8 io = ReadMemory( HL );
abegaichi 0:40cf46d9746d 1009 WriteMemory(DE, io);
abegaichi 0:40cf46d9746d 1010 _F &= SF | ZF | CF;
abegaichi 0:40cf46d9746d 1011 if((_A + io) & 0x02) _F |= YF; // bit 1 -> flag 5
abegaichi 0:40cf46d9746d 1012 if((_A + io) & 0x08) _F |= XF; // bit 3 -> flag 3
abegaichi 0:40cf46d9746d 1013 HL++; DE++; BC--;
abegaichi 0:40cf46d9746d 1014 if(BC) _F |= VF;
abegaichi 0:40cf46d9746d 1015 }
abegaichi 0:40cf46d9746d 1016
abegaichi 0:40cf46d9746d 1017 void CPI( void )
abegaichi 0:40cf46d9746d 1018 {
abegaichi 0:40cf46d9746d 1019 uint8 val = ReadMemory( HL );
abegaichi 0:40cf46d9746d 1020 uint8 res = _A - val;
abegaichi 0:40cf46d9746d 1021 HL++; BC--;
abegaichi 0:40cf46d9746d 1022 _F = (_F & CF) | (SZ[res] & ~(YF | XF)) | ((_A ^ val ^ res) & HF) | NF;
abegaichi 0:40cf46d9746d 1023 if(_F & HF) res -= 1;
abegaichi 0:40cf46d9746d 1024 if(res & 0x02) _F |= YF; // bit 1 -> flag 5
abegaichi 0:40cf46d9746d 1025 if(res & 0x08) _F |= XF; // bit 3 -> flag 3
abegaichi 0:40cf46d9746d 1026 if(BC) _F |= VF;
abegaichi 0:40cf46d9746d 1027 }
abegaichi 0:40cf46d9746d 1028
abegaichi 0:40cf46d9746d 1029 void INI( void )
abegaichi 0:40cf46d9746d 1030 {
abegaichi 0:40cf46d9746d 1031 uint8 io = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 1032 _B--;
abegaichi 0:40cf46d9746d 1033 WriteMemory(HL, io);
abegaichi 0:40cf46d9746d 1034 HL++;
abegaichi 0:40cf46d9746d 1035 _F = SZ[_B];
abegaichi 0:40cf46d9746d 1036 if(io & SF) _F |= NF;
abegaichi 0:40cf46d9746d 1037 if((((_C + 1) & 0xff) + io) & 0x100) _F |= HF | CF;
abegaichi 0:40cf46d9746d 1038 if((irep_tmp[_C & 3][io & 3] ^ breg_tmp[_B] ^ (_C >> 2) ^ (io >> 2)) & 1) _F |= PF;
abegaichi 0:40cf46d9746d 1039 }
abegaichi 0:40cf46d9746d 1040
abegaichi 0:40cf46d9746d 1041 void OUTI( void )
abegaichi 0:40cf46d9746d 1042 {
abegaichi 0:40cf46d9746d 1043 uint8 io = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1044 _B--;
abegaichi 0:40cf46d9746d 1045 WriteIO(_C, _B, io);
abegaichi 0:40cf46d9746d 1046 HL++;
abegaichi 0:40cf46d9746d 1047 _F = SZ[_B];
abegaichi 0:40cf46d9746d 1048 if(io & SF) _F |= NF;
abegaichi 0:40cf46d9746d 1049 if((((_C + 1) & 0xff) + io) & 0x100) _F |= HF | CF;
abegaichi 0:40cf46d9746d 1050 if((irep_tmp[_C & 3][io & 3] ^ breg_tmp[_B] ^ (_C >> 2) ^ (io >> 2)) & 1) _F |= PF;
abegaichi 0:40cf46d9746d 1051 }
abegaichi 0:40cf46d9746d 1052
abegaichi 0:40cf46d9746d 1053 void LDD( void )
abegaichi 0:40cf46d9746d 1054 {
abegaichi 0:40cf46d9746d 1055 uint8 io = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1056 WriteMemory(DE, io);
abegaichi 0:40cf46d9746d 1057 _F &= SF | ZF | CF;
abegaichi 0:40cf46d9746d 1058 if((_A + io) & 0x02) _F |= YF; // bit 1 -> flag 5
abegaichi 0:40cf46d9746d 1059 if((_A + io) & 0x08) _F |= XF; // bit 3 -> flag 3
abegaichi 0:40cf46d9746d 1060 HL--; DE--; BC--;
abegaichi 0:40cf46d9746d 1061 if(BC) _F |= VF;
abegaichi 0:40cf46d9746d 1062 }
abegaichi 0:40cf46d9746d 1063
abegaichi 0:40cf46d9746d 1064 void CPD( void )
abegaichi 0:40cf46d9746d 1065 {
abegaichi 0:40cf46d9746d 1066 uint8 val = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1067 uint8 res = _A - val;
abegaichi 0:40cf46d9746d 1068 HL--; BC--;
abegaichi 0:40cf46d9746d 1069 _F = (_F & CF) | (SZ[res] & ~(YF | XF)) | ((_A ^ val ^ res) & HF) | NF;
abegaichi 0:40cf46d9746d 1070 if(_F & HF) res -= 1;
abegaichi 0:40cf46d9746d 1071 if(res & 0x02) _F |= YF; // bit 1 -> flag 5
abegaichi 0:40cf46d9746d 1072 if(res & 0x08) _F |= XF; // bit 3 -> flag 3
abegaichi 0:40cf46d9746d 1073 if(BC) _F |= VF;
abegaichi 0:40cf46d9746d 1074 }
abegaichi 0:40cf46d9746d 1075
abegaichi 0:40cf46d9746d 1076 void IND( void )
abegaichi 0:40cf46d9746d 1077 {
abegaichi 0:40cf46d9746d 1078 uint8 io = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 1079 _B--;
abegaichi 0:40cf46d9746d 1080 WriteMemory(HL, io);
abegaichi 0:40cf46d9746d 1081 HL--;
abegaichi 0:40cf46d9746d 1082 _F = SZ[_B];
abegaichi 0:40cf46d9746d 1083 if(io & SF) _F |= NF;
abegaichi 0:40cf46d9746d 1084 if((((_C - 1) & 0xff) + io) & 0x100) _F |= HF | CF;
abegaichi 0:40cf46d9746d 1085 if((drep_tmp[_C & 3][io & 3] ^ breg_tmp[_B] ^ (_C >> 2) ^ (io >> 2)) & 1) _F |= PF;
abegaichi 0:40cf46d9746d 1086 }
abegaichi 0:40cf46d9746d 1087
abegaichi 0:40cf46d9746d 1088 void OUTD( void )
abegaichi 0:40cf46d9746d 1089 {
abegaichi 0:40cf46d9746d 1090 uint8 io = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1091 _B--;
abegaichi 0:40cf46d9746d 1092 WriteIO(_C, _B, io);
abegaichi 0:40cf46d9746d 1093 HL--;
abegaichi 0:40cf46d9746d 1094 _F = SZ[_B];
abegaichi 0:40cf46d9746d 1095 if(io & SF) _F |= NF;
abegaichi 0:40cf46d9746d 1096 if((((_C - 1) & 0xff) + io) & 0x100) _F |= HF | CF;
abegaichi 0:40cf46d9746d 1097 if((drep_tmp[_C & 3][io & 3] ^ breg_tmp[_B] ^ (_C >> 2) ^ (io >> 2)) & 1) _F |= PF;
abegaichi 0:40cf46d9746d 1098 }
abegaichi 0:40cf46d9746d 1099
abegaichi 0:40cf46d9746d 1100 void LDIR( void )
abegaichi 0:40cf46d9746d 1101 {
abegaichi 0:40cf46d9746d 1102 LDI();
abegaichi 0:40cf46d9746d 1103 if(BC) {
abegaichi 0:40cf46d9746d 1104 PC -= 2;
abegaichi 0:40cf46d9746d 1105 count -= (int)cc_ex[0xb0];
abegaichi 0:40cf46d9746d 1106 }
abegaichi 0:40cf46d9746d 1107 }
abegaichi 0:40cf46d9746d 1108
abegaichi 0:40cf46d9746d 1109 void CPIR( void )
abegaichi 0:40cf46d9746d 1110 {
abegaichi 0:40cf46d9746d 1111 while( 1 ) {
abegaichi 0:40cf46d9746d 1112 CPI();
abegaichi 0:40cf46d9746d 1113 if(BC && !(_F & ZF))
abegaichi 0:40cf46d9746d 1114 count -= (int)cc_ex[0xb1];
abegaichi 0:40cf46d9746d 1115 else
abegaichi 0:40cf46d9746d 1116 break;
abegaichi 0:40cf46d9746d 1117 }
abegaichi 0:40cf46d9746d 1118 }
abegaichi 0:40cf46d9746d 1119
abegaichi 0:40cf46d9746d 1120 void INIR( void )
abegaichi 0:40cf46d9746d 1121 {
abegaichi 0:40cf46d9746d 1122 while( 1 ) {
abegaichi 0:40cf46d9746d 1123 INI();
abegaichi 0:40cf46d9746d 1124 if(_B)
abegaichi 0:40cf46d9746d 1125 count -= (int)cc_ex[0xb2];
abegaichi 0:40cf46d9746d 1126 else
abegaichi 0:40cf46d9746d 1127 break;
abegaichi 0:40cf46d9746d 1128 }
abegaichi 0:40cf46d9746d 1129 }
abegaichi 0:40cf46d9746d 1130
abegaichi 0:40cf46d9746d 1131 void OTIR( void )
abegaichi 0:40cf46d9746d 1132 {
abegaichi 0:40cf46d9746d 1133 while( 1 ) {
abegaichi 0:40cf46d9746d 1134 OUTI();
abegaichi 0:40cf46d9746d 1135 if(_B)
abegaichi 0:40cf46d9746d 1136 count -= (int)cc_ex[0xb3];
abegaichi 0:40cf46d9746d 1137 else
abegaichi 0:40cf46d9746d 1138 break;
abegaichi 0:40cf46d9746d 1139 }
abegaichi 0:40cf46d9746d 1140 }
abegaichi 0:40cf46d9746d 1141
abegaichi 0:40cf46d9746d 1142 void LDDR( void )
abegaichi 0:40cf46d9746d 1143 {
abegaichi 0:40cf46d9746d 1144 while( 1 ) {
abegaichi 0:40cf46d9746d 1145 LDD();
abegaichi 0:40cf46d9746d 1146 if(BC)
abegaichi 0:40cf46d9746d 1147 count -= (int)cc_ex[0xb8];
abegaichi 0:40cf46d9746d 1148 else
abegaichi 0:40cf46d9746d 1149 break;
abegaichi 0:40cf46d9746d 1150 }
abegaichi 0:40cf46d9746d 1151 }
abegaichi 0:40cf46d9746d 1152
abegaichi 0:40cf46d9746d 1153 void CPDR( void )
abegaichi 0:40cf46d9746d 1154 {
abegaichi 0:40cf46d9746d 1155 while( 1 ) {
abegaichi 0:40cf46d9746d 1156 CPD();
abegaichi 0:40cf46d9746d 1157 if(BC && !(_F & ZF))
abegaichi 0:40cf46d9746d 1158 count -= (int)cc_ex[0xb9];
abegaichi 0:40cf46d9746d 1159 else
abegaichi 0:40cf46d9746d 1160 break;
abegaichi 0:40cf46d9746d 1161 }
abegaichi 0:40cf46d9746d 1162 }
abegaichi 0:40cf46d9746d 1163
abegaichi 0:40cf46d9746d 1164 void INDR( void )
abegaichi 0:40cf46d9746d 1165 {
abegaichi 0:40cf46d9746d 1166 while( 1 ) {
abegaichi 0:40cf46d9746d 1167 IND();
abegaichi 0:40cf46d9746d 1168 if(_B)
abegaichi 0:40cf46d9746d 1169 count -= (int)cc_ex[0xba];
abegaichi 0:40cf46d9746d 1170 else
abegaichi 0:40cf46d9746d 1171 break;
abegaichi 0:40cf46d9746d 1172 }
abegaichi 0:40cf46d9746d 1173 }
abegaichi 0:40cf46d9746d 1174
abegaichi 0:40cf46d9746d 1175 void OTDR( void )
abegaichi 0:40cf46d9746d 1176 {
abegaichi 0:40cf46d9746d 1177 while( 1 ) {
abegaichi 0:40cf46d9746d 1178 OUTD();
abegaichi 0:40cf46d9746d 1179 if(_B)
abegaichi 0:40cf46d9746d 1180 count -= (int)cc_ex[0xbb];
abegaichi 0:40cf46d9746d 1181 else
abegaichi 0:40cf46d9746d 1182 break;
abegaichi 0:40cf46d9746d 1183 }
abegaichi 0:40cf46d9746d 1184 }
abegaichi 0:40cf46d9746d 1185
abegaichi 0:40cf46d9746d 1186
abegaichi 0:40cf46d9746d 1187
abegaichi 0:40cf46d9746d 1188
abegaichi 0:40cf46d9746d 1189
abegaichi 0:40cf46d9746d 1190
abegaichi 0:40cf46d9746d 1191
abegaichi 0:40cf46d9746d 1192 void Z80Init( void )
abegaichi 0:40cf46d9746d 1193 {
abegaichi 1:bd86d49d7622 1194 //
abegaichi 0:40cf46d9746d 1195 AF = BC = DE = HL = IX = IY = 0;
abegaichi 0:40cf46d9746d 1196 _I = _R = 0;
abegaichi 0:40cf46d9746d 1197 exAF = exBC = exDE = exHL = 0;
abegaichi 0:40cf46d9746d 1198
abegaichi 0:40cf46d9746d 1199 PC = 0;
abegaichi 0:40cf46d9746d 1200
abegaichi 0:40cf46d9746d 1201 IM = IFF1 = IFF2 = HALT = 0;
abegaichi 0:40cf46d9746d 1202 count = 0;
abegaichi 0:40cf46d9746d 1203
abegaichi 0:40cf46d9746d 1204 Z80Reset();
abegaichi 0:40cf46d9746d 1205
abegaichi 0:40cf46d9746d 1206 }
abegaichi 0:40cf46d9746d 1207 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1208 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1209 void Z80Reset( void )
abegaichi 0:40cf46d9746d 1210 {
abegaichi 0:40cf46d9746d 1211 _I = _R = 0;
abegaichi 0:40cf46d9746d 1212 IM = IFF1 = IFF2 = HALT = 0;
abegaichi 0:40cf46d9746d 1213 }
abegaichi 0:40cf46d9746d 1214 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1215 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1216 void Z80DoIRQ( uint8 vector )
abegaichi 0:40cf46d9746d 1217 {
abegaichi 0:40cf46d9746d 1218 // when HALT, skip
abegaichi 0:40cf46d9746d 1219 if( HALT ) {
abegaichi 0:40cf46d9746d 1220 PC++;
abegaichi 0:40cf46d9746d 1221 HALT = 0;
abegaichi 0:40cf46d9746d 1222 }
abegaichi 0:40cf46d9746d 1223
abegaichi 0:40cf46d9746d 1224 // IRQ
abegaichi 0:40cf46d9746d 1225 if(IM == 0) {
abegaichi 0:40cf46d9746d 1226
abegaichi 0:40cf46d9746d 1227 // MODE 0 (onry RST)
abegaichi 0:40cf46d9746d 1228 PUSH( PC );
abegaichi 0:40cf46d9746d 1229
abegaichi 0:40cf46d9746d 1230 switch( vector ) {
abegaichi 0:40cf46d9746d 1231 case 0xc7: // RST 00H
abegaichi 0:40cf46d9746d 1232 PC = 0x0000;
abegaichi 0:40cf46d9746d 1233 break;
abegaichi 0:40cf46d9746d 1234 case 0xcf: // RST 08H
abegaichi 0:40cf46d9746d 1235 PC = 0x0008;
abegaichi 0:40cf46d9746d 1236 break;
abegaichi 0:40cf46d9746d 1237 case 0xd7: // RST 10H
abegaichi 0:40cf46d9746d 1238 PC = 0x0010;
abegaichi 0:40cf46d9746d 1239 break;
abegaichi 0:40cf46d9746d 1240 case 0xdf: // RST 18H
abegaichi 0:40cf46d9746d 1241 PC = 0x0018;
abegaichi 0:40cf46d9746d 1242 break;
abegaichi 0:40cf46d9746d 1243 case 0xe7: // RST 20H
abegaichi 0:40cf46d9746d 1244 PC = 0x0020;
abegaichi 0:40cf46d9746d 1245 break;
abegaichi 0:40cf46d9746d 1246 case 0xef: // RST 28H
abegaichi 0:40cf46d9746d 1247 PC = 0x0028;
abegaichi 0:40cf46d9746d 1248 break;
abegaichi 0:40cf46d9746d 1249 case 0xf7: // RST 30H
abegaichi 0:40cf46d9746d 1250 PC = 0x0030;
abegaichi 0:40cf46d9746d 1251 break;
abegaichi 0:40cf46d9746d 1252 case 0xff: // RST 38H
abegaichi 0:40cf46d9746d 1253 PC = 0x0038;
abegaichi 0:40cf46d9746d 1254 break;
abegaichi 0:40cf46d9746d 1255 }
abegaichi 0:40cf46d9746d 1256 count -= 7;
abegaichi 0:40cf46d9746d 1257
abegaichi 0:40cf46d9746d 1258 } else if(IM == 1) {
abegaichi 0:40cf46d9746d 1259
abegaichi 0:40cf46d9746d 1260 // MODE 1
abegaichi 0:40cf46d9746d 1261 PUSH( PC );
abegaichi 0:40cf46d9746d 1262 PC = 0x0038;
abegaichi 0:40cf46d9746d 1263 count -= 7;
abegaichi 0:40cf46d9746d 1264
abegaichi 0:40cf46d9746d 1265 } else {
abegaichi 0:40cf46d9746d 1266
abegaichi 0:40cf46d9746d 1267 // MODE 2
abegaichi 0:40cf46d9746d 1268 PUSH( PC );
abegaichi 0:40cf46d9746d 1269 PC = ReadMemory16( (_I << 8) | vector );
abegaichi 0:40cf46d9746d 1270 count -= 7;
abegaichi 0:40cf46d9746d 1271
abegaichi 0:40cf46d9746d 1272 }
abegaichi 0:40cf46d9746d 1273 IFF1 = IFF2 = 0;
abegaichi 0:40cf46d9746d 1274
abegaichi 0:40cf46d9746d 1275 }
abegaichi 0:40cf46d9746d 1276 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1277 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1278 void Z80DoNMI( void )
abegaichi 0:40cf46d9746d 1279 {
abegaichi 1:bd86d49d7622 1280 //
abegaichi 0:40cf46d9746d 1281 if( HALT ) {
abegaichi 0:40cf46d9746d 1282 PC++;
abegaichi 0:40cf46d9746d 1283 HALT = 0;
abegaichi 0:40cf46d9746d 1284 }
abegaichi 0:40cf46d9746d 1285
abegaichi 0:40cf46d9746d 1286 PUSH( PC );
abegaichi 0:40cf46d9746d 1287 PC = 0x0066;
abegaichi 0:40cf46d9746d 1288 count -= 5;
abegaichi 0:40cf46d9746d 1289 IFF1 = 0;
abegaichi 0:40cf46d9746d 1290 }
abegaichi 0:40cf46d9746d 1291 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1292 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1293 int Z80Run( void )
abegaichi 0:40cf46d9746d 1294 {
abegaichi 1:bd86d49d7622 1295 #ifdef DBG01
abegaichi 1:bd86d49d7622 1296 char buf[8];
abegaichi 1:bd86d49d7622 1297 #endif
abegaichi 1:bd86d49d7622 1298
abegaichi 1:bd86d49d7622 1299
abegaichi 0:40cf46d9746d 1300 #if 0
abegaichi 1:bd86d49d7622 1301 count = 0;
abegaichi 1:bd86d49d7622 1302
abegaichi 1:bd86d49d7622 1303 //
abegaichi 0:40cf46d9746d 1304 if( IFF1 > 1 ) {
abegaichi 0:40cf46d9746d 1305 if( --IFF1 == 1 ) {
abegaichi 0:40cf46d9746d 1306 InterruptEnabled();
abegaichi 0:40cf46d9746d 1307 }
abegaichi 0:40cf46d9746d 1308 }
abegaichi 0:40cf46d9746d 1309
abegaichi 0:40cf46d9746d 1310 #endif
abegaichi 1:bd86d49d7622 1311
abegaichi 1:bd86d49d7622 1312 #ifdef DBG01
abegaichi 1:bd86d49d7622 1313 DispReg();
abegaichi 1:bd86d49d7622 1314 #endif
abegaichi 1:bd86d49d7622 1315
abegaichi 0:40cf46d9746d 1316 if( !HALT ) {
abegaichi 0:40cf46d9746d 1317 execute_op();
abegaichi 1:bd86d49d7622 1318
abegaichi 1:bd86d49d7622 1319 #ifdef DBG01
abegaichi 1:bd86d49d7622 1320 DispReg();
abegaichi 1:bd86d49d7622 1321 WRecvZ80(buf);
abegaichi 1:bd86d49d7622 1322 #endif
abegaichi 0:40cf46d9746d 1323 }
abegaichi 0:40cf46d9746d 1324
abegaichi 0:40cf46d9746d 1325 // return -count;
abegaichi 0:40cf46d9746d 1326 return 1;
abegaichi 0:40cf46d9746d 1327 }
abegaichi 0:40cf46d9746d 1328 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 1329 /* */
abegaichi 1:bd86d49d7622 1330 /* */
abegaichi 1:bd86d49d7622 1331 /* */
abegaichi 0:40cf46d9746d 1332 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 1333 void execute_op( void )
abegaichi 0:40cf46d9746d 1334 {
abegaichi 0:40cf46d9746d 1335 uint16 tmp16;
abegaichi 0:40cf46d9746d 1336
abegaichi 0:40cf46d9746d 1337 uint8 cmd;
abegaichi 0:40cf46d9746d 1338
abegaichi 0:40cf46d9746d 1339 prvPC = PC;
abegaichi 0:40cf46d9746d 1340
abegaichi 0:40cf46d9746d 1341 cmd = Fetch();
abegaichi 0:40cf46d9746d 1342 count -= (int)cc_op[cmd];
abegaichi 0:40cf46d9746d 1343
abegaichi 0:40cf46d9746d 1344 _R = (_R & 0x80) | ((_R + 1) & 0x7f);
abegaichi 0:40cf46d9746d 1345
abegaichi 0:40cf46d9746d 1346
abegaichi 0:40cf46d9746d 1347 switch( cmd ) {
abegaichi 0:40cf46d9746d 1348
abegaichi 0:40cf46d9746d 1349 case 0x00: // NOP
abegaichi 0:40cf46d9746d 1350 break;
abegaichi 0:40cf46d9746d 1351
abegaichi 0:40cf46d9746d 1352 case 0x01: // LD BC, w
abegaichi 0:40cf46d9746d 1353 BC = Fetch16();
abegaichi 0:40cf46d9746d 1354 break;
abegaichi 0:40cf46d9746d 1355
abegaichi 0:40cf46d9746d 1356 case 0x02: // LD (BC), A
abegaichi 0:40cf46d9746d 1357 WriteMemory( BC, _A );
abegaichi 0:40cf46d9746d 1358 break;
abegaichi 0:40cf46d9746d 1359
abegaichi 0:40cf46d9746d 1360 case 0x03: // INC BC
abegaichi 0:40cf46d9746d 1361 BC++;
abegaichi 0:40cf46d9746d 1362 break;
abegaichi 0:40cf46d9746d 1363
abegaichi 0:40cf46d9746d 1364 case 0x04: // INC B
abegaichi 0:40cf46d9746d 1365 _B = INC(_B);
abegaichi 0:40cf46d9746d 1366 break;
abegaichi 0:40cf46d9746d 1367
abegaichi 0:40cf46d9746d 1368 case 0x05: // DEC B
abegaichi 0:40cf46d9746d 1369 _B = DEC(_B);
abegaichi 0:40cf46d9746d 1370 break;
abegaichi 0:40cf46d9746d 1371
abegaichi 0:40cf46d9746d 1372 case 0x06: // LD B, n
abegaichi 0:40cf46d9746d 1373 _B = Fetch();
abegaichi 0:40cf46d9746d 1374 break;
abegaichi 0:40cf46d9746d 1375
abegaichi 0:40cf46d9746d 1376 case 0x07: // RLCA
abegaichi 0:40cf46d9746d 1377 RLCA();
abegaichi 0:40cf46d9746d 1378 break;
abegaichi 0:40cf46d9746d 1379
abegaichi 0:40cf46d9746d 1380 case 0x08: // EX AF, AF'
abegaichi 0:40cf46d9746d 1381 tmp16 = AF;
abegaichi 0:40cf46d9746d 1382 AF = exAF;
abegaichi 0:40cf46d9746d 1383 exAF = tmp16;
abegaichi 0:40cf46d9746d 1384 break;
abegaichi 0:40cf46d9746d 1385
abegaichi 0:40cf46d9746d 1386 case 0x09: // ADD HL, BC
abegaichi 0:40cf46d9746d 1387 HL = ADD16(HL, BC);
abegaichi 0:40cf46d9746d 1388 break;
abegaichi 0:40cf46d9746d 1389
abegaichi 0:40cf46d9746d 1390 case 0x0a: // LD A, (BC)
abegaichi 0:40cf46d9746d 1391 _A = ReadMemory(BC);
abegaichi 0:40cf46d9746d 1392 break;
abegaichi 0:40cf46d9746d 1393
abegaichi 0:40cf46d9746d 1394 case 0x0b: // DEC BC
abegaichi 0:40cf46d9746d 1395 BC--;
abegaichi 0:40cf46d9746d 1396 break;
abegaichi 0:40cf46d9746d 1397
abegaichi 0:40cf46d9746d 1398 case 0x0c: // INC C
abegaichi 0:40cf46d9746d 1399 _C = INC(_C);
abegaichi 0:40cf46d9746d 1400 break;
abegaichi 0:40cf46d9746d 1401
abegaichi 0:40cf46d9746d 1402 case 0x0d: // DEC C
abegaichi 0:40cf46d9746d 1403 _C = DEC(_C);
abegaichi 0:40cf46d9746d 1404 break;
abegaichi 0:40cf46d9746d 1405
abegaichi 0:40cf46d9746d 1406 case 0x0e: // LD C, n
abegaichi 0:40cf46d9746d 1407 _C = Fetch();
abegaichi 0:40cf46d9746d 1408 break;
abegaichi 0:40cf46d9746d 1409
abegaichi 0:40cf46d9746d 1410 case 0x0f: // RRCA
abegaichi 0:40cf46d9746d 1411 RRCA();
abegaichi 0:40cf46d9746d 1412 break;
abegaichi 0:40cf46d9746d 1413
abegaichi 0:40cf46d9746d 1414 case 0x10: // DJNZ o
abegaichi 0:40cf46d9746d 1415 _B--;
abegaichi 0:40cf46d9746d 1416 JR_COND(_B, 0x10);
abegaichi 0:40cf46d9746d 1417 break;
abegaichi 0:40cf46d9746d 1418
abegaichi 0:40cf46d9746d 1419 case 0x11: // LD DE, w
abegaichi 0:40cf46d9746d 1420 DE = Fetch16();
abegaichi 0:40cf46d9746d 1421 break;
abegaichi 0:40cf46d9746d 1422
abegaichi 0:40cf46d9746d 1423 case 0x12: // LD (DE), A
abegaichi 0:40cf46d9746d 1424 WriteMemory(DE, _A);
abegaichi 0:40cf46d9746d 1425 break;
abegaichi 0:40cf46d9746d 1426
abegaichi 0:40cf46d9746d 1427 case 0x13: // INC DE
abegaichi 0:40cf46d9746d 1428 DE++;
abegaichi 0:40cf46d9746d 1429 break;
abegaichi 0:40cf46d9746d 1430
abegaichi 0:40cf46d9746d 1431 case 0x14: // INC D
abegaichi 0:40cf46d9746d 1432 _D = INC(_D);
abegaichi 0:40cf46d9746d 1433 break;
abegaichi 0:40cf46d9746d 1434
abegaichi 0:40cf46d9746d 1435 case 0x15: // DEC D
abegaichi 0:40cf46d9746d 1436 _D = DEC(_D);
abegaichi 0:40cf46d9746d 1437 break;
abegaichi 0:40cf46d9746d 1438
abegaichi 0:40cf46d9746d 1439 case 0x16: // LD D, n
abegaichi 0:40cf46d9746d 1440 _D = Fetch();
abegaichi 0:40cf46d9746d 1441 break;
abegaichi 0:40cf46d9746d 1442
abegaichi 0:40cf46d9746d 1443 case 0x17: // RLA
abegaichi 0:40cf46d9746d 1444 RLA();
abegaichi 0:40cf46d9746d 1445 break;
abegaichi 0:40cf46d9746d 1446
abegaichi 0:40cf46d9746d 1447 case 0x18: // JR o
abegaichi 0:40cf46d9746d 1448 JR();
abegaichi 0:40cf46d9746d 1449 break;
abegaichi 0:40cf46d9746d 1450
abegaichi 0:40cf46d9746d 1451 case 0x19: // ADD HL, DE
abegaichi 0:40cf46d9746d 1452 HL = ADD16(HL, DE);
abegaichi 0:40cf46d9746d 1453 break;
abegaichi 0:40cf46d9746d 1454
abegaichi 0:40cf46d9746d 1455 case 0x1a: // LD A, (DE)
abegaichi 0:40cf46d9746d 1456 _A = ReadMemory(DE);
abegaichi 0:40cf46d9746d 1457 break;
abegaichi 0:40cf46d9746d 1458
abegaichi 0:40cf46d9746d 1459 case 0x1b: // DEC DE
abegaichi 0:40cf46d9746d 1460 DE--;
abegaichi 0:40cf46d9746d 1461 break;
abegaichi 0:40cf46d9746d 1462
abegaichi 0:40cf46d9746d 1463 case 0x1c: // INC E
abegaichi 0:40cf46d9746d 1464 _E = INC(_E);
abegaichi 0:40cf46d9746d 1465 break;
abegaichi 0:40cf46d9746d 1466
abegaichi 0:40cf46d9746d 1467 case 0x1d: // DEC E
abegaichi 0:40cf46d9746d 1468 _E = DEC(_E);
abegaichi 0:40cf46d9746d 1469 break;
abegaichi 0:40cf46d9746d 1470
abegaichi 0:40cf46d9746d 1471 case 0x1e: // LD E, n
abegaichi 0:40cf46d9746d 1472 _E = Fetch();
abegaichi 0:40cf46d9746d 1473 break;
abegaichi 0:40cf46d9746d 1474
abegaichi 0:40cf46d9746d 1475 case 0x1f: // RRA
abegaichi 0:40cf46d9746d 1476 RRA();
abegaichi 0:40cf46d9746d 1477 break;
abegaichi 0:40cf46d9746d 1478
abegaichi 0:40cf46d9746d 1479 case 0x20: // JR NZ, o
abegaichi 0:40cf46d9746d 1480 JR_COND(!(_F & ZF), 0x20);
abegaichi 0:40cf46d9746d 1481 break;
abegaichi 0:40cf46d9746d 1482
abegaichi 0:40cf46d9746d 1483 case 0x21: // LD HL, w
abegaichi 0:40cf46d9746d 1484 HL = Fetch16();
abegaichi 0:40cf46d9746d 1485 break;
abegaichi 0:40cf46d9746d 1486
abegaichi 0:40cf46d9746d 1487 case 0x22: // LD (w), HL
abegaichi 0:40cf46d9746d 1488 EA = Fetch16();
abegaichi 0:40cf46d9746d 1489 WriteMemory16(EA, HL);
abegaichi 0:40cf46d9746d 1490 break;
abegaichi 0:40cf46d9746d 1491
abegaichi 0:40cf46d9746d 1492 case 0x23: // INC HL
abegaichi 0:40cf46d9746d 1493 HL++;
abegaichi 0:40cf46d9746d 1494 break;
abegaichi 0:40cf46d9746d 1495
abegaichi 0:40cf46d9746d 1496 case 0x24: // INC H
abegaichi 0:40cf46d9746d 1497 _H = INC(_H);
abegaichi 0:40cf46d9746d 1498 break;
abegaichi 0:40cf46d9746d 1499
abegaichi 0:40cf46d9746d 1500 case 0x25: // DEC H
abegaichi 0:40cf46d9746d 1501 _H = DEC(_H);
abegaichi 0:40cf46d9746d 1502 break;
abegaichi 0:40cf46d9746d 1503
abegaichi 0:40cf46d9746d 1504 case 0x26: // LD H, n
abegaichi 0:40cf46d9746d 1505 _H = Fetch();
abegaichi 0:40cf46d9746d 1506 break;
abegaichi 0:40cf46d9746d 1507
abegaichi 0:40cf46d9746d 1508 case 0x27: // DAA
abegaichi 0:40cf46d9746d 1509 DAA();
abegaichi 0:40cf46d9746d 1510 break;
abegaichi 0:40cf46d9746d 1511
abegaichi 0:40cf46d9746d 1512 case 0x28: // JR Z, o
abegaichi 0:40cf46d9746d 1513 JR_COND(_F & ZF, 0x28);
abegaichi 0:40cf46d9746d 1514 break;
abegaichi 0:40cf46d9746d 1515
abegaichi 0:40cf46d9746d 1516 case 0x29: // ADD HL, HL
abegaichi 0:40cf46d9746d 1517 HL = ADD16(HL, HL);
abegaichi 0:40cf46d9746d 1518 break;
abegaichi 0:40cf46d9746d 1519
abegaichi 0:40cf46d9746d 1520 case 0x2a: // LD HL, (w)
abegaichi 0:40cf46d9746d 1521 EA = Fetch16();
abegaichi 0:40cf46d9746d 1522 HL = ReadMemory16(EA);
abegaichi 0:40cf46d9746d 1523 break;
abegaichi 0:40cf46d9746d 1524
abegaichi 0:40cf46d9746d 1525 case 0x2b: // DEC HL
abegaichi 0:40cf46d9746d 1526 HL--;
abegaichi 0:40cf46d9746d 1527 break;
abegaichi 0:40cf46d9746d 1528
abegaichi 0:40cf46d9746d 1529 case 0x2c: // INC L
abegaichi 0:40cf46d9746d 1530 _L = INC(_L);
abegaichi 0:40cf46d9746d 1531 break;
abegaichi 0:40cf46d9746d 1532
abegaichi 0:40cf46d9746d 1533 case 0x2d: // DEC L
abegaichi 0:40cf46d9746d 1534 _L = DEC(_L);
abegaichi 0:40cf46d9746d 1535 break;
abegaichi 0:40cf46d9746d 1536
abegaichi 0:40cf46d9746d 1537 case 0x2e: // LD L, n
abegaichi 0:40cf46d9746d 1538 _L = Fetch();
abegaichi 0:40cf46d9746d 1539 break;
abegaichi 0:40cf46d9746d 1540
abegaichi 0:40cf46d9746d 1541 case 0x2f: // CPL
abegaichi 0:40cf46d9746d 1542 _A ^= 0xff;
abegaichi 0:40cf46d9746d 1543 _F = (_F & (SF | ZF | PF | CF)) | HF | NF | (_A & (YF | XF));
abegaichi 0:40cf46d9746d 1544 break;
abegaichi 0:40cf46d9746d 1545
abegaichi 0:40cf46d9746d 1546 case 0x30: // JR NC, o
abegaichi 0:40cf46d9746d 1547 JR_COND(!(_F & CF), 0x30);
abegaichi 0:40cf46d9746d 1548 break;
abegaichi 0:40cf46d9746d 1549
abegaichi 0:40cf46d9746d 1550 case 0x31: // LD SP, w
abegaichi 0:40cf46d9746d 1551 SP = Fetch16();
abegaichi 0:40cf46d9746d 1552 break;
abegaichi 0:40cf46d9746d 1553
abegaichi 0:40cf46d9746d 1554 case 0x32: // LD (w), A
abegaichi 0:40cf46d9746d 1555 EA = Fetch16();
abegaichi 0:40cf46d9746d 1556 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 1557 break;
abegaichi 0:40cf46d9746d 1558
abegaichi 0:40cf46d9746d 1559 case 0x33: // INC SP
abegaichi 0:40cf46d9746d 1560 SP++;
abegaichi 0:40cf46d9746d 1561 break;
abegaichi 0:40cf46d9746d 1562
abegaichi 0:40cf46d9746d 1563 case 0x34: // INC (HL)
abegaichi 0:40cf46d9746d 1564 WriteMemory(HL, INC(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 1565 break;
abegaichi 0:40cf46d9746d 1566
abegaichi 0:40cf46d9746d 1567 case 0x35: // DEC (HL)
abegaichi 0:40cf46d9746d 1568 WriteMemory(HL, DEC(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 1569 break;
abegaichi 0:40cf46d9746d 1570
abegaichi 0:40cf46d9746d 1571 case 0x36: // LD (HL), n
abegaichi 0:40cf46d9746d 1572 WriteMemory(HL, Fetch());
abegaichi 0:40cf46d9746d 1573 break;
abegaichi 0:40cf46d9746d 1574
abegaichi 0:40cf46d9746d 1575 case 0x37: // SCF
abegaichi 0:40cf46d9746d 1576 _F = (_F & (SF | ZF | PF)) | CF | (_A & (YF | XF));
abegaichi 0:40cf46d9746d 1577 break;
abegaichi 0:40cf46d9746d 1578
abegaichi 0:40cf46d9746d 1579 case 0x38: // JR C, o
abegaichi 0:40cf46d9746d 1580 JR_COND(_F & CF, 0x38);
abegaichi 0:40cf46d9746d 1581 break;
abegaichi 0:40cf46d9746d 1582
abegaichi 0:40cf46d9746d 1583 case 0x39: // ADD HL, SP
abegaichi 0:40cf46d9746d 1584 HL = ADD16(HL, SP);
abegaichi 0:40cf46d9746d 1585 break;
abegaichi 0:40cf46d9746d 1586
abegaichi 0:40cf46d9746d 1587 case 0x3a: // LD A, (w)
abegaichi 0:40cf46d9746d 1588 EA = Fetch16();
abegaichi 0:40cf46d9746d 1589 _A = ReadMemory(EA);
abegaichi 0:40cf46d9746d 1590 break;
abegaichi 0:40cf46d9746d 1591
abegaichi 0:40cf46d9746d 1592 case 0x3b: // DEC SP
abegaichi 0:40cf46d9746d 1593 SP--;
abegaichi 0:40cf46d9746d 1594 break;
abegaichi 0:40cf46d9746d 1595
abegaichi 0:40cf46d9746d 1596 case 0x3c: // INC A
abegaichi 0:40cf46d9746d 1597 _A = INC(_A);
abegaichi 0:40cf46d9746d 1598 break;
abegaichi 0:40cf46d9746d 1599
abegaichi 0:40cf46d9746d 1600 case 0x3d: // DEC A
abegaichi 0:40cf46d9746d 1601 _A = DEC(_A);
abegaichi 0:40cf46d9746d 1602 break;
abegaichi 0:40cf46d9746d 1603
abegaichi 0:40cf46d9746d 1604 case 0x3e: // LD A, n
abegaichi 0:40cf46d9746d 1605 _A = Fetch();
abegaichi 0:40cf46d9746d 1606 break;
abegaichi 0:40cf46d9746d 1607
abegaichi 0:40cf46d9746d 1608 case 0x3f: // CCF
abegaichi 0:40cf46d9746d 1609 _F = ((_F & (SF | ZF | PF | CF)) | ((_F & CF) << 4) | (_A & (YF | XF))) ^ CF;
abegaichi 0:40cf46d9746d 1610 break;
abegaichi 0:40cf46d9746d 1611
abegaichi 0:40cf46d9746d 1612 case 0x40: // LD B, B
abegaichi 0:40cf46d9746d 1613 break;
abegaichi 0:40cf46d9746d 1614
abegaichi 0:40cf46d9746d 1615 case 0x41: // LD B, C
abegaichi 0:40cf46d9746d 1616 _B = _C;
abegaichi 0:40cf46d9746d 1617 break;
abegaichi 0:40cf46d9746d 1618
abegaichi 0:40cf46d9746d 1619 case 0x42: // LD B, D
abegaichi 0:40cf46d9746d 1620 _B = _D;
abegaichi 0:40cf46d9746d 1621 break;
abegaichi 0:40cf46d9746d 1622
abegaichi 0:40cf46d9746d 1623 case 0x43: // LD B, E
abegaichi 0:40cf46d9746d 1624 _B = _E;
abegaichi 0:40cf46d9746d 1625 break;
abegaichi 0:40cf46d9746d 1626
abegaichi 0:40cf46d9746d 1627 case 0x44: // LD B, H
abegaichi 0:40cf46d9746d 1628 _B = _H;
abegaichi 0:40cf46d9746d 1629 break;
abegaichi 0:40cf46d9746d 1630
abegaichi 0:40cf46d9746d 1631 case 0x45: // LD B, L
abegaichi 0:40cf46d9746d 1632 _B = _L;
abegaichi 0:40cf46d9746d 1633 break;
abegaichi 0:40cf46d9746d 1634
abegaichi 0:40cf46d9746d 1635 case 0x46: // LD B, (HL)
abegaichi 0:40cf46d9746d 1636 _B = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1637 break;
abegaichi 0:40cf46d9746d 1638
abegaichi 0:40cf46d9746d 1639 case 0x47: // LD B, A
abegaichi 0:40cf46d9746d 1640 _B = _A;
abegaichi 0:40cf46d9746d 1641 break;
abegaichi 0:40cf46d9746d 1642
abegaichi 0:40cf46d9746d 1643 case 0x48: // LD C, B
abegaichi 0:40cf46d9746d 1644 _C = _B;
abegaichi 0:40cf46d9746d 1645 break;
abegaichi 0:40cf46d9746d 1646
abegaichi 0:40cf46d9746d 1647 case 0x49: // LD C, C
abegaichi 0:40cf46d9746d 1648 break;
abegaichi 0:40cf46d9746d 1649
abegaichi 0:40cf46d9746d 1650 case 0x4a: // LD C, D
abegaichi 0:40cf46d9746d 1651 _C = _D;
abegaichi 0:40cf46d9746d 1652 break;
abegaichi 0:40cf46d9746d 1653
abegaichi 0:40cf46d9746d 1654 case 0x4b: // LD C, E
abegaichi 0:40cf46d9746d 1655 _C = _E;
abegaichi 0:40cf46d9746d 1656 break;
abegaichi 0:40cf46d9746d 1657
abegaichi 0:40cf46d9746d 1658 case 0x4c: // LD C, H
abegaichi 0:40cf46d9746d 1659 _C = _H;
abegaichi 0:40cf46d9746d 1660 break;
abegaichi 0:40cf46d9746d 1661
abegaichi 0:40cf46d9746d 1662 case 0x4d: // LD C, L
abegaichi 0:40cf46d9746d 1663 _C = _L;
abegaichi 0:40cf46d9746d 1664 break;
abegaichi 0:40cf46d9746d 1665
abegaichi 0:40cf46d9746d 1666 case 0x4e: // LD C, (HL)
abegaichi 0:40cf46d9746d 1667 _C = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1668 break;
abegaichi 0:40cf46d9746d 1669
abegaichi 0:40cf46d9746d 1670 case 0x4f: // LD C, A
abegaichi 0:40cf46d9746d 1671 _C = _A;
abegaichi 0:40cf46d9746d 1672 break;
abegaichi 0:40cf46d9746d 1673
abegaichi 0:40cf46d9746d 1674 case 0x50: // LD D, B
abegaichi 0:40cf46d9746d 1675 _D = _B;
abegaichi 0:40cf46d9746d 1676 break;
abegaichi 0:40cf46d9746d 1677
abegaichi 0:40cf46d9746d 1678 case 0x51: // LD D, C
abegaichi 0:40cf46d9746d 1679 _D = _C;
abegaichi 0:40cf46d9746d 1680 break;
abegaichi 0:40cf46d9746d 1681
abegaichi 0:40cf46d9746d 1682 case 0x52: // LD D, D
abegaichi 0:40cf46d9746d 1683 break;
abegaichi 0:40cf46d9746d 1684
abegaichi 0:40cf46d9746d 1685 case 0x53: // LD D, E
abegaichi 0:40cf46d9746d 1686 _D = _E;
abegaichi 0:40cf46d9746d 1687 break;
abegaichi 0:40cf46d9746d 1688
abegaichi 0:40cf46d9746d 1689 case 0x54: // LD D, H
abegaichi 0:40cf46d9746d 1690 _D = _H;
abegaichi 0:40cf46d9746d 1691 break;
abegaichi 0:40cf46d9746d 1692
abegaichi 0:40cf46d9746d 1693 case 0x55: // LD D, L
abegaichi 0:40cf46d9746d 1694 _D = _L;
abegaichi 0:40cf46d9746d 1695 break;
abegaichi 0:40cf46d9746d 1696
abegaichi 0:40cf46d9746d 1697 case 0x56: // LD D, (HL)
abegaichi 0:40cf46d9746d 1698 _D = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1699 break;
abegaichi 0:40cf46d9746d 1700
abegaichi 0:40cf46d9746d 1701 case 0x57: // LD D, A
abegaichi 0:40cf46d9746d 1702 _D = _A;
abegaichi 0:40cf46d9746d 1703 break;
abegaichi 0:40cf46d9746d 1704
abegaichi 0:40cf46d9746d 1705 case 0x58: // LD E, B
abegaichi 0:40cf46d9746d 1706 _E = _B;
abegaichi 0:40cf46d9746d 1707 break;
abegaichi 0:40cf46d9746d 1708
abegaichi 0:40cf46d9746d 1709 case 0x59: // LD E, C
abegaichi 0:40cf46d9746d 1710 _E = _C;
abegaichi 0:40cf46d9746d 1711 break;
abegaichi 0:40cf46d9746d 1712
abegaichi 0:40cf46d9746d 1713 case 0x5a: // LD E, D
abegaichi 0:40cf46d9746d 1714 _E = _D;
abegaichi 0:40cf46d9746d 1715 break;
abegaichi 0:40cf46d9746d 1716
abegaichi 0:40cf46d9746d 1717 case 0x5b: // LD E, E
abegaichi 0:40cf46d9746d 1718 break;
abegaichi 0:40cf46d9746d 1719
abegaichi 0:40cf46d9746d 1720 case 0x5c: // LD E, H
abegaichi 0:40cf46d9746d 1721 _E = _H;
abegaichi 0:40cf46d9746d 1722 break;
abegaichi 0:40cf46d9746d 1723
abegaichi 0:40cf46d9746d 1724 case 0x5d: // LD E, L
abegaichi 0:40cf46d9746d 1725 _E = _L;
abegaichi 0:40cf46d9746d 1726 break;
abegaichi 0:40cf46d9746d 1727
abegaichi 0:40cf46d9746d 1728 case 0x5e: // LD E, (HL)
abegaichi 0:40cf46d9746d 1729 _E = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1730 break;
abegaichi 0:40cf46d9746d 1731
abegaichi 0:40cf46d9746d 1732 case 0x5f: // LD E, A
abegaichi 0:40cf46d9746d 1733 _E = _A;
abegaichi 0:40cf46d9746d 1734 break;
abegaichi 0:40cf46d9746d 1735
abegaichi 0:40cf46d9746d 1736 case 0x60: // LD H, B
abegaichi 0:40cf46d9746d 1737 _H = _B;
abegaichi 0:40cf46d9746d 1738 break;
abegaichi 0:40cf46d9746d 1739
abegaichi 0:40cf46d9746d 1740 case 0x61: // LD H, C
abegaichi 0:40cf46d9746d 1741 _H = _C;
abegaichi 0:40cf46d9746d 1742 break;
abegaichi 0:40cf46d9746d 1743
abegaichi 0:40cf46d9746d 1744 case 0x62: // LD H, D
abegaichi 0:40cf46d9746d 1745 _H = _D;
abegaichi 0:40cf46d9746d 1746 break;
abegaichi 0:40cf46d9746d 1747
abegaichi 0:40cf46d9746d 1748 case 0x63: // LD H, E
abegaichi 0:40cf46d9746d 1749 _H = _E;
abegaichi 0:40cf46d9746d 1750 break;
abegaichi 0:40cf46d9746d 1751
abegaichi 0:40cf46d9746d 1752 case 0x64: // LD H, H
abegaichi 0:40cf46d9746d 1753 break;
abegaichi 0:40cf46d9746d 1754
abegaichi 0:40cf46d9746d 1755 case 0x65: // LD H, L
abegaichi 0:40cf46d9746d 1756 _H = _L;
abegaichi 0:40cf46d9746d 1757 break;
abegaichi 0:40cf46d9746d 1758
abegaichi 0:40cf46d9746d 1759 case 0x66: // LD H, (HL)
abegaichi 0:40cf46d9746d 1760 _H = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1761 break;
abegaichi 0:40cf46d9746d 1762
abegaichi 0:40cf46d9746d 1763 case 0x67: // LD H, A
abegaichi 0:40cf46d9746d 1764 _H = _A;
abegaichi 0:40cf46d9746d 1765 break;
abegaichi 0:40cf46d9746d 1766
abegaichi 0:40cf46d9746d 1767 case 0x68: // LD L, B
abegaichi 0:40cf46d9746d 1768 _L = _B;
abegaichi 0:40cf46d9746d 1769 break;
abegaichi 0:40cf46d9746d 1770
abegaichi 0:40cf46d9746d 1771 case 0x69: // LD L, C
abegaichi 0:40cf46d9746d 1772 _L = _C;
abegaichi 0:40cf46d9746d 1773 break;
abegaichi 0:40cf46d9746d 1774
abegaichi 0:40cf46d9746d 1775 case 0x6a: // LD L, D
abegaichi 0:40cf46d9746d 1776 _L = _D;
abegaichi 0:40cf46d9746d 1777 break;
abegaichi 0:40cf46d9746d 1778
abegaichi 0:40cf46d9746d 1779 case 0x6b: // LD L, E
abegaichi 0:40cf46d9746d 1780 _L = _E;
abegaichi 0:40cf46d9746d 1781 break;
abegaichi 0:40cf46d9746d 1782
abegaichi 0:40cf46d9746d 1783 case 0x6c: // LD L, H
abegaichi 0:40cf46d9746d 1784 _L = _H;
abegaichi 0:40cf46d9746d 1785 break;
abegaichi 0:40cf46d9746d 1786
abegaichi 0:40cf46d9746d 1787 case 0x6d: // LD L, L
abegaichi 0:40cf46d9746d 1788 break;
abegaichi 0:40cf46d9746d 1789
abegaichi 0:40cf46d9746d 1790 case 0x6e: // LD L, (HL)
abegaichi 0:40cf46d9746d 1791 _L = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1792 break;
abegaichi 0:40cf46d9746d 1793
abegaichi 0:40cf46d9746d 1794 case 0x6f: // LD L, A
abegaichi 0:40cf46d9746d 1795 _L = _A;
abegaichi 0:40cf46d9746d 1796 break;
abegaichi 0:40cf46d9746d 1797
abegaichi 0:40cf46d9746d 1798 case 0x70: // LD (HL), B
abegaichi 0:40cf46d9746d 1799 WriteMemory(HL, _B);
abegaichi 0:40cf46d9746d 1800 break;
abegaichi 0:40cf46d9746d 1801
abegaichi 0:40cf46d9746d 1802 case 0x71: // LD (HL), C
abegaichi 0:40cf46d9746d 1803 WriteMemory(HL, _C);
abegaichi 0:40cf46d9746d 1804 break;
abegaichi 0:40cf46d9746d 1805
abegaichi 0:40cf46d9746d 1806 case 0x72: // LD (HL), D
abegaichi 0:40cf46d9746d 1807 WriteMemory(HL, _D);
abegaichi 0:40cf46d9746d 1808 break;
abegaichi 0:40cf46d9746d 1809
abegaichi 0:40cf46d9746d 1810 case 0x73: // LD (HL), E
abegaichi 0:40cf46d9746d 1811 WriteMemory(HL, _E);
abegaichi 0:40cf46d9746d 1812 break;
abegaichi 0:40cf46d9746d 1813
abegaichi 0:40cf46d9746d 1814 case 0x74: // LD (HL), H
abegaichi 0:40cf46d9746d 1815 WriteMemory(HL, _H);
abegaichi 0:40cf46d9746d 1816 break;
abegaichi 0:40cf46d9746d 1817
abegaichi 0:40cf46d9746d 1818 case 0x75: // LD (HL), L
abegaichi 0:40cf46d9746d 1819 WriteMemory(HL, _L);
abegaichi 0:40cf46d9746d 1820 break;
abegaichi 0:40cf46d9746d 1821
abegaichi 0:40cf46d9746d 1822 case 0x76: // HALT
abegaichi 0:40cf46d9746d 1823 PC--;
abegaichi 0:40cf46d9746d 1824 HALT = 1;
abegaichi 0:40cf46d9746d 1825 break;
abegaichi 0:40cf46d9746d 1826
abegaichi 0:40cf46d9746d 1827 case 0x77: // LD (HL), A
abegaichi 0:40cf46d9746d 1828 WriteMemory(HL, _A);
abegaichi 0:40cf46d9746d 1829 break;
abegaichi 0:40cf46d9746d 1830
abegaichi 0:40cf46d9746d 1831 case 0x78: // LD A, B
abegaichi 0:40cf46d9746d 1832 _A = _B;
abegaichi 0:40cf46d9746d 1833 break;
abegaichi 0:40cf46d9746d 1834
abegaichi 0:40cf46d9746d 1835 case 0x79: // LD A, C
abegaichi 0:40cf46d9746d 1836 _A = _C;
abegaichi 0:40cf46d9746d 1837 break;
abegaichi 0:40cf46d9746d 1838
abegaichi 0:40cf46d9746d 1839 case 0x7a: // LD A, D
abegaichi 0:40cf46d9746d 1840 _A = _D;
abegaichi 0:40cf46d9746d 1841 break;
abegaichi 0:40cf46d9746d 1842
abegaichi 0:40cf46d9746d 1843 case 0x7b: // LD A, E
abegaichi 0:40cf46d9746d 1844 _A = _E;
abegaichi 0:40cf46d9746d 1845 break;
abegaichi 0:40cf46d9746d 1846
abegaichi 0:40cf46d9746d 1847 case 0x7c: // LD A, H
abegaichi 0:40cf46d9746d 1848 _A = _H;
abegaichi 0:40cf46d9746d 1849 break;
abegaichi 0:40cf46d9746d 1850
abegaichi 0:40cf46d9746d 1851 case 0x7d: // LD A, L
abegaichi 0:40cf46d9746d 1852 _A = _L;
abegaichi 0:40cf46d9746d 1853 break;
abegaichi 0:40cf46d9746d 1854
abegaichi 0:40cf46d9746d 1855 case 0x7e: // LD A, (HL)
abegaichi 0:40cf46d9746d 1856 _A = ReadMemory(HL);
abegaichi 0:40cf46d9746d 1857 break;
abegaichi 0:40cf46d9746d 1858
abegaichi 0:40cf46d9746d 1859 case 0x7f: // LD A, A
abegaichi 0:40cf46d9746d 1860 break;
abegaichi 0:40cf46d9746d 1861
abegaichi 0:40cf46d9746d 1862 case 0x80: // ADD A, B
abegaichi 0:40cf46d9746d 1863 ADD(_B);
abegaichi 0:40cf46d9746d 1864 break;
abegaichi 0:40cf46d9746d 1865
abegaichi 0:40cf46d9746d 1866 case 0x81: // ADD A, C
abegaichi 0:40cf46d9746d 1867 ADD(_C);
abegaichi 0:40cf46d9746d 1868 break;
abegaichi 0:40cf46d9746d 1869
abegaichi 0:40cf46d9746d 1870 case 0x82: // ADD A, D
abegaichi 0:40cf46d9746d 1871 ADD(_D);
abegaichi 0:40cf46d9746d 1872 break;
abegaichi 0:40cf46d9746d 1873
abegaichi 0:40cf46d9746d 1874 case 0x83: // ADD A, E
abegaichi 0:40cf46d9746d 1875 ADD(_E);
abegaichi 0:40cf46d9746d 1876 break;
abegaichi 0:40cf46d9746d 1877
abegaichi 0:40cf46d9746d 1878 case 0x84: // ADD A, H
abegaichi 0:40cf46d9746d 1879 ADD(_H);
abegaichi 0:40cf46d9746d 1880 break;
abegaichi 0:40cf46d9746d 1881
abegaichi 0:40cf46d9746d 1882 case 0x85: // ADD A, L
abegaichi 0:40cf46d9746d 1883 ADD(_L);
abegaichi 0:40cf46d9746d 1884 break;
abegaichi 0:40cf46d9746d 1885
abegaichi 0:40cf46d9746d 1886 case 0x86: // ADD A, (HL)
abegaichi 0:40cf46d9746d 1887 ADD(ReadMemory(HL));
abegaichi 0:40cf46d9746d 1888 break;
abegaichi 0:40cf46d9746d 1889
abegaichi 0:40cf46d9746d 1890 case 0x87: // ADD A, A
abegaichi 0:40cf46d9746d 1891 ADD(_A);
abegaichi 0:40cf46d9746d 1892 break;
abegaichi 0:40cf46d9746d 1893
abegaichi 0:40cf46d9746d 1894 case 0x88: // ADC A, B
abegaichi 0:40cf46d9746d 1895 ADC(_B);
abegaichi 0:40cf46d9746d 1896 break;
abegaichi 0:40cf46d9746d 1897
abegaichi 0:40cf46d9746d 1898 case 0x89: // ADC A, C
abegaichi 0:40cf46d9746d 1899 ADC(_C);
abegaichi 0:40cf46d9746d 1900 break;
abegaichi 0:40cf46d9746d 1901
abegaichi 0:40cf46d9746d 1902 case 0x8a: // ADC A, D
abegaichi 0:40cf46d9746d 1903 ADC(_D);
abegaichi 0:40cf46d9746d 1904 break;
abegaichi 0:40cf46d9746d 1905
abegaichi 0:40cf46d9746d 1906 case 0x8b: // ADC A, E
abegaichi 0:40cf46d9746d 1907 ADC(_E);
abegaichi 0:40cf46d9746d 1908 break;
abegaichi 0:40cf46d9746d 1909
abegaichi 0:40cf46d9746d 1910 case 0x8c: // ADC A, H
abegaichi 0:40cf46d9746d 1911 ADC(_H);
abegaichi 0:40cf46d9746d 1912 break;
abegaichi 0:40cf46d9746d 1913
abegaichi 0:40cf46d9746d 1914 case 0x8d: // ADC A, L
abegaichi 0:40cf46d9746d 1915 ADC(_L);
abegaichi 0:40cf46d9746d 1916 break;
abegaichi 0:40cf46d9746d 1917
abegaichi 0:40cf46d9746d 1918 case 0x8e: // ADC A, (HL)
abegaichi 0:40cf46d9746d 1919 ADC(ReadMemory(HL));
abegaichi 0:40cf46d9746d 1920 break;
abegaichi 0:40cf46d9746d 1921
abegaichi 0:40cf46d9746d 1922 case 0x8f: // ADC A, A
abegaichi 0:40cf46d9746d 1923 ADC(_A);
abegaichi 0:40cf46d9746d 1924 break;
abegaichi 0:40cf46d9746d 1925
abegaichi 0:40cf46d9746d 1926 case 0x90: // SUB B
abegaichi 0:40cf46d9746d 1927 SUB(_B);
abegaichi 0:40cf46d9746d 1928 break;
abegaichi 0:40cf46d9746d 1929
abegaichi 0:40cf46d9746d 1930 case 0x91: // SUB C
abegaichi 0:40cf46d9746d 1931 SUB(_C);
abegaichi 0:40cf46d9746d 1932 break;
abegaichi 0:40cf46d9746d 1933
abegaichi 0:40cf46d9746d 1934 case 0x92: // SUB D
abegaichi 0:40cf46d9746d 1935 SUB(_D);
abegaichi 0:40cf46d9746d 1936 break;
abegaichi 0:40cf46d9746d 1937
abegaichi 0:40cf46d9746d 1938 case 0x93: // SUB E
abegaichi 0:40cf46d9746d 1939 SUB(_E);
abegaichi 0:40cf46d9746d 1940 break;
abegaichi 0:40cf46d9746d 1941
abegaichi 0:40cf46d9746d 1942 case 0x94: // SUB H
abegaichi 0:40cf46d9746d 1943 SUB(_H);
abegaichi 0:40cf46d9746d 1944 break;
abegaichi 0:40cf46d9746d 1945
abegaichi 0:40cf46d9746d 1946 case 0x95: // SUB L
abegaichi 0:40cf46d9746d 1947 SUB(_L);
abegaichi 0:40cf46d9746d 1948 break;
abegaichi 0:40cf46d9746d 1949
abegaichi 0:40cf46d9746d 1950 case 0x96: // SUB (HL)
abegaichi 0:40cf46d9746d 1951 SUB(ReadMemory(HL));
abegaichi 0:40cf46d9746d 1952 break;
abegaichi 0:40cf46d9746d 1953
abegaichi 0:40cf46d9746d 1954 case 0x97: // SUB A
abegaichi 0:40cf46d9746d 1955 SUB(_A);
abegaichi 0:40cf46d9746d 1956 break;
abegaichi 0:40cf46d9746d 1957
abegaichi 0:40cf46d9746d 1958 case 0x98: // SBC A, B
abegaichi 0:40cf46d9746d 1959 SBC(_B);
abegaichi 0:40cf46d9746d 1960 break;
abegaichi 0:40cf46d9746d 1961
abegaichi 0:40cf46d9746d 1962 case 0x99: // SBC A, C
abegaichi 0:40cf46d9746d 1963 SBC(_C);
abegaichi 0:40cf46d9746d 1964 break;
abegaichi 0:40cf46d9746d 1965
abegaichi 0:40cf46d9746d 1966 case 0x9a: // SBC A, D
abegaichi 0:40cf46d9746d 1967 SBC(_D);
abegaichi 0:40cf46d9746d 1968 break;
abegaichi 0:40cf46d9746d 1969
abegaichi 0:40cf46d9746d 1970 case 0x9b: // SBC A, E
abegaichi 0:40cf46d9746d 1971 SBC(_E);
abegaichi 0:40cf46d9746d 1972 break;
abegaichi 0:40cf46d9746d 1973
abegaichi 0:40cf46d9746d 1974 case 0x9c: // SBC A, H
abegaichi 0:40cf46d9746d 1975 SBC(_H);
abegaichi 0:40cf46d9746d 1976 break;
abegaichi 0:40cf46d9746d 1977
abegaichi 0:40cf46d9746d 1978 case 0x9d: // SBC A, L
abegaichi 0:40cf46d9746d 1979 SBC(_L);
abegaichi 0:40cf46d9746d 1980 break;
abegaichi 0:40cf46d9746d 1981
abegaichi 0:40cf46d9746d 1982 case 0x9e: // SBC A, (HL)
abegaichi 0:40cf46d9746d 1983 SBC(ReadMemory(HL));
abegaichi 0:40cf46d9746d 1984 break;
abegaichi 0:40cf46d9746d 1985
abegaichi 0:40cf46d9746d 1986 case 0x9f: // SBC A, A
abegaichi 0:40cf46d9746d 1987 SBC(_A);
abegaichi 0:40cf46d9746d 1988 break;
abegaichi 0:40cf46d9746d 1989
abegaichi 0:40cf46d9746d 1990 case 0xa0: // AND B
abegaichi 0:40cf46d9746d 1991 AND(_B);
abegaichi 0:40cf46d9746d 1992 break;
abegaichi 0:40cf46d9746d 1993
abegaichi 0:40cf46d9746d 1994 case 0xa1: // AND C
abegaichi 0:40cf46d9746d 1995 AND(_C);
abegaichi 0:40cf46d9746d 1996 break;
abegaichi 0:40cf46d9746d 1997
abegaichi 0:40cf46d9746d 1998 case 0xa2: // AND D
abegaichi 0:40cf46d9746d 1999 AND(_D);
abegaichi 0:40cf46d9746d 2000 break;
abegaichi 0:40cf46d9746d 2001
abegaichi 0:40cf46d9746d 2002 case 0xa3: // AND E
abegaichi 0:40cf46d9746d 2003 AND(_E);
abegaichi 0:40cf46d9746d 2004 break;
abegaichi 0:40cf46d9746d 2005
abegaichi 0:40cf46d9746d 2006 case 0xa4: // AND H
abegaichi 0:40cf46d9746d 2007 AND(_H);
abegaichi 0:40cf46d9746d 2008 break;
abegaichi 0:40cf46d9746d 2009
abegaichi 0:40cf46d9746d 2010 case 0xa5: // AND L
abegaichi 0:40cf46d9746d 2011 AND(_L);
abegaichi 0:40cf46d9746d 2012 break;
abegaichi 0:40cf46d9746d 2013
abegaichi 0:40cf46d9746d 2014 case 0xa6: // AND (HL)
abegaichi 0:40cf46d9746d 2015 AND(ReadMemory(HL));
abegaichi 0:40cf46d9746d 2016 break;
abegaichi 0:40cf46d9746d 2017
abegaichi 0:40cf46d9746d 2018 case 0xa7: // AND A
abegaichi 0:40cf46d9746d 2019 AND(_A);
abegaichi 0:40cf46d9746d 2020 break;
abegaichi 0:40cf46d9746d 2021
abegaichi 0:40cf46d9746d 2022 case 0xa8: // XOR B
abegaichi 0:40cf46d9746d 2023 XOR(_B);
abegaichi 0:40cf46d9746d 2024 break;
abegaichi 0:40cf46d9746d 2025
abegaichi 0:40cf46d9746d 2026 case 0xa9: // XOR C
abegaichi 0:40cf46d9746d 2027 XOR(_C);
abegaichi 0:40cf46d9746d 2028 break;
abegaichi 0:40cf46d9746d 2029
abegaichi 0:40cf46d9746d 2030 case 0xaa: // XOR D
abegaichi 0:40cf46d9746d 2031 XOR(_D);
abegaichi 0:40cf46d9746d 2032 break;
abegaichi 0:40cf46d9746d 2033
abegaichi 0:40cf46d9746d 2034 case 0xab: // XOR E
abegaichi 0:40cf46d9746d 2035 XOR(_E);
abegaichi 0:40cf46d9746d 2036 break;
abegaichi 0:40cf46d9746d 2037
abegaichi 0:40cf46d9746d 2038 case 0xac: // XOR H
abegaichi 0:40cf46d9746d 2039 XOR(_H);
abegaichi 0:40cf46d9746d 2040 break;
abegaichi 0:40cf46d9746d 2041
abegaichi 0:40cf46d9746d 2042 case 0xad: // XOR L
abegaichi 0:40cf46d9746d 2043 XOR(_L);
abegaichi 0:40cf46d9746d 2044 break;
abegaichi 0:40cf46d9746d 2045
abegaichi 0:40cf46d9746d 2046 case 0xae: // XOR (HL)
abegaichi 0:40cf46d9746d 2047 XOR(ReadMemory(HL));
abegaichi 0:40cf46d9746d 2048 break;
abegaichi 0:40cf46d9746d 2049
abegaichi 0:40cf46d9746d 2050 case 0xaf: // XOR A
abegaichi 0:40cf46d9746d 2051 XOR(_A);
abegaichi 0:40cf46d9746d 2052 break;
abegaichi 0:40cf46d9746d 2053
abegaichi 0:40cf46d9746d 2054 case 0xb0: // OR B
abegaichi 0:40cf46d9746d 2055 OR(_B);
abegaichi 0:40cf46d9746d 2056 break;
abegaichi 0:40cf46d9746d 2057
abegaichi 0:40cf46d9746d 2058 case 0xb1: // OR C
abegaichi 0:40cf46d9746d 2059 OR(_C);
abegaichi 0:40cf46d9746d 2060 break;
abegaichi 0:40cf46d9746d 2061
abegaichi 0:40cf46d9746d 2062 case 0xb2: // OR D
abegaichi 0:40cf46d9746d 2063 OR(_D);
abegaichi 0:40cf46d9746d 2064 break;
abegaichi 0:40cf46d9746d 2065
abegaichi 0:40cf46d9746d 2066 case 0xb3: // OR E
abegaichi 0:40cf46d9746d 2067 OR(_E);
abegaichi 0:40cf46d9746d 2068 break;
abegaichi 0:40cf46d9746d 2069
abegaichi 0:40cf46d9746d 2070 case 0xb4: // OR H
abegaichi 0:40cf46d9746d 2071 OR(_H);
abegaichi 0:40cf46d9746d 2072 break;
abegaichi 0:40cf46d9746d 2073
abegaichi 0:40cf46d9746d 2074 case 0xb5: // OR L
abegaichi 0:40cf46d9746d 2075 OR(_L);
abegaichi 0:40cf46d9746d 2076 break;
abegaichi 0:40cf46d9746d 2077
abegaichi 0:40cf46d9746d 2078 case 0xb6: // OR (HL)
abegaichi 0:40cf46d9746d 2079 OR(ReadMemory(HL));
abegaichi 0:40cf46d9746d 2080 break;
abegaichi 0:40cf46d9746d 2081
abegaichi 0:40cf46d9746d 2082 case 0xb7: // OR A
abegaichi 0:40cf46d9746d 2083 OR(_A);
abegaichi 0:40cf46d9746d 2084 break;
abegaichi 0:40cf46d9746d 2085
abegaichi 0:40cf46d9746d 2086 case 0xb8: // CP B
abegaichi 0:40cf46d9746d 2087 CP(_B);
abegaichi 0:40cf46d9746d 2088 break;
abegaichi 0:40cf46d9746d 2089
abegaichi 0:40cf46d9746d 2090 case 0xb9: // CP C
abegaichi 0:40cf46d9746d 2091 CP(_C);
abegaichi 0:40cf46d9746d 2092 break;
abegaichi 0:40cf46d9746d 2093
abegaichi 0:40cf46d9746d 2094 case 0xba: // CP D
abegaichi 0:40cf46d9746d 2095 CP(_D);
abegaichi 0:40cf46d9746d 2096 break;
abegaichi 0:40cf46d9746d 2097
abegaichi 0:40cf46d9746d 2098 case 0xbb: // CP E
abegaichi 0:40cf46d9746d 2099 CP(_E);
abegaichi 0:40cf46d9746d 2100 break;
abegaichi 0:40cf46d9746d 2101
abegaichi 0:40cf46d9746d 2102 case 0xbc: // CP H
abegaichi 0:40cf46d9746d 2103 CP(_H);
abegaichi 0:40cf46d9746d 2104 break;
abegaichi 0:40cf46d9746d 2105
abegaichi 0:40cf46d9746d 2106 case 0xbd: // CP L
abegaichi 0:40cf46d9746d 2107 CP(_L);
abegaichi 0:40cf46d9746d 2108 break;
abegaichi 0:40cf46d9746d 2109
abegaichi 0:40cf46d9746d 2110 case 0xbe: // CP (HL)
abegaichi 0:40cf46d9746d 2111 CP(ReadMemory(HL));
abegaichi 0:40cf46d9746d 2112 break;
abegaichi 0:40cf46d9746d 2113
abegaichi 0:40cf46d9746d 2114 case 0xbf: // CP A
abegaichi 0:40cf46d9746d 2115 CP(_A);
abegaichi 0:40cf46d9746d 2116 break;
abegaichi 0:40cf46d9746d 2117
abegaichi 0:40cf46d9746d 2118 case 0xc0: // RET NZ
abegaichi 0:40cf46d9746d 2119 RET_COND(!(_F & ZF), 0xc0);
abegaichi 0:40cf46d9746d 2120 break;
abegaichi 0:40cf46d9746d 2121
abegaichi 0:40cf46d9746d 2122 case 0xc1: // POP BC
abegaichi 0:40cf46d9746d 2123 BC = POP();
abegaichi 0:40cf46d9746d 2124 break;
abegaichi 0:40cf46d9746d 2125
abegaichi 0:40cf46d9746d 2126 case 0xc2: // JP NZ, a
abegaichi 0:40cf46d9746d 2127 JP_COND(!(_F & ZF));
abegaichi 0:40cf46d9746d 2128 break;
abegaichi 0:40cf46d9746d 2129
abegaichi 0:40cf46d9746d 2130 case 0xc3: // JP a
abegaichi 0:40cf46d9746d 2131 JP();
abegaichi 0:40cf46d9746d 2132 break;
abegaichi 0:40cf46d9746d 2133
abegaichi 0:40cf46d9746d 2134 case 0xc4: // CALL NZ, a
abegaichi 0:40cf46d9746d 2135 CALL_COND(!(_F & ZF), 0xc4);
abegaichi 0:40cf46d9746d 2136 break;
abegaichi 0:40cf46d9746d 2137
abegaichi 0:40cf46d9746d 2138 case 0xc5: // PUSH BC
abegaichi 0:40cf46d9746d 2139 PUSH(BC);
abegaichi 0:40cf46d9746d 2140 break;
abegaichi 0:40cf46d9746d 2141
abegaichi 0:40cf46d9746d 2142 case 0xc6: // ADD A, n
abegaichi 0:40cf46d9746d 2143 ADD(Fetch());
abegaichi 0:40cf46d9746d 2144 break;
abegaichi 0:40cf46d9746d 2145
abegaichi 0:40cf46d9746d 2146 case 0xc7: // RST 0
abegaichi 0:40cf46d9746d 2147 RST(0x00);
abegaichi 0:40cf46d9746d 2148 break;
abegaichi 0:40cf46d9746d 2149
abegaichi 0:40cf46d9746d 2150 case 0xc8: // RET Z
abegaichi 0:40cf46d9746d 2151 RET_COND(_F & ZF, 0xc8);
abegaichi 0:40cf46d9746d 2152 break;
abegaichi 0:40cf46d9746d 2153
abegaichi 0:40cf46d9746d 2154 case 0xc9: // RET
abegaichi 0:40cf46d9746d 2155 RET();
abegaichi 0:40cf46d9746d 2156 break;
abegaichi 0:40cf46d9746d 2157
abegaichi 0:40cf46d9746d 2158 case 0xca: // JP Z, a
abegaichi 0:40cf46d9746d 2159 JP_COND(_F & ZF);
abegaichi 0:40cf46d9746d 2160 break;
abegaichi 0:40cf46d9746d 2161
abegaichi 0:40cf46d9746d 2162 case 0xcb: // **** CB xx
abegaichi 0:40cf46d9746d 2163 execute_opCB();
abegaichi 0:40cf46d9746d 2164 break;
abegaichi 0:40cf46d9746d 2165
abegaichi 0:40cf46d9746d 2166 case 0xcc: // CALL Z, a
abegaichi 0:40cf46d9746d 2167 CALL_COND(_F & ZF, 0xcc);
abegaichi 0:40cf46d9746d 2168 break;
abegaichi 0:40cf46d9746d 2169
abegaichi 0:40cf46d9746d 2170 case 0xcd: // CALL a
abegaichi 0:40cf46d9746d 2171 CALL();
abegaichi 0:40cf46d9746d 2172 break;
abegaichi 0:40cf46d9746d 2173
abegaichi 0:40cf46d9746d 2174 case 0xce: // ADC A, n
abegaichi 0:40cf46d9746d 2175 ADC(Fetch());
abegaichi 0:40cf46d9746d 2176 break;
abegaichi 0:40cf46d9746d 2177
abegaichi 0:40cf46d9746d 2178 case 0xcf: // RST 1
abegaichi 0:40cf46d9746d 2179 RST(0x08);
abegaichi 0:40cf46d9746d 2180 break;
abegaichi 0:40cf46d9746d 2181
abegaichi 0:40cf46d9746d 2182 case 0xd0: // RET NC
abegaichi 0:40cf46d9746d 2183 RET_COND(!(_F & CF), 0xd0);
abegaichi 0:40cf46d9746d 2184 break;
abegaichi 0:40cf46d9746d 2185
abegaichi 0:40cf46d9746d 2186 case 0xd1: // POP DE
abegaichi 0:40cf46d9746d 2187 DE = POP();
abegaichi 0:40cf46d9746d 2188 break;
abegaichi 0:40cf46d9746d 2189
abegaichi 0:40cf46d9746d 2190 case 0xd2: // JP NC, a
abegaichi 0:40cf46d9746d 2191 JP_COND(!(_F & CF));
abegaichi 0:40cf46d9746d 2192 break;
abegaichi 0:40cf46d9746d 2193
abegaichi 0:40cf46d9746d 2194 case 0xd3: // OUT (n), A
abegaichi 0:40cf46d9746d 2195 WriteIO(Fetch(), _A, _A);
abegaichi 0:40cf46d9746d 2196 break;
abegaichi 0:40cf46d9746d 2197
abegaichi 0:40cf46d9746d 2198 case 0xd4: // CALL NC, a
abegaichi 0:40cf46d9746d 2199 CALL_COND(!(_F & CF), 0xd4);
abegaichi 0:40cf46d9746d 2200 break;
abegaichi 0:40cf46d9746d 2201
abegaichi 0:40cf46d9746d 2202 case 0xd5: // PUSH DE
abegaichi 0:40cf46d9746d 2203 PUSH(DE);
abegaichi 0:40cf46d9746d 2204 break;
abegaichi 0:40cf46d9746d 2205
abegaichi 0:40cf46d9746d 2206 case 0xd6: // SUB n
abegaichi 0:40cf46d9746d 2207 SUB(Fetch());
abegaichi 0:40cf46d9746d 2208 break;
abegaichi 0:40cf46d9746d 2209
abegaichi 0:40cf46d9746d 2210 case 0xd7: // RST 2
abegaichi 0:40cf46d9746d 2211 RST(0x10);
abegaichi 0:40cf46d9746d 2212 break;
abegaichi 0:40cf46d9746d 2213
abegaichi 0:40cf46d9746d 2214 case 0xd8: // RET C
abegaichi 0:40cf46d9746d 2215 RET_COND(_F & CF, 0xd8);
abegaichi 0:40cf46d9746d 2216 break;
abegaichi 0:40cf46d9746d 2217
abegaichi 0:40cf46d9746d 2218 case 0xd9: // EXX
abegaichi 0:40cf46d9746d 2219 tmp16 = BC; BC = exBC; exBC = tmp16;
abegaichi 0:40cf46d9746d 2220 tmp16 = DE; DE = exDE; exDE = tmp16;
abegaichi 0:40cf46d9746d 2221 tmp16 = HL; HL = exHL; exHL = tmp16;
abegaichi 0:40cf46d9746d 2222 break;
abegaichi 0:40cf46d9746d 2223
abegaichi 0:40cf46d9746d 2224 case 0xda: // JP C, a
abegaichi 0:40cf46d9746d 2225 JP_COND(_F & CF);
abegaichi 0:40cf46d9746d 2226 break;
abegaichi 0:40cf46d9746d 2227
abegaichi 0:40cf46d9746d 2228 case 0xdb: // IN A, (n)
abegaichi 0:40cf46d9746d 2229 _A = ReadIO(Fetch(), _A);
abegaichi 0:40cf46d9746d 2230 break;
abegaichi 0:40cf46d9746d 2231
abegaichi 0:40cf46d9746d 2232 case 0xdc: // CALL C, a
abegaichi 0:40cf46d9746d 2233 CALL_COND(_F & CF, 0xdc);
abegaichi 0:40cf46d9746d 2234 break;
abegaichi 0:40cf46d9746d 2235
abegaichi 0:40cf46d9746d 2236 case 0xdd: // **** DD xx
abegaichi 0:40cf46d9746d 2237 execute_opDD();
abegaichi 0:40cf46d9746d 2238 break;
abegaichi 0:40cf46d9746d 2239
abegaichi 0:40cf46d9746d 2240 case 0xde: // SBC A, n
abegaichi 0:40cf46d9746d 2241 SBC(Fetch());
abegaichi 0:40cf46d9746d 2242 break;
abegaichi 0:40cf46d9746d 2243
abegaichi 0:40cf46d9746d 2244 case 0xdf: // RST 3
abegaichi 0:40cf46d9746d 2245 RST(0x18);
abegaichi 0:40cf46d9746d 2246 break;
abegaichi 0:40cf46d9746d 2247
abegaichi 0:40cf46d9746d 2248 case 0xe0: // RET PO
abegaichi 0:40cf46d9746d 2249 RET_COND(!(_F & PF), 0xe0);
abegaichi 0:40cf46d9746d 2250 break;
abegaichi 0:40cf46d9746d 2251
abegaichi 0:40cf46d9746d 2252 case 0xe1: // POP HL
abegaichi 0:40cf46d9746d 2253 HL = POP();
abegaichi 0:40cf46d9746d 2254 break;
abegaichi 0:40cf46d9746d 2255
abegaichi 0:40cf46d9746d 2256 case 0xe2: // JP PO, a
abegaichi 0:40cf46d9746d 2257 JP_COND(!(_F & PF));
abegaichi 0:40cf46d9746d 2258 break;
abegaichi 0:40cf46d9746d 2259
abegaichi 0:40cf46d9746d 2260 case 0xe3: // EX HL, (SP)
abegaichi 0:40cf46d9746d 2261 tmp16 = ReadMemory16( SP );
abegaichi 0:40cf46d9746d 2262 WriteMemory16( SP, HL );
abegaichi 0:40cf46d9746d 2263 HL = tmp16;
abegaichi 0:40cf46d9746d 2264 break;
abegaichi 0:40cf46d9746d 2265
abegaichi 0:40cf46d9746d 2266 case 0xe4: // CALL PO, a
abegaichi 0:40cf46d9746d 2267 CALL_COND(!(_F & PF), 0xe4);
abegaichi 0:40cf46d9746d 2268 break;
abegaichi 0:40cf46d9746d 2269
abegaichi 0:40cf46d9746d 2270 case 0xe5: // PUSH HL
abegaichi 0:40cf46d9746d 2271 PUSH(HL);
abegaichi 0:40cf46d9746d 2272 break;
abegaichi 0:40cf46d9746d 2273
abegaichi 0:40cf46d9746d 2274 case 0xe6: // AND n
abegaichi 0:40cf46d9746d 2275 AND(Fetch());
abegaichi 0:40cf46d9746d 2276 break;
abegaichi 0:40cf46d9746d 2277
abegaichi 0:40cf46d9746d 2278 case 0xe7: // RST 4
abegaichi 0:40cf46d9746d 2279 RST(0x20);
abegaichi 0:40cf46d9746d 2280 break;
abegaichi 0:40cf46d9746d 2281
abegaichi 0:40cf46d9746d 2282 case 0xe8: // RET PE
abegaichi 0:40cf46d9746d 2283 RET_COND(_F & PF, 0xe8);
abegaichi 0:40cf46d9746d 2284 break;
abegaichi 0:40cf46d9746d 2285
abegaichi 0:40cf46d9746d 2286 case 0xe9: // JP (HL)
abegaichi 0:40cf46d9746d 2287 PC = HL;
abegaichi 0:40cf46d9746d 2288 break;
abegaichi 0:40cf46d9746d 2289
abegaichi 0:40cf46d9746d 2290 case 0xea: // JP PE, a
abegaichi 0:40cf46d9746d 2291 JP_COND(_F & PF);
abegaichi 0:40cf46d9746d 2292 break;
abegaichi 0:40cf46d9746d 2293
abegaichi 0:40cf46d9746d 2294 case 0xeb: // EX DE, HL
abegaichi 0:40cf46d9746d 2295 tmp16 = DE; DE = HL; HL = tmp16;
abegaichi 0:40cf46d9746d 2296 break;
abegaichi 0:40cf46d9746d 2297
abegaichi 0:40cf46d9746d 2298 case 0xec: // CALL PE, a
abegaichi 0:40cf46d9746d 2299 CALL_COND(_F & PF, 0xec);
abegaichi 0:40cf46d9746d 2300 break;
abegaichi 0:40cf46d9746d 2301
abegaichi 0:40cf46d9746d 2302 case 0xed: // **** ED xx
abegaichi 0:40cf46d9746d 2303 execute_opED();
abegaichi 0:40cf46d9746d 2304 break;
abegaichi 0:40cf46d9746d 2305
abegaichi 0:40cf46d9746d 2306 case 0xee: // XOR n
abegaichi 0:40cf46d9746d 2307 XOR(Fetch());
abegaichi 0:40cf46d9746d 2308 break;
abegaichi 0:40cf46d9746d 2309
abegaichi 0:40cf46d9746d 2310 case 0xef: // RST 5
abegaichi 0:40cf46d9746d 2311 RST(0x28);
abegaichi 0:40cf46d9746d 2312 break;
abegaichi 0:40cf46d9746d 2313
abegaichi 0:40cf46d9746d 2314 case 0xf0: // RET P
abegaichi 0:40cf46d9746d 2315 RET_COND(!(_F & SF), 0xf0);
abegaichi 0:40cf46d9746d 2316 break;
abegaichi 0:40cf46d9746d 2317
abegaichi 0:40cf46d9746d 2318 case 0xf1: // POP AF
abegaichi 0:40cf46d9746d 2319 AF = POP();
abegaichi 0:40cf46d9746d 2320 break;
abegaichi 0:40cf46d9746d 2321
abegaichi 0:40cf46d9746d 2322 case 0xf2: // JP P, a
abegaichi 0:40cf46d9746d 2323 JP_COND(!(_F & SF));
abegaichi 0:40cf46d9746d 2324 break;
abegaichi 0:40cf46d9746d 2325
abegaichi 0:40cf46d9746d 2326 case 0xf3: // DI
abegaichi 0:40cf46d9746d 2327 DI();
abegaichi 0:40cf46d9746d 2328 break;
abegaichi 0:40cf46d9746d 2329
abegaichi 0:40cf46d9746d 2330 case 0xf4: // CALL P, a
abegaichi 0:40cf46d9746d 2331 CALL_COND(!(_F & SF), 0xf4);
abegaichi 0:40cf46d9746d 2332 break;
abegaichi 0:40cf46d9746d 2333
abegaichi 0:40cf46d9746d 2334 case 0xf5: // PUSH AF
abegaichi 0:40cf46d9746d 2335 PUSH(AF);
abegaichi 0:40cf46d9746d 2336 break;
abegaichi 0:40cf46d9746d 2337
abegaichi 0:40cf46d9746d 2338 case 0xf6: // OR n
abegaichi 0:40cf46d9746d 2339 OR(Fetch());
abegaichi 0:40cf46d9746d 2340 break;
abegaichi 0:40cf46d9746d 2341
abegaichi 0:40cf46d9746d 2342 case 0xf7: // RST 6
abegaichi 0:40cf46d9746d 2343 RST(0x30);
abegaichi 0:40cf46d9746d 2344 break;
abegaichi 0:40cf46d9746d 2345
abegaichi 0:40cf46d9746d 2346 case 0xf8: // RET M
abegaichi 0:40cf46d9746d 2347 RET_COND(_F & SF, 0xf8);
abegaichi 0:40cf46d9746d 2348 break;
abegaichi 0:40cf46d9746d 2349
abegaichi 0:40cf46d9746d 2350 case 0xf9: // LD SP, HL
abegaichi 0:40cf46d9746d 2351 SP = HL;
abegaichi 0:40cf46d9746d 2352 break;
abegaichi 0:40cf46d9746d 2353
abegaichi 0:40cf46d9746d 2354 case 0xfa: // JP M, a
abegaichi 0:40cf46d9746d 2355 JP_COND(_F & SF);
abegaichi 0:40cf46d9746d 2356 break;
abegaichi 0:40cf46d9746d 2357
abegaichi 0:40cf46d9746d 2358 case 0xfb: // EI
abegaichi 0:40cf46d9746d 2359 EI();
abegaichi 0:40cf46d9746d 2360 break;
abegaichi 0:40cf46d9746d 2361
abegaichi 0:40cf46d9746d 2362 case 0xfc: // CALL M, a
abegaichi 0:40cf46d9746d 2363 CALL_COND(_F & SF, 0xfc);
abegaichi 0:40cf46d9746d 2364 break;
abegaichi 0:40cf46d9746d 2365
abegaichi 0:40cf46d9746d 2366 case 0xfd: // **** FD xx
abegaichi 0:40cf46d9746d 2367 execute_opFD();
abegaichi 0:40cf46d9746d 2368 break;
abegaichi 0:40cf46d9746d 2369
abegaichi 0:40cf46d9746d 2370 case 0xfe: // CP n
abegaichi 0:40cf46d9746d 2371 CP(Fetch());
abegaichi 0:40cf46d9746d 2372 break;
abegaichi 0:40cf46d9746d 2373
abegaichi 0:40cf46d9746d 2374 case 0xff: // RST 7
abegaichi 0:40cf46d9746d 2375 RST(0x38);
abegaichi 0:40cf46d9746d 2376 break;
abegaichi 0:40cf46d9746d 2377 }
abegaichi 0:40cf46d9746d 2378 }
abegaichi 0:40cf46d9746d 2379 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 2380 /* &#65533;@&#65533;\&#65533;F &#65533;y&#65533;W&#65533;O &#65533;b&#65533;a&#65533;v&#65533;&#65533;&#65533;t&#65533;B&#65533;b&#65533;N&#65533;X */
abegaichi 1:bd86d49d7622 2381 /* &#65533;&#65533; &#65533;&#65533;&#65533;&#65533; */
abegaichi 1:bd86d49d7622 2382 /* &#65533;&#2002;l&#65533;F &#65533;&#65533;&#65533;&#65533; */
abegaichi 0:40cf46d9746d 2383 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 2384 void execute_opCB( void )
abegaichi 0:40cf46d9746d 2385 {
abegaichi 0:40cf46d9746d 2386 uint8 cmd = Fetch();
abegaichi 0:40cf46d9746d 2387 count -= (int)cc_cb[cmd];
abegaichi 0:40cf46d9746d 2388 _R = (_R & 0x80) | ((_R + 1) & 0x7f);
abegaichi 0:40cf46d9746d 2389
abegaichi 0:40cf46d9746d 2390 switch(cmd) {
abegaichi 0:40cf46d9746d 2391 case 0x00: // RLC B
abegaichi 0:40cf46d9746d 2392 _B = RLC(_B);
abegaichi 0:40cf46d9746d 2393 break;
abegaichi 0:40cf46d9746d 2394 case 0x01: // RLC C
abegaichi 0:40cf46d9746d 2395 _C = RLC(_C);
abegaichi 0:40cf46d9746d 2396 break;
abegaichi 0:40cf46d9746d 2397 case 0x02: // RLC D
abegaichi 0:40cf46d9746d 2398 _D = RLC(_D);
abegaichi 0:40cf46d9746d 2399 break;
abegaichi 0:40cf46d9746d 2400 case 0x03: // RLC E
abegaichi 0:40cf46d9746d 2401 _E = RLC(_E);
abegaichi 0:40cf46d9746d 2402 break;
abegaichi 0:40cf46d9746d 2403 case 0x04: // RLC H
abegaichi 0:40cf46d9746d 2404 _H = RLC(_H);
abegaichi 0:40cf46d9746d 2405 break;
abegaichi 0:40cf46d9746d 2406 case 0x05: // RLC L
abegaichi 0:40cf46d9746d 2407 _L = RLC(_L);
abegaichi 0:40cf46d9746d 2408 break;
abegaichi 0:40cf46d9746d 2409 case 0x06: // RLC (HL)
abegaichi 0:40cf46d9746d 2410 WriteMemory(HL, RLC(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2411 break;
abegaichi 0:40cf46d9746d 2412 case 0x07: // RLC A
abegaichi 0:40cf46d9746d 2413 _A = RLC(_A);
abegaichi 0:40cf46d9746d 2414 break;
abegaichi 0:40cf46d9746d 2415 case 0x08: // RRC B
abegaichi 0:40cf46d9746d 2416 _B = RRC(_B);
abegaichi 0:40cf46d9746d 2417 break;
abegaichi 0:40cf46d9746d 2418 case 0x09: // RRC C
abegaichi 0:40cf46d9746d 2419 _C = RRC(_C);
abegaichi 0:40cf46d9746d 2420 break;
abegaichi 0:40cf46d9746d 2421 case 0x0a: // RRC D
abegaichi 0:40cf46d9746d 2422 _D = RRC(_D);
abegaichi 0:40cf46d9746d 2423 break;
abegaichi 0:40cf46d9746d 2424 case 0x0b: // RRC E
abegaichi 0:40cf46d9746d 2425 _E = RRC(_E);
abegaichi 0:40cf46d9746d 2426 break;
abegaichi 0:40cf46d9746d 2427 case 0x0c: // RRC H
abegaichi 0:40cf46d9746d 2428 _H = RRC(_H);
abegaichi 0:40cf46d9746d 2429 break;
abegaichi 0:40cf46d9746d 2430 case 0x0d: // RRC L
abegaichi 0:40cf46d9746d 2431 _L = RRC(_L);
abegaichi 0:40cf46d9746d 2432 break;
abegaichi 0:40cf46d9746d 2433 case 0x0e: // RRC (HL)
abegaichi 0:40cf46d9746d 2434 WriteMemory(HL, RRC(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2435 break;
abegaichi 0:40cf46d9746d 2436 case 0x0f: // RRC A
abegaichi 0:40cf46d9746d 2437 _A = RRC(_A);
abegaichi 0:40cf46d9746d 2438 break;
abegaichi 0:40cf46d9746d 2439 case 0x10: // RL B
abegaichi 0:40cf46d9746d 2440 _B = RL(_B);
abegaichi 0:40cf46d9746d 2441 break;
abegaichi 0:40cf46d9746d 2442 case 0x11: // RL C
abegaichi 0:40cf46d9746d 2443 _C = RL(_C);
abegaichi 0:40cf46d9746d 2444 break;
abegaichi 0:40cf46d9746d 2445 case 0x12: // RL D
abegaichi 0:40cf46d9746d 2446 _D = RL(_D);
abegaichi 0:40cf46d9746d 2447 break;
abegaichi 0:40cf46d9746d 2448 case 0x13: // RL E
abegaichi 0:40cf46d9746d 2449 _E = RL(_E);
abegaichi 0:40cf46d9746d 2450 break;
abegaichi 0:40cf46d9746d 2451 case 0x14: // RL H
abegaichi 0:40cf46d9746d 2452 _H = RL(_H);
abegaichi 0:40cf46d9746d 2453 break;
abegaichi 0:40cf46d9746d 2454 case 0x15: // RL L
abegaichi 0:40cf46d9746d 2455 _L = RL(_L);
abegaichi 0:40cf46d9746d 2456 break;
abegaichi 0:40cf46d9746d 2457 case 0x16: // RL (HL)
abegaichi 0:40cf46d9746d 2458 WriteMemory(HL, RL(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2459 break;
abegaichi 0:40cf46d9746d 2460 case 0x17: // RL A
abegaichi 0:40cf46d9746d 2461 _A = RL(_A);
abegaichi 0:40cf46d9746d 2462 break;
abegaichi 0:40cf46d9746d 2463 case 0x18: // RR B
abegaichi 0:40cf46d9746d 2464 _B = RR(_B);
abegaichi 0:40cf46d9746d 2465 break;
abegaichi 0:40cf46d9746d 2466 case 0x19: // RR C
abegaichi 0:40cf46d9746d 2467 _C = RR(_C);
abegaichi 0:40cf46d9746d 2468 break;
abegaichi 0:40cf46d9746d 2469 case 0x1a: // RR D
abegaichi 0:40cf46d9746d 2470 _D = RR(_D);
abegaichi 0:40cf46d9746d 2471 break;
abegaichi 0:40cf46d9746d 2472 case 0x1b: // RR E
abegaichi 0:40cf46d9746d 2473 _E = RR(_E);
abegaichi 0:40cf46d9746d 2474 break;
abegaichi 0:40cf46d9746d 2475 case 0x1c: // RR H
abegaichi 0:40cf46d9746d 2476 _H = RR(_H);
abegaichi 0:40cf46d9746d 2477 break;
abegaichi 0:40cf46d9746d 2478 case 0x1d: // RR L
abegaichi 0:40cf46d9746d 2479 _L = RR(_L);
abegaichi 0:40cf46d9746d 2480 break;
abegaichi 0:40cf46d9746d 2481 case 0x1e: // RR (HL)
abegaichi 0:40cf46d9746d 2482 WriteMemory(HL, RR(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2483 break;
abegaichi 0:40cf46d9746d 2484 case 0x1f: // RR A
abegaichi 0:40cf46d9746d 2485 _A = RR(_A);
abegaichi 0:40cf46d9746d 2486 break;
abegaichi 0:40cf46d9746d 2487 case 0x20: // SLA B
abegaichi 0:40cf46d9746d 2488 _B = SLA(_B);
abegaichi 0:40cf46d9746d 2489 break;
abegaichi 0:40cf46d9746d 2490 case 0x21: // SLA C
abegaichi 0:40cf46d9746d 2491 _C = SLA(_C);
abegaichi 0:40cf46d9746d 2492 break;
abegaichi 0:40cf46d9746d 2493 case 0x22: // SLA D
abegaichi 0:40cf46d9746d 2494 _D = SLA(_D);
abegaichi 0:40cf46d9746d 2495 break;
abegaichi 0:40cf46d9746d 2496 case 0x23: // SLA E
abegaichi 0:40cf46d9746d 2497 _E = SLA(_E);
abegaichi 0:40cf46d9746d 2498 break;
abegaichi 0:40cf46d9746d 2499 case 0x24: // SLA H
abegaichi 0:40cf46d9746d 2500 _H = SLA(_H);
abegaichi 0:40cf46d9746d 2501 break;
abegaichi 0:40cf46d9746d 2502 case 0x25: // SLA L
abegaichi 0:40cf46d9746d 2503 _L = SLA(_L);
abegaichi 0:40cf46d9746d 2504 break;
abegaichi 0:40cf46d9746d 2505 case 0x26: // SLA (HL)
abegaichi 0:40cf46d9746d 2506 WriteMemory(HL, SLA(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2507 break;
abegaichi 0:40cf46d9746d 2508 case 0x27: // SLA A
abegaichi 0:40cf46d9746d 2509 _A = SLA(_A);
abegaichi 0:40cf46d9746d 2510 break;
abegaichi 0:40cf46d9746d 2511 case 0x28: // SRA B
abegaichi 0:40cf46d9746d 2512 _B = SRA(_B);
abegaichi 0:40cf46d9746d 2513 break;
abegaichi 0:40cf46d9746d 2514 case 0x29: // SRA C
abegaichi 0:40cf46d9746d 2515 _C = SRA(_C);
abegaichi 0:40cf46d9746d 2516 break;
abegaichi 0:40cf46d9746d 2517 case 0x2a: // SRA D
abegaichi 0:40cf46d9746d 2518 _D = SRA(_D);
abegaichi 0:40cf46d9746d 2519 break;
abegaichi 0:40cf46d9746d 2520 case 0x2b: // SRA E
abegaichi 0:40cf46d9746d 2521 _E = SRA(_E);
abegaichi 0:40cf46d9746d 2522 break;
abegaichi 0:40cf46d9746d 2523 case 0x2c: // SRA H
abegaichi 0:40cf46d9746d 2524 _H = SRA(_H);
abegaichi 0:40cf46d9746d 2525 break;
abegaichi 0:40cf46d9746d 2526 case 0x2d: // SRA L
abegaichi 0:40cf46d9746d 2527 _L = SRA(_L);
abegaichi 0:40cf46d9746d 2528 break;
abegaichi 0:40cf46d9746d 2529 case 0x2e: // SRA (HL)
abegaichi 0:40cf46d9746d 2530 WriteMemory(HL, SRA(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2531 break;
abegaichi 0:40cf46d9746d 2532 case 0x2f: // SRA A
abegaichi 0:40cf46d9746d 2533 _A = SRA(_A);
abegaichi 0:40cf46d9746d 2534 break;
abegaichi 0:40cf46d9746d 2535 case 0x30: // SLL B
abegaichi 0:40cf46d9746d 2536 _B = SLL(_B);
abegaichi 0:40cf46d9746d 2537 break;
abegaichi 0:40cf46d9746d 2538 case 0x31: // SLL C
abegaichi 0:40cf46d9746d 2539 _C = SLL(_C);
abegaichi 0:40cf46d9746d 2540 break;
abegaichi 0:40cf46d9746d 2541 case 0x32: // SLL D
abegaichi 0:40cf46d9746d 2542 _D = SLL(_D);
abegaichi 0:40cf46d9746d 2543 break;
abegaichi 0:40cf46d9746d 2544 case 0x33: // SLL E
abegaichi 0:40cf46d9746d 2545 _E = SLL(_E);
abegaichi 0:40cf46d9746d 2546 break;
abegaichi 0:40cf46d9746d 2547 case 0x34: // SLL H
abegaichi 0:40cf46d9746d 2548 _H = SLL(_H);
abegaichi 0:40cf46d9746d 2549 break;
abegaichi 0:40cf46d9746d 2550 case 0x35: // SLL L
abegaichi 0:40cf46d9746d 2551 _L = SLL(_L);
abegaichi 0:40cf46d9746d 2552 break;
abegaichi 0:40cf46d9746d 2553 case 0x36: // SLL (HL)
abegaichi 0:40cf46d9746d 2554 WriteMemory(HL, SLL(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2555 break;
abegaichi 0:40cf46d9746d 2556 case 0x37: // SLL A
abegaichi 0:40cf46d9746d 2557 _A = SLL(_A);
abegaichi 0:40cf46d9746d 2558 break;
abegaichi 0:40cf46d9746d 2559 case 0x38: // SRL B
abegaichi 0:40cf46d9746d 2560 _B = SRL(_B);
abegaichi 0:40cf46d9746d 2561 break;
abegaichi 0:40cf46d9746d 2562 case 0x39: // SRL C
abegaichi 0:40cf46d9746d 2563 _C = SRL(_C);
abegaichi 0:40cf46d9746d 2564 break;
abegaichi 0:40cf46d9746d 2565 case 0x3a: // SRL D
abegaichi 0:40cf46d9746d 2566 _D = SRL(_D);
abegaichi 0:40cf46d9746d 2567 break;
abegaichi 0:40cf46d9746d 2568 case 0x3b: // SRL E
abegaichi 0:40cf46d9746d 2569 _E = SRL(_E);
abegaichi 0:40cf46d9746d 2570 break;
abegaichi 0:40cf46d9746d 2571 case 0x3c: // SRL H
abegaichi 0:40cf46d9746d 2572 _H = SRL(_H);
abegaichi 0:40cf46d9746d 2573 break;
abegaichi 0:40cf46d9746d 2574 case 0x3d: // SRL L
abegaichi 0:40cf46d9746d 2575 _L = SRL(_L);
abegaichi 0:40cf46d9746d 2576 break;
abegaichi 0:40cf46d9746d 2577 case 0x3e: // SRL (HL)
abegaichi 0:40cf46d9746d 2578 WriteMemory(HL, SRL(ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2579 break;
abegaichi 0:40cf46d9746d 2580 case 0x3f: // SRL A
abegaichi 0:40cf46d9746d 2581 _A = SRL(_A);
abegaichi 0:40cf46d9746d 2582 break;
abegaichi 0:40cf46d9746d 2583 case 0x40: // BIT 0, B
abegaichi 0:40cf46d9746d 2584 BIT(0, _B);
abegaichi 0:40cf46d9746d 2585 break;
abegaichi 0:40cf46d9746d 2586 case 0x41: // BIT 0, C
abegaichi 0:40cf46d9746d 2587 BIT(0, _C);
abegaichi 0:40cf46d9746d 2588 break;
abegaichi 0:40cf46d9746d 2589 case 0x42: // BIT 0, D
abegaichi 0:40cf46d9746d 2590 BIT(0, _D);
abegaichi 0:40cf46d9746d 2591 break;
abegaichi 0:40cf46d9746d 2592 case 0x43: // BIT 0, E
abegaichi 0:40cf46d9746d 2593 BIT(0, _E);
abegaichi 0:40cf46d9746d 2594 break;
abegaichi 0:40cf46d9746d 2595 case 0x44: // BIT 0, H
abegaichi 0:40cf46d9746d 2596 BIT(0, _H);
abegaichi 0:40cf46d9746d 2597 break;
abegaichi 0:40cf46d9746d 2598 case 0x45: // BIT 0, L
abegaichi 0:40cf46d9746d 2599 BIT(0, _L);
abegaichi 0:40cf46d9746d 2600 break;
abegaichi 0:40cf46d9746d 2601 case 0x46: // BIT 0, (HL)
abegaichi 0:40cf46d9746d 2602 BIT(0, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2603 break;
abegaichi 0:40cf46d9746d 2604 case 0x47: // BIT 0, A
abegaichi 0:40cf46d9746d 2605 BIT(0, _A);
abegaichi 0:40cf46d9746d 2606 break;
abegaichi 0:40cf46d9746d 2607 case 0x48: // BIT 1, B
abegaichi 0:40cf46d9746d 2608 BIT(1, _B);
abegaichi 0:40cf46d9746d 2609 break;
abegaichi 0:40cf46d9746d 2610 case 0x49: // BIT 1, C
abegaichi 0:40cf46d9746d 2611 BIT(1, _C);
abegaichi 0:40cf46d9746d 2612 break;
abegaichi 0:40cf46d9746d 2613 case 0x4a: // BIT 1, D
abegaichi 0:40cf46d9746d 2614 BIT(1, _D);
abegaichi 0:40cf46d9746d 2615 break;
abegaichi 0:40cf46d9746d 2616 case 0x4b: // BIT 1, E
abegaichi 0:40cf46d9746d 2617 BIT(1, _E);
abegaichi 0:40cf46d9746d 2618 break;
abegaichi 0:40cf46d9746d 2619 case 0x4c: // BIT 1, H
abegaichi 0:40cf46d9746d 2620 BIT(1, _H);
abegaichi 0:40cf46d9746d 2621 break;
abegaichi 0:40cf46d9746d 2622 case 0x4d: // BIT 1, L
abegaichi 0:40cf46d9746d 2623 BIT(1, _L);
abegaichi 0:40cf46d9746d 2624 break;
abegaichi 0:40cf46d9746d 2625 case 0x4e: // BIT 1, (HL)
abegaichi 0:40cf46d9746d 2626 BIT(1, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2627 break;
abegaichi 0:40cf46d9746d 2628 case 0x4f: // BIT 1, A
abegaichi 0:40cf46d9746d 2629 BIT(1, _A);
abegaichi 0:40cf46d9746d 2630 break;
abegaichi 0:40cf46d9746d 2631 case 0x50: // BIT 2, B
abegaichi 0:40cf46d9746d 2632 BIT(2, _B);
abegaichi 0:40cf46d9746d 2633 break;
abegaichi 0:40cf46d9746d 2634 case 0x51: // BIT 2, C
abegaichi 0:40cf46d9746d 2635 BIT(2, _C);
abegaichi 0:40cf46d9746d 2636 break;
abegaichi 0:40cf46d9746d 2637 case 0x52: // BIT 2, D
abegaichi 0:40cf46d9746d 2638 BIT(2, _D);
abegaichi 0:40cf46d9746d 2639 break;
abegaichi 0:40cf46d9746d 2640 case 0x53: // BIT 2, E
abegaichi 0:40cf46d9746d 2641 BIT(2, _E);
abegaichi 0:40cf46d9746d 2642 break;
abegaichi 0:40cf46d9746d 2643 case 0x54: // BIT 2, H
abegaichi 0:40cf46d9746d 2644 BIT(2, _H);
abegaichi 0:40cf46d9746d 2645 break;
abegaichi 0:40cf46d9746d 2646 case 0x55: // BIT 2, L
abegaichi 0:40cf46d9746d 2647 BIT(2, _L);
abegaichi 0:40cf46d9746d 2648 break;
abegaichi 0:40cf46d9746d 2649 case 0x56: // BIT 2, (HL)
abegaichi 0:40cf46d9746d 2650 BIT(2, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2651 break;
abegaichi 0:40cf46d9746d 2652 case 0x57: // BIT 2, A
abegaichi 0:40cf46d9746d 2653 BIT(2, _A);
abegaichi 0:40cf46d9746d 2654 break;
abegaichi 0:40cf46d9746d 2655 case 0x58: // BIT 3, B
abegaichi 0:40cf46d9746d 2656 BIT(3, _B);
abegaichi 0:40cf46d9746d 2657 break;
abegaichi 0:40cf46d9746d 2658 case 0x59: // BIT 3, C
abegaichi 0:40cf46d9746d 2659 BIT(3, _C);
abegaichi 0:40cf46d9746d 2660 break;
abegaichi 0:40cf46d9746d 2661 case 0x5a: // BIT 3, D
abegaichi 0:40cf46d9746d 2662 BIT(3, _D);
abegaichi 0:40cf46d9746d 2663 break;
abegaichi 0:40cf46d9746d 2664 case 0x5b: // BIT 3, E
abegaichi 0:40cf46d9746d 2665 BIT(3, _E);
abegaichi 0:40cf46d9746d 2666 break;
abegaichi 0:40cf46d9746d 2667 case 0x5c: // BIT 3, H
abegaichi 0:40cf46d9746d 2668 BIT(3, _H);
abegaichi 0:40cf46d9746d 2669 break;
abegaichi 0:40cf46d9746d 2670 case 0x5d: // BIT 3, L
abegaichi 0:40cf46d9746d 2671 BIT(3, _L);
abegaichi 0:40cf46d9746d 2672 break;
abegaichi 0:40cf46d9746d 2673 case 0x5e: // BIT 3, (HL)
abegaichi 0:40cf46d9746d 2674 BIT(3, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2675 break;
abegaichi 0:40cf46d9746d 2676 case 0x5f: // BIT 3, A
abegaichi 0:40cf46d9746d 2677 BIT(3, _A);
abegaichi 0:40cf46d9746d 2678 break;
abegaichi 0:40cf46d9746d 2679 case 0x60: // BIT 4, B
abegaichi 0:40cf46d9746d 2680 BIT(4, _B);
abegaichi 0:40cf46d9746d 2681 break;
abegaichi 0:40cf46d9746d 2682 case 0x61: // BIT 4, C
abegaichi 0:40cf46d9746d 2683 BIT(4, _C);
abegaichi 0:40cf46d9746d 2684 break;
abegaichi 0:40cf46d9746d 2685 case 0x62: // BIT 4, D
abegaichi 0:40cf46d9746d 2686 BIT(4, _D);
abegaichi 0:40cf46d9746d 2687 break;
abegaichi 0:40cf46d9746d 2688 case 0x63: // BIT 4, E
abegaichi 0:40cf46d9746d 2689 BIT(4, _E);
abegaichi 0:40cf46d9746d 2690 break;
abegaichi 0:40cf46d9746d 2691 case 0x64: // BIT 4, H
abegaichi 0:40cf46d9746d 2692 BIT(4, _H);
abegaichi 0:40cf46d9746d 2693 break;
abegaichi 0:40cf46d9746d 2694 case 0x65: // BIT 4, L
abegaichi 0:40cf46d9746d 2695 BIT(4, _L);
abegaichi 0:40cf46d9746d 2696 break;
abegaichi 0:40cf46d9746d 2697 case 0x66: // BIT 4, (HL)
abegaichi 0:40cf46d9746d 2698 BIT(4, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2699 break;
abegaichi 0:40cf46d9746d 2700 case 0x67: // BIT 4, A
abegaichi 0:40cf46d9746d 2701 BIT(4, _A);
abegaichi 0:40cf46d9746d 2702 break;
abegaichi 0:40cf46d9746d 2703 case 0x68: // BIT 5, B
abegaichi 0:40cf46d9746d 2704 BIT(5, _B);
abegaichi 0:40cf46d9746d 2705 break;
abegaichi 0:40cf46d9746d 2706 case 0x69: // BIT 5, C
abegaichi 0:40cf46d9746d 2707 BIT(5, _C);
abegaichi 0:40cf46d9746d 2708 break;
abegaichi 0:40cf46d9746d 2709 case 0x6a: // BIT 5, D
abegaichi 0:40cf46d9746d 2710 BIT(5, _D);
abegaichi 0:40cf46d9746d 2711 break;
abegaichi 0:40cf46d9746d 2712 case 0x6b: // BIT 5, E
abegaichi 0:40cf46d9746d 2713 BIT(5, _E);
abegaichi 0:40cf46d9746d 2714 break;
abegaichi 0:40cf46d9746d 2715 case 0x6c: // BIT 5, H
abegaichi 0:40cf46d9746d 2716 BIT(5, _H);
abegaichi 0:40cf46d9746d 2717 break;
abegaichi 0:40cf46d9746d 2718 case 0x6d: // BIT 5, L
abegaichi 0:40cf46d9746d 2719 BIT(5, _L);
abegaichi 0:40cf46d9746d 2720 break;
abegaichi 0:40cf46d9746d 2721 case 0x6e: // BIT 5, (HL)
abegaichi 0:40cf46d9746d 2722 BIT(5, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2723 break;
abegaichi 0:40cf46d9746d 2724 case 0x6f: // BIT 5, A
abegaichi 0:40cf46d9746d 2725 BIT(5, _A);
abegaichi 0:40cf46d9746d 2726 break;
abegaichi 0:40cf46d9746d 2727 case 0x70: // BIT 6, B
abegaichi 0:40cf46d9746d 2728 BIT(6, _B);
abegaichi 0:40cf46d9746d 2729 break;
abegaichi 0:40cf46d9746d 2730 case 0x71: // BIT 6, C
abegaichi 0:40cf46d9746d 2731 BIT(6, _C);
abegaichi 0:40cf46d9746d 2732 break;
abegaichi 0:40cf46d9746d 2733 case 0x72: // BIT 6, D
abegaichi 0:40cf46d9746d 2734 BIT(6, _D);
abegaichi 0:40cf46d9746d 2735 break;
abegaichi 0:40cf46d9746d 2736 case 0x73: // BIT 6, E
abegaichi 0:40cf46d9746d 2737 BIT(6, _E);
abegaichi 0:40cf46d9746d 2738 break;
abegaichi 0:40cf46d9746d 2739 case 0x74: // BIT 6, H
abegaichi 0:40cf46d9746d 2740 BIT(6, _H);
abegaichi 0:40cf46d9746d 2741 break;
abegaichi 0:40cf46d9746d 2742 case 0x75: // BIT 6, L
abegaichi 0:40cf46d9746d 2743 BIT(6, _L);
abegaichi 0:40cf46d9746d 2744 break;
abegaichi 0:40cf46d9746d 2745 case 0x76: // BIT 6, (HL)
abegaichi 0:40cf46d9746d 2746 BIT(6, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2747 break;
abegaichi 0:40cf46d9746d 2748 case 0x77: // BIT 6, A
abegaichi 0:40cf46d9746d 2749 BIT(6, _A);
abegaichi 0:40cf46d9746d 2750 break;
abegaichi 0:40cf46d9746d 2751 case 0x78: // BIT 7, B
abegaichi 0:40cf46d9746d 2752 BIT(7, _B);
abegaichi 0:40cf46d9746d 2753 break;
abegaichi 0:40cf46d9746d 2754 case 0x79: // BIT 7, C
abegaichi 0:40cf46d9746d 2755 BIT(7, _C);
abegaichi 0:40cf46d9746d 2756 break;
abegaichi 0:40cf46d9746d 2757 case 0x7a: // BIT 7, D
abegaichi 0:40cf46d9746d 2758 BIT(7, _D);
abegaichi 0:40cf46d9746d 2759 break;
abegaichi 0:40cf46d9746d 2760 case 0x7b: // BIT 7, E
abegaichi 0:40cf46d9746d 2761 BIT(7, _E);
abegaichi 0:40cf46d9746d 2762 break;
abegaichi 0:40cf46d9746d 2763 case 0x7c: // BIT 7, H
abegaichi 0:40cf46d9746d 2764 BIT(7, _H);
abegaichi 0:40cf46d9746d 2765 break;
abegaichi 0:40cf46d9746d 2766 case 0x7d: // BIT 7, L
abegaichi 0:40cf46d9746d 2767 BIT(7, _L);
abegaichi 0:40cf46d9746d 2768 break;
abegaichi 0:40cf46d9746d 2769 case 0x7e: // BIT 7, (HL)
abegaichi 0:40cf46d9746d 2770 BIT(7, ReadMemory(HL));
abegaichi 0:40cf46d9746d 2771 break;
abegaichi 0:40cf46d9746d 2772 case 0x7f: // BIT 7, A
abegaichi 0:40cf46d9746d 2773 BIT(7, _A);
abegaichi 0:40cf46d9746d 2774 break;
abegaichi 0:40cf46d9746d 2775 case 0x80: // RES 0, B
abegaichi 0:40cf46d9746d 2776 _B = RES(0, _B);
abegaichi 0:40cf46d9746d 2777 break;
abegaichi 0:40cf46d9746d 2778 case 0x81: // RES 0, C
abegaichi 0:40cf46d9746d 2779 _C = RES(0, _C);
abegaichi 0:40cf46d9746d 2780 break;
abegaichi 0:40cf46d9746d 2781 case 0x82: // RES 0, D
abegaichi 0:40cf46d9746d 2782 _D = RES(0, _D);
abegaichi 0:40cf46d9746d 2783 break;
abegaichi 0:40cf46d9746d 2784 case 0x83: // RES 0, E
abegaichi 0:40cf46d9746d 2785 _E = RES(0, _E);
abegaichi 0:40cf46d9746d 2786 break;
abegaichi 0:40cf46d9746d 2787 case 0x84: // RES 0, H
abegaichi 0:40cf46d9746d 2788 _H = RES(0, _H);
abegaichi 0:40cf46d9746d 2789 break;
abegaichi 0:40cf46d9746d 2790 case 0x85: // RES 0, L
abegaichi 0:40cf46d9746d 2791 _L = RES(0, _L);
abegaichi 0:40cf46d9746d 2792 break;
abegaichi 0:40cf46d9746d 2793 case 0x86: // RES 0, (HL)
abegaichi 0:40cf46d9746d 2794 WriteMemory(HL, RES(0, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2795 break;
abegaichi 0:40cf46d9746d 2796 case 0x87: // RES 0, A
abegaichi 0:40cf46d9746d 2797 _A = RES(0, _A);
abegaichi 0:40cf46d9746d 2798 break;
abegaichi 0:40cf46d9746d 2799 case 0x88: // RES 1, B
abegaichi 0:40cf46d9746d 2800 _B = RES(1, _B);
abegaichi 0:40cf46d9746d 2801 break;
abegaichi 0:40cf46d9746d 2802 case 0x89: // RES 1, C
abegaichi 0:40cf46d9746d 2803 _C = RES(1, _C);
abegaichi 0:40cf46d9746d 2804 break;
abegaichi 0:40cf46d9746d 2805 case 0x8a: // RES 1, D
abegaichi 0:40cf46d9746d 2806 _D = RES(1, _D);
abegaichi 0:40cf46d9746d 2807 break;
abegaichi 0:40cf46d9746d 2808 case 0x8b: // RES 1, E
abegaichi 0:40cf46d9746d 2809 _E = RES(1, _E);
abegaichi 0:40cf46d9746d 2810 break;
abegaichi 0:40cf46d9746d 2811 case 0x8c: // RES 1, H
abegaichi 0:40cf46d9746d 2812 _H = RES(1, _H);
abegaichi 0:40cf46d9746d 2813 break;
abegaichi 0:40cf46d9746d 2814 case 0x8d: // RES 1, L
abegaichi 0:40cf46d9746d 2815 _L = RES(1, _L);
abegaichi 0:40cf46d9746d 2816 break;
abegaichi 0:40cf46d9746d 2817 case 0x8e: // RES 1, (HL)
abegaichi 0:40cf46d9746d 2818 WriteMemory(HL, RES(1, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2819 break;
abegaichi 0:40cf46d9746d 2820 case 0x8f: // RES 1, A
abegaichi 0:40cf46d9746d 2821 _A = RES(1, _A);
abegaichi 0:40cf46d9746d 2822 break;
abegaichi 0:40cf46d9746d 2823 case 0x90: // RES 2, B
abegaichi 0:40cf46d9746d 2824 _B = RES(2, _B);
abegaichi 0:40cf46d9746d 2825 break;
abegaichi 0:40cf46d9746d 2826 case 0x91: // RES 2, C
abegaichi 0:40cf46d9746d 2827 _C = RES(2, _C);
abegaichi 0:40cf46d9746d 2828 break;
abegaichi 0:40cf46d9746d 2829 case 0x92: // RES 2, D
abegaichi 0:40cf46d9746d 2830 _D = RES(2, _D);
abegaichi 0:40cf46d9746d 2831 break;
abegaichi 0:40cf46d9746d 2832 case 0x93: // RES 2, E
abegaichi 0:40cf46d9746d 2833 _E = RES(2, _E);
abegaichi 0:40cf46d9746d 2834 break;
abegaichi 0:40cf46d9746d 2835 case 0x94: // RES 2, H
abegaichi 0:40cf46d9746d 2836 _H = RES(2, _H);
abegaichi 0:40cf46d9746d 2837 break;
abegaichi 0:40cf46d9746d 2838 case 0x95: // RES 2, L
abegaichi 0:40cf46d9746d 2839 _L = RES(2, _L);
abegaichi 0:40cf46d9746d 2840 break;
abegaichi 0:40cf46d9746d 2841 case 0x96: // RES 2, (HL)
abegaichi 0:40cf46d9746d 2842 WriteMemory(HL, RES(2, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2843 break;
abegaichi 0:40cf46d9746d 2844 case 0x97: // RES 2, A
abegaichi 0:40cf46d9746d 2845 _A = RES(2, _A);
abegaichi 0:40cf46d9746d 2846 break;
abegaichi 0:40cf46d9746d 2847 case 0x98: // RES 3, B
abegaichi 0:40cf46d9746d 2848 _B = RES(3, _B);
abegaichi 0:40cf46d9746d 2849 break;
abegaichi 0:40cf46d9746d 2850 case 0x99: // RES 3, C
abegaichi 0:40cf46d9746d 2851 _C = RES(3, _C);
abegaichi 0:40cf46d9746d 2852 break;
abegaichi 0:40cf46d9746d 2853 case 0x9a: // RES 3, D
abegaichi 0:40cf46d9746d 2854 _D = RES(3, _D);
abegaichi 0:40cf46d9746d 2855 break;
abegaichi 0:40cf46d9746d 2856 case 0x9b: // RES 3, E
abegaichi 0:40cf46d9746d 2857 _E = RES(3, _E);
abegaichi 0:40cf46d9746d 2858 break;
abegaichi 0:40cf46d9746d 2859 case 0x9c: // RES 3, H
abegaichi 0:40cf46d9746d 2860 _H = RES(3, _H);
abegaichi 0:40cf46d9746d 2861 break;
abegaichi 0:40cf46d9746d 2862 case 0x9d: // RES 3, L
abegaichi 0:40cf46d9746d 2863 _L = RES(3, _L);
abegaichi 0:40cf46d9746d 2864 break;
abegaichi 0:40cf46d9746d 2865 case 0x9e: // RES 3, (HL)
abegaichi 0:40cf46d9746d 2866 WriteMemory(HL, RES(3, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2867 break;
abegaichi 0:40cf46d9746d 2868 case 0x9f: // RES 3, A
abegaichi 0:40cf46d9746d 2869 _A = RES(3, _A);
abegaichi 0:40cf46d9746d 2870 break;
abegaichi 0:40cf46d9746d 2871 case 0xa0: // RES 4, B
abegaichi 0:40cf46d9746d 2872 _B = RES(4, _B);
abegaichi 0:40cf46d9746d 2873 break;
abegaichi 0:40cf46d9746d 2874 case 0xa1: // RES 4, C
abegaichi 0:40cf46d9746d 2875 _C = RES(4, _C);
abegaichi 0:40cf46d9746d 2876 break;
abegaichi 0:40cf46d9746d 2877 case 0xa2: // RES 4, D
abegaichi 0:40cf46d9746d 2878 _D = RES(4, _D);
abegaichi 0:40cf46d9746d 2879 break;
abegaichi 0:40cf46d9746d 2880 case 0xa3: // RES 4, E
abegaichi 0:40cf46d9746d 2881 _E = RES(4, _E);
abegaichi 0:40cf46d9746d 2882 break;
abegaichi 0:40cf46d9746d 2883 case 0xa4: // RES 4, H
abegaichi 0:40cf46d9746d 2884 _H = RES(4, _H);
abegaichi 0:40cf46d9746d 2885 break;
abegaichi 0:40cf46d9746d 2886 case 0xa5: // RES 4, L
abegaichi 0:40cf46d9746d 2887 _L = RES(4, _L);
abegaichi 0:40cf46d9746d 2888 break;
abegaichi 0:40cf46d9746d 2889 case 0xa6: // RES 4, (HL)
abegaichi 0:40cf46d9746d 2890 WriteMemory(HL, RES(4, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2891 break;
abegaichi 0:40cf46d9746d 2892 case 0xa7: // RES 4, A
abegaichi 0:40cf46d9746d 2893 _A = RES(4, _A);
abegaichi 0:40cf46d9746d 2894 break;
abegaichi 0:40cf46d9746d 2895 case 0xa8: // RES 5, B
abegaichi 0:40cf46d9746d 2896 _B = RES(5, _B);
abegaichi 0:40cf46d9746d 2897 break;
abegaichi 0:40cf46d9746d 2898 case 0xa9: // RES 5, C
abegaichi 0:40cf46d9746d 2899 _C = RES(5, _C);
abegaichi 0:40cf46d9746d 2900 break;
abegaichi 0:40cf46d9746d 2901 case 0xaa: // RES 5, D
abegaichi 0:40cf46d9746d 2902 _D = RES(5, _D);
abegaichi 0:40cf46d9746d 2903 break;
abegaichi 0:40cf46d9746d 2904 case 0xab: // RES 5, E
abegaichi 0:40cf46d9746d 2905 _E = RES(5, _E);
abegaichi 0:40cf46d9746d 2906 break;
abegaichi 0:40cf46d9746d 2907 case 0xac: // RES 5, H
abegaichi 0:40cf46d9746d 2908 _H = RES(5, _H);
abegaichi 0:40cf46d9746d 2909 break;
abegaichi 0:40cf46d9746d 2910 case 0xad: // RES 5, L
abegaichi 0:40cf46d9746d 2911 _L = RES(5, _L);
abegaichi 0:40cf46d9746d 2912 break;
abegaichi 0:40cf46d9746d 2913 case 0xae: // RES 5, (HL)
abegaichi 0:40cf46d9746d 2914 WriteMemory(HL, RES(5, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2915 break;
abegaichi 0:40cf46d9746d 2916 case 0xaf: // RES 5, A
abegaichi 0:40cf46d9746d 2917 _A = RES(5, _A);
abegaichi 0:40cf46d9746d 2918 break;
abegaichi 0:40cf46d9746d 2919 case 0xb0: // RES 6, B
abegaichi 0:40cf46d9746d 2920 _B = RES(6, _B);
abegaichi 0:40cf46d9746d 2921 break;
abegaichi 0:40cf46d9746d 2922 case 0xb1: // RES 6, C
abegaichi 0:40cf46d9746d 2923 _C = RES(6, _C);
abegaichi 0:40cf46d9746d 2924 break;
abegaichi 0:40cf46d9746d 2925 case 0xb2: // RES 6, D
abegaichi 0:40cf46d9746d 2926 _D = RES(6, _D);
abegaichi 0:40cf46d9746d 2927 break;
abegaichi 0:40cf46d9746d 2928 case 0xb3: // RES 6, E
abegaichi 0:40cf46d9746d 2929 _E = RES(6, _E);
abegaichi 0:40cf46d9746d 2930 break;
abegaichi 0:40cf46d9746d 2931 case 0xb4: // RES 6, H
abegaichi 0:40cf46d9746d 2932 _H = RES(6, _H);
abegaichi 0:40cf46d9746d 2933 break;
abegaichi 0:40cf46d9746d 2934 case 0xb5: // RES 6, L
abegaichi 0:40cf46d9746d 2935 _L = RES(6, _L);
abegaichi 0:40cf46d9746d 2936 break;
abegaichi 0:40cf46d9746d 2937 case 0xb6: // RES 6, (HL)
abegaichi 0:40cf46d9746d 2938 WriteMemory(HL, RES(6, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2939 break;
abegaichi 0:40cf46d9746d 2940 case 0xb7: // RES 6, A
abegaichi 0:40cf46d9746d 2941 _A = RES(6, _A);
abegaichi 0:40cf46d9746d 2942 break;
abegaichi 0:40cf46d9746d 2943 case 0xb8: // RES 7, B
abegaichi 0:40cf46d9746d 2944 _B = RES(7, _B);
abegaichi 0:40cf46d9746d 2945 break;
abegaichi 0:40cf46d9746d 2946 case 0xb9: // RES 7, C
abegaichi 0:40cf46d9746d 2947 _C = RES(7, _C);
abegaichi 0:40cf46d9746d 2948 break;
abegaichi 0:40cf46d9746d 2949 case 0xba: // RES 7, D
abegaichi 0:40cf46d9746d 2950 _D = RES(7, _D);
abegaichi 0:40cf46d9746d 2951 break;
abegaichi 0:40cf46d9746d 2952 case 0xbb: // RES 7, E
abegaichi 0:40cf46d9746d 2953 _E = RES(7, _E);
abegaichi 0:40cf46d9746d 2954 break;
abegaichi 0:40cf46d9746d 2955 case 0xbc: // RES 7, H
abegaichi 0:40cf46d9746d 2956 _H = RES(7, _H);
abegaichi 0:40cf46d9746d 2957 break;
abegaichi 0:40cf46d9746d 2958 case 0xbd: // RES 7, L
abegaichi 0:40cf46d9746d 2959 _L = RES(7, _L);
abegaichi 0:40cf46d9746d 2960 break;
abegaichi 0:40cf46d9746d 2961 case 0xbe: // RES 7, (HL)
abegaichi 0:40cf46d9746d 2962 WriteMemory(HL, RES(7, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2963 break;
abegaichi 0:40cf46d9746d 2964 case 0xbf: // RES 7, A
abegaichi 0:40cf46d9746d 2965 _A = RES(7, _A);
abegaichi 0:40cf46d9746d 2966 break;
abegaichi 0:40cf46d9746d 2967 case 0xc0: // SET 0, B
abegaichi 0:40cf46d9746d 2968 _B = SET(0, _B);
abegaichi 0:40cf46d9746d 2969 break;
abegaichi 0:40cf46d9746d 2970 case 0xc1: // SET 0, C
abegaichi 0:40cf46d9746d 2971 _C = SET(0, _C);
abegaichi 0:40cf46d9746d 2972 break;
abegaichi 0:40cf46d9746d 2973 case 0xc2: // SET 0, D
abegaichi 0:40cf46d9746d 2974 _D = SET(0, _D);
abegaichi 0:40cf46d9746d 2975 break;
abegaichi 0:40cf46d9746d 2976 case 0xc3: // SET 0, E
abegaichi 0:40cf46d9746d 2977 _E = SET(0, _E);
abegaichi 0:40cf46d9746d 2978 break;
abegaichi 0:40cf46d9746d 2979 case 0xc4: // SET 0, H
abegaichi 0:40cf46d9746d 2980 _H = SET(0, _H);
abegaichi 0:40cf46d9746d 2981 break;
abegaichi 0:40cf46d9746d 2982 case 0xc5: // SET 0, L
abegaichi 0:40cf46d9746d 2983 _L = SET(0, _L);
abegaichi 0:40cf46d9746d 2984 break;
abegaichi 0:40cf46d9746d 2985 case 0xc6: // SET 0, (HL)
abegaichi 0:40cf46d9746d 2986 WriteMemory(HL, SET(0, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 2987 break;
abegaichi 0:40cf46d9746d 2988 case 0xc7: // SET 0, A
abegaichi 0:40cf46d9746d 2989 _A = SET(0, _A);
abegaichi 0:40cf46d9746d 2990 break;
abegaichi 0:40cf46d9746d 2991 case 0xc8: // SET 1, B
abegaichi 0:40cf46d9746d 2992 _B = SET(1, _B);
abegaichi 0:40cf46d9746d 2993 break;
abegaichi 0:40cf46d9746d 2994 case 0xc9: // SET 1, C
abegaichi 0:40cf46d9746d 2995 _C = SET(1, _C);
abegaichi 0:40cf46d9746d 2996 break;
abegaichi 0:40cf46d9746d 2997 case 0xca: // SET 1, D
abegaichi 0:40cf46d9746d 2998 _D = SET(1, _D);
abegaichi 0:40cf46d9746d 2999 break;
abegaichi 0:40cf46d9746d 3000 case 0xcb: // SET 1, E
abegaichi 0:40cf46d9746d 3001 _E = SET(1, _E);
abegaichi 0:40cf46d9746d 3002 break;
abegaichi 0:40cf46d9746d 3003 case 0xcc: // SET 1, H
abegaichi 0:40cf46d9746d 3004 _H = SET(1, _H);
abegaichi 0:40cf46d9746d 3005 break;
abegaichi 0:40cf46d9746d 3006 case 0xcd: // SET 1, L
abegaichi 0:40cf46d9746d 3007 _L = SET(1, _L);
abegaichi 0:40cf46d9746d 3008 break;
abegaichi 0:40cf46d9746d 3009 case 0xce: // SET 1, (HL)
abegaichi 0:40cf46d9746d 3010 WriteMemory(HL, SET(1, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 3011 break;
abegaichi 0:40cf46d9746d 3012 case 0xcf: // SET 1, A
abegaichi 0:40cf46d9746d 3013 _A = SET(1, _A);
abegaichi 0:40cf46d9746d 3014 break;
abegaichi 0:40cf46d9746d 3015 case 0xd0: // SET 2, B
abegaichi 0:40cf46d9746d 3016 _B = SET(2, _B);
abegaichi 0:40cf46d9746d 3017 break;
abegaichi 0:40cf46d9746d 3018 case 0xd1: // SET 2, C
abegaichi 0:40cf46d9746d 3019 _C = SET(2, _C);
abegaichi 0:40cf46d9746d 3020 break;
abegaichi 0:40cf46d9746d 3021 case 0xd2: // SET 2, D
abegaichi 0:40cf46d9746d 3022 _D = SET(2, _D);
abegaichi 0:40cf46d9746d 3023 break;
abegaichi 0:40cf46d9746d 3024 case 0xd3: // SET 2, E
abegaichi 0:40cf46d9746d 3025 _E = SET(2, _E);
abegaichi 0:40cf46d9746d 3026 break;
abegaichi 0:40cf46d9746d 3027 case 0xd4: // SET 2, H
abegaichi 0:40cf46d9746d 3028 _H = SET(2, _H);
abegaichi 0:40cf46d9746d 3029 break;
abegaichi 0:40cf46d9746d 3030 case 0xd5: // SET 2, L
abegaichi 0:40cf46d9746d 3031 _L = SET(2, _L);
abegaichi 0:40cf46d9746d 3032 break;
abegaichi 0:40cf46d9746d 3033 case 0xd6: // SET 2, (HL)
abegaichi 0:40cf46d9746d 3034 WriteMemory(HL, SET(2, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 3035 break;
abegaichi 0:40cf46d9746d 3036 case 0xd7: // SET 2, A
abegaichi 0:40cf46d9746d 3037 _A = SET(2, _A);
abegaichi 0:40cf46d9746d 3038 break;
abegaichi 0:40cf46d9746d 3039 case 0xd8: // SET 3, B
abegaichi 0:40cf46d9746d 3040 _B = SET(3, _B);
abegaichi 0:40cf46d9746d 3041 break;
abegaichi 0:40cf46d9746d 3042 case 0xd9: // SET 3, C
abegaichi 0:40cf46d9746d 3043 _C = SET(3, _C);
abegaichi 0:40cf46d9746d 3044 break;
abegaichi 0:40cf46d9746d 3045 case 0xda: // SET 3, D
abegaichi 0:40cf46d9746d 3046 _D = SET(3, _D);
abegaichi 0:40cf46d9746d 3047 break;
abegaichi 0:40cf46d9746d 3048 case 0xdb: // SET 3, E
abegaichi 0:40cf46d9746d 3049 _E = SET(3, _E);
abegaichi 0:40cf46d9746d 3050 break;
abegaichi 0:40cf46d9746d 3051 case 0xdc: // SET 3, H
abegaichi 0:40cf46d9746d 3052 _H = SET(3, _H);
abegaichi 0:40cf46d9746d 3053 break;
abegaichi 0:40cf46d9746d 3054 case 0xdd: // SET 3, L
abegaichi 0:40cf46d9746d 3055 _L = SET(3, _L);
abegaichi 0:40cf46d9746d 3056 break;
abegaichi 0:40cf46d9746d 3057 case 0xde: // SET 3, (HL)
abegaichi 0:40cf46d9746d 3058 WriteMemory(HL, SET(3, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 3059 break;
abegaichi 0:40cf46d9746d 3060 case 0xdf: // SET 3, A
abegaichi 0:40cf46d9746d 3061 _A = SET(3, _A);
abegaichi 0:40cf46d9746d 3062 break;
abegaichi 0:40cf46d9746d 3063 case 0xe0: // SET 4, B
abegaichi 0:40cf46d9746d 3064 _B = SET(4, _B);
abegaichi 0:40cf46d9746d 3065 break;
abegaichi 0:40cf46d9746d 3066 case 0xe1: // SET 4, C
abegaichi 0:40cf46d9746d 3067 _C = SET(4, _C);
abegaichi 0:40cf46d9746d 3068 break;
abegaichi 0:40cf46d9746d 3069 case 0xe2: // SET 4, D
abegaichi 0:40cf46d9746d 3070 _D = SET(4, _D);
abegaichi 0:40cf46d9746d 3071 break;
abegaichi 0:40cf46d9746d 3072 case 0xe3: // SET 4, E
abegaichi 0:40cf46d9746d 3073 _E = SET(4, _E);
abegaichi 0:40cf46d9746d 3074 break;
abegaichi 0:40cf46d9746d 3075 case 0xe4: // SET 4, H
abegaichi 0:40cf46d9746d 3076 _H = SET(4, _H);
abegaichi 0:40cf46d9746d 3077 break;
abegaichi 0:40cf46d9746d 3078 case 0xe5: // SET 4, L
abegaichi 0:40cf46d9746d 3079 _L = SET(4, _L);
abegaichi 0:40cf46d9746d 3080 break;
abegaichi 0:40cf46d9746d 3081 case 0xe6: // SET 4, (HL)
abegaichi 0:40cf46d9746d 3082 WriteMemory(HL, SET(4, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 3083 break;
abegaichi 0:40cf46d9746d 3084 case 0xe7: // SET 4, A
abegaichi 0:40cf46d9746d 3085 _A = SET(4, _A);
abegaichi 0:40cf46d9746d 3086 break;
abegaichi 0:40cf46d9746d 3087 case 0xe8: // SET 5, B
abegaichi 0:40cf46d9746d 3088 _B = SET(5, _B);
abegaichi 0:40cf46d9746d 3089 break;
abegaichi 0:40cf46d9746d 3090 case 0xe9: // SET 5, C
abegaichi 0:40cf46d9746d 3091 _C = SET(5, _C);
abegaichi 0:40cf46d9746d 3092 break;
abegaichi 0:40cf46d9746d 3093 case 0xea: // SET 5, D
abegaichi 0:40cf46d9746d 3094 _D = SET(5, _D);
abegaichi 0:40cf46d9746d 3095 break;
abegaichi 0:40cf46d9746d 3096 case 0xeb: // SET 5, E
abegaichi 0:40cf46d9746d 3097 _E = SET(5, _E);
abegaichi 0:40cf46d9746d 3098 break;
abegaichi 0:40cf46d9746d 3099 case 0xec: // SET 5, H
abegaichi 0:40cf46d9746d 3100 _H = SET(5, _H);
abegaichi 0:40cf46d9746d 3101 break;
abegaichi 0:40cf46d9746d 3102 case 0xed: // SET 5, L
abegaichi 0:40cf46d9746d 3103 _L = SET(5, _L);
abegaichi 0:40cf46d9746d 3104 break;
abegaichi 0:40cf46d9746d 3105 case 0xee: // SET 5, (HL)
abegaichi 0:40cf46d9746d 3106 WriteMemory(HL, SET(5, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 3107 break;
abegaichi 0:40cf46d9746d 3108 case 0xef: // SET 5, A
abegaichi 0:40cf46d9746d 3109 _A = SET(5, _A);
abegaichi 0:40cf46d9746d 3110 break;
abegaichi 0:40cf46d9746d 3111 case 0xf0: // SET 6, B
abegaichi 0:40cf46d9746d 3112 _B = SET(6, _B);
abegaichi 0:40cf46d9746d 3113 break;
abegaichi 0:40cf46d9746d 3114 case 0xf1: // SET 6, C
abegaichi 0:40cf46d9746d 3115 _C = SET(6, _C);
abegaichi 0:40cf46d9746d 3116 break;
abegaichi 0:40cf46d9746d 3117 case 0xf2: // SET 6, D
abegaichi 0:40cf46d9746d 3118 _D = SET(6, _D);
abegaichi 0:40cf46d9746d 3119 break;
abegaichi 0:40cf46d9746d 3120 case 0xf3: // SET 6, E
abegaichi 0:40cf46d9746d 3121 _E = SET(6, _E);
abegaichi 0:40cf46d9746d 3122 break;
abegaichi 0:40cf46d9746d 3123 case 0xf4: // SET 6, H
abegaichi 0:40cf46d9746d 3124 _H = SET(6, _H);
abegaichi 0:40cf46d9746d 3125 break;
abegaichi 0:40cf46d9746d 3126 case 0xf5: // SET 6, L
abegaichi 0:40cf46d9746d 3127 _L = SET(6, _L);
abegaichi 0:40cf46d9746d 3128 break;
abegaichi 0:40cf46d9746d 3129 case 0xf6: // SET 6, (HL)
abegaichi 0:40cf46d9746d 3130 WriteMemory(HL, SET(6, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 3131 break;
abegaichi 0:40cf46d9746d 3132 case 0xf7: // SET 6, A
abegaichi 0:40cf46d9746d 3133 _A = SET(6, _A);
abegaichi 0:40cf46d9746d 3134 break;
abegaichi 0:40cf46d9746d 3135 case 0xf8: // SET 7, B
abegaichi 0:40cf46d9746d 3136 _B = SET(7, _B);
abegaichi 0:40cf46d9746d 3137 break;
abegaichi 0:40cf46d9746d 3138 case 0xf9: // SET 7, C
abegaichi 0:40cf46d9746d 3139 _C = SET(7, _C);
abegaichi 0:40cf46d9746d 3140 break;
abegaichi 0:40cf46d9746d 3141 case 0xfa: // SET 7, D
abegaichi 0:40cf46d9746d 3142 _D = SET(7, _D);
abegaichi 0:40cf46d9746d 3143 break;
abegaichi 0:40cf46d9746d 3144 case 0xfb: // SET 7, E
abegaichi 0:40cf46d9746d 3145 _E = SET(7, _E);
abegaichi 0:40cf46d9746d 3146 break;
abegaichi 0:40cf46d9746d 3147 case 0xfc: // SET 7, H
abegaichi 0:40cf46d9746d 3148 _H = SET(7, _H);
abegaichi 0:40cf46d9746d 3149 break;
abegaichi 0:40cf46d9746d 3150 case 0xfd: // SET 7, L
abegaichi 0:40cf46d9746d 3151 _L = SET(7, _L);
abegaichi 0:40cf46d9746d 3152 break;
abegaichi 0:40cf46d9746d 3153 case 0xfe: // SET 7, (HL)
abegaichi 0:40cf46d9746d 3154 WriteMemory(HL, SET(7, ReadMemory(HL)));
abegaichi 0:40cf46d9746d 3155 break;
abegaichi 0:40cf46d9746d 3156 case 0xff: // SET 7, A
abegaichi 0:40cf46d9746d 3157 _A = SET(7, _A);
abegaichi 0:40cf46d9746d 3158 break;
abegaichi 0:40cf46d9746d 3159 }
abegaichi 0:40cf46d9746d 3160 }
abegaichi 0:40cf46d9746d 3161 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 3162 /* &#65533;@&#65533;\&#65533;F &#65533;y&#65533;W&#65533;O &#65533;c&#65533;c&#65533;v&#65533;&#65533;&#65533;t&#65533;B&#65533;b&#65533;N&#65533;X */
abegaichi 1:bd86d49d7622 3163 /* &#65533;&#65533; &#65533;&#65533;&#65533;&#65533; */
abegaichi 1:bd86d49d7622 3164 /* &#65533;&#2002;l&#65533;F &#65533;&#65533;&#65533;&#65533; */
abegaichi 0:40cf46d9746d 3165 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 3166 void execute_opDD( void )
abegaichi 0:40cf46d9746d 3167 {
abegaichi 0:40cf46d9746d 3168 uint16 tmp16;
abegaichi 0:40cf46d9746d 3169
abegaichi 0:40cf46d9746d 3170
abegaichi 0:40cf46d9746d 3171 uint8 cmd = Fetch();
abegaichi 0:40cf46d9746d 3172 count -= (int)cc_xy[cmd];
abegaichi 0:40cf46d9746d 3173 _R = (_R & 0x80) | ((_R + 1) & 0x7f);
abegaichi 0:40cf46d9746d 3174
abegaichi 0:40cf46d9746d 3175 switch(cmd) {
abegaichi 0:40cf46d9746d 3176 case 0x09: // ADD IX, BC
abegaichi 0:40cf46d9746d 3177 IX = ADD16(IX, BC);
abegaichi 0:40cf46d9746d 3178 break;
abegaichi 0:40cf46d9746d 3179 case 0x19: // ADD IX, DE
abegaichi 0:40cf46d9746d 3180 IX = ADD16(IX, DE);
abegaichi 0:40cf46d9746d 3181 break;
abegaichi 0:40cf46d9746d 3182 case 0x21: // LD IX, w
abegaichi 0:40cf46d9746d 3183 IX = Fetch16();
abegaichi 0:40cf46d9746d 3184 break;
abegaichi 0:40cf46d9746d 3185 case 0x22: // LD (w), IX
abegaichi 0:40cf46d9746d 3186 EA = Fetch16();
abegaichi 0:40cf46d9746d 3187 WriteMemory16(EA, IX);
abegaichi 0:40cf46d9746d 3188 break;
abegaichi 0:40cf46d9746d 3189 case 0x23: // INC IX
abegaichi 0:40cf46d9746d 3190 IX++;
abegaichi 0:40cf46d9746d 3191 break;
abegaichi 0:40cf46d9746d 3192 case 0x24: // INC HX
abegaichi 0:40cf46d9746d 3193 _XH = INC(_XH);
abegaichi 0:40cf46d9746d 3194 break;
abegaichi 0:40cf46d9746d 3195 case 0x25: // DEC HX
abegaichi 0:40cf46d9746d 3196 _XH = DEC(_XH);
abegaichi 0:40cf46d9746d 3197 break;
abegaichi 0:40cf46d9746d 3198 case 0x26: // LD HX, n
abegaichi 0:40cf46d9746d 3199 _XH = Fetch();
abegaichi 0:40cf46d9746d 3200 break;
abegaichi 0:40cf46d9746d 3201 case 0x29: // ADD IX, IX
abegaichi 0:40cf46d9746d 3202 IX = ADD16(IX, IX);
abegaichi 0:40cf46d9746d 3203 break;
abegaichi 0:40cf46d9746d 3204 case 0x2a: // LD IX, (w)
abegaichi 0:40cf46d9746d 3205 EA = Fetch16();
abegaichi 0:40cf46d9746d 3206 IX = ReadMemory16(EA);
abegaichi 0:40cf46d9746d 3207 break;
abegaichi 0:40cf46d9746d 3208 case 0x2b: // DEC IX
abegaichi 0:40cf46d9746d 3209 IX--;
abegaichi 0:40cf46d9746d 3210 break;
abegaichi 0:40cf46d9746d 3211 case 0x2c: // INC LX
abegaichi 0:40cf46d9746d 3212 _XL = INC(_XL);
abegaichi 0:40cf46d9746d 3213 break;
abegaichi 0:40cf46d9746d 3214 case 0x2d: // DEC LX
abegaichi 0:40cf46d9746d 3215 _XL = DEC(_XL);
abegaichi 0:40cf46d9746d 3216 break;
abegaichi 0:40cf46d9746d 3217 case 0x2e: // LD LX, n
abegaichi 0:40cf46d9746d 3218 _XL = Fetch();
abegaichi 0:40cf46d9746d 3219 break;
abegaichi 0:40cf46d9746d 3220 case 0x34: // INC (IX+o)
abegaichi 0:40cf46d9746d 3221 EAX();
abegaichi 0:40cf46d9746d 3222 WriteMemory(EA, INC(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 3223 break;
abegaichi 0:40cf46d9746d 3224 case 0x35: // DEC (IX+o)
abegaichi 0:40cf46d9746d 3225 EAX();
abegaichi 0:40cf46d9746d 3226 WriteMemory(EA, DEC(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 3227 break;
abegaichi 0:40cf46d9746d 3228 case 0x36: // LD (IX+o), n
abegaichi 0:40cf46d9746d 3229 EAX();
abegaichi 0:40cf46d9746d 3230 WriteMemory(EA, Fetch());
abegaichi 0:40cf46d9746d 3231 break;
abegaichi 0:40cf46d9746d 3232 case 0x39: // ADD IX, SP
abegaichi 0:40cf46d9746d 3233 IX = ADD16(IX, SP);
abegaichi 0:40cf46d9746d 3234 break;
abegaichi 0:40cf46d9746d 3235 case 0x44: // LD B, HX
abegaichi 0:40cf46d9746d 3236 _B = _XH;
abegaichi 0:40cf46d9746d 3237 break;
abegaichi 0:40cf46d9746d 3238 case 0x45: // LD B, LX
abegaichi 0:40cf46d9746d 3239 _B = _XL;
abegaichi 0:40cf46d9746d 3240 break;
abegaichi 0:40cf46d9746d 3241 case 0x46: // LD B, (IX+o)
abegaichi 0:40cf46d9746d 3242 EAX();
abegaichi 0:40cf46d9746d 3243 _B = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3244 break;
abegaichi 0:40cf46d9746d 3245 case 0x4c: // LD C, HX
abegaichi 0:40cf46d9746d 3246 _C = _XH;
abegaichi 0:40cf46d9746d 3247 break;
abegaichi 0:40cf46d9746d 3248 case 0x4d: // LD C, LX
abegaichi 0:40cf46d9746d 3249 _C = _XL;
abegaichi 0:40cf46d9746d 3250 break;
abegaichi 0:40cf46d9746d 3251 case 0x4e: // LD C, (IX+o)
abegaichi 0:40cf46d9746d 3252 EAX();
abegaichi 0:40cf46d9746d 3253 _C = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3254 break;
abegaichi 0:40cf46d9746d 3255 case 0x54: // LD D, HX
abegaichi 0:40cf46d9746d 3256 _D = _XH;
abegaichi 0:40cf46d9746d 3257 break;
abegaichi 0:40cf46d9746d 3258 case 0x55: // LD D, LX
abegaichi 0:40cf46d9746d 3259 _D = _XL;
abegaichi 0:40cf46d9746d 3260 break;
abegaichi 0:40cf46d9746d 3261 case 0x56: // LD D, (IX+o)
abegaichi 0:40cf46d9746d 3262 EAX();
abegaichi 0:40cf46d9746d 3263 _D = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3264 break;
abegaichi 0:40cf46d9746d 3265 case 0x5c: // LD E, HX
abegaichi 0:40cf46d9746d 3266 _E = _XH;
abegaichi 0:40cf46d9746d 3267 break;
abegaichi 0:40cf46d9746d 3268 case 0x5d: // LD E, LX
abegaichi 0:40cf46d9746d 3269 _E = _XL;
abegaichi 0:40cf46d9746d 3270 break;
abegaichi 0:40cf46d9746d 3271 case 0x5e: // LD E, (IX+o)
abegaichi 0:40cf46d9746d 3272 EAX();
abegaichi 0:40cf46d9746d 3273 _E = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3274 break;
abegaichi 0:40cf46d9746d 3275 case 0x60: // LD HX, B
abegaichi 0:40cf46d9746d 3276 _XH = _B;
abegaichi 0:40cf46d9746d 3277 break;
abegaichi 0:40cf46d9746d 3278 case 0x61: // LD HX, C
abegaichi 0:40cf46d9746d 3279 _XH = _C;
abegaichi 0:40cf46d9746d 3280 break;
abegaichi 0:40cf46d9746d 3281 case 0x62: // LD HX, D
abegaichi 0:40cf46d9746d 3282 _XH = _D;
abegaichi 0:40cf46d9746d 3283 break;
abegaichi 0:40cf46d9746d 3284 case 0x63: // LD HX, E
abegaichi 0:40cf46d9746d 3285 _XH = _E;
abegaichi 0:40cf46d9746d 3286 break;
abegaichi 0:40cf46d9746d 3287 case 0x64: // LD HX, HX
abegaichi 0:40cf46d9746d 3288 break;
abegaichi 0:40cf46d9746d 3289 case 0x65: // LD HX, LX
abegaichi 0:40cf46d9746d 3290 _XH = _XL;
abegaichi 0:40cf46d9746d 3291 break;
abegaichi 0:40cf46d9746d 3292 case 0x66: // LD H, (IX+o)
abegaichi 0:40cf46d9746d 3293 EAX();
abegaichi 0:40cf46d9746d 3294 _H = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3295 break;
abegaichi 0:40cf46d9746d 3296 case 0x67: // LD HX, A
abegaichi 0:40cf46d9746d 3297 _XH = _A;
abegaichi 0:40cf46d9746d 3298 break;
abegaichi 0:40cf46d9746d 3299 case 0x68: // LD LX, B
abegaichi 0:40cf46d9746d 3300 _XL = _B;
abegaichi 0:40cf46d9746d 3301 break;
abegaichi 0:40cf46d9746d 3302 case 0x69: // LD LX, C
abegaichi 0:40cf46d9746d 3303 _XL = _C;
abegaichi 0:40cf46d9746d 3304 break;
abegaichi 0:40cf46d9746d 3305 case 0x6a: // LD LX, D
abegaichi 0:40cf46d9746d 3306 _XL = _D;
abegaichi 0:40cf46d9746d 3307 break;
abegaichi 0:40cf46d9746d 3308 case 0x6b: // LD LX, E
abegaichi 0:40cf46d9746d 3309 _XL = _E;
abegaichi 0:40cf46d9746d 3310 break;
abegaichi 0:40cf46d9746d 3311 case 0x6c: // LD LX, HX
abegaichi 0:40cf46d9746d 3312 _XL = _XH;
abegaichi 0:40cf46d9746d 3313 break;
abegaichi 0:40cf46d9746d 3314 case 0x6d: // LD LX, LX
abegaichi 0:40cf46d9746d 3315 break;
abegaichi 0:40cf46d9746d 3316 case 0x6e: // LD L, (IX+o)
abegaichi 0:40cf46d9746d 3317 EAX();
abegaichi 0:40cf46d9746d 3318 _L = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3319 break;
abegaichi 0:40cf46d9746d 3320 case 0x6f: // LD LX, A
abegaichi 0:40cf46d9746d 3321 _XL = _A;
abegaichi 0:40cf46d9746d 3322 break;
abegaichi 0:40cf46d9746d 3323 case 0x70: // LD (IX+o), B
abegaichi 0:40cf46d9746d 3324 EAX();
abegaichi 0:40cf46d9746d 3325 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 3326 break;
abegaichi 0:40cf46d9746d 3327 case 0x71: // LD (IX+o), C
abegaichi 0:40cf46d9746d 3328 EAX();
abegaichi 0:40cf46d9746d 3329 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 3330 break;
abegaichi 0:40cf46d9746d 3331 case 0x72: // LD (IX+o), D
abegaichi 0:40cf46d9746d 3332 EAX();
abegaichi 0:40cf46d9746d 3333 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 3334 break;
abegaichi 0:40cf46d9746d 3335 case 0x73: // LD (IX+o), E
abegaichi 0:40cf46d9746d 3336 EAX();
abegaichi 0:40cf46d9746d 3337 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 3338 break;
abegaichi 0:40cf46d9746d 3339 case 0x74: // LD (IX+o), H
abegaichi 0:40cf46d9746d 3340 EAX();
abegaichi 0:40cf46d9746d 3341 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 3342 break;
abegaichi 0:40cf46d9746d 3343 case 0x75: // LD (IX+o), L
abegaichi 0:40cf46d9746d 3344 EAX();
abegaichi 0:40cf46d9746d 3345 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 3346 break;
abegaichi 0:40cf46d9746d 3347 case 0x77: // LD (IX+o), A
abegaichi 0:40cf46d9746d 3348 EAX();
abegaichi 0:40cf46d9746d 3349 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 3350 break;
abegaichi 0:40cf46d9746d 3351 case 0x7c: // LD A, HX
abegaichi 0:40cf46d9746d 3352 _A = _XH;
abegaichi 0:40cf46d9746d 3353 break;
abegaichi 0:40cf46d9746d 3354 case 0x7d: // LD A, LX
abegaichi 0:40cf46d9746d 3355 _A = _XL;
abegaichi 0:40cf46d9746d 3356 break;
abegaichi 0:40cf46d9746d 3357 case 0x7e: // LD A, (IX+o)
abegaichi 0:40cf46d9746d 3358 EAX();
abegaichi 0:40cf46d9746d 3359 _A = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3360 break;
abegaichi 0:40cf46d9746d 3361 case 0x84: // ADD A, HX
abegaichi 0:40cf46d9746d 3362 ADD(_XH);
abegaichi 0:40cf46d9746d 3363 break;
abegaichi 0:40cf46d9746d 3364 case 0x85: // ADD A, LX
abegaichi 0:40cf46d9746d 3365 ADD(_XL);
abegaichi 0:40cf46d9746d 3366 break;
abegaichi 0:40cf46d9746d 3367 case 0x86: // ADD A, (IX+o)
abegaichi 0:40cf46d9746d 3368 EAX();
abegaichi 0:40cf46d9746d 3369 ADD(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3370 break;
abegaichi 0:40cf46d9746d 3371 case 0x8c: // ADC A, HX
abegaichi 0:40cf46d9746d 3372 ADC(_XH);
abegaichi 0:40cf46d9746d 3373 break;
abegaichi 0:40cf46d9746d 3374 case 0x8d: // ADC A, LX
abegaichi 0:40cf46d9746d 3375 ADC(_XL);
abegaichi 0:40cf46d9746d 3376 break;
abegaichi 0:40cf46d9746d 3377 case 0x8e: // ADC A, (IX+o)
abegaichi 0:40cf46d9746d 3378 EAX();
abegaichi 0:40cf46d9746d 3379 ADC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3380 break;
abegaichi 0:40cf46d9746d 3381 case 0x94: // SUB HX
abegaichi 0:40cf46d9746d 3382 SUB(_XH);
abegaichi 0:40cf46d9746d 3383 break;
abegaichi 0:40cf46d9746d 3384 case 0x95: // SUB LX
abegaichi 0:40cf46d9746d 3385 SUB(_XL);
abegaichi 0:40cf46d9746d 3386 break;
abegaichi 0:40cf46d9746d 3387 case 0x96: // SUB (IX+o)
abegaichi 0:40cf46d9746d 3388 EAX();
abegaichi 0:40cf46d9746d 3389 SUB(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3390 break;
abegaichi 0:40cf46d9746d 3391 case 0x9c: // SBC A, HX
abegaichi 0:40cf46d9746d 3392 SBC(_XH);
abegaichi 0:40cf46d9746d 3393 break;
abegaichi 0:40cf46d9746d 3394 case 0x9d: // SBC A, LX
abegaichi 0:40cf46d9746d 3395 SBC(_XL);
abegaichi 0:40cf46d9746d 3396 break;
abegaichi 0:40cf46d9746d 3397 case 0x9e: // SBC A, (IX+o)
abegaichi 0:40cf46d9746d 3398 EAX();
abegaichi 0:40cf46d9746d 3399 SBC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3400 break;
abegaichi 0:40cf46d9746d 3401 case 0xa4: // AND HX
abegaichi 0:40cf46d9746d 3402 AND(_XH);
abegaichi 0:40cf46d9746d 3403 break;
abegaichi 0:40cf46d9746d 3404 case 0xa5: // AND LX
abegaichi 0:40cf46d9746d 3405 AND(_XL);
abegaichi 0:40cf46d9746d 3406 break;
abegaichi 0:40cf46d9746d 3407 case 0xa6: // AND (IX+o)
abegaichi 0:40cf46d9746d 3408 EAX();
abegaichi 0:40cf46d9746d 3409 AND(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3410 break;
abegaichi 0:40cf46d9746d 3411 case 0xac: // XOR HX
abegaichi 0:40cf46d9746d 3412 XOR(_XH);
abegaichi 0:40cf46d9746d 3413 break;
abegaichi 0:40cf46d9746d 3414 case 0xad: // XOR LX
abegaichi 0:40cf46d9746d 3415 XOR(_XL);
abegaichi 0:40cf46d9746d 3416 break;
abegaichi 0:40cf46d9746d 3417 case 0xae: // XOR (IX+o)
abegaichi 0:40cf46d9746d 3418 EAX();
abegaichi 0:40cf46d9746d 3419 XOR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3420 break;
abegaichi 0:40cf46d9746d 3421 case 0xb4: // OR HX
abegaichi 0:40cf46d9746d 3422 OR(_XH);
abegaichi 0:40cf46d9746d 3423 break;
abegaichi 0:40cf46d9746d 3424 case 0xb5: // OR LX
abegaichi 0:40cf46d9746d 3425 OR(_XL);
abegaichi 0:40cf46d9746d 3426 break;
abegaichi 0:40cf46d9746d 3427 case 0xb6: // OR (IX+o)
abegaichi 0:40cf46d9746d 3428 EAX();
abegaichi 0:40cf46d9746d 3429 OR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3430 break;
abegaichi 0:40cf46d9746d 3431 case 0xbc: // CP HX
abegaichi 0:40cf46d9746d 3432 CP(_XH);
abegaichi 0:40cf46d9746d 3433 break;
abegaichi 0:40cf46d9746d 3434 case 0xbd: // CP LX
abegaichi 0:40cf46d9746d 3435 CP(_XL);
abegaichi 0:40cf46d9746d 3436 break;
abegaichi 0:40cf46d9746d 3437 case 0xbe: // CP (IX+o)
abegaichi 0:40cf46d9746d 3438 EAX();
abegaichi 0:40cf46d9746d 3439 CP(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3440 break;
abegaichi 0:40cf46d9746d 3441 case 0xcb: // ** DD CB xx
abegaichi 0:40cf46d9746d 3442 EAX();
abegaichi 0:40cf46d9746d 3443 execute_opXY();
abegaichi 0:40cf46d9746d 3444 break;
abegaichi 0:40cf46d9746d 3445 case 0xe1: // POP IX
abegaichi 0:40cf46d9746d 3446 IX = POP();
abegaichi 0:40cf46d9746d 3447 break;
abegaichi 0:40cf46d9746d 3448
abegaichi 0:40cf46d9746d 3449 case 0xe3: // EX (SP), IX
abegaichi 0:40cf46d9746d 3450 tmp16 = ReadMemory16( SP );
abegaichi 0:40cf46d9746d 3451 WriteMemory16( SP, IX );
abegaichi 0:40cf46d9746d 3452 IX = tmp16;
abegaichi 0:40cf46d9746d 3453 break;
abegaichi 0:40cf46d9746d 3454
abegaichi 0:40cf46d9746d 3455 case 0xe5: // PUSH IX
abegaichi 0:40cf46d9746d 3456 PUSH(IX);
abegaichi 0:40cf46d9746d 3457 break;
abegaichi 0:40cf46d9746d 3458 case 0xe9: // JP (IX)
abegaichi 0:40cf46d9746d 3459 PC = IX;
abegaichi 0:40cf46d9746d 3460 break;
abegaichi 0:40cf46d9746d 3461 case 0xf9: // LD SP, IX
abegaichi 0:40cf46d9746d 3462 SP = IX;
abegaichi 0:40cf46d9746d 3463 break;
abegaichi 0:40cf46d9746d 3464 }
abegaichi 0:40cf46d9746d 3465 }
abegaichi 0:40cf46d9746d 3466 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 3467 /* &#65533;@&#65533;\&#65533;F &#65533;y&#65533;W&#65533;O &#65533;d&#65533;c&#65533;v&#65533;&#65533;&#65533;t&#65533;B&#65533;b&#65533;N&#65533;X */
abegaichi 1:bd86d49d7622 3468 /* &#65533;&#65533; &#65533;&#65533;&#65533;&#65533; */
abegaichi 1:bd86d49d7622 3469 /* &#65533;&#2002;l&#65533;F &#65533;&#65533;&#65533;&#65533; */
abegaichi 0:40cf46d9746d 3470 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 3471 void execute_opED( void )
abegaichi 0:40cf46d9746d 3472 {
abegaichi 0:40cf46d9746d 3473
abegaichi 0:40cf46d9746d 3474 uint8 cmd = Fetch();
abegaichi 0:40cf46d9746d 3475 count -= (int)cc_ed[cmd];
abegaichi 0:40cf46d9746d 3476 _R = (_R & 0x80) | ((_R + 1) & 0x7f);
abegaichi 0:40cf46d9746d 3477
abegaichi 0:40cf46d9746d 3478 switch( cmd ) {
abegaichi 0:40cf46d9746d 3479 case 0x40: // IN B, (C)
abegaichi 0:40cf46d9746d 3480 _B = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 3481 _F = (_F & CF) | SZP[_B];
abegaichi 0:40cf46d9746d 3482 break;
abegaichi 0:40cf46d9746d 3483 case 0x41: // OUT (C), B
abegaichi 0:40cf46d9746d 3484 WriteIO(_C, _B, _B);
abegaichi 0:40cf46d9746d 3485 break;
abegaichi 0:40cf46d9746d 3486 case 0x42: // SBC HL, BC
abegaichi 0:40cf46d9746d 3487 SBC16(BC);
abegaichi 0:40cf46d9746d 3488 break;
abegaichi 0:40cf46d9746d 3489 case 0x43: // LD (w), BC
abegaichi 0:40cf46d9746d 3490 EA = Fetch16();
abegaichi 0:40cf46d9746d 3491 WriteMemory16(EA, BC);
abegaichi 0:40cf46d9746d 3492 break;
abegaichi 0:40cf46d9746d 3493 case 0x44: // NEG
abegaichi 0:40cf46d9746d 3494 NEG();
abegaichi 0:40cf46d9746d 3495 break;
abegaichi 0:40cf46d9746d 3496 case 0x45: // RETN;
abegaichi 0:40cf46d9746d 3497 RETN();
abegaichi 0:40cf46d9746d 3498 break;
abegaichi 0:40cf46d9746d 3499 case 0x46: // IM 0
abegaichi 0:40cf46d9746d 3500 IM = 0;
abegaichi 0:40cf46d9746d 3501 break;
abegaichi 0:40cf46d9746d 3502 case 0x47: // LD I, A
abegaichi 0:40cf46d9746d 3503 _I = _A;
abegaichi 0:40cf46d9746d 3504 break;
abegaichi 0:40cf46d9746d 3505 case 0x48: // IN C, (C)
abegaichi 0:40cf46d9746d 3506 _C = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 3507 _F = (_F & CF) | SZP[_C];
abegaichi 0:40cf46d9746d 3508 break;
abegaichi 0:40cf46d9746d 3509 case 0x49: // OUT (C), C
abegaichi 0:40cf46d9746d 3510 WriteIO(_C, _B, _C);
abegaichi 0:40cf46d9746d 3511 break;
abegaichi 0:40cf46d9746d 3512 case 0x4a: // ADC HL, BC
abegaichi 0:40cf46d9746d 3513 ADC16(BC);
abegaichi 0:40cf46d9746d 3514 break;
abegaichi 0:40cf46d9746d 3515 case 0x4b: // LD BC, (w)
abegaichi 0:40cf46d9746d 3516 EA = Fetch16();
abegaichi 0:40cf46d9746d 3517 BC = ReadMemory16(EA);
abegaichi 0:40cf46d9746d 3518 break;
abegaichi 0:40cf46d9746d 3519 case 0x4c: // NEG
abegaichi 0:40cf46d9746d 3520 NEG();
abegaichi 0:40cf46d9746d 3521 break;
abegaichi 0:40cf46d9746d 3522 case 0x4d: // RETI
abegaichi 0:40cf46d9746d 3523 RETI();
abegaichi 0:40cf46d9746d 3524 break;
abegaichi 0:40cf46d9746d 3525 case 0x4e: // IM 0
abegaichi 0:40cf46d9746d 3526 IM = 0;
abegaichi 0:40cf46d9746d 3527 break;
abegaichi 0:40cf46d9746d 3528 case 0x4f: // LD R, A
abegaichi 0:40cf46d9746d 3529 _R = _A;
abegaichi 0:40cf46d9746d 3530 break;
abegaichi 0:40cf46d9746d 3531 case 0x50: // IN D, (C)
abegaichi 0:40cf46d9746d 3532 _D = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 3533 _F = (_F & CF) | SZP[_D];
abegaichi 0:40cf46d9746d 3534 break;
abegaichi 0:40cf46d9746d 3535 case 0x51: // OUT (C), D
abegaichi 0:40cf46d9746d 3536 WriteIO(_C, _B, _D);
abegaichi 0:40cf46d9746d 3537 break;
abegaichi 0:40cf46d9746d 3538 case 0x52: // SBC HL, DE
abegaichi 0:40cf46d9746d 3539 SBC16(DE);
abegaichi 0:40cf46d9746d 3540 break;
abegaichi 0:40cf46d9746d 3541 case 0x53: // LD (w), DE
abegaichi 0:40cf46d9746d 3542 EA = Fetch16();
abegaichi 0:40cf46d9746d 3543 WriteMemory16(EA, DE);
abegaichi 0:40cf46d9746d 3544 break;
abegaichi 0:40cf46d9746d 3545 case 0x54: // NEG
abegaichi 0:40cf46d9746d 3546 NEG();
abegaichi 0:40cf46d9746d 3547 break;
abegaichi 0:40cf46d9746d 3548 case 0x55: // RETN;
abegaichi 0:40cf46d9746d 3549 RETN();
abegaichi 0:40cf46d9746d 3550 break;
abegaichi 0:40cf46d9746d 3551 case 0x56: // IM 1
abegaichi 0:40cf46d9746d 3552 IM = 1;
abegaichi 0:40cf46d9746d 3553 break;
abegaichi 0:40cf46d9746d 3554 case 0x57: // LD A, I
abegaichi 0:40cf46d9746d 3555 _A = _I;
abegaichi 0:40cf46d9746d 3556 _F = (_F & CF) | SZ[_A] | (IFF2 << 2);
abegaichi 0:40cf46d9746d 3557 break;
abegaichi 0:40cf46d9746d 3558 case 0x58: // IN E, (C)
abegaichi 0:40cf46d9746d 3559 _E = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 3560 _F = (_F & CF) | SZP[_E];
abegaichi 0:40cf46d9746d 3561 break;
abegaichi 0:40cf46d9746d 3562 case 0x59: // OUT (C), E
abegaichi 0:40cf46d9746d 3563 WriteIO(_C, _B, _E);
abegaichi 0:40cf46d9746d 3564 break;
abegaichi 0:40cf46d9746d 3565 case 0x5a: // ADC HL, DE
abegaichi 0:40cf46d9746d 3566 ADC16(DE);
abegaichi 0:40cf46d9746d 3567 break;
abegaichi 0:40cf46d9746d 3568 case 0x5b: // LD DE, (w)
abegaichi 0:40cf46d9746d 3569 EA = Fetch16();
abegaichi 0:40cf46d9746d 3570 DE = ReadMemory16(EA);
abegaichi 0:40cf46d9746d 3571 break;
abegaichi 0:40cf46d9746d 3572 case 0x5c: // NEG
abegaichi 0:40cf46d9746d 3573 NEG();
abegaichi 0:40cf46d9746d 3574 break;
abegaichi 0:40cf46d9746d 3575 case 0x5d: // RETI
abegaichi 0:40cf46d9746d 3576 RETI();
abegaichi 0:40cf46d9746d 3577 break;
abegaichi 0:40cf46d9746d 3578 case 0x5e: // IM 2
abegaichi 0:40cf46d9746d 3579 IM = 2;
abegaichi 0:40cf46d9746d 3580 break;
abegaichi 0:40cf46d9746d 3581 case 0x5f: // LD A, R
abegaichi 0:40cf46d9746d 3582 _A = _R;
abegaichi 0:40cf46d9746d 3583 _F = (_F & CF) | SZ[_A] | (IFF2 << 2);
abegaichi 0:40cf46d9746d 3584 break;
abegaichi 0:40cf46d9746d 3585 case 0x60: // IN H, (C)
abegaichi 0:40cf46d9746d 3586 _H = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 3587 _F = (_F & CF) | SZP[_H];
abegaichi 0:40cf46d9746d 3588 break;
abegaichi 0:40cf46d9746d 3589 case 0x61: // OUT (C), H
abegaichi 0:40cf46d9746d 3590 WriteIO(_C, _B, _H);
abegaichi 0:40cf46d9746d 3591 break;
abegaichi 0:40cf46d9746d 3592 case 0x62: // SBC HL, HL
abegaichi 0:40cf46d9746d 3593 SBC16(HL);
abegaichi 0:40cf46d9746d 3594 break;
abegaichi 0:40cf46d9746d 3595 case 0x63: // LD (w), HL
abegaichi 0:40cf46d9746d 3596 EA = Fetch16();
abegaichi 0:40cf46d9746d 3597 WriteMemory16(EA, HL);
abegaichi 0:40cf46d9746d 3598 break;
abegaichi 0:40cf46d9746d 3599 case 0x64: // NEG
abegaichi 0:40cf46d9746d 3600 NEG();
abegaichi 0:40cf46d9746d 3601 break;
abegaichi 0:40cf46d9746d 3602 case 0x65: // RETN;
abegaichi 0:40cf46d9746d 3603 RETN();
abegaichi 0:40cf46d9746d 3604 break;
abegaichi 0:40cf46d9746d 3605 case 0x66: // IM 0
abegaichi 0:40cf46d9746d 3606 IM = 0;
abegaichi 0:40cf46d9746d 3607 break;
abegaichi 0:40cf46d9746d 3608 case 0x67: // RRD (HL)
abegaichi 0:40cf46d9746d 3609 RRD();
abegaichi 0:40cf46d9746d 3610 break;
abegaichi 0:40cf46d9746d 3611 case 0x68: // IN L, (C)
abegaichi 0:40cf46d9746d 3612 _L = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 3613 _F = (_F & CF) | SZP[_L];
abegaichi 0:40cf46d9746d 3614 break;
abegaichi 0:40cf46d9746d 3615 case 0x69: // OUT (C), L
abegaichi 0:40cf46d9746d 3616 WriteIO(_C, _B, _L);
abegaichi 0:40cf46d9746d 3617 break;
abegaichi 0:40cf46d9746d 3618 case 0x6a: // ADC HL, HL
abegaichi 0:40cf46d9746d 3619 ADC16(HL);
abegaichi 0:40cf46d9746d 3620 break;
abegaichi 0:40cf46d9746d 3621 case 0x6b: // LD HL, (w)
abegaichi 0:40cf46d9746d 3622 EA = Fetch16();
abegaichi 0:40cf46d9746d 3623 HL = ReadMemory16(EA);
abegaichi 0:40cf46d9746d 3624 break;
abegaichi 0:40cf46d9746d 3625 case 0x6c: // NEG
abegaichi 0:40cf46d9746d 3626 NEG();
abegaichi 0:40cf46d9746d 3627 break;
abegaichi 0:40cf46d9746d 3628 case 0x6d: // RETI
abegaichi 0:40cf46d9746d 3629 RETI();
abegaichi 0:40cf46d9746d 3630 break;
abegaichi 0:40cf46d9746d 3631 case 0x6e: // IM 0
abegaichi 0:40cf46d9746d 3632 IM = 0;
abegaichi 0:40cf46d9746d 3633 break;
abegaichi 0:40cf46d9746d 3634 case 0x6f: // RLD (HL)
abegaichi 0:40cf46d9746d 3635 RLD();
abegaichi 0:40cf46d9746d 3636 break;
abegaichi 0:40cf46d9746d 3637 case 0x70: // IN 0, (C)
abegaichi 0:40cf46d9746d 3638 _F = (_F & CF) | SZP[ReadIO(_C, _B)];
abegaichi 0:40cf46d9746d 3639 break;
abegaichi 0:40cf46d9746d 3640 case 0x71: // OUT (C), 0
abegaichi 0:40cf46d9746d 3641 WriteIO(_C, _B, 0);
abegaichi 0:40cf46d9746d 3642 break;
abegaichi 0:40cf46d9746d 3643 case 0x72: // SBC HL, SP
abegaichi 0:40cf46d9746d 3644 SBC16(SP);
abegaichi 0:40cf46d9746d 3645 break;
abegaichi 0:40cf46d9746d 3646 case 0x73: // LD (w), SP
abegaichi 0:40cf46d9746d 3647 EA = Fetch16();
abegaichi 0:40cf46d9746d 3648 WriteMemory16(EA, SP);
abegaichi 0:40cf46d9746d 3649 break;
abegaichi 0:40cf46d9746d 3650 case 0x74: // NEG
abegaichi 0:40cf46d9746d 3651 NEG();
abegaichi 0:40cf46d9746d 3652 break;
abegaichi 0:40cf46d9746d 3653 case 0x75: // RETN;
abegaichi 0:40cf46d9746d 3654 RETN();
abegaichi 0:40cf46d9746d 3655 break;
abegaichi 0:40cf46d9746d 3656 case 0x76: // IM 1
abegaichi 0:40cf46d9746d 3657 IM = 1;
abegaichi 0:40cf46d9746d 3658 break;
abegaichi 0:40cf46d9746d 3659 case 0x78: // IN E, (C)
abegaichi 0:40cf46d9746d 3660 _A = ReadIO(_C, _B);
abegaichi 0:40cf46d9746d 3661 _F = (_F & CF) | SZP[_A];
abegaichi 0:40cf46d9746d 3662 break;
abegaichi 0:40cf46d9746d 3663 case 0x79: // OUT (C), E
abegaichi 0:40cf46d9746d 3664 WriteIO(_C, _B, _A);
abegaichi 0:40cf46d9746d 3665 break;
abegaichi 0:40cf46d9746d 3666 case 0x7a: // ADC HL, SP
abegaichi 0:40cf46d9746d 3667 ADC16(SP);
abegaichi 0:40cf46d9746d 3668 break;
abegaichi 0:40cf46d9746d 3669 case 0x7b: // LD SP, (w)
abegaichi 0:40cf46d9746d 3670 EA = ReadMemory16(PC);
abegaichi 0:40cf46d9746d 3671 PC += 2;
abegaichi 0:40cf46d9746d 3672 SP = ReadMemory16(EA);
abegaichi 0:40cf46d9746d 3673 break;
abegaichi 0:40cf46d9746d 3674 case 0x7c: // NEG
abegaichi 0:40cf46d9746d 3675 NEG();
abegaichi 0:40cf46d9746d 3676 break;
abegaichi 0:40cf46d9746d 3677 case 0x7d: // RETI
abegaichi 0:40cf46d9746d 3678 RETI();
abegaichi 0:40cf46d9746d 3679 break;
abegaichi 0:40cf46d9746d 3680 case 0x7e: // IM 2
abegaichi 0:40cf46d9746d 3681 IM = 2;
abegaichi 0:40cf46d9746d 3682 break;
abegaichi 0:40cf46d9746d 3683 case 0xa0: // LDI
abegaichi 0:40cf46d9746d 3684 LDI();
abegaichi 0:40cf46d9746d 3685 break;
abegaichi 0:40cf46d9746d 3686 case 0xa1: // CPI
abegaichi 0:40cf46d9746d 3687 CPI();
abegaichi 0:40cf46d9746d 3688 break;
abegaichi 0:40cf46d9746d 3689 case 0xa2: // INI
abegaichi 0:40cf46d9746d 3690 INI();
abegaichi 0:40cf46d9746d 3691 break;
abegaichi 0:40cf46d9746d 3692 case 0xa3: // OUTI
abegaichi 0:40cf46d9746d 3693 OUTI();
abegaichi 0:40cf46d9746d 3694 break;
abegaichi 0:40cf46d9746d 3695 case 0xa8: // LDD
abegaichi 0:40cf46d9746d 3696 LDD();
abegaichi 0:40cf46d9746d 3697 break;
abegaichi 0:40cf46d9746d 3698 case 0xa9: // CPD
abegaichi 0:40cf46d9746d 3699 CPD();
abegaichi 0:40cf46d9746d 3700 break;
abegaichi 0:40cf46d9746d 3701 case 0xaa: // IND
abegaichi 0:40cf46d9746d 3702 IND();
abegaichi 0:40cf46d9746d 3703 break;
abegaichi 0:40cf46d9746d 3704 case 0xab: // OUTD
abegaichi 0:40cf46d9746d 3705 OUTD();
abegaichi 0:40cf46d9746d 3706 break;
abegaichi 0:40cf46d9746d 3707 case 0xb0: // LDIR
abegaichi 0:40cf46d9746d 3708 LDIR();
abegaichi 0:40cf46d9746d 3709 break;
abegaichi 0:40cf46d9746d 3710 case 0xb1: // CPIR
abegaichi 0:40cf46d9746d 3711 CPIR();
abegaichi 0:40cf46d9746d 3712 break;
abegaichi 0:40cf46d9746d 3713 case 0xb2: // INIR
abegaichi 0:40cf46d9746d 3714 INIR();
abegaichi 0:40cf46d9746d 3715 break;
abegaichi 0:40cf46d9746d 3716 case 0xb3: // OTIR
abegaichi 0:40cf46d9746d 3717 OTIR();
abegaichi 0:40cf46d9746d 3718 break;
abegaichi 0:40cf46d9746d 3719 case 0xb8: // LDDR
abegaichi 0:40cf46d9746d 3720 LDDR();
abegaichi 0:40cf46d9746d 3721 break;
abegaichi 0:40cf46d9746d 3722 case 0xb9: // CPDR
abegaichi 0:40cf46d9746d 3723 CPDR();
abegaichi 0:40cf46d9746d 3724 break;
abegaichi 0:40cf46d9746d 3725 case 0xba: // INDR
abegaichi 0:40cf46d9746d 3726 INDR();
abegaichi 0:40cf46d9746d 3727 break;
abegaichi 0:40cf46d9746d 3728 case 0xbb: // OTDR
abegaichi 0:40cf46d9746d 3729 OTDR();
abegaichi 0:40cf46d9746d 3730 break;
abegaichi 0:40cf46d9746d 3731
abegaichi 1:bd86d49d7622 3732 //////
abegaichi 0:40cf46d9746d 3733 case 0xe0: case 0xe1: case 0xe2: case 0xe3: case 0xe4: case 0xe5: case 0xe6: case 0xe7:
abegaichi 0:40cf46d9746d 3734 case 0xe8: case 0xe9: case 0xea: case 0xeb: case 0xec: case 0xed: case 0xee: case 0xef:
abegaichi 0:40cf46d9746d 3735 case 0xf0: case 0xf1: case 0xf2: case 0xf3: case 0xf4: case 0xf5: case 0xf6: case 0xf7:
abegaichi 0:40cf46d9746d 3736 case 0xf8:
abegaichi 0:40cf46d9746d 3737 break;
abegaichi 0:40cf46d9746d 3738
abegaichi 0:40cf46d9746d 3739
abegaichi 0:40cf46d9746d 3740 case 0xfe:
abegaichi 0:40cf46d9746d 3741 break;
abegaichi 0:40cf46d9746d 3742
abegaichi 0:40cf46d9746d 3743 case 0xff:
abegaichi 0:40cf46d9746d 3744 break;
abegaichi 0:40cf46d9746d 3745 }
abegaichi 0:40cf46d9746d 3746 }
abegaichi 0:40cf46d9746d 3747 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 3748 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 3749 void execute_opFD( void )
abegaichi 0:40cf46d9746d 3750 {
abegaichi 0:40cf46d9746d 3751 uint16 tmp16;
abegaichi 0:40cf46d9746d 3752
abegaichi 0:40cf46d9746d 3753
abegaichi 0:40cf46d9746d 3754 uint8 cmd = Fetch();
abegaichi 0:40cf46d9746d 3755 count -= (int)cc_xy[cmd];
abegaichi 0:40cf46d9746d 3756 _R = (_R & 0x80) | ((_R + 1) & 0x7f);
abegaichi 0:40cf46d9746d 3757
abegaichi 0:40cf46d9746d 3758 switch( cmd ) {
abegaichi 0:40cf46d9746d 3759 case 0x09: // ADD IY, BC
abegaichi 0:40cf46d9746d 3760 IY = ADD16(IY, BC);
abegaichi 0:40cf46d9746d 3761 break;
abegaichi 0:40cf46d9746d 3762 case 0x19: // ADD IY, DE
abegaichi 0:40cf46d9746d 3763 IY = ADD16(IY, DE);
abegaichi 0:40cf46d9746d 3764 break;
abegaichi 0:40cf46d9746d 3765 case 0x21: // LD IY, w
abegaichi 0:40cf46d9746d 3766 IY = ReadMemory16(PC);
abegaichi 0:40cf46d9746d 3767 PC += 2;
abegaichi 0:40cf46d9746d 3768 break;
abegaichi 0:40cf46d9746d 3769 case 0x22: // LD (w), IY
abegaichi 0:40cf46d9746d 3770 EA = ReadMemory16(PC);
abegaichi 0:40cf46d9746d 3771 PC += 2;
abegaichi 0:40cf46d9746d 3772 WriteMemory16(EA, IY);
abegaichi 0:40cf46d9746d 3773 break;
abegaichi 0:40cf46d9746d 3774 case 0x23: // INC IY
abegaichi 0:40cf46d9746d 3775 IY++;
abegaichi 0:40cf46d9746d 3776 break;
abegaichi 0:40cf46d9746d 3777 case 0x24: // INC HY
abegaichi 0:40cf46d9746d 3778 _YH = INC(_YH);
abegaichi 0:40cf46d9746d 3779 break;
abegaichi 0:40cf46d9746d 3780 case 0x25: // DEC HY
abegaichi 0:40cf46d9746d 3781 _YH = DEC(_YH);
abegaichi 0:40cf46d9746d 3782 break;
abegaichi 0:40cf46d9746d 3783 case 0x26: // LD HY, n
abegaichi 0:40cf46d9746d 3784 _YH = Fetch();
abegaichi 0:40cf46d9746d 3785 break;
abegaichi 0:40cf46d9746d 3786 case 0x29: // ADD IY, IY
abegaichi 0:40cf46d9746d 3787 IY = ADD16(IY, IY);
abegaichi 0:40cf46d9746d 3788 break;
abegaichi 0:40cf46d9746d 3789 case 0x2a: // LD IY, (w)
abegaichi 0:40cf46d9746d 3790 EA = ReadMemory16(PC);
abegaichi 0:40cf46d9746d 3791 PC += 2;
abegaichi 0:40cf46d9746d 3792 IY = ReadMemory16(EA);
abegaichi 0:40cf46d9746d 3793 break;
abegaichi 0:40cf46d9746d 3794 case 0x2b: // DEC IY
abegaichi 0:40cf46d9746d 3795 IY--;
abegaichi 0:40cf46d9746d 3796 break;
abegaichi 0:40cf46d9746d 3797 case 0x2c: // INC LY
abegaichi 0:40cf46d9746d 3798 _YL = INC(_YL);
abegaichi 0:40cf46d9746d 3799 break;
abegaichi 0:40cf46d9746d 3800 case 0x2d: // DEC LY
abegaichi 0:40cf46d9746d 3801 _YL = DEC(_YL);
abegaichi 0:40cf46d9746d 3802 break;
abegaichi 0:40cf46d9746d 3803 case 0x2e: // LD LY, n
abegaichi 0:40cf46d9746d 3804 _YL = Fetch();
abegaichi 0:40cf46d9746d 3805 break;
abegaichi 0:40cf46d9746d 3806 case 0x34: // INC (IY+o)
abegaichi 0:40cf46d9746d 3807 EAY();
abegaichi 0:40cf46d9746d 3808 WriteMemory(EA, INC(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 3809 break;
abegaichi 0:40cf46d9746d 3810 case 0x35: // DEC (IY+o)
abegaichi 0:40cf46d9746d 3811 EAY();
abegaichi 0:40cf46d9746d 3812 WriteMemory(EA, DEC(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 3813 break;
abegaichi 0:40cf46d9746d 3814 case 0x36: // LD (IY+o), n
abegaichi 0:40cf46d9746d 3815 EAY();
abegaichi 0:40cf46d9746d 3816 WriteMemory(EA, Fetch());
abegaichi 0:40cf46d9746d 3817 break;
abegaichi 0:40cf46d9746d 3818 case 0x39: // ADD IY, SP
abegaichi 0:40cf46d9746d 3819 IY = ADD16(IY, SP);
abegaichi 0:40cf46d9746d 3820 break;
abegaichi 0:40cf46d9746d 3821 case 0x44: // LD B, HY
abegaichi 0:40cf46d9746d 3822 _B = _YH;
abegaichi 0:40cf46d9746d 3823 break;
abegaichi 0:40cf46d9746d 3824 case 0x45: // LD B, LY
abegaichi 0:40cf46d9746d 3825 _B = _YL;
abegaichi 0:40cf46d9746d 3826 break;
abegaichi 0:40cf46d9746d 3827 case 0x46: // LD B, (IY+o)
abegaichi 0:40cf46d9746d 3828 EAY();
abegaichi 0:40cf46d9746d 3829 _B = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3830 break;
abegaichi 0:40cf46d9746d 3831 case 0x4c: // LD C, HY
abegaichi 0:40cf46d9746d 3832 _C = _YH;
abegaichi 0:40cf46d9746d 3833 break;
abegaichi 0:40cf46d9746d 3834 case 0x4d: // LD C, LY
abegaichi 0:40cf46d9746d 3835 _C = _YL;
abegaichi 0:40cf46d9746d 3836 break;
abegaichi 0:40cf46d9746d 3837 case 0x4e: // LD C, (IY+o)
abegaichi 0:40cf46d9746d 3838 EAY();
abegaichi 0:40cf46d9746d 3839 _C = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3840 break;
abegaichi 0:40cf46d9746d 3841 case 0x54: // LD D, HY
abegaichi 0:40cf46d9746d 3842 _D = _YH;
abegaichi 0:40cf46d9746d 3843 break;
abegaichi 0:40cf46d9746d 3844 case 0x55: // LD D, LY
abegaichi 0:40cf46d9746d 3845 _D = _YL;
abegaichi 0:40cf46d9746d 3846 break;
abegaichi 0:40cf46d9746d 3847 case 0x56: // LD D, (IY+o)
abegaichi 0:40cf46d9746d 3848 EAY();
abegaichi 0:40cf46d9746d 3849 _D = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3850 break;
abegaichi 0:40cf46d9746d 3851 case 0x5c: // LD E, HY
abegaichi 0:40cf46d9746d 3852 _E = _YH;
abegaichi 0:40cf46d9746d 3853 break;
abegaichi 0:40cf46d9746d 3854 case 0x5d: // LD E, LY
abegaichi 0:40cf46d9746d 3855 _E = _YL;
abegaichi 0:40cf46d9746d 3856 break;
abegaichi 0:40cf46d9746d 3857 case 0x5e: // LD E, (IY+o)
abegaichi 0:40cf46d9746d 3858 EAY();
abegaichi 0:40cf46d9746d 3859 _E = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3860 break;
abegaichi 0:40cf46d9746d 3861 case 0x60: // LD HY, B
abegaichi 0:40cf46d9746d 3862 _YH = _B;
abegaichi 0:40cf46d9746d 3863 break;
abegaichi 0:40cf46d9746d 3864 case 0x61: // LD HY, C
abegaichi 0:40cf46d9746d 3865 _YH = _C;
abegaichi 0:40cf46d9746d 3866 break;
abegaichi 0:40cf46d9746d 3867 case 0x62: // LD HY, D
abegaichi 0:40cf46d9746d 3868 _YH = _D;
abegaichi 0:40cf46d9746d 3869 break;
abegaichi 0:40cf46d9746d 3870 case 0x63: // LD HY, E
abegaichi 0:40cf46d9746d 3871 _YH = _E;
abegaichi 0:40cf46d9746d 3872 break;
abegaichi 0:40cf46d9746d 3873 case 0x64: // LD HY, HY
abegaichi 0:40cf46d9746d 3874 break;
abegaichi 0:40cf46d9746d 3875 case 0x65: // LD HY, LY
abegaichi 0:40cf46d9746d 3876 _YH = _YL;
abegaichi 0:40cf46d9746d 3877 break;
abegaichi 0:40cf46d9746d 3878 case 0x66: // LD H, (IY+o)
abegaichi 0:40cf46d9746d 3879 EAY();
abegaichi 0:40cf46d9746d 3880 _H = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3881 break;
abegaichi 0:40cf46d9746d 3882 case 0x67: // LD HY, A
abegaichi 0:40cf46d9746d 3883 _YH = _A;
abegaichi 0:40cf46d9746d 3884 break;
abegaichi 0:40cf46d9746d 3885 case 0x68: // LD LY, B
abegaichi 0:40cf46d9746d 3886 _YL = _B;
abegaichi 0:40cf46d9746d 3887 break;
abegaichi 0:40cf46d9746d 3888 case 0x69: // LD LY, C
abegaichi 0:40cf46d9746d 3889 _YL = _C;
abegaichi 0:40cf46d9746d 3890 break;
abegaichi 0:40cf46d9746d 3891 case 0x6a: // LD LY, D
abegaichi 0:40cf46d9746d 3892 _YL = _D;
abegaichi 0:40cf46d9746d 3893 break;
abegaichi 0:40cf46d9746d 3894 case 0x6b: // LD LY, E
abegaichi 0:40cf46d9746d 3895 _YL = _E;
abegaichi 0:40cf46d9746d 3896 break;
abegaichi 0:40cf46d9746d 3897 case 0x6c: // LD LY, HY
abegaichi 0:40cf46d9746d 3898 _YL = _YH;
abegaichi 0:40cf46d9746d 3899 break;
abegaichi 0:40cf46d9746d 3900 case 0x6d: // LD LY, LY
abegaichi 0:40cf46d9746d 3901 break;
abegaichi 0:40cf46d9746d 3902 case 0x6e: // LD L, (IY+o)
abegaichi 0:40cf46d9746d 3903 EAY();
abegaichi 0:40cf46d9746d 3904 _L = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3905 break;
abegaichi 0:40cf46d9746d 3906 case 0x6f: // LD LY, A
abegaichi 0:40cf46d9746d 3907 _YL = _A;
abegaichi 0:40cf46d9746d 3908 break;
abegaichi 0:40cf46d9746d 3909 case 0x70: // LD (IY+o), B
abegaichi 0:40cf46d9746d 3910 EAY();
abegaichi 0:40cf46d9746d 3911 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 3912 break;
abegaichi 0:40cf46d9746d 3913 case 0x71: // LD (IY+o), C
abegaichi 0:40cf46d9746d 3914 EAY();
abegaichi 0:40cf46d9746d 3915 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 3916 break;
abegaichi 0:40cf46d9746d 3917 case 0x72: // LD (IY+o), D
abegaichi 0:40cf46d9746d 3918 EAY();
abegaichi 0:40cf46d9746d 3919 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 3920 break;
abegaichi 0:40cf46d9746d 3921 case 0x73: // LD (IY+o), E
abegaichi 0:40cf46d9746d 3922 EAY();
abegaichi 0:40cf46d9746d 3923 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 3924 break;
abegaichi 0:40cf46d9746d 3925 case 0x74: // LD (IY+o), H
abegaichi 0:40cf46d9746d 3926 EAY();
abegaichi 0:40cf46d9746d 3927 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 3928 break;
abegaichi 0:40cf46d9746d 3929 case 0x75: // LD (IY+o), L
abegaichi 0:40cf46d9746d 3930 EAY();
abegaichi 0:40cf46d9746d 3931 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 3932 break;
abegaichi 0:40cf46d9746d 3933 case 0x77: // LD (IY+o), A
abegaichi 0:40cf46d9746d 3934 EAY();
abegaichi 0:40cf46d9746d 3935 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 3936 break;
abegaichi 0:40cf46d9746d 3937 case 0x7c: // LD A, HY
abegaichi 0:40cf46d9746d 3938 _A = _YH;
abegaichi 0:40cf46d9746d 3939 break;
abegaichi 0:40cf46d9746d 3940 case 0x7d: // LD A, LY
abegaichi 0:40cf46d9746d 3941 _A = _YL;
abegaichi 0:40cf46d9746d 3942 break;
abegaichi 0:40cf46d9746d 3943 case 0x7e: // LD A, (IY+o)
abegaichi 0:40cf46d9746d 3944 EAY();
abegaichi 0:40cf46d9746d 3945 _A = ReadMemory(EA);
abegaichi 0:40cf46d9746d 3946 break;
abegaichi 0:40cf46d9746d 3947 case 0x84: // ADD A, HY
abegaichi 0:40cf46d9746d 3948 ADD(_YH);
abegaichi 0:40cf46d9746d 3949 break;
abegaichi 0:40cf46d9746d 3950 case 0x85: // ADD A, LY
abegaichi 0:40cf46d9746d 3951 ADD(_YL);
abegaichi 0:40cf46d9746d 3952 break;
abegaichi 0:40cf46d9746d 3953 case 0x86: // ADD A, (IY+o)
abegaichi 0:40cf46d9746d 3954 EAY();
abegaichi 0:40cf46d9746d 3955 ADD(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3956 break;
abegaichi 0:40cf46d9746d 3957 case 0x8c: // ADC A, HY
abegaichi 0:40cf46d9746d 3958 ADC(_YH);
abegaichi 0:40cf46d9746d 3959 break;
abegaichi 0:40cf46d9746d 3960 case 0x8d: // ADC A, LY
abegaichi 0:40cf46d9746d 3961 ADC(_YL);
abegaichi 0:40cf46d9746d 3962 break;
abegaichi 0:40cf46d9746d 3963 case 0x8e: // ADC A, (IY+o)
abegaichi 0:40cf46d9746d 3964 EAY();
abegaichi 0:40cf46d9746d 3965 ADC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3966 break;
abegaichi 0:40cf46d9746d 3967 case 0x94: // SUB HY
abegaichi 0:40cf46d9746d 3968 SUB(_YH);
abegaichi 0:40cf46d9746d 3969 break;
abegaichi 0:40cf46d9746d 3970 case 0x95: // SUB LY
abegaichi 0:40cf46d9746d 3971 SUB(_YL);
abegaichi 0:40cf46d9746d 3972 break;
abegaichi 0:40cf46d9746d 3973 case 0x96: // SUB (IY+o)
abegaichi 0:40cf46d9746d 3974 EAY();
abegaichi 0:40cf46d9746d 3975 SUB(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3976 break;
abegaichi 0:40cf46d9746d 3977 case 0x9c: // SBC A, HY
abegaichi 0:40cf46d9746d 3978 SBC(_YH);
abegaichi 0:40cf46d9746d 3979 break;
abegaichi 0:40cf46d9746d 3980 case 0x9d: // SBC A, LY
abegaichi 0:40cf46d9746d 3981 SBC(_YL);
abegaichi 0:40cf46d9746d 3982 break;
abegaichi 0:40cf46d9746d 3983 case 0x9e: // SBC A, (IY+o)
abegaichi 0:40cf46d9746d 3984 EAY();
abegaichi 0:40cf46d9746d 3985 SBC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3986 break;
abegaichi 0:40cf46d9746d 3987 case 0xa4: // AND HY
abegaichi 0:40cf46d9746d 3988 AND(_YH);
abegaichi 0:40cf46d9746d 3989 break;
abegaichi 0:40cf46d9746d 3990 case 0xa5: // AND LY
abegaichi 0:40cf46d9746d 3991 AND(_YL);
abegaichi 0:40cf46d9746d 3992 break;
abegaichi 0:40cf46d9746d 3993 case 0xa6: // AND (IY+o)
abegaichi 0:40cf46d9746d 3994 EAY();
abegaichi 0:40cf46d9746d 3995 AND(ReadMemory(EA));
abegaichi 0:40cf46d9746d 3996 break;
abegaichi 0:40cf46d9746d 3997 case 0xac: // XOR HY
abegaichi 0:40cf46d9746d 3998 XOR(_YH);
abegaichi 0:40cf46d9746d 3999 break;
abegaichi 0:40cf46d9746d 4000 case 0xad: // XOR LY
abegaichi 0:40cf46d9746d 4001 XOR(_YL);
abegaichi 0:40cf46d9746d 4002 break;
abegaichi 0:40cf46d9746d 4003 case 0xae: // XOR (IY+o)
abegaichi 0:40cf46d9746d 4004 EAY();
abegaichi 0:40cf46d9746d 4005 XOR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4006 break;
abegaichi 0:40cf46d9746d 4007 case 0xb4: // OR HY
abegaichi 0:40cf46d9746d 4008 OR(_YH);
abegaichi 0:40cf46d9746d 4009 break;
abegaichi 0:40cf46d9746d 4010 case 0xb5: // OR LY
abegaichi 0:40cf46d9746d 4011 OR(_YL);
abegaichi 0:40cf46d9746d 4012 break;
abegaichi 0:40cf46d9746d 4013 case 0xb6: // OR (IY+o)
abegaichi 0:40cf46d9746d 4014 EAY();
abegaichi 0:40cf46d9746d 4015 OR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4016 break;
abegaichi 0:40cf46d9746d 4017 case 0xbc: // CP HY
abegaichi 0:40cf46d9746d 4018 CP(_YH);
abegaichi 0:40cf46d9746d 4019 break;
abegaichi 0:40cf46d9746d 4020 case 0xbd: // CP LY
abegaichi 0:40cf46d9746d 4021 CP(_YL);
abegaichi 0:40cf46d9746d 4022 break;
abegaichi 0:40cf46d9746d 4023 case 0xbe: // CP (IY+o)
abegaichi 0:40cf46d9746d 4024 EAY();
abegaichi 0:40cf46d9746d 4025 CP(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4026 break;
abegaichi 0:40cf46d9746d 4027 case 0xcb: // ** FD CB xx
abegaichi 0:40cf46d9746d 4028 EAY();
abegaichi 0:40cf46d9746d 4029 execute_opXY();
abegaichi 0:40cf46d9746d 4030 break;
abegaichi 0:40cf46d9746d 4031
abegaichi 0:40cf46d9746d 4032 case 0xe1: // POP IY
abegaichi 0:40cf46d9746d 4033 IY = POP();
abegaichi 0:40cf46d9746d 4034 break;
abegaichi 0:40cf46d9746d 4035
abegaichi 0:40cf46d9746d 4036 case 0xe3: // EX (SP), IY
abegaichi 0:40cf46d9746d 4037 tmp16 = ReadMemory16( SP );
abegaichi 0:40cf46d9746d 4038 WriteMemory16( SP, IY );
abegaichi 0:40cf46d9746d 4039 IY = tmp16;
abegaichi 0:40cf46d9746d 4040 break;
abegaichi 0:40cf46d9746d 4041
abegaichi 0:40cf46d9746d 4042 case 0xe5: // PUSH IY
abegaichi 0:40cf46d9746d 4043 PUSH(IY);
abegaichi 0:40cf46d9746d 4044 break;
abegaichi 0:40cf46d9746d 4045
abegaichi 0:40cf46d9746d 4046 case 0xe9: // JP (IY)
abegaichi 0:40cf46d9746d 4047 PC = IY;
abegaichi 0:40cf46d9746d 4048 break;
abegaichi 0:40cf46d9746d 4049 case 0xf9: // LD SP, IY
abegaichi 0:40cf46d9746d 4050 SP = IY;
abegaichi 0:40cf46d9746d 4051 break;
abegaichi 0:40cf46d9746d 4052 }
abegaichi 0:40cf46d9746d 4053 }
abegaichi 0:40cf46d9746d 4054 /*----------------------------------------------------------------------*/
abegaichi 1:bd86d49d7622 4055 /* &#65533;@&#65533;\&#65533;F &#65533;y&#65533;W&#65533;O DD(FD),CB &#65533;v&#65533;&#65533;&#65533;t&#65533;B&#65533;b&#65533;N&#65533;X */
abegaichi 1:bd86d49d7622 4056 /* &#65533;&#65533; &#65533;&#65533;&#65533;&#65533; */
abegaichi 1:bd86d49d7622 4057 /* &#65533;&#2002;l&#65533;F &#65533;&#65533;&#65533;&#65533; */
abegaichi 0:40cf46d9746d 4058 /*----------------------------------------------------------------------*/
abegaichi 0:40cf46d9746d 4059 void execute_opXY( void )
abegaichi 0:40cf46d9746d 4060 {
abegaichi 0:40cf46d9746d 4061
abegaichi 0:40cf46d9746d 4062 uint8 cmd = Fetch();
abegaichi 0:40cf46d9746d 4063 count -= (int)cc_xy[cmd];
abegaichi 0:40cf46d9746d 4064 _R = (_R & 0x80) | ((_R + 1) & 0x7f);
abegaichi 0:40cf46d9746d 4065
abegaichi 0:40cf46d9746d 4066 switch( cmd ) {
abegaichi 0:40cf46d9746d 4067 case 0x00: // RLC B=(XY+o)
abegaichi 0:40cf46d9746d 4068 _B = RLC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4069 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4070 break;
abegaichi 0:40cf46d9746d 4071 case 0x01: // RLC C=(XY+o)
abegaichi 0:40cf46d9746d 4072 _C = RLC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4073 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4074 break;
abegaichi 0:40cf46d9746d 4075 case 0x02: // RLC D=(XY+o)
abegaichi 0:40cf46d9746d 4076 _D = RLC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4077 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4078 break;
abegaichi 0:40cf46d9746d 4079 case 0x03: // RLC E=(XY+o)
abegaichi 0:40cf46d9746d 4080 _E = RLC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4081 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4082 break;
abegaichi 0:40cf46d9746d 4083 case 0x04: // RLC H=(XY+o)
abegaichi 0:40cf46d9746d 4084 _H = RLC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4085 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4086 break;
abegaichi 0:40cf46d9746d 4087 case 0x05: // RLC L=(XY+o)
abegaichi 0:40cf46d9746d 4088 _L = RLC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4089 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4090 break;
abegaichi 0:40cf46d9746d 4091 case 0x06: // RLC (XY+o)
abegaichi 0:40cf46d9746d 4092 WriteMemory(EA, RLC(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4093 break;
abegaichi 0:40cf46d9746d 4094 case 0x07: // RLC A=(XY+o)
abegaichi 0:40cf46d9746d 4095 _A = RLC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4096 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4097 break;
abegaichi 0:40cf46d9746d 4098 case 0x08: // RRC B=(XY+o)
abegaichi 0:40cf46d9746d 4099 _B = RRC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4100 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4101 break;
abegaichi 0:40cf46d9746d 4102 case 0x09: // RRC C=(XY+o)
abegaichi 0:40cf46d9746d 4103 _C = RRC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4104 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4105 break;
abegaichi 0:40cf46d9746d 4106 case 0x0a: // RRC D=(XY+o)
abegaichi 0:40cf46d9746d 4107 _D = RRC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4108 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4109 break;
abegaichi 0:40cf46d9746d 4110 case 0x0b: // RRC E=(XY+o)
abegaichi 0:40cf46d9746d 4111 _E = RRC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4112 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4113 break;
abegaichi 0:40cf46d9746d 4114 case 0x0c: // RRC H=(XY+o)
abegaichi 0:40cf46d9746d 4115 _H = RRC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4116 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4117 break;
abegaichi 0:40cf46d9746d 4118 case 0x0d: // RRC L=(XY+o)
abegaichi 0:40cf46d9746d 4119 _L = RRC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4120 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4121 break;
abegaichi 0:40cf46d9746d 4122 case 0x0e: // RRC (XY+o)
abegaichi 0:40cf46d9746d 4123 WriteMemory(EA, RRC(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4124 break;
abegaichi 0:40cf46d9746d 4125 case 0x0f: // RRC A=(XY+o)
abegaichi 0:40cf46d9746d 4126 _A = RRC(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4127 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4128 break;
abegaichi 0:40cf46d9746d 4129 case 0x10: // RL B=(XY+o)
abegaichi 0:40cf46d9746d 4130 _B = RL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4131 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4132 break;
abegaichi 0:40cf46d9746d 4133 case 0x11: // RL C=(XY+o)
abegaichi 0:40cf46d9746d 4134 _C = RL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4135 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4136 break;
abegaichi 0:40cf46d9746d 4137 case 0x12: // RL D=(XY+o)
abegaichi 0:40cf46d9746d 4138 _D = RL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4139 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4140 break;
abegaichi 0:40cf46d9746d 4141 case 0x13: // RL E=(XY+o)
abegaichi 0:40cf46d9746d 4142 _E = RL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4143 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4144 break;
abegaichi 0:40cf46d9746d 4145 case 0x14: // RL H=(XY+o)
abegaichi 0:40cf46d9746d 4146 _H = RL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4147 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4148 break;
abegaichi 0:40cf46d9746d 4149 case 0x15: // RL L=(XY+o)
abegaichi 0:40cf46d9746d 4150 _L = RL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4151 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4152 break;
abegaichi 0:40cf46d9746d 4153 case 0x16: // RL (XY+o)
abegaichi 0:40cf46d9746d 4154 WriteMemory(EA, RL(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4155 break;
abegaichi 0:40cf46d9746d 4156 case 0x17: // RL A=(XY+o)
abegaichi 0:40cf46d9746d 4157 _A = RL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4158 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4159 break;
abegaichi 0:40cf46d9746d 4160 case 0x18: // RR B=(XY+o)
abegaichi 0:40cf46d9746d 4161 _B = RR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4162 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4163 break;
abegaichi 0:40cf46d9746d 4164 case 0x19: // RR C=(XY+o)
abegaichi 0:40cf46d9746d 4165 _C = RR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4166 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4167 break;
abegaichi 0:40cf46d9746d 4168 case 0x1a: // RR D=(XY+o)
abegaichi 0:40cf46d9746d 4169 _D = RR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4170 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4171 break;
abegaichi 0:40cf46d9746d 4172 case 0x1b: // RR E=(XY+o)
abegaichi 0:40cf46d9746d 4173 _E = RR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4174 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4175 break;
abegaichi 0:40cf46d9746d 4176 case 0x1c: // RR H=(XY+o)
abegaichi 0:40cf46d9746d 4177 _H = RR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4178 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4179 break;
abegaichi 0:40cf46d9746d 4180 case 0x1d: // RR L=(XY+o)
abegaichi 0:40cf46d9746d 4181 _L = RR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4182 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4183 break;
abegaichi 0:40cf46d9746d 4184 case 0x1e: // RR (XY+o)
abegaichi 0:40cf46d9746d 4185 WriteMemory(EA, RR(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4186 break;
abegaichi 0:40cf46d9746d 4187 case 0x1f: // RR A=(XY+o)
abegaichi 0:40cf46d9746d 4188 _A = RR(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4189 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4190 break;
abegaichi 0:40cf46d9746d 4191 case 0x20: // SLA B=(XY+o)
abegaichi 0:40cf46d9746d 4192 _B = SLA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4193 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4194 break;
abegaichi 0:40cf46d9746d 4195 case 0x21: // SLA C=(XY+o)
abegaichi 0:40cf46d9746d 4196 _C = SLA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4197 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4198 break;
abegaichi 0:40cf46d9746d 4199 case 0x22: // SLA D=(XY+o)
abegaichi 0:40cf46d9746d 4200 _D = SLA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4201 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4202 break;
abegaichi 0:40cf46d9746d 4203 case 0x23: // SLA E=(XY+o)
abegaichi 0:40cf46d9746d 4204 _E = SLA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4205 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4206 break;
abegaichi 0:40cf46d9746d 4207 case 0x24: // SLA H=(XY+o)
abegaichi 0:40cf46d9746d 4208 _H = SLA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4209 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4210 break;
abegaichi 0:40cf46d9746d 4211 case 0x25: // SLA L=(XY+o)
abegaichi 0:40cf46d9746d 4212 _L = SLA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4213 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4214 break;
abegaichi 0:40cf46d9746d 4215 case 0x26: // SLA (XY+o)
abegaichi 0:40cf46d9746d 4216 WriteMemory(EA, SLA(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4217 break;
abegaichi 0:40cf46d9746d 4218 case 0x27: // SLA A=(XY+o)
abegaichi 0:40cf46d9746d 4219 _A = SLA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4220 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4221 break;
abegaichi 0:40cf46d9746d 4222 case 0x28: // SRA B=(XY+o)
abegaichi 0:40cf46d9746d 4223 _B = SRA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4224 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4225 break;
abegaichi 0:40cf46d9746d 4226 case 0x29: // SRA C=(XY+o)
abegaichi 0:40cf46d9746d 4227 _C = SRA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4228 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4229 break;
abegaichi 0:40cf46d9746d 4230 case 0x2a: // SRA D=(XY+o)
abegaichi 0:40cf46d9746d 4231 _D = SRA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4232 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4233 break;
abegaichi 0:40cf46d9746d 4234 case 0x2b: // SRA E=(XY+o)
abegaichi 0:40cf46d9746d 4235 _E = SRA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4236 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4237 break;
abegaichi 0:40cf46d9746d 4238 case 0x2c: // SRA H=(XY+o)
abegaichi 0:40cf46d9746d 4239 _H = SRA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4240 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4241 break;
abegaichi 0:40cf46d9746d 4242 case 0x2d: // SRA L=(XY+o)
abegaichi 0:40cf46d9746d 4243 _L = SRA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4244 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4245 break;
abegaichi 0:40cf46d9746d 4246 case 0x2e: // SRA (XY+o)
abegaichi 0:40cf46d9746d 4247 WriteMemory(EA, SRA(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4248 break;
abegaichi 0:40cf46d9746d 4249 case 0x2f: // SRA A=(XY+o)
abegaichi 0:40cf46d9746d 4250 _A = SRA(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4251 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4252 break;
abegaichi 0:40cf46d9746d 4253 case 0x30: // SLL B=(XY+o)
abegaichi 0:40cf46d9746d 4254 _B = SLL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4255 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4256 break;
abegaichi 0:40cf46d9746d 4257 case 0x31: // SLL C=(XY+o)
abegaichi 0:40cf46d9746d 4258 _C = SLL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4259 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4260 break;
abegaichi 0:40cf46d9746d 4261 case 0x32: // SLL D=(XY+o)
abegaichi 0:40cf46d9746d 4262 _D = SLL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4263 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4264 break;
abegaichi 0:40cf46d9746d 4265 case 0x33: // SLL E=(XY+o)
abegaichi 0:40cf46d9746d 4266 _E = SLL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4267 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4268 break;
abegaichi 0:40cf46d9746d 4269 case 0x34: // SLL H=(XY+o)
abegaichi 0:40cf46d9746d 4270 _H = SLL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4271 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4272 break;
abegaichi 0:40cf46d9746d 4273 case 0x35: // SLL L=(XY+o)
abegaichi 0:40cf46d9746d 4274 _L = SLL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4275 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4276 break;
abegaichi 0:40cf46d9746d 4277 case 0x36: // SLL (XY+o)
abegaichi 0:40cf46d9746d 4278 WriteMemory(EA, SLL(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4279 break;
abegaichi 0:40cf46d9746d 4280 case 0x37: // SLL A=(XY+o)
abegaichi 0:40cf46d9746d 4281 _A = SLL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4282 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4283 break;
abegaichi 0:40cf46d9746d 4284 case 0x38: // SRL B=(XY+o)
abegaichi 0:40cf46d9746d 4285 _B = SRL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4286 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4287 break;
abegaichi 0:40cf46d9746d 4288 case 0x39: // SRL C=(XY+o)
abegaichi 0:40cf46d9746d 4289 _C = SRL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4290 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4291 break;
abegaichi 0:40cf46d9746d 4292 case 0x3a: // SRL D=(XY+o)
abegaichi 0:40cf46d9746d 4293 _D = SRL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4294 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4295 break;
abegaichi 0:40cf46d9746d 4296 case 0x3b: // SRL E=(XY+o)
abegaichi 0:40cf46d9746d 4297 _E = SRL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4298 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4299 break;
abegaichi 0:40cf46d9746d 4300 case 0x3c: // SRL H=(XY+o)
abegaichi 0:40cf46d9746d 4301 _H = SRL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4302 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4303 break;
abegaichi 0:40cf46d9746d 4304 case 0x3d: // SRL L=(XY+o)
abegaichi 0:40cf46d9746d 4305 _L = SRL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4306 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4307 break;
abegaichi 0:40cf46d9746d 4308 case 0x3e: // SRL (XY+o)
abegaichi 0:40cf46d9746d 4309 WriteMemory(EA, SRL(ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4310 break;
abegaichi 0:40cf46d9746d 4311 case 0x3f: // SRL A=(XY+o)
abegaichi 0:40cf46d9746d 4312 _A = SRL(ReadMemory(EA));
abegaichi 0:40cf46d9746d 4313 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4314 break;
abegaichi 0:40cf46d9746d 4315 case 0x40: // BIT 0, B=(XY+o)
abegaichi 0:40cf46d9746d 4316 case 0x41: // BIT 0, C=(XY+o)
abegaichi 0:40cf46d9746d 4317 case 0x42: // BIT 0, D=(XY+o)
abegaichi 0:40cf46d9746d 4318 case 0x43: // BIT 0, E=(XY+o)
abegaichi 0:40cf46d9746d 4319 case 0x44: // BIT 0, H=(XY+o)
abegaichi 0:40cf46d9746d 4320 case 0x45: // BIT 0, L=(XY+o)
abegaichi 0:40cf46d9746d 4321 case 0x46: // BIT 0, (XY+o)
abegaichi 0:40cf46d9746d 4322 case 0x47: // BIT 0, A=(XY+o)
abegaichi 0:40cf46d9746d 4323 BIT_XY(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4324 break;
abegaichi 0:40cf46d9746d 4325 case 0x48: // BIT 1, B=(XY+o)
abegaichi 0:40cf46d9746d 4326 case 0x49: // BIT 1, C=(XY+o)
abegaichi 0:40cf46d9746d 4327 case 0x4a: // BIT 1, D=(XY+o)
abegaichi 0:40cf46d9746d 4328 case 0x4b: // BIT 1, E=(XY+o)
abegaichi 0:40cf46d9746d 4329 case 0x4c: // BIT 1, H=(XY+o)
abegaichi 0:40cf46d9746d 4330 case 0x4d: // BIT 1, L=(XY+o)
abegaichi 0:40cf46d9746d 4331 case 0x4e: // BIT 1, (XY+o)
abegaichi 0:40cf46d9746d 4332 case 0x4f: // BIT 1, A=(XY+o)
abegaichi 0:40cf46d9746d 4333 BIT_XY(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4334 break;
abegaichi 0:40cf46d9746d 4335 case 0x50: // BIT 2, B=(XY+o)
abegaichi 0:40cf46d9746d 4336 case 0x51: // BIT 2, C=(XY+o)
abegaichi 0:40cf46d9746d 4337 case 0x52: // BIT 2, D=(XY+o)
abegaichi 0:40cf46d9746d 4338 case 0x53: // BIT 2, E=(XY+o)
abegaichi 0:40cf46d9746d 4339 case 0x54: // BIT 2, H=(XY+o)
abegaichi 0:40cf46d9746d 4340 case 0x55: // BIT 2, L=(XY+o)
abegaichi 0:40cf46d9746d 4341 case 0x56: // BIT 2, (XY+o)
abegaichi 0:40cf46d9746d 4342 case 0x57: // BIT 2, A=(XY+o)
abegaichi 0:40cf46d9746d 4343 BIT_XY(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4344 break;
abegaichi 0:40cf46d9746d 4345 case 0x58: // BIT 3, B=(XY+o)
abegaichi 0:40cf46d9746d 4346 case 0x59: // BIT 3, C=(XY+o)
abegaichi 0:40cf46d9746d 4347 case 0x5a: // BIT 3, D=(XY+o)
abegaichi 0:40cf46d9746d 4348 case 0x5b: // BIT 3, E=(XY+o)
abegaichi 0:40cf46d9746d 4349 case 0x5c: // BIT 3, H=(XY+o)
abegaichi 0:40cf46d9746d 4350 case 0x5d: // BIT 3, L=(XY+o)
abegaichi 0:40cf46d9746d 4351 case 0x5e: // BIT 3, (XY+o)
abegaichi 0:40cf46d9746d 4352 case 0x5f: // BIT 3, A=(XY+o)
abegaichi 0:40cf46d9746d 4353 BIT_XY(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4354 break;
abegaichi 0:40cf46d9746d 4355 case 0x60: // BIT 4, B=(XY+o)
abegaichi 0:40cf46d9746d 4356 case 0x61: // BIT 4, C=(XY+o)
abegaichi 0:40cf46d9746d 4357 case 0x62: // BIT 4, D=(XY+o)
abegaichi 0:40cf46d9746d 4358 case 0x63: // BIT 4, E=(XY+o)
abegaichi 0:40cf46d9746d 4359 case 0x64: // BIT 4, H=(XY+o)
abegaichi 0:40cf46d9746d 4360 case 0x65: // BIT 4, L=(XY+o)
abegaichi 0:40cf46d9746d 4361 case 0x66: // BIT 4, (XY+o)
abegaichi 0:40cf46d9746d 4362 case 0x67: // BIT 4, A=(XY+o)
abegaichi 0:40cf46d9746d 4363 BIT_XY(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4364 break;
abegaichi 0:40cf46d9746d 4365 case 0x68: // BIT 5, B=(XY+o)
abegaichi 0:40cf46d9746d 4366 case 0x69: // BIT 5, C=(XY+o)
abegaichi 0:40cf46d9746d 4367 case 0x6a: // BIT 5, D=(XY+o)
abegaichi 0:40cf46d9746d 4368 case 0x6b: // BIT 5, E=(XY+o)
abegaichi 0:40cf46d9746d 4369 case 0x6c: // BIT 5, H=(XY+o)
abegaichi 0:40cf46d9746d 4370 case 0x6d: // BIT 5, L=(XY+o)
abegaichi 0:40cf46d9746d 4371 case 0x6e: // BIT 5, (XY+o)
abegaichi 0:40cf46d9746d 4372 case 0x6f: // BIT 5, A=(XY+o)
abegaichi 0:40cf46d9746d 4373 BIT_XY(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4374 break;
abegaichi 0:40cf46d9746d 4375 case 0x70: // BIT 6, B=(XY+o)
abegaichi 0:40cf46d9746d 4376 case 0x71: // BIT 6, C=(XY+o)
abegaichi 0:40cf46d9746d 4377 case 0x72: // BIT 6, D=(XY+o)
abegaichi 0:40cf46d9746d 4378 case 0x73: // BIT 6, E=(XY+o)
abegaichi 0:40cf46d9746d 4379 case 0x74: // BIT 6, H=(XY+o)
abegaichi 0:40cf46d9746d 4380 case 0x75: // BIT 6, L=(XY+o)
abegaichi 0:40cf46d9746d 4381 case 0x76: // BIT 6, (XY+o)
abegaichi 0:40cf46d9746d 4382 case 0x77: // BIT 6, A=(XY+o)
abegaichi 0:40cf46d9746d 4383 BIT_XY(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4384 break;
abegaichi 0:40cf46d9746d 4385 case 0x78: // BIT 7, B=(XY+o)
abegaichi 0:40cf46d9746d 4386 case 0x79: // BIT 7, C=(XY+o)
abegaichi 0:40cf46d9746d 4387 case 0x7a: // BIT 7, D=(XY+o)
abegaichi 0:40cf46d9746d 4388 case 0x7b: // BIT 7, E=(XY+o)
abegaichi 0:40cf46d9746d 4389 case 0x7c: // BIT 7, H=(XY+o)
abegaichi 0:40cf46d9746d 4390 case 0x7d: // BIT 7, L=(XY+o)
abegaichi 0:40cf46d9746d 4391 case 0x7e: // BIT 7, (XY+o)
abegaichi 0:40cf46d9746d 4392 case 0x7f: // BIT 7, A=(XY+o)
abegaichi 0:40cf46d9746d 4393 BIT_XY(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4394 break;
abegaichi 0:40cf46d9746d 4395 case 0x80: // RES 0, B=(XY+o)
abegaichi 0:40cf46d9746d 4396 _B = RES(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4397 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4398 break;
abegaichi 0:40cf46d9746d 4399 case 0x81: // RES 0, C=(XY+o)
abegaichi 0:40cf46d9746d 4400 _C = RES(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4401 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4402 break;
abegaichi 0:40cf46d9746d 4403 case 0x82: // RES 0, D=(XY+o)
abegaichi 0:40cf46d9746d 4404 _D = RES(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4405 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4406 break;
abegaichi 0:40cf46d9746d 4407 case 0x83: // RES 0, E=(XY+o)
abegaichi 0:40cf46d9746d 4408 _E = RES(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4409 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4410 break;
abegaichi 0:40cf46d9746d 4411 case 0x84: // RES 0, H=(XY+o)
abegaichi 0:40cf46d9746d 4412 _H = RES(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4413 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4414 break;
abegaichi 0:40cf46d9746d 4415 case 0x85: // RES 0, L=(XY+o)
abegaichi 0:40cf46d9746d 4416 _L = RES(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4417 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4418 break;
abegaichi 0:40cf46d9746d 4419 case 0x86: // RES 0, (XY+o)
abegaichi 0:40cf46d9746d 4420 WriteMemory(EA, RES(0, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4421 break;
abegaichi 0:40cf46d9746d 4422 case 0x87: // RES 0, A=(XY+o)
abegaichi 0:40cf46d9746d 4423 _A = RES(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4424 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4425 break;
abegaichi 0:40cf46d9746d 4426 case 0x88: // RES 1, B=(XY+o)
abegaichi 0:40cf46d9746d 4427 _B = RES(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4428 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4429 break;
abegaichi 0:40cf46d9746d 4430 case 0x89: // RES 1, C=(XY+o)
abegaichi 0:40cf46d9746d 4431 _C = RES(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4432 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4433 break;
abegaichi 0:40cf46d9746d 4434 case 0x8a: // RES 1, D=(XY+o)
abegaichi 0:40cf46d9746d 4435 _D = RES(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4436 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4437 break;
abegaichi 0:40cf46d9746d 4438 case 0x8b: // RES 1, E=(XY+o)
abegaichi 0:40cf46d9746d 4439 _E = RES(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4440 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4441 break;
abegaichi 0:40cf46d9746d 4442 case 0x8c: // RES 1, H=(XY+o)
abegaichi 0:40cf46d9746d 4443 _H = RES(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4444 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4445 break;
abegaichi 0:40cf46d9746d 4446 case 0x8d: // RES 1, L=(XY+o)
abegaichi 0:40cf46d9746d 4447 _L = RES(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4448 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4449 break;
abegaichi 0:40cf46d9746d 4450 case 0x8e: // RES 1, (XY+o)
abegaichi 0:40cf46d9746d 4451 WriteMemory(EA, RES(1, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4452 break;
abegaichi 0:40cf46d9746d 4453 case 0x8f: // RES 1, A=(XY+o)
abegaichi 0:40cf46d9746d 4454 _A = RES(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4455 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4456 break;
abegaichi 0:40cf46d9746d 4457 case 0x90: // RES 2, B=(XY+o)
abegaichi 0:40cf46d9746d 4458 _B = RES(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4459 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4460 break;
abegaichi 0:40cf46d9746d 4461 case 0x91: // RES 2, C=(XY+o)
abegaichi 0:40cf46d9746d 4462 _C = RES(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4463 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4464 break;
abegaichi 0:40cf46d9746d 4465 case 0x92: // RES 2, D=(XY+o)
abegaichi 0:40cf46d9746d 4466 _D = RES(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4467 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4468 break;
abegaichi 0:40cf46d9746d 4469 case 0x93: // RES 2, E=(XY+o)
abegaichi 0:40cf46d9746d 4470 _E = RES(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4471 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4472 break;
abegaichi 0:40cf46d9746d 4473 case 0x94: // RES 2, H=(XY+o)
abegaichi 0:40cf46d9746d 4474 _H = RES(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4475 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4476 break;
abegaichi 0:40cf46d9746d 4477 case 0x95: // RES 2, L=(XY+o)
abegaichi 0:40cf46d9746d 4478 _L = RES(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4479 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4480 break;
abegaichi 0:40cf46d9746d 4481 case 0x96: // RES 2, (XY+o)
abegaichi 0:40cf46d9746d 4482 WriteMemory(EA, RES(2, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4483 break;
abegaichi 0:40cf46d9746d 4484 case 0x97: // RES 2, A=(XY+o)
abegaichi 0:40cf46d9746d 4485 _A = RES(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4486 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4487 break;
abegaichi 0:40cf46d9746d 4488 case 0x98: // RES 3, B=(XY+o)
abegaichi 0:40cf46d9746d 4489 _B = RES(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4490 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4491 break;
abegaichi 0:40cf46d9746d 4492 case 0x99: // RES 3, C=(XY+o)
abegaichi 0:40cf46d9746d 4493 _C = RES(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4494 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4495 break;
abegaichi 0:40cf46d9746d 4496 case 0x9a: // RES 3, D=(XY+o)
abegaichi 0:40cf46d9746d 4497 _D = RES(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4498 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4499 break;
abegaichi 0:40cf46d9746d 4500 case 0x9b: // RES 3, E=(XY+o)
abegaichi 0:40cf46d9746d 4501 _E = RES(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4502 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4503 break;
abegaichi 0:40cf46d9746d 4504 case 0x9c: // RES 3, H=(XY+o)
abegaichi 0:40cf46d9746d 4505 _H = RES(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4506 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4507 break;
abegaichi 0:40cf46d9746d 4508 case 0x9d: // RES 3, L=(XY+o)
abegaichi 0:40cf46d9746d 4509 _L = RES(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4510 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4511 break;
abegaichi 0:40cf46d9746d 4512 case 0x9e: // RES 3, (XY+o)
abegaichi 0:40cf46d9746d 4513 WriteMemory(EA, RES(3, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4514 break;
abegaichi 0:40cf46d9746d 4515 case 0x9f: // RES 3, A=(XY+o)
abegaichi 0:40cf46d9746d 4516 _A = RES(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4517 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4518 break;
abegaichi 0:40cf46d9746d 4519 case 0xa0: // RES 4, B=(XY+o)
abegaichi 0:40cf46d9746d 4520 _B = RES(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4521 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4522 break;
abegaichi 0:40cf46d9746d 4523 case 0xa1: // RES 4, C=(XY+o)
abegaichi 0:40cf46d9746d 4524 _C = RES(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4525 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4526 break;
abegaichi 0:40cf46d9746d 4527 case 0xa2: // RES 4, D=(XY+o)
abegaichi 0:40cf46d9746d 4528 _D = RES(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4529 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4530 break;
abegaichi 0:40cf46d9746d 4531 case 0xa3: // RES 4, E=(XY+o)
abegaichi 0:40cf46d9746d 4532 _E = RES(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4533 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4534 break;
abegaichi 0:40cf46d9746d 4535 case 0xa4: // RES 4, H=(XY+o)
abegaichi 0:40cf46d9746d 4536 _H = RES(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4537 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4538 break;
abegaichi 0:40cf46d9746d 4539 case 0xa5: // RES 4, L=(XY+o)
abegaichi 0:40cf46d9746d 4540 _L = RES(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4541 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4542 break;
abegaichi 0:40cf46d9746d 4543 case 0xa6: // RES 4, (XY+o)
abegaichi 0:40cf46d9746d 4544 WriteMemory(EA, RES(4, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4545 break;
abegaichi 0:40cf46d9746d 4546 case 0xa7: // RES 4, A=(XY+o)
abegaichi 0:40cf46d9746d 4547 _A = RES(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4548 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4549 break;
abegaichi 0:40cf46d9746d 4550 case 0xa8: // RES 5, B=(XY+o)
abegaichi 0:40cf46d9746d 4551 _B = RES(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4552 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4553 break;
abegaichi 0:40cf46d9746d 4554 case 0xa9: // RES 5, C=(XY+o)
abegaichi 0:40cf46d9746d 4555 _C = RES(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4556 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4557 break;
abegaichi 0:40cf46d9746d 4558 case 0xaa: // RES 5, D=(XY+o)
abegaichi 0:40cf46d9746d 4559 _D = RES(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4560 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4561 break;
abegaichi 0:40cf46d9746d 4562 case 0xab: // RES 5, E=(XY+o)
abegaichi 0:40cf46d9746d 4563 _E = RES(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4564 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4565 break;
abegaichi 0:40cf46d9746d 4566 case 0xac: // RES 5, H=(XY+o)
abegaichi 0:40cf46d9746d 4567 _H = RES(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4568 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4569 break;
abegaichi 0:40cf46d9746d 4570 case 0xad: // RES 5, L=(XY+o)
abegaichi 0:40cf46d9746d 4571 _L = RES(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4572 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4573 break;
abegaichi 0:40cf46d9746d 4574 case 0xae: // RES 5, (XY+o)
abegaichi 0:40cf46d9746d 4575 WriteMemory(EA, RES(5, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4576 break;
abegaichi 0:40cf46d9746d 4577 case 0xaf: // RES 5, A=(XY+o)
abegaichi 0:40cf46d9746d 4578 _A = RES(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4579 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4580 break;
abegaichi 0:40cf46d9746d 4581 case 0xb0: // RES 6, B=(XY+o)
abegaichi 0:40cf46d9746d 4582 _B = RES(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4583 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4584 break;
abegaichi 0:40cf46d9746d 4585 case 0xb1: // RES 6, C=(XY+o)
abegaichi 0:40cf46d9746d 4586 _C = RES(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4587 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4588 break;
abegaichi 0:40cf46d9746d 4589 case 0xb2: // RES 6, D=(XY+o)
abegaichi 0:40cf46d9746d 4590 _D = RES(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4591 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4592 break;
abegaichi 0:40cf46d9746d 4593 case 0xb3: // RES 6, E=(XY+o)
abegaichi 0:40cf46d9746d 4594 _E = RES(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4595 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4596 break;
abegaichi 0:40cf46d9746d 4597 case 0xb4: // RES 6, H=(XY+o)
abegaichi 0:40cf46d9746d 4598 _H = RES(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4599 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4600 break;
abegaichi 0:40cf46d9746d 4601 case 0xb5: // RES 6, L=(XY+o)
abegaichi 0:40cf46d9746d 4602 _L = RES(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4603 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4604 break;
abegaichi 0:40cf46d9746d 4605 case 0xb6: // RES 6, (XY+o)
abegaichi 0:40cf46d9746d 4606 WriteMemory(EA, RES(6, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4607 break;
abegaichi 0:40cf46d9746d 4608 case 0xb7: // RES 6, A=(XY+o)
abegaichi 0:40cf46d9746d 4609 _A = RES(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4610 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4611 break;
abegaichi 0:40cf46d9746d 4612 case 0xb8: // RES 7, B=(XY+o)
abegaichi 0:40cf46d9746d 4613 _B = RES(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4614 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4615 break;
abegaichi 0:40cf46d9746d 4616 case 0xb9: // RES 7, C=(XY+o)
abegaichi 0:40cf46d9746d 4617 _C = RES(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4618 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4619 break;
abegaichi 0:40cf46d9746d 4620 case 0xba: // RES 7, D=(XY+o)
abegaichi 0:40cf46d9746d 4621 _D = RES(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4622 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4623 break;
abegaichi 0:40cf46d9746d 4624 case 0xbb: // RES 7, E=(XY+o)
abegaichi 0:40cf46d9746d 4625 _E = RES(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4626 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4627 break;
abegaichi 0:40cf46d9746d 4628 case 0xbc: // RES 7, H=(XY+o)
abegaichi 0:40cf46d9746d 4629 _H = RES(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4630 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4631 break;
abegaichi 0:40cf46d9746d 4632 case 0xbd: // RES 7, L=(XY+o)
abegaichi 0:40cf46d9746d 4633 _L = RES(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4634 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4635 break;
abegaichi 0:40cf46d9746d 4636 case 0xbe: // RES 7, (XY+o)
abegaichi 0:40cf46d9746d 4637 WriteMemory(EA, RES(7, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4638 break;
abegaichi 0:40cf46d9746d 4639 case 0xbf: // RES 7, A=(XY+o)
abegaichi 0:40cf46d9746d 4640 _A = RES(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4641 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4642 break;
abegaichi 0:40cf46d9746d 4643 case 0xc0: // SET 0, B=(XY+o)
abegaichi 0:40cf46d9746d 4644 _B = SET(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4645 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4646 break;
abegaichi 0:40cf46d9746d 4647 case 0xc1: // SET 0, C=(XY+o)
abegaichi 0:40cf46d9746d 4648 _C = SET(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4649 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4650 break;
abegaichi 0:40cf46d9746d 4651 case 0xc2: // SET 0, D=(XY+o)
abegaichi 0:40cf46d9746d 4652 _D = SET(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4653 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4654 break;
abegaichi 0:40cf46d9746d 4655 case 0xc3: // SET 0, E=(XY+o)
abegaichi 0:40cf46d9746d 4656 _E = SET(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4657 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4658 break;
abegaichi 0:40cf46d9746d 4659 case 0xc4: // SET 0, H=(XY+o)
abegaichi 0:40cf46d9746d 4660 _H = SET(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4661 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4662 break;
abegaichi 0:40cf46d9746d 4663 case 0xc5: // SET 0, L=(XY+o)
abegaichi 0:40cf46d9746d 4664 _L = SET(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4665 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4666 break;
abegaichi 0:40cf46d9746d 4667 case 0xc6: // SET 0, (XY+o)
abegaichi 0:40cf46d9746d 4668 WriteMemory(EA, SET(0, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4669 break;
abegaichi 0:40cf46d9746d 4670 case 0xc7: // SET 0, A=(XY+o)
abegaichi 0:40cf46d9746d 4671 _A = SET(0, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4672 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4673 break;
abegaichi 0:40cf46d9746d 4674 case 0xc8: // SET 1, B=(XY+o)
abegaichi 0:40cf46d9746d 4675 _B = SET(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4676 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4677 break;
abegaichi 0:40cf46d9746d 4678 case 0xc9: // SET 1, C=(XY+o)
abegaichi 0:40cf46d9746d 4679 _C = SET(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4680 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4681 break;
abegaichi 0:40cf46d9746d 4682 case 0xca: // SET 1, D=(XY+o)
abegaichi 0:40cf46d9746d 4683 _D = SET(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4684 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4685 break;
abegaichi 0:40cf46d9746d 4686 case 0xcb: // SET 1, E=(XY+o)
abegaichi 0:40cf46d9746d 4687 _E = SET(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4688 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4689 break;
abegaichi 0:40cf46d9746d 4690 case 0xcc: // SET 1, H=(XY+o)
abegaichi 0:40cf46d9746d 4691 _H = SET(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4692 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4693 break;
abegaichi 0:40cf46d9746d 4694 case 0xcd: // SET 1, L=(XY+o)
abegaichi 0:40cf46d9746d 4695 _L = SET(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4696 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4697 break;
abegaichi 0:40cf46d9746d 4698 case 0xce: // SET 1, (XY+o)
abegaichi 0:40cf46d9746d 4699 WriteMemory(EA, SET(1, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4700 break;
abegaichi 0:40cf46d9746d 4701 case 0xcf: // SET 1, A=(XY+o)
abegaichi 0:40cf46d9746d 4702 _A = SET(1, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4703 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4704 break;
abegaichi 0:40cf46d9746d 4705 case 0xd0: // SET 2, B=(XY+o)
abegaichi 0:40cf46d9746d 4706 _B = SET(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4707 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4708 break;
abegaichi 0:40cf46d9746d 4709 case 0xd1: // SET 2, C=(XY+o)
abegaichi 0:40cf46d9746d 4710 _C = SET(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4711 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4712 break;
abegaichi 0:40cf46d9746d 4713 case 0xd2: // SET 2, D=(XY+o)
abegaichi 0:40cf46d9746d 4714 _D = SET(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4715 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4716 break;
abegaichi 0:40cf46d9746d 4717 case 0xd3: // SET 2, E=(XY+o)
abegaichi 0:40cf46d9746d 4718 _E = SET(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4719 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4720 break;
abegaichi 0:40cf46d9746d 4721 case 0xd4: // SET 2, H=(XY+o)
abegaichi 0:40cf46d9746d 4722 _H = SET(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4723 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4724 break;
abegaichi 0:40cf46d9746d 4725 case 0xd5: // SET 2, L=(XY+o)
abegaichi 0:40cf46d9746d 4726 _L = SET(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4727 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4728 break;
abegaichi 0:40cf46d9746d 4729 case 0xd6: // SET 2, (XY+o)
abegaichi 0:40cf46d9746d 4730 WriteMemory(EA, SET(2, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4731 break;
abegaichi 0:40cf46d9746d 4732 case 0xd7: // SET 2, A=(XY+o)
abegaichi 0:40cf46d9746d 4733 _A = SET(2, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4734 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4735 break;
abegaichi 0:40cf46d9746d 4736 case 0xd8: // SET 3, B=(XY+o)
abegaichi 0:40cf46d9746d 4737 _B = SET(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4738 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4739 break;
abegaichi 0:40cf46d9746d 4740 case 0xd9: // SET 3, C=(XY+o)
abegaichi 0:40cf46d9746d 4741 _C = SET(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4742 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4743 break;
abegaichi 0:40cf46d9746d 4744 case 0xda: // SET 3, D=(XY+o)
abegaichi 0:40cf46d9746d 4745 _D = SET(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4746 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4747 break;
abegaichi 0:40cf46d9746d 4748 case 0xdb: // SET 3, E=(XY+o)
abegaichi 0:40cf46d9746d 4749 _E = SET(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4750 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4751 break;
abegaichi 0:40cf46d9746d 4752 case 0xdc: // SET 3, H=(XY+o)
abegaichi 0:40cf46d9746d 4753 _H = SET(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4754 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4755 break;
abegaichi 0:40cf46d9746d 4756 case 0xdd: // SET 3, L=(XY+o)
abegaichi 0:40cf46d9746d 4757 _L = SET(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4758 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4759 break;
abegaichi 0:40cf46d9746d 4760 case 0xde: // SET 3, (XY+o)
abegaichi 0:40cf46d9746d 4761 WriteMemory(EA, SET(3, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4762 break;
abegaichi 0:40cf46d9746d 4763 case 0xdf: // SET 3, A=(XY+o)
abegaichi 0:40cf46d9746d 4764 _A = SET(3, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4765 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4766 break;
abegaichi 0:40cf46d9746d 4767 case 0xe0: // SET 4, B=(XY+o)
abegaichi 0:40cf46d9746d 4768 _B = SET(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4769 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4770 break;
abegaichi 0:40cf46d9746d 4771 case 0xe1: // SET 4, C=(XY+o)
abegaichi 0:40cf46d9746d 4772 _C = SET(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4773 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4774 break;
abegaichi 0:40cf46d9746d 4775 case 0xe2: // SET 4, D=(XY+o)
abegaichi 0:40cf46d9746d 4776 _D = SET(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4777 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4778 break;
abegaichi 0:40cf46d9746d 4779 case 0xe3: // SET 4, E=(XY+o)
abegaichi 0:40cf46d9746d 4780 _E = SET(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4781 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4782 break;
abegaichi 0:40cf46d9746d 4783 case 0xe4: // SET 4, H=(XY+o)
abegaichi 0:40cf46d9746d 4784 _H = SET(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4785 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4786 break;
abegaichi 0:40cf46d9746d 4787 case 0xe5: // SET 4, L=(XY+o)
abegaichi 0:40cf46d9746d 4788 _L = SET(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4789 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4790 break;
abegaichi 0:40cf46d9746d 4791 case 0xe6: // SET 4, (XY+o)
abegaichi 0:40cf46d9746d 4792 WriteMemory(EA, SET(4, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4793 break;
abegaichi 0:40cf46d9746d 4794 case 0xe7: // SET 4, A=(XY+o)
abegaichi 0:40cf46d9746d 4795 _A = SET(4, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4796 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4797 break;
abegaichi 0:40cf46d9746d 4798 case 0xe8: // SET 5, B=(XY+o)
abegaichi 0:40cf46d9746d 4799 _B = SET(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4800 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4801 break;
abegaichi 0:40cf46d9746d 4802 case 0xe9: // SET 5, C=(XY+o)
abegaichi 0:40cf46d9746d 4803 _C = SET(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4804 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4805 break;
abegaichi 0:40cf46d9746d 4806 case 0xea: // SET 5, D=(XY+o)
abegaichi 0:40cf46d9746d 4807 _D = SET(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4808 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4809 break;
abegaichi 0:40cf46d9746d 4810 case 0xeb: // SET 5, E=(XY+o)
abegaichi 0:40cf46d9746d 4811 _E = SET(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4812 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4813 break;
abegaichi 0:40cf46d9746d 4814 case 0xec: // SET 5, H=(XY+o)
abegaichi 0:40cf46d9746d 4815 _H = SET(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4816 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4817 break;
abegaichi 0:40cf46d9746d 4818 case 0xed: // SET 5, L=(XY+o)
abegaichi 0:40cf46d9746d 4819 _L = SET(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4820 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4821 break;
abegaichi 0:40cf46d9746d 4822 case 0xee: // SET 5, (XY+o)
abegaichi 0:40cf46d9746d 4823 WriteMemory(EA, SET(5, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4824 break;
abegaichi 0:40cf46d9746d 4825 case 0xef: // SET 5, A=(XY+o)
abegaichi 0:40cf46d9746d 4826 _A = SET(5, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4827 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4828 break;
abegaichi 0:40cf46d9746d 4829 case 0xf0: // SET 6, B=(XY+o)
abegaichi 0:40cf46d9746d 4830 _B = SET(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4831 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4832 break;
abegaichi 0:40cf46d9746d 4833 case 0xf1: // SET 6, C=(XY+o)
abegaichi 0:40cf46d9746d 4834 _C = SET(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4835 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4836 break;
abegaichi 0:40cf46d9746d 4837 case 0xf2: // SET 6, D=(XY+o)
abegaichi 0:40cf46d9746d 4838 _D = SET(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4839 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4840 break;
abegaichi 0:40cf46d9746d 4841 case 0xf3: // SET 6, E=(XY+o)
abegaichi 0:40cf46d9746d 4842 _E = SET(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4843 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4844 break;
abegaichi 0:40cf46d9746d 4845 case 0xf4: // SET 6, H=(XY+o)
abegaichi 0:40cf46d9746d 4846 _H = SET(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4847 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4848 break;
abegaichi 0:40cf46d9746d 4849 case 0xf5: // SET 6, L=(XY+o)
abegaichi 0:40cf46d9746d 4850 _L = SET(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4851 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4852 break;
abegaichi 0:40cf46d9746d 4853 case 0xf6: // SET 6, (XY+o)
abegaichi 0:40cf46d9746d 4854 WriteMemory(EA, SET(6, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4855 break;
abegaichi 0:40cf46d9746d 4856 case 0xf7: // SET 6, A=(XY+o)
abegaichi 0:40cf46d9746d 4857 _A = SET(6, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4858 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4859 break;
abegaichi 0:40cf46d9746d 4860 case 0xf8: // SET 7, B=(XY+o)
abegaichi 0:40cf46d9746d 4861 _B = SET(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4862 WriteMemory(EA, _B);
abegaichi 0:40cf46d9746d 4863 break;
abegaichi 0:40cf46d9746d 4864 case 0xf9: // SET 7, C=(XY+o)
abegaichi 0:40cf46d9746d 4865 _C = SET(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4866 WriteMemory(EA, _C);
abegaichi 0:40cf46d9746d 4867 break;
abegaichi 0:40cf46d9746d 4868 case 0xfa: // SET 7, D=(XY+o)
abegaichi 0:40cf46d9746d 4869 _D = SET(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4870 WriteMemory(EA, _D);
abegaichi 0:40cf46d9746d 4871 break;
abegaichi 0:40cf46d9746d 4872 case 0xfb: // SET 7, E=(XY+o)
abegaichi 0:40cf46d9746d 4873 _E = SET(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4874 WriteMemory(EA, _E);
abegaichi 0:40cf46d9746d 4875 break;
abegaichi 0:40cf46d9746d 4876 case 0xfc: // SET 7, H=(XY+o)
abegaichi 0:40cf46d9746d 4877 _H = SET(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4878 WriteMemory(EA, _H);
abegaichi 0:40cf46d9746d 4879 break;
abegaichi 0:40cf46d9746d 4880 case 0xfd: // SET 7, L=(XY+o)
abegaichi 0:40cf46d9746d 4881 _L = SET(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4882 WriteMemory(EA, _L);
abegaichi 0:40cf46d9746d 4883 break;
abegaichi 0:40cf46d9746d 4884 case 0xfe: // SET 7, (XY+o)
abegaichi 0:40cf46d9746d 4885 WriteMemory(EA, SET(7, ReadMemory(EA)));
abegaichi 0:40cf46d9746d 4886 break;
abegaichi 0:40cf46d9746d 4887 case 0xff: // SET 7, A=(XY+o)
abegaichi 0:40cf46d9746d 4888 _A = SET(7, ReadMemory(EA));
abegaichi 0:40cf46d9746d 4889 WriteMemory(EA, _A);
abegaichi 0:40cf46d9746d 4890 break;
abegaichi 0:40cf46d9746d 4891 }
abegaichi 0:40cf46d9746d 4892 }