| version 1.1, 2004/08/01 05:31:32 | 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" | 
 | #include        "z80c.h" | #include        "z80c.h" | 
 | #include        "x1_io.h" |  | 
 | #include        "z80c.mcr" | #include        "z80c.mcr" | 
 | #include        "z80c_i.mcr" | #include        "z80c_i.mcr" | 
 |  |  | 
| Line 123  Z80FN _ld_sp_ix(void)  MCR_LD_W(R_Z80SP, | Line 121  Z80FN _ld_sp_ix(void)  MCR_LD_W(R_Z80SP, | 
 |  |  | 
 |  |  | 
 | static const Z80OP z80c_ixp[256] = { | static const Z80OP z80c_ixp[256] = { | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // 00 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* 00 */ | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _no_op,                 _add_ix_bc,             _no_op,                 _no_op, | _no_op,                 _add_ix_bc,             _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,                 _no_op,                 // 10 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* 10 */ | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _no_op,                 _add_ix_de,             _no_op,                 _no_op, | _no_op,                 _add_ix_de,             _no_op,                 _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
|  |  | 
| _no_op,                 _ld_ix_word,    _ld_xword_ix,   _inc_ix,                // 20 | _no_op,                 _ld_ix_word,    _ld_xword_ix,   _inc_ix,                /* 20 */ | 
| _inc_ixh,               _dec_ixh,               _ld_ixh_byte,   _no_op, | _inc_ixh,               _dec_ixh,               _ld_ixh_byte,   _no_op, | 
| _no_op,                 _add_ix_ix,             _ld_ix_xword,   _dec_ix, | _no_op,                 _add_ix_ix,             _ld_ix_xword,   _dec_ix, | 
| _inc_ixl,               _dec_ixl,               _ld_ixl_byte,   _no_op, | _inc_ixl,               _dec_ixl,               _ld_ixl_byte,   _no_op, | 
|  |  | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // 30 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* 30 */ | 
| _inc_xix,               _dec_xix,               _ld_xix_byte,   _no_op, | _inc_xix,               _dec_xix,               _ld_xix_byte,   _no_op, | 
| _no_op,                 _add_ix_sp,             _no_op,                 _no_op, | _no_op,                 _add_ix_sp,             _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,                 _no_op,                 // 40 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* 40 */ | 
| _ld_b_ixh,              _ld_b_ixl,              _ld_b_xix,              _no_op, | _ld_b_ixh,              _ld_b_ixl,              _ld_b_xix,              _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _ld_c_ixh,              _ld_c_ixl,              _ld_c_xix,              _no_op, | _ld_c_ixh,              _ld_c_ixl,              _ld_c_xix,              _no_op, | 
|  |  | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // 50 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* 50 */ | 
| _ld_d_ixh,              _ld_d_ixl,              _ld_d_xix,              _no_op, | _ld_d_ixh,              _ld_d_ixl,              _ld_d_xix,              _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _ld_e_ixh,              _ld_e_ixl,              _ld_e_xix,              _no_op, | _ld_e_ixh,              _ld_e_ixl,              _ld_e_xix,              _no_op, | 
|  |  | 
| _ld_ixh_b,              _ld_ixh_c,              _ld_ixh_d,              _ld_ixh_e,              // 60 | _ld_ixh_b,              _ld_ixh_c,              _ld_ixh_d,              _ld_ixh_e,              /* 60 */ | 
| _ld_nop,                _ld_ixh_ixl,    _ld_h_xix,              _ld_ixh_a, | _ld_nop,                _ld_ixh_ixl,    _ld_h_xix,              _ld_ixh_a, | 
| _ld_ixl_b,              _ld_ixl_c,              _ld_ixl_d,              _ld_ixl_e, | _ld_ixl_b,              _ld_ixl_c,              _ld_ixl_d,              _ld_ixl_e, | 
| _ld_ixl_ixh,    _ld_nop,                _ld_l_xix,              _ld_ixl_a, | _ld_ixl_ixh,    _ld_nop,                _ld_l_xix,              _ld_ixl_a, | 
|  |  | 
| _ld_xix_b,              _ld_xix_c,              _ld_xix_d,              _ld_xix_e,              // 70 | _ld_xix_b,              _ld_xix_c,              _ld_xix_d,              _ld_xix_e,              /* 70 */ | 
| _ld_xix_h,              _ld_xix_l,              _no_op,                 _ld_xix_a, | _ld_xix_h,              _ld_xix_l,              _no_op,                 _ld_xix_a, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _ld_a_ixh,              _ld_a_ixl,              _ld_a_xix,              _no_op, | _ld_a_ixh,              _ld_a_ixl,              _ld_a_xix,              _no_op, | 
|  |  | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // 80 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* 80 */ | 
| _add_a_ixh,             _add_a_ixl,             _add_a_xix,             _no_op, | _add_a_ixh,             _add_a_ixl,             _add_a_xix,             _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _adc_a_ixh,             _adc_a_ixl,             _adc_a_xix,             _no_op, | _adc_a_ixh,             _adc_a_ixl,             _adc_a_xix,             _no_op, | 
|  |  | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // 90 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* 90 */ | 
| _sub_ixh,               _sub_ixl,               _sub_xix,               _no_op, | _sub_ixh,               _sub_ixl,               _sub_xix,               _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _sbc_a_ixh,             _sbc_a_ixl,             _sbc_a_xix,             _no_op, | _sbc_a_ixh,             _sbc_a_ixl,             _sbc_a_xix,             _no_op, | 
|  |  | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // a0 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* a0 */ | 
| _and_ixh,               _and_ixl,               _and_xix,               _no_op, | _and_ixh,               _and_ixl,               _and_xix,               _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _xor_ixh,               _xor_ixl,               _xor_xix,               _no_op, | _xor_ixh,               _xor_ixl,               _xor_xix,               _no_op, | 
|  |  | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // b0 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* b0 */ | 
| _or_ixh,                _or_ixl,                _or_xix,                _no_op, | _or_ixh,                _or_ixl,                _or_xix,                _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _cp_ixh,                _cp_ixl,                _cp_xix,                _no_op, | _cp_ixh,                _cp_ixl,                _cp_xix,                _no_op, | 
|  |  | 
| _no_op,                 _no_op,                 _no_op,                 _no_op,                 // c0 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* c0 */ | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 z80c_ixcb, | _no_op,                 _no_op,                 _no_op,                 z80c_ixcb, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _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,                 /* 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,                 _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_ix,                _no_op,                 _ex_xsp_ix,             // e0 | _no_op,                 _pop_ix,                _no_op,                 _ex_xsp_ix,             /* e0 */ | 
| _no_op,                 _push_ix,               _no_op,                 _no_op, | _no_op,                 _push_ix,               _no_op,                 _no_op, | 
| _no_op,                 _jp_ix,                 _no_op,                 _no_op, | _no_op,                 _jp_ix,                 _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,                 _no_op,                 // f0 | _no_op,                 _no_op,                 _no_op,                 _no_op,                 /* f0 */ | 
| _no_op,                 _no_op,                 _no_op,                 _no_op, | _no_op,                 _no_op,                 _no_op,                 _no_op, | 
| _no_op,                 _ld_sp_ix,              _no_op,                 _no_op, | _no_op,                 _ld_sp_ix,              _no_op,                 _no_op, | 
| _no_op,                 _no_op,                 _no_op,                 _no_op | _no_op,                 _no_op,                 _no_op,                 _no_op | 
 | }; | }; | 
 |  |  | 
 |  |  |