summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/devices/bus/coco/coco_t4426.cpp31
-rw-r--r--src/devices/machine/mb87078.h16
-rw-r--r--src/devices/machine/mb8795.h25
-rw-r--r--src/devices/machine/mb89363b.h73
-rw-r--r--src/devices/machine/mc14411.h44
-rw-r--r--src/mame/audio/taito_en.cpp4
-rw-r--r--src/mame/drivers/force68k.cpp22
-rw-r--r--src/mame/drivers/kenseim.cpp23
-rw-r--r--src/mame/drivers/next.cpp10
-rw-r--r--src/mame/drivers/proteus3.cpp32
-rw-r--r--src/mame/drivers/swtpc.cpp80
-rw-r--r--src/mame/drivers/swtpc09.cpp4
-rw-r--r--src/mame/drivers/taito_b.cpp12
13 files changed, 131 insertions, 245 deletions
diff --git a/src/devices/bus/coco/coco_t4426.cpp b/src/devices/bus/coco/coco_t4426.cpp
index fa34a31c31c..eaa6f651ef2 100644
--- a/src/devices/bus/coco/coco_t4426.cpp
+++ b/src/devices/bus/coco/coco_t4426.cpp
@@ -148,7 +148,8 @@ namespace
IMPLEMENTATION
***************************************************************************/
-MACHINE_CONFIG_START(coco_t4426_device::device_add_mconfig)
+void coco_t4426_device::device_add_mconfig(machine_config &config)
+{
PIA6821(config, m_pia, 0);
m_pia->writepa_handler().set(FUNC(coco_t4426_device::pia_A_w));
@@ -156,22 +157,22 @@ MACHINE_CONFIG_START(coco_t4426_device::device_add_mconfig)
m_uart->txd_handler().set(SERIAL_TAG, FUNC(rs232_port_device::write_txd));
m_uart->rts_handler().set(SERIAL_TAG, FUNC(rs232_port_device::write_rts));
- MCFG_DEVICE_ADD(SERIAL_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(UART_TAG, acia6850_device, write_rxd))
- MCFG_RS232_CTS_HANDLER(WRITELINE(UART_TAG, acia6850_device, write_cts))
+ rs232_port_device &rs232(RS232_PORT(config, SERIAL_TAG, default_rs232_devices, nullptr));
+ rs232.rxd_handler().set(UART_TAG, FUNC(acia6850_device::write_rxd));
+ rs232.cts_handler().set(UART_TAG, FUNC(acia6850_device::write_cts));
/* Bit Rate Generator */
- MCFG_DEVICE_ADD(BRG_TAG, MC14411, 1.8432_MHz_XTAL)
- MCFG_MC14411_F1_CB(WRITELINE(*this, coco_t4426_device, write_f1_clock))
- MCFG_MC14411_F3_CB(WRITELINE(*this, coco_t4426_device, write_f3_clock))
- MCFG_MC14411_F5_CB(WRITELINE(*this, coco_t4426_device, write_f5_clock))
- MCFG_MC14411_F7_CB(WRITELINE(*this, coco_t4426_device, write_f7_clock))
- MCFG_MC14411_F8_CB(WRITELINE(*this, coco_t4426_device, write_f8_clock))
- MCFG_MC14411_F9_CB(WRITELINE(*this, coco_t4426_device, write_f9_clock))
- MCFG_MC14411_F11_CB(WRITELINE(*this, coco_t4426_device, write_f11_clock))
- MCFG_MC14411_F13_CB(WRITELINE(*this, coco_t4426_device, write_f13_clock))
- MCFG_MC14411_F15_CB(WRITELINE(*this, coco_t4426_device, write_f15_clock))
-MACHINE_CONFIG_END
+ MC14411(config, m_brg, 1.8432_MHz_XTAL);
+ m_brg->out_f<1>().set(FUNC(coco_t4426_device::write_f1_clock));
+ m_brg->out_f<3>().set(FUNC(coco_t4426_device::write_f3_clock));
+ m_brg->out_f<5>().set(FUNC(coco_t4426_device::write_f5_clock));
+ m_brg->out_f<7>().set(FUNC(coco_t4426_device::write_f7_clock));
+ m_brg->out_f<8>().set(FUNC(coco_t4426_device::write_f8_clock));
+ m_brg->out_f<9>().set(FUNC(coco_t4426_device::write_f9_clock));
+ m_brg->out_f<11>().set(FUNC(coco_t4426_device::write_f11_clock));
+ m_brg->out_f<13>().set(FUNC(coco_t4426_device::write_f13_clock));
+ m_brg->out_f<15>().set(FUNC(coco_t4426_device::write_f15_clock));
+}
ROM_START( coco_t4426 )
// Part of this region is filled by set_bank
diff --git a/src/devices/machine/mb87078.h b/src/devices/machine/mb87078.h
index 61ef9aac8ea..ba58bdfb089 100644
--- a/src/devices/machine/mb87078.h
+++ b/src/devices/machine/mb87078.h
@@ -12,24 +12,12 @@
#pragma once
-
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define MCFG_MB87078_GAIN_CHANGED_CB(_devcb) \
- downcast<mb87078_device &>(*device).set_gain_changed_callback(DEVCB_##_devcb);
-
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
-
class mb87078_device : public device_t
{
public:
- mb87078_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb87078_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
- template <class Object> devcb_base &set_gain_changed_callback(Object &&cb) { return m_gain_changed_cb.set_callback(std::forward<Object>(cb)); }
+ auto gain_changed() { return m_gain_changed_cb.bind(); }
void data_w(int data, int dsel);
void reset_comp_w(int level);
diff --git a/src/devices/machine/mb8795.h b/src/devices/machine/mb8795.h
index a3b6e6244cc..6662cd96ebc 100644
--- a/src/devices/machine/mb8795.h
+++ b/src/devices/machine/mb8795.h
@@ -3,33 +3,16 @@
#ifndef MAME_MACHINE_MB8795_H
#define MAME_MACHINE_MB8795_H
-#define MCFG_MB8795_ADD(_tag, _tx_irq, _rx_irq, _tx_drq, _rx_drq) \
- MCFG_DEVICE_ADD(_tag, MB8795, 0) \
- downcast<mb8795_device *>(device)->set_irq_cb(_tx_irq, _rx_irq); \
- downcast<mb8795_device *>(device)->set_drq_cb(_tx_drq, _rx_drq);
-
-#define MCFG_MB8795_TX_IRQ_CALLBACK(_write) \
- downcast<mb8795_device &>(*device).set_tx_irq_wr_callback(DEVCB_##_write);
-
-#define MCFG_MB8795_RX_IRQ_CALLBACK(_write) \
- downcast<mb8795_device &>(*device).set_rx_irq_wr_callback(DEVCB_##_write);
-
-#define MCFG_MB8795_TX_DRQ_CALLBACK(_write) \
- downcast<mb8795_device &>(*device).set_tx_drq_wr_callback(DEVCB_##_write);
-
-#define MCFG_MB8795_RX_DRQ_CALLBACK(_write) \
- downcast<mb8795_device &>(*device).set_rx_drq_wr_callback(DEVCB_##_write);
-
class mb8795_device : public device_t,
public device_network_interface
{
public:
mb8795_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_tx_irq_wr_callback(Object &&cb) { return irq_tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_rx_irq_wr_callback(Object &&cb) { return irq_rx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_tx_drq_wr_callback(Object &&cb) { return drq_tx_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_rx_drq_wr_callback(Object &&cb) { return drq_rx_cb.set_callback(std::forward<Object>(cb)); }
+ auto tx_irq() { return irq_tx_cb.bind(); }
+ auto rx_irq() { return irq_rx_cb.bind(); }
+ auto tx_drq() { return drq_tx_cb.bind(); }
+ auto rx_drq() { return drq_rx_cb.bind(); }
void tx_dma_w(uint8_t data, bool eof);
void rx_dma_r(uint8_t &data, bool &eof);
diff --git a/src/devices/machine/mb89363b.h b/src/devices/machine/mb89363b.h
index 755730d05aa..da8198288c0 100644
--- a/src/devices/machine/mb89363b.h
+++ b/src/devices/machine/mb89363b.h
@@ -12,78 +12,33 @@
#pragma once
-
#include "machine/i8255.h"
DECLARE_DEVICE_TYPE(MB89363B, mb89363b_device)
-#define MCFG_MB89363B_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, MB89363B, 0)
-
-
-
-#define MCFG_MB89363B_IN_PORTA_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_in_a_pa_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_IN_PORTB_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_in_a_pb_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_IN_PORTC_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_in_a_pc_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_OUT_PORTA_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_out_a_pa_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_OUT_PORTB_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_out_a_pb_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_OUT_PORTC_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_out_a_pc_callback(DEVCB_##_devcb);
-
-
-#define MCFG_MB89363B_IN_PORTD_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_in_b_pa_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_IN_PORTE_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_in_b_pb_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_IN_PORTF_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_in_b_pc_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_OUT_PORTD_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_out_b_pa_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_OUT_PORTE_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_out_b_pb_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89363B_OUT_PORTF_CB(_devcb) \
- downcast<mb89363b_device &>(*device).set_out_b_pc_callback(DEVCB_##_devcb);
-
-
-
class mb89363b_device : public device_t
{
public:
// construction/destruction
- mb89363b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mb89363b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
- template <class Object> devcb_base &set_in_a_pa_callback(Object &&cb) { return m_in_a_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_a_pb_callback(Object &&cb) { return m_in_a_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_a_pc_callback(Object &&cb) { return m_in_a_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_a_pa_callback(Object &&cb) { return m_out_a_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_a_pb_callback(Object &&cb) { return m_out_a_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_a_pc_callback(Object &&cb) { return m_out_a_pc_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_in_b_pa_callback(Object &&cb) { return m_in_b_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_b_pb_callback(Object &&cb) { return m_in_b_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_in_b_pc_callback(Object &&cb) { return m_in_b_pc_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_b_pa_callback(Object &&cb) { return m_out_b_pa_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_b_pb_callback(Object &&cb) { return m_out_b_pb_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_out_b_pc_callback(Object &&cb) { return m_out_b_pc_cb.set_callback(std::forward<Object>(cb)); }
+ auto in_pa() { return m_in_a_pa_cb.bind(); }
+ auto in_pb() { return m_in_a_pb_cb.bind(); }
+ auto in_pc() { return m_in_a_pc_cb.bind(); }
+ auto out_pa() { return m_out_a_pa_cb.bind(); }
+ auto out_pb() { return m_out_a_pb_cb.bind(); }
+ auto out_pc() { return m_out_a_pc_cb.bind(); }
+
+ auto in_pd() { return m_in_b_pa_cb.bind(); }
+ auto in_pe() { return m_in_b_pb_cb.bind(); }
+ auto in_pf() { return m_in_b_pc_cb.bind(); }
+ auto out_pd() { return m_out_b_pa_cb.bind(); }
+ auto out_pe() { return m_out_b_pb_cb.bind(); }
+ auto out_pf() { return m_out_b_pc_cb.bind(); }
protected:
virtual void device_add_mconfig(machine_config &config) override;
diff --git a/src/devices/machine/mc14411.h b/src/devices/machine/mc14411.h
index ef5196ef363..6012e679d03 100644
--- a/src/devices/machine/mc14411.h
+++ b/src/devices/machine/mc14411.h
@@ -26,31 +26,6 @@
#pragma once
-
-//**************************************************************************
-// DEVICE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_MC14411_F1_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 0, DEVCB_##_devcb);
-#define MCFG_MC14411_F2_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 1, DEVCB_##_devcb);
-#define MCFG_MC14411_F3_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 2, DEVCB_##_devcb);
-#define MCFG_MC14411_F4_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 3, DEVCB_##_devcb);
-#define MCFG_MC14411_F5_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 4, DEVCB_##_devcb);
-#define MCFG_MC14411_F6_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 5, DEVCB_##_devcb);
-#define MCFG_MC14411_F7_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 6, DEVCB_##_devcb);
-#define MCFG_MC14411_F8_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 7, DEVCB_##_devcb);
-#define MCFG_MC14411_F9_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 8, DEVCB_##_devcb);
-#define MCFG_MC14411_F10_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb( 9, DEVCB_##_devcb);
-#define MCFG_MC14411_F11_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(10, DEVCB_##_devcb);
-#define MCFG_MC14411_F12_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(11, DEVCB_##_devcb);
-#define MCFG_MC14411_F13_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(12, DEVCB_##_devcb);
-#define MCFG_MC14411_F14_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(13, DEVCB_##_devcb);
-#define MCFG_MC14411_F15_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(14, DEVCB_##_devcb);
-#define MCFG_MC14411_F16_CB(_devcb) downcast<mc14411_device &>(*device).set_out_fx_cb(15, DEVCB_##_devcb);
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
class mc14411_device : public device_t
{
public:
@@ -86,23 +61,7 @@ public:
// construction/destruction
mc14411_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_out_fx_cb(int index, Object &&cb) { return m_out_fx_cbs[index].set_callback(std::forward<Object>(cb)); }
- auto out_f1_cb() { return m_out_fx_cbs[0].bind(); }
- auto out_f2_cb() { return m_out_fx_cbs[1].bind(); }
- auto out_f3_cb() { return m_out_fx_cbs[2].bind(); }
- auto out_f4_cb() { return m_out_fx_cbs[3].bind(); }
- auto out_f5_cb() { return m_out_fx_cbs[4].bind(); }
- auto out_f6_cb() { return m_out_fx_cbs[5].bind(); }
- auto out_f7_cb() { return m_out_fx_cbs[6].bind(); }
- auto out_f8_cb() { return m_out_fx_cbs[7].bind(); }
- auto out_f9_cb() { return m_out_fx_cbs[8].bind(); }
- auto out_f10_cb() { return m_out_fx_cbs[9].bind(); }
- auto out_f11_cb() { return m_out_fx_cbs[10].bind(); }
- auto out_f12_cb() { return m_out_fx_cbs[11].bind(); }
- auto out_f13_cb() { return m_out_fx_cbs[12].bind(); }
- auto out_f14_cb() { return m_out_fx_cbs[13].bind(); }
- auto out_f15_cb() { return m_out_fx_cbs[14].bind(); }
- auto out_f16_cb() { return m_out_fx_cbs[15].bind(); }
+ template <std::size_t Line> auto out_f() { return m_out_fx_cbs[Line-1].bind(); }
DECLARE_WRITE_LINE_MEMBER(reset_w);
DECLARE_WRITE8_MEMBER(rate_select_w);
@@ -141,7 +100,6 @@ private:
bool m_timer_enabled[16];
};
-// device type definition
DECLARE_DEVICE_TYPE(MC14411, mc14411_device)
#endif // MAME_MACHINE_MC14411_H
diff --git a/src/mame/audio/taito_en.cpp b/src/mame/audio/taito_en.cpp
index a9c77698cc4..a12c3bef195 100644
--- a/src/mame/audio/taito_en.cpp
+++ b/src/mame/audio/taito_en.cpp
@@ -210,8 +210,8 @@ MACHINE_CONFIG_START(taito_en_device::device_add_mconfig)
MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, taito_en_device, duart_irq_handler))
MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, taito_en_device, duart_output))
- MCFG_DEVICE_ADD("mb87078", MB87078, 0)
- MCFG_MB87078_GAIN_CHANGED_CB(WRITE8(*this, taito_en_device, mb87078_gain_changed))
+ MB87078(config, m_mb87078);
+ m_mb87078->gain_changed().set(FUNC(taito_en_device::mb87078_gain_changed));
MCFG_DEVICE_ADD("dpram", MB8421, 0) // host accesses this from the other side
diff --git a/src/mame/drivers/force68k.cpp b/src/mame/drivers/force68k.cpp
index 9f23d7d5172..4c2f72b8933 100644
--- a/src/mame/drivers/force68k.cpp
+++ b/src/mame/drivers/force68k.cpp
@@ -575,19 +575,19 @@ MACHINE_CONFIG_START(force68k_state::fccpu1)
ACIA6850(config, m_aciaremt, 0);
/* Bit Rate Generator */
- MCFG_DEVICE_ADD("brg", MC14411, XTAL(1'843'200))
- MCFG_MC14411_F1_CB(WRITELINE (*this, force68k_state, write_f1_clock))
- MCFG_MC14411_F3_CB(WRITELINE (*this, force68k_state, write_f3_clock))
- MCFG_MC14411_F5_CB(WRITELINE (*this, force68k_state, write_f5_clock))
- MCFG_MC14411_F7_CB(WRITELINE (*this, force68k_state, write_f7_clock))
- MCFG_MC14411_F8_CB(WRITELINE (*this, force68k_state, write_f8_clock))
- MCFG_MC14411_F9_CB(WRITELINE (*this, force68k_state, write_f9_clock))
- MCFG_MC14411_F11_CB(WRITELINE (*this, force68k_state, write_f11_clock))
- MCFG_MC14411_F13_CB(WRITELINE (*this, force68k_state, write_f13_clock))
- MCFG_MC14411_F15_CB(WRITELINE (*this, force68k_state, write_f15_clock))
+ MC14411(config, m_brg, XTAL(1'843'200));
+ m_brg->out_f<1>().set(FUNC(force68k_state::write_f1_clock));
+ m_brg->out_f<3>().set(FUNC(force68k_state::write_f3_clock));
+ m_brg->out_f<5>().set(FUNC(force68k_state::write_f5_clock));
+ m_brg->out_f<7>().set(FUNC(force68k_state::write_f7_clock));
+ m_brg->out_f<8>().set(FUNC(force68k_state::write_f8_clock));
+ m_brg->out_f<9>().set(FUNC(force68k_state::write_f9_clock));
+ m_brg->out_f<11>().set(FUNC(force68k_state::write_f11_clock));
+ m_brg->out_f<13>().set(FUNC(force68k_state::write_f13_clock));
+ m_brg->out_f<15>().set(FUNC(force68k_state::write_f15_clock));
/* RTC Real Time Clock device */
- MCFG_DEVICE_ADD("rtc", MM58167, XTAL(32'768))
+ MM58167(config, m_rtc, XTAL(32'768));
/* PIT Parallel Interface and Timer device, assuming strapped for on board clock */
PIT68230(config, m_pit, XTAL(16'000'000) / 2);
diff --git a/src/mame/drivers/kenseim.cpp b/src/mame/drivers/kenseim.cpp
index aec34d7a567..ad985da6393 100644
--- a/src/mame/drivers/kenseim.cpp
+++ b/src/mame/drivers/kenseim.cpp
@@ -477,7 +477,8 @@ static const z80_daisy_config daisy_chain_gamecpu[] =
{ nullptr }
};
-MACHINE_CONFIG_START(kenseim_state::kenseim)
+void kenseim_state::kenseim(machine_config &config)
+{
cps1_12MHz(config);
/* basic machine hardware */
@@ -493,18 +494,18 @@ MACHINE_CONFIG_START(kenseim_state::kenseim)
gamecpu.in_pc_callback().set_ioport("CAB-IN");
gamecpu.in_pd_callback().set(FUNC(kenseim_state::cpu_portd_r));
- MCFG_MB89363B_ADD("mb89363b")
+ mb89363b_device &ppi_x2(MB89363B(config, "mb89363b"));
// a,b,c always $80: all ports set as output
// d,e,f always $92: port D and E as input, port F as output
- MCFG_MB89363B_OUT_PORTA_CB(WRITE8(*this, kenseim_state, mb8936_porta_w))
- MCFG_MB89363B_OUT_PORTB_CB(WRITE8(*this, kenseim_state, mb8936_portb_w))
- MCFG_MB89363B_OUT_PORTC_CB(WRITE8(*this, kenseim_state, mb8936_portc_w))
- MCFG_MB89363B_IN_PORTD_CB(IOPORT("MOLEA"))
- MCFG_MB89363B_IN_PORTE_CB(IOPORT("MOLEB"))
- MCFG_MB89363B_OUT_PORTF_CB(WRITE8(*this, kenseim_state, mb8936_portf_w))
-
- MCFG_QUANTUM_PERFECT_CPU("maincpu")
-MACHINE_CONFIG_END
+ ppi_x2.out_pa().set(FUNC(kenseim_state::mb8936_porta_w));
+ ppi_x2.out_pb().set(FUNC(kenseim_state::mb8936_portb_w));
+ ppi_x2.out_pc().set(FUNC(kenseim_state::mb8936_portc_w));
+ ppi_x2.in_pd().set_ioport("MOLEA");
+ ppi_x2.in_pe().set_ioport("MOLEB");
+ ppi_x2.out_pf().set(FUNC(kenseim_state::mb8936_portf_w));
+
+ config.m_perfect_cpu_quantum = subtag("maincpu");
+}
static INPUT_PORTS_START( kenseim )
// the regular CPS1 input ports are used for comms with the extra board
diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp
index 8dc4435f557..d4c134c9f3a 100644
--- a/src/mame/drivers/next.cpp
+++ b/src/mame/drivers/next.cpp
@@ -1036,11 +1036,11 @@ MACHINE_CONFIG_START(next_state::next_base)
MCFG_NSCSI_ADD("scsibus:7", next_scsi_devices, "ncr5390", true)
MCFG_SLOT_OPTION_MACHINE_CONFIG("ncr5390", [this] (device_t *device) { ncr5390(device); })
- MCFG_DEVICE_ADD("net", MB8795, 0)
- MCFG_MB8795_TX_IRQ_CALLBACK(WRITELINE(*this, next_state, net_tx_irq))
- MCFG_MB8795_RX_IRQ_CALLBACK(WRITELINE(*this, next_state, net_rx_irq))
- MCFG_MB8795_TX_DRQ_CALLBACK(WRITELINE(*this, next_state, net_tx_drq))
- MCFG_MB8795_RX_DRQ_CALLBACK(WRITELINE(*this, next_state, net_rx_drq))
+ MB8795(config, net, 0);
+ net->tx_irq().set(FUNC(next_state::net_tx_irq));
+ net->rx_irq().set(FUNC(next_state::net_rx_irq));
+ net->tx_drq().set(FUNC(next_state::net_tx_drq));
+ net->rx_drq().set(FUNC(next_state::net_rx_drq));
MCFG_DEVICE_ADD("mo", NEXTMO, 0)
MCFG_NEXTMO_IRQ_CALLBACK(WRITELINE(*this, next_state, mo_irq))
diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp
index 3543bce7fc4..1b193e970b8 100644
--- a/src/mame/drivers/proteus3.cpp
+++ b/src/mame/drivers/proteus3.cpp
@@ -426,22 +426,22 @@ MACHINE_CONFIG_START(proteus3_state::proteus3)
MCFG_RS232_CTS_HANDLER(WRITELINE("acia2", acia6850_device, write_cts))
/* Bit Rate Generator */
- MCFG_DEVICE_ADD ("brg", MC14411, XTAL(1'843'200)) // crystal needs verification but is the likely one
- MCFG_MC14411_F1_CB(WRITELINE (*this, proteus3_state, write_f1_clock))
- MCFG_MC14411_F2_CB(WRITELINE (*this, proteus3_state, write_f2_clock))
- MCFG_MC14411_F3_CB(WRITELINE (*this, proteus3_state, write_f3_clock))
- MCFG_MC14411_F4_CB(WRITELINE (*this, proteus3_state, write_f4_clock))
- MCFG_MC14411_F5_CB(WRITELINE (*this, proteus3_state, write_f5_clock))
- MCFG_MC14411_F6_CB(WRITELINE (*this, proteus3_state, write_f6_clock))
- MCFG_MC14411_F7_CB(WRITELINE (*this, proteus3_state, write_f7_clock))
- MCFG_MC14411_F8_CB(WRITELINE (*this, proteus3_state, write_f8_clock))
- MCFG_MC14411_F9_CB(WRITELINE (*this, proteus3_state, write_f9_clock))
- MCFG_MC14411_F10_CB(WRITELINE (*this, proteus3_state, write_f10_clock))
- MCFG_MC14411_F11_CB(WRITELINE (*this, proteus3_state, write_f11_clock))
- MCFG_MC14411_F12_CB(WRITELINE (*this, proteus3_state, write_f12_clock))
- MCFG_MC14411_F13_CB(WRITELINE (*this, proteus3_state, write_f13_clock))
- MCFG_MC14411_F14_CB(WRITELINE (*this, proteus3_state, write_f14_clock))
- MCFG_MC14411_F15_CB(WRITELINE (*this, proteus3_state, write_f15_clock))
+ MC14411(config, m_brg, XTAL(1'843'200)); // crystal needs verification but is the likely one
+ m_brg->out_f<1>().set(FUNC(proteus3_state::write_f1_clock));
+ m_brg->out_f<2>().set(FUNC(proteus3_state::write_f2_clock));
+ m_brg->out_f<3>().set(FUNC(proteus3_state::write_f3_clock));
+ m_brg->out_f<4>().set(FUNC(proteus3_state::write_f4_clock));
+ m_brg->out_f<5>().set(FUNC(proteus3_state::write_f5_clock));
+ m_brg->out_f<6>().set(FUNC(proteus3_state::write_f6_clock));
+ m_brg->out_f<7>().set(FUNC(proteus3_state::write_f7_clock));
+ m_brg->out_f<8>().set(FUNC(proteus3_state::write_f8_clock));
+ m_brg->out_f<9>().set(FUNC(proteus3_state::write_f9_clock));
+ m_brg->out_f<10>().set(FUNC(proteus3_state::write_f10_clock));
+ m_brg->out_f<11>().set(FUNC(proteus3_state::write_f11_clock));
+ m_brg->out_f<12>().set(FUNC(proteus3_state::write_f12_clock));
+ m_brg->out_f<13>().set(FUNC(proteus3_state::write_f13_clock));
+ m_brg->out_f<14>().set(FUNC(proteus3_state::write_f14_clock));
+ m_brg->out_f<15>().set(FUNC(proteus3_state::write_f15_clock));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/swtpc.cpp b/src/mame/drivers/swtpc.cpp
index b69fc7c68a5..5f2343136f7 100644
--- a/src/mame/drivers/swtpc.cpp
+++ b/src/mame/drivers/swtpc.cpp
@@ -103,46 +103,46 @@ MACHINE_CONFIG_START(swtpc_state::swtpc)
MCFG_DEVICE_PROGRAM_MAP(mem_map)
MC14411(config, m_brg, XTAL(1'843'200));
- m_brg->out_f7_cb().set("io0", FUNC(ss50_interface_port_device::f600_1200_w)); // 1200b
- m_brg->out_f7_cb().append("io1", FUNC(ss50_interface_port_device::f600_1200_w));
- m_brg->out_f7_cb().append("io2", FUNC(ss50_interface_port_device::f600_1200_w));
- m_brg->out_f7_cb().append("io3", FUNC(ss50_interface_port_device::f600_1200_w));
- m_brg->out_f7_cb().append("io4", FUNC(ss50_interface_port_device::f600_1200_w));
- m_brg->out_f7_cb().append("io5", FUNC(ss50_interface_port_device::f600_1200_w));
- m_brg->out_f7_cb().append("io6", FUNC(ss50_interface_port_device::f600_1200_w));
- m_brg->out_f7_cb().append("io7", FUNC(ss50_interface_port_device::f600_1200_w));
- m_brg->out_f8_cb().set("io0", FUNC(ss50_interface_port_device::f600_4800_w)); // 600b
- m_brg->out_f8_cb().append("io1", FUNC(ss50_interface_port_device::f600_4800_w));
- m_brg->out_f8_cb().append("io2", FUNC(ss50_interface_port_device::f600_4800_w));
- m_brg->out_f8_cb().append("io3", FUNC(ss50_interface_port_device::f600_4800_w));
- m_brg->out_f8_cb().append("io4", FUNC(ss50_interface_port_device::f600_4800_w));
- m_brg->out_f8_cb().append("io5", FUNC(ss50_interface_port_device::f600_4800_w));
- m_brg->out_f8_cb().append("io6", FUNC(ss50_interface_port_device::f600_4800_w));
- m_brg->out_f8_cb().append("io7", FUNC(ss50_interface_port_device::f600_4800_w));
- m_brg->out_f9_cb().set("io0", FUNC(ss50_interface_port_device::f300_w)); // 300b
- m_brg->out_f9_cb().append("io1", FUNC(ss50_interface_port_device::f300_w));
- m_brg->out_f9_cb().append("io2", FUNC(ss50_interface_port_device::f300_w));
- m_brg->out_f9_cb().append("io3", FUNC(ss50_interface_port_device::f300_w));
- m_brg->out_f9_cb().append("io4", FUNC(ss50_interface_port_device::f300_w));
- m_brg->out_f9_cb().append("io5", FUNC(ss50_interface_port_device::f300_w));
- m_brg->out_f9_cb().append("io6", FUNC(ss50_interface_port_device::f300_w));
- m_brg->out_f9_cb().append("io7", FUNC(ss50_interface_port_device::f300_w));
- m_brg->out_f11_cb().set("io0", FUNC(ss50_interface_port_device::f150_9600_w)); // 150b
- m_brg->out_f11_cb().append("io1", FUNC(ss50_interface_port_device::f150_9600_w));
- m_brg->out_f11_cb().append("io2", FUNC(ss50_interface_port_device::f150_9600_w));
- m_brg->out_f11_cb().append("io3", FUNC(ss50_interface_port_device::f150_9600_w));
- m_brg->out_f11_cb().append("io4", FUNC(ss50_interface_port_device::f150_9600_w));
- m_brg->out_f11_cb().append("io5", FUNC(ss50_interface_port_device::f150_9600_w));
- m_brg->out_f11_cb().append("io6", FUNC(ss50_interface_port_device::f150_9600_w));
- m_brg->out_f11_cb().append("io7", FUNC(ss50_interface_port_device::f150_9600_w));
- m_brg->out_f13_cb().set("io0", FUNC(ss50_interface_port_device::f110_w)); // 110b
- m_brg->out_f13_cb().append("io1", FUNC(ss50_interface_port_device::f110_w));
- m_brg->out_f13_cb().append("io2", FUNC(ss50_interface_port_device::f110_w));
- m_brg->out_f13_cb().append("io3", FUNC(ss50_interface_port_device::f110_w));
- m_brg->out_f13_cb().append("io4", FUNC(ss50_interface_port_device::f110_w));
- m_brg->out_f13_cb().append("io5", FUNC(ss50_interface_port_device::f110_w));
- m_brg->out_f13_cb().append("io6", FUNC(ss50_interface_port_device::f110_w));
- m_brg->out_f13_cb().append("io7", FUNC(ss50_interface_port_device::f110_w));
+ m_brg->out_f<7>().set("io0", FUNC(ss50_interface_port_device::f600_1200_w)); // 1200b
+ m_brg->out_f<7>().append("io1", FUNC(ss50_interface_port_device::f600_1200_w));
+ m_brg->out_f<7>().append("io2", FUNC(ss50_interface_port_device::f600_1200_w));
+ m_brg->out_f<7>().append("io3", FUNC(ss50_interface_port_device::f600_1200_w));
+ m_brg->out_f<7>().append("io4", FUNC(ss50_interface_port_device::f600_1200_w));
+ m_brg->out_f<7>().append("io5", FUNC(ss50_interface_port_device::f600_1200_w));
+ m_brg->out_f<7>().append("io6", FUNC(ss50_interface_port_device::f600_1200_w));
+ m_brg->out_f<7>().append("io7", FUNC(ss50_interface_port_device::f600_1200_w));
+ m_brg->out_f<8>().set("io0", FUNC(ss50_interface_port_device::f600_4800_w)); // 600b
+ m_brg->out_f<8>().append("io1", FUNC(ss50_interface_port_device::f600_4800_w));
+ m_brg->out_f<8>().append("io2", FUNC(ss50_interface_port_device::f600_4800_w));
+ m_brg->out_f<8>().append("io3", FUNC(ss50_interface_port_device::f600_4800_w));
+ m_brg->out_f<8>().append("io4", FUNC(ss50_interface_port_device::f600_4800_w));
+ m_brg->out_f<8>().append("io5", FUNC(ss50_interface_port_device::f600_4800_w));
+ m_brg->out_f<8>().append("io6", FUNC(ss50_interface_port_device::f600_4800_w));
+ m_brg->out_f<8>().append("io7", FUNC(ss50_interface_port_device::f600_4800_w));
+ m_brg->out_f<9>().set("io0", FUNC(ss50_interface_port_device::f300_w)); // 300b
+ m_brg->out_f<9>().append("io1", FUNC(ss50_interface_port_device::f300_w));
+ m_brg->out_f<9>().append("io2", FUNC(ss50_interface_port_device::f300_w));
+ m_brg->out_f<9>().append("io3", FUNC(ss50_interface_port_device::f300_w));
+ m_brg->out_f<9>().append("io4", FUNC(ss50_interface_port_device::f300_w));
+ m_brg->out_f<9>().append("io5", FUNC(ss50_interface_port_device::f300_w));
+ m_brg->out_f<9>().append("io6", FUNC(ss50_interface_port_device::f300_w));
+ m_brg->out_f<9>().append("io7", FUNC(ss50_interface_port_device::f300_w));
+ m_brg->out_f<11>().set("io0", FUNC(ss50_interface_port_device::f150_9600_w)); // 150b
+ m_brg->out_f<11>().append("io1", FUNC(ss50_interface_port_device::f150_9600_w));
+ m_brg->out_f<11>().append("io2", FUNC(ss50_interface_port_device::f150_9600_w));
+ m_brg->out_f<11>().append("io3", FUNC(ss50_interface_port_device::f150_9600_w));
+ m_brg->out_f<11>().append("io4", FUNC(ss50_interface_port_device::f150_9600_w));
+ m_brg->out_f<11>().append("io5", FUNC(ss50_interface_port_device::f150_9600_w));
+ m_brg->out_f<11>().append("io6", FUNC(ss50_interface_port_device::f150_9600_w));
+ m_brg->out_f<11>().append("io7", FUNC(ss50_interface_port_device::f150_9600_w));
+ m_brg->out_f<13>().set("io0", FUNC(ss50_interface_port_device::f110_w)); // 110b
+ m_brg->out_f<13>().append("io1", FUNC(ss50_interface_port_device::f110_w));
+ m_brg->out_f<13>().append("io2", FUNC(ss50_interface_port_device::f110_w));
+ m_brg->out_f<13>().append("io3", FUNC(ss50_interface_port_device::f110_w));
+ m_brg->out_f<13>().append("io4", FUNC(ss50_interface_port_device::f110_w));
+ m_brg->out_f<13>().append("io5", FUNC(ss50_interface_port_device::f110_w));
+ m_brg->out_f<13>().append("io6", FUNC(ss50_interface_port_device::f110_w));
+ m_brg->out_f<13>().append("io7", FUNC(ss50_interface_port_device::f110_w));
MCFG_SS50_INTERFACE_PORT_ADD("io0", default_2rs_devices, nullptr)
MCFG_SS50_INTERFACE_IRQ_CALLBACK(WRITELINE("mainirq", input_merger_device, in_w<0>))
diff --git a/src/mame/drivers/swtpc09.cpp b/src/mame/drivers/swtpc09.cpp
index 82404f1f10c..638d3a2d23a 100644
--- a/src/mame/drivers/swtpc09.cpp
+++ b/src/mame/drivers/swtpc09.cpp
@@ -198,8 +198,8 @@ void swtpc09_state::swtpc09_base(machine_config &config)
m_acia->irq_handler().set(FUNC(swtpc09_state::acia_interrupt));
MC14411(config, m_brg, 1.8432_MHz_XTAL);
- m_brg->out_f1_cb().set(m_acia, FUNC(acia6850_device::write_txc));
- m_brg->out_f1_cb().append(m_acia, FUNC(acia6850_device::write_rxc));
+ m_brg->out_f<1>().set(m_acia, FUNC(acia6850_device::write_txc));
+ m_brg->out_f<1>().append(m_acia, FUNC(acia6850_device::write_rxc));
FD1793(config, m_fdc, 1_MHz_XTAL);
FLOPPY_CONNECTOR(config, "fdc:0", swtpc09_floppies, "dd", swtpc09_state::floppy_formats);
diff --git a/src/mame/drivers/taito_b.cpp b/src/mame/drivers/taito_b.cpp
index 7b957615713..81cb0a183e1 100644
--- a/src/mame/drivers/taito_b.cpp
+++ b/src/mame/drivers/taito_b.cpp
@@ -2203,8 +2203,8 @@ MACHINE_CONFIG_START(taitob_state::pbobble)
m_tc0640fio->write_4_callback().set(FUNC(taitob_state::player_12_coin_ctrl_w));
m_tc0640fio->read_7_callback().set_ioport("P1_P2_B");
- MCFG_DEVICE_ADD("mb87078", MB87078, 0)
- MCFG_MB87078_GAIN_CHANGED_CB(WRITE8(*this, taitob_state, mb87078_gain_changed))
+ MB87078(config, m_mb87078);
+ m_mb87078->gain_changed().set(FUNC(taitob_state::mb87078_gain_changed));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2267,8 +2267,8 @@ MACHINE_CONFIG_START(taitob_state::spacedx)
m_tc0640fio->write_4_callback().set(FUNC(taitob_state::player_12_coin_ctrl_w));
m_tc0640fio->read_7_callback().set_ioport("P1_P2_B");
- MCFG_DEVICE_ADD("mb87078", MB87078, 0)
- MCFG_MB87078_GAIN_CHANGED_CB(WRITE8(*this, taitob_state, mb87078_gain_changed))
+ MB87078(config, m_mb87078);
+ m_mb87078->gain_changed().set(FUNC(taitob_state::mb87078_gain_changed));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -2389,8 +2389,8 @@ MACHINE_CONFIG_START(taitob_state::qzshowby)
m_tc0640fio->write_4_callback().set(FUNC(taitob_state::player_12_coin_ctrl_w));
m_tc0640fio->read_7_callback().set_ioport("P1_P2_B");
- MCFG_DEVICE_ADD("mb87078", MB87078, 0)
- MCFG_MB87078_GAIN_CHANGED_CB(WRITE8(*this, taitob_state, mb87078_gain_changed))
+ MB87078(config, m_mb87078);
+ m_mb87078->gain_changed().set(FUNC(taitob_state::mb87078_gain_changed));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)