summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/taito68705interface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/taito68705interface.h')
-rw-r--r--src/mame/machine/taito68705interface.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/mame/machine/taito68705interface.h b/src/mame/machine/taito68705interface.h
new file mode 100644
index 00000000000..c0ad508ef69
--- /dev/null
+++ b/src/mame/machine/taito68705interface.h
@@ -0,0 +1,86 @@
+// license:BSD-3-Clause
+// copyright-holders:Ernesto Corvi, Nicola Salmoria, David Haywood
+
+#include "cpu/m6805/m6805.h"
+
+class taito68705_mcu_device : public device_t
+{
+public:
+ taito68705_mcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
+
+ ~taito68705_mcu_device() {}
+
+ virtual DECLARE_WRITE8_MEMBER( mcu_w );
+ DECLARE_READ8_MEMBER( mcu_r );
+ DECLARE_READ8_MEMBER( mcu_porta_r );
+ virtual DECLARE_READ8_MEMBER( mcu_portc_r );
+ DECLARE_WRITE8_MEMBER( mcu_porta_w );
+ virtual DECLARE_WRITE8_MEMBER( mcu_portb_w );
+
+ DECLARE_READ8_MEMBER( mcu_status_r );
+ DECLARE_CUSTOM_INPUT_MEMBER( mcu_sent_r );
+ DECLARE_CUSTOM_INPUT_MEMBER( main_sent_r );
+
+ bool get_main_sent() { return m_main_sent; };
+ bool get_mcu_sent() { return m_mcu_sent; };
+
+
+protected:
+ // device-level overrides
+ virtual machine_config_constructor device_mconfig_additions() const override;
+ virtual void device_config_complete() override;
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+ // internal state
+ bool m_mcu_sent;
+ bool m_main_sent;
+ uint8_t m_from_main;
+ uint8_t m_from_mcu;
+ uint8_t m_from_mcu_latch;
+ uint8_t m_to_mcu_latch;
+ uint8_t m_old_portB;
+
+ required_device<cpu_device> m_mcu;
+};
+
+extern const device_type TAITO68705_MCU;
+
+#define MCFG_TAITO_M68705_EXTENSION_CB(_devcb) \
+ taito68705_mcu_slap_device::set_extension_cb(*device, DEVCB_##_devcb);
+
+class taito68705_mcu_slap_device : public taito68705_mcu_device
+{
+public:
+ taito68705_mcu_slap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual DECLARE_WRITE8_MEMBER( mcu_portb_w ) override;
+
+ template<class _Object> static devcb_base &set_extension_cb(device_t &device, _Object object) { return downcast<taito68705_mcu_slap_device &>(device).m_extension_cb_w.set_callback(object); }
+
+ devcb_write8 m_extension_cb_w;
+
+protected:
+ virtual void device_start() override;
+};
+
+extern const device_type TAITO68705_MCU_SLAP;
+
+class taito68705_mcu_tiger_device : public taito68705_mcu_device
+{
+public:
+ taito68705_mcu_tiger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual DECLARE_READ8_MEMBER( mcu_portc_r ) override;
+};
+
+extern const device_type TAITO68705_MCU_TIGER;
+
+class taito68705_mcu_beg_device : public taito68705_mcu_device
+{
+public:
+ taito68705_mcu_beg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ virtual DECLARE_WRITE8_MEMBER(mcu_w) override;
+ virtual DECLARE_WRITE8_MEMBER(mcu_portb_w) override;
+};
+
+extern const device_type TAITO68705_MCU_BEG;