summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author mooglyguy <therealmogminer@gmail.com>2018-07-31 04:55:32 +0200
committer mooglyguy <therealmogminer@gmail.com>2018-07-31 04:56:22 +0200
commit0f21c3fc3adce625fa6366f15b2119b536f333bd (patch)
tree9d02c5bd777cf513606b2e32aea9caa88e33c7a8
parent249b42112be26464dc6030872fdbcddf3dd10980 (diff)
-8042kbdc, mb89352, mc6854: Removed legacy devcb accessors. [Ryan Holtz]
-rw-r--r--src/devices/bus/acorn/atom/econet.cpp17
-rw-r--r--src/devices/bus/acorn/system/econet.cpp16
-rw-r--r--src/devices/bus/econet/econet.h1
-rw-r--r--src/devices/cpu/i86/i286.h1
-rw-r--r--src/devices/machine/8042kbdc.h27
-rw-r--r--src/devices/machine/fdc37c93x.cpp10
-rw-r--r--src/devices/machine/mb89352.h8
-rw-r--r--src/devices/machine/mc6854.h37
-rw-r--r--src/emu/diexec.h39
-rw-r--r--src/mame/drivers/accomm.cpp12
-rw-r--r--src/mame/drivers/bbc.cpp12
-rw-r--r--src/mame/drivers/mtouchxl.cpp11
-rw-r--r--src/mame/drivers/poly.cpp6
-rw-r--r--src/mame/drivers/proteus.cpp4
-rw-r--r--src/mame/drivers/segas32.cpp8
-rw-r--r--src/mame/drivers/thomson.cpp4
-rw-r--r--src/mame/drivers/tv990.cpp6
-rw-r--r--src/mame/drivers/vis.cpp99
-rw-r--r--src/mame/drivers/x68k.cpp8
-rw-r--r--src/mame/includes/thomson.h2
-rw-r--r--src/mame/machine/thomflop.cpp2
21 files changed, 170 insertions, 160 deletions
diff --git a/src/devices/bus/acorn/atom/econet.cpp b/src/devices/bus/acorn/atom/econet.cpp
index 58f2fedee90..210ca895445 100644
--- a/src/devices/bus/acorn/atom/econet.cpp
+++ b/src/devices/bus/acorn/atom/econet.cpp
@@ -10,6 +10,7 @@
#include "emu.h"
#include "econet.h"
+#include "bus/econet/e01.h"
//**************************************************************************
// DEVICE DEFINITIONS
@@ -21,18 +22,22 @@ DEFINE_DEVICE_TYPE(ATOM_ECONET, atom_econet_device, "atom_econet", "Acorn Atom E
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(atom_econet_device::device_add_mconfig)
+void atom_econet_device::device_add_mconfig(machine_config &config)
+{
/* econet */
- MCFG_DEVICE_ADD(m_adlc, MC6854, 0)
- MCFG_MC6854_OUT_TXD_CB(WRITELINE(m_econet, econet_device, host_data_w))
- MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, atom_econet_device, bus_irq_w))
+ MC6854(config, m_adlc);
+ m_adlc->out_txd_cb().set(m_econet, FUNC(econet_device::host_data_w));
+ m_adlc->out_irq_cb().set(FUNC(atom_econet_device::bus_irq_w));
ECONET(config, m_econet, 0);
m_econet->clk_wr_callback().set(m_adlc, FUNC(mc6854_device::txc_w));
m_econet->clk_wr_callback().append(m_adlc, FUNC(mc6854_device::rxc_w));
m_econet->data_wr_callback().set(m_adlc, FUNC(mc6854_device::set_rx));
- MCFG_ECONET_SLOT_ADD("econet254", 254, econet_devices, nullptr)
-MACHINE_CONFIG_END
+
+ econet_slot_device &slot(ECONET_SLOT(config, "econet254", 0));
+ econet_devices(slot);
+ slot.set_slot(254);
+}
//**************************************************************************
// LIVE DEVICE
diff --git a/src/devices/bus/acorn/system/econet.cpp b/src/devices/bus/acorn/system/econet.cpp
index 9c731593baa..d6613f35bf7 100644
--- a/src/devices/bus/acorn/system/econet.cpp
+++ b/src/devices/bus/acorn/system/econet.cpp
@@ -23,18 +23,22 @@ DEFINE_DEVICE_TYPE(ACORN_ECONET, acorn_econet_device, "acorn_econet", "Acorn Eco
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(acorn_econet_device::device_add_mconfig)
+void acorn_econet_device::device_add_mconfig(machine_config &config)
+{
/* econet */
- MCFG_DEVICE_ADD(m_adlc, MC6854, 0)
- MCFG_MC6854_OUT_TXD_CB(WRITELINE(m_econet, econet_device, host_data_w))
- MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, acorn_econet_device, bus_irq_w))
+ MC6854(config, m_adlc);
+ m_adlc->out_txd_cb().set(m_econet, FUNC(econet_device::host_data_w));
+ m_adlc->out_irq_cb().set(FUNC(acorn_econet_device::bus_irq_w));
ECONET(config, m_econet, 0);
m_econet->clk_wr_callback().set(m_adlc, FUNC(mc6854_device::txc_w));
m_econet->clk_wr_callback().append(m_adlc, FUNC(mc6854_device::rxc_w));
m_econet->data_wr_callback().set(m_adlc, FUNC(mc6854_device::set_rx));
- MCFG_ECONET_SLOT_ADD("econet254", 254, econet_devices, nullptr)
-MACHINE_CONFIG_END
+
+ econet_slot_device &slot(ECONET_SLOT(config, "econet254", 0));
+ econet_devices(slot);
+ slot.set_slot(254);
+}
//**************************************************************************
// LIVE DEVICE
diff --git a/src/devices/bus/econet/econet.h b/src/devices/bus/econet/econet.h
index cdaccc03a25..bbe4167cfa9 100644
--- a/src/devices/bus/econet/econet.h
+++ b/src/devices/bus/econet/econet.h
@@ -161,7 +161,6 @@ private:
DECLARE_DEVICE_TYPE(ECONET, econet_device)
DECLARE_DEVICE_TYPE(ECONET_SLOT, econet_slot_device)
-
void econet_devices(device_slot_interface &device);
#endif // MAME_BUS_ECONET_ECONET_H
diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h
index 0012cd63699..97752a5d102 100644
--- a/src/devices/cpu/i86/i286.h
+++ b/src/devices/cpu/i86/i286.h
@@ -74,6 +74,7 @@ public:
typedef delegate<uint32_t (bool)> a20_cb;
template <typename Object> void set_a20_callback(Object &&cb) { m_a20_callback = std::forward<Object>(cb); }
template <class Object> devcb_base &set_shutdown_callback(Object &&cb) { return m_out_shutdown_func.set_callback(std::forward<Object>(cb)); }
+ auto shutdown_callback() { return m_out_shutdown_func.bind(); }
protected:
virtual void execute_run() override;
diff --git a/src/devices/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h
index bd9ea980c1a..f2e7fdfbf04 100644
--- a/src/devices/machine/8042kbdc.h
+++ b/src/devices/machine/8042kbdc.h
@@ -17,28 +17,6 @@
#include "machine/pckeybrd.h"
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_KBDC8042_KEYBOARD_TYPE(_kbdt) \
- downcast<kbdc8042_device &>(*device).set_keyboard_type(kbdc8042_device::_kbdt);
-
-#define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \
- downcast<kbdc8042_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
-
-#define MCFG_KBDC8042_GATE_A20_CB(_devcb) \
- downcast<kbdc8042_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb);
-
-#define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \
- downcast<kbdc8042_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb);
-
-#define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \
- downcast<kbdc8042_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb);
-
-#define MCFG_KBDC8042_SPEAKER_CB(_devcb) \
- downcast<kbdc8042_device &>(*device).set_speaker_callback(DEVCB_##_devcb);
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -58,11 +36,6 @@ public:
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)); }
- template <class Object> devcb_base &set_gate_a20_callback(Object &&cb) { return m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_speaker_callback(Object &&cb) { return m_speaker_cb.set_callback(std::forward<Object>(cb)); }
auto system_reset_callback() { return m_system_reset_cb.bind(); }
auto gate_a20_callback() { return m_gate_a20_cb.bind(); }
auto input_buffer_full_callback() { return m_input_buffer_full_cb.bind(); }
diff --git a/src/devices/machine/fdc37c93x.cpp b/src/devices/machine/fdc37c93x.cpp
index f6cd3171fa2..a238c3126a4 100644
--- a/src/devices/machine/fdc37c93x.cpp
+++ b/src/devices/machine/fdc37c93x.cpp
@@ -247,11 +247,11 @@ MACHINE_CONFIG_START(fdc37c93x_device::device_add_mconfig)
MCFG_MC146818_IRQ_HANDLER(WRITELINE(*this, fdc37c93x_device, irq_rtc_w))
MCFG_MC146818_CENTURY_INDEX(0x32)
// keyboard
- MCFG_DEVICE_ADD("pc_kbdc", KBDC8042, 0)
- MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_PS2)
- MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE(*this, fdc37c93x_device, irq_keyboard_w))
- MCFG_KBDC8042_SYSTEM_RESET_CB(WRITELINE(*this, fdc37c93x_device, kbdp20_gp20_reset_w))
- MCFG_KBDC8042_GATE_A20_CB(WRITELINE(*this, fdc37c93x_device, kbdp21_gp25_gatea20_w))
+ KBDC8042(config, m_kbdc);
+ m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_PS2);
+ m_kbdc->input_buffer_full_callback().set(FUNC(fdc37c93x_device::irq_keyboard_w));
+ m_kbdc->system_reset_callback().set(FUNC(fdc37c93x_device::kbdp20_gp20_reset_w));
+ m_kbdc->gate_a20_callback().set(FUNC(fdc37c93x_device::kbdp21_gp25_gatea20_w));
MACHINE_CONFIG_END
WRITE_LINE_MEMBER(fdc37c93x_device::irq_floppy_w)
diff --git a/src/devices/machine/mb89352.h b/src/devices/machine/mb89352.h
index bf271ad866b..b9723b314d6 100644
--- a/src/devices/machine/mb89352.h
+++ b/src/devices/machine/mb89352.h
@@ -11,20 +11,12 @@
#include "legscsi.h"
-#define MCFG_MB89352A_IRQ_CB(_devcb) \
- downcast<mb89352_device &>(*device).set_irq_callback(DEVCB_##_devcb);
-
-#define MCFG_MB89352A_DRQ_CB(_devcb) \
- downcast<mb89352_device &>(*device).set_drq_callback(DEVCB_##_devcb);
-
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 = 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(); }
diff --git a/src/devices/machine/mc6854.h b/src/devices/machine/mc6854.h
index e0573df5331..99f09f5d3a7 100644
--- a/src/devices/machine/mc6854.h
+++ b/src/devices/machine/mc6854.h
@@ -14,25 +14,6 @@
#pragma once
-#define MC6854_OUT_FRAME_CB(name) void name(uint8_t * data, int length)
-
-
-#define MCFG_MC6854_OUT_IRQ_CB(_devcb) \
- downcast<mc6854_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
-
-#define MCFG_MC6854_OUT_TXD_CB(_devcb) \
- downcast<mc6854_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
-
-#define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \
- downcast<mc6854_device &>(*device).set_out_frame_callback(mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this));
-
-#define MCFG_MC6854_OUT_RTS_CB(_devcb) \
- downcast<mc6854_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
-
-#define MCFG_MC6854_OUT_DTR_CB(_devcb) \
- downcast<mc6854_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
-
-
class mc6854_device : public device_t
{
public:
@@ -40,18 +21,24 @@ public:
typedef device_delegate<void (uint8_t *data, int length)> out_frame_delegate;
- mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
- 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 <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(); }
+ template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); }
+ void set_out_frame_callback(out_frame_delegate callback) { m_out_frame_cb = callback; }
+ template <class FunctionClass> void set_out_frame_callback(const char *devname, void (FunctionClass::*callback)(uint8_t *, int), const char *name)
+ {
+ set_out_frame_callback(out_frame_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_out_frame_callback(void (FunctionClass::*callback)(uint8_t *, int), const char *name)
+ {
+ set_out_frame_callback(out_frame_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+
/* interface to CPU via address/data bus*/
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/emu/diexec.h b/src/emu/diexec.h
index e4973c2296f..6192264f62e 100644
--- a/src/emu/diexec.h
+++ b/src/emu/diexec.h
@@ -140,17 +140,54 @@ public:
// inline configuration helpers
void set_disable() { m_disabled = true; }
- template <typename Object> void set_vblank_int(Object &&cb, const char *tag, int rate = 0)
+ template <typename Object> void set_vblank_int(Object &&cb, const char *tag)
{
m_vblank_interrupt = std::forward<Object>(cb);
m_vblank_interrupt_screen = tag;
}
+ void set_vblank_int(device_interrupt_delegate callback, const char *tag)
+ {
+ m_vblank_interrupt = callback;
+ m_vblank_interrupt_screen = tag;
+ }
+ template <class FunctionClass> void set_vblank_int(const char *tag, const char *devname, void (FunctionClass::*callback)(device_t &), const char *name)
+ {
+ set_vblank_int(device_interrupt_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), tag);
+ }
+ template <class FunctionClass> void set_vblank_int(const char *tag, void (FunctionClass::*callback)(device_t &), const char *name)
+ {
+ set_vblank_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), tag);
+ }
+
template <typename Object> void set_periodic_int(Object &&cb, const attotime &rate)
{
m_timed_interrupt = std::forward<Object>(cb);
m_timed_interrupt_period = rate;
}
+ void set_periodic_int(device_interrupt_delegate callback, const attotime &rate)
+ {
+ m_timed_interrupt = callback;
+ m_timed_interrupt_period = rate;
+ }
+ template <class FunctionClass> void set_periodic_int(const char *devname, void (FunctionClass::*callback)(device_t &), const char *name, const attotime &rate)
+ {
+ set_periodic_int(device_interrupt_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), rate);
+ }
+ template <class FunctionClass> void set_periodic_int(void (FunctionClass::*callback)(device_t &), const char *name, const attotime &rate)
+ {
+ set_periodic_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), rate);
+ }
+
template <typename Object> void set_irq_acknowledge_callback(Object &&cb) { m_driver_irq = std::forward<Object>(cb); }
+ void set_irq_acknowledge_callback(device_irq_acknowledge_delegate callback) { m_driver_irq = callback; }
+ template <class FunctionClass> void set_irq_acknowledge_callback(const char *devname, int (FunctionClass::*callback)(device_t &, int), const char *name)
+ {
+ set_irq_acknowledge_callback(device_irq_acknowledge_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_irq_acknowledge_callback(int (FunctionClass::*callback)(device_t &, int), const char *name)
+ {
+ set_irq_acknowledge_callback(device_irq_acknowledge_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
// execution management
device_scheduler &scheduler() const { assert(m_scheduler != nullptr); return *m_scheduler; }
diff --git a/src/mame/drivers/accomm.cpp b/src/mame/drivers/accomm.cpp
index 9ef4100f7d1..06ce2e394cd 100644
--- a/src/mame/drivers/accomm.cpp
+++ b/src/mame/drivers/accomm.cpp
@@ -830,9 +830,9 @@ static INPUT_PORTS_START( accomm )
INPUT_PORTS_END
MACHINE_CONFIG_START(accomm_state::accomm)
- MCFG_DEVICE_ADD("maincpu", G65816, 16_MHz_XTAL / 8)
- MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", accomm_state, vbl_int)
+ G65816(config, m_maincpu, 16_MHz_XTAL / 8);
+ m_maincpu->set_addrmap(AS_PROGRAM, &accomm_state::main_map);
+ m_maincpu->set_vblank_int("screen", FUNC(accomm_state::vbl_int));
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( 50.08 )
@@ -881,9 +881,9 @@ MACHINE_CONFIG_START(accomm_state::accomm)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, accomm_state, write_acia_clock))
/* econet */
- MCFG_DEVICE_ADD("mc6854", MC6854, 0)
- MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w))
- MCFG_MC6854_OUT_IRQ_CB(INPUTLINE("maincpu", G65816_LINE_NMI))
+ MC6854(config, m_adlc);
+ m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
+ m_adlc->out_irq_cb().set_inputline(m_maincpu, G65816_LINE_NMI);
MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, accomm_state, econet_clk_w))
MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx))
diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp
index 53f564de3c0..07ae2bd1327 100644
--- a/src/mame/drivers/bbc.cpp
+++ b/src/mame/drivers/bbc.cpp
@@ -963,9 +963,9 @@ MACHINE_CONFIG_START(bbc_state::bbcb)
MCFG_BBC_FDC_SLOT_DRQ_HANDLER(WRITELINE(*this, bbc_state, fdc_drq_w))
/* econet */
- MCFG_DEVICE_ADD("mc6854", MC6854, 0)
- MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w))
- MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, bbc_state, adlc_irq_w))
+ MC6854(config, m_adlc);
+ m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
+ m_adlc->out_irq_cb().set(FUNC(bbc_state::adlc_irq_w));
MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w))
MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx))
@@ -1434,9 +1434,9 @@ MACHINE_CONFIG_START(bbc_state::bbcm)
MCFG_FLOPPY_DRIVE_SOUND(true)
/* econet */
- MCFG_DEVICE_ADD("mc6854", MC6854, 0)
- MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w))
- MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, bbc_state, adlc_irq_w))
+ MC6854(config, m_adlc);
+ m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
+ m_adlc->out_irq_cb().set(FUNC(bbc_state::adlc_irq_w));
MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w))
MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx))
diff --git a/src/mame/drivers/mtouchxl.cpp b/src/mame/drivers/mtouchxl.cpp
index fc5a26679ed..d534cb0c0e4 100644
--- a/src/mame/drivers/mtouchxl.cpp
+++ b/src/mame/drivers/mtouchxl.cpp
@@ -240,11 +240,12 @@ MACHINE_CONFIG_START(mtxl_state::at486)
// remove the keyboard controller and use the HLE one which allow keys to be unmapped
MCFG_DEVICE_REMOVE("mb:keybc");
MCFG_DEVICE_REMOVE("mb:pc_kbdc");
- MCFG_DEVICE_ADD("kbdc", KBDC8042, 0)
- MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386)
- MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET))
- MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20))
- MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir1_w))
+ kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
+ kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
+ kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
+ kbdc.gate_a20_callback().set_inputline(m_maincpu, INPUT_LINE_A20);
+ kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));
+
MCFG_DEVICE_REMOVE("mb:rtc")
MCFG_DS12885_ADD("mb:rtc")
MCFG_MC146818_IRQ_HANDLER(WRITELINE("mb:pic8259_slave", pic8259_device, ir0_w))
diff --git a/src/mame/drivers/poly.cpp b/src/mame/drivers/poly.cpp
index 0ab407676f1..0a40a6a345c 100644
--- a/src/mame/drivers/poly.cpp
+++ b/src/mame/drivers/poly.cpp
@@ -290,9 +290,9 @@ MACHINE_CONFIG_START(poly_state::poly)
MCFG_RAM_EXTRA_OPTIONS("64K")
/* network */
- MCFG_DEVICE_ADD("mc6854", MC6854, 0)
- //MCFG_MC6854_OUT_TXD_CB(WRITELINE(NETWORK_TAG, poly_network_device, data_w))
- //MCFG_MC6854_OUT_IRQ_CB(WRITELINE("irqs", input_merger_device, in_w<0>))
+ MC6854(config, m_adlc);
+ //m_adlc->out_txd_cb().set(NETWORK_TAG, FUNC(poly_network_device::data_w));
+ //m_adlc->out_irq_cb().set("irqs", FUNC(input_merger_device::in_w<0>));
//MCFG_POLY_NETWORK_ADD()
//MCFG_POLY_NETWORK_CLK_CB(WRITELINE(*this, poly_state, network_clk_w))
diff --git a/src/mame/drivers/proteus.cpp b/src/mame/drivers/proteus.cpp
index 766e41ff829..b972e619a85 100644
--- a/src/mame/drivers/proteus.cpp
+++ b/src/mame/drivers/proteus.cpp
@@ -348,8 +348,8 @@ MACHINE_CONFIG_START(proteus_state::proteus)
MCFG_RAM_DEFAULT_SIZE("64K")
/* network */
- MCFG_DEVICE_ADD("mc6854", MC6854, 0)
- MCFG_MC6854_OUT_IRQ_CB(WRITELINE("irqs", input_merger_device, in_w<0>))
+ MC6854(config, m_adlc);
+ m_adlc->out_irq_cb().set("irqs", FUNC(input_merger_device::in_w<0>));
MCFG_DEVICE_ADD("ptm", PTM6840, 4_MHz_XTAL / 2)
MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0)
diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp
index 816fe716bcc..8b537033656 100644
--- a/src/mame/drivers/segas32.cpp
+++ b/src/mame/drivers/segas32.cpp
@@ -2490,10 +2490,10 @@ MACHINE_CONFIG_START(segas32_cd_state::device_add_mconfig)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(system32_cd_map)
- MCFG_DEVICE_ADD("mb89352", MB89352A, 8000000)
- MCFG_LEGACY_SCSI_PORT("scsi")
- MCFG_MB89352A_IRQ_CB(WRITELINE(*this, segas32_cd_state, scsi_irq_w))
- MCFG_MB89352A_DRQ_CB(WRITELINE(*this, segas32_cd_state, scsi_drq_w))
+ mb89352_device &scsictrl(MB89352A(config, "mb89352", 8000000));
+ scsictrl.set_scsi_port("scsi");
+ scsictrl.irq_cb().set(FUNC(segas32_cd_state::scsi_irq_w));
+ scsictrl.drq_cb().set(FUNC(segas32_cd_state::scsi_drq_w));
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_0)
diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp
index 7c0e877203f..18134cf9e3f 100644
--- a/src/mame/drivers/thomson.cpp
+++ b/src/mame/drivers/thomson.cpp
@@ -696,8 +696,8 @@ MACHINE_CONFIG_START(thomson_state::to7)
/* network */
- MCFG_DEVICE_ADD("mc6854", MC6854, 0)
- MCFG_MC6854_OUT_FRAME_CB(thomson_state, to7_network_got_frame)
+ MC6854(config, m_mc6854);
+ m_mc6854->set_out_frame_callback(FUNC(thomson_state::to7_network_got_frame));
/* pia */
diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp
index b15988ea45c..2a845f7546e 100644
--- a/src/mame/drivers/tv990.cpp
+++ b/src/mame/drivers/tv990.cpp
@@ -412,9 +412,9 @@ MACHINE_CONFIG_START(tv990_state::tv990)
MCFG_RS232_DCD_HANDLER(WRITELINE(UART1_TAG, ns16450_device, dcd_w))
MCFG_RS232_CTS_HANDLER(WRITELINE(UART1_TAG, ns16450_device, cts_w))
- MCFG_DEVICE_ADD("pc_kbdc", KBDC8042, 0)
- MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386)
- MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(INPUTLINE("maincpu", M68K_IRQ_2))
+ KBDC8042(config, m_kbdc);
+ m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
+ m_kbdc->input_buffer_full_callback().set_inputline("maincpu", M68K_IRQ_2);
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp
index caa61fa09a7..8ef1fcff403 100644
--- a/src/mame/drivers/vis.cpp
+++ b/src/mame/drivers/vis.cpp
@@ -28,8 +28,8 @@ protected:
virtual void dack16_w(int line, uint16_t data) override;
virtual void device_add_mconfig(machine_config &config) override;
private:
- required_device<dac_word_interface> m_rdac;
- required_device<dac_word_interface> m_ldac;
+ required_device<dac_16bit_r2r_device> m_rdac;
+ required_device<dac_16bit_r2r_device> m_ldac;
uint16_t m_count;
uint16_t m_curcount;
uint16_t m_sample[2];
@@ -126,20 +126,29 @@ void vis_audio_device::device_timer(emu_timer &timer, device_timer_id id, int pa
}
}
-MACHINE_CONFIG_START(vis_audio_device::device_add_mconfig)
+void vis_audio_device::device_add_mconfig(machine_config &config)
+{
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("ymf262", YMF262, XTAL(14'318'181))
- MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
- MCFG_SOUND_ROUTE(2, "lspeaker", 1.00)
- MCFG_SOUND_ROUTE(3, "rspeaker", 1.00)
- MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // sanyo lc7883k
- MCFG_DEVICE_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // sanyo lc7883k
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
- MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
-MACHINE_CONFIG_END
+
+ ymf262_device &ymf262(YMF262(config, "ymf262", XTAL(14'318'181)));
+ ymf262.add_route(0, "lspeaker", 1.00);
+ ymf262.add_route(1, "rspeaker", 1.00);
+ ymf262.add_route(2, "lspeaker", 1.00);
+ ymf262.add_route(3, "rspeaker", 1.00);
+
+ DAC_16BIT_R2R(config, m_ldac, 0);
+ DAC_16BIT_R2R(config, m_rdac, 0);
+ m_ldac->add_route(ALL_OUTPUTS, "lspeaker", 1.0); // sanyo lc7883k
+ m_rdac->add_route(ALL_OUTPUTS, "rspeaker", 1.0); // sanyo lc7883k
+
+ voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref"));
+ vreg.set_output(5.0);
+ vreg.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
+ vreg.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
+ vreg.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
+ vreg.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
+}
READ8_MEMBER(vis_audio_device::pcm_r)
{
@@ -258,11 +267,12 @@ vis_vga_device::vis_vga_device(const machine_config &mconfig, const char *tag, d
set_screen(*this, "screen");
}
-MACHINE_CONFIG_START(vis_vga_device::device_add_mconfig)
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
- MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, vis_vga_device, screen_update)
-MACHINE_CONFIG_END
+void vis_vga_device::device_add_mconfig(machine_config &config)
+{
+ 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(FUNC(vis_vga_device::screen_update));
+}
void vis_vga_device::recompute_params()
{
@@ -720,8 +730,8 @@ private:
DECLARE_WRITE16_MEMBER(pad_w);
DECLARE_READ8_MEMBER(unk1_r);
DECLARE_WRITE8_MEMBER(unk1_w);
- void at16_io(address_map &map);
- void at16_map(address_map &map);
+ void io_map(address_map &map);
+ void main_map(address_map &map);
void machine_reset() override;
@@ -834,7 +844,7 @@ WRITE8_MEMBER(vis_state::sysctl_w)
m_sysctl = data;
}
-void vis_state::at16_map(address_map &map)
+void vis_state::main_map(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0x09ffff).ram();
@@ -844,7 +854,7 @@ void vis_state::at16_map(address_map &map)
map(0xff0000, 0xffffff).rom().region("bios", 0xf0000);
}
-void vis_state::at16_io(address_map &map)
+void vis_state::io_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
@@ -890,30 +900,31 @@ static INPUT_PORTS_START(vis)
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, vis_state, update, 0)
INPUT_PORTS_END
-MACHINE_CONFIG_START(vis_state::vis)
+void vis_state::vis(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I80286, XTAL(12'000'000) )
- MCFG_DEVICE_PROGRAM_MAP(at16_map)
- MCFG_DEVICE_IO_MAP(at16_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb)
- MCFG_80286_SHUTDOWN(WRITELINE("mb", at_mb_device, shutdown))
-
- MCFG_DEVICE_ADD("mb", AT_MB, 0)
- // this doesn't have a real keyboard controller
- MCFG_DEVICE_REMOVE("mb:keybc")
- MCFG_DEVICE_REMOVE("mb:pc_kbdc")
-
- MCFG_DEVICE_ADD("kbdc", KBDC8042, 0)
- MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386)
- MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET))
- MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20))
- MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir1_w))
+ i80286_cpu_device &maincpu(I80286(config, "maincpu", XTAL(12'000'000)));
+ maincpu.set_addrmap(AS_PROGRAM, &vis_state::main_map);
+ maincpu.set_addrmap(AS_IO, &vis_state::io_map);
+ maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown));
+ maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
+
+ AT_MB(config, "mb", 0);
+ // the vis doesn't have a real keyboard controller
+ config.device_remove("mb:keybc");
+ config.device_remove("mb:pc_kbdc");
+
+ kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
+ kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
+ kbdc.system_reset_callback().set_inputline("maincpu", INPUT_LINE_RESET);
+ kbdc.gate_a20_callback().set_inputline("maincpu", INPUT_LINE_A20);
+ kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));
// FIXME: determine ISA bus clock
- MCFG_DEVICE_ADD("mcd", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "mcd", true)
- MCFG_DEVICE_ADD("visaudio", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visaudio", true)
- MCFG_DEVICE_ADD("visvga", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visvga", true)
-MACHINE_CONFIG_END
+ ISA16_SLOT(config, "mcd", 0, "mb:isabus", pc_isa16_cards, "mcd", true);
+ ISA16_SLOT(config, "visaudio", 0, "mb:isabus", vis_cards, "visaudio", true);
+ ISA16_SLOT(config, "visvga", 0, "mb:isabus", vis_cards, "visvga", true);
+}
ROM_START(vis)
ROM_REGION(0x100000,"bios", 0)
diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp
index 41fcd74d293..00acc76e486 100644
--- a/src/mame/drivers/x68k.cpp
+++ b/src/mame/drivers/x68k.cpp
@@ -1727,10 +1727,10 @@ MACHINE_CONFIG_START(x68k_state::x68ksupr)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE6, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE7, "cdrom", SCSICD, SCSI_ID_6)
- MCFG_DEVICE_ADD("mb89352", MB89352A, 40_MHz_XTAL / 8)
- MCFG_LEGACY_SCSI_PORT("scsi")
- MCFG_MB89352A_IRQ_CB(WRITELINE(*this, x68k_state, x68k_scsi_irq))
- MCFG_MB89352A_DRQ_CB(WRITELINE(*this, x68k_state, x68k_scsi_drq))
+ mb89352_device &scsictrl(MB89352A(config, "mb89352", 40_MHz_XTAL / 8));
+ scsictrl.set_scsi_port("scsi");
+ scsictrl.irq_cb().set(FUNC(x68k_state::x68k_scsi_irq));
+ scsictrl.drq_cb().set(FUNC(x68k_state::x68k_scsi_drq));
VICON(config.replace(), m_crtc, 38.86363_MHz_XTAL);
m_crtc->set_screen("screen");
diff --git a/src/mame/includes/thomson.h b/src/mame/includes/thomson.h
index fc76d33c96e..1f84bb31d8c 100644
--- a/src/mame/includes/thomson.h
+++ b/src/mame/includes/thomson.h
@@ -374,7 +374,7 @@ private:
int m_centronics_busy;
int m_centronics_perror;
- MC6854_OUT_FRAME_CB(to7_network_got_frame);
+ void to7_network_got_frame(uint8_t *data, int length);
void mo5(address_map &map);
void mo5nr(address_map &map);
diff --git a/src/mame/machine/thomflop.cpp b/src/mame/machine/thomflop.cpp
index 75d3c6d7164..5777fa010c8 100644
--- a/src/mame/machine/thomflop.cpp
+++ b/src/mame/machine/thomflop.cpp
@@ -1628,7 +1628,7 @@ TIMER_CALLBACK_MEMBER( thomson_state::ans )
*/
-MC6854_OUT_FRAME_CB(thomson_state::to7_network_got_frame)
+void thomson_state::to7_network_got_frame(uint8_t *data, int length)
{
LOG(( "%f to7_network_got_frame:", machine().time().as_double() ));
for ( int i = 0; i < length; i++ )