diff options
author | Dave Chapman <dave@dchapman.com> | 2006-09-15 11:11:16 +0000 |
---|---|---|
committer | Dave Chapman <dave@dchapman.com> | 2006-09-15 11:11:16 +0000 |
commit | 05a7f14f8dbf46fa64c035127ff1e04cfffb841b (patch) | |
tree | c107a0038736337811de70dd0e48e670d35246a2 /apps/plugins/zxbox/z80optab.c | |
parent | 1350d57751f30f1700912e6abaa1d845af973f75 (diff) |
Initial commit of zxbox - a ZX Spectrum emulator ported by Anton Romanov. It theoretically runs on all targets, but I have not included it in the Archos builds because it is just too slow to be usable.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10950 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/zxbox/z80optab.c')
-rw-r--r-- | apps/plugins/zxbox/z80optab.c | 1470 |
1 files changed, 1470 insertions, 0 deletions
diff --git a/apps/plugins/zxbox/z80optab.c b/apps/plugins/zxbox/z80optab.c new file mode 100644 index 0000000000..da973277a2 --- /dev/null +++ b/apps/plugins/zxbox/z80optab.c @@ -0,0 +1,1470 @@ +/* + * Copyright (C) 1996-1998 Szeredi Miklos + * Email: mszeredi@inf.bme.hu + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. See the file COPYING. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#include "z80_def.h" +#include "z80optab.h" + +#ifdef PROCP +#define NEXTTAB(tab) \ +{ \ + register byte nextop; \ + nextop = *PCP; \ + PC++; \ + return (*z80c_op_tab_ ## tab [nextop])(z80p); \ +} +#else +#define NEXTTAB(tab) \ +{ \ + register byte nextop; \ + nextop = *PCP; \ + PC++; \ + (*z80c_op_tab_ ## tab [nextop])(); \ +} +#endif + + +OPDEF(special_cb, 0xCB) +{ + RR++; + DANM(cbaddr) = HL; + NEXTTAB(cb); +} + +OPDEF(special_dd, 0xDD) +{ + RR++; + DANM(tc) -= 4; + NEXTTAB(dd); +} + + +OPDEF(special_ed, 0xED) +{ + RR++; + NEXTTAB(ed); +} + +OPDEF(special_fd, 0xFD) +{ + RR++; + DANM(tc) -= 4; + NEXTTAB(fd); +} + +OPDEF(special_xx, 0xDD 0xFD) +{ + RR--; + PC--; + ENDOP(); +} + +OPDEF(special_dd_cb, 0xCB) +{ + DANM(tc) -= 4; + IXDGET(IX, DANM(cbaddr)); +#ifdef DEBUG_Z80 + if((*PCP & 0x07) != 6) + printf("DD_CB unimplemented!\n"); +#endif + NEXTTAB(cb); +} + +OPDEF(special_fd_cb, 0xCB) +{ + DANM(tc) -= 4; + IXDGET(IY, DANM(cbaddr)); +#ifdef DEBUG_Z80 + if((*PCP & 0x07) != 6) + printf("FD_CB unimplemented!\n"); +#endif + NEXTTAB(cb); +} + +op_f z80c_op_tab[] = { + z80op_nop, + z80op_ld_bc_nn, + z80op_ld_ibc_a, + z80op_inc_bc, + z80op_inc_b, + z80op_dec_b, + z80op_ld_b_n, + z80op_rlca, + z80op_ex_af_afb, + z80op_add_hl_bc, + z80op_ld_a_ibc, + z80op_dec_bc, + z80op_inc_c, + z80op_dec_c, + z80op_ld_c_n, + z80op_rrca, + + z80op_djnz_e, + z80op_ld_de_nn, + z80op_ld_ide_a, + z80op_inc_de, + z80op_inc_d, + z80op_dec_d, + z80op_ld_d_n, + z80op_rla, + z80op_jr_e, + z80op_add_hl_de, + z80op_ld_a_ide, + z80op_dec_de, + z80op_inc_e, + z80op_dec_e, + z80op_ld_e_n, + z80op_rra, + + z80op_jr_nz_e, + z80op_ld_hl_nn, + z80op_ld_inn_hl, + z80op_inc_hl, + z80op_inc_h, + z80op_dec_h, + z80op_ld_h_n, + z80op_daa, + z80op_jr_z_e, + z80op_add_hl_hl, + z80op_ld_hl_inn, + z80op_dec_hl, + z80op_inc_l, + z80op_dec_l, + z80op_ld_l_n, + z80op_cpl, + + z80op_jr_nc_e, + z80op_ld_sp_nn, + z80op_ld_inn_a, + z80op_inc_sp, + z80op_inc_ihl, + z80op_dec_ihl, + z80op_ld_ihl_n, + z80op_scf, + z80op_jr_c_e, + z80op_add_hl_sp, + z80op_ld_a_inn, + z80op_dec_sp, + z80op_inc_a, + z80op_dec_a, + z80op_ld_a_n, + z80op_ccf, + + z80op_nop, + z80op_ld_b_c, + z80op_ld_b_d, + z80op_ld_b_e, + z80op_ld_b_h, + z80op_ld_b_l, + z80op_ld_b_ihl, + z80op_ld_b_a, + z80op_ld_c_b, + z80op_nop, + z80op_ld_c_d, + z80op_ld_c_e, + z80op_ld_c_h, + z80op_ld_c_l, + z80op_ld_c_ihl, + z80op_ld_c_a, + + z80op_ld_d_b, + z80op_ld_d_c, + z80op_nop, + z80op_ld_d_e, + z80op_ld_d_h, + z80op_ld_d_l, + z80op_ld_d_ihl, + z80op_ld_d_a, + z80op_ld_e_b, + z80op_ld_e_c, + z80op_ld_e_d, + z80op_nop, + z80op_ld_e_h, + z80op_ld_e_l, + z80op_ld_e_ihl, + z80op_ld_e_a, + + z80op_ld_h_b, + z80op_ld_h_c, + z80op_ld_h_d, + z80op_ld_h_e, + z80op_nop, + z80op_ld_h_l, + z80op_ld_h_ihl, + z80op_ld_h_a, + z80op_ld_l_b, + z80op_ld_l_c, + z80op_ld_l_d, + z80op_ld_l_e, + z80op_ld_l_h, + z80op_nop, + z80op_ld_l_ihl, + z80op_ld_l_a, + + z80op_ld_ihl_b, + z80op_ld_ihl_c, + z80op_ld_ihl_d, + z80op_ld_ihl_e, + z80op_ld_ihl_h, + z80op_ld_ihl_l, + z80op_halt, + z80op_ld_ihl_a, + z80op_ld_a_b, + z80op_ld_a_c, + z80op_ld_a_d, + z80op_ld_a_e, + z80op_ld_a_h, + z80op_ld_a_l, + z80op_ld_a_ihl, + z80op_nop, + + z80op_add_a_b, + z80op_add_a_c, + z80op_add_a_d, + z80op_add_a_e, + z80op_add_a_h, + z80op_add_a_l, + z80op_add_a_ihl, + z80op_add_a_a, + z80op_adc_a_b, + z80op_adc_a_c, + z80op_adc_a_d, + z80op_adc_a_e, + z80op_adc_a_h, + z80op_adc_a_l, + z80op_adc_a_ihl, + z80op_adc_a_a, + + z80op_sub_b, + z80op_sub_c, + z80op_sub_d, + z80op_sub_e, + z80op_sub_h, + z80op_sub_l, + z80op_sub_ihl, + z80op_sub_a, + z80op_sbc_a_b, + z80op_sbc_a_c, + z80op_sbc_a_d, + z80op_sbc_a_e, + z80op_sbc_a_h, + z80op_sbc_a_l, + z80op_sbc_a_ihl, + z80op_sbc_a_a, + + z80op_and_b, + z80op_and_c, + z80op_and_d, + z80op_and_e, + z80op_and_h, + z80op_and_l, + z80op_and_ihl, + z80op_and_a, + z80op_xor_b, + z80op_xor_c, + z80op_xor_d, + z80op_xor_e, + z80op_xor_h, + z80op_xor_l, + z80op_xor_ihl, + z80op_xor_a, + + z80op_or_b, + z80op_or_c, + z80op_or_d, + z80op_or_e, + z80op_or_h, + z80op_or_l, + z80op_or_ihl, + z80op_or_a, + z80op_cp_b, + z80op_cp_c, + z80op_cp_d, + z80op_cp_e, + z80op_cp_h, + z80op_cp_l, + z80op_cp_ihl, + z80op_cp_a, + + z80op_ret_nz, + z80op_pop_bc, + z80op_jp_nz_nn, + z80op_jp_nn, + z80op_call_nz_nn, + z80op_push_bc, + z80op_add_a_n, + z80op_rst_00, + z80op_ret_z, + z80op_ret, + z80op_jp_z_nn, + z80op_special_cb, + z80op_call_z_nn, + z80op_call_nn, + z80op_adc_a_n, + z80op_rst_08, + + z80op_ret_nc, + z80op_pop_de, + z80op_jp_nc_nn, + z80op_out_in_a, + z80op_call_nc_nn, + z80op_push_de, + z80op_sub_n, + z80op_rst_10, + z80op_ret_c, + z80op_exx, + z80op_jp_c_nn, + z80op_in_a_in, + z80op_call_c_nn, + z80op_special_dd, + z80op_sbc_a_n, + z80op_rst_18, + + z80op_ret_po, + z80op_pop_hl, + z80op_jp_po_nn, + z80op_ex_isp_hl, + z80op_call_po_nn, + z80op_push_hl, + z80op_and_n, + z80op_rst_20, + z80op_ret_pe, + z80op_jp_hl, + z80op_jp_pe_nn, + z80op_ex_de_hl, + z80op_call_pe_nn, + z80op_special_ed, + z80op_xor_n, + z80op_rst_28, + + z80op_ret_p, + z80op_pop_af, + z80op_jp_p_nn, + z80op_di, + z80op_call_p_nn, + z80op_push_af, + z80op_or_n, + z80op_rst_30, + z80op_ret_m, + z80op_ld_sp_hl, + z80op_jp_m_nn, + z80op_ei, + z80op_call_m_nn, + z80op_special_fd, + z80op_cp_n, + z80op_rst_38 +}; + + +op_f z80c_op_tab_ed[] = { + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_in_b_ic, + z80op_out_ic_b, + z80op_sbc_hl_bc, + z80op_ld_inn_bc, + z80op_neg, + z80op_retn, + z80op_im_0, + z80op_ld_i_a, + z80op_in_c_ic, + z80op_out_ic_c, + z80op_adc_hl_bc, + z80op_ld_bc_inn, + z80op_neg, + z80op_reti, + z80op_im_0, + z80op_ld_r_a, + + z80op_in_d_ic, + z80op_out_ic_d, + z80op_sbc_hl_de, + z80op_ld_inn_de, + z80op_neg, + z80op_retn, + z80op_im_1, + z80op_ld_a_i, + z80op_in_e_ic, + z80op_out_ic_e, + z80op_adc_hl_de, + z80op_ld_de_inn, + z80op_neg, + z80op_retn, + z80op_im_2, + z80op_ld_a_r, + + z80op_in_h_ic, + z80op_out_ic_h, + z80op_sbc_hl_hl, + z80op_ld_inn_hl_ed, + z80op_neg, + z80op_retn, + z80op_im_0, + z80op_rrd, + z80op_in_l_ic, + z80op_out_ic_l, + z80op_adc_hl_hl, + z80op_ld_hl_inn_ed, + z80op_neg, + z80op_retn, + z80op_im_0, + z80op_rld, + + z80op_in_f_ic, + z80op_out_ic_0, + z80op_sbc_hl_sp, + z80op_ld_inn_sp, + z80op_neg, + z80op_retn, + z80op_im_1, + z80op_ill_ed, + z80op_in_a_ic, + z80op_out_ic_a, + z80op_adc_hl_sp, + z80op_ld_sp_inn, + z80op_neg, + z80op_retn, + z80op_im_2, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ldi, + z80op_cpi, + z80op_ini, + z80op_outi, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ldd, + z80op_cpd, + z80op_ind, + z80op_outd, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ldir, + z80op_cpir, + z80op_inir, + z80op_otir, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_lddr, + z80op_cpdr, + z80op_indr, + z80op_otdr, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed, + z80op_ill_ed +}; + +op_f z80c_op_tab_dd[] = { + z80op_nop, + z80op_ld_bc_nn, + z80op_ld_ibc_a, + z80op_inc_bc, + z80op_inc_b, + z80op_dec_b, + z80op_ld_b_n, + z80op_rlca, + z80op_ex_af_afb, + z80op_add_ix_bc, + z80op_ld_a_ibc, + z80op_dec_bc, + z80op_inc_c, + z80op_dec_c, + z80op_ld_c_n, + z80op_rrca, + + z80op_djnz_e, + z80op_ld_de_nn, + z80op_ld_ide_a, + z80op_inc_de, + z80op_inc_d, + z80op_dec_d, + z80op_ld_d_n, + z80op_rla, + z80op_jr_e, + z80op_add_ix_de, + z80op_ld_a_ide, + z80op_dec_de, + z80op_inc_e, + z80op_dec_e, + z80op_ld_e_n, + z80op_rra, + + z80op_jr_nz_e, + z80op_ld_ix_nn, + z80op_ld_inn_ix, + z80op_inc_ix, + z80op_inc_ixh, + z80op_dec_ixh, + z80op_ld_ixh_n, + z80op_daa, + z80op_jr_z_e, + z80op_add_ix_ix, + z80op_ld_ix_inn, + z80op_dec_ix, + z80op_inc_ixl, + z80op_dec_ixl, + z80op_ld_ixl_n, + z80op_cpl, + + z80op_jr_nc_e, + z80op_ld_sp_nn, + z80op_ld_inn_a, + z80op_inc_sp, + z80op_inc_iixd, + z80op_dec_iixd, + z80op_ld_iixd_n, + z80op_scf, + z80op_jr_c_e, + z80op_add_ix_sp, + z80op_ld_a_inn, + z80op_dec_sp, + z80op_inc_a, + z80op_dec_a, + z80op_ld_a_n, + z80op_ccf, + + z80op_nop, + z80op_ld_b_c, + z80op_ld_b_d, + z80op_ld_b_e, + z80op_ld_b_ixh, + z80op_ld_b_ixl, + z80op_ld_b_iixd, + z80op_ld_b_a, + z80op_ld_c_b, + z80op_nop, + z80op_ld_c_d, + z80op_ld_c_e, + z80op_ld_c_ixh, + z80op_ld_c_ixl, + z80op_ld_c_iixd, + z80op_ld_c_a, + + z80op_ld_d_b, + z80op_ld_d_c, + z80op_nop, + z80op_ld_d_e, + z80op_ld_d_ixh, + z80op_ld_d_ixl, + z80op_ld_d_iixd, + z80op_ld_d_a, + z80op_ld_e_b, + z80op_ld_e_c, + z80op_ld_e_d, + z80op_nop, + z80op_ld_e_ixh, + z80op_ld_e_ixl, + z80op_ld_e_iixd, + z80op_ld_e_a, + + z80op_ld_ixh_b, + z80op_ld_ixh_c, + z80op_ld_ixh_d, + z80op_ld_ixh_e, + z80op_nop, + z80op_ld_ixh_ixl, + z80op_ld_h_iixd, + z80op_ld_ixh_a, + z80op_ld_ixl_b, + z80op_ld_ixl_c, + z80op_ld_ixl_d, + z80op_ld_ixl_e, + z80op_ld_ixl_ixh, + z80op_nop, + z80op_ld_l_iixd, + z80op_ld_ixl_a, + + z80op_ld_iixd_b, + z80op_ld_iixd_c, + z80op_ld_iixd_d, + z80op_ld_iixd_e, + z80op_ld_iixd_h, + z80op_ld_iixd_l, + z80op_halt, + z80op_ld_iixd_a, + z80op_ld_a_b, + z80op_ld_a_c, + z80op_ld_a_d, + z80op_ld_a_e, + z80op_ld_a_ixh, + z80op_ld_a_ixl, + z80op_ld_a_iixd, + z80op_nop, + + z80op_add_a_b, + z80op_add_a_c, + z80op_add_a_d, + z80op_add_a_e, + z80op_add_a_ixh, + z80op_add_a_ixl, + z80op_add_a_iixd, + z80op_add_a_a, + z80op_adc_a_b, + z80op_adc_a_c, + z80op_adc_a_d, + z80op_adc_a_e, + z80op_adc_a_ixh, + z80op_adc_a_ixl, + z80op_adc_a_iixd, + z80op_adc_a_a, + + z80op_sub_b, + z80op_sub_c, + z80op_sub_d, + z80op_sub_e, + z80op_sub_ixh, + z80op_sub_ixl, + z80op_sub_iixd, + z80op_sub_a, + z80op_sbc_a_b, + z80op_sbc_a_c, + z80op_sbc_a_d, + z80op_sbc_a_e, + z80op_sbc_a_ixh, + z80op_sbc_a_ixl, + z80op_sbc_a_iixd, + z80op_sbc_a_a, + + z80op_and_b, + z80op_and_c, + z80op_and_d, + z80op_and_e, + z80op_and_ixh, + z80op_and_ixl, + z80op_and_iixd, + z80op_and_a, + z80op_xor_b, + z80op_xor_c, + z80op_xor_d, + z80op_xor_e, + z80op_xor_ixh, + z80op_xor_ixl, + z80op_xor_iixd, + z80op_xor_a, + + z80op_or_b, + z80op_or_c, + z80op_or_d, + z80op_or_e, + z80op_or_ixh, + z80op_or_ixl, + z80op_or_iixd, + z80op_or_a, + z80op_cp_b, + z80op_cp_c, + z80op_cp_d, + z80op_cp_e, + z80op_cp_ixh, + z80op_cp_ixl, + z80op_cp_iixd, + z80op_cp_a, + + z80op_ret_nz, + z80op_pop_bc, + z80op_jp_nz_nn, + z80op_jp_nn, + z80op_call_nz_nn, + z80op_push_bc, + z80op_add_a_n, + z80op_rst_00, + z80op_ret_z, + z80op_ret, + z80op_jp_z_nn, + z80op_special_dd_cb, + z80op_call_z_nn, + z80op_call_nn, + z80op_adc_a_n, + z80op_rst_08, + + z80op_ret_nc, + z80op_pop_de, + z80op_jp_nc_nn, + z80op_out_in_a, + z80op_call_nc_nn, + z80op_push_de, + z80op_sub_n, + z80op_rst_10, + z80op_ret_c, + z80op_exx, + z80op_jp_c_nn, + z80op_in_a_in, + z80op_call_c_nn, + z80op_special_xx, + z80op_sbc_a_n, + z80op_rst_18, + + z80op_ret_po, + z80op_pop_ix, + z80op_jp_po_nn, + z80op_ex_isp_ix, + z80op_call_po_nn, + z80op_push_ix, + z80op_and_n, + z80op_rst_20, + z80op_ret_pe, + z80op_jp_ix, + z80op_jp_pe_nn, + z80op_ex_de_hl, + z80op_call_pe_nn, + z80op_special_ed, + z80op_xor_n, + z80op_rst_28, + + z80op_ret_p, + z80op_pop_af, + z80op_jp_p_nn, + z80op_di, + z80op_call_p_nn, + z80op_push_af, + z80op_or_n, + z80op_rst_30, + z80op_ret_m, + z80op_ld_sp_ix, + z80op_jp_m_nn, + z80op_ei, + z80op_call_m_nn, + z80op_special_xx, + z80op_cp_n, + z80op_rst_38 +}; + + +op_f z80c_op_tab_fd[] = { + z80op_nop, + z80op_ld_bc_nn, + z80op_ld_ibc_a, + z80op_inc_bc, + z80op_inc_b, + z80op_dec_b, + z80op_ld_b_n, + z80op_rlca, + z80op_ex_af_afb, + z80op_add_iy_bc, + z80op_ld_a_ibc, + z80op_dec_bc, + z80op_inc_c, + z80op_dec_c, + z80op_ld_c_n, + z80op_rrca, + + z80op_djnz_e, + z80op_ld_de_nn, + z80op_ld_ide_a, + z80op_inc_de, + z80op_inc_d, + z80op_dec_d, + z80op_ld_d_n, + z80op_rla, + z80op_jr_e, + z80op_add_iy_de, + z80op_ld_a_ide, + z80op_dec_de, + z80op_inc_e, + z80op_dec_e, + z80op_ld_e_n, + z80op_rra, + + z80op_jr_nz_e, + z80op_ld_iy_nn, + z80op_ld_inn_iy, + z80op_inc_iy, + z80op_inc_iyh, + z80op_dec_iyh, + z80op_ld_iyh_n, + z80op_daa, + z80op_jr_z_e, + z80op_add_iy_iy, + z80op_ld_iy_inn, + z80op_dec_iy, + z80op_inc_iyl, + z80op_dec_iyl, + z80op_ld_iyl_n, + z80op_cpl, + + z80op_jr_nc_e, + z80op_ld_sp_nn, + z80op_ld_inn_a, + z80op_inc_sp, + z80op_inc_iiyd, + z80op_dec_iiyd, + z80op_ld_iiyd_n, + z80op_scf, + z80op_jr_c_e, + z80op_add_iy_sp, + z80op_ld_a_inn, + z80op_dec_sp, + z80op_inc_a, + z80op_dec_a, + z80op_ld_a_n, + z80op_ccf, + + z80op_nop, + z80op_ld_b_c, + z80op_ld_b_d, + z80op_ld_b_e, + z80op_ld_b_iyh, + z80op_ld_b_iyl, + z80op_ld_b_iiyd, + z80op_ld_b_a, + z80op_ld_c_b, + z80op_nop, + z80op_ld_c_d, + z80op_ld_c_e, + z80op_ld_c_iyh, + z80op_ld_c_iyl, + z80op_ld_c_iiyd, + z80op_ld_c_a, + + z80op_ld_d_b, + z80op_ld_d_c, + z80op_nop, + z80op_ld_d_e, + z80op_ld_d_iyh, + z80op_ld_d_iyl, + z80op_ld_d_iiyd, + z80op_ld_d_a, + z80op_ld_e_b, + z80op_ld_e_c, + z80op_ld_e_d, + z80op_nop, + z80op_ld_e_iyh, + z80op_ld_e_iyl, + z80op_ld_e_iiyd, + z80op_ld_e_a, + + z80op_ld_iyh_b, + z80op_ld_iyh_c, + z80op_ld_iyh_d, + z80op_ld_iyh_e, + z80op_nop, + z80op_ld_iyh_iyl, + z80op_ld_h_iiyd, + z80op_ld_iyh_a, + z80op_ld_iyl_b, + z80op_ld_iyl_c, + z80op_ld_iyl_d, + z80op_ld_iyl_e, + z80op_ld_iyl_iyh, + z80op_nop, + z80op_ld_l_iiyd, + z80op_ld_iyl_a, + + z80op_ld_iiyd_b, + z80op_ld_iiyd_c, + z80op_ld_iiyd_d, + z80op_ld_iiyd_e, + z80op_ld_iiyd_h, + z80op_ld_iiyd_l, + z80op_halt, + z80op_ld_iiyd_a, + z80op_ld_a_b, + z80op_ld_a_c, + z80op_ld_a_d, + z80op_ld_a_e, + z80op_ld_a_iyh, + z80op_ld_a_iyl, + z80op_ld_a_iiyd, + z80op_nop, + + z80op_add_a_b, + z80op_add_a_c, + z80op_add_a_d, + z80op_add_a_e, + z80op_add_a_iyh, + z80op_add_a_iyl, + z80op_add_a_iiyd, + z80op_add_a_a, + z80op_adc_a_b, + z80op_adc_a_c, + z80op_adc_a_d, + z80op_adc_a_e, + z80op_adc_a_iyh, + z80op_adc_a_iyl, + z80op_adc_a_iiyd, + z80op_adc_a_a, + + z80op_sub_b, + z80op_sub_c, + z80op_sub_d, + z80op_sub_e, + z80op_sub_iyh, + z80op_sub_iyl, + z80op_sub_iiyd, + z80op_sub_a, + z80op_sbc_a_b, + z80op_sbc_a_c, + z80op_sbc_a_d, + z80op_sbc_a_e, + z80op_sbc_a_iyh, + z80op_sbc_a_iyl, + z80op_sbc_a_iiyd, + z80op_sbc_a_a, + + z80op_and_b, + z80op_and_c, + z80op_and_d, + z80op_and_e, + z80op_and_iyh, + z80op_and_iyl, + z80op_and_iiyd, + z80op_and_a, + z80op_xor_b, + z80op_xor_c, + z80op_xor_d, + z80op_xor_e, + z80op_xor_iyh, + z80op_xor_iyl, + z80op_xor_iiyd, + z80op_xor_a, + + z80op_or_b, + z80op_or_c, + z80op_or_d, + z80op_or_e, + z80op_or_iyh, + z80op_or_iyl, + z80op_or_iiyd, + z80op_or_a, + z80op_cp_b, + z80op_cp_c, + z80op_cp_d, + z80op_cp_e, + z80op_cp_iyh, + z80op_cp_iyl, + z80op_cp_iiyd, + z80op_cp_a, + + z80op_ret_nz, + z80op_pop_bc, + z80op_jp_nz_nn, + z80op_jp_nn, + z80op_call_nz_nn, + z80op_push_bc, + z80op_add_a_n, + z80op_rst_00, + z80op_ret_z, + z80op_ret, + z80op_jp_z_nn, + z80op_special_fd_cb, + z80op_call_z_nn, + z80op_call_nn, + z80op_adc_a_n, + z80op_rst_08, + + z80op_ret_nc, + z80op_pop_de, + z80op_jp_nc_nn, + z80op_out_in_a, + z80op_call_nc_nn, + z80op_push_de, + z80op_sub_n, + z80op_rst_10, + z80op_ret_c, + z80op_exx, + z80op_jp_c_nn, + z80op_in_a_in, + z80op_call_c_nn, + z80op_special_xx, + z80op_sbc_a_n, + z80op_rst_18, + + z80op_ret_po, + z80op_pop_iy, + z80op_jp_po_nn, + z80op_ex_isp_iy, + z80op_call_po_nn, + z80op_push_iy, + z80op_and_n, + z80op_rst_20, + z80op_ret_pe, + z80op_jp_iy, + z80op_jp_pe_nn, + z80op_ex_de_hl, + z80op_call_pe_nn, + z80op_special_ed, + z80op_xor_n, + z80op_rst_28, + + z80op_ret_p, + z80op_pop_af, + z80op_jp_p_nn, + z80op_di, + z80op_call_p_nn, + z80op_push_af, + z80op_or_n, + z80op_rst_30, + z80op_ret_m, + z80op_ld_sp_iy, + z80op_jp_m_nn, + z80op_ei, + z80op_call_m_nn, + z80op_special_xx, + z80op_cp_n, + z80op_rst_38 +}; + +op_f z80c_op_tab_cb[] = { + z80op_rlc_b, + z80op_rlc_c, + z80op_rlc_d, + z80op_rlc_e, + z80op_rlc_h, + z80op_rlc_l, + z80op_rlc_ihl, + z80op_rlc_a, + z80op_rrc_b, + z80op_rrc_c, + z80op_rrc_d, + z80op_rrc_e, + z80op_rrc_h, + z80op_rrc_l, + z80op_rrc_ihl, + z80op_rrc_a, + + z80op_rl_b, + z80op_rl_c, + z80op_rl_d, + z80op_rl_e, + z80op_rl_h, + z80op_rl_l, + z80op_rl_ihl, + z80op_rl_a, + z80op_rr_b, + z80op_rr_c, + z80op_rr_d, + z80op_rr_e, + z80op_rr_h, + z80op_rr_l, + z80op_rr_ihl, + z80op_rr_a, + + z80op_sla_b, + z80op_sla_c, + z80op_sla_d, + z80op_sla_e, + z80op_sla_h, + z80op_sla_l, + z80op_sla_ihl, + z80op_sla_a, + z80op_sra_b, + z80op_sra_c, + z80op_sra_d, + z80op_sra_e, + z80op_sra_h, + z80op_sra_l, + z80op_sra_ihl, + z80op_sra_a, + + z80op_sll_b, + z80op_sll_c, + z80op_sll_d, + z80op_sll_e, + z80op_sll_h, + z80op_sll_l, + z80op_sll_ihl, + z80op_sll_a, + z80op_srl_b, + z80op_srl_c, + z80op_srl_d, + z80op_srl_e, + z80op_srl_h, + z80op_srl_l, + z80op_srl_ihl, + z80op_srl_a, + + z80op_bit_0_b, + z80op_bit_0_c, + z80op_bit_0_d, + z80op_bit_0_e, + z80op_bit_0_h, + z80op_bit_0_l, + z80op_bit_0_ihl, + z80op_bit_0_a, + z80op_bit_1_b, + z80op_bit_1_c, + z80op_bit_1_d, + z80op_bit_1_e, + z80op_bit_1_h, + z80op_bit_1_l, + z80op_bit_1_ihl, + z80op_bit_1_a, + + z80op_bit_2_b, + z80op_bit_2_c, + z80op_bit_2_d, + z80op_bit_2_e, + z80op_bit_2_h, + z80op_bit_2_l, + z80op_bit_2_ihl, + z80op_bit_2_a, + z80op_bit_3_b, + z80op_bit_3_c, + z80op_bit_3_d, + z80op_bit_3_e, + z80op_bit_3_h, + z80op_bit_3_l, + z80op_bit_3_ihl, + z80op_bit_3_a, + + z80op_bit_4_b, + z80op_bit_4_c, + z80op_bit_4_d, + z80op_bit_4_e, + z80op_bit_4_h, + z80op_bit_4_l, + z80op_bit_4_ihl, + z80op_bit_4_a, + z80op_bit_5_b, + z80op_bit_5_c, + z80op_bit_5_d, + z80op_bit_5_e, + z80op_bit_5_h, + z80op_bit_5_l, + z80op_bit_5_ihl, + z80op_bit_5_a, + + z80op_bit_6_b, + z80op_bit_6_c, + z80op_bit_6_d, + z80op_bit_6_e, + z80op_bit_6_h, + z80op_bit_6_l, + z80op_bit_6_ihl, + z80op_bit_6_a, + z80op_bit_7_b, + z80op_bit_7_c, + z80op_bit_7_d, + z80op_bit_7_e, + z80op_bit_7_h, + z80op_bit_7_l, + z80op_bit_7_ihl, + z80op_bit_7_a, + + z80op_res_0_b, + z80op_res_0_c, + z80op_res_0_d, + z80op_res_0_e, + z80op_res_0_h, + z80op_res_0_l, + z80op_res_0_ihl, + z80op_res_0_a, + z80op_res_1_b, + z80op_res_1_c, + z80op_res_1_d, + z80op_res_1_e, + z80op_res_1_h, + z80op_res_1_l, + z80op_res_1_ihl, + z80op_res_1_a, + + z80op_res_2_b, + z80op_res_2_c, + z80op_res_2_d, + z80op_res_2_e, + z80op_res_2_h, + z80op_res_2_l, + z80op_res_2_ihl, + z80op_res_2_a, + z80op_res_3_b, + z80op_res_3_c, + z80op_res_3_d, + z80op_res_3_e, + z80op_res_3_h, + z80op_res_3_l, + z80op_res_3_ihl, + z80op_res_3_a, + + z80op_res_4_b, + z80op_res_4_c, + z80op_res_4_d, + z80op_res_4_e, + z80op_res_4_h, + z80op_res_4_l, + z80op_res_4_ihl, + z80op_res_4_a, + z80op_res_5_b, + z80op_res_5_c, + z80op_res_5_d, + z80op_res_5_e, + z80op_res_5_h, + z80op_res_5_l, + z80op_res_5_ihl, + z80op_res_5_a, + + z80op_res_6_b, + z80op_res_6_c, + z80op_res_6_d, + z80op_res_6_e, + z80op_res_6_h, + z80op_res_6_l, + z80op_res_6_ihl, + z80op_res_6_a, + z80op_res_7_b, + z80op_res_7_c, + z80op_res_7_d, + z80op_res_7_e, + z80op_res_7_h, + z80op_res_7_l, + z80op_res_7_ihl, + z80op_res_7_a, + + z80op_set_0_b, + z80op_set_0_c, + z80op_set_0_d, + z80op_set_0_e, + z80op_set_0_h, + z80op_set_0_l, + z80op_set_0_ihl, + z80op_set_0_a, + z80op_set_1_b, + z80op_set_1_c, + z80op_set_1_d, + z80op_set_1_e, + z80op_set_1_h, + z80op_set_1_l, + z80op_set_1_ihl, + z80op_set_1_a, + + z80op_set_2_b, + z80op_set_2_c, + z80op_set_2_d, + z80op_set_2_e, + z80op_set_2_h, + z80op_set_2_l, + z80op_set_2_ihl, + z80op_set_2_a, + z80op_set_3_b, + z80op_set_3_c, + z80op_set_3_d, + z80op_set_3_e, + z80op_set_3_h, + z80op_set_3_l, + z80op_set_3_ihl, + z80op_set_3_a, + + z80op_set_4_b, + z80op_set_4_c, + z80op_set_4_d, + z80op_set_4_e, + z80op_set_4_h, + z80op_set_4_l, + z80op_set_4_ihl, + z80op_set_4_a, + z80op_set_5_b, + z80op_set_5_c, + z80op_set_5_d, + z80op_set_5_e, + z80op_set_5_h, + z80op_set_5_l, + z80op_set_5_ihl, + z80op_set_5_a, + + z80op_set_6_b, + z80op_set_6_c, + z80op_set_6_d, + z80op_set_6_e, + z80op_set_6_h, + z80op_set_6_l, + z80op_set_6_ihl, + z80op_set_6_a, + z80op_set_7_b, + z80op_set_7_c, + z80op_set_7_d, + z80op_set_7_e, + z80op_set_7_h, + z80op_set_7_l, + z80op_set_7_ihl, + z80op_set_7_a +}; |