summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/a2bus/a2pic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/a2bus/a2pic.cpp')
-rw-r--r--src/devices/bus/a2bus/a2pic.cpp77
1 files changed, 53 insertions, 24 deletions
diff --git a/src/devices/bus/a2bus/a2pic.cpp b/src/devices/bus/a2bus/a2pic.cpp
index 4912cf53c0d..aaf0503be82 100644
--- a/src/devices/bus/a2bus/a2pic.cpp
+++ b/src/devices/bus/a2bus/a2pic.cpp
@@ -323,9 +323,51 @@ void a2bus_pic_device::device_reset()
WRITE_LINE_MEMBER(a2bus_pic_device::ack_w)
{
- if (bool(state) != bool(m_ack_in))
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(a2bus_pic_device::set_ack_in), this), state ? 1 : 0);
+}
+
+
+WRITE_LINE_MEMBER(a2bus_pic_device::perror_w)
+{
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(a2bus_pic_device::set_perror_in), this), state ? 1 : 0);
+}
+
+
+WRITE_LINE_MEMBER(a2bus_pic_device::select_w)
+{
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(a2bus_pic_device::set_select_in), this), state ? 1 : 0);
+}
+
+
+WRITE_LINE_MEMBER(a2bus_pic_device::fault_w)
+{
+ machine().scheduler().synchronize(timer_expired_delegate(FUNC(a2bus_pic_device::set_fault_in), this), state ? 1 : 0);
+}
+
+
+
+//----------------------------------------------
+// timer handlers
+//----------------------------------------------
+
+TIMER_CALLBACK_MEMBER(a2bus_pic_device::release_strobe)
+{
+ int const state(BIT(~m_input_sw1->read(), 3));
+ LOG("Output /STROBE=%d\n", state);
+ m_printer_conn->write_strobe(state);
+}
+
+
+
+//----------------------------------------------
+// synchronised inputs
+//----------------------------------------------
+
+void a2bus_pic_device::set_ack_in(void *ptr, s32 param)
+{
+ if (u32(param) != m_ack_in)
{
- m_ack_in = state ? 1U : 0U;
+ m_ack_in = u8(u32(param));
LOG("/ACK=%u\n", m_ack_in);
if (started() && (m_ack_in != BIT(m_input_sw1->read(), 4)))
{
@@ -336,31 +378,31 @@ WRITE_LINE_MEMBER(a2bus_pic_device::ack_w)
}
-WRITE_LINE_MEMBER(a2bus_pic_device::perror_w)
+void a2bus_pic_device::set_perror_in(void *ptr, s32 param)
{
- if (bool(state) != bool(m_perror_in))
+ if (u32(param) != m_perror_in)
{
- m_perror_in = state ? 1U : 0U;
+ m_perror_in = u8(u32(param));
LOG("PAPER EMPTY=%u\n", m_perror_in);
}
}
-WRITE_LINE_MEMBER(a2bus_pic_device::select_w)
+void a2bus_pic_device::set_select_in(void *ptr, s32 param)
{
- if (bool(state) != bool(m_select_in))
+ if (u32(param) != m_select_in)
{
- m_select_in = state ? 1U : 0U;
+ m_select_in = u8(u32(param));
LOG("SELECT=%u\n", m_select_in);
}
}
-WRITE_LINE_MEMBER(a2bus_pic_device::fault_w)
+void a2bus_pic_device::set_fault_in(void *ptr, s32 param)
{
- if (bool(state) != bool(m_fault_in))
+ if (u32(param) != m_fault_in)
{
- m_fault_in = state ? 1U : 0U;
+ m_fault_in = u8(u32(param));
LOG("/FAULT=%u\n", m_fault_in);
}
}
@@ -368,19 +410,6 @@ WRITE_LINE_MEMBER(a2bus_pic_device::fault_w)
//----------------------------------------------
-// timer handlers
-//----------------------------------------------
-
-TIMER_CALLBACK_MEMBER(a2bus_pic_device::release_strobe)
-{
- int const state(BIT(~m_input_sw1->read(), 3));
- LOG("Output /STROBE=%d\n", state);
- m_printer_conn->write_strobe(state);
-}
-
-
-
-//----------------------------------------------
// helpers
//----------------------------------------------