diff options
Diffstat (limited to 'src/devices/cpu/m6502/oxavix.lst')
-rw-r--r-- | src/devices/cpu/m6502/oxavix.lst | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/devices/cpu/m6502/oxavix.lst b/src/devices/cpu/m6502/oxavix.lst index 34e5b66309b..8ea1c7f0acc 100644 --- a/src/devices/cpu/m6502/oxavix.lst +++ b/src/devices/cpu/m6502/oxavix.lst @@ -4,9 +4,9 @@ callf_xa3 read(SP); - if (PC & 0x8000) // if top bit of PC isn't set we're in the non-banked RAM area, don't store farbank? + if (PC & 0x8000) // if top bit of PC isn't set we're in the non-banked RAM area, don't store codebank? { - write(SP, m_farbank); + write(SP, get_codebank()); dec_SP(); } TMP2 = read_pc(); @@ -18,7 +18,7 @@ callf_xa3 dec_SP(); TMP = set_h(TMP, read_pc()); PC = TMP; - m_farbank=TMP2; + set_codebank(TMP2); prefetch(); retf_imp @@ -28,28 +28,24 @@ retf_imp PC = read(SP); inc_SP(); PC = set_h(PC, read(SP)); - if (PC & 0x8000) // if top bit of PC is set then we're jumping back to a banked ROM area, so get farbank? (see 0fdae in rad_ping) + if (PC & 0x8000) // if top bit of PC is set then we're jumping back to a banked ROM area, so get codebank? (see 0fdae in rad_ping) { inc_SP(); TMP2 = read(SP); - m_farbank = TMP2; - } - else - { - // namcons2: because apparently 0x0300ea isn't correctly mirroring 0x0000ea despite logic in xavix.cpp looking correct? - m_farbank = 0; + set_codebank(TMP2); } read_pc(); prefetch(); brk_xav_imp + // there is code in soem games to indicate this doesn't always push the far bank to the stack.. // The 6502 bug when a nmi occurs in a brk is reproduced (case !irq_taken && nmi_state) if(irq_taken) { read_pc_noinc(); } else { read_pc(); } - write(SP, m_farbank); // maybe + write(SP, get_codebank()); // maybe dec_SP(); write(SP, PC >> 8); dec_SP(); @@ -62,13 +58,11 @@ brk_xav_imp { PC = read_arg(0xfffa); PC = set_h(PC, read_arg(0xfffb)); - m_farbank = 0; } else { PC = m_vector_callback(0,1); PC = set_h(PC, m_vector_callback(0,0)); - m_farbank = 0; } nmi_state = false; @@ -78,13 +72,11 @@ brk_xav_imp { PC = read_arg(0xfffe); PC = set_h(PC, read_arg(0xffff)); - m_farbank = 0; } else { PC = m_vector_callback(1,1); PC = set_h(PC, m_vector_callback(1,0)); - m_farbank = 0; } if(irq_taken) @@ -106,5 +98,5 @@ rti_xav_imp PC = set_h(PC, read(SP)); inc_SP(); TMP2 = read(SP); - m_farbank = TMP2; + set_codebank(TMP2); prefetch(); |