|
|
|
@@ -22,25 +22,25 @@ static inline e6502_Mem_Addr e6502_adr_mem(e6502_Core* core, |
|
|
|
|
|
|
|
static inline uint8_t e6502_adr_r8(e6502_Core* core, |
|
|
|
e6502_Address adr) { |
|
|
|
return &adr[0]; |
|
|
|
return adr[0]; |
|
|
|
} |
|
|
|
|
|
|
|
static inline uint8_t e6502_adr_r16(e6502_Core* core, |
|
|
|
e6502_Address adr) { |
|
|
|
return (&adr[0] | ((uint16_t)&adr[1] << 8)); |
|
|
|
return (adr[0] | ((uint16_t)adr[1] << 8)); |
|
|
|
} |
|
|
|
|
|
|
|
static inline void e6502_adr_w8(e6502_Core* core, |
|
|
|
e6502_Address adr, |
|
|
|
uint8_t val) { |
|
|
|
&adr[0] = val; |
|
|
|
adr[0] = val; |
|
|
|
} |
|
|
|
|
|
|
|
static inline void e6502_adr_w16(e6502_Core* core, |
|
|
|
e6502_Address adr, |
|
|
|
uint16_t val) { |
|
|
|
&adr[0] = val; |
|
|
|
&adr[1] = val >> 8; |
|
|
|
adr[0] = val; |
|
|
|
adr[1] = val >> 8; |
|
|
|
} |
|
|
|
|
|
|
|
#else // !E6502_POLL_MEM |
|
|
|
@@ -983,12 +983,16 @@ int e6502_run(e6502_Core* core, |
|
|
|
return status; |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef E6502_POLL_MEM |
|
|
|
void e6502_init(e6502_Core* core) { /* nuthin' */ } |
|
|
|
#else |
|
|
|
void e6502_init(e6502_Core* core, e6502_Read read, |
|
|
|
e6502_Write write, void* context) { |
|
|
|
core->bus_read = read; |
|
|
|
core->bus_write = write; |
|
|
|
core->bus_context = context; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
void e6502_reset(e6502_Core* core) { |
|
|
|
core->registers.PC = e6502_r16(core, e6502_Reset_Vec); |
|
|
|
|