summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/m6502/oxavix.lst
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/m6502/oxavix.lst')
-rw-r--r--src/devices/cpu/m6502/oxavix.lst24
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();