diff options
Diffstat (limited to 'src/mame/audio/s11c_bg.h')
-rw-r--r-- | src/mame/audio/s11c_bg.h | 29 |
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) |