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