diff options
Diffstat (limited to 'src/devices/bus/centronics/epson_lx810l.h')
-rw-r--r-- | src/devices/bus/centronics/epson_lx810l.h | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/src/devices/bus/centronics/epson_lx810l.h b/src/devices/bus/centronics/epson_lx810l.h index 429266de8e4..d8add7e8b4e 100644 --- a/src/devices/bus/centronics/epson_lx810l.h +++ b/src/devices/bus/centronics/epson_lx810l.h @@ -41,11 +41,42 @@ public: // construction/destruction epson_lx810l_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + /* fake memory I/O to get past memory reset check */ + DECLARE_READ8_MEMBER(fakemem_r); + DECLARE_WRITE8_MEMBER(fakemem_w); + + /* Centronics stuff */ + virtual DECLARE_WRITE_LINE_MEMBER( input_strobe ) override { if (m_e05a30) m_e05a30->centronics_input_strobe(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) override { if (m_e05a30) m_e05a30->centronics_input_data0(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) override { if (m_e05a30) m_e05a30->centronics_input_data1(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) override { if (m_e05a30) m_e05a30->centronics_input_data2(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) override { if (m_e05a30) m_e05a30->centronics_input_data3(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) override { if (m_e05a30) m_e05a30->centronics_input_data4(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) override { if (m_e05a30) m_e05a30->centronics_input_data5(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) override { if (m_e05a30) m_e05a30->centronics_input_data6(state); } + virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) override { if (m_e05a30) m_e05a30->centronics_input_data7(state); } + + /* Panel buttons */ + DECLARE_INPUT_CHANGED_MEMBER(online_sw); + + /* Video hardware (simulates paper) */ +#define uabs(x) ((x) > 0 ? (x) : -(x)) + unsigned int bitmap_line(int i) { return ((uabs(m_pf_pos_abs) / 6) + i) % m_bitmap.height(); } + +protected: + epson_lx810l_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; - virtual machine_config_constructor device_mconfig_additions() const override; + virtual void device_add_mconfig(machine_config &config) override; virtual ioport_constructor device_input_ports() const override; +private: DECLARE_READ8_MEMBER(porta_r); DECLARE_WRITE8_MEMBER(porta_w); DECLARE_READ8_MEMBER(portb_r); @@ -66,49 +97,22 @@ public: DECLARE_READ8_MEMBER(an6_r); DECLARE_READ8_MEMBER(an7_r); - /* fake memory I/O to get past memory reset check */ - DECLARE_READ8_MEMBER(fakemem_r); - DECLARE_WRITE8_MEMBER(fakemem_w); - + /* GATE ARRAY */ DECLARE_WRITE16_MEMBER(printhead); DECLARE_WRITE8_MEMBER(pf_stepper); DECLARE_WRITE8_MEMBER(cr_stepper); DECLARE_WRITE_LINE_MEMBER(e05a30_ready); - /* Centronics stuff */ - virtual DECLARE_WRITE_LINE_MEMBER( input_strobe ) override { if (m_e05a30) m_e05a30->centronics_input_strobe(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) override { if (m_e05a30) m_e05a30->centronics_input_data0(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) override { if (m_e05a30) m_e05a30->centronics_input_data1(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) override { if (m_e05a30) m_e05a30->centronics_input_data2(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) override { if (m_e05a30) m_e05a30->centronics_input_data3(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) override { if (m_e05a30) m_e05a30->centronics_input_data4(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) override { if (m_e05a30) m_e05a30->centronics_input_data5(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) override { if (m_e05a30) m_e05a30->centronics_input_data6(state); } - virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) override { if (m_e05a30) m_e05a30->centronics_input_data7(state); } DECLARE_WRITE_LINE_MEMBER(e05a30_centronics_ack) { output_ack(state); } DECLARE_WRITE_LINE_MEMBER(e05a30_centronics_busy) { output_busy(state); } DECLARE_WRITE_LINE_MEMBER(e05a30_centronics_perror) { output_perror(state); } DECLARE_WRITE_LINE_MEMBER(e05a30_centronics_fault) { output_fault(state); } DECLARE_WRITE_LINE_MEMBER(e05a30_centronics_select) { output_select(state); } - /* Panel buttons */ - DECLARE_INPUT_CHANGED_MEMBER(online_sw); - /* Video hardware (simulates paper) */ uint32_t screen_update_lx810l(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); -#define uabs(x) ((x) > 0 ? (x) : -(x)) - unsigned int bitmap_line(int i) { return ((uabs(m_pf_pos_abs) / 6) + i) % m_bitmap.height(); } - -protected: - epson_lx810l_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - -private: required_device<cpu_device> m_maincpu; required_device<stepper_device> m_pf_stepper; required_device<stepper_device> m_cr_stepper; |