summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/e05a30.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/e05a30.h')
-rw-r--r--src/devices/machine/e05a30.h36
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)