diff options
Diffstat (limited to 'src/devices/bus/ep64/exp.h')
-rw-r--r-- | src/devices/bus/ep64/exp.h | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/src/devices/bus/ep64/exp.h b/src/devices/bus/ep64/exp.h index 88d3b4e61b9..cb29bab5049 100644 --- a/src/devices/bus/ep64/exp.h +++ b/src/devices/bus/ep64/exp.h @@ -47,10 +47,40 @@ #pragma once +#include "sound/dave.h" + void ep64_expansion_bus_cards(device_slot_interface &device); //************************************************************************** +// MACROS / CONSTANTS +//************************************************************************** + +#define EP64_EXPANSION_BUS_TAG "exp" + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_EP64_EXPANSION_BUS_SLOT_ADD(_tag, _def_slot) \ + MCFG_DEVICE_ADD(_tag, EP64_EXPANSION_BUS_SLOT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(ep64_expansion_bus_cards, _def_slot, false) + +#define MCFG_EP64_EXPANSION_BUS_SLOT_DAVE(_tag) \ + downcast<ep64_expansion_bus_slot_device &>(*device).set_dave_tag(_tag); + +#define MCFG_EP64_EXPANSION_BUS_SLOT_IRQ_CALLBACK(_write) \ + downcast<ep64_expansion_bus_slot_device &>(*device).set_irq_wr_callback(DEVCB_##_write); + +#define MCFG_EP64_EXPANSION_BUS_SLOT_NMI_CALLBACK(_write) \ + downcast<ep64_expansion_bus_slot_device &>(*device).set_nmi_wr_callback(DEVCB_##_write); + +#define MCFG_EP64_EXPANSION_BUS_SLOT_WAIT_CALLBACK(_write) \ + downcast<ep64_expansion_bus_slot_device &>(*device).set_wait_wr_callback(DEVCB_##_write); + + + +//************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -75,8 +105,7 @@ public: } ep64_expansion_bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename T> void set_program_space(T &&tag, int spacenum) { m_program_space.set_tag(std::forward<T>(tag), spacenum); } - template <typename T> void set_io_space(T &&tag, int spacenum) { m_io_space.set_tag(std::forward<T>(tag), spacenum); } + template <typename T> void set_dave_tag(T &&dave_tag) { m_dave.set_tag(std::forward<T>(dave_tag)); } auto irq_wr() { return m_write_irq.bind(); } auto nmi_wr() { return m_write_nmi.bind(); } auto wait_wr() { return m_write_wait.bind(); } @@ -85,8 +114,8 @@ public: DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); } DECLARE_WRITE_LINE_MEMBER( wait_w ) { m_write_wait(state); } - address_space &program() { return *m_program_space; } - address_space &io() { return *m_io_space; } + address_space& program() { return m_dave->space(AS_PROGRAM); } + address_space& io() { return m_dave->space(AS_IO); } protected: // device-level overrides @@ -99,8 +128,7 @@ private: devcb_write_line m_write_nmi; devcb_write_line m_write_wait; - required_address_space m_program_space; - required_address_space m_io_space; + required_device<dave_device> m_dave; device_ep64_expansion_bus_card_interface *m_card; }; |