diff options
Diffstat (limited to 'src/devices/machine/e05a30.h')
-rw-r--r-- | src/devices/machine/e05a30.h | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/devices/machine/e05a30.h b/src/devices/machine/e05a30.h index aaf89f63e42..d8e7d1611ae 100644 --- a/src/devices/machine/e05a30.h +++ b/src/devices/machine/e05a30.h @@ -24,25 +24,30 @@ public: auto centronics_perror() { return m_write_centronics_perror.bind(); } auto centronics_fault() { return m_write_centronics_fault.bind(); } auto centronics_select() { return m_write_centronics_select.bind(); } + auto cpu_reset() { return m_write_cpu_reset.bind(); } + auto ready_led() { return m_write_ready_led.bind(); } - DECLARE_WRITE8_MEMBER( write ); - DECLARE_READ8_MEMBER( read ); + void write(offs_t offset, uint8_t data); + uint8_t read(offs_t offset); /* Centronics stuff */ - DECLARE_WRITE_LINE_MEMBER( centronics_input_strobe ); - DECLARE_WRITE_LINE_MEMBER( centronics_input_data0 ) { if (state) m_centronics_data |= 0x01; else m_centronics_data &= ~0x01; } - DECLARE_WRITE_LINE_MEMBER( centronics_input_data1 ) { if (state) m_centronics_data |= 0x02; else m_centronics_data &= ~0x02; } - DECLARE_WRITE_LINE_MEMBER( centronics_input_data2 ) { if (state) m_centronics_data |= 0x04; else m_centronics_data &= ~0x04; } - DECLARE_WRITE_LINE_MEMBER( centronics_input_data3 ) { if (state) m_centronics_data |= 0x08; else m_centronics_data &= ~0x08; } - DECLARE_WRITE_LINE_MEMBER( centronics_input_data4 ) { if (state) m_centronics_data |= 0x10; else m_centronics_data &= ~0x10; } - DECLARE_WRITE_LINE_MEMBER( centronics_input_data5 ) { if (state) m_centronics_data |= 0x20; else m_centronics_data &= ~0x20; } - DECLARE_WRITE_LINE_MEMBER( centronics_input_data6 ) { if (state) m_centronics_data |= 0x40; else m_centronics_data &= ~0x40; } - DECLARE_WRITE_LINE_MEMBER( centronics_input_data7 ) { if (state) m_centronics_data |= 0x80; else m_centronics_data &= ~0x80; } + void centronics_input_init(int state); + void centronics_input_strobe(int state); + void centronics_input_data0(int state) { if (state) m_centronics_data |= 0x01; else m_centronics_data &= ~0x01; } + void centronics_input_data1(int state) { if (state) m_centronics_data |= 0x02; else m_centronics_data &= ~0x02; } + void centronics_input_data2(int state) { if (state) m_centronics_data |= 0x04; else m_centronics_data &= ~0x04; } + void centronics_input_data3(int state) { if (state) m_centronics_data |= 0x08; else m_centronics_data &= ~0x08; } + void centronics_input_data4(int state) { if (state) m_centronics_data |= 0x10; else m_centronics_data &= ~0x10; } + void centronics_input_data5(int state) { if (state) m_centronics_data |= 0x20; else m_centronics_data &= ~0x20; } + void centronics_input_data6(int state) { if (state) m_centronics_data |= 0x40; else m_centronics_data &= ~0x40; } + void centronics_input_data7(int state) { if (state) m_centronics_data |= 0x80; else m_centronics_data &= ~0x80; } + + int get_ready_led() { return !m_centronics_busy; } protected: // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; private: /* callbacks */ @@ -55,6 +60,8 @@ private: devcb_write_line m_write_centronics_perror; devcb_write_line m_write_centronics_fault; devcb_write_line m_write_centronics_select; + devcb_write_line m_write_cpu_reset; + devcb_write_line m_write_ready_led; void update_printhead(int pos, uint8_t data); void update_pf_stepper(uint8_t data); @@ -71,9 +78,12 @@ private: uint8_t m_centronics_data; int m_centronics_busy; int m_centronics_nack; + uint8_t m_centronics_init; uint8_t m_centronics_strobe; uint8_t m_centronics_data_latch; uint8_t m_centronics_data_latched; + uint32_t m_c000_shift_register; + }; DECLARE_DEVICE_TYPE(E05A30, e05a30_device) |