summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <mamehaze@gmail.com>2018-10-16 16:44:30 +0100
committer ajrhacker <ajrhacker@users.noreply.github.com>2018-10-16 11:44:30 -0400
commitec010f5c85a39fb2de31924fb7af13124ec4f834 (patch)
tree0127620899f18fbedc51c7649fd0e97c859ca58b
parent59cc16c51c5b978de594df3b3fadaf039daa8ff1 (diff)
XaviX - begin to reimplement Super XaviX opcodes based on use (nw) (#4149)
* disable all super xavix opcodes, ready for one-by-one reimplementation (nw) * begin reimplementation (nw) * get past first callf (nw) * (nw) * (nw) * (nw) * (nw) * phx,phy etc. (nw) * plx/ply (nw) * more (nw) * (nw) * (nw) * (nw)
-rw-r--r--src/devices/cpu/m6502/dxavix2000.lst34
-rw-r--r--src/devices/cpu/m6502/oxavix2000.lst59
-rw-r--r--src/devices/cpu/m6502/xavix2000.cpp2
-rw-r--r--src/devices/cpu/m6502/xavix2000.h24
-rw-r--r--src/devices/cpu/m6502/xavix2000d.cpp2
5 files changed, 48 insertions, 73 deletions
diff --git a/src/devices/cpu/m6502/dxavix2000.lst b/src/devices/cpu/m6502/dxavix2000.lst
index cb45c31050f..202b7aecd64 100644
--- a/src/devices/cpu/m6502/dxavix2000.lst
+++ b/src/devices/cpu/m6502/dxavix2000.lst
@@ -1,20 +1,20 @@
# license:BSD-3-Clause
# copyright-holders:David Haywood
-# XaviX (SSD 2000) - m6502 with custom opcodes
-brk_xav_imp ora_idx kil_non slo_idx nop_zpg ora_zpg asl_zpg unk07_imp php_imp ora_imm asl_acc anc_imm nop_aba ora_aba asl_aba slo_aba
-bpl_rel ora_idy phx_imp slo_idy nop_zpx ora_zpx asl_zpx slo_zpx clc_imp ora_aby nop_imp unk1b_imp nop_abx ora_abx asl_abx slo_abx
-jsr_adr and_idx callf_xa3 rla_idx bit_zpg and_zpg rol_zpg rla_zpg plp_imp and_imm rol_acc anc_imm bit_aba and_aba rol_aba rla_aba
-bmi_rel and_idy plx_imp rla_idy nop_zpx and_zpx rol_zpx rla_zpx sec_imp and_aby nop_imp rla_aby nop_abx and_abx rol_abx rla_abx
-rti_xav_imp eor_idx kil_non sre_idx nop_zpg eor_zpg lsr_zpg sre_zpg pha_imp eor_imm lsr_acc asr_imm jmp_adr eor_aba lsr_aba sre_aba
-bvc_rel eor_idy phy_imp sre_idy nop_zpx eor_zpx lsr_zpx sre_zpx cli_imp eor_aby nop_imp unk5b_imp nop_abx eor_abx lsr_abx sre_abx
-rts_imp adc_idx kil_non rra_idx nop_zpg adc_zpg ror_zpg rra_zpg pla_imp adc_imm ror_acc arr_imm jmp_ind adc_aba ror_aba rra_aba
-bvs_rel adc_idy ply_imp unk73_imp nop_zpx adc_zpx ror_zpx rra_zpx sei_imp adc_aby nop_imp rra_aby nop_abx adc_abx ror_abx rra_abx
-retf_imp sta_idx nop_imm unk83_imm sty_zpg sta_zpg stx_zpg unk87_imm dey_imp nop_imm txa_imp ane_imm sty_aba sta_aba stx_aba sax_aba
-bcc_rel sta_idy kil_non sha_idy sty_zpx sta_zpx stx_zpy sax_zpy tya_imp sta_aby txs_imp unk9b_imp shy_abx sta_abx shx_aby sha_aby
-ldy_imm lda_idx ldx_imm unka3_imp ldy_zpg lda_zpg ldx_zpg unka7_imp tay_imp lda_imm tax_imp lxa_imm ldy_aba lda_aba ldx_aba lax_aba
-bcs_rel lda_idy unkb2_imp lax_idy ldy_zpx lda_zpx ldx_zpy lax_zpy clv_imp lda_aby tsx_imp las_aby ldy_abx lda_abx ldx_aby lax_aby
-cpy_imm cmp_idx nop_imm dcp_idx cpy_zpg cmp_zpg dec_zpg dcp_zpg iny_imp cmp_imm dex_imp sbx_imm cpy_aba cmp_aba dec_aba dcp_aba
-bne_rel cmp_idy kil_non dcp_idy nop_zpx cmp_zpx dec_zpx dcp_zpx cld_imp cmp_aby nop_imp dcp_aby nop_abx cmp_abx dec_abx dcp_abx
-cpx_imm sbc_idx nop_imm isb_idx cpx_zpg sbc_zpg inc_zpg isb_zpg inx_imp sbc_imm nop_imp sbc_imm cpx_aba sbc_aba inc_aba isb_aba
-beq_rel sbc_idy kil_non isb_idy nop_zpx sbc_zpx inc_zpx isb_zpx sed_imp sbc_aby nop_imp isb_aby nop_abx sbc_abx inc_abx isb_abx
+# Super XaviX (SSD 2000) - m6502 with custom opcodes
+brk_xav_imp unh_imp unh_imp unh_imp unh_imp ora_zpg asl_zpg unh_imp php_imp ora_imm asl_acc unh_imp unh_imp ora_aba unh_imp unh_imp
+bpl_rel unh_imp phx_imp unh_imp unh_imp unh_imp unh_imp unh_imp clc_imp ora_aby unh_imp unh_imp unh_imp ora_abx unh_imp unh_imp
+jsr_adr unh_imp callf_xa3 unh_imp unh_imp unh_imp rol_zpg unh_imp plp_imp and_imm rol_acc unh_imp bit_aba unh_imp unh_imp unh_imp
+bmi_rel unh_imp plx_imp unh_imp unh_imp unh_imp unh_imp unh_imp sec_imp unh_imp unh_imp unh_imp unh_imp unh_imp rol_abx unh_imp
+rti_xav_imp unh_imp unh_imp unh_imp unh_imp eor_zpg lsr_zpg unh_imp pha_imp eor_imm lsr_acc unh_imp jmp_adr unh_imp lsr_aba unh_imp
+unh_imp eor_idy phy_imp unh_imp unh_imp unh_imp unh_imp unh_imp cli_imp eor_aby unh_imp unh_imp unh_imp eor_abx unh_imp unh_imp
+rts_imp unh_imp unh_imp unh_imp unh_imp adc_zpg ror_zpg unh_imp pla_imp adc_imm unh_imp unh_imp jmp_ind unh_imp unh_imp unh_imp
+bvs_rel adc_idy ply_imp unh_imp unh_imp unh_imp unh_imp unh_imp sei_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp
+retf_imp unh_imp unh_imp unh_imp sty_zpg sta_zpg stx_zpg unh_imp dey_imp unh_imp txa_imp unh_imp unh_imp sta_aba stx_aba unh_imp
+bcc_rel sta_idy unh_imp unh_imp unh_imp unh_imp stx_zpy unh_imp tya_imp sta_aby txs_imp unh_imp unh_imp sta_abx unh_imp unh_imp
+ldy_imm unh_imp ldx_imm unh_imp ldy_zpg lda_zpg ldx_zpg unh_imp tay_imp lda_imm tax_imp unh_imp unh_imp lda_aba unh_imp unh_imp
+bcs_rel lda_idy clr_acc unh_imp unh_imp unh_imp ldx_zpy unh_imp clv_imp lda_aby tsx_imp unh_imp unh_imp lda_abx ldx_aby unh_imp
+cpy_imm unh_imp unh_imp unh_imp cpy_zpg cmp_zpg dec_zpg unh_imp iny_imp cmp_imm dex_imp unh_imp unh_imp unh_imp unh_imp unh_imp
+bne_rel cmp_idy unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp dec_abx unh_imp
+cpx_imm unh_imp unh_imp unh_imp cpx_zpg sbc_zpg inc_zpg unh_imp inx_imp sbc_imm unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp
+beq_rel unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp unh_imp
reset
diff --git a/src/devices/cpu/m6502/oxavix2000.lst b/src/devices/cpu/m6502/oxavix2000.lst
index 3409ae414f7..d69f2195f6a 100644
--- a/src/devices/cpu/m6502/oxavix2000.lst
+++ b/src/devices/cpu/m6502/oxavix2000.lst
@@ -1,59 +1,42 @@
# license:BSD-3-Clause
# copyright-holders:David Haywood
-# xavix2000 opcodes
+# xavix2000 opcodes (Super XaviX)
-plx_imp
+unh_imp
+ fatalerror("unhandled opcode %02x%04x: %02x\n", m_codebank, PPC, inst_state);
read_pc_noinc();
prefetch();
-phx_imp
- read_pc_noinc();
- prefetch();
-
-ply_imp
+clr_acc
read_pc_noinc();
+ A = 0;
+ set_nz(A);
prefetch();
phy_imp
read_pc_noinc();
+ write(SP, Y);
+ dec_SP();
prefetch();
-unk1b_imp
- read_pc_noinc();
- prefetch();
-
-unk5b_imp
- read_pc_noinc();
- prefetch();
-
-unk9b_imp
- read_pc_noinc();
- prefetch();
-
-unka3_imp
- read_pc_noinc();
- prefetch();
-
-unka7_imp
- read_pc_noinc();
- prefetch();
-
-unk07_imp
+phx_imp
read_pc_noinc();
+ write(SP, X);
+ dec_SP();
prefetch();
-unkb2_imp
+plx_imp
read_pc_noinc();
+ read(SP);
+ inc_SP();
+ X = read(SP);
+ set_nz(X);
prefetch();
-unk73_imp
+ply_imp
read_pc_noinc();
- prefetch();
-
-unk87_imm
- read_pc();
- prefetch();
-
-unk83_imm
- read_pc();
+ read(SP);
+ inc_SP();
+ Y = read(SP);
+ set_nz(Y);
prefetch();
diff --git a/src/devices/cpu/m6502/xavix2000.cpp b/src/devices/cpu/m6502/xavix2000.cpp
index afbf87fd8c6..34f41a483b6 100644
--- a/src/devices/cpu/m6502/xavix2000.cpp
+++ b/src/devices/cpu/m6502/xavix2000.cpp
@@ -2,7 +2,7 @@
// copyright-holders:David Haywood
/***************************************************************************
- xavix2000.cpp
+ xavix2000.cpp (Super XaviX)
The dies for these are marked
diff --git a/src/devices/cpu/m6502/xavix2000.h b/src/devices/cpu/m6502/xavix2000.h
index 60e341e1230..bcc61e1c378 100644
--- a/src/devices/cpu/m6502/xavix2000.h
+++ b/src/devices/cpu/m6502/xavix2000.h
@@ -2,7 +2,7 @@
// copyright-holders:David Haywood
/***************************************************************************
- xavix2000.h
+ xavix2000.h (Super XaviX)
***************************************************************************/
#ifndef MAME_CPU_M6502_XAVIX2000_H
@@ -26,22 +26,14 @@ public:
#define O(o) void o ## _full(); void o ## _partial()
// xaviv opcodes
- O(phx_imp);
- O(phy_imp);
- O(plx_imp);
- O(ply_imp);
- O(unk1b_imp);
- O(unk5b_imp);
- O(unk9b_imp);
- O(unka3_imp);
- O(unka7_imp);
- O(unkb2_imp);
- O(unk07_imp);
- O(unk73_imp);
-
- O(unk83_imm);
- O(unk87_imm);
+ O(unh_imp);
+ O(phx_imp); // 12
+ O(phy_imp); // 52
+ O(plx_imp); // 32
+ O(ply_imp); // 72
+
+ O(clr_acc); // b2
#undef O
diff --git a/src/devices/cpu/m6502/xavix2000d.cpp b/src/devices/cpu/m6502/xavix2000d.cpp
index 9daea8a96c4..883410a05d8 100644
--- a/src/devices/cpu/m6502/xavix2000d.cpp
+++ b/src/devices/cpu/m6502/xavix2000d.cpp
@@ -2,7 +2,7 @@
// copyright-holders:David Haywood
/***************************************************************************
- xavix2000d.cpp
+ xavix2000d.cpp (Super XaviX)
***************************************************************************/