summaryrefslogtreecommitdiffstats
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.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/devices/machine/tms9901.h b/src/devices/machine/tms9901.h
index 86a2c6852e3..eda01f253ad 100644
--- a/src/devices/machine/tms9901.h
+++ b/src/devices/machine/tms9901.h
@@ -60,8 +60,11 @@ public:
DECLARE_WRITE_LINE_MEMBER( rst1_line );
- DECLARE_READ8_MEMBER( read );
- DECLARE_WRITE8_MEMBER( write );
+ // Synchronous clock input
+ DECLARE_WRITE_LINE_MEMBER( phi_line );
+
+ uint8_t read(offs_t offset);
+ void write(offs_t offset, uint8_t data);
auto p_out_cb(int n) { return m_write_p[n].bind(); }
auto read_cb() { return m_read_block.bind(); }
@@ -83,6 +86,9 @@ private:
// Common method for device_reset and rst1_line
void do_reset();
+ // Common clock handling
+ void clock_in(line_state clk);
+
// State of the INT1-INT15 lines (must be inverted when queried)
// Note that the levels must also be delivered when reading the pins, which
// may require to latch the int levels.
@@ -93,6 +99,9 @@ private:
bool m_int_pending; // status of the int* pin (connected to TMS9900)
bool m_timer_int_pending; // timer int pending (overrides int3 pin if timer enabled)
+ bool m_clock_active;
+ int m_clockdiv; // Clock divider counter (for synchronous clock)
+
// PIO registers
int m_pio_direction; // direction register for PIO
@@ -110,7 +119,7 @@ private:
// true = clock mode (read/write clock interval)
bool m_clock_mode;
- // MESS timer, used to emulate the decrementer register
+ // Timer, used to emulate the decrementer register
emu_timer *m_decrementer;
// clock interval, loaded in decrementer when it reaches 0.