diff options
Diffstat (limited to 'src/devices/machine/tms9901.h')
-rw-r--r-- | src/devices/machine/tms9901.h | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/devices/machine/tms9901.h b/src/devices/machine/tms9901.h index a962ceb28f7..2d106c3e328 100644 --- a/src/devices/machine/tms9901.h +++ b/src/devices/machine/tms9901.h @@ -60,13 +60,16 @@ public: void set_int_line(int pin_number, int state); - DECLARE_WRITE_LINE_MEMBER( rst1_line ); + void rst1_line(int state); // Synchronous clock input - DECLARE_WRITE_LINE_MEMBER( phi_line ); + void phi_line(int state); - DECLARE_READ8_MEMBER( read ); - DECLARE_WRITE8_MEMBER( write ); + uint8_t read(offs_t offset); + void write(offs_t offset, uint8_t data); + + bool read_bit(int bit); + void write_bit(int bit, bool set); auto p_out_cb(int n) { return m_write_p[n].bind(); } auto read_cb() { return m_read_port.bind(); } @@ -83,15 +86,16 @@ public: void set_poll_int_lines(bool poll) { m_poll_lines = poll; } + void update_clock(); + private: - static constexpr device_timer_id DECREMENTER = 0; + virtual void device_start() override ATTR_COLD; + virtual void device_stop() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - void soft_reset(); + TIMER_CALLBACK_MEMBER(decrement_tick); - void device_start() override; - void device_stop() override; - void device_reset() override; + void soft_reset(); // Common method for device_reset and rst1_line void do_reset(); @@ -163,7 +167,7 @@ private: devcb_read8 m_read_port; // I/O lines, used for output. When used as inputs, the levels are delivered via the m_read_block - devcb_write_line m_write_p[16]; + devcb_write_line::array<16> m_write_p; // INTREQ pin devcb_write_line m_interrupt; |