diff options
author | 2017-05-07 23:18:47 +1000 | |
---|---|---|
committer | 2017-05-14 21:44:11 +1000 | |
commit | 0f0d39ef81562c75e79176dd3bebb1e491ca39d5 (patch) | |
tree | 201cee7fdf55ee800f83859a92efd2cfe66cf2b3 /src/devices/bus/s100 | |
parent | e6c4be2b4d71c7a6c95be0bae111eb416ff0f9e7 (diff) |
Move static data out of devices into the device types. This is a significant change, so please pay attention.
The core changes are:
* Short name, full name and source file are no longer members of device_t, they are part of the device type
* MACHINE_COFIG_START no longer needs a driver class
* MACHINE_CONFIG_DERIVED_CLASS is no longer necessary
* Specify the state class you want in the GAME/COMP/CONS line
* The compiler will work out the base class where the driver init member is declared
* There is one static device type object per driver rather than one per machine configuration
Use DECLARE_DEVICE_TYPE or DECLARE_DEVICE_TYPE_NS to declare device type.
* DECLARE_DEVICE_TYPE forward-declares teh device type and class, and declares extern object finders.
* DECLARE_DEVICE_TYPE_NS is for devices classes in namespaces - it doesn't forward-declare the device type.
Use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_NS to define device types.
* These macros declare storage for the static data, and instantiate the device type and device finder templates.
The rest of the changes are mostly just moving stuff out of headers that shouldn't be there, renaming stuff for consistency, and scoping stuff down where appropriate.
Things I've actually messed with substantially:
* More descriptive names for a lot of devices
* Untangled the fantasy sound from the driver state, which necessitates breaking up sound/flip writes
* Changed DECO BSMT2000 ready callback into a device delegate
* Untangled Microprose 3D noise from driver state
* Used object finders for CoCo multipak, KC85 D002, and Irem sound subdevices
* Started to get TI-99 stuff out of the TI-990 directory and arrange bus devices properly
* Started to break out common parts of Samsung ARM SoC devices
* Turned some of FM, SID, SCSP DSP, EPIC12 and Voodoo cores into something resmbling C++
* Tried to make Z180 table allocation/setup a bit safer
* Converted generic keyboard/terminal to not use WRITE8 - space/offset aren't relevant
* Dynamically allocate generic terminal buffer so derived devices (e.g. teleprinter) can specify size
* Imporved encapsulation of Z80DART channels
* Refactored the SPC7110 bit table generator loop to make it more readable
* Added wrappers for SNES PPU operations so members can be made protected
* Factored out some boilerplate for YM chips with PSG
* toaplan2 gfx
* stic/intv resolution
* Video System video
* Out Run/Y-board sprite alignment
* GIC video hookup
* Amstrad CPC ROM box members
* IQ151 ROM cart region
* MSX cart IRQ callback resolution time
* SMS passthrough control devices starting subslots
I've smoke-tested several drivers, but I've probably missed something. Things I've missed will likely blow up spectacularly with failure to bind errors and the like. Let me know if there's more subtle breakage (could have happened in FM or Voodoo).
And can everyone please, please try to keep stuff clean. In particular, please stop polluting the global namespace. Keep things out of headers that don't need to be there, and use things that can be scoped down rather than macros.
It feels like an uphill battle trying to get this stuff under control while more of it's added.
Diffstat (limited to 'src/devices/bus/s100')
-rw-r--r-- | src/devices/bus/s100/dj2db.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/s100/dj2db.h | 13 | ||||
-rw-r--r-- | src/devices/bus/s100/djdma.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/s100/djdma.h | 11 | ||||
-rw-r--r-- | src/devices/bus/s100/mm65k16s.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/s100/mm65k16s.h | 11 | ||||
-rw-r--r-- | src/devices/bus/s100/nsmdsa.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/s100/nsmdsa.h | 12 | ||||
-rw-r--r-- | src/devices/bus/s100/nsmdsad.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/s100/nsmdsad.h | 12 | ||||
-rw-r--r-- | src/devices/bus/s100/s100.cpp | 41 | ||||
-rw-r--r-- | src/devices/bus/s100/s100.h | 150 | ||||
-rw-r--r-- | src/devices/bus/s100/wunderbus.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/s100/wunderbus.h | 11 |
14 files changed, 138 insertions, 147 deletions
diff --git a/src/devices/bus/s100/dj2db.cpp b/src/devices/bus/s100/dj2db.cpp index f83d7e3a420..f68a879d033 100644 --- a/src/devices/bus/s100/dj2db.cpp +++ b/src/devices/bus/s100/dj2db.cpp @@ -33,7 +33,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type S100_DJ2DB = device_creator<s100_dj2db_device>; +DEFINE_DEVICE_TYPE(S100_DJ2DB, s100_dj2db_device, "s100_sj2db", "Morrow Disk Jockey 2D/B") //------------------------------------------------- @@ -252,7 +252,7 @@ ioport_constructor s100_dj2db_device::device_input_ports() const //------------------------------------------------- s100_dj2db_device::s100_dj2db_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_DJ2DB, "DJ2DB", tag, owner, clock, "dj2db", __FILE__), + device_t(mconfig, S100_DJ2DB, tag, owner, clock), device_s100_card_interface(mconfig, *this), m_fdc(*this, MB8866_TAG), m_dbrg(*this, BR1941_TAG), diff --git a/src/devices/bus/s100/dj2db.h b/src/devices/bus/s100/dj2db.h index 19f611a5f07..8614a12f34d 100644 --- a/src/devices/bus/s100/dj2db.h +++ b/src/devices/bus/s100/dj2db.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_DJ2DB_H +#define MAME_BUS_S100_DJ2DB_H -#ifndef __S100_DJ2DB__ -#define __S100_DJ2DB__ +#pragma once #include "s100.h" #include "machine/com8116.h" @@ -54,7 +54,7 @@ protected: private: // internal state - required_device<mb8866_t> m_fdc; + required_device<mb8866_device> m_fdc; required_device<com8116_device> m_dbrg; required_device<floppy_connector> m_floppy0; required_device<floppy_connector> m_floppy1; @@ -81,7 +81,6 @@ private: // device type definition -extern const device_type S100_DJ2DB; - +DECLARE_DEVICE_TYPE(S100_DJ2DB, s100_dj2db_device) -#endif +#endif // MAME_BUS_S100_DJ2DB_H diff --git a/src/devices/bus/s100/djdma.cpp b/src/devices/bus/s100/djdma.cpp index ef6b93353a3..c1d04275779 100644 --- a/src/devices/bus/s100/djdma.cpp +++ b/src/devices/bus/s100/djdma.cpp @@ -23,7 +23,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type S100_DJDMA = device_creator<s100_djdma_device>; +DEFINE_DEVICE_TYPE(S100_DJDMA, s100_djdma_device, "s100_djdma", "Morrow Disk Jockey/DMA") //------------------------------------------------- @@ -104,7 +104,7 @@ machine_config_constructor s100_djdma_device::device_mconfig_additions() const //------------------------------------------------- s100_djdma_device::s100_djdma_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_DJDMA, "DJDMA", tag, owner, clock, "djdma", __FILE__), + device_t(mconfig, S100_DJDMA, tag, owner, clock), device_s100_card_interface(mconfig, *this) { } diff --git a/src/devices/bus/s100/djdma.h b/src/devices/bus/s100/djdma.h index 083b1a5b05b..3e25ee93f77 100644 --- a/src/devices/bus/s100/djdma.h +++ b/src/devices/bus/s100/djdma.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_DJDMA_H +#define MAME_BUS_S100_DJDMA_H -#ifndef __S100_DJDMA__ -#define __S100_DJDMA__ +#pragma once #include "s100.h" #include "cpu/z80/z80.h" @@ -41,7 +41,6 @@ protected: // device type definition -extern const device_type S100_DJDMA; - +DECLARE_DEVICE_TYPE(S100_DJDMA, s100_djdma_device) -#endif +#endif // MAME_BUS_S100_DJDMA_H diff --git a/src/devices/bus/s100/mm65k16s.cpp b/src/devices/bus/s100/mm65k16s.cpp index 4026d17385e..2cc3edabb58 100644 --- a/src/devices/bus/s100/mm65k16s.cpp +++ b/src/devices/bus/s100/mm65k16s.cpp @@ -22,7 +22,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type S100_MM65K16S = device_creator<s100_mm65k16s_device>; +DEFINE_DEVICE_TYPE(S100_MM65K16S, s100_mm65k16s_device, "s100_mm65k16s", "Morrow MM65K16S") //------------------------------------------------- @@ -203,7 +203,7 @@ ioport_constructor s100_mm65k16s_device::device_input_ports() const //------------------------------------------------- s100_mm65k16s_device::s100_mm65k16s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_MM65K16S, "MM65K16S", tag, owner, clock, "mm65k16s", __FILE__), + device_t(mconfig, S100_MM65K16S, tag, owner, clock), device_s100_card_interface(mconfig, *this), m_ram(*this, "ram") { diff --git a/src/devices/bus/s100/mm65k16s.h b/src/devices/bus/s100/mm65k16s.h index 82028856c05..e46d13f955e 100644 --- a/src/devices/bus/s100/mm65k16s.h +++ b/src/devices/bus/s100/mm65k16s.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_MM65K16S_H +#define MAME_BUS_S100_MM65K16S_H -#ifndef __S100_MM65K16S__ -#define __S100_MM65K16S__ +#pragma once #include "s100.h" @@ -48,7 +48,6 @@ private: // device type definition -extern const device_type S100_MM65K16S; - +DECLARE_DEVICE_TYPE(S100_MM65K16S, s100_mm65k16s_device) -#endif +#endif // MAME_BUS_S100_MM65K16S_H diff --git a/src/devices/bus/s100/nsmdsa.cpp b/src/devices/bus/s100/nsmdsa.cpp index 956dc3b081e..495026c0f37 100644 --- a/src/devices/bus/s100/nsmdsa.cpp +++ b/src/devices/bus/s100/nsmdsa.cpp @@ -15,7 +15,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type S100_MDS_A = device_creator<s100_mds_a_device>; +DEFINE_DEVICE_TYPE(S100_MDS_A, s100_mds_a_device, "s100_nsmdsa", "North Star MDS-A") //------------------------------------------------- @@ -83,7 +83,7 @@ machine_config_constructor s100_mds_a_device::device_mconfig_additions() const //------------------------------------------------- s100_mds_a_device::s100_mds_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_MDS_A, "MDS-A", tag, owner, clock, "nsmdsa", __FILE__), + device_t(mconfig, S100_MDS_A, tag, owner, clock), device_s100_card_interface(mconfig, *this), m_floppy0(*this, "floppy0"), m_floppy1(*this, "floppy1"), diff --git a/src/devices/bus/s100/nsmdsa.h b/src/devices/bus/s100/nsmdsa.h index 875b62b4ca0..3bf167732b6 100644 --- a/src/devices/bus/s100/nsmdsa.h +++ b/src/devices/bus/s100/nsmdsa.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_NSMDSA_H +#define MAME_BUS_S100_NSMDSA_H -#ifndef __S100_MDS_A__ -#define __S100_MDS_A__ +#pragma once #include "s100.h" #include "imagedev/floppy.h" @@ -50,8 +50,6 @@ private: // device type definition -extern const device_type S100_MDS_A; - - +DECLARE_DEVICE_TYPE(S100_MDS_A, s100_mds_a_device) -#endif +#endif // MAME_BUS_S100_NSMDSA_H diff --git a/src/devices/bus/s100/nsmdsad.cpp b/src/devices/bus/s100/nsmdsad.cpp index 4cb2da40d0f..69b98dbef0a 100644 --- a/src/devices/bus/s100/nsmdsad.cpp +++ b/src/devices/bus/s100/nsmdsad.cpp @@ -15,7 +15,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type S100_MDS_AD = device_creator<s100_mds_ad_device>; +DEFINE_DEVICE_TYPE(S100_MDS_AD, s100_mds_ad_device, "s100_nsmdsad", "North Star MDS-A-D") //------------------------------------------------- @@ -84,7 +84,7 @@ machine_config_constructor s100_mds_ad_device::device_mconfig_additions() const //------------------------------------------------- s100_mds_ad_device::s100_mds_ad_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_MDS_AD, "MDS-A-D", tag, owner, clock, "nsmdsad", __FILE__), + device_t(mconfig, S100_MDS_AD, tag, owner, clock), device_s100_card_interface(mconfig, *this), m_floppy0(*this, "floppy0"), m_floppy1(*this, "floppy1"), diff --git a/src/devices/bus/s100/nsmdsad.h b/src/devices/bus/s100/nsmdsad.h index 54794e906c6..0affdd595c8 100644 --- a/src/devices/bus/s100/nsmdsad.h +++ b/src/devices/bus/s100/nsmdsad.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_NSMDSAD_H +#define MAME_BUS_S100_NSMDSAD_H -#ifndef __S100_MDS_AD__ -#define __S100_MDS_AD__ +#pragma once #include "s100.h" #include "imagedev/floppy.h" @@ -51,8 +51,6 @@ private: // device type definition -extern const device_type S100_MDS_AD; - - +DECLARE_DEVICE_TYPE(S100_MDS_AD, s100_mds_ad_device) -#endif +#endif // MAME_BUS_S100_NSMDSAD_H diff --git a/src/devices/bus/s100/s100.cpp b/src/devices/bus/s100/s100.cpp index 628daf29222..079d41a7a18 100644 --- a/src/devices/bus/s100/s100.cpp +++ b/src/devices/bus/s100/s100.cpp @@ -14,8 +14,8 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type S100_BUS = device_creator<s100_bus_t>; -const device_type S100_SLOT = device_creator<s100_slot_t>; +DEFINE_DEVICE_TYPE(S100_BUS, s100_bus_device, "s100_bus", "S100 bus") +DEFINE_DEVICE_TYPE(S100_SLOT, s100_slot_device, "s100_slot", "S100 slot") @@ -27,8 +27,8 @@ const device_type S100_SLOT = device_creator<s100_slot_t>; // 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::device_s100_card_interface(const machine_config &mconfig, device_t &device) : + device_slot_card_interface(mconfig, device), m_bus(nullptr), m_next(nullptr) { @@ -36,11 +36,12 @@ device_s100_card_interface::device_s100_card_interface(const machine_config &mco //------------------------------------------------- -// s100_slot_t - constructor +// s100_slot_device - constructor //------------------------------------------------- -s100_slot_t::s100_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_SLOT, "S100 slot", tag, owner, clock, "s100_slot", __FILE__), - device_slot_interface(mconfig, *this), m_bus(nullptr) +s100_slot_device::s100_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, S100_SLOT, tag, owner, clock), + device_slot_interface(mconfig, *this), + m_bus(nullptr) { } @@ -49,20 +50,20 @@ s100_slot_t::s100_slot_t(const machine_config &mconfig, const char *tag, device_ // device_start - device-specific startup //------------------------------------------------- -void s100_slot_t::device_start() +void s100_slot_device::device_start() { - m_bus = machine().device<s100_bus_t>(S100_TAG); + m_bus = machine().device<s100_bus_device>(S100_TAG); device_s100_card_interface *dev = dynamic_cast<device_s100_card_interface *>(get_card_device()); if (dev) m_bus->add_card(dev); } //------------------------------------------------- -// s100_bus_t - constructor +// s100_bus_device - constructor //------------------------------------------------- -s100_bus_t::s100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_BUS, "S100", tag, owner, clock, "s100", __FILE__), +s100_bus_device::s100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, S100_BUS, tag, owner, clock), m_write_irq(*this), m_write_nmi(*this), m_write_vi0(*this), @@ -88,7 +89,7 @@ s100_bus_t::s100_bus_t(const machine_config &mconfig, const char *tag, device_t // device_start - device-specific startup //------------------------------------------------- -void s100_bus_t::device_start() +void s100_bus_device::device_start() { // resolve callbacks m_write_irq.resolve_safe(); @@ -115,7 +116,7 @@ void s100_bus_t::device_start() // device_reset - device-specific reset //------------------------------------------------- -void s100_bus_t::device_reset() +void s100_bus_device::device_reset() { } @@ -124,7 +125,7 @@ void s100_bus_t::device_reset() // add_card - add card //------------------------------------------------- -void s100_bus_t::add_card(device_s100_card_interface *card) +void s100_bus_device::add_card(device_s100_card_interface *card) { card->m_bus = this; m_device_list.append(*card); @@ -135,7 +136,7 @@ void s100_bus_t::add_card(device_s100_card_interface *card) // smemr_r - memory read //------------------------------------------------- -READ8_MEMBER( s100_bus_t::smemr_r ) +READ8_MEMBER( s100_bus_device::smemr_r ) { uint8_t data = 0; @@ -155,7 +156,7 @@ READ8_MEMBER( s100_bus_t::smemr_r ) // mwrt_w - memory write //------------------------------------------------- -WRITE8_MEMBER( s100_bus_t::mwrt_w ) +WRITE8_MEMBER( s100_bus_device::mwrt_w ) { device_s100_card_interface *entry = m_device_list.first(); @@ -171,7 +172,7 @@ WRITE8_MEMBER( s100_bus_t::mwrt_w ) // sinp_r - I/O read //------------------------------------------------- -READ8_MEMBER( s100_bus_t::sinp_r ) +READ8_MEMBER( s100_bus_device::sinp_r ) { uint8_t data = 0; @@ -191,7 +192,7 @@ READ8_MEMBER( s100_bus_t::sinp_r ) // sout_w - I/O write //------------------------------------------------- -WRITE8_MEMBER( s100_bus_t::sout_w ) +WRITE8_MEMBER( s100_bus_device::sout_w ) { device_s100_card_interface *entry = m_device_list.first(); diff --git a/src/devices/bus/s100/s100.h b/src/devices/bus/s100/s100.h index 44f2d642770..a4eef9f5f83 100644 --- a/src/devices/bus/s100/s100.h +++ b/src/devices/bus/s100/s100.h @@ -59,10 +59,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_S100_H +#define MAME_BUS_S100_S100_H -#ifndef __S100__ -#define __S100__ +#pragma once @@ -88,55 +88,55 @@ #define MCFG_S100_IRQ_CALLBACK(_write) \ - devcb = &s100_bus_t::set_irq_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_irq_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_NMI_CALLBACK(_write) \ - devcb = &s100_bus_t::set_nmi_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_nmi_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI0_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi0_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi0_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI1_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi1_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi1_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI2_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi2_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi2_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI3_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi3_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi3_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI4_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi4_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi4_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI5_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi5_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi5_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI6_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi6_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi6_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_VI7_CALLBACK(_write) \ - devcb = &s100_bus_t::set_vi7_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_vi7_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA0_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma0_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma0_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA1_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma1_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma1_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA2_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma2_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma2_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_DMA3_CALLBACK(_write) \ - devcb = &s100_bus_t::set_dma3_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_dma3_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_RDY_CALLBACK(_write) \ - devcb = &s100_bus_t::set_rdy_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_rdy_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_HOLD_CALLBACK(_write) \ - devcb = &s100_bus_t::set_hold_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_hold_wr_callback(*device, DEVCB_##_write); #define MCFG_S100_ERROR_CALLBACK(_write) \ - devcb = &s100_bus_t::set_error_wr_callback(*device, DEVCB_##_write); + devcb = &s100_bus_device::set_error_wr_callback(*device, DEVCB_##_write); @@ -144,43 +144,40 @@ // TYPE DEFINITIONS //************************************************************************** -class s100_bus_t; +class s100_bus_device; // ======================> device_s100_card_interface class device_s100_card_interface : public device_slot_card_interface { - friend class s100_bus_t; + friend class s100_bus_device; + template <class ElementType> friend class simple_list; public: - // construction/destruction - device_s100_card_interface(const machine_config &mconfig, device_t &device); - virtual ~device_s100_card_interface() { } - device_s100_card_interface *next() const { return m_next; } // interrupts - virtual void s100_int_w(int state) { }; - virtual void s100_nmi_w(int state) { }; - virtual uint8_t s100_sinta_r(offs_t offset) { return 0; }; + virtual void s100_int_w(int state) { } + virtual void s100_nmi_w(int state) { } + virtual uint8_t s100_sinta_r(offs_t offset) { return 0; } // vectored interrupts - virtual void s100_vi0_w(int state) { }; - virtual void s100_vi1_w(int state) { }; - virtual void s100_vi2_w(int state) { }; - virtual void s100_vi3_w(int state) { }; - virtual void s100_vi4_w(int state) { }; - virtual void s100_vi5_w(int state) { }; - virtual void s100_vi6_w(int state) { }; - virtual void s100_vi7_w(int state) { }; + virtual void s100_vi0_w(int state) { } + virtual void s100_vi1_w(int state) { } + virtual void s100_vi2_w(int state) { } + virtual void s100_vi3_w(int state) { } + virtual void s100_vi4_w(int state) { } + virtual void s100_vi5_w(int state) { } + virtual void s100_vi6_w(int state) { } + virtual void s100_vi7_w(int state) { } // memory access - virtual uint8_t s100_smemr_r(address_space &space, offs_t offset) { return 0; }; - virtual void s100_mwrt_w(address_space &space, offs_t offset, uint8_t data) { }; + virtual uint8_t s100_smemr_r(address_space &space, offs_t offset) { return 0; } + virtual void s100_mwrt_w(address_space &space, offs_t offset, uint8_t data) { } // I/O access - virtual uint8_t s100_sinp_r(address_space &space, offs_t offset) { return 0; }; - virtual void s100_sout_w(address_space &space, offs_t offset, uint8_t data) { }; + virtual uint8_t s100_sinp_r(address_space &space, offs_t offset) { return 0; } + virtual void s100_sout_w(address_space &space, offs_t offset, uint8_t data) { } // configuration access virtual void s100_phlda_w(int state) { } @@ -194,39 +191,44 @@ public: virtual void s100_reset_w(int state) { } virtual void s100_slave_clr_w(int state) { } -public: - s100_bus_t *m_bus; +protected: + // construction/destruction + device_s100_card_interface(const machine_config &mconfig, device_t &device); + + s100_bus_device *m_bus; + +private: device_s100_card_interface *m_next; }; -// ======================> s100_bus_t +// ======================> s100_bus_device -class s100_bus_t : public device_t +class s100_bus_device : public device_t { public: // construction/destruction - s100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~s100_bus_t() { m_device_list.detach_all(); } - - template<class _Object> static devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_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 devcb_base &set_error_wr_callback(device_t &device, _Object object) { return downcast<s100_bus_t &>(device).m_write_error.set_callback(object); } + s100_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ~s100_bus_device() { m_device_list.detach_all(); } + + template <class Object> static devcb_base &set_irq_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_irq.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_nmi_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_nmi.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi0.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi1.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi2.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi3.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi4_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi4.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi5_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi5.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi6_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi6.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_vi7_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_vi7.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma0_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma0.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma1_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma1.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma2_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma2.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_dma3_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_dma3.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_rdy_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_rdy.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_hold_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_hold.set_callback(std::forward<Object>(cb)); } + template <class Object> static devcb_base &set_error_wr_callback(device_t &device, Object &&cb) { return downcast<s100_bus_device &>(device).m_write_error.set_callback(std::forward<Object>(cb)); } void add_card(device_s100_card_interface *card); @@ -282,29 +284,25 @@ private: }; -// ======================> s100_slot_t +// ======================> s100_slot_device -class s100_slot_t : public device_t, - public device_slot_interface +class s100_slot_device : public device_t, public device_slot_interface { public: // construction/destruction - s100_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + s100_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // device-level overrides virtual void device_start() override; private: - s100_bus_t *m_bus; + s100_bus_device *m_bus; }; // device type definition -extern const device_type S100_BUS; -extern const device_type S100_SLOT; - - - +DECLARE_DEVICE_TYPE(S100_BUS, s100_bus_device) +DECLARE_DEVICE_TYPE(S100_SLOT, s100_slot_device) -#endif +#endif // MAME_BUS_S100_S100_H diff --git a/src/devices/bus/s100/wunderbus.cpp b/src/devices/bus/s100/wunderbus.cpp index 09ee10d71e1..dd89f1c5d52 100644 --- a/src/devices/bus/s100/wunderbus.cpp +++ b/src/devices/bus/s100/wunderbus.cpp @@ -31,7 +31,7 @@ // DEVICE DEFINITIONS //************************************************************************** -const device_type S100_WUNDERBUS = device_creator<s100_wunderbus_device>; +DEFINE_DEVICE_TYPE(S100_WUNDERBUS, s100_wunderbus_device, "s100_wunderbus", "Morrow Winderbus I/O") //------------------------------------------------- @@ -238,7 +238,7 @@ ioport_constructor s100_wunderbus_device::device_input_ports() const //------------------------------------------------- s100_wunderbus_device::s100_wunderbus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, S100_WUNDERBUS, "Wunderbus I/O", tag, owner, clock, "s100_wunderbus", __FILE__), + device_t(mconfig, S100_WUNDERBUS, tag, owner, clock), device_s100_card_interface(mconfig, *this), m_pic(*this, I8259A_TAG), m_ace1(*this, INS8250_1_TAG), diff --git a/src/devices/bus/s100/wunderbus.h b/src/devices/bus/s100/wunderbus.h index 5d2e37ed48b..4b1d5554e06 100644 --- a/src/devices/bus/s100/wunderbus.h +++ b/src/devices/bus/s100/wunderbus.h @@ -6,10 +6,10 @@ **********************************************************************/ -#pragma once +#ifndef MAME_BUS_S100_WUNDERBUS_H +#define MAME_BUS_S100_WUNDERBUS_H -#ifndef __S100_WUNDERBUS__ -#define __S100_WUNDERBUS__ +#pragma once #include "s100.h" #include "machine/ins8250.h" @@ -66,7 +66,6 @@ private: // device type definition -extern const device_type S100_WUNDERBUS; - +DECLARE_DEVICE_TYPE(S100_WUNDERBUS, s100_wunderbus_device) -#endif +#endif // MAME_BUS_S100_WUNDERBUS_H |