diff options
Diffstat (limited to 'src/devices/machine/e0516.h')
-rw-r--r-- | src/devices/machine/e0516.h | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/src/devices/machine/e0516.h b/src/devices/machine/e0516.h index 6e5d1b55779..81ad63afb5d 100644 --- a/src/devices/machine/e0516.h +++ b/src/devices/machine/e0516.h @@ -30,28 +30,45 @@ public: // construction/destruction e0516_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - DECLARE_WRITE_LINE_MEMBER( cs_w ); - DECLARE_WRITE_LINE_MEMBER( clk_w ); - DECLARE_WRITE_LINE_MEMBER( dio_w ); - DECLARE_READ_LINE_MEMBER( dio_r ); + auto outsel_rd_cb() { return m_read_outsel.bind(); } + auto sec_wr_cb() { return m_write_sec.bind(); } + auto min_wr_cb() { return m_write_min.bind(); } + auto hrs_wr_cb() { return m_write_hrs.bind(); } + auto day_wr_cb() { return m_write_day.bind(); } + + void cs_w(int state); + void clk_w(int state); + void dio_w(int state); + int dio_r(); + void reset_w(int state); protected: // device-level overrides - virtual void device_start() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + virtual void device_start() override ATTR_COLD; // device_rtc_interface overrides virtual void rtc_clock_updated(int year, int month, int day, int day_of_week, int hour, int minute, int second) override; + TIMER_CALLBACK_MEMBER(timer_tick); + + devcb_read_line m_read_outsel; + devcb_write_line m_write_sec; + devcb_write_line m_write_min; + devcb_write_line m_write_hrs; + devcb_write_line m_write_day; + private: - int m_cs; // chip select - int m_clk; // clock - int m_data_latch; // data latch - int m_reg_latch; // register latch - int m_read_write; // read/write data - int m_state; // state - int m_bits; // number of bits transferred - int m_dio; // data pin + bool m_cs; + bool m_clk; + int m_cycle; + u64 m_data_latch; + int m_reg_latch; + int m_state; + int m_bits_left; + bool m_dio; + bool m_reset; + + offs_t get_address() { return (m_reg_latch >> 1) & 0x07; } // timers emu_timer *m_timer; |