INLINE void saturn_call(int adr) { saturn_push(saturn.pc); saturn.pc=adr; // saturn_ICount-=10; change_pc(saturn.pc); }
void saturn_set_nmi_line(int state) { if (saturn.nmi_state == state) return; saturn.nmi_state = state; if( state != CLEAR_LINE ) { LOG(( "M6502#%d set_nmi_line(ASSERT)\n", cpu_getactivecpu())); saturn_ICount -= 7; saturn_push(saturn.pc); saturn.pc=IRQ_ADDRESS; LOG(("M6502#%d takes NMI ($%04x)\n", cpu_getactivecpu(), PC)); change_pc(saturn.pc); } }
INLINE void saturn_take_irq(void) { { saturn_ICount -= 7; saturn_push(saturn.pc); saturn.pc=IRQ_ADDRESS; LOG(("Saturn#%d takes IRQ ($%04x)\n", cpu_getactivecpu(), saturn.pc)); /* call back the cpuintrf to let it clear the line */ if (saturn.irq_callback) (*saturn.irq_callback)(0); change_pc(saturn.pc); } saturn.pending_irq = 0; }
INLINE void saturn_push_c(void) { saturn_push(S64_READ_A(C)); }