summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2013-10-31 20:43:39 +0000
committer Curt Coder <curtcoder@mail.com>2013-10-31 20:43:39 +0000
commit9759a93d64c4c8a04330b954fbf88ac8fc34a064 (patch)
treecd7fe98f67ab2a2c3a142106068f432cb1114c67 /src/emu
parent522da35d80b37c04e7d0d718a4207820c4dc048b (diff)
(MESS) Cleanup. (nw)
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/bus/abc1600/abc1600.c478
-rw-r--r--src/emu/bus/abc1600/abc1600.h85
-rw-r--r--src/emu/bus/abcbus/abcbus.c231
-rw-r--r--src/emu/bus/abcbus/abcbus.h111
-rw-r--r--src/emu/bus/isbx/isbx.c7
-rw-r--r--src/emu/bus/isbx/isbx.h3
6 files changed, 113 insertions, 802 deletions
diff --git a/src/emu/bus/abc1600/abc1600.c b/src/emu/bus/abc1600/abc1600.c
index 585402548de..1df388c05a0 100644
--- a/src/emu/bus/abc1600/abc1600.c
+++ b/src/emu/bus/abc1600/abc1600.c
@@ -22,7 +22,7 @@ const device_type ABC1600BUS_SLOT = &device_creator<abc1600bus_slot_device>;
//**************************************************************************
-// DEVICE ABC1600BUS CARD INTERFACE
+// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
@@ -32,38 +32,25 @@ const device_type ABC1600BUS_SLOT = &device_creator<abc1600bus_slot_device>;
device_abc1600bus_card_interface::device_abc1600bus_card_interface(const machine_config &mconfig, device_t &device)
: device_slot_card_interface(mconfig, device)
{
+ m_slot = dynamic_cast<abc1600bus_slot_device *>(device.owner());
}
//-------------------------------------------------
-// ~device_abc1600bus_card_interface - destructor
-//-------------------------------------------------
-
-device_abc1600bus_card_interface::~device_abc1600bus_card_interface()
-{
-}
-
-
-
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
-//-------------------------------------------------
// abc1600bus_slot_device - constructor
//-------------------------------------------------
abc1600bus_slot_device::abc1600bus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
- device_t(mconfig, ABC1600BUS_SLOT, "ABC 1600 bus slot", tag, owner, clock, "abc1600bus_slot", __FILE__),
- device_slot_interface(mconfig, *this),
- m_int(CLEAR_LINE),
- m_pren(1),
- m_trrq(1),
- m_nmi(CLEAR_LINE),
- m_xint2(CLEAR_LINE),
- m_xint3(CLEAR_LINE),
- m_xint4(CLEAR_LINE),
- m_xint5(CLEAR_LINE)
+ device_t(mconfig, ABC1600BUS_SLOT, "ABC 1600 bus slot", tag, owner, clock, "abc1600bus_slot", __FILE__),
+ device_slot_interface(mconfig, *this),
+ m_int(CLEAR_LINE),
+ m_pren(1),
+ m_trrq(1),
+ m_nmi(CLEAR_LINE),
+ m_xint2(CLEAR_LINE),
+ m_xint3(CLEAR_LINE),
+ m_xint4(CLEAR_LINE),
+ m_xint5(CLEAR_LINE)
{
}
@@ -129,449 +116,12 @@ void abc1600bus_slot_device::device_start()
//-------------------------------------------------
-// cs_w -
-//-------------------------------------------------
-
-void abc1600bus_slot_device::cs_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_cs(data);
- }
-}
-
-
-//-------------------------------------------------
-// csb_r -
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::csb_r )
-{
- int data = 1;
-
- if (m_card != NULL)
- {
- data = m_card->abc1600bus_csb();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// brst_w - reset
-//-------------------------------------------------
-
-void abc1600bus_slot_device::brst_w()
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_brst();
- }
-}
-
-
-//-------------------------------------------------
-// inp_r -
-//-------------------------------------------------
-
-UINT8 abc1600bus_slot_device::inp_r()
-{
- UINT8 data = 0xff;
-
- if (m_card != NULL)
- {
- data &= m_card->abc1600bus_inp();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// out_w -
-//-------------------------------------------------
-
-void abc1600bus_slot_device::out_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_out(data);
- }
-}
-
-
-//-------------------------------------------------
-// stat_r -
-//-------------------------------------------------
-
-UINT8 abc1600bus_slot_device::stat_r()
-{
- UINT8 data = 0xff;
-
- if (m_card != NULL)
- {
- data &= m_card->abc1600bus_stat();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// stat_r -
-//-------------------------------------------------
-
-UINT8 abc1600bus_slot_device::ops_r()
-{
- UINT8 data = 0xff;
-
- if (m_card != NULL)
- {
- data &= m_card->abc1600bus_ops();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// c1_w -
-//-------------------------------------------------
-
-void abc1600bus_slot_device::c1_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_c1(data);
- }
-}
-
-
-//-------------------------------------------------
-// c2_w -
-//-------------------------------------------------
-
-void abc1600bus_slot_device::c2_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_c2(data);
- }
-}
-
-
-//-------------------------------------------------
-// c3_w -
-//-------------------------------------------------
-
-void abc1600bus_slot_device::c3_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_c3(data);
- }
-}
-
-
-//-------------------------------------------------
-// c4_w -
-//-------------------------------------------------
-
-void abc1600bus_slot_device::c4_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_c4(data);
- }
-}
-
-
-//-------------------------------------------------
-// exp_r -
-//-------------------------------------------------
-
-UINT8 abc1600bus_slot_device::exp_r()
-{
- UINT8 data = 0xff;
-
- if (m_card != NULL)
- {
- data &= m_card->abc1600bus_exp();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// xcsb2_r -
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xcsb2_r )
-{
- int data = 1;
-
- if (m_card != NULL)
- {
- data = m_card->abc1600bus_xcsb2();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// xcsb3_r -
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xcsb3_r )
-{
- int data = 1;
-
- if (m_card != NULL)
- {
- data = m_card->abc1600bus_xcsb3();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// xcsb4_r -
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xcsb4_r )
-{
- int data = 1;
-
- if (m_card != NULL)
- {
- data = m_card->abc1600bus_xcsb4();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// xcsb5_r -
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xcsb5_r )
-{
- int data = 1;
-
- if (m_card != NULL)
- {
- data = m_card->abc1600bus_xcsb5();
- }
-
- return data;
-}
-
-
-//-------------------------------------------------
-// tren_w - transfer enable
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::tren_w )
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_tren(state);
- }
-}
-
-
-//-------------------------------------------------
-// prac_w - peripheral acknowledge
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::prac_w )
-{
- if (m_card != NULL)
- {
- m_card->abc1600bus_prac(state);
- }
-}
-
-
-//-------------------------------------------------
-// int_w - interrupt request
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::int_w )
-{
- m_int = state;
- m_out_int_func(state);
-}
-
-
-//-------------------------------------------------
-// pren_w - peripheral enable
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::pren_w )
-{
- m_pren = state;
- m_out_pren_func(state);
-}
-
-
-//-------------------------------------------------
-// trrq_w - transfer request
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::trrq_w )
-{
- m_trrq = state;
- m_out_trrq_func(state);
-}
-
-
-//-------------------------------------------------
-// nmi_w - non-maskable interrupt
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::nmi_w )
-{
- m_nmi = state;
- m_out_nmi_func(state);
-}
-
-
-//-------------------------------------------------
-// xint2_w - expansion interrupt
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::xint2_w )
-{
- m_xint2 = state;
- m_out_xint2_func(state);
-}
-
-
-//-------------------------------------------------
-// xint3_w - expansion interrupt
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::xint3_w )
-{
- m_xint3 = state;
- m_out_xint3_func(state);
-}
-
-
-//-------------------------------------------------
-// xint4_w - expansion interrupt
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::xint4_w )
-{
- m_xint4 = state;
- m_out_xint4_func(state);
-}
-
-
-//-------------------------------------------------
-// xint5_w - expansion interrupt
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( abc1600bus_slot_device::xint5_w )
-{
- m_xint5 = state;
- m_out_xint5_func(state);
-}
-
-
-//-------------------------------------------------
-// int_r - interrupt request
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::int_r )
-{
- return m_int;
-}
-
-
-//-------------------------------------------------
-// pren_r - peripheral enable
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::pren_r )
-{
- return m_pren;
-}
-
-
-//-------------------------------------------------
-// trrq_r - transfer request
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::trrq_r )
-{
- return m_trrq;
-}
-
-
-//-------------------------------------------------
-// nmi_r - non-maskable interrupt
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::nmi_r )
-{
- return m_nmi;
-}
-
-
-//-------------------------------------------------
-// xint2_r - expansion interrupt
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xint2_r )
-{
- return m_xint2;
-}
-
-
-//-------------------------------------------------
-// xint3_r - expansion interrupt
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xint3_r )
-{
- return m_xint3;
-}
-
-
-//-------------------------------------------------
-// xint4_r - expansion interrupt
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xint4_r )
-{
- return m_xint4;
-}
-
-
-//-------------------------------------------------
-// xint5_r - expansion interrupt
-//-------------------------------------------------
-
-READ_LINE_MEMBER( abc1600bus_slot_device::xint5_r )
-{
- return m_xint5;
-}
-
-
-//-------------------------------------------------
-// SLOT_INTERFAC( abc1600bus_cards )
+// SLOT_INTERFACE( abc1600bus_cards )
//-------------------------------------------------
SLOT_INTERFACE_START( abc1600bus_cards )
SLOT_INTERFACE("4105", LUXOR_4105) // SASI interface
// SLOT_INTERFACE("4077", LUXOR_4077) // Winchester controller
// SLOT_INTERFACE("4004", LUXOR_4004) // ICOM I/O (Z80, Z80PIO, Z80SIO/2, Z80CTC, 2 Z80DMAs, 2 PROMs, 64KB RAM)
+ SLOT_INTERFACE("fast", LUXOR_55_21046)
SLOT_INTERFACE_END
diff --git a/src/emu/bus/abc1600/abc1600.h b/src/emu/bus/abc1600/abc1600.h
index df73977ea4b..318369cd0ee 100644
--- a/src/emu/bus/abc1600/abc1600.h
+++ b/src/emu/bus/abc1600/abc1600.h
@@ -55,6 +55,7 @@
#include "emu.h"
+
//**************************************************************************
// CONSTANTS
//**************************************************************************
@@ -106,19 +107,15 @@ class abc1600bus_slot_device;
// class representing interface-specific live abc1600bus card
class device_abc1600bus_card_interface : public device_slot_card_interface
{
- friend class abc1600bus_slot_device;
-
public:
// construction/destruction
device_abc1600bus_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_abc1600bus_card_interface();
// required operation overrides
virtual void abc1600bus_cs(UINT8 data) = 0;
virtual int abc1600bus_csb() = 0;
// optional operation overrides
- virtual void abc1600bus_brst() { };
virtual UINT8 abc1600bus_inp() { return 0xff; };
virtual void abc1600bus_out(UINT8 data) { };
virtual UINT8 abc1600bus_stat() { return 0xff; };
@@ -136,15 +133,15 @@ public:
virtual int abc1600bus_xcsb5() { return 1; };
public:
- abc1600bus_slot_device *m_bus;
+ abc1600bus_slot_device *m_slot;
};
// ======================> abc1600bus_slot_device
class abc1600bus_slot_device : public device_t,
- public device_slot_interface,
- public abc1600bus_interface
+ public device_slot_interface,
+ public abc1600bus_interface
{
public:
// construction/destruction
@@ -154,42 +151,43 @@ public:
virtual void device_start();
virtual void device_config_complete();
- void cs_w(UINT8 data);
- DECLARE_READ_LINE_MEMBER( csb_r );
- void brst_w();
- UINT8 inp_r();
- void out_w(UINT8 data);
- UINT8 stat_r();
- UINT8 ops_r();
- void c1_w(UINT8 data);
- void c2_w(UINT8 data);
- void c3_w(UINT8 data);
- void c4_w(UINT8 data);
- UINT8 exp_r();
- DECLARE_READ_LINE_MEMBER( xcsb2_r );
- DECLARE_READ_LINE_MEMBER( xcsb3_r );
- DECLARE_READ_LINE_MEMBER( xcsb4_r );
- DECLARE_READ_LINE_MEMBER( xcsb5_r );
- DECLARE_WRITE_LINE_MEMBER( tren_w );
- DECLARE_WRITE_LINE_MEMBER( prac_w );
-
- DECLARE_WRITE_LINE_MEMBER( int_w );
- DECLARE_WRITE_LINE_MEMBER( pren_w );
- DECLARE_WRITE_LINE_MEMBER( trrq_w );
- DECLARE_WRITE_LINE_MEMBER( nmi_w );
- DECLARE_WRITE_LINE_MEMBER( xint2_w );
- DECLARE_WRITE_LINE_MEMBER( xint3_w );
- DECLARE_WRITE_LINE_MEMBER( xint4_w );
- DECLARE_WRITE_LINE_MEMBER( xint5_w );
-
- DECLARE_READ_LINE_MEMBER( int_r );
- DECLARE_READ_LINE_MEMBER( pren_r );
- DECLARE_READ_LINE_MEMBER( trrq_r );
- DECLARE_READ_LINE_MEMBER( nmi_r );
- DECLARE_READ_LINE_MEMBER( xint2_r );
- DECLARE_READ_LINE_MEMBER( xint3_r );
- DECLARE_READ_LINE_MEMBER( xint4_r );
- DECLARE_READ_LINE_MEMBER( xint5_r );
+ // computer interface
+ void cs_w(UINT8 data) { if (m_card) m_card->abc1600bus_cs(data); }
+ DECLARE_READ_LINE_MEMBER( csb_r ) { return m_card ? m_card->abc1600bus_csb() : 1; }
+ void brst_w() { device_reset(); }
+ UINT8 inp_r() { return m_card ? m_card->abc1600bus_inp() : 0xff; }
+ void out_w(UINT8 data) { if (m_card) m_card->abc1600bus_out(data); }
+ UINT8 stat_r() { return m_card ? m_card->abc1600bus_stat() : 0xff; }
+ UINT8 ops_r() { return m_card ? m_card->abc1600bus_ops() : 0xff; }
+ void c1_w(UINT8 data) { if (m_card) m_card->abc1600bus_c1(data); }
+ void c2_w(UINT8 data) { if (m_card) m_card->abc1600bus_c2(data); }
+ void c3_w(UINT8 data) { if (m_card) m_card->abc1600bus_c3(data); }
+ void c4_w(UINT8 data) { if (m_card) m_card->abc1600bus_c4(data); }
+ UINT8 exp_r() { return m_card ? m_card->abc1600bus_exp() : 0xff; }
+ DECLARE_READ_LINE_MEMBER( xcsb2_r ) { return m_card ? m_card->abc1600bus_xcsb2() : 1; }
+ DECLARE_READ_LINE_MEMBER( xcsb3_r ) { return m_card ? m_card->abc1600bus_xcsb3() : 1; }
+ DECLARE_READ_LINE_MEMBER( xcsb4_r ) { return m_card ? m_card->abc1600bus_xcsb4() : 1; }
+ DECLARE_READ_LINE_MEMBER( xcsb5_r ) { return m_card ? m_card->abc1600bus_xcsb5() : 1; }
+ DECLARE_WRITE_LINE_MEMBER( tren_w ) { if (m_card) m_card->abc1600bus_tren(state); }
+ DECLARE_WRITE_LINE_MEMBER( prac_w ) { if (m_card) m_card->abc1600bus_prac(state); }
+ DECLARE_READ_LINE_MEMBER( int_r ) { return m_int; }
+ DECLARE_READ_LINE_MEMBER( pren_r ) { return m_pren; }
+ DECLARE_READ_LINE_MEMBER( trrq_r ) { return m_trrq; }
+ DECLARE_READ_LINE_MEMBER( nmi_r ) { return m_nmi; }
+ DECLARE_READ_LINE_MEMBER( xint2_r ) { return m_xint2; }
+ DECLARE_READ_LINE_MEMBER( xint3_r ) { return m_xint3; }
+ DECLARE_READ_LINE_MEMBER( xint4_r ) { return m_xint4; }
+ DECLARE_READ_LINE_MEMBER( xint5_r ) { return m_xint5; }
+
+ // card interface
+ DECLARE_WRITE_LINE_MEMBER( int_w ) { m_int = state; m_out_int_func(state); }
+ DECLARE_WRITE_LINE_MEMBER( pren_w ) { m_pren = state; m_out_pren_func(state); }
+ DECLARE_WRITE_LINE_MEMBER( trrq_w ) { m_trrq = state; m_out_trrq_func(state); }
+ DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi = state; m_out_nmi_func(state); }
+ DECLARE_WRITE_LINE_MEMBER( xint2_w ) { m_xint2 = state; m_out_xint2_func(state); }
+ DECLARE_WRITE_LINE_MEMBER( xint3_w ) { m_xint3 = state; m_out_xint3_func(state); }
+ DECLARE_WRITE_LINE_MEMBER( xint4_w ) { m_xint4 = state; m_out_xint4_func(state); }
+ DECLARE_WRITE_LINE_MEMBER( xint5_w ) { m_xint5 = state; m_out_xint5_func(state); }
private:
devcb_resolved_write_line m_out_int_func;
@@ -220,6 +218,7 @@ extern const device_type ABC1600BUS_SLOT;
// slot devices
#include "lux4105.h"
+#include "bus/abcbus/lux21046.h"
SLOT_INTERFACE_EXTERN( abc1600bus_cards );
diff --git a/src/emu/bus/abcbus/abcbus.c b/src/emu/bus/abcbus/abcbus.c
index 8603160bd94..2df4821a960 100644
--- a/src/emu/bus/abcbus/abcbus.c
+++ b/src/emu/bus/abcbus/abcbus.c
@@ -22,7 +22,7 @@ const device_type ABCBUS_SLOT = &device_creator<abcbus_slot_device>;
//**************************************************************************
-// DEVICE ABCBUS CARD INTERFACE
+// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
@@ -36,17 +36,12 @@ device_abcbus_card_interface::device_abcbus_card_interface(const machine_config
}
-
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
//-------------------------------------------------
// abcbus_slot_device - constructor
//-------------------------------------------------
abcbus_slot_device::abcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
- device_t(mconfig, ABCBUS_SLOT, "ABC bus slot", tag, owner, clock, "abcbus_slot", __FILE__),
+ device_t(mconfig, ABCBUS_SLOT, "ABCBUS slot", tag, owner, clock, "abcbus_slot", __FILE__),
device_slot_interface(mconfig, *this),
m_write_int(*this),
m_write_nmi(*this),
@@ -73,228 +68,6 @@ void abcbus_slot_device::device_start()
//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void abcbus_slot_device::device_reset()
-{
- if (m_card != NULL)
- {
- get_card_device()->reset();
- }
-}
-
-
-//-------------------------------------------------
-// cs_w -
-//-------------------------------------------------
-
-void abcbus_slot_device::cs_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abcbus_cs(data);
- }
-}
-
-WRITE8_MEMBER( abcbus_slot_device::cs_w )
-{
- cs_w(data);
-}
-
-
-//-------------------------------------------------
-// rst_r -
-//-------------------------------------------------
-
-UINT8 abcbus_slot_device::rst_r()
-{
- device_reset();
-
- return 0xff;
-}
-
-READ8_MEMBER( abcbus_slot_device::rst_r )
-{
- return rst_r();
-}
-
-
-//-------------------------------------------------
-// inp_r -
-//-------------------------------------------------
-
-UINT8 abcbus_slot_device::inp_r()
-{
- UINT8 data = 0xff;
-
- if (m_card != NULL)
- {
- data &= m_card->abcbus_inp();
- }
-
- return data;
-}
-
-READ8_MEMBER( abcbus_slot_device::inp_r )
-{
- return inp_r();
-}
-
-
-//-------------------------------------------------
-// utp_w -
-//-------------------------------------------------
-
-void abcbus_slot_device::utp_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abcbus_utp(data);
- }
-}
-
-WRITE8_MEMBER( abcbus_slot_device::utp_w )
-{
- utp_w(data);
-}
-
-
-//-------------------------------------------------
-// stat_r -
-//-------------------------------------------------
-
-UINT8 abcbus_slot_device::stat_r()
-{
- UINT8 data = 0xff;
-
- if (m_card != NULL)
- {
- data &= m_card->abcbus_stat();
- }
-
- return data;
-}
-
-READ8_MEMBER( abcbus_slot_device::stat_r )
-{
- return stat_r();
-}
-
-
-//-------------------------------------------------
-// c1_w -
-//-------------------------------------------------
-
-void abcbus_slot_device::c1_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abcbus_c1(data);
- }
-}
-
-WRITE8_MEMBER( abcbus_slot_device::c1_w )
-{
- c1_w(data);
-}
-
-
-//-------------------------------------------------
-// c2_w -
-//-------------------------------------------------
-
-void abcbus_slot_device::c2_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abcbus_c2(data);
- }
-}
-
-WRITE8_MEMBER( abcbus_slot_device::c2_w )
-{
- c2_w(data);
-}
-
-
-//-------------------------------------------------
-// c3_w -
-//-------------------------------------------------
-
-void abcbus_slot_device::c3_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abcbus_c3(data);
- }
-}
-
-WRITE8_MEMBER( abcbus_slot_device::c3_w )
-{
- c3_w(data);
-}
-
-
-//-------------------------------------------------
-// c4_w -
-//-------------------------------------------------
-
-void abcbus_slot_device::c4_w(UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abcbus_c4(data);
- }
-}
-
-WRITE8_MEMBER( abcbus_slot_device::c4_w )
-{
- c4_w(data);
-}
-
-
-//-------------------------------------------------
-// xmemfl_r -
-//-------------------------------------------------
-
-UINT8 abcbus_slot_device::xmemfl_r(offs_t offset)
-{
- UINT8 data = 0xff;
-
- if (m_card != NULL)
- {
- data &= m_card->abcbus_xmemfl(offset);
- }
-
- return data;
-}
-
-READ8_MEMBER( abcbus_slot_device::xmemfl_r )
-{
- return xmemfl_r(offset);
-}
-
-
-//-------------------------------------------------
-// xmemw_w -
-//-------------------------------------------------
-
-void abcbus_slot_device::xmemw_w(offs_t offset, UINT8 data)
-{
- if (m_card != NULL)
- {
- m_card->abcbus_xmemw(offset, data);
- }
-}
-
-WRITE8_MEMBER( abcbus_slot_device::xmemw_w )
-{
- xmemw_w(offset, data);
-}
-
-
-//-------------------------------------------------
// SLOT_INTERFACE( abcbus_cards )
//-------------------------------------------------
diff --git a/src/emu/bus/abcbus/abcbus.h b/src/emu/bus/abcbus/abcbus.h
index 1f6f5b5b7c3..600ddfbbc4f 100644
--- a/src/emu/bus/abcbus/abcbus.h
+++ b/src/emu/bus/abcbus/abcbus.h
@@ -90,41 +90,68 @@
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> abcbus_slot_device
+// ======================> device_abcbus_card_interface
-class device_abcbus_card_interface;
+class abcbus_slot_device;
+
+class device_abcbus_card_interface : public device_slot_card_interface
+{
+public:
+ // construction/destruction
+ device_abcbus_card_interface(const machine_config &mconfig, device_t &device);
+
+ // required operation overrides
+ virtual void abcbus_cs(UINT8 data) = 0;
+
+ // optional operation overrides
+ virtual UINT8 abcbus_inp() { return 0xff; };
+ virtual void abcbus_utp(UINT8 data) { };
+ virtual UINT8 abcbus_stat() { return 0xff; };
+ virtual void abcbus_c1(UINT8 data) { };
+ virtual void abcbus_c2(UINT8 data) { };
+ virtual void abcbus_c3(UINT8 data) { };
+ virtual void abcbus_c4(UINT8 data) { };
+ virtual UINT8 abcbus_xmemfl(offs_t offset) { return 0xff; };
+ virtual void abcbus_xmemw(offs_t offset, UINT8 data) { };
+
+public:
+ abcbus_slot_device *m_slot;
+};
+
+
+// ======================> abcbus_slot_device
class abcbus_slot_device : public device_t,
- public device_slot_interface
+ public device_slot_interface
{
public:
// construction/destruction
abcbus_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// computer interface
- void cs_w(UINT8 data);
- UINT8 rst_r();
- UINT8 inp_r();
- void utp_w(UINT8 data);
- UINT8 stat_r();
- void c1_w(UINT8 data);
- void c2_w(UINT8 data);
- void c3_w(UINT8 data);
- void c4_w(UINT8 data);
- UINT8 xmemfl_r(offs_t offset);
- void xmemw_w(offs_t offset, UINT8 data);
-
- DECLARE_WRITE8_MEMBER( cs_w );
- DECLARE_READ8_MEMBER( rst_r );
- DECLARE_READ8_MEMBER( inp_r );
- DECLARE_WRITE8_MEMBER( utp_w );
- DECLARE_READ8_MEMBER( stat_r );
- DECLARE_WRITE8_MEMBER( c1_w );
- DECLARE_WRITE8_MEMBER( c2_w );
- DECLARE_WRITE8_MEMBER( c3_w );
- DECLARE_WRITE8_MEMBER( c4_w );
- DECLARE_READ8_MEMBER( xmemfl_r );
- DECLARE_WRITE8_MEMBER( xmemw_w );
+ void cs_w(UINT8 data) { if (m_card) m_card->abcbus_cs(data); }
+ UINT8 rst_r() { device_reset(); return 0xff; }
+ UINT8 inp_r() { return m_card ? m_card->abcbus_inp() : 0xff; }
+ void utp_w(UINT8 data) { if (m_card) m_card->abcbus_utp(data); }
+ UINT8 stat_r() { return m_card ? m_card->abcbus_stat() : 0xff; }
+ void c1_w(UINT8 data) { if (m_card) m_card->abcbus_c1(data); }
+ void c2_w(UINT8 data) { if (m_card) m_card->abcbus_c2(data); }
+ void c3_w(UINT8 data) { if (m_card) m_card->abcbus_c3(data); }
+ void c4_w(UINT8 data) { if (m_card) m_card->abcbus_c4(data); }
+ UINT8 xmemfl_r(offs_t offset) { return m_card ? m_card->abcbus_xmemfl(offset) : 0xff; }
+ void xmemw_w(offs_t offset, UINT8 data) { if (m_card) m_card->abcbus_xmemw(offset, data); }
+
+ DECLARE_WRITE8_MEMBER( cs_w ) { cs_w(data); }
+ DECLARE_READ8_MEMBER( rst_r ) { return rst_r(); }
+ DECLARE_READ8_MEMBER( inp_r ) { return inp_r(); }
+ DECLARE_WRITE8_MEMBER( utp_w ) { utp_w(data); }
+ DECLARE_READ8_MEMBER( stat_r ) { return stat_r(); }
+ DECLARE_WRITE8_MEMBER( c1_w ) { c1_w(data); }
+ DECLARE_WRITE8_MEMBER( c2_w ) { c2_w(data); }
+ DECLARE_WRITE8_MEMBER( c3_w ) { c3_w(data); }
+ DECLARE_WRITE8_MEMBER( c4_w ) { c4_w(data); }
+ DECLARE_READ8_MEMBER( xmemfl_r ) { return xmemfl_r(offset); }
+ DECLARE_WRITE8_MEMBER( xmemw_w ) { xmemw_w(offset, data); }
// peripheral interface
DECLARE_WRITE_LINE_MEMBER( int_w ) { m_write_int(state); }
@@ -135,7 +162,7 @@ public:
protected:
// device-level overrides
virtual void device_start();
- virtual void device_reset();
+ virtual void device_reset() { if (m_card) get_card_device()->reset(); }
private:
devcb2_write_line m_write_int;
@@ -147,36 +174,6 @@ private:
};
-// ======================> device_abcbus_card_interface
-
-// class representing interface-specific live abcbus card
-class device_abcbus_card_interface : public device_slot_card_interface
-{
- friend class abcbus_slot_device;
-
-public:
- // construction/destruction
- device_abcbus_card_interface(const machine_config &mconfig, device_t &device);
-
- // required operation overrides
- virtual void abcbus_cs(UINT8 data) = 0;
-
- // optional operation overrides
- virtual UINT8 abcbus_inp() { return 0xff; };
- virtual void abcbus_utp(UINT8 data) { };
- virtual UINT8 abcbus_stat() { return 0xff; };
- virtual void abcbus_c1(UINT8 data) { };
- virtual void abcbus_c2(UINT8 data) { };
- virtual void abcbus_c3(UINT8 data) { };
- virtual void abcbus_c4(UINT8 data) { };
- virtual UINT8 abcbus_xmemfl(offs_t offset) { return 0xff; };
- virtual void abcbus_xmemw(offs_t offset, UINT8 data) { };
-
-public:
- abcbus_slot_device *m_slot;
-};
-
-
// device type definition
extern const device_type ABCBUS_SLOT;
diff --git a/src/emu/bus/isbx/isbx.c b/src/emu/bus/isbx/isbx.c
index 3cc053e6035..ed3ddf34c14 100644
--- a/src/emu/bus/isbx/isbx.c
+++ b/src/emu/bus/isbx/isbx.c
@@ -22,7 +22,7 @@ const device_type ISBX_SLOT = &device_creator<isbx_slot_device>;
//**************************************************************************
-// DEVICE ISBX_EXPANSION CARD INTERFACE
+// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
@@ -36,11 +36,6 @@ device_isbx_card_interface::device_isbx_card_interface(const machine_config &mco
}
-
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
//-------------------------------------------------
// isbx_slot_device - constructor
//-------------------------------------------------
diff --git a/src/emu/bus/isbx/isbx.h b/src/emu/bus/isbx/isbx.h
index 56b1081051f..bb81ffb1981 100644
--- a/src/emu/bus/isbx/isbx.h
+++ b/src/emu/bus/isbx/isbx.h
@@ -76,12 +76,9 @@ class isbx_slot_device;
class device_isbx_card_interface : public device_slot_card_interface
{
- friend class isbx_slot_device;
-
public:
// construction/destruction
device_isbx_card_interface(const machine_config &mconfig, device_t &device);
- virtual ~device_isbx_card_interface() { };
virtual UINT8 mcs0_r(address_space &space, offs_t offset) { return 0xff; }
virtual void mcs0_w(address_space &space, offs_t offset, UINT8 data) { }