summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-07-30 18:35:47 +0200
committer mooglyguy <therealmogminer@gmail.com>2018-07-30 18:36:34 +0200
commit1a899d987f40730c839f8adf719d18a0789062e9 (patch)
tree03dd9b6efabe5a4fa33c83432d0c5847e5c9bfcd
parentef33cc041dbefae55c1b947f189f152086aaa80c (diff)
-abcbus/hdc, abcbus/lux21056, abcbus/lux4105, zorro/a590:, cbmiec/cmdhd, econet/e01, ieee488/d9060, video/huc622, x68k_scsiext:
device_add_mconfig modernization. [Ryan Holtz] -amiga_dmac: Replaced old devcb with devcb3. [Ryan Holtz] -mc6854, ataintf, mb89352, mc6854, wd33c93: Added devcb3 support. [Ryan Holtz] -8042kbdc, i8255, idectrl, intelfsh, mb89352, ram, wd33c93, volt_reg: Default clocks to 0 (nw) -bebox, indy_indigo2: machine_config modernization. [Ryan Holtz]
-rw-r--r--src/devices/bus/abcbus/hdc.cpp19
-rw-r--r--src/devices/bus/abcbus/hdc.h2
-rw-r--r--src/devices/bus/abcbus/lux21056.cpp62
-rw-r--r--src/devices/bus/abcbus/lux21056.h2
-rw-r--r--src/devices/bus/abcbus/lux4105.cpp34
-rw-r--r--src/devices/bus/amiga/zorro/a590.cpp27
-rw-r--r--src/devices/bus/cbmiec/cmdhd.cpp27
-rw-r--r--src/devices/bus/cbmiec/cmdhd.h4
-rw-r--r--src/devices/bus/econet/e01.cpp118
-rw-r--r--src/devices/bus/econet/e01.h3
-rw-r--r--src/devices/bus/ieee488/d9060.cpp113
-rw-r--r--src/devices/bus/ieee488/d9060.h8
-rw-r--r--src/devices/bus/lpci/pci.h2
-rw-r--r--src/devices/bus/scsi/scsi.cpp50
-rw-r--r--src/devices/bus/scsi/scsi.h12
-rw-r--r--src/devices/bus/x68k/x68k_scsiext.cpp27
-rw-r--r--src/devices/bus/x68k/x68k_scsiext.h1
-rw-r--r--src/devices/machine/53c810.h20
-rw-r--r--src/devices/machine/8042kbdc.h2
-rw-r--r--src/devices/machine/ataintf.cpp34
-rw-r--r--src/devices/machine/ataintf.h26
-rw-r--r--src/devices/machine/dmac.h44
-rw-r--r--src/devices/machine/i8255.h2
-rw-r--r--src/devices/machine/idectrl.cpp1
-rw-r--r--src/devices/machine/idectrl.h2
-rw-r--r--src/devices/machine/intelfsh.h124
-rw-r--r--src/devices/machine/mb89352.h4
-rw-r--r--src/devices/machine/mc6854.h6
-rw-r--r--src/devices/machine/ram.h2
-rw-r--r--src/devices/machine/wd33c93.h6
-rw-r--r--src/devices/sound/volt_reg.h5
-rw-r--r--src/devices/video/huc6272.cpp45
-rw-r--r--src/mame/drivers/amiga.cpp12
-rw-r--r--src/mame/drivers/bbc.cpp34
-rw-r--r--src/mame/drivers/bebox.cpp231
-rw-r--r--src/mame/drivers/indy_indigo2.cpp76
-rw-r--r--src/mame/includes/bebox.h29
-rw-r--r--src/mame/machine/bebox.cpp44
-rw-r--r--src/mame/machine/hal2.h9
-rw-r--r--src/mame/machine/hpc3.h14
-rw-r--r--src/mame/machine/ioc2.cpp18
-rw-r--r--src/mame/machine/ioc2.h8
-rw-r--r--src/mame/machine/sgi.h5
-rw-r--r--src/mame/video/newport.h7
44 files changed, 719 insertions, 602 deletions
diff --git a/src/devices/bus/abcbus/hdc.cpp b/src/devices/bus/abcbus/hdc.cpp
index ae2339627a0..2febc491d79 100644
--- a/src/devices/bus/abcbus/hdc.cpp
+++ b/src/devices/bus/abcbus/hdc.cpp
@@ -83,15 +83,16 @@ static const z80_daisy_config daisy_chain[] =
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(abc_hdc_device::device_add_mconfig)
- MCFG_DEVICE_ADD(Z80_TAG, Z80, 4000000)
- MCFG_DEVICE_PROGRAM_MAP(abc_hdc_mem)
- MCFG_DEVICE_IO_MAP(abc_hdc_io)
- MCFG_Z80_DAISY_CHAIN(daisy_chain)
-
- MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0)
- MCFG_SCSIDEV_ADD(SASIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0)
-MACHINE_CONFIG_END
+void abc_hdc_device::device_add_mconfig(machine_config &config)
+{
+ Z80(config, m_maincpu, 4000000);
+ m_maincpu->set_memory_map(&abc_hdc_device::abc_hdc_mem);
+ m_maincpu->set_io_map(&abc_hdc_device::abc_hdc_io);
+ m_maincpu->set_daisy_config(daisy_chain);
+
+ scsi_port_device &scsi(SCSI_PORT(config, SASIBUS_TAG));
+ scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+}
//**************************************************************************
diff --git a/src/devices/bus/abcbus/hdc.h b/src/devices/bus/abcbus/hdc.h
index 2f082286fa4..075caad3778 100644
--- a/src/devices/bus/abcbus/hdc.h
+++ b/src/devices/bus/abcbus/hdc.h
@@ -44,7 +44,7 @@ protected:
virtual void abcbus_cs(uint8_t data) override;
private:
- required_device<cpu_device> m_maincpu;
+ required_device<z80_device> m_maincpu;
void abc_hdc_io(address_map &map);
void abc_hdc_mem(address_map &map);
diff --git a/src/devices/bus/abcbus/lux21056.cpp b/src/devices/bus/abcbus/lux21056.cpp
index 8ed2edcd3a2..090d14b47c5 100644
--- a/src/devices/bus/abcbus/lux21056.cpp
+++ b/src/devices/bus/abcbus/lux21056.cpp
@@ -247,32 +247,42 @@ WRITE_LINE_MEMBER( luxor_55_21056_device::write_sasi_msg )
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(luxor_55_21056_device::device_add_mconfig)
- MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(8'000'000)/2)
- MCFG_DEVICE_PROGRAM_MAP(luxor_55_21056_mem)
- MCFG_DEVICE_IO_MAP(luxor_55_21056_io)
- MCFG_Z80_DAISY_CHAIN(daisy_chain)
-
- MCFG_DEVICE_ADD(Z80DMA_TAG, Z80DMA, XTAL(8'000'000)/2)
- MCFG_Z80DMA_OUT_BUSREQ_CB(INPUTLINE(Z80_TAG, INPUT_LINE_HALT))
- MCFG_Z80DMA_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0))
- MCFG_Z80DMA_IN_MREQ_CB(READ8(*this, luxor_55_21056_device, memory_read_byte))
- MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(*this, luxor_55_21056_device, memory_write_byte))
- MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, luxor_55_21056_device, io_read_byte))
- MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, luxor_55_21056_device, io_write_byte))
-
- MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0)
- MCFG_SCSI_DATA_INPUT_BUFFER("sasi_data_in")
- MCFG_SCSI_REQ_HANDLER(WRITELINE(*this, luxor_55_21056_device, write_sasi_req))
- MCFG_SCSI_IO_HANDLER(WRITELINE(*this, luxor_55_21056_device, write_sasi_io))
- MCFG_SCSI_CD_HANDLER(WRITELINE(*this, luxor_55_21056_device, write_sasi_cd))
- MCFG_SCSI_MSG_HANDLER(WRITELINE(*this, luxor_55_21056_device, write_sasi_msg))
- MCFG_SCSI_BSY_HANDLER(WRITELINE(*this, luxor_55_21056_device, write_sasi_bsy))
- MCFG_SCSIDEV_ADD(SASIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", S1410, SCSI_ID_0)
-
- MCFG_SCSI_OUTPUT_LATCH_ADD("sasi_data_out", SASIBUS_TAG)
- MCFG_DEVICE_ADD("sasi_data_in", INPUT_BUFFER, 0)
-MACHINE_CONFIG_END
+void luxor_55_21056_device::device_add_mconfig(machine_config &config)
+{
+ Z80(config, m_maincpu, XTAL(8'000'000)/2);
+ m_maincpu->set_memory_map(&luxor_55_21056_device::luxor_55_21056_mem);
+ m_maincpu->set_io_map(&luxor_55_21056_device::luxor_55_21056_io);
+ m_maincpu->set_daisy_config(daisy_chain);
+
+ Z80DMA(config, m_dma, XTAL(8'000'000)/2);
+ m_dma->out_busreq_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
+ m_dma->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
+ m_dma->in_mreq_callback().set(FUNC(luxor_55_21056_device::memory_read_byte));
+ m_dma->out_mreq_callback().set(FUNC(luxor_55_21056_device::memory_write_byte));
+ m_dma->in_iorq_callback().set(FUNC(luxor_55_21056_device::io_read_byte));
+ m_dma->out_iorq_callback().set(FUNC(luxor_55_21056_device::io_write_byte));
+
+ SCSI_PORT(config, m_sasibus);
+ m_sasibus->set_data_input_buffer(m_sasi_data_in);
+ m_sasibus->req_handler().set(FUNC(luxor_55_21056_device::write_sasi_req));
+ m_sasibus->io_handler().set(FUNC(luxor_55_21056_device::write_sasi_io));
+ m_sasibus->cd_handler().set(FUNC(luxor_55_21056_device::write_sasi_cd));
+ m_sasibus->msg_handler().set(FUNC(luxor_55_21056_device::write_sasi_msg));
+ m_sasibus->bsy_handler().set(FUNC(luxor_55_21056_device::write_sasi_bsy));
+ m_sasibus->set_slot_device(1, "harddisk", S1410, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+
+ OUTPUT_LATCH(config, m_sasi_data_out);
+ m_sasi_data_out->bit_handler<0>().set(m_sasibus, FUNC(scsi_port_device::write_data0));
+ m_sasi_data_out->bit_handler<1>().set(m_sasibus, FUNC(scsi_port_device::write_data1));
+ m_sasi_data_out->bit_handler<2>().set(m_sasibus, FUNC(scsi_port_device::write_data2));
+ m_sasi_data_out->bit_handler<3>().set(m_sasibus, FUNC(scsi_port_device::write_data3));
+ m_sasi_data_out->bit_handler<4>().set(m_sasibus, FUNC(scsi_port_device::write_data4));
+ m_sasi_data_out->bit_handler<5>().set(m_sasibus, FUNC(scsi_port_device::write_data5));
+ m_sasi_data_out->bit_handler<6>().set(m_sasibus, FUNC(scsi_port_device::write_data6));
+ m_sasi_data_out->bit_handler<7>().set(m_sasibus, FUNC(scsi_port_device::write_data7));
+
+ INPUT_BUFFER(config, m_sasi_data_in);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/abcbus/lux21056.h b/src/devices/bus/abcbus/lux21056.h
index 8961f8864a6..7103fa5ba9c 100644
--- a/src/devices/bus/abcbus/lux21056.h
+++ b/src/devices/bus/abcbus/lux21056.h
@@ -80,7 +80,7 @@ private:
void luxor_55_21056_io(address_map &map);
void luxor_55_21056_mem(address_map &map);
- required_device<cpu_device> m_maincpu;
+ required_device<z80_device> m_maincpu;
required_device<z80dma_device> m_dma;
required_device<scsi_port_device> m_sasibus;
required_device<output_latch_device> m_sasi_data_out;
diff --git a/src/devices/bus/abcbus/lux4105.cpp b/src/devices/bus/abcbus/lux4105.cpp
index f8b9e571a7c..1e89799a302 100644
--- a/src/devices/bus/abcbus/lux4105.cpp
+++ b/src/devices/bus/abcbus/lux4105.cpp
@@ -72,18 +72,28 @@ WRITE_LINE_MEMBER( luxor_4105_device::write_sasi_cd )
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(luxor_4105_device::device_add_mconfig)
- MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0)
- MCFG_SCSI_DATA_INPUT_BUFFER("sasi_data_in")
- MCFG_SCSI_BSY_HANDLER(WRITELINE(*this, luxor_4105_device, write_sasi_bsy))
- MCFG_SCSI_REQ_HANDLER(WRITELINE(*this, luxor_4105_device, write_sasi_req))
- MCFG_SCSI_CD_HANDLER(WRITELINE(*this, luxor_4105_device, write_sasi_cd))
- MCFG_SCSI_IO_HANDLER(WRITELINE(*this, luxor_4105_device, write_sasi_io))
- MCFG_SCSIDEV_ADD(SASIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", S1410, SCSI_ID_0)
-
- MCFG_SCSI_OUTPUT_LATCH_ADD("sasi_data_out", SASIBUS_TAG)
- MCFG_DEVICE_ADD("sasi_data_in", INPUT_BUFFER, 0)
-MACHINE_CONFIG_END
+void luxor_4105_device::device_add_mconfig(machine_config &config)
+{
+ SCSI_PORT(config, m_sasibus);
+ m_sasibus->set_data_input_buffer(m_sasi_data_in);
+ m_sasibus->bsy_handler().set(FUNC(luxor_4105_device::write_sasi_bsy));
+ m_sasibus->req_handler().set(FUNC(luxor_4105_device::write_sasi_req));
+ m_sasibus->cd_handler().set(FUNC(luxor_4105_device::write_sasi_cd));
+ m_sasibus->io_handler().set(FUNC(luxor_4105_device::write_sasi_io));
+ m_sasibus->set_slot_device(1, "harddisk", S1410, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+
+ OUTPUT_LATCH(config, m_sasi_data_out);
+ m_sasi_data_out->bit_handler<0>().set(m_sasibus, FUNC(scsi_port_device::write_data0));
+ m_sasi_data_out->bit_handler<1>().set(m_sasibus, FUNC(scsi_port_device::write_data1));
+ m_sasi_data_out->bit_handler<2>().set(m_sasibus, FUNC(scsi_port_device::write_data2));
+ m_sasi_data_out->bit_handler<3>().set(m_sasibus, FUNC(scsi_port_device::write_data3));
+ m_sasi_data_out->bit_handler<4>().set(m_sasibus, FUNC(scsi_port_device::write_data4));
+ m_sasi_data_out->bit_handler<5>().set(m_sasibus, FUNC(scsi_port_device::write_data5));
+ m_sasi_data_out->bit_handler<6>().set(m_sasibus, FUNC(scsi_port_device::write_data6));
+ m_sasi_data_out->bit_handler<7>().set(m_sasibus, FUNC(scsi_port_device::write_data7));
+
+ INPUT_BUFFER(config, m_sasi_data_in);
+}
//-------------------------------------------------
diff --git a/src/devices/bus/amiga/zorro/a590.cpp b/src/devices/bus/amiga/zorro/a590.cpp
index bc651941b0e..32328b2f944 100644
--- a/src/devices/bus/amiga/zorro/a590.cpp
+++ b/src/devices/bus/amiga/zorro/a590.cpp
@@ -114,18 +114,21 @@ ioport_constructor a2091_device::device_input_ports() const
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(dmac_hdc_device::device_add_mconfig)
- MCFG_DMAC_ADD("dmac", 0)
- MCFG_DMAC_SCSI_READ_HANDLER(READ8(*this, dmac_hdc_device, dmac_scsi_r))
- MCFG_DMAC_SCSI_WRITE_HANDLER(WRITE8(*this, dmac_hdc_device, dmac_scsi_w))
- MCFG_DMAC_INT_HANDLER(WRITELINE(*this, dmac_hdc_device, dmac_int_w))
- MCFG_DMAC_CFGOUT_HANDLER(WRITELINE(*this, dmac_hdc_device, dmac_cfgout_w))
- MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_1)
- MCFG_DEVICE_ADD("wd33c93", WD33C93, 0)
- MCFG_LEGACY_SCSI_PORT("scsi")
- MCFG_WD33C93_IRQ_CB(WRITELINE(*this, dmac_hdc_device, scsi_irq_w))
-MACHINE_CONFIG_END
+void dmac_hdc_device::device_add_mconfig(machine_config &config)
+{
+ amiga_dmac_device &dmac(AMIGA_DMAC(config, "dmac", 0));
+ dmac.scsi_read_handler().set(FUNC(dmac_hdc_device::dmac_scsi_r));
+ dmac.scsi_write_handler().set(FUNC(dmac_hdc_device::dmac_scsi_w));
+ dmac.int_handler().set(FUNC(dmac_hdc_device::dmac_int_w));
+ dmac.cfgout_handler().set(FUNC(dmac_hdc_device::dmac_cfgout_w));
+
+ scsi_port_device &scsi(SCSI_PORT(config, "scsi"));
+ scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
+
+ wd33c93_device &scsi_ctrl(WD33C93(config, "wd33c93"));
+ scsi_ctrl.set_scsi_port("scsi");
+ scsi_ctrl.irq_cb().set(FUNC(dmac_hdc_device::scsi_irq_w));
+}
//-------------------------------------------------
diff --git a/src/devices/bus/cbmiec/cmdhd.cpp b/src/devices/bus/cbmiec/cmdhd.cpp
index f46d24c44a4..13d8004445b 100644
--- a/src/devices/bus/cbmiec/cmdhd.cpp
+++ b/src/devices/bus/cbmiec/cmdhd.cpp
@@ -57,11 +57,7 @@ const tiny_rom_entry *cmd_hd_device::device_rom_region() const
}
-//-------------------------------------------------
-// ADDRESS_MAP( cmd_hd_mem )
-//-------------------------------------------------
-
-void cmd_hd_device::cmd_hd_mem(address_map &map)
+void cmd_hd_device::mem_map(address_map &map)
{
map(0x0000, 0x7fff).ram();
map(0x8000, 0xffff).rom().region(M6502_TAG, 0);
@@ -77,18 +73,19 @@ void cmd_hd_device::cmd_hd_mem(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(cmd_hd_device::device_add_mconfig)
- MCFG_DEVICE_ADD(M6502_TAG, M6502, 2000000)
- MCFG_DEVICE_PROGRAM_MAP(cmd_hd_mem)
+void cmd_hd_device::device_add_mconfig(machine_config &config)
+{
+ M6502(config, m_maincpu, 2000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cmd_hd_device::mem_map);
- MCFG_DEVICE_ADD(M6522_1_TAG, VIA6522, 2000000)
- MCFG_DEVICE_ADD(M6522_2_TAG, VIA6522, 2000000)
- MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0)
- MCFG_DEVICE_ADD(RTC72421A_TAG, RTC72421, XTAL(32'768))
+ VIA6522(config, M6522_1_TAG, 2000000);
+ VIA6522(config, M6522_2_TAG, 2000000);
+ I8255A(config, I8255A_TAG, 0);
+ RTC72421(config, RTC72421A_TAG, XTAL(32'768));
- MCFG_DEVICE_ADD(SCSIBUS_TAG, SCSI_PORT, 0)
- MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0)
-MACHINE_CONFIG_END
+ SCSI_PORT(config, m_scsibus);
+ m_scsibus->set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+}
diff --git a/src/devices/bus/cbmiec/cmdhd.h b/src/devices/bus/cbmiec/cmdhd.h
index 9749f81f547..2cdeada48df 100644
--- a/src/devices/bus/cbmiec/cmdhd.h
+++ b/src/devices/bus/cbmiec/cmdhd.h
@@ -56,12 +56,12 @@ protected:
void cbm_iec_reset(int state) override;
private:
- required_device<cpu_device> m_maincpu;
+ required_device<m6502_device> m_maincpu;
required_device<scsi_port_device> m_scsibus;
DECLARE_WRITE8_MEMBER( led_w );
- void cmd_hd_mem(address_map &map);
+ void mem_map(address_map &map);
};
diff --git a/src/devices/bus/econet/e01.cpp b/src/devices/bus/econet/e01.cpp
index c50325bdc1b..ed897500b54 100644
--- a/src/devices/bus/econet/e01.cpp
+++ b/src/devices/bus/econet/e01.cpp
@@ -173,11 +173,6 @@ FLOPPY_FORMATS_MEMBER( econet_e01_device::floppy_formats_afs )
FLOPPY_AFS_FORMAT
FLOPPY_FORMATS_END0
-static void e01_floppies(device_slot_interface &device)
-{
- device.option_add("35dd", FLOPPY_35_DD); // NEC FD1036 A
-}
-
WRITE_LINE_MEMBER( econet_e01_device::fdc_irq_w )
{
m_fdc_irq = state;
@@ -243,55 +238,81 @@ void econet_e01_device::e01_mem(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(econet_e01_device::device_add_mconfig)
+void econet_e01_device::device_add_mconfig(machine_config &config)
+{
// basic machine hardware
- MCFG_DEVICE_ADD(R65C102_TAG, M65C02, XTAL(8'000'000)/4) // Rockwell R65C102P3
- MCFG_DEVICE_PROGRAM_MAP(e01_mem)
+ M65C02(config, m_maincpu, XTAL(8'000'000)/4); // Rockwell R65C102P3
+ m_maincpu->set_addrmap(AS_PROGRAM, &econet_e01_device::e01_mem);
- MCFG_DEVICE_ADD(HD146818_TAG, MC146818, 32.768_kHz_XTAL)
- MCFG_MC146818_IRQ_HANDLER(WRITELINE(*this, econet_e01_device, rtc_irq_w))
+ MC146818(config, m_rtc, 32.768_kHz_XTAL);
+ m_rtc->irq_callback().set(FUNC(econet_e01_device::rtc_irq_w));
// devices
- MCFG_DEVICE_ADD(R6522_TAG, VIA6522, 8_MHz_XTAL / 4)
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8("cent_data_out", output_latch_device, bus_w))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, econet_e01_device, via_irq_w))
-
- MCFG_DEVICE_ADD(MC6854_TAG, MC6854, 0)
- MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, econet_e01_device, adlc_irq_w))
- MCFG_MC6854_OUT_TXD_CB(WRITELINE(*this, econet_e01_device, econet_data_w))
-
- MCFG_DEVICE_ADD(WD2793_TAG, WD2793, 8_MHz_XTAL / 4)
- MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, econet_e01_device, fdc_irq_w))
- MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(*this, econet_e01_device, fdc_drq_w))
- MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", e01_floppies, "35dd", floppy_formats_afs)
- MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", e01_floppies, "35dd", floppy_formats_afs)
- MCFG_SOFTWARE_LIST_ADD("flop_ls_e01", "e01_flop")
-
- MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(R6522_TAG, via6522_device, write_ca1))
-
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
-
- MCFG_DEVICE_ADD(SCSIBUS_TAG, SCSI_PORT, 0)
- MCFG_SCSI_DATA_INPUT_BUFFER("scsi_data_in")
- MCFG_SCSI_MSG_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit0))
- MCFG_SCSI_BSY_HANDLER(WRITELINE(*this, econet_e01_device, scsi_bsy_w)) // bit1
+ via6522_device &via(VIA6522(config, R6522_TAG, 8_MHz_XTAL / 4));
+ via.writepa_handler().set("cent_data_out", FUNC(output_latch_device::bus_w));
+ via.irq_handler().set(FUNC(econet_e01_device::via_irq_w));
+
+ MC6854(config, m_adlc, 0);
+ m_adlc->out_irq_cb().set(FUNC(econet_e01_device::adlc_irq_w));
+ m_adlc->out_txd_cb().set(FUNC(econet_e01_device::econet_data_w));
+
+ WD2793(config, m_fdc, 8_MHz_XTAL / 4);
+ m_fdc->intrq_wr_callback().set(FUNC(econet_e01_device::fdc_irq_w));
+ m_fdc->drq_wr_callback().set(FUNC(econet_e01_device::fdc_drq_w));
+
+ for (int i = 0; i < 2; i++)
+ {
+ FLOPPY_CONNECTOR(config, m_floppy[i]);
+ m_floppy[i]->option_add("35dd", FLOPPY_35_DD);
+ m_floppy[i]->set_default_option("35dd");
+ m_floppy[i]->set_formats(floppy_formats_afs);
+ }
+
+ software_list_device &softlist(SOFTWARE_LIST(config, "flop_ls_e01"));
+ softlist.set_type("e01_flop", SOFTWARE_LIST_ORIGINAL_SYSTEM);
+
+ CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ m_centronics->ack_handler().set(R6522_TAG, FUNC(via6522_device::write_ca1));
+
+ output_latch_device &cent_data_out(OUTPUT_LATCH(config, "cent_data_out"));
+ cent_data_out.bit_handler<0>().set(m_centronics, FUNC(centronics_device::write_data0));
+ cent_data_out.bit_handler<1>().set(m_centronics, FUNC(centronics_device::write_data1));
+ cent_data_out.bit_handler<2>().set(m_centronics, FUNC(centronics_device::write_data2));
+ cent_data_out.bit_handler<3>().set(m_centronics, FUNC(centronics_device::write_data3));
+ cent_data_out.bit_handler<4>().set(m_centronics, FUNC(centronics_device::write_data4));
+ cent_data_out.bit_handler<5>().set(m_centronics, FUNC(centronics_device::write_data5));
+ cent_data_out.bit_handler<6>().set(m_centronics, FUNC(centronics_device::write_data6));
+ cent_data_out.bit_handler<7>().set(m_centronics, FUNC(centronics_device::write_data7));
+
+ SCSI_PORT(config, m_scsibus);
+ m_scsibus->set_data_input_buffer(m_scsi_data_in);
+ m_scsibus->msg_handler().set(m_scsi_ctrl_in, FUNC(input_buffer_device::write_bit0));
+ m_scsibus->bsy_handler().set(FUNC(econet_e01_device::scsi_bsy_w)); // bit1
// bit 2 0
// bit 3 0
// bit 4 NIRQ
- MCFG_SCSI_REQ_HANDLER(WRITELINE(*this, econet_e01_device, scsi_req_w)) // bit5
- MCFG_SCSI_IO_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit6))
- MCFG_SCSI_CD_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit7))
- MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0)
-
- MCFG_SCSI_OUTPUT_LATCH_ADD("scsi_data_out", SCSIBUS_TAG)
- MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0)
- MCFG_DEVICE_ADD("scsi_ctrl_in", INPUT_BUFFER, 0)
+ m_scsibus->req_handler().set(FUNC(econet_e01_device::scsi_req_w)); // bit5
+ m_scsibus->io_handler().set(m_scsi_ctrl_in, FUNC(input_buffer_device::write_bit6));
+ m_scsibus->cd_handler().set(m_scsi_ctrl_in, FUNC(input_buffer_device::write_bit7));
+ m_scsibus->set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+
+ OUTPUT_LATCH(config, m_scsi_data_out);
+ m_scsi_data_out->bit_handler<0>().set(m_scsibus, FUNC(scsi_port_device::write_data0));
+ m_scsi_data_out->bit_handler<1>().set(m_scsibus, FUNC(scsi_port_device::write_data1));
+ m_scsi_data_out->bit_handler<2>().set(m_scsibus, FUNC(scsi_port_device::write_data2));
+ m_scsi_data_out->bit_handler<3>().set(m_scsibus, FUNC(scsi_port_device::write_data3));
+ m_scsi_data_out->bit_handler<4>().set(m_scsibus, FUNC(scsi_port_device::write_data4));
+ m_scsi_data_out->bit_handler<5>().set(m_scsibus, FUNC(scsi_port_device::write_data5));
+ m_scsi_data_out->bit_handler<6>().set(m_scsibus, FUNC(scsi_port_device::write_data6));
+ m_scsi_data_out->bit_handler<7>().set(m_scsibus, FUNC(scsi_port_device::write_data7));
+
+ INPUT_BUFFER(config, m_scsi_data_in);
+ INPUT_BUFFER(config, m_scsi_ctrl_in);
// internal ram
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("64K")
-MACHINE_CONFIG_END
+ RAM(config, m_ram);
+ m_ram->set_default_size("64K");
+}
//-------------------------------------------------
@@ -390,8 +411,7 @@ econet_e01_device::econet_e01_device(const machine_config &mconfig, device_type
, m_scsi_data_out(*this, "scsi_data_out")
, m_scsi_data_in(*this, "scsi_data_in")
, m_scsi_ctrl_in(*this, "scsi_ctrl_in")
- , m_floppy0(*this, WD2793_TAG":0")
- , m_floppy1(*this, WD2793_TAG":1")
+ , m_floppy(*this, WD2793_TAG":%u", 0U)
, m_rom(*this, R65C102_TAG)
, m_centronics(*this, CENTRONICS_TAG)
, m_adlc_ie(0)
@@ -521,8 +541,8 @@ WRITE8_MEMBER( econet_e01_device::floppy_w )
// floppy select
floppy_image_device *floppy = nullptr;
- if (!BIT(data, 0)) floppy = m_floppy0->get_device();
- if (!BIT(data, 1)) floppy = m_floppy1->get_device();
+ if (!BIT(data, 0)) floppy = m_floppy[0]->get_device();
+ if (!BIT(data, 1)) floppy = m_floppy[1]->get_device();
m_fdc->set_floppy(floppy);
diff --git a/src/devices/bus/econet/e01.h b/src/devices/bus/econet/e01.h
index 883664da288..ef74396cd15 100644
--- a/src/devices/bus/econet/e01.h
+++ b/src/devices/bus/econet/e01.h
@@ -92,8 +92,7 @@ private:
required_device<output_latch_device> m_scsi_data_out;
required_device<input_buffer_device> m_scsi_data_in;
required_device<input_buffer_device> m_scsi_ctrl_in;
- required_device<floppy_connector> m_floppy0;
- required_device<floppy_connector> m_floppy1;
+ required_device_array<floppy_connector, 2> m_floppy;
required_memory_region m_rom;
required_device<centronics_device> m_centronics;
diff --git a/src/devices/bus/ieee488/d9060.cpp b/src/devices/bus/ieee488/d9060.cpp
index c94a89551b5..061037ced8a 100644
--- a/src/devices/bus/ieee488/d9060.cpp
+++ b/src/devices/bus/ieee488/d9060.cpp
@@ -105,16 +105,12 @@ const tiny_rom_entry *d9060_device_base::device_rom_region() const
}
-//-------------------------------------------------
-// ADDRESS_MAP( d9060_main_mem )
-//-------------------------------------------------
-
-void d9060_device_base::d9060_main_mem(address_map &map)
+void d9060_device_base::main_mem(address_map &map)
{
- map(0x0000, 0x007f).mirror(0x0100).m(M6532_0_TAG, FUNC(mos6532_new_device::ram_map));
- map(0x0080, 0x00ff).mirror(0x0100).m(M6532_1_TAG, FUNC(mos6532_new_device::ram_map));
- map(0x0200, 0x021f).mirror(0x0d60).m(M6532_0_TAG, FUNC(mos6532_new_device::io_map));
- map(0x0280, 0x029f).mirror(0x0d60).m(M6532_1_TAG, FUNC(mos6532_new_device::io_map));
+ map(0x0000, 0x007f).mirror(0x0100).m(m_riot0, FUNC(mos6532_new_device::ram_map));
+ map(0x0080, 0x00ff).mirror(0x0100).m(m_riot1, FUNC(mos6532_new_device::ram_map));
+ map(0x0200, 0x021f).mirror(0x0d60).m(m_riot0, FUNC(mos6532_new_device::io_map));
+ map(0x0280, 0x029f).mirror(0x0d60).m(m_riot1, FUNC(mos6532_new_device::io_map));
map(0x1000, 0x13ff).mirror(0x0c00).ram().share("share1");
map(0x2000, 0x23ff).mirror(0x0c00).ram().share("share2");
map(0x3000, 0x33ff).mirror(0x0c00).ram().share("share3");
@@ -123,15 +119,11 @@ void d9060_device_base::d9060_main_mem(address_map &map)
}
-//-------------------------------------------------
-// ADDRESS_MAP( d9060_hdc_mem )
-//-------------------------------------------------
-
-void d9060_device_base::d9060_hdc_mem(address_map &map)
+void d9060_device_base::hdc_mem(address_map &map)
{
map.global_mask(0x1fff);
map(0x0000, 0x007f).mirror(0x300).ram();
- map(0x0080, 0x008f).mirror(0x370).rw(M6522_TAG, FUNC(via6522_device::read), FUNC(via6522_device::write));
+ map(0x0080, 0x008f).mirror(0x370).rw(m_via, FUNC(via6522_device::read), FUNC(via6522_device::write));
map(0x0400, 0x07ff).ram().share("share1");
map(0x0800, 0x0bff).ram().share("share2");
map(0x0c00, 0x0fff).ram().share("share3");
@@ -370,52 +362,61 @@ WRITE8_MEMBER( d9060_device_base::scsi_data_w )
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(d9060_device_base::device_add_mconfig)
+void d9060_device_base::device_add_mconfig(machine_config &config)
+{
// DOS
- MCFG_DEVICE_ADD(M6502_DOS_TAG, M6502, XTAL(4'000'000)/4)
- MCFG_DEVICE_PROGRAM_MAP(d9060_main_mem)
+ M6502(config, m_maincpu, XTAL(4'000'000)/4);
+ m_maincpu->set_addrmap(AS_PROGRAM, &d9060_device::main_mem);
- MCFG_DEVICE_ADD(M6532_0_TAG, MOS6532_NEW, XTAL(4'000'000)/4)
- MCFG_MOS6530n_IN_PA_CB(READ8(*this, d9060_device_base, dio_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(*this, d9060_device_base, dio_w))
+ MOS6532_NEW(config, m_riot0, XTAL(4'000'000)/4);
+ m_riot0->pa_rd_callback().set(FUNC(d9060_device_base::dio_r));
+ m_riot0->pb_wr_callback().set(FUNC(d9060_device_base::dio_w));
- MCFG_DEVICE_ADD(M6532_1_TAG, MOS6532_NEW, XTAL(4'000'000)/4)
- MCFG_MOS6530n_IN_PA_CB(READ8(*this, d9060_device_base, riot1_pa_r))
- MCFG_MOS6530n_OUT_PA_CB(WRITE8(*this, d9060_device_base, riot1_pa_w))
- MCFG_MOS6530n_IN_PB_CB(READ8(*this, d9060_device_base, riot1_pb_r))
- MCFG_MOS6530n_OUT_PB_CB(WRITE8(*this, d9060_device_base, riot1_pb_w))
- MCFG_MOS6530n_IRQ_CB(INPUTLINE(M6502_DOS_TAG, INPUT_LINE_IRQ0))
+ MOS6532_NEW(config, m_riot1, XTAL(4'000'000)/4);
+ m_riot1->pa_rd_callback().set(FUNC(d9060_device_base::riot1_pa_r));
+ m_riot1->pa_wr_callback().set(FUNC(d9060_device_base::riot1_pa_w));
+ m_riot1->pb_rd_callback().set(FUNC(d9060_device_base::riot1_pb_r));
+ m_riot1->pb_wr_callback().set(FUNC(d9060_device_base::riot1_pb_w));
+ m_riot1->irq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
// controller
- MCFG_DEVICE_ADD(M6502_HDC_TAG, M6502, XTAL(4'000'000)/4)
- MCFG_DEVICE_PROGRAM_MAP(d9060_hdc_mem)
-
- MCFG_DEVICE_ADD(M6522_TAG, VIA6522, XTAL(4'000'000)/4)
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, d9060_device_base, scsi_data_w))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, d9060_device_base, via_pb_w))
- MCFG_VIA6522_CA2_HANDLER(WRITELINE(*this, d9060_device_base, ack_w))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, d9060_device_base, enable_w))
- MCFG_VIA6522_IRQ_HANDLER(INPUTLINE(M6502_HDC_TAG, M6502_IRQ_LINE))
-
- MCFG_DEVICE_ADD(SASIBUS_TAG, SCSI_PORT, 0)
- MCFG_SCSI_REQ_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_ca1))
- MCFG_SCSI_CD_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pb2))
- MCFG_SCSI_BSY_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pb3))
- MCFG_SCSI_IO_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pb6))
- MCFG_SCSI_MSG_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pb7))
- MCFG_SCSI_DATA0_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa0))
- MCFG_SCSI_DATA1_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa1))
- MCFG_SCSI_DATA2_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa2))
- MCFG_SCSI_DATA3_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa3))
- MCFG_SCSI_DATA4_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa4))
- MCFG_SCSI_DATA5_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa5))
- MCFG_SCSI_DATA6_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa6))
- MCFG_SCSI_DATA7_HANDLER(WRITELINE(M6522_TAG, via6522_device, write_pa7))
-
- MCFG_SCSI_OUTPUT_LATCH_ADD("sasi_data_out", SASIBUS_TAG)
-
- MCFG_SCSIDEV_ADD(SASIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", D9060HD, SCSI_ID_0)
-MACHINE_CONFIG_END
+ M6502(config, m_hdccpu, XTAL(4'000'000)/4);
+ m_hdccpu->set_addrmap(AS_PROGRAM, &d9060_device::hdc_mem);
+
+ VIA6522(config, m_via, XTAL(4'000'000)/4);
+ m_via->writepa_handler().set(FUNC(d9060_device_base::scsi_data_w));
+ m_via->writepb_handler().set(FUNC(d9060_device_base::via_pb_w));
+ m_via->ca2_handler().set(FUNC(d9060_device_base::ack_w));
+ m_via->cb2_handler().set(FUNC(d9060_device_base::enable_w));
+ m_via->irq_handler().set_inputline(m_hdccpu, M6502_IRQ_LINE);
+
+ SCSI_PORT(config, m_sasibus);
+ m_sasibus->req_handler().set(M6522_TAG, FUNC(via6522_device::write_ca1));
+ m_sasibus->cd_handler().set(M6522_TAG, FUNC(via6522_device::write_pb2));
+ m_sasibus->bsy_handler().set(M6522_TAG, FUNC(via6522_device::write_pb3));
+ m_sasibus->io_handler().set(M6522_TAG, FUNC(via6522_device::write_pb6));
+ m_sasibus->msg_handler().set(M6522_TAG, FUNC(via6522_device::write_pb7));
+ m_sasibus->data0_handler().set(M6522_TAG, FUNC(via6522_device::write_pa0));
+ m_sasibus->data1_handler().set(M6522_TAG, FUNC(via6522_device::write_pa1));
+ m_sasibus->data2_handler().set(M6522_TAG, FUNC(via6522_device::write_pa2));
+ m_sasibus->data3_handler().set(M6522_TAG, FUNC(via6522_device::write_pa3));
+ m_sasibus->data4_handler().set(M6522_TAG, FUNC(via6522_device::write_pa4));
+ m_sasibus->data5_handler().set(M6522_TAG, FUNC(via6522_device::write_pa5));
+ m_sasibus->data6_handler().set(M6522_TAG, FUNC(via6522_device::write_pa6));
+ m_sasibus->data7_handler().set(M6522_TAG, FUNC(via6522_device::write_pa7));
+
+ OUTPUT_LATCH(config, m_sasi_data_out);
+ m_sasi_data_out->bit_handler<0>().set(m_sasibus, FUNC(scsi_port_device::write_data0));
+ m_sasi_data_out->bit_handler<1>().set(m_sasibus, FUNC(scsi_port_device::write_data1));
+ m_sasi_data_out->bit_handler<2>().set(m_sasibus, FUNC(scsi_port_device::write_data2));
+ m_sasi_data_out->bit_handler<3>().set(m_sasibus, FUNC(scsi_port_device::write_data3));
+ m_sasi_data_out->bit_handler<4>().set(m_sasibus, FUNC(scsi_port_device::write_data4));
+ m_sasi_data_out->bit_handler<5>().set(m_sasibus, FUNC(scsi_port_device::write_data5));
+ m_sasi_data_out->bit_handler<6>().set(m_sasibus, FUNC(scsi_port_device::write_data6));
+ m_sasi_data_out->bit_handler<7>().set(m_sasibus, FUNC(scsi_port_device::write_data7));
+
+ m_sasibus->set_slot_device(1, "harddisk", D9060HD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+}
//-------------------------------------------------
diff --git a/src/devices/bus/ieee488/d9060.h b/src/devices/bus/ieee488/d9060.h
index d08d43ab740..b9d720090f2 100644
--- a/src/devices/bus/ieee488/d9060.h
+++ b/src/devices/bus/ieee488/d9060.h
@@ -65,8 +65,8 @@ private:
DECLARE_WRITE_LINE_MEMBER( enable_w );
DECLARE_WRITE8_MEMBER( scsi_data_w );
- required_device<cpu_device> m_maincpu;
- required_device<cpu_device> m_hdccpu;
+ required_device<m6502_device> m_maincpu;
+ required_device<m6502_device> m_hdccpu;
required_device<mos6532_new_device> m_riot0;
required_device<mos6532_new_device> m_riot1;
required_device<via6522_device> m_via;
@@ -86,8 +86,8 @@ private:
uint8_t m_data;
int m_variant;
- void d9060_hdc_mem(address_map &map);
- void d9060_main_mem(address_map &map);
+ void hdc_mem(address_map &map);
+ void main_mem(address_map &map);
};
diff --git a/src/devices/bus/lpci/pci.h b/src/devices/bus/lpci/pci.h
index aa9721435f8..41258ad226f 100644
--- a/src/devices/bus/lpci/pci.h
+++ b/src/devices/bus/lpci/pci.h
@@ -44,7 +44,7 @@ class pci_connector_device : public device_t,
public device_slot_interface
{
public:
- pci_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ pci_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
virtual ~pci_connector_device();
pci_device_interface *get_device();
diff --git a/src/devices/bus/scsi/scsi.cpp b/src/devices/bus/scsi/scsi.cpp
index 1642ad51408..d11bef77de5 100644
--- a/src/devices/bus/scsi/scsi.cpp
+++ b/src/devices/bus/scsi/scsi.cpp
@@ -23,6 +23,7 @@ scsi_port_device::scsi_port_device(const machine_config &mconfig, const char *ta
m_data5_handler(*this),
m_data6_handler(*this),
m_data7_handler(*this),
+ m_slot(*this, "%u", 1U),
m_device_count(0),
m_bsy_in(0),
m_sel_in(0),
@@ -61,39 +62,15 @@ scsi_port_device::scsi_port_device(const machine_config &mconfig, const char *ta
{
}
-MACHINE_CONFIG_START(scsi_port_device::device_add_mconfig)
- MCFG_DEVICE_ADD( SCSI_PORT_DEVICE1, SCSI_PORT_SLOT, 0 )
- MCFG_DEVICE_ADD( SCSI_PORT_DEVICE2, SCSI_PORT_SLOT, 0 )
- MCFG_DEVICE_ADD( SCSI_PORT_DEVICE3, SCSI_PORT_SLOT, 0 )
- MCFG_DEVICE_ADD( SCSI_PORT_DEVICE4, SCSI_PORT_SLOT, 0 )
- MCFG_DEVICE_ADD( SCSI_PORT_DEVICE5, SCSI_PORT_SLOT, 0 )
- MCFG_DEVICE_ADD( SCSI_PORT_DEVICE6, SCSI_PORT_SLOT, 0 )
- MCFG_DEVICE_ADD( SCSI_PORT_DEVICE7, SCSI_PORT_SLOT, 0 )
-MACHINE_CONFIG_END
-
-void scsi_port_device::device_start()
+void scsi_port_device::device_add_mconfig(machine_config &config)
{
- const char *deviceName[] =
- {
- SCSI_PORT_DEVICE1,
- SCSI_PORT_DEVICE2,
- SCSI_PORT_DEVICE3,
- SCSI_PORT_DEVICE4,
- SCSI_PORT_DEVICE5,
- SCSI_PORT_DEVICE6,
- SCSI_PORT_DEVICE7
- };
-
- m_device_count = 0;
-
for (int i = 0; i < 7; i++)
- {
- scsi_port_slot_device *slot = subdevice<scsi_port_slot_device>(deviceName[i]);
- m_slot[i] = slot;
+ SCSI_PORT_SLOT(config, m_slot[i]);
+}
- if (slot != nullptr)
- m_device_count = i + 1;
- }
+void scsi_port_device::device_start()
+{
+ m_device_count = 8;
m_bsy_handler.resolve_safe();
m_sel_handler.resolve_safe();
@@ -660,6 +637,19 @@ WRITE_LINE_MEMBER( scsi_port_device::write_data7 )
}
}
+scsi_port_slot_device &scsi_port_device::slot(int index)
+{
+ assert(index >= 1 && index <= 7);
+ return *subdevice<scsi_port_slot_device>(m_slot[index-1].finder_tag());
+}
+
+void scsi_port_device::set_slot_device(int index, const char *option, const device_type &type, const input_device_default *id)
+{
+ slot(index).option_add(option, type);
+ slot(index).set_option_device_input_defaults(option, id);
+ slot(index).set_default_option(option);
+}
+
DEFINE_DEVICE_TYPE(SCSI_PORT, scsi_port_device, "scsi", "SCSI Port")
scsi_port_slot_device::scsi_port_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
diff --git a/src/devices/bus/scsi/scsi.h b/src/devices/bus/scsi/scsi.h
index 154b346d6a4..9a403d534fb 100644
--- a/src/devices/bus/scsi/scsi.h
+++ b/src/devices/bus/scsi/scsi.h
@@ -98,6 +98,11 @@ class scsi_port_device : public device_t
public:
// construction/destruction
+ scsi_port_device(const machine_config &mconfig, const char *tag, device_t *owner)
+ : scsi_port_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ }
+
scsi_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_bsy_handler(Object &&cb) { return m_bsy_handler.set_callback(std::forward<Object>(cb)); }
@@ -166,6 +171,9 @@ public:
DECLARE_WRITE_LINE_MEMBER( write_data6 );
DECLARE_WRITE_LINE_MEMBER( write_data7 );
+ scsi_port_slot_device &slot(int index);
+ void set_slot_device(int index, const char *option, const device_type &type, const input_device_default *id);
+
protected:
// device-level overrides
virtual void device_start() override;
@@ -208,7 +216,7 @@ private:
devcb_write_line m_data6_handler;
devcb_write_line m_data7_handler;
- scsi_port_slot_device *m_slot[7];
+ required_device_array<scsi_port_slot_device, 7> m_slot;
int m_device_count;
int m_bsy_in;
@@ -258,7 +266,7 @@ class scsi_port_slot_device : public device_t,
friend class scsi_port_interface;
public:
- scsi_port_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ scsi_port_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
scsi_port_interface *dev() { return m_dev; }
scsi_port_device *port() { return m_port; }
diff --git a/src/devices/bus/x68k/x68k_scsiext.cpp b/src/devices/bus/x68k/x68k_scsiext.cpp
index 1ab4c275153..557d70d3f36 100644
--- a/src/devices/bus/x68k/x68k_scsiext.cpp
+++ b/src/devices/bus/x68k/x68k_scsiext.cpp
@@ -38,25 +38,26 @@ const tiny_rom_entry *x68k_scsiext_device::device_rom_region() const
// device machine config
MACHINE_CONFIG_START(x68k_scsiext_device::device_add_mconfig)
- MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_1)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE3, "harddisk", SCSIHD, SCSI_ID_2)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE4, "harddisk", SCSIHD, SCSI_ID_3)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE5, "harddisk", SCSIHD, SCSI_ID_4)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE6, "harddisk", SCSIHD, SCSI_ID_5)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE7, "harddisk", SCSIHD, SCSI_ID_6)
-
- MCFG_DEVICE_ADD("mb89352", MB89352A, 0)
- MCFG_LEGACY_SCSI_PORT("scsi")
- MCFG_MB89352A_IRQ_CB(WRITELINE(*this, x68k_scsiext_device, irq_w))
- MCFG_MB89352A_DRQ_CB(WRITELINE(*this, x68k_scsiext_device, drq_w))
+ SCSI_PORT(config, m_scsibus);
+ m_scsibus->set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+ m_scsibus->set_slot_device(2, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
+ m_scsibus->set_slot_device(3, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_2));
+ m_scsibus->set_slot_device(4, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_3));
+ m_scsibus->set_slot_device(5, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4));
+ m_scsibus->set_slot_device(6, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_5));
+ m_scsibus->set_slot_device(7, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_6));
+
+ MB89352A(config, m_spc);
+ m_spc->set_scsi_port("scsi");
+ m_spc->irq_cb().set(FUNC(x68k_scsiext_device::irq_w));
+ m_spc->drq_cb().set(FUNC(x68k_scsiext_device::drq_w));
MACHINE_CONFIG_END
x68k_scsiext_device::x68k_scsiext_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, X68K_SCSIEXT, tag, owner, clock)
, device_x68k_expansion_card_interface(mconfig, *this)
, m_slot(nullptr),
+ m_scsibus(*this, "scsi"),
m_spc(*this, "mb89352")
{
}
diff --git a/src/devices/bus/x68k/x68k_scsiext.h b/src/devices/bus/x68k/x68k_scsiext.h
index 40f5b17b6ae..03950d778fd 100644
--- a/src/devices/bus/x68k/x68k_scsiext.h
+++ b/src/devices/bus/x68k/x68k_scsiext.h
@@ -37,6 +37,7 @@ private:
x68k_expansion_slot_device *m_slot;
+ required_device<scsi_port_device> m_scsibus;
required_device<mb89352_device> m_spc;
};
diff --git a/src/devices/machine/53c810.h b/src/devices/machine/53c810.h
index 0e0d0743b14..720e1039327 100644
--- a/src/devices/machine/53c810.h
+++ b/src/devices/machine/53c810.h
@@ -20,12 +20,30 @@ public:
typedef device_delegate<uint32_t (uint32_t dsp)> fetch_delegate;
// construction/destruction
- lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
template <typename Object> void set_irq_callback(Object &&cb) { m_irq_cb = std::forward<Object>(cb); }
template <typename Object> void set_dma_callback(Object &&cb) { m_dma_cb = std::forward<Object>(cb); }
template <typename Object> void set_fetch_callback(Object &&cb) { m_fetch_cb = std::forward<Object>(cb); }
+ template <class FunctionClass> void set_irq_callback(void (FunctionClass::*callback)(int), const char *name)
+ {
+ set_irq_callback(irq_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_irq_callback(irq_delegate callback) { m_irq_cb = callback; }
+
+ template <class FunctionClass> void set_dma_callback(void (FunctionClass::*callback)(uint32_t, uint32_t, int, int), const char *name)
+ {
+ set_dma_callback(dma_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_dma_callback(dma_delegate callback) { m_dma_cb = callback; }
+
+ template <class FunctionClass> void set_fetch_callback(uint32_t (FunctionClass::*callback)(uint32_t), const char *name)
+ {
+ set_fetch_callback(fetch_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_fetch_callback(fetch_delegate callback) { m_fetch_cb = callback; }
+
uint8_t reg_r(int offset);
void reg_w(int offset, uint8_t data);
diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h
index 7b285d08688..bd9ea980c1a 100644
--- a/src/devices/machine/8042kbdc.h
+++ b/src/devices/machine/8042kbdc.h
@@ -55,7 +55,7 @@ public:
};
// construction/destruction
- kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
void set_keyboard_type(kbdc8042_type_t keybtype) { m_keybtype = keybtype; }
template <class Object> devcb_base &set_system_reset_callback(Object &&cb) { return m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
diff --git a/src/devices/machine/ataintf.cpp b/src/devices/machine/ataintf.cpp
index 0e377c5e0ed..8f2db0ba0d3 100644
--- a/src/devices/machine/ataintf.cpp
+++ b/src/devices/machine/ataintf.cpp
@@ -17,6 +17,23 @@
#include "debugger.h"
+void abstract_ata_interface_device::set_default_ata_devices(const char* _master, const char* _slave)
+{
+ for (size_t slot_index = 0; slot_index < SLOT_COUNT; slot_index++)
+ {
+ slot(slot_index).option_add("hdd", IDE_HARDDISK);
+ slot(slot_index).option_add("cdrom", ATAPI_CDROM);
+ }
+ slot(SLOT_MASTER).set_default_option(_master);
+ slot(SLOT_SLAVE).set_default_option(_slave);
+}
+
+ata_slot_device &abstract_ata_interface_device::slot(int index)
+{
+ assert(index < 2);
+ return *subdevice<ata_slot_device>(m_slot[index].finder_tag());
+}
+
void abstract_ata_interface_device::set_irq(int state)
{
// logerror( "%s: irq %d\n", machine().describe_context(), state );
@@ -212,9 +229,11 @@ void ata_devices(device_slot_interface &device)
abstract_ata_interface_device::abstract_ata_interface_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, type, tag, owner, clock),
+ m_slot(*this, "%u", 0U),
m_irq_handler(*this),
m_dmarq_handler(*this),
- m_dasp_handler(*this){
+ m_dasp_handler(*this)
+{
}
@@ -235,10 +254,6 @@ void abstract_ata_interface_device::device_start()
m_dmarq_handler.resolve_safe();
m_dasp_handler.resolve_safe();
- /* set MAME harddisk handle */
- m_slot[0] = subdevice<ata_slot_device>("0");
- m_slot[1] = subdevice<ata_slot_device>("1");
-
for (int i = 0; i < 2; i++)
{
m_irq[i] = 0;
@@ -274,10 +289,11 @@ void abstract_ata_interface_device::device_start()
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(abstract_ata_interface_device::device_add_mconfig)
- MCFG_DEVICE_ADD( "0", ATA_SLOT, 0 )
- MCFG_DEVICE_ADD( "1", ATA_SLOT, 0 )
-MACHINE_CONFIG_END
+void abstract_ata_interface_device::device_add_mconfig(machine_config &config)
+{
+ for (size_t slot = 0; slot < SLOT_COUNT; slot++)
+ ATA_SLOT(config, m_slot[slot]);
+}
//**************************************************************************
diff --git a/src/devices/machine/ataintf.h b/src/devices/machine/ataintf.h
index cd11d90180c..acd65a21b3f 100644
--- a/src/devices/machine/ataintf.h
+++ b/src/devices/machine/ataintf.h
@@ -26,7 +26,7 @@ class ata_slot_device : public device_t,
{
public:
// construction/destruction
- ata_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ata_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
device_ata_interface *dev() { return m_dev; }
@@ -82,6 +82,12 @@ public:
template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_dmarq_handler(Object &&cb) { return m_dmarq_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_dasp_handler(Object &&cb) { return m_dasp_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
+ auto dmarq_handler() { return m_dmarq_handler.bind(); }
+ auto dasp_handler() { return m_dasp_handler.bind(); }
+
+ ata_slot_device &slot(int index);
+ virtual void set_default_ata_devices(const char* _master, const char* _slave);
uint16_t read_dma();
void write_dma(uint16_t data);
@@ -103,6 +109,14 @@ protected:
virtual void set_dmarq(int state);
virtual void set_dasp(int state);
+ enum : size_t
+ {
+ SLOT_MASTER,
+ SLOT_SLAVE,
+
+ SLOT_COUNT
+ };
+
private:
DECLARE_WRITE_LINE_MEMBER(irq0_write_line);
DECLARE_WRITE_LINE_MEMBER(dmarq0_write_line);
@@ -114,11 +128,11 @@ private:
DECLARE_WRITE_LINE_MEMBER(dasp1_write_line);
DECLARE_WRITE_LINE_MEMBER(pdiag1_write_line);
- ata_slot_device *m_slot[2];
- int m_irq[2];
- int m_dmarq[2];
- int m_dasp[2];
- int m_pdiag[2];
+ required_device_array<ata_slot_device, SLOT_COUNT> m_slot;
+ int m_irq[SLOT_COUNT];
+ int m_dmarq[SLOT_COUNT];
+ int m_dasp[SLOT_COUNT];
+ int m_pdiag[SLOT_COUNT];
devcb_write_line m_irq_handler;
devcb_write_line m_dmarq_handler;
diff --git a/src/devices/machine/dmac.h b/src/devices/machine/dmac.h
index 8c72c02d05d..203317dd742 100644
--- a/src/devices/machine/dmac.h
+++ b/src/devices/machine/dmac.h
@@ -17,39 +17,9 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_DMAC_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, AMIGA_DMAC, _clock)
-#define MCFG_DMAC_CFGOUT_HANDLER(_devcb) \
- downcast<amiga_dmac_device &>(*device).set_cfgout_handler(DEVCB_##_devcb);
-
-#define MCFG_DMAC_INT_HANDLER(_devcb) \
- downcast<amiga_dmac_device &>(*device).set_int_handler(DEVCB_##_devcb);
-
-#define MCFG_DMAC_XDACK_HANDLER(_devcb) \
- downcast<amiga_dmac_device &>(*device).set_xdack_handler(DEVCB_##_devcb);
-
-#define MCFG_DMAC_SCSI_READ_HANDLER(_devcb) \
- downcast<amiga_dmac_device &>(*device).set_scsi_read_handler(DEVCB_##_devcb);
-
-#define MCFG_DMAC_SCSI_WRITE_HANDLER(_devcb) \
- downcast<amiga_dmac_device &>(*device).set_scsi_write_handler(DEVCB_##_devcb);
-
-#define MCFG_DMAC_IO_READ_HANDLER(_devcb) \
- downcast<amiga_dmac_device &>(*device).set_io_read_handler(DEVCB_##_devcb);
-
-#define MCFG_DMAC_IO_WRITE_HANDLER(_devcb) \
- downcast<amiga_dmac_device &>(*device).set_io_write_handler(DEVCB_##_devcb);
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
-// ======================> amiga_dmac_device
-
class amiga_dmac_device : public device_t, public amiga_autoconfig
{
public:
@@ -57,13 +27,13 @@ public:
amiga_dmac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// callbacks
- template <class Object> devcb_base &set_cfgout_handler(Object &&cb) { return m_cfgout_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_int_handler(Object &&cb) { return m_int_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_xdack_handler(Object &&cb) { return m_xdack_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_scsi_read_handler(Object &&cb) { return m_scsi_read_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_scsi_write_handler(Object &&cb) { return m_scsi_write_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_io_read_handler(Object &&cb) { return m_io_read_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_io_write_handler(Object &&cb) { return m_io_write_handler.set_callback(std::forward<Object>(cb)); }
+ auto cfgout_handler() { return m_cfgout_handler.bind(); }
+ auto int_handler() { return m_int_handler.bind(); }
+ auto xdack_handler() { return m_xdack_handler.bind(); }
+ auto scsi_read_handler() { return m_scsi_read_handler.bind(); }
+ auto scsi_write_handler() { return m_scsi_write_handler.bind(); }
+ auto io_read_handler() { return m_io_read_handler.bind(); }
+ auto io_write_handler() { return m_io_write_handler.bind(); }
void set_address_space(address_space *space) { m_space = space; }
void set_rom(uint8_t *rom) { m_rom = rom; }
diff --git a/src/devices/machine/i8255.h b/src/devices/machine/i8255.h
index 59ead81e797..3db43e06bb4 100644
--- a/src/devices/machine/i8255.h
+++ b/src/devices/machine/i8255.h
@@ -74,7 +74,7 @@ class i8255_device : public device_t
{
public:
// construction/destruction
- i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ i8255_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
template <class Object> devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward<Object>(cb)); }
diff --git a/src/devices/machine/idectrl.cpp b/src/devices/machine/idectrl.cpp
index 7687cfe673e..17e92488511 100644
--- a/src/devices/machine/idectrl.cpp
+++ b/src/devices/machine/idectrl.cpp
@@ -86,7 +86,6 @@ void ide_controller_device::write_cs1(offs_t offset, uint16_t data, uint16_t mem
}
}
-
DEFINE_DEVICE_TYPE(IDE_CONTROLLER_32, ide_controller_32_device, "idectrl32", "IDE Controller (32-bit)")
ide_controller_32_device::ide_controller_32_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
diff --git a/src/devices/machine/idectrl.h b/src/devices/machine/idectrl.h
index 546bc2a649b..de5579d3b49 100644
--- a/src/devices/machine/idectrl.h
+++ b/src/devices/machine/idectrl.h
@@ -30,7 +30,7 @@
class ide_controller_device : public abstract_ata_interface_device
{
public:
- ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ ide_controller_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
uint16_t read_cs0(offs_t offset, uint16_t mem_mask = 0xffff);
uint16_t read_cs1(offs_t offset, uint16_t mem_mask = 0xffff);
diff --git a/src/devices/machine/intelfsh.h b/src/devices/machine/intelfsh.h
index 9f93f40e49c..6a87d243909 100644
--- a/src/devices/machine/intelfsh.h
+++ b/src/devices/machine/intelfsh.h
@@ -15,97 +15,97 @@
//**************************************************************************
#define MCFG_INTEL_28F016S5_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, INTEL_28F016S5, 0)
+ MCFG_DEVICE_ADD(_tag, INTEL_28F016S5)
#define MCFG_SHARP_LH28F016S_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SHARP_LH28F016S, 0)
+ MCFG_DEVICE_ADD(_tag, SHARP_LH28F016S)
#define MCFG_SHARP_LH28F016S_16BIT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SHARP_LH28F016S_16BIT, 0)
+ MCFG_DEVICE_ADD(_tag, SHARP_LH28F016S_16BIT)
#define MCFG_ATMEL_29C010_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, ATMEL_29C010, 0)
+ MCFG_DEVICE_ADD(_tag, ATMEL_29C010)
#define MCFG_ATMEL_49F4096_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, ATMEL_49F4096, 0)
+ MCFG_DEVICE_ADD(_tag, ATMEL_49F4096)
#define MCFG_AMD_29F010_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, AMD_29F010, 0)
+ MCFG_DEVICE_ADD(_tag, AMD_29F010)
#define MCFG_AMD_29F040_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, AMD_29F040, 0)
+ MCFG_DEVICE_ADD(_tag, AMD_29F040)
#define MCFG_AMD_29F080_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, AMD_29F080, 0)
+ MCFG_DEVICE_ADD(_tag, AMD_29F080)
#define MCFG_AMD_29F400T_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, AMD_29F400T, 0)
+ MCFG_DEVICE_ADD(_tag, AMD_29F400T)
#define MCFG_AMD_29F800T_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, AMD_29F800T, 0)
+ MCFG_DEVICE_ADD(_tag, AMD_29F800T)
#define MCFG_AMD_29F800B_16BIT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, AMD_29F800B_16BIT, 0)
+ MCFG_DEVICE_ADD(_tag, AMD_29F800B_16BIT)
#define MCFG_AMD_29LV200T_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, AMD_29LV200T, 0)
+ MCFG_DEVICE_ADD(_tag, AMD_29LV200T)
#define MCFG_FUJITSU_29F160T_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, FUJITSU_29F160T, 0)
+ MCFG_DEVICE_ADD(_tag, FUJITSU_29F160T)
#define MCFG_FUJITSU_29F016A_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, FUJITSU_29F016A, 0)
+ MCFG_DEVICE_ADD(_tag, FUJITSU_29F016A)
#define MCFG_FUJITSU_29DL16X_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, FUJITSU_29DL16X, 0)
+ MCFG_DEVICE_ADD(_tag, FUJITSU_29DL16X)
#define MCFG_INTEL_E28F400B_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, INTEL_E28F400B, 0)
+ MCFG_DEVICE_ADD(_tag, INTEL_E28F400B)
#define MCFG_MACRONIX_29L001MC_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, MACRONIX_29L001MC, 0)
+ MCFG_DEVICE_ADD(_tag, MACRONIX_29L001MC)
#define MCFG_MACRONIX_29LV160TMC_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, MACRONIX_29LV160TMC, 0)
+ MCFG_DEVICE_ADD(_tag, MACRONIX_29LV160TMC)
#define MCFG_PANASONIC_MN63F805MNP_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, PANASONIC_MN63F805MNP, 0)
+ MCFG_DEVICE_ADD(_tag, PANASONIC_MN63F805MNP)
#define MCFG_SANYO_LE26FV10N1TS_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SANYO_LE26FV10N1TS, 0)
+ MCFG_DEVICE_ADD(_tag, SANYO_LE26FV10N1TS)
#define MCFG_SST_28SF040_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SST_28SF040, 0)
+ MCFG_DEVICE_ADD(_tag, SST_28SF040)
#define MCFG_SST_39VF020_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SST_39VF020, 0)
+ MCFG_DEVICE_ADD(_tag, SST_39VF020)
#define MCFG_SHARP_LH28F400_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SHARP_LH28F400, 0)
+ MCFG_DEVICE_ADD(_tag, SHARP_LH28F400)
#define MCFG_INTEL_E28F008SA_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, INTEL_E28F008SA, 0)
+ MCFG_DEVICE_ADD(_tag, INTEL_E28F008SA)
#define MCFG_INTEL_TE28F160_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, INTEL_TE28F160, 0)
+ MCFG_DEVICE_ADD(_tag, INTEL_TE28F160)
#define MCFG_INTEL_TE28F320_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, INTEL_TE28F320, 0)
+ MCFG_DEVICE_ADD(_tag, INTEL_TE28F320)
#define MCFG_SHARP_UNK128MBIT_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SHARP_UNK128MBIT, 0)
+ MCFG_DEVICE_ADD(_tag, SHARP_UNK128MBIT)
#define MCFG_INTEL_28F320J3D_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, INTEL_28F320J3D, 0)
+ MCFG_DEVICE_ADD(_tag, INTEL_28F320J3D)
#define MCFG_INTEL_28F320J5_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, INTEL_28F320J5, 0)
+ MCFG_DEVICE_ADD(_tag, INTEL_28F320J5)
#define MCFG_SST_39VF400A_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, SST_39VF400A, 0)
+ MCFG_DEVICE_ADD(_tag, SST_39VF400A)
#define MCFG_TMS_29F040_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, TMS_29F040, 0)
+ MCFG_DEVICE_ADD(_tag, TMS_29F040)
//**************************************************************************
// TYPE DEFINITIONS
@@ -242,188 +242,188 @@ protected:
class intel_28f016s5_device : public intelfsh8_device
{
public:
- intel_28f016s5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ intel_28f016s5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class fujitsu_29f160t_device : public intelfsh8_device
{
public:
- fujitsu_29f160t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fujitsu_29f160t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class fujitsu_29f016a_device : public intelfsh8_device
{
public:
- fujitsu_29f016a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fujitsu_29f016a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class fujitsu_29dl16x_device : public intelfsh8_device
{
public:
- fujitsu_29dl16x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ fujitsu_29dl16x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class atmel_29c010_device : public intelfsh8_device
{
public:
- atmel_29c010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ atmel_29c010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class amd_29f010_device : public intelfsh8_device
{
public:
- amd_29f010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amd_29f010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class amd_29f040_device : public intelfsh8_device
{
public:
- amd_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amd_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class amd_29f080_device : public intelfsh8_device
{
public:
- amd_29f080_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amd_29f080_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class amd_29f400t_device : public intelfsh8_device
{
public:
- amd_29f400t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amd_29f400t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class amd_29f800t_device : public intelfsh8_device
{
public:
- amd_29f800t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amd_29f800t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class amd_29f800b_16bit_device : public intelfsh16_device
{
public:
- amd_29f800b_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amd_29f800b_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class amd_29lv200t_device : public intelfsh8_device
{
public:
- amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class sharp_lh28f016s_device : public intelfsh8_device
{
public:
- sharp_lh28f016s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sharp_lh28f016s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class sharp_lh28f016s_16bit_device : public intelfsh16_device
{
public:
- sharp_lh28f016s_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sharp_lh28f016s_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class intel_e28f008sa_device : public intelfsh8_device
{
public:
- intel_e28f008sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ intel_e28f008sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class macronix_29l001mc_device : public intelfsh8_device
{
public:
- macronix_29l001mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ macronix_29l001mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class macronix_29lv160tmc_device : public intelfsh8_device
{
public:
- macronix_29lv160tmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ macronix_29lv160tmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class panasonic_mn63f805mnp_device : public intelfsh8_device
{
public:
- panasonic_mn63f805mnp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ panasonic_mn63f805mnp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class sanyo_le26fv10n1ts_device : public intelfsh8_device
{
public:
- sanyo_le26fv10n1ts_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sanyo_le26fv10n1ts_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class sst_28sf040_device : public intelfsh8_device
{
public:
- sst_28sf040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sst_28sf040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class sst_39vf020_device : public intelfsh8_device
{
public:
- sst_39vf020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sst_39vf020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class tms_29f040_device : public intelfsh8_device
{
public:
- tms_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ tms_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
// 16-bit variants
class sharp_lh28f400_device : public intelfsh16_device
{
public:
- sharp_lh28f400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sharp_lh28f400_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class intel_te28f160_device : public intelfsh16_device
{
public:
- intel_te28f160_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ intel_te28f160_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class intel_te28f320_device : public intelfsh16_device
{
public:
- intel_te28f320_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ intel_te28f320_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class intel_e28f400b_device : public intelfsh16_device
{
public:
- intel_e28f400b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ intel_e28f400b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class sharp_unk128mbit_device : public intelfsh16_device
{
public:
- sharp_unk128mbit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sharp_unk128mbit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class intel_28f320j3d_device : public intelfsh16_device
{
public:
- intel_28f320j3d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ intel_28f320j3d_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class intel_28f320j5_device : public intelfsh16_device
{
public:
- intel_28f320j5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ intel_28f320j5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class sst_39vf400a_device : public intelfsh16_device
{
public:
- sst_39vf400a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sst_39vf400a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class atmel_49f4096_device : public intelfsh16_device
{
public:
- atmel_49f4096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ atmel_49f4096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
diff --git a/src/devices/machine/mb89352.h b/src/devices/machine/mb89352.h
index dce6fe59ce9..bf271ad866b 100644
--- a/src/devices/machine/mb89352.h
+++ b/src/devices/machine/mb89352.h
@@ -21,10 +21,12 @@ class mb89352_device : public legacy_scsi_host_adapter
{
public:
// construction/destruction
- mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward<Object>(cb)); }
+ auto irq_cb() { return m_irq_cb.bind(); }
+ auto drq_cb() { return m_drq_cb.bind(); }
// any publically accessible interfaces needed for runtime
DECLARE_READ8_MEMBER( mb89352_r );
diff --git a/src/devices/machine/mc6854.h b/src/devices/machine/mc6854.h
index a43cb4fa57c..e0573df5331 100644
--- a/src/devices/machine/mc6854.h
+++ b/src/devices/machine/mc6854.h
@@ -44,9 +44,13 @@ public:
template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
- template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); }
template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
+ template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); }
+ auto out_irq_cb() { return m_out_irq_cb.bind(); }
+ auto out_txd_cb() { return m_out_txd_cb.bind(); }
+ auto out_rts_cb() { return m_out_rts_cb.bind(); }
+ auto out_dtr_cb() { return m_out_dtr_cb.bind(); }
/* interface to CPU via address/data bus*/
DECLARE_READ8_MEMBER( read );
diff --git a/src/devices/machine/ram.h b/src/devices/machine/ram.h
index dcf005cc1ee..19b487517b5 100644
--- a/src/devices/machine/ram.h
+++ b/src/devices/machine/ram.h
@@ -60,7 +60,7 @@ public:
using extra_option_vector = std::vector<extra_option>;
// construction/destruction
- ram_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
+ ram_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock = 0);
// accessors
u32 size() const { return m_size; }
diff --git a/src/devices/machine/wd33c93.h b/src/devices/machine/wd33c93.h
index 6f3e8ad2408..d7d14d91e37 100644
--- a/src/devices/machine/wd33c93.h
+++ b/src/devices/machine/wd33c93.h
@@ -19,9 +19,15 @@ class wd33c93_device : public legacy_scsi_host_adapter
{
public:
// construction/destruction
+ wd33c93_device(const machine_config &mconfig, const char *tag, device_t *owner)
+ : wd33c93_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ }
+
wd33c93_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_irq_cb.set_callback(std::forward<Object>(cb)); }
+ auto irq_cb() { return m_irq_cb.bind(); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
diff --git a/src/devices/sound/volt_reg.h b/src/devices/sound/volt_reg.h
index f687b3a7713..6493dbc7bd4 100644
--- a/src/devices/sound/volt_reg.h
+++ b/src/devices/sound/volt_reg.h
@@ -22,6 +22,11 @@ class voltage_regulator_device : public device_t, public device_sound_interface
public:
void set_output(double analogue_dc) { m_output = (analogue_dc * 32768) / 5.0f; }
+ voltage_regulator_device(const machine_config &mconfig, const char *tag, device_t *owner)
+ : voltage_regulator_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ }
+
voltage_regulator_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
virtual bool issound() override { return false; }
diff --git a/src/devices/video/huc6272.cpp b/src/devices/video/huc6272.cpp
index 839bf285e20..ffe856c1270 100644
--- a/src/devices/video/huc6272.cpp
+++ b/src/devices/video/huc6272.cpp
@@ -379,21 +379,30 @@ WRITE32_MEMBER( huc6272_device::write )
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(huc6272_device::device_add_mconfig)
- MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
- MCFG_SCSI_RST_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit7))
- MCFG_SCSI_BSY_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit6))
- MCFG_SCSI_REQ_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit5))
- MCFG_SCSI_MSG_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit4))
- MCFG_SCSI_CD_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit3))
- MCFG_SCSI_IO_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit2))
- MCFG_SCSI_SEL_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit1))
-
- MCFG_SCSI_DATA_INPUT_BUFFER("scsi_data_in")
-
- MCFG_SCSI_OUTPUT_LATCH_ADD("scsi_data_out", "scsi")
- MCFG_DEVICE_ADD("scsi_ctrl_in", INPUT_BUFFER, 0)
- MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0)
-
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_1)
-MACHINE_CONFIG_END
+void huc6272_device::device_add_mconfig(machine_config &config)
+{
+ scsi_port_device &scsibus(SCSI_PORT(config, "scsi"));
+ scsibus.set_data_input_buffer("scsi_data_in");
+ scsibus.rst_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit7));
+ scsibus.bsy_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit6));
+ scsibus.req_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit5));
+ scsibus.msg_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit4));
+ scsibus.cd_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit3));
+ scsibus.io_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit2));
+ scsibus.sel_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit1));
+
+ output_latch_device &scsiout(OUTPUT_LATCH(config, "scsi_data_out"));
+ scsiout.bit_handler<0>().set("scsi", FUNC(scsi_port_device::write_data0));
+ scsiout.bit_handler<1>().set("scsi", FUNC(scsi_port_device::write_data1));
+ scsiout.bit_handler<2>().set("scsi", FUNC(scsi_port_device::write_data2));
+ scsiout.bit_handler<3>().set("scsi", FUNC(scsi_port_device::write_data3));
+ scsiout.bit_handler<4>().set("scsi", FUNC(scsi_port_device::write_data4));
+ scsiout.bit_handler<5>().set("scsi", FUNC(scsi_port_device::write_data5));
+ scsiout.bit_handler<6>().set("scsi", FUNC(scsi_port_device::write_data6));
+ scsiout.bit_handler<7>().set("scsi", FUNC(scsi_port_device::write_data7));
+
+ INPUT_BUFFER(config, "scsi_ctrl_in");
+ INPUT_BUFFER(config, "scsi_data_in");
+
+ scsibus.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
+}
diff --git a/src/mame/drivers/amiga.cpp b/src/mame/drivers/amiga.cpp
index debff0fdf97..7ab188c6467 100644
--- a/src/mame/drivers/amiga.cpp
+++ b/src/mame/drivers/amiga.cpp
@@ -1606,12 +1606,12 @@ MACHINE_CONFIG_START(cdtv_state::cdtv)
MCFG_DEVICE_ADD("u61", MSM6242, XTAL(32'768))
// cd-rom controller
- MCFG_DMAC_ADD("u36", amiga_state::CLK_7M_PAL)
- MCFG_DMAC_SCSI_READ_HANDLER(READ8(*this, cdtv_state, dmac_scsi_data_read))
- MCFG_DMAC_SCSI_WRITE_HANDLER(WRITE8(*this, cdtv_state, dmac_scsi_data_write))
- MCFG_DMAC_IO_READ_HANDLER(READ8(*this, cdtv_state, dmac_io_read))
- MCFG_DMAC_IO_WRITE_HANDLER(WRITE8(*this, cdtv_state, dmac_io_write))
- MCFG_DMAC_INT_HANDLER(WRITELINE(*this, cdtv_state, dmac_int_w))
+ AMIGA_DMAC(config, m_dmac, amiga_state::CLK_7M_PAL);
+ m_dmac->scsi_read_handler().set(FUNC(cdtv_state::dmac_scsi_data_read));
+ m_dmac->scsi_write_handler().set(FUNC(cdtv_state::dmac_scsi_data_write));
+ m_dmac->io_read_handler().set(FUNC(cdtv_state::dmac_io_read));
+ m_dmac->io_write_handler().set(FUNC(cdtv_state::dmac_io_write));
+ m_dmac->int_handler().set(FUNC(cdtv_state::dmac_int_w));
MCFG_DEVICE_ADD("u32", TPI6525, 0)
MCFG_TPI6525_OUT_IRQ_CB(WRITELINE(*this, cdtv_state, tpi_int_w))
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp
index caf5041d3ea..53f564de3c0 100644
--- a/src/mame/drivers/bbc.cpp
+++ b/src/mame/drivers/bbc.cpp
@@ -1153,18 +1153,28 @@ MACHINE_CONFIG_START(bbc_state::abc110)
MCFG_SLOT_FIXED(true)
/* Add ADAPTEC ACB-4000 Winchester Disc Controller */
- //MCFG_DEVICE_ADD(SCSIBUS_TAG, SCSI_PORT, 0)
- //MCFG_SCSI_DATA_INPUT_BUFFER("scsi_data_in")
- //MCFG_SCSI_MSG_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit0))
- //MCFG_SCSI_BSY_HANDLER(WRITELINE(*this, bbc_state, scsi_bsy_w))
- //MCFG_SCSI_REQ_HANDLER(WRITELINE(*this, bbc_state, scsi_req_w))
- //MCFG_SCSI_IO_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit6))
- //MCFG_SCSI_CD_HANDLER(WRITELINE("scsi_ctrl_in", input_buffer_device, write_bit7))
- //MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":" SCSI_PORT_DEVICE1, "harddisk", ACB4070, SCSI_ID_0)
-
- //MCFG_SCSI_OUTPUT_LATCH_ADD("scsi_data_out", SCSIBUS_TAG)
- //MCFG_DEVICE_ADD("scsi_data_in", INPUT_BUFFER, 0)
- //MCFG_DEVICE_ADD("scsi_ctrl_in", INPUT_BUFFER, 0)
+ //scsi_port_device &scsibus(SCSI_PORT(config, SCSIBUS_TAG));
+ //scsibus.set_data_input_buffer("scsi_data_in");
+ //scsibus.msg_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit0));
+ //scsibus.bsy_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::scsi_bsy_w))
+ //scsibus.req_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::scsi_req_w))
+ //scsibus.io_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit6));
+ //scsibus.cd_handler().set("scsi_ctrl_in", FUNC(input_buffer_device::write_bit7));
+ //scsibus.set_slot_device(1, "harddisk", ACB4070, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+
+ //output_latch_device &scsiout(OUTPUT_LATCH(config, "scsi_data_out"));
+ //scsiout.bit_handler<0>().set("scsi", FUNC(scsi_port_device::write_data0));
+ //scsiout.bit_handler<1>().set("scsi", FUNC(scsi_port_device::write_data1));
+ //scsiout.bit_handler<2>().set("scsi", FUNC(scsi_port_device::write_data2));
+ //scsiout.bit_handler<3>().set("scsi", FUNC(scsi_port_device::write_data3));
+ //scsiout.bit_handler<4>().set("scsi", FUNC(scsi_port_device::write_data4));
+ //scsiout.bit_handler<5>().set("scsi", FUNC(scsi_port_device::write_data5));
+ //scsiout.bit_handler<6>().set("scsi", FUNC(scsi_port_device::write_data6));
+ //scsiout.bit_handler<7>().set("scsi", FUNC(scsi_port_device::write_data7));
+
+ //INPUT_BUFFER(config, "scsi_ctrl_in");
+ //INPUT_BUFFER(config, "scsi_data_in");
+
/* Add 10MB ST-412 Winchester */
/* software lists */
diff --git a/src/mame/drivers/bebox.cpp b/src/mame/drivers/bebox.cpp
index 380defc55c9..ecabece31f5 100644
--- a/src/mame/drivers/bebox.cpp
+++ b/src/mame/drivers/bebox.cpp
@@ -15,7 +15,6 @@
/* Components */
#include "video/clgd542x.h"
#include "bus/lpci/cirrus.h"
-#include "cpu/powerpc/ppc.h"
#include "sound/3812intf.h"
#include "machine/mc146818.h"
#include "machine/pckeybrd.h"
@@ -29,10 +28,10 @@
#include "formats/pc_dsk.h"
#include "machine/8042kbdc.h"
-READ8_MEMBER(bebox_state::at_dma8237_1_r) { return m_dma8237_2->read(space, offset / 2); }
-WRITE8_MEMBER(bebox_state::at_dma8237_1_w) { m_dma8237_2->write(space, offset / 2, data); }
+READ8_MEMBER(bebox_state::at_dma8237_1_r) { return m_dma8237[1]->read(space, offset / 2); }
+WRITE8_MEMBER(bebox_state::at_dma8237_1_w) { m_dma8237[1]->write(space, offset / 2, data); }
-void bebox_state::bebox_mem(address_map &map)
+void bebox_state::main_mem(address_map &map)
{
map(0x7FFFF0F0, 0x7FFFF0F7).rw(FUNC(bebox_state::bebox_cpu0_imask_r), FUNC(bebox_state::bebox_cpu0_imask_w));
map(0x7FFFF1F0, 0x7FFFF1F7).rw(FUNC(bebox_state::bebox_cpu1_imask_r), FUNC(bebox_state::bebox_cpu1_imask_w));
@@ -40,13 +39,13 @@ void bebox_state::bebox_mem(address_map &map)
map(0x7FFFF3F0, 0x7FFFF3F7).rw(FUNC(bebox_state::bebox_crossproc_interrupts_r), FUNC(bebox_state::bebox_crossproc_interrupts_w));
map(0x7FFFF4F0, 0x7FFFF4F7).w(FUNC(bebox_state::bebox_processor_resets_w));
- map(0x80000000, 0x8000001F).rw(m_dma8237_1, FUNC(am9517a_device::read), FUNC(am9517a_device::write));
- map(0x80000020, 0x8000003F).rw(m_pic8259_1, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x80000000, 0x8000001F).rw(m_dma8237[0], FUNC(am9517a_device::read), FUNC(am9517a_device::write));
+ map(0x80000020, 0x8000003F).rw(m_pic8259[0], FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0x80000040, 0x8000005f).rw(m_pit8254, FUNC(pit8254_device::read), FUNC(pit8254_device::write));
map(0x80000060, 0x8000006F).rw("kbdc", FUNC(kbdc8042_device::data_r), FUNC(kbdc8042_device::data_w));
map(0x80000070, 0x8000007F).rw("rtc", FUNC(mc146818_device::read), FUNC(mc146818_device::write));
map(0x80000080, 0x8000009F).rw(FUNC(bebox_state::bebox_page_r), FUNC(bebox_state::bebox_page_w));
- map(0x800000A0, 0x800000BF).rw(m_pic8259_2, FUNC(pic8259_device::read), FUNC(pic8259_device::write));
+ map(0x800000A0, 0x800000BF).rw(m_pic8259[1], FUNC(pic8259_device::read), FUNC(pic8259_device::write));
map(0x800000C0, 0x800000DF).rw(FUNC(bebox_state::at_dma8237_1_r), FUNC(bebox_state::at_dma8237_1_w));
map(0x800001F0, 0x800001F7).rw("ide", FUNC(ide_controller_device::cs0_r), FUNC(ide_controller_device::cs0_w));
map(0x800002F8, 0x800002FF).rw("ns16550_1", FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w));
@@ -75,7 +74,7 @@ void bebox_state::bebox_mem(address_map &map)
READ64_MEMBER(bebox_state::bb_slave_64be_r)
{
// 2e94 is the real address, 2e84 is where the PC appears to be under full DRC
- if ((m_ppc2->pc() == 0xfff02e94) || (m_ppc2->pc() == 0xfff02e84))
+ if ((m_ppc[1]->pc() == 0xfff02e94) || (m_ppc[1]->pc() == 0xfff02e84))
{
return 0x108000ff; // indicate slave CPU
}
@@ -83,9 +82,9 @@ READ64_MEMBER(bebox_state::bb_slave_64be_r)
return m_pcibus->read_64be(space, offset, mem_mask);
}
-void bebox_state::bebox_slave_mem(address_map &map)
+void bebox_state::slave_mem(address_map &map)
{
- bebox_mem(map);
+ main_mem(map);
map(0x80000cf8, 0x80000cff).r(FUNC(bebox_state::bb_slave_64be_r));
map(0x80000cf8, 0x80000cff).w(m_pcibus, FUNC(pci_bus_device::write_64be));
}
@@ -97,7 +96,7 @@ void bebox_state::bebox_slave_mem(address_map &map)
LSI53C810_FETCH_CB(bebox_state::scsi_fetch)
{
- uint32_t result = m_ppc1->space(AS_PROGRAM).read_dword(dsp & 0x7FFFFFFF);
+ uint32_t result = m_ppc[0]->space(AS_PROGRAM).read_dword(dsp & 0x7FFFFFFF);
return BYTE_REVERSE32(result);
}
@@ -116,11 +115,6 @@ FLOPPY_FORMATS_MEMBER( bebox_state::floppy_formats )
FLOPPY_PC_FORMAT
FLOPPY_FORMATS_END
-static void bebox_floppies(device_slot_interface &device)
-{
- device.option_add("35hd", FLOPPY_35_HD);
-}
-
void bebox_state::mpc105_config(device_t *device)
{
MCFG_MPC105_CPU( "ppc1" )
@@ -136,122 +130,141 @@ void bebox_state::mpc105_config(device_t *device)
WRITE_LINE_MEMBER(bebox_state::bebox_keyboard_interrupt)
{
bebox_set_irq_bit(16, state);
- m_pic8259_1->ir1_w(state);
+ m_pic8259[0]->ir1_w(state);
}
-static void pci_devices(device_slot_interface &device)
+pci_connector_device &bebox_state::add_pci_slot(machine_config &config, const char *tag, size_t index, const char *default_tag)
{
- device.option_add("mpc105", MPC105);
- device.option_add("cirrus", PCI_CIRRUS_SVGA);
+ pci_connector_device &pcislot(PCI_CONNECTOR(config, tag, index));
+ pcislot.option_add("mpc105", MPC105);
+ pcislot.option_add("cirrus", PCI_CIRRUS_SVGA);
+ pcislot.set_default_option(default_tag);
+ pcislot.set_fixed(true);
+ return pcislot;
}
-MACHINE_CONFIG_START(bebox_state::bebox)
- /* basic machine hardware */
- MCFG_DEVICE_ADD("ppc1", PPC603, 66000000) /* 66 MHz */
- MCFG_DEVICE_PROGRAM_MAP(bebox_mem)
-
- MCFG_DEVICE_ADD("ppc2", PPC603, 66000000) /* 66 MHz */
- MCFG_DEVICE_PROGRAM_MAP(bebox_slave_mem)
-
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
-
- MCFG_DEVICE_ADD("pit8254", PIT8254, 0)
- MCFG_PIT8253_CLK0(4772720/4) /* heartbeat IRQ */
- MCFG_PIT8253_OUT0_HANDLER(WRITELINE(*this, bebox_state, bebox_timer0_w))
- MCFG_PIT8253_CLK1(4772720/4) /* dram refresh */
- MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */
- MCFG_PIT8253_OUT2_HANDLER(WRITELINE("kbdc", kbdc8042_device, write_out2))
-
- AM9517A(config, m_dma8237_1, XTAL(14'318'181)/3);
- m_dma8237_1->out_hreq_callback().set(FUNC(bebox_state::bebox_dma_hrq_changed));
- m_dma8237_1->out_eop_callback().set(FUNC(bebox_state::bebox_dma8237_out_eop));
- m_dma8237_1->in_memr_callback().set(FUNC(bebox_state::bebox_dma_read_byte));
- m_dma8237_1->out_memw_callback().set(FUNC(bebox_state::bebox_dma_write_byte));
- m_dma8237_1->in_ior_callback<2>().set(FUNC(bebox_state::bebox_dma8237_fdc_dack_r));
- m_dma8237_1->out_iow_callback<2>().set(FUNC(bebox_state::bebox_dma8237_fdc_dack_w));
- m_dma8237_1->out_dack_callback<0>().set(FUNC(bebox_state::pc_dack0_w));
- m_dma8237_1->out_dack_callback<1>().set(FUNC(bebox_state::pc_dack1_w));
- m_dma8237_1->out_dack_callback<2>().set(FUNC(bebox_state::pc_dack2_w));
- m_dma8237_1->out_dack_callback<3>().set(FUNC(bebox_state::pc_dack3_w));
-
- AM9517A(config, m_dma8237_2, XTAL(14'318'181)/3);
-
- PIC8259(config, m_pic8259_1, 0);
- m_pic8259_1->out_int_callback().set(FUNC(bebox_state::bebox_pic8259_master_set_int_line));
- m_pic8259_1->in_sp_callback().set_constant(1);
- m_pic8259_1->read_slave_ack_callback().set(FUNC(bebox_state::get_slave_ack));
-
- PIC8259(config, m_pic8259_2, 0);
- m_pic8259_2->out_int_callback().set(FUNC(bebox_state::bebox_pic8259_slave_set_int_line));
- m_pic8259_2->in_sp_callback().set_constant(0);
-
- MCFG_DEVICE_ADD( "ns16550_0", NS16550, 0 ) /* TODO: Verify model */
- MCFG_DEVICE_ADD( "ns16550_1", NS16550, 0 ) /* TODO: Verify model */
- MCFG_DEVICE_ADD( "ns16550_2", NS16550, 0 ) /* TODO: Verify model */
- MCFG_DEVICE_ADD( "ns16550_3", NS16550, 0 ) /* TODO: Verify model */
+void bebox_state::bebox_peripherals(machine_config &config)
+{
+ config.m_minimum_quantum = attotime::from_hz(60);
+
+ PIT8254(config, m_pit8254, 0);
+ m_pit8254->set_clk<0>(4772720/4); /* heartbeat IRQ */
+ m_pit8254->set_clk<1>(4772720/4); /* dram refresh */
+ m_pit8254->set_clk<2>(4772720/4); /* pio port c pin 4, and speaker polling */
+ m_pit8254->out_handler<0>().set(FUNC(bebox_state::bebox_timer0_w));
+ m_pit8254->out_handler<2>().set("kbdc", FUNC(kbdc8042_device::write_out2));
+
+ AM9517A(config, m_dma8237[0], XTAL(14'318'181)/3);
+ m_dma8237[0]->out_hreq_callback().set(FUNC(bebox_state::bebox_dma_hrq_changed));
+ m_dma8237[0]->out_eop_callback().set(FUNC(bebox_state::bebox_dma8237_out_eop));
+ m_dma8237[0]->in_memr_callback().set(FUNC(bebox_state::bebox_dma_read_byte));
+ m_dma8237[0]->out_memw_callback().set(FUNC(bebox_state::bebox_dma_write_byte));
+ m_dma8237[0]->in_ior_callback<2>().set(FUNC(bebox_state::bebox_dma8237_fdc_dack_r));
+ m_dma8237[0]->out_iow_callback<2>().set(FUNC(bebox_state::bebox_dma8237_fdc_dack_w));
+ m_dma8237[0]->out_dack_callback<0>().set(FUNC(bebox_state::pc_dack0_w));
+ m_dma8237[0]->out_dack_callback<1>().set(FUNC(bebox_state::pc_dack1_w));
+ m_dma8237[0]->out_dack_callback<2>().set(FUNC(bebox_state::pc_dack2_w));
+ m_dma8237[0]->out_dack_callback<3>().set(FUNC(bebox_state::pc_dack3_w));
+
+ AM9517A(config, m_dma8237[1], XTAL(14'318'181)/3);
+
+ PIC8259(config, m_pic8259[0], 0);
+ m_pic8259[0]->out_int_callback().set(FUNC(bebox_state::bebox_pic8259_master_set_int_line));
+ m_pic8259[0]->in_sp_callback().set_constant(1);
+ m_pic8259[0]->read_slave_ack_callback().set(FUNC(bebox_state::get_slave_ack));
+
+ PIC8259(config, m_pic8259[1], 0);
+ m_pic8259[1]->out_int_callback().set(FUNC(bebox_state::bebox_pic8259_slave_set_int_line));
+ m_pic8259[1]->in_sp_callback().set_constant(0);
+
+ NS16550(config, "ns16550_0", 0); /* TODO: Verify model */
+ NS16550(config, "ns16550_1", 0); /* TODO: Verify model */
+ NS16550(config, "ns16550_2", 0); /* TODO: Verify model */
+ NS16550(config, "ns16550_3", 0); /* TODO: Verify model */
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
- MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_gd5428_device, screen_update)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480);
+ screen.set_screen_update("vga", FUNC(cirrus_gd5428_device::screen_update));
+
+ cirrus_gd5428_device &vga(CIRRUS_GD5428(config, "vga", 0));
+ vga.set_screen("screen");
- MCFG_DEVICE_ADD("vga", CIRRUS_GD5428, 0)
- MCFG_VIDEO_SET_SCREEN("screen")
+ speaker_device &speaker(SPEAKER(config, "mono"));
+ speaker.front_center();
- SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("ym3812", YM3812, 3579545)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ ym3812_device &ym3812(YM3812(config, "ym3812", 3579545));
+ ym3812.add_route(ALL_OUTPUTS, speaker, 1.0);
- MCFG_FUJITSU_29F016A_ADD("flash")
+ FUJITSU_29F016A(config, "flash");
- MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "cdrom", SCSICD, SCSI_ID_3)
+ scsi_port_device &scsibus(SCSI_PORT(config, "scsi"));
+ scsibus.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_0));
+ scsibus.set_slot_device(2, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_3));
- MCFG_DEVICE_ADD("lsi53c810", LSI53C810, 0)
- MCFG_LSI53C810_IRQ_CB(bebox_state, scsi_irq_callback)
- MCFG_LSI53C810_DMA_CB(bebox_state, scsi_dma_callback)
- MCFG_LSI53C810_FETCH_CB(bebox_state, scsi_fetch)
- MCFG_LEGACY_SCSI_PORT("scsi")
+ lsi53c810_device &scsictrl(LSI53C810(config, "lsi53c810"));
+ scsictrl.set_irq_callback(FUNC(bebox_state::scsi_irq_callback));
+ scsictrl.set_dma_callback(FUNC(bebox_state::scsi_dma_callback));
+ scsictrl.set_fetch_callback(FUNC(bebox_state::scsi_fetch));
+ scsictrl.set_scsi_port("scsi");
- MCFG_IDE_CONTROLLER_ADD( "ide", ata_devices, "hdd", nullptr, false ) /* FIXME */
- MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(*this, bebox_state, bebox_ide_interrupt))
+ ide_controller_device &idectrl(IDE_CONTROLLER(config, "ide"));
+ idectrl.set_default_ata_devices("hdd", nullptr);
+ idectrl.irq_handler().set(FUNC(bebox_state::bebox_ide_interrupt));
/* pci */
- MCFG_PCI_BUS_ADD("pcibus", 0)
- MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "mpc105", true)
- MCFG_SLOT_OPTION_MACHINE_CONFIG("mpc105", mpc105_config)
+ PCI_BUS(config, m_pcibus, 0);
+ m_pcibus->set_busnum(0);
- MCFG_PCI_BUS_DEVICE("pcibus:1", pci_devices, "cirrus", true)
+ pci_connector_device &pcislot0 = add_pci_slot(config, "pcibus:0", 0, "mpc105");
+ pcislot0.set_option_machine_config("mpc105", mpc105_config);
+ add_pci_slot(config, "pcibus:1", 1, "cirrus");
/*MCFG_PCI_BUS_DEVICE(12, nullptr, scsi53c810_pci_read, scsi53c810_pci_write)*/
- MCFG_SMC37C78_ADD("smc37c78")
- MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, bebox_state, fdc_interrupt))
- MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dma8237_1", am9517a_device, dreq2_w))
- MCFG_FLOPPY_DRIVE_ADD("smc37c78:0", bebox_floppies, "35hd", bebox_state::floppy_formats)
+ SMC37C78(config, m_smc37c78, 0);
+ m_smc37c78->intrq_wr_callback().set(FUNC(bebox_state::fdc_interrupt));
+ m_smc37c78->drq_wr_callback().set(m_dma8237[0], FUNC(am9517a_device::dreq2_w));
- MCFG_DEVICE_ADD("rtc", MC146818, 32.768_kHz_XTAL)
+ floppy_connector &fdc(FLOPPY_CONNECTOR(config, "smc37c78:0"));
+ fdc.option_add("35hd", FLOPPY_35_HD);
+ fdc.set_default_option("35hd");
+ fdc.set_formats(bebox_state::floppy_formats);
- MCFG_DEVICE_ADD("kbdc", KBDC8042, 0)
- MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_STANDARD)
- MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("ppc1", INPUT_LINE_RESET))
- MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE(*this, bebox_state, bebox_keyboard_interrupt))
+ MC146818(config, "rtc", 32.768_kHz_XTAL);
+
+ kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
+ kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_STANDARD);
+ kbdc.system_reset_callback().set_inputline(m_ppc[0], INPUT_LINE_RESET);
+ kbdc.input_buffer_full_callback().set(FUNC(bebox_state::bebox_keyboard_interrupt));
/* internal ram */
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("32M")
- MCFG_RAM_EXTRA_OPTIONS("8M,16M")
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(bebox_state::bebox2)
- bebox(config);
- MCFG_DEVICE_REPLACE("ppc1", PPC603E, 133000000) /* 133 MHz */
- MCFG_DEVICE_PROGRAM_MAP(bebox_mem)
-
- MCFG_DEVICE_REPLACE("ppc2", PPC603E, 133000000) /* 133 MHz */
- MCFG_DEVICE_PROGRAM_MAP(bebox_slave_mem)
-MACHINE_CONFIG_END
+ RAM(config, m_ram);
+ m_ram->set_default_size("32M");
+ m_ram->set_extra_options("8M,16M");
+}
+
+void bebox_state::bebox(machine_config &config)
+{
+ PPC603(config, m_ppc[0], 66000000); /* 66 MHz */
+ m_ppc[0]->set_addrmap(AS_PROGRAM, &bebox_state::main_mem);
+
+ PPC603(config, m_ppc[1], 66000000); /* 66 MHz */
+ m_ppc[1]->set_addrmap(AS_PROGRAM, &bebox_state::slave_mem);
+
+ bebox_peripherals(config);
+}
+
+void bebox_state::bebox2(machine_config &config)
+{
+ PPC603E(config, m_ppc[0], 133000000); /* 133 MHz */
+ m_ppc[0]->set_addrmap(AS_PROGRAM, &bebox_state::main_mem);
+
+ PPC603E(config, m_ppc[1], 133000000); /* 133 MHz */
+ m_ppc[1]->set_addrmap(AS_PROGRAM, &bebox_state::slave_mem);
+
+ bebox_peripherals(config);
+}
static INPUT_PORTS_START( bebox )
PORT_INCLUDE( at_keyboard )
diff --git a/src/mame/drivers/indy_indigo2.cpp b/src/mame/drivers/indy_indigo2.cpp
index f93815ce62a..b020cc494d7 100644
--- a/src/mame/drivers/indy_indigo2.cpp
+++ b/src/mame/drivers/indy_indigo2.cpp
@@ -70,10 +70,9 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_mainram(*this, "mainram")
- , m_sgi_mc(*this, "sgi_mc")
+ , m_mem_ctrl(*this, "memctrl")
+ , m_scsi_ctrl(*this, "wd33c93")
, m_newport(*this, "newport")
- , m_dac(*this, "dac")
- , m_scsi(*this, "wd33c93")
, m_hal2(*this, HAL2_TAG)
, m_hpc3(*this, HPC3_TAG)
, m_ioc2(*this, IOC2_TAG)
@@ -104,10 +103,9 @@ private:
required_device<mips3_device> m_maincpu;
required_shared_ptr<uint32_t> m_mainram;
- required_device<sgi_mc_device> m_sgi_mc;
+ required_device<sgi_mc_device> m_mem_ctrl;
+ required_device<wd33c93_device> m_scsi_ctrl;
required_device<newport_video_device> m_newport;
- required_device<dac_word_interface> m_dac;
- required_device<wd33c93_device> m_scsi;
required_device<hal2_device> m_hal2;
required_device<hpc3_device> m_hpc3;
required_device<ioc2_device> m_ioc2;
@@ -140,14 +138,14 @@ inline void ATTR_PRINTF(3,4) ip22_state::verboselog(int n_level, const char *s_f
WRITE32_MEMBER(ip22_state::ip22_write_ram)
{
// if banks 2 or 3 are enabled, do nothing, we don't support that much memory
- if (m_sgi_mc->read(space, 0xc8/4, 0xffffffff) & 0x10001000)
+ if (m_mem_ctrl->read(space, 0xc8/4, 0xffffffff) & 0x10001000)
{
// a random perturbation so the memory test fails
data ^= 0xffffffff;
}
// if banks 0 or 1 have 2 membanks, also kill it, we only want 128 MB
- if (m_sgi_mc->read(space, 0xc0/4, 0xffffffff) & 0x40004000)
+ if (m_mem_ctrl->read(space, 0xc0/4, 0xffffffff) & 0x40004000)
{
// a random perturbation so the memory test fails
data ^= 0xffffffff;
@@ -160,7 +158,7 @@ void ip22_state::ip225015_map(address_map &map)
map(0x00000000, 0x0007ffff).bankrw("bank1"); /* mirror of first 512k of main RAM */
map(0x08000000, 0x0fffffff).share("mainram").ram().w(FUNC(ip22_state::ip22_write_ram)); /* 128 MB of main RAM */
map(0x1f0f0000, 0x1f0f1fff).rw(m_newport, FUNC(newport_video_device::rex3_r), FUNC(newport_video_device::rex3_w));
- map(0x1fa00000, 0x1fa1ffff).rw(m_sgi_mc, FUNC(sgi_mc_device::read), FUNC(sgi_mc_device::write));
+ map(0x1fa00000, 0x1fa1ffff).rw(m_mem_ctrl, FUNC(sgi_mc_device::read), FUNC(sgi_mc_device::write));
map(0x1fb90000, 0x1fb9ffff).rw(m_hpc3, FUNC(hpc3_device::hd_enet_r), FUNC(hpc3_device::hd_enet_w));
map(0x1fbb0000, 0x1fbb0003).ram(); /* unknown, but read a lot and discarded */
map(0x1fbc0000, 0x1fbc7fff).rw(m_hpc3, FUNC(hpc3_device::hd0_r), FUNC(hpc3_device::hd0_w));
@@ -210,47 +208,51 @@ void ip22_state::cdrom_config(device_t *device)
MCFG_SOUND_ROUTE(1, ":rspeaker", 1.0)
}
-MACHINE_CONFIG_START(ip22_state::ip225015)
- MCFG_DEVICE_ADD("maincpu", R5000BE, 50000000*3)
- //MCFG_MIPS3_ICACHE_SIZE(32768)
- //MCFG_MIPS3_DCACHE_SIZE(32768)
- MCFG_DEVICE_PROGRAM_MAP(ip225015_map)
+void ip22_state::ip225015(machine_config &config)
+{
+ R5000BE(config, m_maincpu, 50000000*3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &ip22_state::ip225015_map);
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE( 60 )
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(1280+64, 1024+64)
- MCFG_SCREEN_VISIBLE_AREA(0, 1279, 0, 1023)
- MCFG_SCREEN_UPDATE_DEVICE("newport", newport_video_device, screen_update)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_size(1280+64, 1024+64);
+ screen.set_visarea(0, 1279, 0, 1023);
+ screen.set_screen_update("newport", FUNC(newport_video_device::screen_update));
- MCFG_PALETTE_ADD("palette", 65536)
+ PALETTE(config, "palette", 65536);
- MCFG_DEVICE_ADD("newport", NEWPORT_VIDEO, 0)
+ NEWPORT_VIDEO(config, m_newport);
- MCFG_DEVICE_ADD("sgi_mc", SGI_MC, 0)
+ SGI_MC(config, m_mem_ctrl);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("dac", DAC_16BIT_R2R_TWOS_COMPLEMENT, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25) // unknown DAC
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
+ dac_16bit_r2r_twos_complement_device &dac(DAC_16BIT_R2R_TWOS_COMPLEMENT(config, "dac", 0));
+ dac.add_route(ALL_OUTPUTS, "lspeaker", 0.25);
+ dac.add_route(ALL_OUTPUTS, "rspeaker", 0.25);
+
+ voltage_regulator_device &vreg = VOLTAGE_REGULATOR(config, "vref");
+ vreg.set_output(5.0);
+ vreg.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
+ vreg.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
- MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_1)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "cdrom", SCSICD, SCSI_ID_4)
- MCFG_SLOT_OPTION_MACHINE_CONFIG("cdrom", cdrom_config)
+ scsi_port_device &scsi(SCSI_PORT(config, "scsi"));
+ scsi.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_1));
+ scsi.set_slot_device(2, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4));
+ scsi.slot(2).set_option_machine_config("cdrom", cdrom_config);
- MCFG_DEVICE_ADD("wd33c93", WD33C93, 0)
- MCFG_LEGACY_SCSI_PORT("scsi")
- MCFG_WD33C93_IRQ_CB(WRITELINE(HPC3_TAG, hpc3_device, scsi_irq))
+ WD33C93(config, m_scsi_ctrl);
+ m_scsi_ctrl->set_scsi_port("scsi");
+ m_scsi_ctrl->irq_cb().set(m_hpc3, FUNC(hpc3_device::scsi_irq));
- MCFG_DEVICE_ADD(HAL2_TAG, SGI_HAL2, 0)
- MCFG_DEVICE_ADD(IOC2_TAG, SGI_IOC2_GUINNESS, 0, "maincpu")
- MCFG_DEVICE_ADD(HPC3_TAG, SGI_HPC3, 0, "maincpu", "wd33c93", "ioc2")
+ SGI_HAL2(config, m_hal2);
+ SGI_IOC2_GUINNESS(config, m_ioc2, m_maincpu);
+ SGI_HPC3(config, m_hpc3, m_maincpu, m_scsi_ctrl, m_ioc2);
- MCFG_DEVICE_ADD(RTC_TAG, DS1386_8K, 32768)
+ DS1386_8K(config, m_rtc, 32768);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ip22_state::ip224613)
diff --git a/src/mame/includes/bebox.h b/src/mame/includes/bebox.h
index 23f57d0f578..0c85e475dce 100644
--- a/src/mame/includes/bebox.h
+++ b/src/mame/includes/bebox.h
@@ -11,6 +11,8 @@
#ifndef MAME_INCLUDES_BEBOX_H
#define MAME_INCLUDES_BEBOX_H
+#include "cpu/powerpc/ppc.h"
+
#include "machine/53c810.h"
#include "machine/am9517a.h"
#include "machine/idectrl.h"
@@ -20,6 +22,7 @@
#include "machine/ram.h"
#include "machine/upd765.h"
#include "machine/intelfsh.h"
+
#include "bus/lpci/pci.h"
@@ -33,13 +36,10 @@ public:
bebox_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
- , m_ppc1(*this, "ppc1")
- , m_ppc2(*this, "ppc2")
+ , m_ppc(*this, "ppc%u", 1U)
, m_lsi53c810(*this, "lsi53c810")
- , m_dma8237_1(*this, "dma8237_1")
- , m_dma8237_2(*this, "dma8237_2")
- , m_pic8259_1(*this, "pic8259_1")
- , m_pic8259_2(*this, "pic8259_2")
+ , m_dma8237(*this, "dma8237_%u", 1U)
+ , m_pic8259(*this, "pic8259_%u", 1U)
, m_pit8254(*this, "pit8254")
, m_ram(*this, RAM_TAG)
, m_smc37c78(*this, "smc37c78")
@@ -48,13 +48,10 @@ public:
{
}
- required_device<cpu_device> m_ppc1;
- required_device<cpu_device> m_ppc2;
+ required_device_array<ppc_device, 2> m_ppc;
required_device<lsi53c810_device> m_lsi53c810;
- required_device<am9517a_device> m_dma8237_1;
- required_device<am9517a_device> m_dma8237_2;
- required_device<pic8259_device> m_pic8259_1;
- required_device<pic8259_device> m_pic8259_2;
+ required_device_array<am9517a_device, 2> m_dma8237;
+ required_device_array<pic8259_device, 2> m_pic8259;
required_device<pit8254_device> m_pit8254;
required_device<ram_device> m_ram;
required_device<smc37c78_device> m_smc37c78;
@@ -121,10 +118,14 @@ public:
void bebox_update_interrupts();
static void mpc105_config(device_t *device);
+
+ pci_connector_device & add_pci_slot(machine_config &config, const char *tag, size_t index, const char *default_tag);
+ void bebox_peripherals(machine_config &config);
void bebox(machine_config &config);
void bebox2(machine_config &config);
- void bebox_mem(address_map &map);
- void bebox_slave_mem(address_map &map);
+
+ void main_mem(address_map &map);
+ void slave_mem(address_map &map);
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
diff --git a/src/mame/machine/bebox.cpp b/src/mame/machine/bebox.cpp
index 1608cd17540..9108801c6a5 100644
--- a/src/mame/machine/bebox.cpp
+++ b/src/mame/machine/bebox.cpp
@@ -183,7 +183,7 @@ READ64_MEMBER(bebox_state::bebox_crossproc_interrupts_r )
result = m_crossproc_interrupts;
/* return a different result depending on which CPU is accessing this handler */
- if (&space != &m_ppc1->space(AS_PROGRAM))
+ if (&space != &m_ppc[0]->space(AS_PROGRAM))
result |= 0x02000000;
else
result &= ~0x02000000;
@@ -208,7 +208,6 @@ WRITE64_MEMBER(bebox_state::bebox_crossproc_interrupts_w )
};
int i, line;
uint32_t old_crossproc_interrupts = m_crossproc_interrupts;
- cpu_device *cpus[] = { m_ppc1, m_ppc2 };
bebox_mbreg32_w(&m_crossproc_interrupts, data, mem_mask);
@@ -230,7 +229,7 @@ WRITE64_MEMBER(bebox_state::bebox_crossproc_interrupts_w )
*/
}
- cpus[crossproc_map[i].cpunum]->set_input_line(crossproc_map[i].inputline, line);
+ m_ppc[crossproc_map[i].cpunum]->set_input_line(crossproc_map[i].inputline, line);
}
}
}
@@ -241,7 +240,7 @@ WRITE64_MEMBER(bebox_state::bebox_processor_resets_w )
if (b & 0x20)
{
- m_ppc2->set_input_line(INPUT_LINE_RESET, (b & 0x80) ? CLEAR_LINE : ASSERT_LINE);
+ m_ppc[1]->set_input_line(INPUT_LINE_RESET, (b & 0x80) ? CLEAR_LINE : ASSERT_LINE);
}
}
@@ -249,7 +248,6 @@ WRITE64_MEMBER(bebox_state::bebox_processor_resets_w )
void bebox_state::bebox_update_interrupts()
{
uint32_t interrupt;
- cpu_device *cpus[] = { m_ppc1, m_ppc2 };
for (int cpunum = 0; cpunum < 2; cpunum++)
{
@@ -261,7 +259,7 @@ void bebox_state::bebox_update_interrupts()
m_interrupts, m_cpu_imask[cpunum], interrupt ? "on" : "off");
}
- cpus[cpunum]->set_input_line(INPUT_LINE_IRQ0, interrupt ? ASSERT_LINE : CLEAR_LINE);
+ m_ppc[cpunum]->set_input_line(INPUT_LINE_IRQ0, interrupt ? ASSERT_LINE : CLEAR_LINE);
}
}
@@ -311,8 +309,8 @@ void bebox_state::bebox_set_irq_bit(unsigned int interrupt_bit, int val)
assert_always((interrupt_bit < ARRAY_LENGTH(interrupt_names)) && (interrupt_names[interrupt_bit] != nullptr), "Raising invalid interrupt");
logerror("bebox_set_irq_bit(): pc[0]=0x%08x pc[1]=0x%08x %s interrupt #%u (%s)\n",
- (unsigned) m_ppc1->pc(),
- (unsigned) m_ppc2->pc(),
+ (unsigned) m_ppc[0]->pc(),
+ (unsigned) m_ppc[1]->pc(),
val ? "Asserting" : "Clearing",
interrupt_bit, interrupt_names[interrupt_bit]);
}
@@ -337,7 +335,7 @@ void bebox_state::bebox_set_irq_bit(unsigned int interrupt_bit, int val)
WRITE_LINE_MEMBER( bebox_state::fdc_interrupt )
{
bebox_set_irq_bit(13, state);
- m_pic8259_1->ir6_w(state);
+ m_pic8259[0]->ir6_w(state);
}
/*************************************
@@ -349,7 +347,7 @@ WRITE_LINE_MEMBER( bebox_state::fdc_interrupt )
READ64_MEMBER(bebox_state::bebox_interrupt_ack_r )
{
uint32_t result;
- result = m_pic8259_1->acknowledge();
+ result = m_pic8259[0]->acknowledge();
bebox_set_irq_bit(5, 0); /* HACK */
return ((uint64_t) result) << 56;
}
@@ -368,12 +366,12 @@ WRITE_LINE_MEMBER(bebox_state::bebox_pic8259_master_set_int_line)
WRITE_LINE_MEMBER(bebox_state::bebox_pic8259_slave_set_int_line)
{
- m_pic8259_1->ir2_w(state);
+ m_pic8259[0]->ir2_w(state);
}
READ8_MEMBER(bebox_state::get_slave_ack)
{
- return m_pic8259_2->acknowledge();
+ return m_pic8259[1]->acknowledge();
}
@@ -386,7 +384,7 @@ READ8_MEMBER(bebox_state::get_slave_ack)
WRITE_LINE_MEMBER(bebox_state::bebox_ide_interrupt)
{
bebox_set_irq_bit(7, state);
- m_pic8259_1->ir6_w(state);
+ m_pic8259[0]->ir6_w(state);
}
@@ -530,16 +528,16 @@ READ8_MEMBER(bebox_state::bebox_80000480_r)
WRITE_LINE_MEMBER(bebox_state::bebox_dma_hrq_changed)
{
- m_ppc1->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
+ m_ppc[0]->set_input_line(INPUT_LINE_HALT, state ? ASSERT_LINE : CLEAR_LINE);
/* Assert HLDA */
- m_dma8237_1->hack_w( state );
+ m_dma8237[0]->hack_w( state );
}
READ8_MEMBER(bebox_state::bebox_dma_read_byte )
{
- address_space& prog_space = m_ppc1->space(AS_PROGRAM); // get the right address space
+ address_space& prog_space = m_ppc[0]->space(AS_PROGRAM); // get the right address space
offs_t page_offset = (((offs_t) m_dma_offset[0][m_dma_channel]) << 16)
& 0x7FFF0000;
return prog_space.read_byte(page_offset + offset);
@@ -548,7 +546,7 @@ READ8_MEMBER(bebox_state::bebox_dma_read_byte )
WRITE8_MEMBER(bebox_state::bebox_dma_write_byte )
{
- address_space& prog_space = m_ppc1->space(AS_PROGRAM); // get the right address space
+ address_space& prog_space = m_ppc[0]->space(AS_PROGRAM); // get the right address space
offs_t page_offset = (((offs_t) m_dma_offset[0][m_dma_channel]) << 16)
& 0x7FFF0000;
prog_space.write_byte(page_offset + offset, data);
@@ -588,7 +586,7 @@ WRITE_LINE_MEMBER(bebox_state::pc_dack3_w){ set_dma_channel(machine(), 3, state)
WRITE_LINE_MEMBER(bebox_state::bebox_timer0_w)
{
- m_pic8259_1->ir0_w(state);
+ m_pic8259[0]->ir0_w(state);
}
@@ -732,7 +730,7 @@ void bebox_state::scsi53c810_pci_write(int function, int offset, uint32_t data,
/* brutal ugly hack; at some point the PCI code should be handling this stuff */
if (m_scsi53c810_data[5] != 0xFFFFFFF0)
{
- address_space &space = m_ppc1->space(AS_PROGRAM);
+ address_space &space = m_ppc[0]->space(AS_PROGRAM);
addr = (m_scsi53c810_data[5] | 0xC0000000) & ~0xFF;
space.install_readwrite_handler(addr, addr + 0xFF, read64_delegate(FUNC(bebox_state::scsi53c810_r),this), write64_delegate(FUNC(bebox_state::scsi53c810_w),this));
@@ -767,8 +765,8 @@ void bebox_state::machine_reset()
{
timer_set(attotime::zero, TIMER_GET_DEVICES);
- m_ppc1->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
- m_ppc2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ m_ppc[0]->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
+ m_ppc[1]->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
// Endianness? Bah!
memcpy(m_flash->base(),memregion("user1")->base(),0x200000);
@@ -780,8 +778,8 @@ void bebox_state::machine_start()
void bebox_state::init_bebox()
{
- address_space &space_0 = m_ppc1->space(AS_PROGRAM);
- address_space &space_1 = m_ppc2->space(AS_PROGRAM);
+ address_space &space_0 = m_ppc[0]->space(AS_PROGRAM);
+ address_space &space_1 = m_ppc[1]->space(AS_PROGRAM);
/* set up boot and flash ROM */
membank("bank2")->set_base(memregion("user2")->base());
diff --git a/src/mame/machine/hal2.h b/src/mame/machine/hal2.h
index 79ca3097cbf..39929180aeb 100644
--- a/src/mame/machine/hal2.h
+++ b/src/mame/machine/hal2.h
@@ -14,10 +14,15 @@
class hal2_device : public device_t
{
public:
+ hal2_device(const machine_config &mconfig, const char *tag, device_t *owner)
+ : hal2_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ }
+
hal2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_WRITE32_MEMBER( write );
- DECLARE_READ32_MEMBER( read );
+ DECLARE_WRITE32_MEMBER(write);
+ DECLARE_READ32_MEMBER(read);
protected:
virtual void device_start() override;
diff --git a/src/mame/machine/hpc3.h b/src/mame/machine/hpc3.h
index ea4f6a98509..b9c47db8a9c 100644
--- a/src/mame/machine/hpc3.h
+++ b/src/mame/machine/hpc3.h
@@ -18,17 +18,13 @@
class hpc3_device : public device_t
{
public:
- template <typename T> void set_cpu_tag(T &&tag) { m_maincpu.set_tag(std::forward<T>(tag)); }
- template <typename T> void set_scsi_tag(T &&tag) { m_wd33c93.set_tag(std::forward<T>(tag)); }
- template <typename T> void set_ioc2_tag(T &&tag) { m_ioc2.set_tag(std::forward<T>(tag)); }
-
template <typename T, typename U, typename V>
- hpc3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag, U &&scsi_tag, V &&ioc2_tag)
- : hpc3_device(mconfig, tag, owner, clock)
+ hpc3_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag, U &&scsi_tag, V &&ioc2_tag)
+ : hpc3_device(mconfig, tag, owner, (uint32_t)0)
{
- set_cpu_tag(std::forward<T>(cpu_tag));
- set_scsi_tag(std::forward<U>(scsi_tag));
- set_ioc2_tag(std::forward<V>(ioc2_tag));
+ m_maincpu.set_tag(std::forward<T>(cpu_tag));
+ m_wd33c93.set_tag(std::forward<U>(scsi_tag));
+ m_ioc2.set_tag(std::forward<V>(ioc2_tag));
}
hpc3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/mame/machine/ioc2.cpp b/src/mame/machine/ioc2.cpp
index 999acc78d71..390a50dc443 100644
--- a/src/mame/machine/ioc2.cpp
+++ b/src/mame/machine/ioc2.cpp
@@ -68,17 +68,17 @@ MACHINE_CONFIG_START(ioc2_device::device_add_mconfig)
MCFG_RS232_DCD_HANDLER(WRITELINE(SCC_TAG, scc85230_device, dcdb_w))
MCFG_RS232_RXD_HANDLER(WRITELINE(SCC_TAG, scc85230_device, rxb_w))
- MCFG_DEVICE_ADD(PI1_TAG, PC_LPT, 0)
+ PC_LPT(config, m_pi1, 0);
- MCFG_DEVICE_ADD(KBDC_TAG, KBDC8042, 0)
- MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_PS2)
- MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("^maincpu", INPUT_LINE_RESET))
+ KBDC8042(config, m_kbdc);
+ m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_PS2);
+ m_kbdc->system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
- MCFG_DEVICE_ADD(PIT_TAG, PIT8254, 0)
- MCFG_PIT8253_CLK0(1000000)
- MCFG_PIT8253_CLK1(1000000)
- MCFG_PIT8253_CLK2(1000000)
- MCFG_PIT8253_OUT2_HANDLER(WRITELINE(KBDC_TAG, kbdc8042_device, write_out2))
+ PIT8254(config, m_pit, 0);
+ m_pit->set_clk<0>(1000000);
+ m_pit->set_clk<1>(1000000);
+ m_pit->set_clk<2>(1000000);
+ m_pit->out_handler<2>().set(m_kbdc, FUNC(kbdc8042_device::write_out2));
MACHINE_CONFIG_END
diff --git a/src/mame/machine/ioc2.h b/src/mame/machine/ioc2.h
index 8148253378a..f4f2531f010 100644
--- a/src/mame/machine/ioc2.h
+++ b/src/mame/machine/ioc2.h
@@ -185,8 +185,8 @@ class ioc2_guinness_device : public ioc2_device
{
public:
template <typename T>
- ioc2_guinness_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag)
- : ioc2_guinness_device(mconfig, tag, owner, clock)
+ ioc2_guinness_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag)
+ : ioc2_guinness_device(mconfig, tag, owner, (uint32_t)0)
{
set_cpu_tag(std::forward<T>(cpu_tag));
}
@@ -201,8 +201,8 @@ class ioc2_full_house_device : public ioc2_device
{
public:
template <typename T>
- ioc2_full_house_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag)
- : ioc2_full_house_device(mconfig, tag, owner, clock)
+ ioc2_full_house_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag)
+ : ioc2_full_house_device(mconfig, tag, owner, (uint32_t)0)
{
set_cpu_tag(std::forward<T>(cpu_tag));
}
diff --git a/src/mame/machine/sgi.h b/src/mame/machine/sgi.h
index 428d68ef499..c47fc0c6879 100644
--- a/src/mame/machine/sgi.h
+++ b/src/mame/machine/sgi.h
@@ -16,6 +16,11 @@
class sgi_mc_device : public device_t
{
public:
+ sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner)
+ : sgi_mc_device(mconfig, tag, owner, (uint32_t)0)
+ {
+ }
+
sgi_mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ32_MEMBER(read);
diff --git a/src/mame/video/newport.h b/src/mame/video/newport.h
index 0b64803b623..b1ff724d607 100644
--- a/src/mame/video/newport.h
+++ b/src/mame/video/newport.h
@@ -2,7 +2,6 @@
// copyright-holders:Ryan Holtz
/*
SGI "Newport" graphics board used in the Indy and some Indigo2s
-
*/
#ifndef MAME_VIDEO_NEWPORT_H
@@ -13,8 +12,12 @@
class newport_video_device : public device_t
{
public:
- newport_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ newport_video_device(const machine_config &mconfig, const char *tag, device_t *owner)
+ : newport_video_device(mconfig, tag, owner, (uint32_t)0) // TODO: Use actual pixel clock
+ {
+ }
+ newport_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
DECLARE_READ32_MEMBER( rex3_r );
DECLARE_WRITE32_MEMBER( rex3_w );