summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/bus/s100
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2014-03-14 12:40:17 +0000
committer Curt Coder <curtcoder@mail.com>2014-03-14 12:40:17 +0000
commitedd1b11b4d8c1ec037293a583378076dc96aaed1 (patch)
tree24043884066470f2548cebaf27eb5df093a15c00 /src/emu/bus/s100
parent56c45f6176fd27c0f0619419754aea09e96eba5b (diff)
(MESS) s100: devcb2. (nw)
Diffstat (limited to 'src/emu/bus/s100')
-rw-r--r--src/emu/bus/s100/dj2db.c2
-rw-r--r--src/emu/bus/s100/s100.c197
-rw-r--r--src/emu/bus/s100/s100.h264
-rw-r--r--src/emu/bus/s100/wunderbus.c2
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);
}