diff options
Diffstat (limited to 'src/devices/bus/a2bus/a2pic.cpp')
-rw-r--r-- | src/devices/bus/a2bus/a2pic.cpp | 77 |
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 //---------------------------------------------- |