summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/m6502
diff options
context:
space:
mode:
author Angelo Salese <salese_corp_ltd@email.it>2015-01-28 00:20:38 +0100
committer Angelo Salese <salese_corp_ltd@email.it>2015-01-28 00:20:38 +0100
commitc652a6efe20a1b1570233bd46514cd0f18ac03f8 (patch)
tree15aac6eb0d08763234ca0cc9357fd40f65638abf /src/emu/cpu/m6502
parent6e0a315ce0e77292e1d678d6adb312bb9be322ba (diff)
One bug nailed (boot vectors are *whatever exists in regular 0-0xffff range").
Diffstat (limited to 'src/emu/cpu/m6502')
-rw-r--r--src/emu/cpu/m6502/m4510.c6
-rw-r--r--src/emu/cpu/m6502/m6502.h4
-rw-r--r--src/emu/cpu/m6502/om65ce02.lst6
3 files changed, 10 insertions, 6 deletions
diff --git a/src/emu/cpu/m6502/m4510.c b/src/emu/cpu/m6502/m4510.c
index ce210b98ad6..a435ae7aa4e 100644
--- a/src/emu/cpu/m6502/m4510.c
+++ b/src/emu/cpu/m6502/m4510.c
@@ -75,8 +75,8 @@ void m4510_device::device_reset()
nomap = true;
// Wild guess, this setting makes the cpu start executing some code in the c65 driver
- map_offset[1] = 0x30000;
- map_enable = 0x80;
+ //map_offset[1] = 0x2e000;
+ //map_enable = 0x80;
m65ce02_device::device_reset();
}
@@ -86,7 +86,7 @@ bool m4510_device::memory_translate(address_spacenum spacenum, int intention, of
{
address = map(address);
}
-
+
return true;
}
diff --git a/src/emu/cpu/m6502/m6502.h b/src/emu/cpu/m6502/m6502.h
index f77a33f6ae8..9ca5e08fdda 100644
--- a/src/emu/cpu/m6502/m6502.h
+++ b/src/emu/cpu/m6502/m6502.h
@@ -220,8 +220,8 @@ protected:
// inline helpers
static inline bool page_changing(UINT16 base, int delta) { return ((base + delta) ^ base) & 0xff00; }
- static inline UINT16 set_l(UINT16 base, UINT8 val) { return (base & 0xff00) | val; }
- static inline UINT16 set_h(UINT16 base, UINT8 val) { return (base & 0x00ff) | (val << 8); }
+ static inline UINT16 set_l(UINT16 base, UINT16 val) { return (base & 0xff00) | val; }
+ static inline UINT16 set_h(UINT16 base, UINT16 val) { return (base & 0x00ff) | (val << 8); }
inline void dec_SP() { SP = set_l(SP, SP-1); }
inline void inc_SP() { SP = set_l(SP, SP+1); }
diff --git a/src/emu/cpu/m6502/om65ce02.lst b/src/emu/cpu/m6502/om65ce02.lst
index acdf8a65d96..998d6ac3697 100644
--- a/src/emu/cpu/m6502/om65ce02.lst
+++ b/src/emu/cpu/m6502/om65ce02.lst
@@ -342,9 +342,10 @@ bra_ce_rel
prefetch();
bra_rw2
+ printf("PC=%04x\n",PC);
TMP = read_pc();
TMP = set_h(TMP, read_pc());
- PC += TMP;
+ PC += TMP - 1;
prefetch();
brk_ce_imp
@@ -734,11 +735,14 @@ jmp_ce_ind
jsr_ce_adr
TMP = read_pc();
write(SP, PC>>8);
+ printf("a %04x\n",SP);
dec_SP_ce();
write(SP, PC);
+ printf("b %04x\n",SP);
dec_SP_ce();
TMP = set_h(TMP, read_pc());
PC = TMP;
+ printf("%04x\n",TMP);
prefetch();
jsr_iax