void device_execute_interface::suspend_resume_changed() { // inform the scheduler m_scheduler->suspend_resume_changed(); // if we're active, synchronize abort_timeslice(); }
void device_execute_interface::resume(UINT32 reason) { if (TEMPLOG) printf("resume %s (%X)\n", device().tag(), reason); // clear the suspend reason and eat cycles flag m_nextsuspend &= ~reason; // if we're active, synchronize abort_timeslice(); }
void device_execute_interface::suspend(UINT32 reason, bool eatcycles) { if (TEMPLOG) printf("suspend %s (%X)\n", device().tag(), reason); // set the suspend reason and eat cycles flag m_nextsuspend |= reason; m_nexteatcycles = eatcycles; // if we're active, synchronize abort_timeslice(); }
void device_execute_interface::trigger(int trigid) { // if we're executing, for an immediate abort abort_timeslice(); // see if this is a matching trigger if ((m_nextsuspend & SUSPEND_REASON_TRIGGER) != 0 && m_trigger == trigid) { resume(SUSPEND_REASON_TRIGGER); m_trigger = 0; } }