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