diff options
author | 2013-10-31 20:43:39 +0000 | |
---|---|---|
committer | 2013-10-31 20:43:39 +0000 | |
commit | 9759a93d64c4c8a04330b954fbf88ac8fc34a064 (patch) | |
tree | cd7fe98f67ab2a2c3a142106068f432cb1114c67 /src/emu | |
parent | 522da35d80b37c04e7d0d718a4207820c4dc048b (diff) |
(MESS) Cleanup. (nw)
Diffstat (limited to 'src/emu')
-rw-r--r-- | src/emu/bus/abc1600/abc1600.c | 478 | ||||
-rw-r--r-- | src/emu/bus/abc1600/abc1600.h | 85 | ||||
-rw-r--r-- | src/emu/bus/abcbus/abcbus.c | 231 | ||||
-rw-r--r-- | src/emu/bus/abcbus/abcbus.h | 111 | ||||
-rw-r--r-- | src/emu/bus/isbx/isbx.c | 7 | ||||
-rw-r--r-- | src/emu/bus/isbx/isbx.h | 3 |
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) { } |