summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-06-22 15:53:14 +0200
committer mooglyguy <therealmogminer@gmail.com>2018-06-22 15:53:34 +0200
commitd80a91a7c970eab71bf1676af75ba2e2a55397a5 (patch)
treedc523553ffdf90142ea8ee20718a6a76939a6244
parentf0ccbbfb5e772c91ffe257c1e74c35aa50b3b8f3 (diff)
altos8600, isbc_208, isbc_215g, m20_8086, psxcd, saturn, sun3x, z100: Removed machine().device, nw
-rw-r--r--src/mame/drivers/a7150.cpp2
-rw-r--r--src/mame/drivers/altos8600.cpp3
-rw-r--r--src/mame/drivers/isbc.cpp7
-rw-r--r--src/mame/drivers/m20.cpp2
-rw-r--r--src/mame/drivers/psx.cpp11
-rw-r--r--src/mame/drivers/saturn.cpp4
-rw-r--r--src/mame/drivers/stv.cpp4
-rw-r--r--src/mame/drivers/sun3x.cpp8
-rw-r--r--src/mame/drivers/z100.cpp72
-rw-r--r--src/mame/includes/saturn.h20
-rw-r--r--src/mame/machine/acs8600_ics.cpp3
-rw-r--r--src/mame/machine/acs8600_ics.h17
-rw-r--r--src/mame/machine/bbc.cpp1
-rw-r--r--src/mame/machine/isbc_208.cpp8
-rw-r--r--src/mame/machine/isbc_208.h12
-rw-r--r--src/mame/machine/isbc_215g.cpp3
-rw-r--r--src/mame/machine/isbc_215g.h41
-rw-r--r--src/mame/machine/m20_8086.cpp10
-rw-r--r--src/mame/machine/m20_8086.h11
-rw-r--r--src/mame/machine/psxcd.cpp7
-rw-r--r--src/mame/machine/psxcd.h16
21 files changed, 152 insertions, 110 deletions
diff --git a/src/mame/drivers/a7150.cpp b/src/mame/drivers/a7150.cpp
index d01d4f1f949..a2b9eaada4f 100644
--- a/src/mame/drivers/a7150.cpp
+++ b/src/mame/drivers/a7150.cpp
@@ -507,7 +507,7 @@ MACHINE_CONFIG_START(a7150_state::a7150)
MCFG_RS232_DSR_HANDLER(WRITELINE("uart8251", i8251_device, write_dsr))
MCFG_SLOT_OPTION_DEVICE_INPUT_DEFAULTS("keyboard", kbd_rs232_defaults)
- MCFG_ISBC_215_ADD("isbc_215g", 0x4a, "maincpu")
+ MCFG_DEVICE_ADD("isbc_215g", ISBC_215G, 0x4a, "maincpu")
MCFG_ISBC_215_IRQ(WRITELINE("pic8259", pic8259_device, ir5_w))
// KGS K7070 graphics terminal controlling ABG K7072 framebuffer
diff --git a/src/mame/drivers/altos8600.cpp b/src/mame/drivers/altos8600.cpp
index bd714bcc78b..ed90babd6d4 100644
--- a/src/mame/drivers/altos8600.cpp
+++ b/src/mame/drivers/altos8600.cpp
@@ -798,8 +798,7 @@ MACHINE_CONFIG_START(altos8600_state::altos8600)
MCFG_FLOPPY_DRIVE_ADD("fd1797:2", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD("fd1797:3", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats)
- MCFG_DEVICE_ADD("ics", ACS8600_ICS, 0)
- MCFG_ACS8600_ICS_MAINCPU(":dmac") // TODO: fixme
+ MCFG_DEVICE_ADD("ics", ACS8600_ICS, "dmac")
MCFG_ACS8600_ICS_IRQ1(WRITELINE("pic8259_1", pic8259_device, ir5_w))
MCFG_ACS8600_ICS_IRQ2(WRITELINE("pic8259_1", pic8259_device, ir6_w))
diff --git a/src/mame/drivers/isbc.cpp b/src/mame/drivers/isbc.cpp
index 0a0e98f4c53..58925540e74 100644
--- a/src/mame/drivers/isbc.cpp
+++ b/src/mame/drivers/isbc.cpp
@@ -432,8 +432,7 @@ MACHINE_CONFIG_START(isbc_state::isbc8605)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_IO_MAP(isbc8605_io)
- MCFG_DEVICE_ADD("isbc_208", ISBC_208, 0)
- MCFG_ISBC_208_MAINCPU("maincpu")
+ MCFG_DEVICE_ADD("isbc_208", ISBC_208, "maincpu")
MCFG_ISBC_208_IRQ(WRITELINE("pic_0", pic8259_device, ir5_w))
MACHINE_CONFIG_END
@@ -442,7 +441,7 @@ MACHINE_CONFIG_START(isbc_state::isbc8630)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_IO_MAP(isbc8630_io)
- MCFG_ISBC_215_ADD("isbc_215g", 0x100, "maincpu")
+ MCFG_DEVICE_ADD("isbc_215g", ISBC_215G, 0x100, "maincpu")
MCFG_ISBC_215_IRQ(WRITELINE("pic_0", pic8259_device, ir5_w))
MCFG_DEVICE_ADD("statuslatch", LS259, 0) // U14
@@ -547,7 +546,7 @@ MACHINE_CONFIG_START(isbc_state::isbc286)
MCFG_ISBX_SLOT_MINTR0_CALLBACK(WRITELINE("pic_1", pic8259_device, ir5_w))
MCFG_ISBX_SLOT_MINTR1_CALLBACK(WRITELINE("pic_1", pic8259_device, ir6_w))
- MCFG_ISBC_215_ADD("isbc_215g", 0x100, "maincpu")
+ MCFG_DEVICE_ADD("isbc_215g", ISBC_215G, 0x100, "maincpu")
MCFG_ISBC_215_IRQ(WRITELINE("pic_0", pic8259_device, ir5_w))
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp
index c7fbcbfbc81..e63629fdecb 100644
--- a/src/mame/drivers/m20.cpp
+++ b/src/mame/drivers/m20.cpp
@@ -849,7 +849,7 @@ MACHINE_CONFIG_START(m20_state::m20)
MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(WRITELINE("i8251_2", i8251_device, write_rxd))
- MCFG_DEVICE_ADD("apb", M20_8086, 0)
+ MCFG_DEVICE_ADD("apb", M20_8086, "maincpu", "i8259", RAM_TAG)
MCFG_SOFTWARE_LIST_ADD("flop_list","m20")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp
index 0738e3adc3c..43957f067df 100644
--- a/src/mame/drivers/psx.cpp
+++ b/src/mame/drivers/psx.cpp
@@ -37,7 +37,8 @@ public:
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_ram(*this, "maincpu:ram"),
- m_parallel(*this, "parallel")
+ m_parallel(*this, "parallel"),
+ m_psxcd(*this, PSXCD_TAG)
{
}
@@ -73,6 +74,7 @@ public:
void subcpu_map(address_map &map);
private:
required_device<psx_parallel_slot_device> m_parallel;
+ required_device<psxcd_device> m_psxcd;
};
@@ -494,8 +496,7 @@ QUICKLOAD_LOAD_MEMBER(psx1_state, psx_exe_load)
void psx1_state::cd_dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size )
{
uint8_t *psxram = (uint8_t *) p_n_psxram;
- psxcd_device *psxcd = machine().device<psxcd_device>(PSXCD_TAG);
- psxcd->start_dma(psxram + n_address, n_size*4);
+ m_psxcd->start_dma(psxram + n_address, n_size*4);
}
void psx1_state::cd_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size )
@@ -552,7 +553,7 @@ MACHINE_CONFIG_START(psx1_state::psj)
MCFG_PSX_CD_READ_HANDLER( READ8( PSXCD_TAG, psxcd_device, read ) )
MCFG_PSX_CD_WRITE_HANDLER( WRITE8( PSXCD_TAG, psxcd_device, write ) )
- MCFG_PSXCD_ADD(PSXCD_TAG, "cdrom")
+ MCFG_DEVICE_ADD(PSXCD_TAG, PSXCD, "maincpu", "spu")
MCFG_PSXCD_IRQ_HANDLER(WRITELINE("maincpu:irq", psxirq_device, intin2))
MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, this ) )
MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, this ) )
@@ -604,7 +605,7 @@ MACHINE_CONFIG_START(psx1_state::pse)
MCFG_PSX_CD_READ_HANDLER( READ8( PSXCD_TAG, psxcd_device, read ) )
MCFG_PSX_CD_WRITE_HANDLER( WRITE8( PSXCD_TAG, psxcd_device, write ) )
- MCFG_PSXCD_ADD(PSXCD_TAG, "cdrom")
+ MCFG_DEVICE_ADD(PSXCD_TAG, PSXCD, "maincpu", "spu")
MCFG_PSXCD_IRQ_HANDLER(WRITELINE("maincpu:irq", psxirq_device, intin2))
MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, this ) )
MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, this ) )
diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp
index 3af7c418df9..f34c0d71ecf 100644
--- a/src/mame/drivers/saturn.cpp
+++ b/src/mame/drivers/saturn.cpp
@@ -432,7 +432,6 @@ test1f diagnostic hacks:
#include "machine/smpc.h"
#include "machine/stvcd.h"
#include "machine/saturn_cdb.h"
-#include "sound/scsp.h"
#include "video/stvvdp1.h"
#include "video/stvvdp2.h"
@@ -458,7 +457,6 @@ public:
, m_stvcd(*this, "stvcd")
, m_ctrl1(*this, "ctrl1")
, m_ctrl2(*this, "ctrl2")
- , m_scsp(*this, "scsp")
{ }
DECLARE_INPUT_CHANGED_MEMBER(tray_open);
@@ -495,8 +493,6 @@ public:
required_device<saturn_control_port_device> m_ctrl1;
required_device<saturn_control_port_device> m_ctrl2;
- required_device<scsp_device> m_scsp;
-
void saturn(machine_config &config);
void saturnjp(machine_config &config);
void saturneu(machine_config &config);
diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp
index 91740c5d8b1..cb044277fd7 100644
--- a/src/mame/drivers/stv.cpp
+++ b/src/mame/drivers/stv.cpp
@@ -1282,9 +1282,9 @@ image_init_result stv_state::load_cart(device_image_interface &image, generic_sl
}
-MACHINE_START_MEMBER(stv_state,stv)
+MACHINE_START_MEMBER(stv_state, stv)
{
- machine().device<scsp_device>("scsp")->set_ram_base(m_sound_ram);
+ m_scsp->set_ram_base(m_sound_ram);
// save states
// save_pointer(NAME(m_scu_regs.get()), 0x100/4);
diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp
index 3da47d59ec9..2a368da8950 100644
--- a/src/mame/drivers/sun3x.cpp
+++ b/src/mame/drivers/sun3x.cpp
@@ -152,6 +152,7 @@
#define SCC2_TAG "scc2"
#define ESP_TAG "esp"
#define FDC_TAG "fdc"
+#define FLOPPY_CONN_TAG "fdc:0"
#define RS232A_TAG "rs232a"
#define RS232B_TAG "rs232b"
#define KEYBOARD_TAG "keyboard"
@@ -165,6 +166,7 @@ public:
m_scc1(*this, SCC1_TAG),
m_scc2(*this, SCC2_TAG),
m_fdc(*this, FDC_TAG),
+ m_floppy_connector(*this, FLOPPY_CONN_TAG),
m_p_ram(*this, "p_ram"),
m_bw2_vram(*this, "bw2_vram")
{ }
@@ -173,6 +175,7 @@ public:
required_device<z80scc_device> m_scc1;
required_device<z80scc_device> m_scc2;
optional_device<n82077aa_device> m_fdc;
+ optional_device<floppy_connector> m_floppy_connector;
virtual void machine_reset() override;
required_shared_ptr<uint32_t> m_p_ram;
@@ -282,8 +285,9 @@ READ32_MEMBER( sun3x_state::fdc_control_r )
// 2 = hd
// 3 = dd
- if(m_fdc) {
- floppy_image_device *fdev = machine().device<floppy_connector>(":fdc:0")->get_device();
+ if (m_fdc)
+ {
+ floppy_image_device *fdev = m_floppy_connector->get_device();
if(fdev->exists()) {
uint32_t variant = fdev->get_variant();
switch(variant) {
diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp
index 904d8ae01f0..8247b366af9 100644
--- a/src/mame/drivers/z100.cpp
+++ b/src/mame/drivers/z100.cpp
@@ -174,18 +174,15 @@ public:
m_floppy(nullptr)
{ }
- required_device<cpu_device> m_maincpu;
- required_device<pia6821_device> m_pia0;
- required_device<pia6821_device> m_pia1;
- required_device<pic8259_device> m_picm;
- required_device<pic8259_device> m_pics;
- required_device<fd1797_device> m_fdc;
- required_device<floppy_connector> m_floppy0;
- required_device<floppy_connector> m_floppy1;
- required_device<floppy_connector> m_floppy2;
- required_device<floppy_connector> m_floppy3;
- required_device<mc6845_device> m_crtc;
- required_device<palette_device> m_palette;
+ void z100(machine_config &config);
+
+ virtual void driver_init() override;
+
+ DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
+
+protected:
+ virtual void machine_reset() override;
+ virtual void video_start() override;
DECLARE_READ8_MEMBER(z100_vram_r);
DECLARE_WRITE8_MEMBER(z100_vram_w);
@@ -201,28 +198,38 @@ public:
DECLARE_WRITE8_MEMBER(video_pia_B_w);
DECLARE_WRITE_LINE_MEMBER(video_pia_CA2_w);
DECLARE_WRITE_LINE_MEMBER(video_pia_CB2_w);
+
+ uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ void z100_io(address_map &map);
+ void z100_mem(address_map &map);
+
+ required_device<cpu_device> m_maincpu;
+ required_device<pia6821_device> m_pia0;
+ required_device<pia6821_device> m_pia1;
+ required_device<pic8259_device> m_picm;
+ required_device<pic8259_device> m_pics;
+ required_device<fd1797_device> m_fdc;
+ required_device<floppy_connector> m_floppy0;
+ required_device<floppy_connector> m_floppy1;
+ required_device<floppy_connector> m_floppy2;
+ required_device<floppy_connector> m_floppy3;
+ required_device<mc6845_device> m_crtc;
+ required_device<palette_device> m_palette;
+
std::unique_ptr<uint8_t[]> m_gvram;
- uint8_t m_keyb_press,m_keyb_status;
+ uint8_t m_keyb_press;
+ uint8_t m_keyb_status;
uint8_t m_vram_enable;
uint8_t m_gbank;
uint8_t m_display_mask;
uint8_t m_flash;
uint8_t m_clr_val;
- uint8_t m_crtc_vreg[0x100],m_crtc_index;
+ uint8_t m_crtc_vreg[0x100];
+ uint8_t m_crtc_index;
uint16_t m_start_addr;
floppy_image_device *m_floppy;
-
- mc6845_device *m_mc6845;
- void init_z100();
- virtual void machine_start() override;
- virtual void machine_reset() override;
- virtual void video_start() override;
- uint32_t screen_update_z100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
- void z100(machine_config &config);
- void z100_io(address_map &map);
- void z100_mem(address_map &map);
};
#define mc6845_h_char_total (m_crtc_vreg[0])
@@ -248,7 +255,7 @@ void z100_state::video_start()
m_gvram = make_unique_clear<uint8_t[]>(0x30000);
}
-uint32_t z100_state::screen_update_z100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t z100_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int x,y,xi,yi;
int dot;
@@ -646,11 +653,6 @@ WRITE_LINE_MEMBER( z100_state::video_pia_CB2_w )
m_clr_val = (state & 1) ? 0x00 : 0xff;
}
-void z100_state::machine_start()
-{
- m_mc6845 = machine().device<mc6845_device>("crtc");
-}
-
void z100_state::machine_reset()
{
int i;
@@ -685,7 +687,7 @@ MACHINE_CONFIG_START(z100_state::z100)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE_DRIVER(z100_state, screen_update_z100)
+ MCFG_SCREEN_UPDATE_DRIVER(z100_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 8)
@@ -729,7 +731,7 @@ ROM_START( z100 )
ROM_LOAD( "mcu", 0x0000, 0x1000, NO_DUMP )
ROM_END
-void z100_state::init_z100()
+void z100_state::driver_init()
{
uint8_t *ROM = memregion("ipl")->base();
@@ -742,5 +744,5 @@ void z100_state::init_z100()
/* Driver */
-// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
-COMP( 1982, z100, 0, 0, z100, z100, z100_state, init_z100, "Zenith", "Z-100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+// YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS
+COMP( 1982, z100, 0, 0, z100, z100, z100_state, driver_init, "Zenith", "Z-100", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/includes/saturn.h b/src/mame/includes/saturn.h
index 0da6e1067ea..716da438d50 100644
--- a/src/mame/includes/saturn.h
+++ b/src/mame/includes/saturn.h
@@ -5,22 +5,24 @@
#pragma once
-#include "machine/timer.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+
#include "cpu/m68000/m68000.h"
-#include "machine/sega_scu.h"
-#include "machine/smpc.h"
#include "cpu/sh/sh2.h"
-#include "bus/generic/slot.h"
-#include "bus/generic/carts.h"
+#include "debug/debugcon.h"
+#include "debug/debugcmd.h"
#include "machine/315-5881_crypt.h"
#include "machine/315-5838_317-0229_comp.h"
+#include "machine/sega_scu.h"
+#include "machine/smpc.h"
+#include "machine/timer.h"
-#include "debug/debugcon.h"
-#include "debug/debugcmd.h"
-#include "debugger.h"
+#include "sound/scsp.h"
+#include "debugger.h"
#include "emupal.h"
#include "screen.h"
@@ -37,6 +39,7 @@ public:
m_maincpu(*this, "maincpu"),
m_slave(*this, "slave"),
m_audiocpu(*this, "audiocpu"),
+ m_scsp(*this, "scsp"),
m_smpc_hle(*this, "smpc"),
m_scu(*this, "scu"),
m_gfxdecode(*this, "gfxdecode"),
@@ -107,6 +110,7 @@ public:
required_device<sh2_device> m_maincpu;
required_device<sh2_device> m_slave;
required_device<m68000_base_device> m_audiocpu;
+ required_device<scsp_device> m_scsp;
required_device<smpc_hle_device> m_smpc_hle;
required_device<sega_scu_device> m_scu;
required_device<gfxdecode_device> m_gfxdecode;
diff --git a/src/mame/machine/acs8600_ics.cpp b/src/mame/machine/acs8600_ics.cpp
index a3439f1da02..3b63cc119aa 100644
--- a/src/mame/machine/acs8600_ics.cpp
+++ b/src/mame/machine/acs8600_ics.cpp
@@ -15,6 +15,7 @@ DEFINE_DEVICE_TYPE(ACS8600_ICS, acs8600_ics_device, "acs8600_ics", "Altos ACS860
acs8600_ics_device::acs8600_ics_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, ACS8600_ICS, tag, owner, clock),
m_icscpu(*this, "icscpu"),
+ m_maincpu(*this, finder_base::DUMMY_TAG),
m_out_irq1_func(*this),
m_out_irq2_func(*this)
{
@@ -195,7 +196,7 @@ MACHINE_CONFIG_END
void acs8600_ics_device::device_start()
{
- m_maincpu_mem = &machine().device<cpu_device>(m_maincpu_tag)->space(AS_PROGRAM);
+ m_maincpu_mem = &m_maincpu->space(AS_PROGRAM);
m_out_irq1_func.resolve_safe();
m_out_irq2_func.resolve_safe();
}
diff --git a/src/mame/machine/acs8600_ics.h b/src/mame/machine/acs8600_ics.h
index 14f47fe9d81..ef8f99c56bd 100644
--- a/src/mame/machine/acs8600_ics.h
+++ b/src/mame/machine/acs8600_ics.h
@@ -6,11 +6,16 @@
#pragma once
-
-
class acs8600_ics_device : public device_t
{
public:
+ template <typename T>
+ acs8600_ics_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&maincpu_tag)
+ : acs8600_ics_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ m_maincpu.set_tag(std::forward<T>(maincpu_tag));
+ }
+
acs8600_ics_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_WRITE8_MEMBER(hiaddr_w);
@@ -21,7 +26,6 @@ public:
template <class Object> devcb_base &set_irq1_callback(Object &&cb) { return m_out_irq1_func.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_irq2_callback(Object &&cb) { return m_out_irq2_func.set_callback(std::forward<Object>(cb)); }
- void set_maincpu_tag(const char *maincpu_tag) { m_maincpu_tag = maincpu_tag; }
const tiny_rom_entry *device_rom_region() const override;
void ics_io(address_map &map);
@@ -32,14 +36,13 @@ protected:
private:
required_device<cpu_device> m_icscpu;
+ required_device<cpu_device> m_maincpu;
devcb_write_line m_out_irq1_func;
devcb_write_line m_out_irq2_func;
- const char *m_maincpu_tag;
address_space *m_maincpu_mem;
- u8 m_hiaddr, m_ctrl;
+ u8 m_hiaddr;
+ u8 m_ctrl;
};
-#define MCFG_ACS8600_ICS_MAINCPU(_maincpu_tag) \
- downcast<acs8600_ics_device &>(*device).set_maincpu_tag(_maincpu_tag);
#define MCFG_ACS8600_ICS_IRQ1(_irq_line) \
devcb = &downcast<acs8600_ics_device &>(*device).set_irq1_callback(DEVCB_##_irq_line);
diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp
index e7b28620c5a..0497c33e003 100644
--- a/src/mame/machine/bbc.cpp
+++ b/src/mame/machine/bbc.cpp
@@ -677,7 +677,6 @@ void bbc_state::bbcb_IC32_initialise(bbc_state *state)
void bbc_state::MC146818_set(address_space &space)
{
//logerror ("146181 WR=%d DS=%d AS=%d CE=%d \n",m_MC146818_WR,m_MC146818_DS,m_MC146818_AS,m_MC146818_CE);
- //mc146818_device *rtc = machine().device<mc146818_device>("rtc");
// if chip enabled
if (m_MC146818_CE)
diff --git a/src/mame/machine/isbc_208.cpp b/src/mame/machine/isbc_208.cpp
index 27c02772d78..3771bb03932 100644
--- a/src/mame/machine/isbc_208.cpp
+++ b/src/mame/machine/isbc_208.cpp
@@ -13,9 +13,11 @@ DEFINE_DEVICE_TYPE(ISBC_208, isbc_208_device, "isbc_208", "ISBC 208 Flexible Dis
isbc_208_device::isbc_208_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, ISBC_208, tag, owner, clock),
+ m_maincpu(*this, finder_base::DUMMY_TAG),
m_dmac(*this, "dmac"),
m_fdc(*this, "fdc"),
- m_out_irq_func(*this)
+ m_out_irq_func(*this),
+ m_maincpu_mem(nullptr)
{
}
@@ -65,7 +67,7 @@ WRITE_LINE_MEMBER(isbc_208_device::irq_w)
WRITE_LINE_MEMBER(isbc_208_device::hreq_w)
{
- machine().device<cpu_device>(m_maincpu_tag)->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+ m_maincpu->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
/* Assert HLDA */
m_dmac->hack_w(state);
}
@@ -121,7 +123,7 @@ void isbc_208_device::device_reset()
void isbc_208_device::device_start()
{
- m_maincpu_mem = &machine().device<cpu_device>(m_maincpu_tag)->space(AS_PROGRAM);
+ m_maincpu_mem = &m_maincpu->space(AS_PROGRAM);
m_out_irq_func.resolve_safe();
}
diff --git a/src/mame/machine/isbc_208.h b/src/mame/machine/isbc_208.h
index 97116b8a32c..f05cd797907 100644
--- a/src/mame/machine/isbc_208.h
+++ b/src/mame/machine/isbc_208.h
@@ -12,6 +12,13 @@
class isbc_208_device : public device_t
{
public:
+ template <typename T>
+ isbc_208_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag)
+ : isbc_208_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ m_maincpu.set_tag(std::forward<T>(cpu_tag));
+ }
+
isbc_208_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
void map(address_map &map);
@@ -19,7 +26,6 @@ public:
DECLARE_WRITE8_MEMBER(aux_w);
template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); }
- void set_maincpu_tag(const char *maincpu_tag) { m_maincpu_tag = maincpu_tag; }
protected:
virtual void device_start() override;
@@ -27,13 +33,13 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
private:
+ required_device<cpu_device> m_maincpu;
required_device<am9517a_device> m_dmac;
required_device<i8272a_device> m_fdc;
devcb_write_line m_out_irq_func;
u8 m_aux;
u16 m_seg;
- const char *m_maincpu_tag;
address_space *m_maincpu_mem;
DECLARE_WRITE_LINE_MEMBER(out_eop_w);
@@ -43,8 +49,6 @@ private:
DECLARE_WRITE_LINE_MEMBER(irq_w);
DECLARE_FLOPPY_FORMATS( floppy_formats );
};
-#define MCFG_ISBC_208_MAINCPU(_maincpu_tag) \
- downcast<isbc_208_device &>(*device).set_maincpu_tag(_maincpu_tag);
#define MCFG_ISBC_208_IRQ(_irq_line) \
devcb = &downcast<isbc_208_device &>(*device).set_irq_callback(DEVCB_##_irq_line);
diff --git a/src/mame/machine/isbc_215g.cpp b/src/mame/machine/isbc_215g.cpp
index e04cc7e30b0..05f65fea8b6 100644
--- a/src/mame/machine/isbc_215g.cpp
+++ b/src/mame/machine/isbc_215g.cpp
@@ -13,6 +13,7 @@ DEFINE_DEVICE_TYPE(ISBC_215G, isbc_215g_device, "isbc_215g", "ISBC 215G Winchest
isbc_215g_device::isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, ISBC_215G, tag, owner, clock),
+ m_maincpu(*this, finder_base::DUMMY_TAG),
m_dmac(*this, "u84"),
m_hdd0(*this, "drive0"),
m_hdd1(*this, "drive1"),
@@ -399,7 +400,7 @@ void isbc_215g_device::device_reset()
void isbc_215g_device::device_start()
{
- m_maincpu_mem = &machine().device<cpu_device>(m_maincpu_tag)->space(AS_PROGRAM);
+ m_maincpu_mem = &m_maincpu->space(AS_PROGRAM);
m_cyl[0] = m_cyl[1] = 0;
m_lba[0] = m_lba[1] = 0;
m_idcompare[0] = m_idcompare[1] = m_idcompare[2] = m_idcompare[3] = 0;
diff --git a/src/mame/machine/isbc_215g.h b/src/mame/machine/isbc_215g.h
index 9c761541836..565d742f1de 100644
--- a/src/mame/machine/isbc_215g.h
+++ b/src/mame/machine/isbc_215g.h
@@ -13,18 +13,24 @@
class isbc_215g_device : public device_t
{
public:
+ template <typename T>
+ isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint16_t wakeup, T &&cpu_tag)
+ : isbc_215g_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ m_wakeup = wakeup;
+ m_maincpu.set_tag(std::forward<T>(cpu_tag));
+ }
+
isbc_215g_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); }
+
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ16_MEMBER(io_r);
DECLARE_WRITE16_MEMBER(io_w);
DECLARE_READ16_MEMBER(mem_r);
DECLARE_WRITE16_MEMBER(mem_w);
- void set_wakeup_addr(uint32_t wakeup) { m_wakeup = wakeup; }
- void set_maincpu_tag(const char *maincpu_tag) { m_maincpu_tag = maincpu_tag; }
- template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_out_irq_func.set_callback(std::forward<Object>(cb)); }
-
void isbc_215g_io(address_map &map);
void isbc_215g_mem(address_map &map);
protected:
@@ -38,6 +44,7 @@ private:
uint16_t read_sector();
bool write_sector(uint16_t data);
+ required_device<cpu_device> m_maincpu;
required_device<i8089_device> m_dmac;
required_device<harddisk_image_device> m_hdd0;
required_device<harddisk_image_device> m_hdd1;
@@ -47,16 +54,27 @@ private:
devcb_write_line m_out_irq_func;
int m_reset;
- uint16_t m_wakeup, m_secoffset, m_sector[512];
- const char *m_maincpu_tag;
+ uint16_t m_wakeup;
+ uint16_t m_secoffset;
+ uint16_t m_sector[512];
address_space *m_maincpu_mem;
uint32_t m_lba[2];
uint16_t m_cyl[2];
- uint8_t m_idcompare[4], m_drive, m_head, m_index;
+ uint8_t m_idcompare[4];
+ uint8_t m_drive;
+ uint8_t m_head;
+ uint8_t m_index;
int8_t m_format_bytes;
- bool m_idfound, m_stepdir, m_wrgate, m_rdgate, m_amsrch;
+ bool m_idfound;
+ bool m_stepdir;
+ bool m_wrgate;
+ bool m_rdgate;
+ bool m_amsrch;
- bool m_isbx_irq[4], m_fdctc, m_step, m_format;
+ bool m_isbx_irq[4];
+ bool m_fdctc;
+ bool m_step;
+ bool m_format;
const struct hard_disk_info* m_geom[2];
@@ -66,11 +84,6 @@ private:
DECLARE_WRITE_LINE_MEMBER(isbx_irq_11_w);
};
-#define MCFG_ISBC_215_ADD(_tag, _wakeup, _maincpu_tag) \
- MCFG_DEVICE_ADD(_tag, ISBC_215G, 0) \
- downcast<isbc_215g_device &>(*device).set_wakeup_addr(_wakeup); \
- downcast<isbc_215g_device &>(*device).set_maincpu_tag(_maincpu_tag);
-
#define MCFG_ISBC_215_IRQ(_irq_line) \
devcb = &downcast<isbc_215g_device &>(*device).set_irq_callback(DEVCB_##_irq_line);
diff --git a/src/mame/machine/m20_8086.cpp b/src/mame/machine/m20_8086.cpp
index 8685fd43e84..d479a1b2590 100644
--- a/src/mame/machine/m20_8086.cpp
+++ b/src/mame/machine/m20_8086.cpp
@@ -2,23 +2,23 @@
// copyright-holders:Carl
#include "emu.h"
#include "m20_8086.h"
-#include "machine/ram.h"
DEFINE_DEVICE_TYPE(M20_8086, m20_8086_device, "m20_8086", "Olivetti M20 8086 Adapter")
m20_8086_device::m20_8086_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, M20_8086, tag, owner, clock),
m_8086(*this, "8086"),
- m_maincpu(*this, ":maincpu"),
- m_pic(*this, ":i8259"),
+ m_maincpu(*this, finder_base::DUMMY_TAG),
+ m_pic(*this, finder_base::DUMMY_TAG),
+ m_ram(*this, finder_base::DUMMY_TAG),
m_8086_halt(true)
{
}
void m20_8086_device::device_start()
{
- uint8_t* ram = machine().device<ram_device>("ram")->pointer();
- m_8086->space(AS_PROGRAM).install_readwrite_bank(0x00000, machine().device<ram_device>("ram")->size() - 0x4001, "mainram");
+ uint8_t* ram = m_ram->pointer();
+ m_8086->space(AS_PROGRAM).install_readwrite_bank(0x00000, m_ram->size() - 0x4001, "mainram");
membank("highram")->set_base(ram);
membank("mainram")->set_base(&ram[0x4000]);
membank("vram")->set_base(memshare(":videoram")->ptr());
diff --git a/src/mame/machine/m20_8086.h b/src/mame/machine/m20_8086.h
index 7f58cc3b6d4..c0ec8c7588a 100644
--- a/src/mame/machine/m20_8086.h
+++ b/src/mame/machine/m20_8086.h
@@ -5,10 +5,20 @@
#include "cpu/i86/i86.h"
#include "machine/pic8259.h"
+#include "machine/ram.h"
class m20_8086_device : public device_t
{
public:
+ template <typename T, typename U, typename V>
+ m20_8086_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&maincpu_tag, U &&pic_tag, V &&ram_tag)
+ : m20_8086_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ m_maincpu.set_tag(std::forward<T>(maincpu_tag));
+ m_pic.set_tag(std::forward<U>(pic_tag));
+ m_ram.set_tag(std::forward<V>(ram_tag));
+ }
+
m20_8086_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ16_MEMBER(z8000_io_r);
@@ -32,6 +42,7 @@ private:
required_device<cpu_device> m_8086;
required_device<cpu_device> m_maincpu;
required_device<pic8259_device> m_pic;
+ required_device<ram_device> m_ram;
bool m_8086_halt;
int m_nvi, m_vi;
diff --git a/src/mame/machine/psxcd.cpp b/src/mame/machine/psxcd.cpp
index 7632adcac58..a268f7a963f 100644
--- a/src/mame/machine/psxcd.cpp
+++ b/src/mame/machine/psxcd.cpp
@@ -87,7 +87,9 @@ DEFINE_DEVICE_TYPE(PSXCD, psxcd_device, "psx_cd", "PSX CD-ROM")
psxcd_device::psxcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
cdrom_image_device(mconfig, PSXCD, tag, owner, clock),
- m_irq_handler(*this)
+ m_irq_handler(*this),
+ m_maincpu(*this, finder_base::DUMMY_TAG),
+ m_spu(*this, finder_base::DUMMY_TAG)
{
set_interface("psx_cdrom");
}
@@ -98,9 +100,6 @@ void psxcd_device::device_start()
cdrom_image_device::device_start();
m_irq_handler.resolve_safe();
- m_maincpu = machine().device<cpu_device>("maincpu");
- m_spu = machine().device<spu_device>("spu");
-
unsigned int sysclk=m_maincpu->clock()/2;
start_read_delay=(sysclk/60);
read_sector_cycles=(sysclk/75);
diff --git a/src/mame/machine/psxcd.h b/src/mame/machine/psxcd.h
index efb36dc51db..dd9b19dfbe4 100644
--- a/src/mame/machine/psxcd.h
+++ b/src/mame/machine/psxcd.h
@@ -12,15 +12,20 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_PSXCD_ADD(_tag, _devname) \
- MCFG_DEVICE_ADD(_tag, PSXCD, 0)
-
#define MCFG_PSXCD_IRQ_HANDLER(_devcb) \
devcb = &downcast<psxcd_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class psxcd_device : public cdrom_image_device
{
public:
+ template <typename T, typename U>
+ psxcd_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag, U &&spu_tag)
+ : psxcd_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ m_maincpu.set_tag(std::forward<T>(cpu_tag));
+ m_spu.set_tag(std::forward<U>(spu_tag));
+ }
+
psxcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration helpers
@@ -151,10 +156,9 @@ private:
emu_timer *m_timers[MAX_PSXCD_TIMERS];
bool m_timerinuse[MAX_PSXCD_TIMERS];
-
devcb_write_line m_irq_handler;
- cpu_device *m_maincpu;
- spu_device *m_spu;
+ required_device<cpu_device> m_maincpu;
+ required_device<spu_device> m_spu;
};
// device type definition