Yoshikazu Abe / Mbed 2 deprecated abz80

Dependencies:   mbed

Committer:
abegaichi
Date:
Sun May 01 08:21:23 2011 +0000
Revision:
0:40cf46d9746d
Child:
1:bd86d49d7622
20110501

Who changed what in which revision?

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