summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/audio/s11c_bg.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/audio/s11c_bg.h')
-rw-r--r--src/mame/audio/s11c_bg.h29
1 files changed, 21 insertions, 8 deletions
diff --git a/src/mame/audio/s11c_bg.h b/src/mame/audio/s11c_bg.h
index b5d9330c677..34f7734e9af 100644
--- a/src/mame/audio/s11c_bg.h
+++ b/src/mame/audio/s11c_bg.h
@@ -23,11 +23,16 @@ public:
// construction/destruction
s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
- void bg_cvsd_clock_set_w(uint8_t data);
- void bg_cvsd_digit_clock_clear_w(uint8_t data);
- void bgbank_w(uint8_t data);
- void ctrl_w(uint8_t data);
- void data_w(uint8_t data);
+ // note to keep synchronization working, the host machine should have synchronization timer expired delegates
+ // before writing to the following 3 things:
+ DECLARE_WRITE_LINE_MEMBER(extra_w); // external write to board CB2 (J4 pin 12), does anything actually do this?
+ DECLARE_WRITE_LINE_MEMBER(ctrl_w); // external write to board CB1 (J4 pin 13)
+ void data_w(uint8_t data); // external write to board data bus (J4 pins 3 thru 10 for D0-D7)
+ virtual void device_reset() override; // external write to board /RESET (J4 pin 18)
+
+ // callbacks
+ auto cb2_cb() { return m_cb2_cb.bind(); }
+ auto pb_cb() { return m_pb_cb.bind(); }
template <typename T> void set_romregion(T &&tag) { m_rom.set_tag(std::forward<T>(tag)); }
@@ -35,9 +40,11 @@ public:
protected:
// overrides
virtual void device_start() override;
- virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override;
+ TIMER_CALLBACK_MEMBER(deferred_cb2_w);
+ TIMER_CALLBACK_MEMBER(deferred_pb_w);
+
private:
required_device<cpu_device> m_cpu;
required_device<ym2151_device> m_ym2151;
@@ -46,9 +53,15 @@ private:
required_memory_bank m_cpubank;
required_region_ptr<uint8_t> m_rom;
- DECLARE_WRITE_LINE_MEMBER(ym2151_irq_w);
- void pia40_pb_w(uint8_t data);
+ devcb_write_line m_cb2_cb;
+ devcb_write8 m_pb_cb;
+
DECLARE_WRITE_LINE_MEMBER(pia40_cb2_w);
+ void pia40_pb_w(uint8_t data);
+
+ void bg_cvsd_clock_set_w(uint8_t data);
+ void bg_cvsd_digit_clock_clear_w(uint8_t data);
+ void bgbank_w(uint8_t data);
};
DECLARE_DEVICE_TYPE(S11C_BG, s11c_bg_device)