summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-08-02 01:35:31 +0200
committer mooglyguy <therealmogminer@gmail.com>2018-08-02 01:35:43 +0200
commitaaff2f9c47d588d8132541a389b0d2442d13cbea (patch)
tree922eb022692e42e2d3c8e32a1c8fe4e30e597af8
parent2e44690def4335dca36e7d4e28e29181a5acad86 (diff)
-mac128, macpci, nsg6809: Eliminated old-style MACHINE_CONFIG use. [Ryan Holtz]
-rw-r--r--src/devices/machine/ncr5380.h1
-rw-r--r--src/devices/machine/sonydriv.cpp6
-rw-r--r--src/devices/machine/sonydriv.h4
-rw-r--r--src/devices/machine/z80scc.h1
-rw-r--r--src/mame/drivers/mac128.cpp136
-rw-r--r--src/mame/drivers/macpci.cpp69
-rw-r--r--src/mame/drivers/nsg6809.cpp27
-rw-r--r--src/mame/machine/cuda.h4
-rw-r--r--src/mame/machine/mackbd.h2
9 files changed, 138 insertions, 112 deletions
diff --git a/src/devices/machine/ncr5380.h b/src/devices/machine/ncr5380.h
index d6f5eb76d06..b2f7e4f2509 100644
--- a/src/devices/machine/ncr5380.h
+++ b/src/devices/machine/ncr5380.h
@@ -46,6 +46,7 @@ public:
ncr5380_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_callback() { return m_irq_cb.bind(); }
// our API
uint8_t ncr5380_read_reg(uint32_t offset);
diff --git a/src/devices/machine/sonydriv.cpp b/src/devices/machine/sonydriv.cpp
index c18b6429ae0..f6f1a604648 100644
--- a/src/devices/machine/sonydriv.cpp
+++ b/src/devices/machine/sonydriv.cpp
@@ -578,3 +578,9 @@ void sonydriv_floppy_image_device::call_unload()
legacy_floppy_image_device::call_unload();
}
+
+void sonydriv_floppy_image_device::legacy_2_drives_add(machine_config &mconfig, const floppy_interface *config)
+{
+ FLOPPY_SONY(mconfig, FLOPPY_0).set_floppy_config(config);
+ FLOPPY_SONY(mconfig, FLOPPY_1).set_floppy_config(config);
+}
diff --git a/src/devices/machine/sonydriv.h b/src/devices/machine/sonydriv.h
index 82404805a16..f547d93216b 100644
--- a/src/devices/machine/sonydriv.h
+++ b/src/devices/machine/sonydriv.h
@@ -40,7 +40,9 @@ class sonydriv_floppy_image_device : public legacy_floppy_image_device
{
public:
// construction/destruction
- sonydriv_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ sonydriv_floppy_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+
+ static void legacy_2_drives_add(machine_config &mconfig, const floppy_interface *config);
virtual void call_unload() override;
diff --git a/src/devices/machine/z80scc.h b/src/devices/machine/z80scc.h
index 50ba0ee0c02..4927fccab3b 100644
--- a/src/devices/machine/z80scc.h
+++ b/src/devices/machine/z80scc.h
@@ -387,6 +387,7 @@ public:
template <unsigned N, class Object> devcb_base &set_out_rxdrq_callback(Object &&cb) { return m_out_rxdrq_cb[N].set_callback(std::forward<Object>(cb)); }
template <unsigned N, class Object> devcb_base &set_out_txdrq_callback(Object &&cb) { return m_out_txdrq_cb[N].set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
+ auto out_int_callback() { return m_out_int_cb.bind(); }
void set_cputag(const char *tag) { m_cputag = tag; }
diff --git a/src/mame/drivers/mac128.cpp b/src/mame/drivers/mac128.cpp
index a53a0d014fc..197b6dd4121 100644
--- a/src/mame/drivers/mac128.cpp
+++ b/src/mame/drivers/mac128.cpp
@@ -170,7 +170,7 @@ public:
void init_macplus();
private:
- required_device<cpu_device> m_maincpu;
+ required_device<m68000_device> m_maincpu;
required_device<via6522_device> m_via;
required_device<ram_device> m_ram;
optional_device<ncr5380_device> m_ncr5380;
@@ -219,6 +219,7 @@ private:
int count_x, count_y;
int m_last_was_x;
int m_screen_buffer;
+ emu_timer *m_scan_timer;
// interrupts
int m_scc_interrupt, m_via_interrupt, m_scsi_interrupt, m_last_taken_interrupt;
@@ -244,9 +245,9 @@ private:
DECLARE_WRITE_LINE_MEMBER(mac_scsi_irq);
DECLARE_WRITE_LINE_MEMBER(set_scc_interrupt);
- TIMER_DEVICE_CALLBACK_MEMBER(mac_scanline);
+ TIMER_CALLBACK_MEMBER(mac_scanline);
DECLARE_VIDEO_START(mac);
- DECLARE_PALETTE_INIT(mac);
+ void palette_init(palette_device &palette);
uint32_t screen_update_mac(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
#ifndef MAC_USE_EMULATED_KBD
TIMER_CALLBACK_MEMBER(kbd_clock);
@@ -288,6 +289,9 @@ void mac128_state::machine_start()
m_ram_size = m_ram->size()>>1;
m_ram_mask = m_ram_size - 1;
m_rom_ptr = (u16*)memregion("bootrom")->base();
+
+ if (!m_scan_timer)
+ m_scan_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mac128_state::mac_scanline), this));
}
void mac128_state::machine_reset()
@@ -312,6 +316,9 @@ void mac128_state::machine_reset()
m_irq_count = 0;
m_ca1_data = 0;
m_ca2_data = 0;
+
+ const int next_vpos = m_screen->vpos() + 1;
+ m_scan_timer->adjust(m_screen->time_until_pos(next_vpos), next_vpos);
}
READ16_MEMBER(mac128_state::ram_r)
@@ -433,7 +440,7 @@ void mac128_state::update_volume()
}
}
-TIMER_DEVICE_CALLBACK_MEMBER(mac128_state::mac_scanline)
+TIMER_CALLBACK_MEMBER(mac128_state::mac_scanline)
{
int scanline = param;
uint16_t *mac_snd_buf_ptr;
@@ -458,6 +465,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mac128_state::mac_scanline)
}
m_dac->write(mac_snd_buf_ptr[scanline] >> 8);
+ m_scan_timer->adjust(m_screen->time_until_pos(scanline+1), (scanline+1) % m_screen->height());
}
WRITE_LINE_MEMBER(mac128_state::mac_scsi_irq)
@@ -1221,7 +1229,7 @@ void mac128_state::mac128_state_load()
{
}
-PALETTE_INIT_MEMBER(mac128_state,mac)
+void mac128_state::palette_init(palette_device &palette)
{
palette.set_pen_color(0, 0xff, 0xff, 0xff);
palette.set_pen_color(1, 0x00, 0x00, 0x00);
@@ -1324,92 +1332,90 @@ static const floppy_interface mac_floppy_interface =
"floppy_3_5"
};
-MACHINE_CONFIG_START(mac128_state::mac512ke)
+void mac128_state::mac512ke(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, C7M) /* 7.8336 MHz */
- MCFG_DEVICE_PROGRAM_MAP(mac512ke_map)
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ M68000(config, m_maincpu, C7M); /* 7.8336 MHz */
+ m_maincpu->set_addrmap(AS_PROGRAM, &mac128_state::mac512ke_map);
+ config.m_minimum_quantum = attotime::from_hz(60);
/* video hardware */
- MCFG_SCREEN_ADD(MAC_SCREEN_NAME, RASTER)
- MCFG_SCREEN_RAW_PARAMS(C7M*2, MAC_H_TOTAL, 0, MAC_H_VIS, MAC_V_TOTAL, 0, MAC_V_VIS)
- MCFG_SCREEN_UPDATE_DRIVER(mac128_state, screen_update_mac)
- MCFG_SCREEN_PALETTE("palette")
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(C7M*2, MAC_H_TOTAL, 0, MAC_H_VIS, MAC_V_TOTAL, 0, MAC_V_VIS);
+ m_screen->set_screen_update(FUNC(mac128_state::screen_update_mac));
+ m_screen->set_palette("palette");
- MCFG_PALETTE_ADD("palette", 2)
- MCFG_PALETTE_INIT_OWNER(mac128_state,mac)
+ palette_device &palette(PALETTE(config, "palette", 2));
+ palette.set_init(DEVICE_SELF_OWNER, FUNC(mac128_state::palette_init));
MCFG_VIDEO_START_OVERRIDE(mac128_state,mac)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mac128_state, mac_scanline, "screen", 0, 1)
-
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MCFG_DEVICE_ADD(DAC_TAG, DAC_8BIT_PWM, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // 2 x ls161
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, DAC_TAG, 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, DAC_TAG, -1.0, DAC_VREF_NEG_INPUT)
+ DAC_8BIT_PWM(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // 2 x ls161
+ voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref"));
+ vreg.set_output(5.0);
+ vreg.add_route(0, DAC_TAG, 1.0, DAC_VREF_POS_INPUT);
+ vreg.add_route(0, DAC_TAG, -1.0, DAC_VREF_NEG_INPUT);
/* devices */
- MCFG_RTC3430042_ADD("rtc", 32.768_kHz_XTAL)
- MCFG_IWM_ADD("fdc", mac_iwm_interface)
- MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_ADD(mac_floppy_interface)
-
- MCFG_DEVICE_ADD("scc", SCC85C30, C7M)
- MCFG_Z80SCC_OFFSETS(C3_7M, 0, C3_7M, 0)
- MCFG_Z80SCC_OUT_INT_CB(WRITELINE(*this, mac128_state, set_scc_interrupt))
-
- MCFG_DEVICE_ADD("via6522_0", VIA6522, 1000000)
- MCFG_VIA6522_READPA_HANDLER(READ8(*this, mac128_state,mac_via_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(*this, mac128_state,mac_via_in_b))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, mac128_state,mac_via_out_a))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, mac128_state,mac_via_out_b))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, mac128_state,mac_via_out_cb2))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, mac128_state,mac_via_irq))
-
- MCFG_MACKBD_ADD(MACKBD_TAG)
+ RTC3430042(config, m_rtc, 32.768_kHz_XTAL);
+ IWM(config, m_iwm, 0).set_config(&mac_iwm_interface);
+ sonydriv_floppy_image_device::legacy_2_drives_add(config, &mac_floppy_interface);
+
+ scc85c30_device &scc(SCC85C30(config, "scc", C7M));
+ scc.configure_channels(C3_7M, 0, C3_7M, 0);
+ scc.out_int_callback().set(FUNC(mac128_state::set_scc_interrupt));
+
+ VIA6522(config, m_via, 1000000);
+ m_via->readpa_handler().set(FUNC(mac128_state::mac_via_in_a));
+ m_via->readpb_handler().set(FUNC(mac128_state::mac_via_in_b));
+ m_via->writepa_handler().set(FUNC(mac128_state::mac_via_out_a));
+ m_via->writepb_handler().set(FUNC(mac128_state::mac_via_out_b));
+ m_via->cb2_handler().set(FUNC(mac128_state::mac_via_out_cb2));
+ m_via->irq_handler().set(FUNC(mac128_state::mac_via_irq));
+
#ifdef MAC_USE_EMULATED_KBD
- MCFG_MACKBD_DATAOUT_HANDLER(WRITELINE("via6522_0", via6522_device, write_cb2))
- MCFG_MACKBD_CLKOUT_HANDLER(WRITELINE(*this, mac128_state, mac_kbd_clk_in))
+ mackbd_device &mackbd(MACKBD(config, MACKBD_TAG, 0));
+ mackbd.dataout_handler().set(m_via, FUNC(via6522_device::write_cb2));
+ mackbd.clkout_handler().set(FUNC(mac128_state::mac_kbd_clk_in));
+#else
+ MACKBD(config, MACKBD_TAG, 0);
#endif
/* internal ram */
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("512K")
+ RAM(config, m_ram);
+ m_ram->set_default_size("512K");
// software list
- MCFG_SOFTWARE_LIST_ADD("flop35_list","mac_flop")
- MCFG_SOFTWARE_LIST_ADD("hdd_list", "mac_hdd")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "flop35_list").set_type("mac_flop", SOFTWARE_LIST_ORIGINAL_SYSTEM);
+ SOFTWARE_LIST(config, "hdd_list").set_type("mac_hdd", SOFTWARE_LIST_ORIGINAL_SYSTEM);
+}
-MACHINE_CONFIG_START(mac128_state::mac128k)
+void mac128_state::mac128k(machine_config &config)
+{
mac512ke(config);
-
- /* internal ram */
- MCFG_RAM_MODIFY(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("128K")
-MACHINE_CONFIG_END
+ m_ram->set_default_size("128K");
+}
-MACHINE_CONFIG_START(mac128_state::macplus)
+void mac128_state::macplus(machine_config &config)
+{
mac512ke(config);
- MCFG_DEVICE_MODIFY( "maincpu" )
- MCFG_DEVICE_PROGRAM_MAP(macplus_map)
-
- MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_6)
- MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE2, "harddisk", SCSIHD, SCSI_ID_5)
+ m_maincpu->set_addrmap(AS_PROGRAM, &mac128_state::macplus_map);
- MCFG_DEVICE_ADD("ncr5380", NCR5380, C7M)
- MCFG_LEGACY_SCSI_PORT("scsi")
- MCFG_NCR5380_IRQ_CB(WRITELINE(*this, mac128_state, mac_scsi_irq))
+ scsi_port_device &scsibus(SCSI_PORT(config, "scsi"));
+ scsibus.set_slot_device(1, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_6));
+ scsibus.set_slot_device(2, "harddisk", SCSIHD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_5));
- MCFG_LEGACY_FLOPPY_SONY_2_DRIVES_MODIFY(mac_floppy_interface)
+ NCR5380(config, m_ncr5380, C7M);
+ m_ncr5380->set_scsi_port("scsi");
+ m_ncr5380->irq_callback().set(FUNC(mac128_state::mac_scsi_irq));
/* internal ram */
- MCFG_RAM_MODIFY(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("4M")
- MCFG_RAM_EXTRA_OPTIONS("1M,2M,2560K,4M")
-MACHINE_CONFIG_END
+ m_ram->set_default_size("4M");
+ m_ram->set_extra_options("1M,2M,2560K,4M");
+}
static INPUT_PORTS_START( macplus )
PORT_START("MOUSE0") /* Mouse - button */
diff --git a/src/mame/drivers/macpci.cpp b/src/mame/drivers/macpci.cpp
index a4b9ad2c86a..3bc9360b946 100644
--- a/src/mame/drivers/macpci.cpp
+++ b/src/mame/drivers/macpci.cpp
@@ -91,54 +91,57 @@ uint32_t macpci_state::screen_update_pippin(screen_device &screen, bitmap_ind16
return 0;
}
-MACHINE_CONFIG_START(macpci_state::pippin)
+void macpci_state::pippin(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", PPC603, 66000000)
- MCFG_DEVICE_PROGRAM_MAP(pippin_mem)
+ PPC603(config, m_maincpu, 66000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &macpci_state::pippin_mem);
/* 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(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
- MCFG_SCREEN_UPDATE_DRIVER(macpci_state, screen_update_pippin)
- MCFG_SCREEN_PALETTE("palette")
+ 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(640, 480);
+ screen.set_visarea(0, 640-1, 0, 480-1);
+ screen.set_screen_update(FUNC(macpci_state::screen_update_pippin));
+ screen.set_palette("palette");
- MCFG_PALETTE_ADD_MONOCHROME("palette")
+ palette_device &palette(PALETTE(config, "palette", 2));
+ palette.set_init("palette", FUNC(palette_device::palette_init_monochrome));
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD( "cdda", CDDA )
- MCFG_SOUND_ROUTE( 0, "lspeaker", 1.00 )
- MCFG_SOUND_ROUTE( 1, "rspeaker", 1.00 )
+ cdda_device &cdda(CDDA(config, "cdda"));
+ cdda.add_route(0, "lspeaker", 1.00);
+ cdda.add_route(1, "rspeaker", 1.00);
- MCFG_CDROM_ADD("cdrom")
- MCFG_CDROM_INTERFACE("pippin_cdrom")
- MCFG_SOFTWARE_LIST_ADD("cd_list","pippin")
+ cdrom_image_device &cdrom(CDROM(config, "cdrom", 0));
+ cdrom.set_interface("pippin_cdrom");
+ SOFTWARE_LIST(config, "cd_list").set_type("pippin", SOFTWARE_LIST_ORIGINAL_SYSTEM);
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("32M")
+ RAM(config, m_ram);
+ m_ram->set_default_size("32M");
- MCFG_DEVICE_ADD("via6522_0", VIA6522, C7M/10)
- MCFG_VIA6522_READPA_HANDLER(READ8(*this, macpci_state, mac_via_in_a))
- MCFG_VIA6522_READPB_HANDLER(READ8(*this, macpci_state, mac_via_in_b))
- MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, macpci_state,mac_via_out_a))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, macpci_state,mac_via_out_b))
- MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, macpci_state, mac_adb_via_out_cb2))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, macpci_state,mac_via_irq))
+ VIA6522(config, m_via1, C7M/10);
+ m_via1->readpa_handler().set(FUNC(macpci_state::mac_via_in_a));
+ m_via1->readpb_handler().set(FUNC(macpci_state::mac_via_in_b));
+ m_via1->writepa_handler().set(FUNC(macpci_state::mac_via_out_a));
+ m_via1->writepb_handler().set(FUNC(macpci_state::mac_via_out_b));
+ m_via1->cb2_handler().set(FUNC(macpci_state::mac_adb_via_out_cb2));
+ m_via1->irq_handler().set(FUNC(macpci_state::mac_via_irq));
//MCFG_DEVICE_ADD("scc", SCC8530, C7M)
//MCFG_Z8530_INTRQ_CALLBACK(WRITELINE(*this, macpci_state, set_scc_interrupt))
- MCFG_CUDA_ADD(CUDA_341S0060)
- MCFG_CUDA_RESET_CALLBACK(WRITELINE(*this, macpci_state, cuda_reset_w))
- MCFG_CUDA_LINECHANGE_CALLBACK(WRITELINE(*this, macpci_state, cuda_adb_linechange_w))
- MCFG_CUDA_VIA_CLOCK_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb1))
- MCFG_CUDA_VIA_DATA_CALLBACK(WRITELINE("via6522_0", via6522_device, write_cb2))
- MCFG_QUANTUM_PERFECT_CPU("maincpu")
-MACHINE_CONFIG_END
+ CUDA(config, m_cuda, 0);
+ m_cuda->set_type(CUDA_341S0060);
+ m_cuda->reset_callback().set(FUNC(macpci_state::cuda_reset_w));
+ m_cuda->linechange_callback().set(FUNC(macpci_state::cuda_adb_linechange_w));
+ m_cuda->via_clock_callback().set(m_via1, FUNC(via6522_device::write_cb1));
+ m_cuda->via_data_callback().set(m_via1, FUNC(via6522_device::write_cb2));
+ config.m_perfect_cpu_quantum = subtag("maincpu");
+}
/* ROM definition */
/*
diff --git a/src/mame/drivers/nsg6809.cpp b/src/mame/drivers/nsg6809.cpp
index 1029a53f018..32904a6bef1 100644
--- a/src/mame/drivers/nsg6809.cpp
+++ b/src/mame/drivers/nsg6809.cpp
@@ -55,7 +55,7 @@ public:
private:
void main_map(address_map &map);
- required_device<cpu_device> m_maincpu;
+ required_device<mc6809_device> m_maincpu;
};
@@ -71,22 +71,23 @@ void nsg6809_state::main_map(address_map &map)
static INPUT_PORTS_START( pitchhit )
INPUT_PORTS_END
-MACHINE_CONFIG_START(nsg6809_state::pitchhit)
- MCFG_DEVICE_ADD("maincpu", MC6809, XTAL(4'000'000)) // clock buffered through 74HC4060
- MCFG_DEVICE_PROGRAM_MAP(main_map)
+void nsg6809_state::pitchhit(machine_config &config)
+{
+ MC6809(config, m_maincpu, XTAL(4'000'000)); // clock buffered through 74HC4060
+ m_maincpu->set_addrmap(AS_PROGRAM, &nsg6809_state::main_map);
- MCFG_DEVICE_ADD("via", VIA6522, XTAL(4'000'000) / 4)
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<0>))
+ via6522_device &via(VIA6522(config, "via", XTAL(4'000'000) / 4));
+ via.irq_handler().set("mainirq", FUNC(input_merger_device::in_w<0>));
- MCFG_DEVICE_ADD("acia", MOS6551, 0)
- MCFG_MOS6551_XTAL(XTAL(1'843'200))
- MCFG_MOS6551_IRQ_HANDLER(WRITELINE("mainirq", input_merger_device, in_w<1>))
+ mos6551_device &acia(MOS6551(config, "acia", 0));
+ acia.set_xtal(XTAL(1'843'200));
+ acia.irq_handler().set("mainirq", FUNC(input_merger_device::in_w<1>));
- MCFG_WATCHDOG_ADD("deadman")
+ WATCHDOG_TIMER(config, "deadman", 0);
- MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
- MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", M6809_IRQ_LINE))
-MACHINE_CONFIG_END
+ input_merger_device &merger(INPUT_MERGER_ANY_HIGH(config, "mainirq"));
+ merger.output_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
+}
/*
diff --git a/src/mame/machine/cuda.h b/src/mame/machine/cuda.h
index 158784a1198..d0bbc029204 100644
--- a/src/mame/machine/cuda.h
+++ b/src/mame/machine/cuda.h
@@ -100,6 +100,10 @@ public:
template <class Object> devcb_base &set_linechange_cb(Object &&wr) { return write_linechange.set_callback(std::forward<Object>(wr)); }
template <class Object> devcb_base &set_via_clock_cb(Object &&wr) { return write_via_clock.set_callback(std::forward<Object>(wr)); }
template <class Object> devcb_base &set_via_data_cb(Object &&wr) { return write_via_data.set_callback(std::forward<Object>(wr)); }
+ auto reset_callback() { return write_reset.bind(); }
+ auto linechange_callback() { return write_linechange.bind(); }
+ auto via_clock_callback() { return write_via_clock.bind(); }
+ auto via_data_callback() { return write_via_data.bind(); }
devcb_write_line write_reset, write_linechange, write_via_clock, write_via_data;
diff --git a/src/mame/machine/mackbd.h b/src/mame/machine/mackbd.h
index 4fba653cfc4..f91d6a14d00 100644
--- a/src/mame/machine/mackbd.h
+++ b/src/mame/machine/mackbd.h
@@ -38,6 +38,8 @@ public:
// config helper
template <class Object> devcb_base &set_clkout_handler(Object &&cb) { return m_clkout_handler.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_dataout_handler(Object &&cb) { return m_dataout_handler.set_callback(std::forward<Object>(cb)); }
+ auto clkout_handler() { return m_clkout_handler.bind(); }
+ auto dataout_handler() { return m_dataout_handler.bind(); }
// construction/destruction
mackbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);