/* -----------------------------------------------------------------------
*
* Z80C : Z80 Engine - GENERIC
*
* Copyright by Studio Milmake 1999-2000,2004
*
*------------------------------------------------------------------------ */
#include "compiler.h"
#include "z80core.h"
#include "z80c.h"
#include "z80c.mcr"
#include "z80c_i.mcr"
#define R_Z80IYL z80core.s.r.b.iyl
#define R_Z80IYH z80core.s.r.b.iyh
#undef R_Z80IX
Z80FN _ld_nop(void) { }
Z80FN _no_op(void) MCR_DEC_W(R_Z80PC)
Z80FN _add_iy_bc(void) MCR_ADD_W(R_Z80IY, R_Z80BC)
Z80FN _add_iy_de(void) MCR_ADD_W(R_Z80IY, R_Z80DE)
Z80FN _ld_iy_word(void) LDW_w(R_Z80IY)
Z80FN _ld_xword_iy(void) LDx_W(R_Z80IY)
Z80FN _inc_iy(void) MCR_INC_W(R_Z80IY)
Z80FN _inc_iyh(void) MCR_INC(R_Z80IYH)
Z80FN _dec_iyh(void) MCR_DEC(R_Z80IYH)
Z80FN _ld_iyh_byte(void) LDB_b(R_Z80IYH)
Z80FN _add_iy_iy(void) MCR_ADDx2(R_Z80IY)
Z80FN _ld_iy_xword(void) LDW_x(R_Z80IY)
Z80FN _dec_iy(void) MCR_DEC_W(R_Z80IY)
Z80FN _inc_iyl(void) MCR_INC(R_Z80IYL)
Z80FN _dec_iyl(void) MCR_DEC(R_Z80IYL)
Z80FN _ld_iyl_byte(void) LDB_b(R_Z80IYL)
Z80FN _inc_xiy(void) MCR_INC_XI(R_Z80IY)
Z80FN _dec_xiy(void) MCR_DEC_XI(R_Z80IY)
Z80FN _ld_xiy_byte(void) MCR_LDXIBYTE(R_Z80IY)
Z80FN _add_iy_sp(void) MCR_ADD_W(R_Z80IY, R_Z80SP)
Z80FN _ld_b_iyh(void) MCR_LD(R_Z80B, R_Z80IYH)
Z80FN _ld_b_iyl(void) MCR_LD(R_Z80B, R_Z80IYL)
Z80FN _ld_b_xiy(void) MCR_LD_RXI(R_Z80B, R_Z80IY)
Z80FN _ld_c_iyh(void) MCR_LD(R_Z80C, R_Z80IYH)
Z80FN _ld_c_iyl(void) MCR_LD(R_Z80C, R_Z80IYL)
Z80FN _ld_c_xiy(void) MCR_LD_RXI(R_Z80C, R_Z80IY)
Z80FN _ld_d_iyh(void) MCR_LD(R_Z80D, R_Z80IYH)
Z80FN _ld_d_iyl(void) MCR_LD(R_Z80D, R_Z80IYL)
Z80FN _ld_d_xiy(void) MCR_LD_RXI(R_Z80D, R_Z80IY)
Z80FN _ld_e_iyh(void) MCR_LD(R_Z80E, R_Z80IYH)
Z80FN _ld_e_iyl(void) MCR_LD(R_Z80E, R_Z80IYL)
Z80FN _ld_e_xiy(void) MCR_LD_RXI(R_Z80E, R_Z80IY)
Z80FN _ld_iyh_b(void) MCR_LD(R_Z80IYH, R_Z80B)
Z80FN _ld_iyh_c(void) MCR_LD(R_Z80IYH, R_Z80C)
Z80FN _ld_iyh_d(void) MCR_LD(R_Z80IYH, R_Z80D)
Z80FN _ld_iyh_e(void) MCR_LD(R_Z80IYH, R_Z80E)
Z80FN _ld_iyh_iyl(void) MCR_LD(R_Z80IYH, R_Z80IYL)
Z80FN _ld_h_xiy(void) MCR_LD_RXI(R_Z80H, R_Z80IY)
Z80FN _ld_iyh_a(void) MCR_LD(R_Z80IYH, R_Z80A)
Z80FN _ld_iyl_b(void) MCR_LD(R_Z80IYL, R_Z80B)
Z80FN _ld_iyl_c(void) MCR_LD(R_Z80IYL, R_Z80C)
Z80FN _ld_iyl_d(void) MCR_LD(R_Z80IYL, R_Z80D)
Z80FN _ld_iyl_e(void) MCR_LD(R_Z80IYL, R_Z80E)
Z80FN _ld_iyl_iyh(void) MCR_LD(R_Z80IYL, R_Z80IYH)
Z80FN _ld_l_xiy(void) MCR_LD_RXI(R_Z80L, R_Z80IY)
Z80FN _ld_iyl_a(void) MCR_LD(R_Z80IYL, R_Z80A)
Z80FN _ld_xiy_b(void) MCR_LD_XIR(R_Z80B, R_Z80IY)
Z80FN _ld_xiy_c(void) MCR_LD_XIR(R_Z80C, R_Z80IY)
Z80FN _ld_xiy_d(void) MCR_LD_XIR(R_Z80D, R_Z80IY)
Z80FN _ld_xiy_e(void) MCR_LD_XIR(R_Z80E, R_Z80IY)
Z80FN _ld_xiy_h(void) MCR_LD_XIR(R_Z80H, R_Z80IY)
Z80FN _ld_xiy_l(void) MCR_LD_XIR(R_Z80L, R_Z80IY)
Z80FN _ld_xiy_a(void) MCR_LD_XIR(R_Z80A, R_Z80IY)
Z80FN _ld_a_iyh(void) MCR_LD(R_Z80A, R_Z80IYH)
Z80FN _ld_a_iyl(void) MCR_LD(R_Z80A, R_Z80IYL)
Z80FN _ld_a_xiy(void) MCR_LD_RXI(R_Z80A, R_Z80IY)
Z80FN _add_a_iyh(void) MCR_ADD(R_Z80IYH)
Z80FN _add_a_iyl(void) MCR_ADD(R_Z80IYL)
Z80FN _add_a_xiy(void) MCR_ADD_XI(R_Z80IY)
Z80FN _adc_a_iyh(void) MCR_ADC(R_Z80IYH)
Z80FN _adc_a_iyl(void) MCR_ADC(R_Z80IYL)
Z80FN _adc_a_xiy(void) MCR_ADC_XI(R_Z80IY)
Z80FN _sub_iyh(void) MCR_SUB(R_Z80IYH)
Z80FN _sub_iyl(void) MCR_SUB(R_Z80IYL)
Z80FN _sub_xiy(void) MCR_SUB_XI(R_Z80IY)
Z80FN _sbc_a_iyh(void) MCR_SBC(R_Z80IYH)
Z80FN _sbc_a_iyl(void) MCR_SBC(R_Z80IYL)
Z80FN _sbc_a_xiy(void) MCR_SBC_XI(R_Z80IY)
Z80FN _and_iyh(void) MCR_AND(R_Z80IYH)
Z80FN _and_iyl(void) MCR_AND(R_Z80IYL)
Z80FN _and_xiy(void) MCR_AND_XI(R_Z80IY)
Z80FN _xor_iyh(void) MCR_XOR(R_Z80IYH)
Z80FN _xor_iyl(void) MCR_XOR(R_Z80IYL)
Z80FN _xor_xiy(void) MCR_XOR_XI(R_Z80IY)
Z80FN _or_iyh(void) MCR_OR(R_Z80IYH)
Z80FN _or_iyl(void) MCR_OR(R_Z80IYL)
Z80FN _or_xiy(void) MCR_OR_XI(R_Z80IY)
Z80FN _cp_iyh(void) MCR_CP(R_Z80IYH)
Z80FN _cp_iyl(void) MCR_CP(R_Z80IYL)
Z80FN _cp_xiy(void) MCR_CP_XI(R_Z80IY)
Z80FN _pop_iy(void) MCR_POP(R_Z80IY)
Z80FN _ex_xsp_iy(void) MCR_EX_XSP(R_Z80IY)
Z80FN _push_iy(void) MCR_PUSH(R_Z80IY)
Z80FN _jp_iy(void) MCR_LD_W(R_Z80PC, R_Z80IY)
Z80FN _ld_sp_iy(void) MCR_LD_W(R_Z80SP, R_Z80IY)
static const Z80OP z80c_iyp[256] = {
_no_op, _no_op, _no_op, _no_op, /* 00 */
_no_op, _no_op, _no_op, _no_op,
_no_op, _add_iy_bc, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op, /* 10 */
_no_op, _no_op, _no_op, _no_op,
_no_op, _add_iy_de, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op,
_no_op, _ld_iy_word, _ld_xword_iy, _inc_iy, /* 20 */
_inc_iyh, _dec_iyh, _ld_iyh_byte, _no_op,
_no_op, _add_iy_iy, _ld_iy_xword, _dec_iy,
_inc_iyl, _dec_iyl, _ld_iyl_byte, _no_op,
_no_op, _no_op, _no_op, _no_op, /* 30 */
_inc_xiy, _dec_xiy, _ld_xiy_byte, _no_op,
_no_op, _add_iy_sp, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op, /* 40 */
_ld_b_iyh, _ld_b_iyl, _ld_b_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op,
_ld_c_iyh, _ld_c_iyl, _ld_c_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op, /* 50 */
_ld_d_iyh, _ld_d_iyl, _ld_d_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op,
_ld_e_iyh, _ld_e_iyl, _ld_e_xiy, _no_op,
_ld_iyh_b, _ld_iyh_c, _ld_iyh_d, _ld_iyh_e, /* 60 */
_ld_nop, _ld_iyh_iyl, _ld_h_xiy, _ld_iyh_a,
_ld_iyl_b, _ld_iyl_c, _ld_iyl_d, _ld_iyl_e,
_ld_iyl_iyh, _ld_nop, _ld_l_xiy, _ld_iyl_a,
_ld_xiy_b, _ld_xiy_c, _ld_xiy_d, _ld_xiy_e, /* 70 */
_ld_xiy_h, _ld_xiy_l, _no_op, _ld_xiy_a,
_no_op, _no_op, _no_op, _no_op,
_ld_a_iyh, _ld_a_iyl, _ld_a_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op, /* 80 */
_add_a_iyh, _add_a_iyl, _add_a_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op,
_adc_a_iyh, _adc_a_iyl, _adc_a_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op, /* 90 */
_sub_iyh, _sub_iyl, _sub_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op,
_sbc_a_iyh, _sbc_a_iyl, _sbc_a_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op, /* a0 */
_and_iyh, _and_iyl, _and_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op,
_xor_iyh, _xor_iyl, _xor_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op, /* b0 */
_or_iyh, _or_iyl, _or_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op,
_cp_iyh, _cp_iyl, _cp_xiy, _no_op,
_no_op, _no_op, _no_op, _no_op, /* c0 */
_no_op, _no_op, _no_op, _no_op,
_no_op, _no_op, _no_op, z80c_iycb,
_no_op, _no_op, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op, /* d0 */
_no_op, _no_op, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op,
_no_op, _pop_iy, _no_op, _ex_xsp_iy, /* e0 */
_no_op, _push_iy, _no_op, _no_op,
_no_op, _jp_iy, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op, /* f0 */
_no_op, _no_op, _no_op, _no_op,
_no_op, _ld_sp_iy, _no_op, _no_op,
_no_op, _no_op, _no_op, _no_op
};
void z80c_iy(void) {
UINT tmp;
R_Z80R++;
GET_PC_BYTE(tmp);
Z80_COUNT(cycles_xx[tmp]);
z80c_iyp[tmp]();
}
RetroPC.NET-CVS <cvs@retropc.net>