One bug nailed (boot vectors are *whatever exists in regular 0-0xffff range").

This commit is contained in:
Angelo Salese 2015-01-28 00:20:38 +01:00
parent 6e0a315ce0
commit c652a6efe2
4 changed files with 11 additions and 7 deletions

View File

@ -75,8 +75,8 @@ void m4510_device::device_reset()
nomap = true; nomap = true;
// Wild guess, this setting makes the cpu start executing some code in the c65 driver // Wild guess, this setting makes the cpu start executing some code in the c65 driver
map_offset[1] = 0x30000; //map_offset[1] = 0x2e000;
map_enable = 0x80; //map_enable = 0x80;
m65ce02_device::device_reset(); m65ce02_device::device_reset();
} }
@ -86,7 +86,7 @@ bool m4510_device::memory_translate(address_spacenum spacenum, int intention, of
{ {
address = map(address); address = map(address);
} }
return true; return true;
} }

View File

@ -220,8 +220,8 @@ protected:
// inline helpers // inline helpers
static inline bool page_changing(UINT16 base, int delta) { return ((base + delta) ^ base) & 0xff00; } 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_l(UINT16 base, UINT16 val) { return (base & 0xff00) | val; }
static inline UINT16 set_h(UINT16 base, UINT8 val) { return (base & 0x00ff) | (val << 8); } 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 dec_SP() { SP = set_l(SP, SP-1); }
inline void inc_SP() { SP = set_l(SP, SP+1); } inline void inc_SP() { SP = set_l(SP, SP+1); }

View File

@ -342,9 +342,10 @@ bra_ce_rel
prefetch(); prefetch();
bra_rw2 bra_rw2
printf("PC=%04x\n",PC);
TMP = read_pc(); TMP = read_pc();
TMP = set_h(TMP, read_pc()); TMP = set_h(TMP, read_pc());
PC += TMP; PC += TMP - 1;
prefetch(); prefetch();
brk_ce_imp brk_ce_imp
@ -734,11 +735,14 @@ jmp_ce_ind
jsr_ce_adr jsr_ce_adr
TMP = read_pc(); TMP = read_pc();
write(SP, PC>>8); write(SP, PC>>8);
printf("a %04x\n",SP);
dec_SP_ce(); dec_SP_ce();
write(SP, PC); write(SP, PC);
printf("b %04x\n",SP);
dec_SP_ce(); dec_SP_ce();
TMP = set_h(TMP, read_pc()); TMP = set_h(TMP, read_pc());
PC = TMP; PC = TMP;
printf("%04x\n",TMP);
prefetch(); prefetch();
jsr_iax jsr_iax

View File

@ -125,7 +125,7 @@ WRITE8_MEMBER(c65_state::vic4567_dummy_w)
printf("CONTROL A %02x\n",data); printf("CONTROL A %02x\n",data);
m_VIC3_ControlA = data; m_VIC3_ControlA = data;
break; break;
default: default:
if(!space.debugger_access()) if(!space.debugger_access())
printf("%02x %02x\n",offset,data); printf("%02x %02x\n",offset,data);
break; break;