summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/diexec.cpp
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-11-14 23:34:11 -0500
committer AJR <ajrhacker@users.noreply.github.com>2017-11-14 23:34:11 -0500
commit50637d602b1dcb0d5f51b2557031ffdf8ccf42db (patch)
tree9d567f4c672f3cbc5250dc43f4eb85c1e187e9db /src/emu/diexec.cpp
parenteff0a95e89a2ce322be6cdf43ae0c3c02f2db9ae (diff)
Replace driver_device::generic_pulse_irq_line with device_execute_interface::pulse_input_line (nw)
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