summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/e05a30.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/e05a30.cpp')
-rw-r--r--src/devices/machine/e05a30.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/devices/machine/e05a30.cpp b/src/devices/machine/e05a30.cpp
index 378fedc0539..650f6a28c97 100644
--- a/src/devices/machine/e05a30.cpp
+++ b/src/devices/machine/e05a30.cpp
@@ -29,9 +29,10 @@ e05a30_device::e05a30_device(const machine_config &mconfig, const char *tag, dev
m_write_centronics_perror(*this),
m_write_centronics_fault(*this),
m_write_centronics_select(*this),
+ m_write_cpu_reset(*this),
m_printhead(0),
m_pf_stepper(0),
- m_cr_stepper(0), m_centronics_data(0), m_centronics_busy(0), m_centronics_nack(0), m_centronics_strobe(0), m_centronics_data_latch(0), m_centronics_data_latched(0)
+ m_cr_stepper(0), m_centronics_data(0), m_centronics_busy(0), m_centronics_nack(0), m_centronics_init(1), m_centronics_strobe(0), m_centronics_data_latch(0), m_centronics_data_latched(0)
{
}
@@ -51,6 +52,7 @@ void e05a30_device::device_start()
m_write_centronics_perror.resolve_safe();
m_write_centronics_fault.resolve_safe();
m_write_centronics_select.resolve_safe();
+ m_write_cpu_reset.resolve_safe();
/* register for state saving */
save_item(NAME(m_printhead));
@@ -159,6 +161,18 @@ WRITE_LINE_MEMBER( e05a30_device::centronics_input_strobe )
}
+WRITE_LINE_MEMBER( e05a30_device::centronics_input_init )
+{
+ if (m_centronics_init == 1 && state == 0) // when init goes low, do a reset cycle
+ {
+ m_write_cpu_reset(0);
+ m_write_cpu_reset(1);
+ device_reset(); // this will trigger an NMI after 0.9 seconds
+ }
+ m_centronics_init = state;
+}
+
+
/***************************************************************************
IMPLEMENTATION
***************************************************************************/