Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
BZ80.c@0:40cf46d9746d, 2011-05-01 (annotated)
- Committer:
- abegaichi
- Date:
- Sun May 01 08:21:23 2011 +0000
- Revision:
- 0:40cf46d9746d
- Child:
- 1:bd86d49d7622
20110501
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| abegaichi | 0:40cf46d9746d | 1 | /**************************************************************************/ |
| abegaichi | 0:40cf46d9746d | 2 | /*** ***/ |
| abegaichi | 0:40cf46d9746d | 3 | /*** yWOV[PT ***/ |
| abegaichi | 0:40cf46d9746d | 4 | /*** ***/ |
| abegaichi | 0:40cf46d9746d | 5 | /*** ̧ٖFBZ80.C ***/ |
| abegaichi | 0:40cf46d9746d | 6 | /*** ***/ |
| abegaichi | 0:40cf46d9746d | 7 | /*** Origin1 : MAME Z80RA ***/ |
| 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 | /*** Fgb ***/ |
| 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 | // yWObotWX^ |
| 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 | // yWO |
| abegaichi | 0:40cf46d9746d | 134 | uint8 Z80Memory[Z80_MEM_SIZE]; // yWO |
| 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 | // fobO֘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 | Cg |
| 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: // VAf[^|[go |
| 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: // VAf[^|[g |
| abegaichi | 0:40cf46d9746d | 496 | ret = RecvZ80(); |
| abegaichi | 0:40cf46d9746d | 497 | break; |
| abegaichi | 0:40cf46d9746d | 498 | |
| abegaichi | 0:40cf46d9746d | 499 | case 0x01: // VAXe[^X@1FGveB |
| 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 | fobO֘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 NA */ |
| abegaichi | 0:40cf46d9746d | 551 | /* */ |
| abegaichi | 0:40cf46d9746d | 552 | /* ߒlF */ |
| 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 | /* ߒlF */ |
| 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 Cg */ |
| abegaichi | 0:40cf46d9746d | 574 | /* */ |
| abegaichi | 0:40cf46d9746d | 575 | /* ߒlF */ |
| 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 [hPUrbg */ |
| abegaichi | 0:40cf46d9746d | 583 | /* */ |
| abegaichi | 0:40cf46d9746d | 584 | /* ߒlF */ |
| 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 CgPUrbg */ |
| abegaichi | 0:40cf46d9746d | 592 | /* */ |
| abegaichi | 0:40cf46d9746d | 593 | /* ߒlF */ |
| 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 tFb` */ |
| abegaichi | 0:40cf46d9746d | 602 | /* */ |
| abegaichi | 0:40cf46d9746d | 603 | /* ߒlF */ |
| 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 tFb` */ |
| abegaichi | 0:40cf46d9746d | 611 | /* */ |
| abegaichi | 0:40cf46d9746d | 612 | /* ߒlF */ |
| 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 | // AhX |
| 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 | // Iyh |
| 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 yWO Zbg */ |
| abegaichi | 0:40cf46d9746d | 1251 | /* */ |
| abegaichi | 0:40cf46d9746d | 1252 | /* ߒlF */ |
| abegaichi | 0:40cf46d9746d | 1253 | /*----------------------------------------------------------------------*/ |
| abegaichi | 0:40cf46d9746d | 1254 | void Z80Reset( void ) |
| abegaichi | 0:40cf46d9746d | 1255 | { |
| abegaichi | 0:40cf46d9746d | 1256 | // CP/M Zbg |
| 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 yWO hqp */ |
| abegaichi | 0:40cf46d9746d | 1266 | /* */ |
| abegaichi | 0:40cf46d9746d | 1267 | /* ߒlF */ |
| 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 yWO mlh */ |
| abegaichi | 0:40cf46d9746d | 1331 | /* */ |
| abegaichi | 0:40cf46d9746d | 1332 | /* ߒlF */ |
| 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 yWOV[PT */ |
| abegaichi | 0:40cf46d9746d | 1349 | /* */ |
| abegaichi | 0:40cf46d9746d | 1350 | /* ߒlF */ |
| 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 | // TNbN |
| 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 yWO߂̃tFb`AfR[hƎ s */ |
| abegaichi | 0:40cf46d9746d | 1375 | /* */ |
| abegaichi | 0:40cf46d9746d | 1376 | /* ߒlF */ |
| 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 yWO bavtBbNX */ |
| abegaichi | 0:40cf46d9746d | 2426 | /* */ |
| abegaichi | 0:40cf46d9746d | 2427 | /* ߒlF */ |
| 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 yWO ccvtBbNX */ |
| abegaichi | 0:40cf46d9746d | 3208 | /* */ |
| abegaichi | 0:40cf46d9746d | 3209 | /* ߒlF */ |
| 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 yWO dcvtBbNX */ |
| abegaichi | 0:40cf46d9746d | 3513 | /* */ |
| abegaichi | 0:40cf46d9746d | 3514 | /* ߒlF */ |
| 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/BDOSR[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 yWO ecvtBbNX */ |
| abegaichi | 0:40cf46d9746d | 3807 | /* */ |
| abegaichi | 0:40cf46d9746d | 3808 | /* ߒlF */ |
| 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 yWO DD(FD),CB vtBbNX */ |
| abegaichi | 0:40cf46d9746d | 4117 | /* */ |
| abegaichi | 0:40cf46d9746d | 4118 | /* ߒlF */ |
| 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 | } |