summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/diexec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/diexec.cpp')
-rw-r--r--src/emu/diexec.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp
index e43613b0302..0958108fe42 100644
--- a/src/emu/diexec.cpp
+++ b/src/emu/diexec.cpp
@@ -695,6 +695,48 @@ TIMER_CALLBACK_MEMBER(device_execute_interface::trigger_periodic_interrupt)
}
+//-------------------------------------------------
+// irq_pulse_clear - clear a "pulsed" input line
+//-------------------------------------------------
+
+TIMER_CALLBACK_MEMBER(device_execute_interface::irq_pulse_clear)
+{
+ int irqline = param;
+ set_input_line(irqline, CLEAR_LINE);
+}
+
+
+//-------------------------------------------------
+// pulse_input_line - "pulse" an input line by
+// asserting it and then clearing it later
+//-------------------------------------------------
+
+void device_execute_interface::pulse_input_line(int irqline, const attotime &duration)
+{
+ assert(duration > attotime::zero);
+ set_input_line(irqline, ASSERT_LINE);
+
+ attotime target_time = local_time() + duration;
+ m_scheduler->timer_set(target_time - m_scheduler->time(), timer_expired_delegate(FUNC(device_execute_interface::irq_pulse_clear), this), irqline);
+}
+
+
+//-------------------------------------------------
+// pulse_input_line_and_vector - "pulse" an
+// input line by asserting it and then clearing it
+// later, specifying a vector
+//-------------------------------------------------
+
+void device_execute_interface::pulse_input_line_and_vector(int irqline, int vector, const attotime &duration)
+{
+ assert(duration > attotime::zero);
+ set_input_line_and_vector(irqline, ASSERT_LINE, vector);
+
+ attotime target_time = local_time() + duration;
+ m_scheduler->timer_set(target_time - m_scheduler->time(), timer_expired_delegate(FUNC(device_execute_interface::irq_pulse_clear), this), irqline);
+}
+
+
//**************************************************************************
// DEVICE INPUT