From c652a6efe20a1b1570233bd46514cd0f18ac03f8 Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Wed, 28 Jan 2015 00:20:38 +0100 Subject: [PATCH] One bug nailed (boot vectors are *whatever exists in regular 0-0xffff range"). --- src/emu/cpu/m6502/m4510.c | 6 +++--- src/emu/cpu/m6502/m6502.h | 4 ++-- src/emu/cpu/m6502/om65ce02.lst | 6 +++++- src/mess/drivers/c65.c | 2 +- 4 files changed, 11 insertions(+), 7 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 diff --git a/src/mess/drivers/c65.c b/src/mess/drivers/c65.c index 83f447d01de..00b4e00cd45 100644 --- a/src/mess/drivers/c65.c +++ b/src/mess/drivers/c65.c @@ -125,7 +125,7 @@ WRITE8_MEMBER(c65_state::vic4567_dummy_w) printf("CONTROL A %02x\n",data); m_VIC3_ControlA = data; break; - default: + default: if(!space.debugger_access()) printf("%02x %02x\n",offset,data); break;