diff options
author | 2014-03-14 12:40:17 +0000 | |
---|---|---|
committer | 2014-03-14 12:40:17 +0000 | |
commit | edd1b11b4d8c1ec037293a583378076dc96aaed1 (patch) | |
tree | 24043884066470f2548cebaf27eb5df093a15c00 /src/emu/bus/s100 | |
parent | 56c45f6176fd27c0f0619419754aea09e96eba5b (diff) |
(MESS) s100: devcb2. (nw)
Diffstat (limited to 'src/emu/bus/s100')
-rw-r--r-- | src/emu/bus/s100/dj2db.c | 2 | ||||
-rw-r--r-- | src/emu/bus/s100/s100.c | 197 | ||||
-rw-r--r-- | src/emu/bus/s100/s100.h | 264 | ||||
-rw-r--r-- | src/emu/bus/s100/wunderbus.c | 2 |
4 files changed, 217 insertions, 248 deletions
diff --git a/src/emu/bus/s100/dj2db.c b/src/emu/bus/s100/dj2db.c index 1109457cefc..f602d290b63 100644 --- a/src/emu/bus/s100/dj2db.c +++ b/src/emu/bus/s100/dj2db.c @@ -94,7 +94,7 @@ void s100_dj2db_device::fdc_intrq_w(bool state) case 5: m_bus->vi5_w(state); break; case 6: m_bus->vi6_w(state); break; case 7: m_bus->vi7_w(state); break; - case 8: m_bus->int_w(state); break; + case 8: m_bus->irq_w(state); break; } } diff --git a/src/emu/bus/s100/s100.c b/src/emu/bus/s100/s100.c index a16fd7e08ee..bf067658c80 100644 --- a/src/emu/bus/s100/s100.c +++ b/src/emu/bus/s100/s100.c @@ -9,101 +9,77 @@ **********************************************************************/ -#include "emu.h" -#include "emuopts.h" #include "s100.h" //************************************************************************** -// GLOBAL VARIABLES +// DEVICE DEFINITIONS //************************************************************************** -const device_type S100_SLOT = &device_creator<s100_slot_device>; +const device_type S100_BUS = &device_creator<s100_bus_t>; +const device_type S100_SLOT = &device_creator<s100_slot_t>; + + //************************************************************************** // LIVE DEVICE //************************************************************************** //------------------------------------------------- -// s100_slot_device - constructor +// device_s100_card_interface - constructor //------------------------------------------------- -s100_slot_device::s100_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, S100_SLOT, "S100 slot", tag, owner, clock, "s100_slot", __FILE__), - device_slot_interface(mconfig, *this) + +device_s100_card_interface::device_s100_card_interface(const machine_config &mconfig, device_t &device) + : device_slot_card_interface(mconfig, device) { } //------------------------------------------------- -// device_start - device-specific startup +// s100_slot_t - constructor //------------------------------------------------- - -void s100_slot_device::device_start() +s100_slot_t::s100_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, S100_SLOT, "S100 slot", tag, owner, clock, "s100_slot", __FILE__), + device_slot_interface(mconfig, *this) { - m_bus = machine().device<s100_device>(S100_TAG); - device_s100_card_interface *dev = dynamic_cast<device_s100_card_interface *>(get_card_device()); - if (dev) m_bus->add_s100_card(dev); } - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - -const device_type S100 = &device_creator<s100_device>; - - //------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete +// device_start - device-specific startup //------------------------------------------------- -void s100_device::device_config_complete() +void s100_slot_t::device_start() { - // inherit a copy of the static data - const s100_bus_interface *intf = reinterpret_cast<const s100_bus_interface *>(static_config()); - if (intf != NULL) - { - *static_cast<s100_bus_interface *>(this) = *intf; - } - - // or initialize to defaults if none provided - else - { - memset(&m_out_int_cb, 0, sizeof(m_out_int_cb)); - memset(&m_out_nmi_cb, 0, sizeof(m_out_nmi_cb)); - memset(&m_out_vi0_cb, 0, sizeof(m_out_vi0_cb)); - memset(&m_out_vi1_cb, 0, sizeof(m_out_vi1_cb)); - memset(&m_out_vi2_cb, 0, sizeof(m_out_vi2_cb)); - memset(&m_out_vi3_cb, 0, sizeof(m_out_vi3_cb)); - memset(&m_out_vi4_cb, 0, sizeof(m_out_vi4_cb)); - memset(&m_out_vi5_cb, 0, sizeof(m_out_vi5_cb)); - memset(&m_out_vi6_cb, 0, sizeof(m_out_vi6_cb)); - memset(&m_out_vi7_cb, 0, sizeof(m_out_vi7_cb)); - memset(&m_out_dma0_cb, 0, sizeof(m_out_dma0_cb)); - memset(&m_out_dma1_cb, 0, sizeof(m_out_dma1_cb)); - memset(&m_out_dma2_cb, 0, sizeof(m_out_dma2_cb)); - memset(&m_out_dma3_cb, 0, sizeof(m_out_dma3_cb)); - memset(&m_out_rdy_cb, 0, sizeof(m_out_rdy_cb)); - memset(&m_out_hold_cb, 0, sizeof(m_out_hold_cb)); - memset(&m_out_error_cb, 0, sizeof(m_out_error_cb)); - } + m_bus = machine().device<s100_bus_t>(S100_TAG); + device_s100_card_interface *dev = dynamic_cast<device_s100_card_interface *>(get_card_device()); + if (dev) m_bus->add_card(dev); } - -//************************************************************************** -// LIVE DEVICE -//************************************************************************** - -//------------------------------------------------- -// s100_device - constructor //------------------------------------------------- - -s100_device::s100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, S100, "S100", tag, owner, clock, "s100", __FILE__) +// s100_bus_t - constructor +//------------------------------------------------- + +s100_bus_t::s100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, S100_BUS, "S100", tag, owner, clock, "s100", __FILE__), + m_write_irq(*this), + m_write_nmi(*this), + m_write_vi0(*this), + m_write_vi1(*this), + m_write_vi2(*this), + m_write_vi3(*this), + m_write_vi4(*this), + m_write_vi5(*this), + m_write_vi6(*this), + m_write_vi7(*this), + m_write_dma0(*this), + m_write_dma1(*this), + m_write_dma2(*this), + m_write_dma3(*this), + m_write_rdy(*this), + m_write_hold(*this), + m_write_error(*this) { } @@ -112,26 +88,26 @@ s100_device::s100_device(const machine_config &mconfig, const char *tag, device_ // device_start - device-specific startup //------------------------------------------------- -void s100_device::device_start() +void s100_bus_t::device_start() { // resolve callbacks - m_out_int_func.resolve(m_out_int_cb, *this); - m_out_nmi_func.resolve(m_out_nmi_cb, *this); - m_out_vi0_func.resolve(m_out_vi0_cb, *this); - m_out_vi1_func.resolve(m_out_vi1_cb, *this); - m_out_vi2_func.resolve(m_out_vi2_cb, *this); - m_out_vi3_func.resolve(m_out_vi3_cb, *this); - m_out_vi4_func.resolve(m_out_vi4_cb, *this); - m_out_vi5_func.resolve(m_out_vi5_cb, *this); - m_out_vi6_func.resolve(m_out_vi6_cb, *this); - m_out_vi7_func.resolve(m_out_vi7_cb, *this); - m_out_dma0_func.resolve(m_out_dma0_cb, *this); - m_out_dma1_func.resolve(m_out_dma1_cb, *this); - m_out_dma2_func.resolve(m_out_dma2_cb, *this); - m_out_dma3_func.resolve(m_out_dma3_cb, *this); - m_out_rdy_func.resolve(m_out_rdy_cb, *this); - m_out_hold_func.resolve(m_out_hold_cb, *this); - m_out_error_func.resolve(m_out_error_cb, *this); + m_write_irq.resolve_safe(); + m_write_nmi.resolve_safe(); + m_write_vi0.resolve_safe(); + m_write_vi1.resolve_safe(); + m_write_vi2.resolve_safe(); + m_write_vi3.resolve_safe(); + m_write_vi4.resolve_safe(); + m_write_vi5.resolve_safe(); + m_write_vi6.resolve_safe(); + m_write_vi7.resolve_safe(); + m_write_dma0.resolve_safe(); + m_write_dma1.resolve_safe(); + m_write_dma2.resolve_safe(); + m_write_dma3.resolve_safe(); + m_write_rdy.resolve_safe(); + m_write_hold.resolve_safe(); + m_write_error.resolve_safe(); } @@ -139,16 +115,16 @@ void s100_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void s100_device::device_reset() +void s100_bus_t::device_reset() { } //------------------------------------------------- -// add_s100_card - add S100 card +// add_card - add card //------------------------------------------------- -void s100_device::add_s100_card(device_s100_card_interface *card) +void s100_bus_t::add_card(device_s100_card_interface *card) { card->m_bus = this; m_device_list.append(*card); @@ -159,7 +135,7 @@ void s100_device::add_s100_card(device_s100_card_interface *card) // smemr_r - memory read //------------------------------------------------- -READ8_MEMBER( s100_device::smemr_r ) +READ8_MEMBER( s100_bus_t::smemr_r ) { UINT8 data = 0; @@ -179,7 +155,7 @@ READ8_MEMBER( s100_device::smemr_r ) // mwrt_w - memory write //------------------------------------------------- -WRITE8_MEMBER( s100_device::mwrt_w ) +WRITE8_MEMBER( s100_bus_t::mwrt_w ) { device_s100_card_interface *entry = m_device_list.first(); @@ -195,7 +171,7 @@ WRITE8_MEMBER( s100_device::mwrt_w ) // sinp_r - I/O read //------------------------------------------------- -READ8_MEMBER( s100_device::sinp_r ) +READ8_MEMBER( s100_bus_t::sinp_r ) { UINT8 data = 0; @@ -215,7 +191,7 @@ READ8_MEMBER( s100_device::sinp_r ) // sout_w - I/O write //------------------------------------------------- -WRITE8_MEMBER( s100_device::sout_w ) +WRITE8_MEMBER( s100_bus_t::sout_w ) { device_s100_card_interface *entry = m_device_list.first(); @@ -225,46 +201,3 @@ WRITE8_MEMBER( s100_device::sout_w ) entry = entry->next(); } } - - -WRITE_LINE_MEMBER( s100_device::int_w ) { m_out_nmi_func(state); } -WRITE_LINE_MEMBER( s100_device::nmi_w ) { m_out_nmi_func(state); } -WRITE_LINE_MEMBER( s100_device::vi0_w ) { m_out_vi0_func(state); } -WRITE_LINE_MEMBER( s100_device::vi1_w ) { m_out_vi1_func(state); } -WRITE_LINE_MEMBER( s100_device::vi2_w ) { m_out_vi2_func(state); } -WRITE_LINE_MEMBER( s100_device::vi3_w ) { m_out_vi3_func(state); } -WRITE_LINE_MEMBER( s100_device::vi4_w ) { m_out_vi4_func(state); } -WRITE_LINE_MEMBER( s100_device::vi5_w ) { m_out_vi5_func(state); } -WRITE_LINE_MEMBER( s100_device::vi6_w ) { m_out_vi6_func(state); } -WRITE_LINE_MEMBER( s100_device::vi7_w ) { m_out_vi7_func(state); } -WRITE_LINE_MEMBER( s100_device::dma0_w ) { m_out_dma0_func(state); } -WRITE_LINE_MEMBER( s100_device::dma1_w ) { m_out_dma1_func(state); } -WRITE_LINE_MEMBER( s100_device::dma2_w ) { m_out_dma2_func(state); } -WRITE_LINE_MEMBER( s100_device::dma3_w ) { m_out_dma3_func(state); } -WRITE_LINE_MEMBER( s100_device::rdy_w ) { m_out_rdy_func(state); } -WRITE_LINE_MEMBER( s100_device::hold_w ) { m_out_hold_func(state); } -WRITE_LINE_MEMBER( s100_device::error_w ) { m_out_error_func(state); } - - - -//************************************************************************** -// DEVICE S100 CARD INTERFACE -//************************************************************************** - -//------------------------------------------------- -// device_s100_card_interface - constructor -//------------------------------------------------- - -device_s100_card_interface::device_s100_card_interface(const machine_config &mconfig, device_t &device) - : device_slot_card_interface(mconfig, device) -{ -} - - -//------------------------------------------------- -// ~device_s100_card_interface - destructor -//------------------------------------------------- - -device_s100_card_interface::~device_s100_card_interface() -{ -} diff --git a/src/emu/bus/s100/s100.h b/src/emu/bus/s100/s100.h index e9ad5f5657b..887b7b1f9b4 100644 --- a/src/emu/bus/s100/s100.h +++ b/src/emu/bus/s100/s100.h @@ -83,154 +83,83 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_S100_BUS_ADD(_config) \ - MCFG_DEVICE_ADD(S100_TAG, S100, 0) \ - MCFG_DEVICE_CONFIG(_config) - - -#define S100_INTERFACE(_name) \ - const s100_bus_interface (_name) = - +#define MCFG_S100_BUS_ADD() \ + MCFG_DEVICE_ADD(S100_TAG, S100_BUS, 0) #define MCFG_S100_SLOT_ADD(_tag, _slot_intf, _def_slot) \ MCFG_DEVICE_ADD(_tag, S100_SLOT, 0) \ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) +#define MCFG_S100_IRQ_CALLBACK(_write) \ + devcb = &s100_bus_t::set_irq_wr_callback(*device, DEVCB2_##_write); -//************************************************************************** -// TYPE DEFINITIONS -//************************************************************************** +#define MCFG_S100_NMI_CALLBACK(_write) \ + devcb = &s100_bus_t::set_nmi_wr_callback(*device, DEVCB2_##_write); -// ======================> s100_slot_device +#define MCFG_S100_VI0_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi0_wr_callback(*device, DEVCB2_##_write); -class s100_device; +#define MCFG_S100_VI1_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi1_wr_callback(*device, DEVCB2_##_write); -class s100_slot_device : public device_t, - public device_slot_interface -{ -public: - // construction/destruction - s100_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); +#define MCFG_S100_VI2_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi2_wr_callback(*device, DEVCB2_##_write); - // device-level overrides - virtual void device_start(); +#define MCFG_S100_VI3_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi3_wr_callback(*device, DEVCB2_##_write); -private: - s100_device *m_bus; -}; - - -// device type definition -extern const device_type S100_SLOT; - - -// ======================> s100_bus_interface - -struct s100_bus_interface -{ - devcb_write_line m_out_int_cb; - devcb_write_line m_out_nmi_cb; - devcb_write_line m_out_vi0_cb; - devcb_write_line m_out_vi1_cb; - devcb_write_line m_out_vi2_cb; - devcb_write_line m_out_vi3_cb; - devcb_write_line m_out_vi4_cb; - devcb_write_line m_out_vi5_cb; - devcb_write_line m_out_vi6_cb; - devcb_write_line m_out_vi7_cb; - devcb_write_line m_out_dma0_cb; - devcb_write_line m_out_dma1_cb; - devcb_write_line m_out_dma2_cb; - devcb_write_line m_out_dma3_cb; - devcb_write_line m_out_rdy_cb; - devcb_write_line m_out_hold_cb; - devcb_write_line m_out_error_cb; -}; +#define MCFG_S100_VI4_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi4_wr_callback(*device, DEVCB2_##_write); -class device_s100_card_interface; +#define MCFG_S100_VI5_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi5_wr_callback(*device, DEVCB2_##_write); +#define MCFG_S100_VI6_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi6_wr_callback(*device, DEVCB2_##_write); -// ======================> s100_device +#define MCFG_S100_VI7_CALLBACK(_write) \ + devcb = &s100_bus_t::set_vi7_wr_callback(*device, DEVCB2_##_write); -class s100_device : public device_t, - public s100_bus_interface -{ -public: - // construction/destruction - s100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~s100_device() { m_device_list.detach_all(); } +#define MCFG_S100_DMA0_CALLBACK(_write) \ + devcb = &s100_bus_t::set_dma0_wr_callback(*device, DEVCB2_##_write); - void add_s100_card(device_s100_card_interface *card); +#define MCFG_S100_DMA1_CALLBACK(_write) \ + devcb = &s100_bus_t::set_dma1_wr_callback(*device, DEVCB2_##_write); - DECLARE_READ8_MEMBER( smemr_r ); - DECLARE_WRITE8_MEMBER( mwrt_w ); +#define MCFG_S100_DMA2_CALLBACK(_write) \ + devcb = &s100_bus_t::set_dma2_wr_callback(*device, DEVCB2_##_write); - DECLARE_READ8_MEMBER( sinp_r ); - DECLARE_WRITE8_MEMBER( sout_w ); +#define MCFG_S100_DMA3_CALLBACK(_write) \ + devcb = &s100_bus_t::set_dma3_wr_callback(*device, DEVCB2_##_write); - DECLARE_WRITE_LINE_MEMBER( int_w ); - DECLARE_WRITE_LINE_MEMBER( nmi_w ); - DECLARE_WRITE_LINE_MEMBER( vi0_w ); - DECLARE_WRITE_LINE_MEMBER( vi1_w ); - DECLARE_WRITE_LINE_MEMBER( vi2_w ); - DECLARE_WRITE_LINE_MEMBER( vi3_w ); - DECLARE_WRITE_LINE_MEMBER( vi4_w ); - DECLARE_WRITE_LINE_MEMBER( vi5_w ); - DECLARE_WRITE_LINE_MEMBER( vi6_w ); - DECLARE_WRITE_LINE_MEMBER( vi7_w ); - DECLARE_WRITE_LINE_MEMBER( dma0_w ); - DECLARE_WRITE_LINE_MEMBER( dma1_w ); - DECLARE_WRITE_LINE_MEMBER( dma2_w ); - DECLARE_WRITE_LINE_MEMBER( dma3_w ); - DECLARE_WRITE_LINE_MEMBER( rdy_w ); - DECLARE_WRITE_LINE_MEMBER( hold_w ); - DECLARE_WRITE_LINE_MEMBER( error_w ); +#define MCFG_S100_RDY_CALLBACK(_write) \ + devcb = &s100_bus_t::set_rdy_wr_callback(*device, DEVCB2_##_write); -protected: - // device-level overrides - virtual void device_start(); - virtual void device_reset(); - virtual void device_config_complete(); +#define MCFG_S100_HOLD_CALLBACK(_write) \ + devcb = &s100_bus_t::set_hold_wr_callback(*device, DEVCB2_##_write); -private: - devcb_resolved_write_line m_out_int_func; - devcb_resolved_write_line m_out_nmi_func; - devcb_resolved_write_line m_out_vi0_func; - devcb_resolved_write_line m_out_vi1_func; - devcb_resolved_write_line m_out_vi2_func; - devcb_resolved_write_line m_out_vi3_func; - devcb_resolved_write_line m_out_vi4_func; - devcb_resolved_write_line m_out_vi5_func; - devcb_resolved_write_line m_out_vi6_func; - devcb_resolved_write_line m_out_vi7_func; - devcb_resolved_write_line m_out_dma0_func; - devcb_resolved_write_line m_out_dma1_func; - devcb_resolved_write_line m_out_dma2_func; - devcb_resolved_write_line m_out_dma3_func; - devcb_resolved_write_line m_out_rdy_func; - devcb_resolved_write_line m_out_hold_func; - devcb_resolved_write_line m_out_error_func; +#define MCFG_S100_ERROR_CALLBACK(_write) \ + devcb = &s100_bus_t::set_error_wr_callback(*device, DEVCB2_##_write); - simple_list<device_s100_card_interface> m_device_list; -}; -// device type definition -extern const device_type S100; +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** +class s100_bus_t; // ======================> device_s100_card_interface -// class representing interface-specific live s100 card class device_s100_card_interface : public device_slot_card_interface { - friend class s100_device; + friend class s100_bus_t; public: // construction/destruction device_s100_card_interface(const machine_config &mconfig, device_t &device); - virtual ~device_s100_card_interface(); + virtual ~device_s100_card_interface() { } device_s100_card_interface *next() const { return m_next; } @@ -270,9 +199,116 @@ public: virtual void s100_slave_clr_w(int state) { } public: - s100_device *m_bus; + s100_bus_t *m_bus; device_s100_card_interface *m_next; }; + +// ======================> s100_bus_t + +class s100_bus_t : public device_t +{ +public: + // construction/destruction + s100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + ~s100_bus_t() { m_device_list.detach_all(); } + + template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_irq.set_callback(object); } + template<class _Object> static devcb2_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_nmi.set_callback(object); } + template<class _Object> static devcb2_base &set_vi0_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi0.set_callback(object); } + template<class _Object> static devcb2_base &set_vi1_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi1.set_callback(object); } + template<class _Object> static devcb2_base &set_vi2_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi2.set_callback(object); } + template<class _Object> static devcb2_base &set_vi3_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi3.set_callback(object); } + template<class _Object> static devcb2_base &set_vi4_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi4.set_callback(object); } + template<class _Object> static devcb2_base &set_vi5_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi5.set_callback(object); } + template<class _Object> static devcb2_base &set_vi6_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi6.set_callback(object); } + template<class _Object> static devcb2_base &set_vi7_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_vi7.set_callback(object); } + template<class _Object> static devcb2_base &set_dma0_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma0.set_callback(object); } + template<class _Object> static devcb2_base &set_dma1_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma1.set_callback(object); } + template<class _Object> static devcb2_base &set_dma2_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma2.set_callback(object); } + template<class _Object> static devcb2_base &set_dma3_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_dma3.set_callback(object); } + template<class _Object> static devcb2_base &set_rdy_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_rdy.set_callback(object); } + template<class _Object> static devcb2_base &set_hold_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_hold.set_callback(object); } + template<class _Object> static devcb2_base &set_error_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_error.set_callback(object); } + + void add_card(device_s100_card_interface *card); + + DECLARE_READ8_MEMBER( smemr_r ); + DECLARE_WRITE8_MEMBER( mwrt_w ); + + DECLARE_READ8_MEMBER( sinp_r ); + DECLARE_WRITE8_MEMBER( sout_w ); + + DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_write_irq(state); } + DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_write_nmi(state); } + DECLARE_WRITE_LINE_MEMBER( vi0_w ) { m_write_vi0(state); } + DECLARE_WRITE_LINE_MEMBER( vi1_w ) { m_write_vi1(state); } + DECLARE_WRITE_LINE_MEMBER( vi2_w ) { m_write_vi2(state); } + DECLARE_WRITE_LINE_MEMBER( vi3_w ) { m_write_vi3(state); } + DECLARE_WRITE_LINE_MEMBER( vi4_w ) { m_write_vi4(state); } + DECLARE_WRITE_LINE_MEMBER( vi5_w ) { m_write_vi5(state); } + DECLARE_WRITE_LINE_MEMBER( vi6_w ) { m_write_vi6(state); } + DECLARE_WRITE_LINE_MEMBER( vi7_w ) { m_write_vi7(state); } + DECLARE_WRITE_LINE_MEMBER( dma0_w ) { m_write_dma0(state); } + DECLARE_WRITE_LINE_MEMBER( dma1_w ) { m_write_dma1(state); } + DECLARE_WRITE_LINE_MEMBER( dma2_w ) { m_write_dma2(state); } + DECLARE_WRITE_LINE_MEMBER( dma3_w ) { m_write_dma3(state); } + DECLARE_WRITE_LINE_MEMBER( rdy_w ) { m_write_rdy(state); } + DECLARE_WRITE_LINE_MEMBER( hold_w ) { m_write_hold(state); } + DECLARE_WRITE_LINE_MEMBER( error_w ) { m_write_error(state); } + +protected: + // device-level overrides + virtual void device_start(); + virtual void device_reset(); + +private: + devcb2_write_line m_write_irq; + devcb2_write_line m_write_nmi; + devcb2_write_line m_write_vi0; + devcb2_write_line m_write_vi1; + devcb2_write_line m_write_vi2; + devcb2_write_line m_write_vi3; + devcb2_write_line m_write_vi4; + devcb2_write_line m_write_vi5; + devcb2_write_line m_write_vi6; + devcb2_write_line m_write_vi7; + devcb2_write_line m_write_dma0; + devcb2_write_line m_write_dma1; + devcb2_write_line m_write_dma2; + devcb2_write_line m_write_dma3; + devcb2_write_line m_write_rdy; + devcb2_write_line m_write_hold; + devcb2_write_line m_write_error; + + simple_list<device_s100_card_interface> m_device_list; +}; + + +// ======================> s100_slot_t + +class s100_slot_t : public device_t, + public device_slot_interface +{ +public: + // construction/destruction + s100_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // device-level overrides + virtual void device_start(); + +private: + s100_bus_t *m_bus; +}; + + + +// device type definition +extern const device_type S100_BUS; +extern const device_type S100_SLOT; + + + + #endif diff --git a/src/emu/bus/s100/wunderbus.c b/src/emu/bus/s100/wunderbus.c index 7f0f0e4ed2f..91523037b82 100644 --- a/src/emu/bus/s100/wunderbus.c +++ b/src/emu/bus/s100/wunderbus.c @@ -57,7 +57,7 @@ const device_type S100_WUNDERBUS = &device_creator<s100_wunderbus_device>; WRITE_LINE_MEMBER( s100_wunderbus_device::pic_int_w ) { - m_bus->int_w(state); + m_bus->irq_w(state); } |