| version 1.2, 2004/08/05 11:30:13 | version 1.3, 2008/06/02 20:07:32 | 
| Line 1 | Line 1 | 
| //---------------------------------------------------------------------------- | /* ----------------------------------------------------------------------- | 
| // | * | 
| //  Z80C : Z80 Engine - GENERIC | * Z80C : Z80 Engine - GENERIC | 
| // | * | 
| //                                  Copyright by Studio Milmake 1999-2000,2004 | *                              Copyright by Studio Milmake 1999-2000,2004 | 
| // | * | 
| //---------------------------------------------------------------------------- | *------------------------------------------------------------------------ */ | 
|  |  | 
 |  |  | 
 | #include        "compiler.h" | #include        "compiler.h" | 
 | #include        "z80core.h" | #include        "z80core.h" | 
| Line 14 | Line 13 | 
 | #include        "z80c.mcr" | #include        "z80c.mcr" | 
 |  |  | 
 |  |  | 
| Z80FN _ld_nop(void)                     { }                                                     // 00: nop | Z80FN _ld_nop(void)                     { } | 
| Z80FN _ld_bc_word(void)         LDW_w(R_Z80BC)                          // 01: ld bc, imm16 | Z80FN _ld_bc_word(void)         LDW_w(R_Z80BC) | 
| Z80FN _ld_xbc_a(void)           LDx_B(R_Z80BC, R_Z80A)          // 02: ld (bc), a | Z80FN _ld_xbc_a(void)           LDx_B(R_Z80BC, R_Z80A) | 
| Z80FN _inc_bc(void)                     MCR_INC_W(R_Z80BC)                      // 03: inc bc | Z80FN _inc_bc(void)                     MCR_INC_W(R_Z80BC) | 
| Z80FN _inc_b(void)                      MCR_INC(R_Z80B)                         // 04: inc b | Z80FN _inc_b(void)                      MCR_INC(R_Z80B) | 
| Z80FN _dec_b(void)                      MCR_DEC(R_Z80B)                         // 05: dec b | Z80FN _dec_b(void)                      MCR_DEC(R_Z80B) | 
| Z80FN _ld_b_byte(void)          LDB_b(R_Z80B)                           // 06: ld b, imm8 | Z80FN _ld_b_byte(void)          LDB_b(R_Z80B) | 
| Z80FN _rlca(void)                       MCR_RLCA                                        // 07: rcla | Z80FN _rlca(void)                       MCR_RLCA | 
| Z80FN _ex_af_af(void)           MCR_EX(R_Z80AF, R_Z80AF2)       // 08: ex af, af' | Z80FN _ex_af_af(void)           MCR_EX(R_Z80AF, R_Z80AF2) | 
| Z80FN _add_hl_bc(void)          MCR_ADD_W(R_Z80HL, R_Z80BC)     // 09: add hl, bc | Z80FN _add_hl_bc(void)          MCR_ADD_W(R_Z80HL, R_Z80BC) | 
| Z80FN _ld_a_xbc(void)           LDB_x(R_Z80A, R_Z80BC)          // 0a: ld a, (bc) | Z80FN _ld_a_xbc(void)           LDB_x(R_Z80A, R_Z80BC) | 
| Z80FN _dec_bc(void)                     MCR_DEC_W(R_Z80BC)                      // 0b: dec bc | Z80FN _dec_bc(void)                     MCR_DEC_W(R_Z80BC) | 
| Z80FN _inc_c(void)                      MCR_INC(R_Z80C)                         // 0c: inc c | Z80FN _inc_c(void)                      MCR_INC(R_Z80C) | 
| Z80FN _dec_c(void)                      MCR_DEC(R_Z80C)                         // 0d: dec c | Z80FN _dec_c(void)                      MCR_DEC(R_Z80C) | 
| Z80FN _ld_c_byte(void)          LDB_b(R_Z80C)                           // 0e: ld c, imm8 | Z80FN _ld_c_byte(void)          LDB_b(R_Z80C) | 
| Z80FN _rrca(void)                       MCR_RRCA                                        // 0f: rrca | Z80FN _rrca(void)                       MCR_RRCA | 
|  |  | 
| Z80FN _djnz(void)                       MCR_DJNZ                                        // 10: | Z80FN _djnz(void)                       MCR_DJNZ | 
| Z80FN _ld_de_word(void)         LDW_w(R_Z80DE)                          // 11: | Z80FN _ld_de_word(void)         LDW_w(R_Z80DE) | 
| Z80FN _ld_xde_a(void)           LDx_B(R_Z80DE, R_Z80A)          // 12: | Z80FN _ld_xde_a(void)           LDx_B(R_Z80DE, R_Z80A) | 
| Z80FN _inc_de(void)                     MCR_INC_W(R_Z80DE)                      // 13: | Z80FN _inc_de(void)                     MCR_INC_W(R_Z80DE) | 
| Z80FN _inc_d(void)                      MCR_INC(R_Z80D)                         // 14: | Z80FN _inc_d(void)                      MCR_INC(R_Z80D) | 
| Z80FN _dec_d(void)                      MCR_DEC(R_Z80D)                         // 15: | Z80FN _dec_d(void)                      MCR_DEC(R_Z80D) | 
| Z80FN _ld_d_byte(void)          LDB_b(R_Z80D)                           // 16: | Z80FN _ld_d_byte(void)          LDB_b(R_Z80D) | 
| Z80FN _rla(void)                        MCR_RLA                                         // 17: | Z80FN _rla(void)                        MCR_RLA | 
| Z80FN _jr(void)                         MCR_JR                                          // 18: | Z80FN _jr(void)                         MCR_JR | 
| Z80FN _add_hl_de(void)          MCR_ADD_W(R_Z80HL, R_Z80DE)     // 19: | Z80FN _add_hl_de(void)          MCR_ADD_W(R_Z80HL, R_Z80DE) | 
| Z80FN _ld_a_xde(void)           LDB_x(R_Z80A, R_Z80DE)          // 1a: | Z80FN _ld_a_xde(void)           LDB_x(R_Z80A, R_Z80DE) | 
| Z80FN _dec_de(void)                     MCR_DEC_W(R_Z80DE)                      // 1b: dec de | Z80FN _dec_de(void)                     MCR_DEC_W(R_Z80DE) | 
| Z80FN _inc_e(void)                      MCR_INC(R_Z80E)                         // 1c: inc e | Z80FN _inc_e(void)                      MCR_INC(R_Z80E) | 
| Z80FN _dec_e(void)                      MCR_DEC(R_Z80E)                         // 1d: dec e | Z80FN _dec_e(void)                      MCR_DEC(R_Z80E) | 
| Z80FN _ld_e_byte(void)          LDB_b(R_Z80E)                           // 1e: ld b, imm8 | Z80FN _ld_e_byte(void)          LDB_b(R_Z80E) | 
| Z80FN _rra(void)                        MCR_RRA                                         // 1f: rra | Z80FN _rra(void)                        MCR_RRA | 
|  |  | 
| Z80FN _jr_nz(void)                      MCR_JRNFLG(Z_FLAG)                      // 20 | Z80FN _jr_nz(void)                      MCR_JRNFLG(Z_FLAG) | 
| Z80FN _ld_hl_word(void)         LDW_w(R_Z80HL)                          // 21 | Z80FN _ld_hl_word(void)         LDW_w(R_Z80HL) | 
| Z80FN _ld_xword_hl(void)        LDx_W(R_Z80HL)                          // 22 | Z80FN _ld_xword_hl(void)        LDx_W(R_Z80HL) | 
| Z80FN _inc_hl(void)                     MCR_INC_W(R_Z80HL)                      // 23 | Z80FN _inc_hl(void)                     MCR_INC_W(R_Z80HL) | 
| Z80FN _inc_h(void)                      MCR_INC(R_Z80H)                         // 24 | Z80FN _inc_h(void)                      MCR_INC(R_Z80H) | 
| Z80FN _dec_h(void)                      MCR_DEC(R_Z80H)                         // 25 | Z80FN _dec_h(void)                      MCR_DEC(R_Z80H) | 
| Z80FN _ld_h_byte(void)          LDB_b(R_Z80H)                           // 26 | Z80FN _ld_h_byte(void)          LDB_b(R_Z80H) | 
| Z80FN _daa(void)                        MCR_DDA                                         // 27 | Z80FN _daa(void)                        MCR_DDA | 
| Z80FN _jr_z(void)                       MCR_JRFLG(Z_FLAG)                       // 28 | Z80FN _jr_z(void)                       MCR_JRFLG(Z_FLAG) | 
| Z80FN _add_hl_hl(void)          MCR_ADDx2(R_Z80HL)                      // 29 | Z80FN _add_hl_hl(void)          MCR_ADDx2(R_Z80HL) | 
| Z80FN _ld_hl_xword(void)        LDW_x(R_Z80HL)                          // 2a | Z80FN _ld_hl_xword(void)        LDW_x(R_Z80HL) | 
| Z80FN _dec_hl(void)                     MCR_DEC_W(R_Z80HL)                      // 2b | Z80FN _dec_hl(void)                     MCR_DEC_W(R_Z80HL) | 
| Z80FN _inc_l(void)                      MCR_INC(R_Z80L)                         // 2c | Z80FN _inc_l(void)                      MCR_INC(R_Z80L) | 
| Z80FN _dec_l(void)                      MCR_DEC(R_Z80L)                         // 2d | Z80FN _dec_l(void)                      MCR_DEC(R_Z80L) | 
| Z80FN _ld_l_byte(void)          LDB_b(R_Z80L)                           // 2e | Z80FN _ld_l_byte(void)          LDB_b(R_Z80L) | 
| Z80FN _cpl(void)                        MCR_CPL                                         // 2f | Z80FN _cpl(void)                        MCR_CPL | 
|  |  | 
| Z80FN _jr_nc(void)                      MCR_JRNFLG(C_FLAG)                      // 30 | Z80FN _jr_nc(void)                      MCR_JRNFLG(C_FLAG) | 
| Z80FN _ld_sp_word(void)         LDW_w(R_Z80SP)                          // 31 | Z80FN _ld_sp_word(void)         LDW_w(R_Z80SP) | 
| Z80FN _ld_xbyte_a(void)         LDB_x_a                                         // 32 | Z80FN _ld_xbyte_a(void)         LDB_x_a | 
| Z80FN _inc_sp(void)                     MCR_INC_W(R_Z80SP)                      // 33 | Z80FN _inc_sp(void)                     MCR_INC_W(R_Z80SP) | 
| Z80FN _inc_xhl(void)            MCR_INC_MEM(R_Z80HL)            // 34 | Z80FN _inc_xhl(void)            MCR_INC_MEM(R_Z80HL) | 
| Z80FN _dec_xhl(void)            MCR_DEC_MEM(R_Z80HL)            // 35 | Z80FN _dec_xhl(void)            MCR_DEC_MEM(R_Z80HL) | 
| Z80FN _ld_xhl_byte(void)        LDB_xhl_b                                       // 36 | Z80FN _ld_xhl_byte(void)        LDB_xhl_b | 
| Z80FN _scf(void)                        MCR_SCF                                         // 37 | Z80FN _scf(void)                        MCR_SCF | 
| Z80FN _jr_c(void)                       MCR_JRFLG(C_FLAG)                       // 38 | Z80FN _jr_c(void)                       MCR_JRFLG(C_FLAG) | 
| Z80FN _add_hl_sp(void)          MCR_ADD_W(R_Z80HL, R_Z80SP)     // 39 | Z80FN _add_hl_sp(void)          MCR_ADD_W(R_Z80HL, R_Z80SP) | 
| Z80FN _ld_a_xbyte(void)         LDB_a_x                                         // 3a | Z80FN _ld_a_xbyte(void)         LDB_a_x | 
| Z80FN _dec_sp(void)                     MCR_DEC_W(R_Z80SP)                      // 3b | Z80FN _dec_sp(void)                     MCR_DEC_W(R_Z80SP) | 
| Z80FN _inc_a(void)                      MCR_INC(R_Z80A)                         // 3c | Z80FN _inc_a(void)                      MCR_INC(R_Z80A) | 
| Z80FN _dec_a(void)                      MCR_DEC(R_Z80A)                         // 3d | Z80FN _dec_a(void)                      MCR_DEC(R_Z80A) | 
| Z80FN _ld_a_byte(void)          LDB_b(R_Z80A)                           // 3e | Z80FN _ld_a_byte(void)          LDB_b(R_Z80A) | 
| Z80FN _ccf(void)                        MCR_CCF                                         // 3f | Z80FN _ccf(void)                        MCR_CCF | 
 |  |  | 
 | Z80FN _ld_b_c(void)                     MCR_LD(R_Z80B, R_Z80C) | Z80FN _ld_b_c(void)                     MCR_LD(R_Z80B, R_Z80C) | 
 | Z80FN _ld_b_d(void)                     MCR_LD(R_Z80B, R_Z80D) | Z80FN _ld_b_d(void)                     MCR_LD(R_Z80B, R_Z80D) | 
| Line 150  Z80FN _add_a_e(void)  MCR_ADD(R_Z80E) | Line 149  Z80FN _add_a_e(void)  MCR_ADD(R_Z80E) | 
 | Z80FN _add_a_h(void)            MCR_ADD(R_Z80H) | Z80FN _add_a_h(void)            MCR_ADD(R_Z80H) | 
 | Z80FN _add_a_l(void)            MCR_ADD(R_Z80L) | Z80FN _add_a_l(void)            MCR_ADD(R_Z80L) | 
 | Z80FN _add_a_xhl(void)          MCR_ADD_XHL | Z80FN _add_a_xhl(void)          MCR_ADD_XHL | 
| Z80FN _add_a_a(void)            MCR_ADD(R_Z80A)                         // !! | Z80FN _add_a_a(void)            MCR_ADD(R_Z80A)                         /* !! */ | 
 | Z80FN _adc_a_b(void)            MCR_ADC(R_Z80B) | Z80FN _adc_a_b(void)            MCR_ADC(R_Z80B) | 
 | Z80FN _adc_a_c(void)            MCR_ADC(R_Z80C) | Z80FN _adc_a_c(void)            MCR_ADC(R_Z80C) | 
 | Z80FN _adc_a_d(void)            MCR_ADC(R_Z80D) | Z80FN _adc_a_d(void)            MCR_ADC(R_Z80D) | 
| Line 158  Z80FN _adc_a_e(void)  MCR_ADC(R_Z80E) | Line 157  Z80FN _adc_a_e(void)  MCR_ADC(R_Z80E) | 
 | Z80FN _adc_a_h(void)            MCR_ADC(R_Z80H) | Z80FN _adc_a_h(void)            MCR_ADC(R_Z80H) | 
 | Z80FN _adc_a_l(void)            MCR_ADC(R_Z80L) | Z80FN _adc_a_l(void)            MCR_ADC(R_Z80L) | 
 | Z80FN _adc_a_xhl(void)          MCR_ADC_XHL | Z80FN _adc_a_xhl(void)          MCR_ADC_XHL | 
| Z80FN _adc_a_a(void)            MCR_ADC(R_Z80A)                         // !! | Z80FN _adc_a_a(void)            MCR_ADC(R_Z80A)                         /* !! */ | 
 |  |  | 
 | Z80FN _sub_b(void)                      MCR_SUB(R_Z80B) | Z80FN _sub_b(void)                      MCR_SUB(R_Z80B) | 
 | Z80FN _sub_c(void)                      MCR_SUB(R_Z80C) | Z80FN _sub_c(void)                      MCR_SUB(R_Z80C) | 
| Line 167  Z80FN _sub_e(void)   MCR_SUB(R_Z80E) | Line 166  Z80FN _sub_e(void)   MCR_SUB(R_Z80E) | 
 | Z80FN _sub_h(void)                      MCR_SUB(R_Z80H) | Z80FN _sub_h(void)                      MCR_SUB(R_Z80H) | 
 | Z80FN _sub_l(void)                      MCR_SUB(R_Z80L) | Z80FN _sub_l(void)                      MCR_SUB(R_Z80L) | 
 | Z80FN _sub_xhl(void)            MCR_SUB_XHL | Z80FN _sub_xhl(void)            MCR_SUB_XHL | 
| Z80FN _sub_a(void)                      MCR_SUB(R_Z80A)                         // !! | Z80FN _sub_a(void)                      MCR_SUB(R_Z80A)                         /* !! */ | 
 | Z80FN _sbc_a_b(void)            MCR_SBC(R_Z80B) | Z80FN _sbc_a_b(void)            MCR_SBC(R_Z80B) | 
 | Z80FN _sbc_a_c(void)            MCR_SBC(R_Z80C) | Z80FN _sbc_a_c(void)            MCR_SBC(R_Z80C) | 
 | Z80FN _sbc_a_d(void)            MCR_SBC(R_Z80D) | Z80FN _sbc_a_d(void)            MCR_SBC(R_Z80D) | 
| Line 175  Z80FN _sbc_a_e(void)  MCR_SBC(R_Z80E) | Line 174  Z80FN _sbc_a_e(void)  MCR_SBC(R_Z80E) | 
 | Z80FN _sbc_a_h(void)            MCR_SBC(R_Z80H) | Z80FN _sbc_a_h(void)            MCR_SBC(R_Z80H) | 
 | Z80FN _sbc_a_l(void)            MCR_SBC(R_Z80L) | Z80FN _sbc_a_l(void)            MCR_SBC(R_Z80L) | 
 | Z80FN _sbc_a_xhl(void)          MCR_SBC_XHL | Z80FN _sbc_a_xhl(void)          MCR_SBC_XHL | 
| Z80FN _sbc_a_a(void)            MCR_SBC(R_Z80A)                         // !! | Z80FN _sbc_a_a(void)            MCR_SBC(R_Z80A)                         /* !! */ | 
 |  |  | 
 | Z80FN _and_b(void)                      MCR_AND(R_Z80B) | Z80FN _and_b(void)                      MCR_AND(R_Z80B) | 
 | Z80FN _and_c(void)                      MCR_AND(R_Z80C) | Z80FN _and_c(void)                      MCR_AND(R_Z80C) | 
| Line 184  Z80FN _and_e(void)   MCR_AND(R_Z80E) | Line 183  Z80FN _and_e(void)   MCR_AND(R_Z80E) | 
 | Z80FN _and_h(void)                      MCR_AND(R_Z80H) | Z80FN _and_h(void)                      MCR_AND(R_Z80H) | 
 | Z80FN _and_l(void)                      MCR_AND(R_Z80L) | Z80FN _and_l(void)                      MCR_AND(R_Z80L) | 
 | Z80FN _and_xhl(void)            MCR_AND_XHL | Z80FN _and_xhl(void)            MCR_AND_XHL | 
| Z80FN _and_a(void)                      MCR_AND(R_Z80A)                         // !! | Z80FN _and_a(void)                      MCR_AND(R_Z80A)                         /* !! */ | 
 | Z80FN _xor_b(void)                      MCR_XOR(R_Z80B) | Z80FN _xor_b(void)                      MCR_XOR(R_Z80B) | 
 | Z80FN _xor_c(void)                      MCR_XOR(R_Z80C) | Z80FN _xor_c(void)                      MCR_XOR(R_Z80C) | 
 | Z80FN _xor_d(void)                      MCR_XOR(R_Z80D) | Z80FN _xor_d(void)                      MCR_XOR(R_Z80D) | 
| Line 192  Z80FN _xor_e(void)   MCR_XOR(R_Z80E) | Line 191  Z80FN _xor_e(void)   MCR_XOR(R_Z80E) | 
 | Z80FN _xor_h(void)                      MCR_XOR(R_Z80H) | Z80FN _xor_h(void)                      MCR_XOR(R_Z80H) | 
 | Z80FN _xor_l(void)                      MCR_XOR(R_Z80L) | Z80FN _xor_l(void)                      MCR_XOR(R_Z80L) | 
 | Z80FN _xor_xhl(void)            MCR_XOR_XHL | Z80FN _xor_xhl(void)            MCR_XOR_XHL | 
| Z80FN _xor_a(void)                      MCR_XOR(R_Z80A)                         // !! | Z80FN _xor_a(void)                      MCR_XOR(R_Z80A)                         /* !! */ | 
 |  |  | 
 | Z80FN _or_b(void)                       MCR_OR(R_Z80B) | Z80FN _or_b(void)                       MCR_OR(R_Z80B) | 
 | Z80FN _or_c(void)                       MCR_OR(R_Z80C) | Z80FN _or_c(void)                       MCR_OR(R_Z80C) | 
| Line 201  Z80FN _or_e(void)   MCR_OR(R_Z80E) | Line 200  Z80FN _or_e(void)   MCR_OR(R_Z80E) | 
 | Z80FN _or_h(void)                       MCR_OR(R_Z80H) | Z80FN _or_h(void)                       MCR_OR(R_Z80H) | 
 | Z80FN _or_l(void)                       MCR_OR(R_Z80L) | Z80FN _or_l(void)                       MCR_OR(R_Z80L) | 
 | Z80FN _or_xhl(void)                     MCR_OR_XHL | Z80FN _or_xhl(void)                     MCR_OR_XHL | 
| Z80FN _or_a(void)                       MCR_OR(R_Z80A)                          // !! | Z80FN _or_a(void)                       MCR_OR(R_Z80A)                          /* !! */ | 
 | Z80FN _cp_b(void)                       MCR_CP(R_Z80B) | Z80FN _cp_b(void)                       MCR_CP(R_Z80B) | 
 | Z80FN _cp_c(void)                       MCR_CP(R_Z80C) | Z80FN _cp_c(void)                       MCR_CP(R_Z80C) | 
 | Z80FN _cp_d(void)                       MCR_CP(R_Z80D) | Z80FN _cp_d(void)                       MCR_CP(R_Z80D) | 
| Line 209  Z80FN _cp_e(void)   MCR_CP(R_Z80E) | Line 208  Z80FN _cp_e(void)   MCR_CP(R_Z80E) | 
 | Z80FN _cp_h(void)                       MCR_CP(R_Z80H) | Z80FN _cp_h(void)                       MCR_CP(R_Z80H) | 
 | Z80FN _cp_l(void)                       MCR_CP(R_Z80L) | Z80FN _cp_l(void)                       MCR_CP(R_Z80L) | 
 | Z80FN _cp_xhl(void)                     MCR_CP_XHL | Z80FN _cp_xhl(void)                     MCR_CP_XHL | 
| Z80FN _cp_a(void)                       MCR_CP(R_Z80A)                          // !! | Z80FN _cp_a(void)                       MCR_CP(R_Z80A)                          /* !! */ | 
 |  |  | 
 | Z80FN _ret_nz(void)                     MCR_RETNFLG(Z_FLAG) | Z80FN _ret_nz(void)                     MCR_RETNFLG(Z_FLAG) | 
 | Z80FN _pop_bc(void)                     MCR_POP(R_Z80BC) | Z80FN _pop_bc(void)                     MCR_POP(R_Z80BC) | 
| Line 277  Z80FN _rst_38(void)   MCR_RST(0x38) | Line 276  Z80FN _rst_38(void)   MCR_RST(0x38) | 
 |  |  | 
 |  |  | 
 | const Z80OP z80c_mainop[256] = { | const Z80OP z80c_mainop[256] = { | 
| _ld_nop,                _ld_bc_word,    _ld_xbc_a,              _inc_bc,                // 00 | _ld_nop,                _ld_bc_word,    _ld_xbc_a,              _inc_bc,                /* 00 */ | 
| _inc_b,                 _dec_b,                 _ld_b_byte,             _rlca, | _inc_b,                 _dec_b,                 _ld_b_byte,             _rlca, | 
| _ex_af_af,              _add_hl_bc,             _ld_a_xbc,              _dec_bc, | _ex_af_af,              _add_hl_bc,             _ld_a_xbc,              _dec_bc, | 
| _inc_c,                 _dec_c,                 _ld_c_byte,             _rrca, | _inc_c,                 _dec_c,                 _ld_c_byte,             _rrca, | 
|  |  | 
| _djnz,                  _ld_de_word,    _ld_xde_a,              _inc_de,                // 10 | _djnz,                  _ld_de_word,    _ld_xde_a,              _inc_de,                /* 10 */ | 
| _inc_d,                 _dec_d,                 _ld_d_byte,             _rla, | _inc_d,                 _dec_d,                 _ld_d_byte,             _rla, | 
| _jr,                    _add_hl_de,             _ld_a_xde,              _dec_de, | _jr,                    _add_hl_de,             _ld_a_xde,              _dec_de, | 
| _inc_e,                 _dec_e,                 _ld_e_byte,             _rra, | _inc_e,                 _dec_e,                 _ld_e_byte,             _rra, | 
|  |  | 
| _jr_nz,                 _ld_hl_word,    _ld_xword_hl,   _inc_hl,                // 20 | _jr_nz,                 _ld_hl_word,    _ld_xword_hl,   _inc_hl,                /* 20 */ | 
| _inc_h,                 _dec_h,                 _ld_h_byte,             _daa, | _inc_h,                 _dec_h,                 _ld_h_byte,             _daa, | 
| _jr_z,                  _add_hl_hl,             _ld_hl_xword,   _dec_hl, | _jr_z,                  _add_hl_hl,             _ld_hl_xword,   _dec_hl, | 
| _inc_l,                 _dec_l,                 _ld_l_byte,             _cpl, | _inc_l,                 _dec_l,                 _ld_l_byte,             _cpl, | 
|  |  | 
| _jr_nc,                 _ld_sp_word,    _ld_xbyte_a,    _inc_sp,                // 30 | _jr_nc,                 _ld_sp_word,    _ld_xbyte_a,    _inc_sp,                /* 30 */ | 
| _inc_xhl,               _dec_xhl,               _ld_xhl_byte,   _scf, | _inc_xhl,               _dec_xhl,               _ld_xhl_byte,   _scf, | 
| _jr_c,                  _add_hl_sp,             _ld_a_xbyte,    _dec_sp, | _jr_c,                  _add_hl_sp,             _ld_a_xbyte,    _dec_sp, | 
| _inc_a,                 _dec_a,                 _ld_a_byte,             _ccf, | _inc_a,                 _dec_a,                 _ld_a_byte,             _ccf, | 
|  |  | 
| _ld_nop,                _ld_b_c,                _ld_b_d,                _ld_b_e,                // 40 | _ld_nop,                _ld_b_c,                _ld_b_d,                _ld_b_e,                /* 40 */ | 
| _ld_b_h,                _ld_b_l,                _ld_b_xhl,              _ld_b_a, | _ld_b_h,                _ld_b_l,                _ld_b_xhl,              _ld_b_a, | 
| _ld_c_b,                _ld_nop,                _ld_c_d,                _ld_c_e, | _ld_c_b,                _ld_nop,                _ld_c_d,                _ld_c_e, | 
| _ld_c_h,                _ld_c_l,                _ld_c_xhl,              _ld_c_a, | _ld_c_h,                _ld_c_l,                _ld_c_xhl,              _ld_c_a, | 
|  |  | 
| _ld_d_b,                _ld_d_c,                _ld_nop,                _ld_d_e,                // 50 | _ld_d_b,                _ld_d_c,                _ld_nop,                _ld_d_e,                /* 50 */ | 
| _ld_d_h,                _ld_d_l,                _ld_d_xhl,              _ld_d_a, | _ld_d_h,                _ld_d_l,                _ld_d_xhl,              _ld_d_a, | 
| _ld_e_b,                _ld_e_c,                _ld_e_d,                _ld_nop, | _ld_e_b,                _ld_e_c,                _ld_e_d,                _ld_nop, | 
| _ld_e_h,                _ld_e_l,                _ld_e_xhl,              _ld_e_a, | _ld_e_h,                _ld_e_l,                _ld_e_xhl,              _ld_e_a, | 
|  |  | 
| _ld_h_b,                _ld_h_c,                _ld_h_d,                _ld_h_e,                // 60 | _ld_h_b,                _ld_h_c,                _ld_h_d,                _ld_h_e,                /* 60 */ | 
| _ld_nop,                _ld_h_l,                _ld_h_xhl,              _ld_h_a, | _ld_nop,                _ld_h_l,                _ld_h_xhl,              _ld_h_a, | 
| _ld_l_b,                _ld_l_c,                _ld_l_d,                _ld_l_e, | _ld_l_b,                _ld_l_c,                _ld_l_d,                _ld_l_e, | 
| _ld_l_h,                _ld_nop,                _ld_l_xhl,              _ld_l_a, | _ld_l_h,                _ld_nop,                _ld_l_xhl,              _ld_l_a, | 
|  |  | 
| _ld_xhl_b,              _ld_xhl_c,              _ld_xhl_d,              _ld_xhl_e,              // 70 | _ld_xhl_b,              _ld_xhl_c,              _ld_xhl_d,              _ld_xhl_e,              /* 70 */ | 
| _ld_xhl_h,              _ld_xhl_l,              _halt,                  _ld_xhl_a, | _ld_xhl_h,              _ld_xhl_l,              _halt,                  _ld_xhl_a, | 
| _ld_a_b,                _ld_a_c,                _ld_a_d,                _ld_a_e, | _ld_a_b,                _ld_a_c,                _ld_a_d,                _ld_a_e, | 
| _ld_a_h,                _ld_a_l,                _ld_a_xhl,              _ld_nop, | _ld_a_h,                _ld_a_l,                _ld_a_xhl,              _ld_nop, | 
|  |  | 
| _add_a_b,               _add_a_c,               _add_a_d,               _add_a_e,               // 80 | _add_a_b,               _add_a_c,               _add_a_d,               _add_a_e,               /* 80 */ | 
| _add_a_h,               _add_a_l,               _add_a_xhl,             _add_a_a, | _add_a_h,               _add_a_l,               _add_a_xhl,             _add_a_a, | 
| _adc_a_b,               _adc_a_c,               _adc_a_d,               _adc_a_e, | _adc_a_b,               _adc_a_c,               _adc_a_d,               _adc_a_e, | 
| _adc_a_h,               _adc_a_l,               _adc_a_xhl,             _adc_a_a, | _adc_a_h,               _adc_a_l,               _adc_a_xhl,             _adc_a_a, | 
|  |  | 
| _sub_b,                 _sub_c,                 _sub_d,                 _sub_e,                 // 90 | _sub_b,                 _sub_c,                 _sub_d,                 _sub_e,                 /* 90 */ | 
| _sub_h,                 _sub_l,                 _sub_xhl,               _sub_a, | _sub_h,                 _sub_l,                 _sub_xhl,               _sub_a, | 
| _sbc_a_b,               _sbc_a_c,               _sbc_a_d,               _sbc_a_e, | _sbc_a_b,               _sbc_a_c,               _sbc_a_d,               _sbc_a_e, | 
| _sbc_a_h,               _sbc_a_l,               _sbc_a_xhl,             _sbc_a_a, | _sbc_a_h,               _sbc_a_l,               _sbc_a_xhl,             _sbc_a_a, | 
|  |  | 
| _and_b,                 _and_c,                 _and_d,                 _and_e,                 // a0 | _and_b,                 _and_c,                 _and_d,                 _and_e,                 /* a0 */ | 
| _and_h,                 _and_l,                 _and_xhl,               _and_a, | _and_h,                 _and_l,                 _and_xhl,               _and_a, | 
| _xor_b,                 _xor_c,                 _xor_d,                 _xor_e, | _xor_b,                 _xor_c,                 _xor_d,                 _xor_e, | 
| _xor_h,                 _xor_l,                 _xor_xhl,               _xor_a, | _xor_h,                 _xor_l,                 _xor_xhl,               _xor_a, | 
|  |  | 
| _or_b,                  _or_c,                  _or_d,                  _or_e,                  // b0 | _or_b,                  _or_c,                  _or_d,                  _or_e,                  /* b0 */ | 
| _or_h,                  _or_l,                  _or_xhl,                _or_a, | _or_h,                  _or_l,                  _or_xhl,                _or_a, | 
| _cp_b,                  _cp_c,                  _cp_d,                  _cp_e, | _cp_b,                  _cp_c,                  _cp_d,                  _cp_e, | 
| _cp_h,                  _cp_l,                  _cp_xhl,                _cp_a, | _cp_h,                  _cp_l,                  _cp_xhl,                _cp_a, | 
|  |  | 
| _ret_nz,                _pop_bc,                _jp_nz,                 _jp,                    // c0 | _ret_nz,                _pop_bc,                _jp_nz,                 _jp,                    /* c0 */ | 
| _call_nz,               _push_bc,               _add_a_byte,    _rst_00, | _call_nz,               _push_bc,               _add_a_byte,    _rst_00, | 
| _ret_z,                 _ret,                   _jp_z,                  z80c_cb, | _ret_z,                 _ret,                   _jp_z,                  z80c_cb, | 
| _call_z,                _call,                  _adc_a_byte,    _rst_08, | _call_z,                _call,                  _adc_a_byte,    _rst_08, | 
|  |  | 
| _ret_nc,                _pop_de,                _jp_nc,                 _out_byte_a,    // d0 | _ret_nc,                _pop_de,                _jp_nc,                 _out_byte_a,    /* d0 */ | 
| _call_nc,               _push_de,               _sub_byte,              _rst_10, | _call_nc,               _push_de,               _sub_byte,              _rst_10, | 
| _ret_c,                 _exx,                   _jp_c,                  _in_a_byte, | _ret_c,                 _exx,                   _jp_c,                  _in_a_byte, | 
| _call_c,                z80c_ix,                _sbc_a_byte,    _rst_18, | _call_c,                z80c_ix,                _sbc_a_byte,    _rst_18, | 
|  |  | 
| _ret_po,                _pop_hl,                _jp_po,                 _ex_xsp_hl,             // e0 | _ret_po,                _pop_hl,                _jp_po,                 _ex_xsp_hl,             /* e0 */ | 
| _call_po,               _push_hl,               _and_byte,              _rst_20, | _call_po,               _push_hl,               _and_byte,              _rst_20, | 
| _ret_pe,                _jp_hl,                 _jp_pe,                 _ex_de_hl, | _ret_pe,                _jp_hl,                 _jp_pe,                 _ex_de_hl, | 
| _call_pe,               z80c_sub,               _xor_byte,              _rst_28, | _call_pe,               z80c_sub,               _xor_byte,              _rst_28, | 
|  |  | 
| _ret_p,                 _pop_af,                _jp_p,                  _di,                    // f0 | _ret_p,                 _pop_af,                _jp_p,                  _di,                    /* f0 */ | 
| _call_p,                _push_af,               _or_byte,               _rst_30, | _call_p,                _push_af,               _or_byte,               _rst_30, | 
| _ret_m,                 _ld_sp_hl,              _jp_m,                  _ei, | _ret_m,                 _ld_sp_hl,              _jp_m,                  _ei, | 
| _call_m,                z80c_iy,                _cp_byte,               _rst_38 | _call_m,                z80c_iy,                _cp_byte,               _rst_38 | 
 | }; | }; | 
 |  |  |