diff options
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 |
commit | c652a6efe20a1b1570233bd46514cd0f18ac03f8 (patch) | |
tree | 15aac6eb0d08763234ca0cc9357fd40f65638abf /src/emu/cpu/m6502 | |
parent | 6e0a315ce0e77292e1d678d6adb312bb9be322ba (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.c | 6 | ||||
-rw-r--r-- | src/emu/cpu/m6502/m6502.h | 4 | ||||
-rw-r--r-- | src/emu/cpu/m6502/om65ce02.lst | 6 |
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 |