summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-12-11 18:17:20 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2018-12-11 18:17:20 +0100
commitff08c8cd4eb7004bac71652421b4aea987f5c468 (patch)
tree6baf9dbcdb0fbeb8e350e511371319b665530268
parent65bf009f970122261f55869cadbc5d3077a75452 (diff)
machine/keyboard, terminal: removed MCFG macros (nw)
-rw-r--r--src/devices/bus/ecbbus/grip.cpp4
-rw-r--r--src/devices/bus/vip/vp620.cpp9
-rw-r--r--src/devices/machine/keyboard.h25
-rw-r--r--src/devices/machine/terminal.cpp4
-rw-r--r--src/devices/machine/terminal.h21
-rw-r--r--src/mame/drivers/abc80.cpp4
-rw-r--r--src/mame/drivers/acrnsys.cpp30
-rw-r--r--src/mame/drivers/atlantis.cpp10
-rw-r--r--src/mame/drivers/basic52.cpp2
-rw-r--r--src/mame/drivers/besta.cpp17
-rw-r--r--src/mame/drivers/bigbord2.cpp4
-rw-r--r--src/mame/drivers/binbug.cpp4
-rw-r--r--src/mame/drivers/cd2650.cpp4
-rw-r--r--src/mame/drivers/cgc7900.cpp4
-rw-r--r--src/mame/drivers/chaos.cpp4
-rw-r--r--src/mame/drivers/cortex.cpp17
-rw-r--r--src/mame/drivers/cxhumax.cpp2
-rw-r--r--src/mame/drivers/czk80.cpp19
-rw-r--r--src/mame/drivers/d6809.cpp4
-rw-r--r--src/mame/drivers/dccons.cpp3
-rw-r--r--src/mame/drivers/dim68k.cpp4
-rw-r--r--src/mame/drivers/dm7000.cpp4
-rw-r--r--src/mame/drivers/dms86.cpp9
-rw-r--r--src/mame/drivers/dual68.cpp4
-rw-r--r--src/mame/drivers/ec65.cpp12
-rw-r--r--src/mame/drivers/eurocom2.cpp4
-rw-r--r--src/mame/drivers/evmbug.cpp11
-rw-r--r--src/mame/drivers/gridcomp.cpp4
-rw-r--r--src/mame/drivers/imsai.cpp17
-rw-r--r--src/mame/drivers/ipds.cpp4
-rw-r--r--src/mame/drivers/jonos.cpp4
-rw-r--r--src/mame/drivers/jupiter.cpp4
-rw-r--r--src/mame/drivers/konamim2.cpp2
-rw-r--r--src/mame/drivers/llc.cpp4
-rw-r--r--src/mame/drivers/mbc200.cpp4
-rw-r--r--src/mame/drivers/mes.cpp4
-rw-r--r--src/mame/drivers/mod8.cpp4
-rw-r--r--src/mame/drivers/modellot.cpp4
-rw-r--r--src/mame/drivers/ms9540.cpp14
-rw-r--r--src/mame/drivers/naomi.cpp3
-rw-r--r--src/mame/drivers/okean240.cpp4
-rw-r--r--src/mame/drivers/olyboss.cpp8
-rw-r--r--src/mame/drivers/olytext.cpp4
-rw-r--r--src/mame/drivers/patinho_feio.cpp16
-rw-r--r--src/mame/drivers/pdp11.cpp9
-rw-r--r--src/mame/drivers/pes.cpp2
-rw-r--r--src/mame/drivers/phunsy.cpp4
-rw-r--r--src/mame/drivers/poly.cpp4
-rw-r--r--src/mame/drivers/proteus3.cpp4
-rw-r--r--src/mame/drivers/ptcsol.cpp4
-rw-r--r--src/mame/drivers/ravens.cpp4
-rw-r--r--src/mame/drivers/rc702.cpp4
-rw-r--r--src/mame/drivers/rc759.cpp4
-rw-r--r--src/mame/drivers/rm380z.cpp8
-rw-r--r--src/mame/drivers/rvoice.cpp22
-rw-r--r--src/mame/drivers/sacstate.cpp15
-rw-r--r--src/mame/drivers/sapi1.cpp15
-rw-r--r--src/mame/drivers/sbc6510.cpp2
-rw-r--r--src/mame/drivers/tavernie.cpp4
-rw-r--r--src/mame/drivers/tk80bs.cpp4
-rw-r--r--src/mame/drivers/trs80m2.cpp8
-rw-r--r--src/mame/drivers/ts802.cpp9
-rw-r--r--src/mame/drivers/ts816.cpp9
-rw-r--r--src/mame/drivers/v6809.cpp4
-rw-r--r--src/mame/drivers/vax11.cpp9
-rw-r--r--src/mame/drivers/votrpss.cpp4
-rw-r--r--src/mame/drivers/z9001.cpp4
-rw-r--r--src/mame/drivers/zrt80.cpp2
-rw-r--r--src/mame/includes/dc.h3
-rw-r--r--src/mame/machine/dc.cpp12
-rw-r--r--src/mame/machine/gridkeyb.h19
-rw-r--r--src/mame/machine/maple-dc.cpp11
-rw-r--r--src/mame/machine/maple-dc.h26
-rw-r--r--src/mame/machine/teleprinter.cpp4
-rw-r--r--src/mame/machine/teleprinter.h3
75 files changed, 297 insertions, 282 deletions
diff --git a/src/devices/bus/ecbbus/grip.cpp b/src/devices/bus/ecbbus/grip.cpp
index fab96c31634..655710cd0d5 100644
--- a/src/devices/bus/ecbbus/grip.cpp
+++ b/src/devices/bus/ecbbus/grip.cpp
@@ -458,8 +458,8 @@ MACHINE_CONFIG_START(ecb_grip21_device::device_add_mconfig)
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(ecb_grip21_device, kb_w))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(ecb_grip21_device::kb_w));
MACHINE_CONFIG_END
diff --git a/src/devices/bus/vip/vp620.cpp b/src/devices/bus/vip/vp620.cpp
index 66e057fa084..643a8856481 100644
--- a/src/devices/bus/vip/vp620.cpp
+++ b/src/devices/bus/vip/vp620.cpp
@@ -36,10 +36,11 @@ void vp620_device::kb_w(uint8_t data)
// MACHINE_CONFIG_START( vp620 )
//-------------------------------------------------
-MACHINE_CONFIG_START(vp620_device::device_add_mconfig)
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(vp620_device, kb_w))
-MACHINE_CONFIG_END
+void vp620_device::device_add_mconfig(machine_config &config)
+{
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(vp620_device::kb_w));
+}
diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h
index 247560b3dbb..4788d51f33b 100644
--- a/src/devices/machine/keyboard.h
+++ b/src/devices/machine/keyboard.h
@@ -7,18 +7,6 @@
/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define KEYBOARDCB_PUT(cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr))
-#define KEYBOARDCB_DEVPUT(tag, cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr))
-
-#define MCFG_GENERIC_KEYBOARD_CB(cb) \
- downcast<generic_keyboard_device &>(*device).set_keyboard_callback((KEYBOARDCB_##cb));
-
-
-
-/***************************************************************************
DEVICE TYPE GLOBALS
***************************************************************************/
@@ -91,7 +79,18 @@ public:
device_t *owner,
u32 clock);
- template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); }
+ template <class FunctionClass>
+ void set_keyboard_callback(void (FunctionClass::*callback)(u8 character), const char *name)
+ {
+ set_keyboard_callback(output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ // FIXME: this should be aware of current device for resolving the tag
+ template <class FunctionClass>
+ void set_keyboard_callback(const char *devname, void (FunctionClass::*callback)(u8 character), const char *name)
+ {
+ set_keyboard_callback(output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_keyboard_callback(output_delegate callback) { m_keyboard_cb = callback; }
virtual ioport_constructor device_input_ports() const override;
diff --git a/src/devices/machine/terminal.cpp b/src/devices/machine/terminal.cpp
index 2d18fd50a90..be9b501c687 100644
--- a/src/devices/machine/terminal.cpp
+++ b/src/devices/machine/terminal.cpp
@@ -334,8 +334,8 @@ MACHINE_CONFIG_START(generic_terminal_device::device_add_mconfig)
MCFG_SCREEN_VISIBLE_AREA(0, generic_terminal_device::TERMINAL_WIDTH*8-1, 0, generic_terminal_device::TERMINAL_HEIGHT*10-1)
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, generic_terminal_device, update)
- MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(generic_terminal_device, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0));
+ keyboard.set_keyboard_callback(FUNC(generic_terminal_device::kbd_put));
SPEAKER(config, "bell").front_center();
MCFG_DEVICE_ADD("beeper", BEEP, 2'000)
diff --git a/src/devices/machine/terminal.h b/src/devices/machine/terminal.h
index e200de29cd6..bf2f81c07f7 100644
--- a/src/devices/machine/terminal.h
+++ b/src/devices/machine/terminal.h
@@ -13,14 +13,6 @@
/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define MCFG_GENERIC_TERMINAL_KEYBOARD_CB(cb) \
- downcast<generic_terminal_device &>(*device).set_keyboard_callback((KEYBOARDCB_##cb));
-
-
-/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
@@ -31,7 +23,18 @@ class generic_terminal_device : public device_t
public:
generic_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); }
+ template <class FunctionClass>
+ void set_keyboard_callback(void (FunctionClass::*callback)(u8 character), const char *name)
+ {
+ set_keyboard_callback(generic_keyboard_device::output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ // FIXME: this should be aware of current device for resolving the tag
+ template <class FunctionClass>
+ void set_keyboard_callback(const char *devname, void (FunctionClass::*callback)(u8 character), const char *name)
+ {
+ set_keyboard_callback(generic_keyboard_device::output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_keyboard_callback(generic_keyboard_device::output_delegate callback) { m_keyboard_cb = callback; }
DECLARE_WRITE8_MEMBER(write) { term_write(data); }
diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp
index 957288239c4..1508992d2d6 100644
--- a/src/mame/drivers/abc80.cpp
+++ b/src/mame/drivers/abc80.cpp
@@ -528,8 +528,8 @@ MACHINE_CONFIG_START(abc80_state::abc80)
MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abc80_cards, "abcexp")
RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr);
- MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(abc80_state, kbd_w))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0));
+ keyboard.set_keyboard_callback(FUNC(abc80_state::kbd_w));
MCFG_QUICKLOAD_ADD("quickload", abc80_state, bac, "bac", 2)
diff --git a/src/mame/drivers/acrnsys.cpp b/src/mame/drivers/acrnsys.cpp
index dff9c24849e..f24b1a4f120 100644
--- a/src/mame/drivers/acrnsys.cpp
+++ b/src/mame/drivers/acrnsys.cpp
@@ -360,7 +360,8 @@ void acrnsys_state::kbd_put_pb(uint8_t data)
6502 CPU Board - Part No. 200,000
***************************************************************************/
-MACHINE_CONFIG_START(acrnsys_state::a6502)
+void acrnsys_state::a6502(machine_config &config)
+{
M6502(config, m_maincpu, 24_MHz_XTAL / 12); /* 1MHz 6502 CPU */
m_maincpu->set_addrmap(AS_PROGRAM, &acrnsys_state::a6502_mem);
@@ -371,16 +372,17 @@ MACHINE_CONFIG_START(acrnsys_state::a6502)
//m_ins8154->out_a().set(FUNC(acrnsys_state::ins8154_pa_w));
m_ins8154->in_b().set(FUNC(acrnsys_state::kbd_r));
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(acrnsys_state, kbd_put))
-MACHINE_CONFIG_END
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(acrnsys_state::kbd_put));
+}
/***************************************************************************
6502A CPU Board - Part No. 200,005
***************************************************************************/
-MACHINE_CONFIG_START(acrnsys_state::a6502a)
+void acrnsys_state::a6502a(machine_config &config)
+{
M6502(config, m_maincpu, 24_MHz_XTAL / 12); /* 2MHz 6502A CPU */
m_maincpu->set_addrmap(AS_PROGRAM, &acrnsys_state::a6502a_mem);
@@ -391,16 +393,17 @@ MACHINE_CONFIG_START(acrnsys_state::a6502a)
//m_via6522->cb2_handler().set(FUNC(acrnsys_state::cass_w));
m_via6522->irq_handler().set(m_irqs, FUNC(input_merger_device::in_w<0>));
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(acrnsys_state, kbd_put))
-MACHINE_CONFIG_END
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(acrnsys_state::kbd_put));
+}
/***************************************************************************
6809 CPU Board - Part No. 200,012
***************************************************************************/
-MACHINE_CONFIG_START(acrnsys_state::a6809)
+void acrnsys_state::a6809(machine_config &config)
+{
MC6809(config, m_maincpu, 4_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &acrnsys_state::a6809_mem);
@@ -415,11 +418,12 @@ MACHINE_CONFIG_START(acrnsys_state::a6809)
CENTRONICS(config, m_centronics, centronics_devices, "printer");
m_centronics->ack_handler().set(m_via6522, FUNC(via6522_device::write_ca1));
m_centronics->busy_handler().set(m_via6522, FUNC(via6522_device::write_pa7));
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out"));
+ m_centronics->set_output_latch(latch);
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(acrnsys_state, kbd_put_pb))
-MACHINE_CONFIG_END
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(acrnsys_state::kbd_put_pb));
+}
/***************************************************************************
diff --git a/src/mame/drivers/atlantis.cpp b/src/mame/drivers/atlantis.cpp
index 6dc37fc8cfe..0ad435ef004 100644
--- a/src/mame/drivers/atlantis.cpp
+++ b/src/mame/drivers/atlantis.cpp
@@ -809,8 +809,8 @@ DEVICE_INPUT_DEFAULTS_END
*
*************************************/
-MACHINE_CONFIG_START(atlantis_state::mwskins)
-
+void atlantis_state::mwskins(machine_config &config)
+{
/* basic machine hardware */
VR4310LE(config, m_maincpu, 166666666);
m_maincpu->set_icache_size(16384);
@@ -860,8 +860,8 @@ MACHINE_CONFIG_START(atlantis_state::mwskins)
m_ioasic->set_auto_ack(1);
if DEBUG_CONSOLE {
m_ioasic->serial_tx_handler().set(m_uart0, FUNC(generic_terminal_device::write));
- MCFG_DEVICE_ADD(m_uart0, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(DEVPUT("ioasic", midway_ioasic_device, serial_rx_w))
+ GENERIC_TERMINAL(config, m_uart0, 0);
+ m_uart0->set_keyboard_callback("ioasic", FUNC(midway_ioasic_device::serial_rx_w));
}
// TL16C552 UART
@@ -891,7 +891,7 @@ MACHINE_CONFIG_START(atlantis_state::mwskins)
com2.dsr_handler().set(m_uart2, FUNC(ins8250_uart_device::dsr_w));
com2.ri_handler().set(m_uart2, FUNC(ins8250_uart_device::ri_w));
com2.cts_handler().set(m_uart2, FUNC(ins8250_uart_device::cts_w));
-MACHINE_CONFIG_END
+}
/*************************************
diff --git a/src/mame/drivers/basic52.cpp b/src/mame/drivers/basic52.cpp
index 3ed021fffb6..a6b0b2463da 100644
--- a/src/mame/drivers/basic52.cpp
+++ b/src/mame/drivers/basic52.cpp
@@ -117,7 +117,7 @@ void basic52_state::basic31(machine_config &config)
/* video hardware */
GENERIC_TERMINAL(config, m_terminal, 0);
- m_terminal->set_keyboard_callback(KEYBOARDCB_PUT(basic52_state, kbd_put));
+ m_terminal->set_keyboard_callback(FUNC(basic52_state::kbd_put));
I8255(config, "ppi8255", 0);
}
diff --git a/src/mame/drivers/besta.cpp b/src/mame/drivers/besta.cpp
index 7748a3ed023..88c280dab56 100644
--- a/src/mame/drivers/besta.cpp
+++ b/src/mame/drivers/besta.cpp
@@ -134,18 +134,19 @@ void besta_state::machine_reset()
}
/* CP31 processor board */
-MACHINE_CONFIG_START(besta_state::besta)
+void besta_state::besta(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68030, 2*16670000)
- MCFG_DEVICE_PROGRAM_MAP(besta_mem)
+ M68030(config, m_maincpu, 2*16670000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &besta_state::besta_mem);
- MCFG_DEVICE_ADD ("pit1", PIT68230, 16670000 / 2) // XXX verify clock
+ PIT68230(config, m_pit1, 16670000 / 2); // XXX verify clock
- MCFG_DEVICE_ADD ("pit2", PIT68230, 16670000 / 2) // XXX verify clock
+ PIT68230(config, m_pit2, 16670000 / 2); // XXX verify clock
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(besta_state, kbd_put))
-MACHINE_CONFIG_END
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(besta_state::kbd_put));
+}
/* ROM definition */
diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp
index 05d051ba298..44bbd8a9943 100644
--- a/src/mame/drivers/bigbord2.cpp
+++ b/src/mame/drivers/bigbord2.cpp
@@ -621,8 +621,8 @@ MACHINE_CONFIG_START(bigbord2_state::bigbord2)
MCFG_DEVICE_ADD("outlatch1", LS259, 0) // U96
/* keyboard */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(bigbord2_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(bigbord2_state::kbd_put));
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp
index 5294579dc83..49d33c6ec1a 100644
--- a/src/mame/drivers/binbug.cpp
+++ b/src/mame/drivers/binbug.cpp
@@ -554,8 +554,8 @@ MACHINE_CONFIG_START(dg680_state::dg680)
MCFG_PALETTE_ADD_MONOCHROME("palette")
/* Keyboard */
- MCFG_DEVICE_ADD("keyb", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(dg680_state, kbd_put))
+ generic_keyboard_device &keyb(GENERIC_KEYBOARD(config, "keyb", 0));
+ keyb.set_keyboard_callback(FUNC(dg680_state::kbd_put));
/* Cassette */
MCFG_CASSETTE_ADD( "cassette" )
diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp
index e77327012e8..7067898726c 100644
--- a/src/mame/drivers/cd2650.cpp
+++ b/src/mame/drivers/cd2650.cpp
@@ -321,8 +321,8 @@ MACHINE_CONFIG_START(cd2650_state::cd2650)
BEEP(config, "beeper", 950).add_route(ALL_OUTPUTS, "mono", 0.50); // guess
/* Devices */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(cd2650_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(cd2650_state::kbd_put));
MCFG_CASSETTE_ADD( "cassette" )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp
index f618cd6eb1b..58508504108 100644
--- a/src/mame/drivers/cgc7900.cpp
+++ b/src/mame/drivers/cgc7900.cpp
@@ -478,8 +478,8 @@ MACHINE_CONFIG_START(cgc7900_state::cgc7900)
AY8910(config, AY8910_TAG, XTAL(28'480'000)/16).add_route(ALL_OUTPUTS, "mono", 0.25);
/* devices */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(cgc7900_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(cgc7900_state::kbd_put));
MCFG_DEVICE_ADD(MM58167_TAG, MM58167, XTAL(32'768))
MCFG_MM58167_IRQ_CALLBACK(WRITELINE(*this, cgc7900_state, irq<0x0>))
diff --git a/src/mame/drivers/chaos.cpp b/src/mame/drivers/chaos.cpp
index ea6596c4de3..b785edcc42a 100644
--- a/src/mame/drivers/chaos.cpp
+++ b/src/mame/drivers/chaos.cpp
@@ -156,8 +156,8 @@ MACHINE_CONFIG_START(chaos_state::chaos)
MCFG_DEVICE_DATA_MAP(data_map)
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(chaos_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(chaos_state::kbd_put));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/cortex.cpp b/src/mame/drivers/cortex.cpp
index c2d1f89f762..e127ba600ab 100644
--- a/src/mame/drivers/cortex.cpp
+++ b/src/mame/drivers/cortex.cpp
@@ -179,7 +179,8 @@ void cortex_state::init_init()
membank("bankw0")->configure_entry(0, &main[0x00000]);
}
-MACHINE_CONFIG_START(cortex_state::cortex)
+void cortex_state::cortex(machine_config &config)
+{
/* basic machine hardware */
/* TMS9995 CPU @ 12.0 MHz */
// Standard variant, no overflow int
@@ -205,17 +206,17 @@ MACHINE_CONFIG_START(cortex_state::cortex)
crtc.set_vram_size(0x4000);
SCREEN(config, "screen", SCREEN_TYPE_RASTER);
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(cortex_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(cortex_state::kbd_put));
- //MCFG_DEVICE_ADD("uart1", TMS9902, XTAL(12'000'000) / 4)
- //MCFG_DEVICE_ADD("uart2", TMS9902, XTAL(12'000'000) / 4)
+ //TMS9902(config, "uart1", XTAL(12'000'000) / 4);
+ //TMS9902(config, "uart2", XTAL(12'000'000) / 4);
/* Sound */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("beeper", BEEP, 950) // guess
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.05)
-MACHINE_CONFIG_END
+ BEEP(config, m_beep, 950); // guess
+ m_beep->add_route(ALL_OUTPUTS, "mono", 0.05);
+}
/* ROM definition */
ROM_START( cortex )
diff --git a/src/mame/drivers/cxhumax.cpp b/src/mame/drivers/cxhumax.cpp
index 62bb1a69693..631b0d1ef10 100644
--- a/src/mame/drivers/cxhumax.cpp
+++ b/src/mame/drivers/cxhumax.cpp
@@ -1073,7 +1073,7 @@ MACHINE_CONFIG_START(cxhumax_state::cxhumax)
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
+ GENERIC_TERMINAL(config, m_terminal, 0);
MACHINE_CONFIG_END
ROM_START( hxhdci2k )
diff --git a/src/mame/drivers/czk80.cpp b/src/mame/drivers/czk80.cpp
index 2123acca269..69180a85481 100644
--- a/src/mame/drivers/czk80.cpp
+++ b/src/mame/drivers/czk80.cpp
@@ -62,8 +62,10 @@ public:
void czk80(machine_config &config);
void init_czk80();
+protected:
+ virtual void machine_reset() override;
+
private:
- DECLARE_MACHINE_RESET(czk80);
TIMER_CALLBACK_MEMBER(czk80_reset);
DECLARE_READ8_MEMBER(port80_r);
DECLARE_READ8_MEMBER(port81_r);
@@ -153,7 +155,7 @@ TIMER_CALLBACK_MEMBER( czk80_state::czk80_reset)
membank("bankr0")->set_entry(1);
}
-MACHINE_RESET_MEMBER( czk80_state, czk80 )
+void czk80_state::machine_reset()
{
machine().scheduler().timer_set(attotime::from_usec(3), timer_expired_delegate(FUNC(czk80_state::czk80_reset),this));
membank("bankr0")->set_entry(0); // point at rom
@@ -185,19 +187,18 @@ void czk80_state::kbd_put(u8 data)
m_term_data = data;
}
-MACHINE_CONFIG_START(czk80_state::czk80)
+void czk80_state::czk80(machine_config &config)
+{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(16'000'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &czk80_state::czk80_mem);
m_maincpu->set_addrmap(AS_IO, &czk80_state::czk80_io);
m_maincpu->set_daisy_config(daisy_chain);
- MCFG_MACHINE_RESET_OVERRIDE(czk80_state, czk80)
-
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(czk80_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(czk80_state::kbd_put));
UPD765A(config, m_fdc, true, true);
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", czk80_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ FLOPPY_CONNECTOR(config, "fdc:0", czk80_floppies, "525dd", floppy_image_device::default_floppy_formats);
z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(16'000'000) / 4));
ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -213,7 +214,7 @@ MACHINE_CONFIG_START(czk80_state::czk80)
z80pio_device& pio(Z80PIO(config, "pio", XTAL(16'000'000)/4));
pio.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
-MACHINE_CONFIG_END
+}
/* ROM definition */
diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp
index 96f5c9cc371..f85a28f038e 100644
--- a/src/mame/drivers/d6809.cpp
+++ b/src/mame/drivers/d6809.cpp
@@ -198,8 +198,8 @@ MACHINE_CONFIG_START(d6809_state::d6809)
MCFG_DEVICE_ADD("acia2", MOS6551, XTAL(14'745'600) / 8) // uses Q clock
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(d6809_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(d6809_state::kbd_put));
// Floppy
UPD765A(config, m_fdc, true, true);
diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp
index c9a6f7b7678..dd2572d3388 100644
--- a/src/mame/drivers/dccons.cpp
+++ b/src/mame/drivers/dccons.cpp
@@ -606,7 +606,8 @@ MACHINE_CONFIG_START(dc_cons_state::dc)
// MACRONIX_29LV160TMC(config, "dcflash");
- MCFG_MAPLE_DC_ADD( "maple_dc", "maincpu", dc_maple_irq )
+ MAPLE_DC(config, m_maple, 0, m_maincpu);
+ m_maple->irq_callback().set(FUNC(dc_state::maple_irq));
MCFG_DC_CONTROLLER_ADD("dcctrl0", "maple_dc", 0, ":P1:0", ":P1:1", ":P1:A0", ":P1:A1", ":P1:A2", ":P1:A3", ":P1:A4", ":P1:A5")
MCFG_DC_CONTROLLER_ADD("dcctrl1", "maple_dc", 1, ":P2:0", ":P2:1", ":P2:A0", ":P2:A1", ":P2:A2", ":P2:A3", ":P2:A4", ":P2:A5")
MCFG_DC_CONTROLLER_ADD("dcctrl2", "maple_dc", 2, ":P3:0", ":P3:1", ":P3:A0", ":P3:A1", ":P3:A2", ":P3:A3", ":P3:A4", ":P3:A5")
diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp
index 745034b553f..8e14571d46d 100644
--- a/src/mame/drivers/dim68k.cpp
+++ b/src/mame/drivers/dim68k.cpp
@@ -342,8 +342,8 @@ MACHINE_CONFIG_START(dim68k_state::dim68k)
m_crtc->set_char_width(8);
m_crtc->set_update_row_callback(FUNC(dim68k_state::crtc_update_row), this);
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(dim68k_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(dim68k_state::kbd_put));
// software lists
MCFG_SOFTWARE_LIST_ADD("flop_list", "dim68k")
diff --git a/src/mame/drivers/dm7000.cpp b/src/mame/drivers/dm7000.cpp
index 6e3b874ba26..827d49ba179 100644
--- a/src/mame/drivers/dm7000.cpp
+++ b/src/mame/drivers/dm7000.cpp
@@ -317,8 +317,8 @@ MACHINE_CONFIG_START(dm7000_state::dm7000)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_UPDATE_DRIVER(dm7000_state, screen_update_dm7000)
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dm7000_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(dm7000_state::kbd_put));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/dms86.cpp b/src/mame/drivers/dms86.cpp
index 43817b2c380..b266e87eeba 100644
--- a/src/mame/drivers/dms86.cpp
+++ b/src/mame/drivers/dms86.cpp
@@ -138,7 +138,8 @@ void dms86_state::kbd_put(u8 data)
m_term_data = data;
}
-MACHINE_CONFIG_START(dms86_state::dms86)
+void dms86_state::dms86(machine_config &config)
+{
/* basic machine hardware */
I8086(config, m_maincpu, XTAL(14'745'600) / 3); // according to the manual... hmm
m_maincpu->set_addrmap(AS_PROGRAM, &dms86_state::mem_map);
@@ -173,9 +174,9 @@ MACHINE_CONFIG_START(dms86_state::dms86)
rs232.dcd_handler().set(m_sio[0], FUNC(z80sio_device::dcdb_w)); // HiNet / Monitor switch
rs232.cts_handler().set(m_sio[0], FUNC(z80sio_device::ctsb_w)).invert();
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dms86_state, kbd_put))
-MACHINE_CONFIG_END
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(dms86_state::kbd_put));
+}
/* ROM definition */
ROM_START( dms86 )
diff --git a/src/mame/drivers/dual68.cpp b/src/mame/drivers/dual68.cpp
index 6369f029c8c..cb7d57789d4 100644
--- a/src/mame/drivers/dual68.cpp
+++ b/src/mame/drivers/dual68.cpp
@@ -103,8 +103,8 @@ MACHINE_CONFIG_START(dual68_state::dual68)
MCFG_DEVICE_IO_MAP(sio4_io)
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(dual68_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(dual68_state::kbd_put));
MCFG_DEVICE_ADD("usart1", MC2661, 9.8304_MHz_XTAL / 2) // SCN2661B
MCFG_DEVICE_ADD("usart2", MC2661, 9.8304_MHz_XTAL / 2) // SCN2661B
diff --git a/src/mame/drivers/ec65.cpp b/src/mame/drivers/ec65.cpp
index 5ee46374159..2a86aeb2374 100644
--- a/src/mame/drivers/ec65.cpp
+++ b/src/mame/drivers/ec65.cpp
@@ -195,19 +195,19 @@ MACHINE_CONFIG_START(ec65_state::ec65)
crtc.set_update_row_callback(FUNC(ec65_state::crtc_update_row), this);
/* devices */
- MCFG_DEVICE_ADD(PIA6821_TAG, PIA6821, 0)
+ PIA6821(config, PIA6821_TAG, 0);
- MCFG_DEVICE_ADD(ACIA6850_TAG, ACIA6850, 0)
+ ACIA6850(config, ACIA6850_TAG, 0);
- MCFG_DEVICE_ADD(VIA6522_0_TAG, VIA6522, XTAL(4'000'000) / 4)
+ VIA6522(config, m_via_0, XTAL(4'000'000) / 4);
- MCFG_DEVICE_ADD(VIA6522_1_TAG, VIA6522, XTAL(4'000'000) / 4)
+ VIA6522(config, m_via_1, XTAL(4'000'000) / 4);
mos6551_device &acia(MOS6551(config, ACIA6551_TAG, 0));
acia.set_xtal(XTAL(1'843'200));
- MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(ec65_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0));
+ keyboard.set_keyboard_callback(FUNC(ec65_state::kbd_put));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(ec65k_state::ec65k)
diff --git a/src/mame/drivers/eurocom2.cpp b/src/mame/drivers/eurocom2.cpp
index 5b4a165f122..fa7f8f09d75 100644
--- a/src/mame/drivers/eurocom2.cpp
+++ b/src/mame/drivers/eurocom2.cpp
@@ -449,8 +449,8 @@ MACHINE_CONFIG_START(eurocom2_state::eurocom2)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(eurocom2_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(eurocom2_state::kbd_put));
PIA6821(config, m_pia1, 0);
m_pia1->readca1_handler().set(FUNC(eurocom2_state::pia1_ca1_r)); // keyboard strobe
diff --git a/src/mame/drivers/evmbug.cpp b/src/mame/drivers/evmbug.cpp
index 1b14c6747b8..4d5669728b5 100644
--- a/src/mame/drivers/evmbug.cpp
+++ b/src/mame/drivers/evmbug.cpp
@@ -114,7 +114,8 @@ void evmbug_state::machine_reset()
m_maincpu->reset_line(ASSERT_LINE);
}
-MACHINE_CONFIG_START(evmbug_state::evmbug)
+void evmbug_state::evmbug(machine_config &config)
+{
// basic machine hardware
// TMS9995 CPU @ 12.0 MHz
// We have no lines connected yet
@@ -123,11 +124,11 @@ MACHINE_CONFIG_START(evmbug_state::evmbug)
m_maincpu->set_addrmap(AS_IO, &evmbug_state::io_map);
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(evmbug_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(evmbug_state::kbd_put));
- //MCFG_DEVICE_ADD("uart1", TMS9902, XTAL(12'000'000) / 4)
-MACHINE_CONFIG_END
+ //TMS9902(config, "uart1", XTAL(12'000'000) / 4);
+}
/* ROM definition */
ROM_START( evmbug )
diff --git a/src/mame/drivers/gridcomp.cpp b/src/mame/drivers/gridcomp.cpp
index 8d1d2e12889..2c5d357fa3f 100644
--- a/src/mame/drivers/gridcomp.cpp
+++ b/src/mame/drivers/gridcomp.cpp
@@ -391,8 +391,8 @@ MACHINE_CONFIG_START(gridcomp_state::grid1101)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD("keyboard", GRID_KEYBOARD, 0)
- MCFG_GRID_KEYBOARD_CB(PUT(gridcomp_state, kbd_put))
+ grid_keyboard_device &keyboard(GRID_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(gridcomp_state::kbd_put));
i7220_device &i7220(I7220(config, "i7220", XTAL(4'000'000)));
i7220.set_data_size(3); // 3 1-Mbit MBM's
diff --git a/src/mame/drivers/imsai.cpp b/src/mame/drivers/imsai.cpp
index 327d326ddc6..589d97fbeb6 100644
--- a/src/mame/drivers/imsai.cpp
+++ b/src/mame/drivers/imsai.cpp
@@ -105,18 +105,19 @@ void imsai_state::machine_reset()
m_term_data = 0;
}
-MACHINE_CONFIG_START(imsai_state::imsai)
+void imsai_state::imsai(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",I8085A, XTAL(6'000'000))
- MCFG_DEVICE_PROGRAM_MAP(imsai_mem)
- MCFG_DEVICE_IO_MAP(imsai_io)
+ I8085A(config, m_maincpu, XTAL(6'000'000));
+ m_maincpu->set_addrmap(AS_PROGRAM, &imsai_state::imsai_mem);
+ m_maincpu->set_addrmap(AS_IO, &imsai_state::imsai_io);
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(imsai_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(imsai_state::kbd_put));
/* Devices */
- MCFG_DEVICE_ADD("uart", I8251, 0)
+ I8251(config, "uart", 0);
PIT8253(config, m_pit, 0);
m_pit->set_clk<0>(6_MHz_XTAL / 3); // Timer 0: baud rate gen for 8251
@@ -124,7 +125,7 @@ MACHINE_CONFIG_START(imsai_state::imsai)
m_pit->out_handler<0>().append("uart", FUNC(i8251_device::write_rxc));
m_pit->set_clk<1>(6_MHz_XTAL / 3); // Timer 1: user
m_pit->set_clk<2>(6_MHz_XTAL / 3); // Timer 2: user
-MACHINE_CONFIG_END
+}
/* ROM definition */
ROM_START( imsai )
diff --git a/src/mame/drivers/ipds.cpp b/src/mame/drivers/ipds.cpp
index da688422ab2..96bd4f3e176 100644
--- a/src/mame/drivers/ipds.cpp
+++ b/src/mame/drivers/ipds.cpp
@@ -154,8 +154,8 @@ MACHINE_CONFIG_START(ipds_state::ipds)
MCFG_I8275_CHARACTER_WIDTH(6)
MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(ipds_state, crtc_display_pixels)
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(ipds_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(ipds_state::kbd_put));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/jonos.cpp b/src/mame/drivers/jonos.cpp
index 3641f690713..b7e74808269 100644
--- a/src/mame/drivers/jonos.cpp
+++ b/src/mame/drivers/jonos.cpp
@@ -192,8 +192,8 @@ MACHINE_CONFIG_START(jonos_state::jonos)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_jonos)
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(jonos_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(jonos_state::kbd_put));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/jupiter.cpp b/src/mame/drivers/jupiter.cpp
index bea56375950..2f0f38d0b53 100644
--- a/src/mame/drivers/jupiter.cpp
+++ b/src/mame/drivers/jupiter.cpp
@@ -341,8 +341,8 @@ MACHINE_CONFIG_START(jupiter3_state::jupiter3)
MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":0", jupiter_floppies, "525ssdd", floppy_image_device::default_floppy_formats)
MCFG_FLOPPY_DRIVE_ADD(INS1771N1_TAG":1", jupiter_floppies, nullptr, floppy_image_device::default_floppy_formats)
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(jupiter3_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(jupiter3_state::kbd_put));
// internal ram
RAM(config, RAM_TAG).set_default_size("64K");
diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp
index 1aeac3f1c40..14b6040f676 100644
--- a/src/mame/drivers/konamim2.cpp
+++ b/src/mame/drivers/konamim2.cpp
@@ -1316,7 +1316,7 @@ MACHINE_CONFIG_START(konamim2_state::m2)
MCFG_DEVICE_PROGRAM_MAP(m2_main_s)
// TODO: declaring as second screen causes palette confusion (wants to use palette from the other screen?)
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
+ GENERIC_TERMINAL(config, m_terminal, 0);
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/llc.cpp b/src/mame/drivers/llc.cpp
index f203f4eb088..99baf74c5cb 100644
--- a/src/mame/drivers/llc.cpp
+++ b/src/mame/drivers/llc.cpp
@@ -240,8 +240,8 @@ MACHINE_CONFIG_START(llc_state::llc1)
ctc.zc_callback<0>().set("z80ctc", FUNC(z80ctc_device::trg1));
ctc.zc_callback<1>().set("z80ctc", FUNC(z80ctc_device::trg3));
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(llc_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(llc_state::kbd_put));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(llc_state::llc2)
diff --git a/src/mame/drivers/mbc200.cpp b/src/mame/drivers/mbc200.cpp
index 4c22b3f5324..e87aa2a7af5 100644
--- a/src/mame/drivers/mbc200.cpp
+++ b/src/mame/drivers/mbc200.cpp
@@ -353,8 +353,8 @@ MACHINE_CONFIG_START(mbc200_state::mbc200)
MCFG_FLOPPY_DRIVE_SOUND(true)
/* Keyboard */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(mbc200_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(mbc200_state::kbd_put));
/* software lists */
MCFG_SOFTWARE_LIST_ADD("flop_list", "mbc200")
diff --git a/src/mame/drivers/mes.cpp b/src/mame/drivers/mes.cpp
index 04f6a0c5193..9f695399564 100644
--- a/src/mame/drivers/mes.cpp
+++ b/src/mame/drivers/mes.cpp
@@ -152,8 +152,8 @@ MACHINE_CONFIG_START(mes_state::mes)
Z80PIO(config, "pio", 0);
Z80SIO(config, "sio", 0);
- MCFG_DEVICE_ADD("keybd", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(mes_state, kbd_put))
+ generic_keyboard_device &keybd(GENERIC_KEYBOARD(config, "keybd", 0));
+ keybd.set_keyboard_callback(FUNC(mes_state::kbd_put));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/mod8.cpp b/src/mame/drivers/mod8.cpp
index d2320f6961c..5d4f7589d61 100644
--- a/src/mame/drivers/mod8.cpp
+++ b/src/mame/drivers/mod8.cpp
@@ -154,8 +154,8 @@ MACHINE_CONFIG_START(mod8_state::mod8)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(mod8_state,mod8_irq_callback)
/* video hardware */
- MCFG_DEVICE_ADD(TELEPRINTER_TAG, TELEPRINTER, 0)
- MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(PUT(mod8_state, kbd_put))
+ TELEPRINTER(config, m_teleprinter, 0);
+ m_teleprinter->set_keyboard_callback(FUNC(mod8_state::kbd_put));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/modellot.cpp b/src/mame/drivers/modellot.cpp
index a531ecc61f6..365d41e9464 100644
--- a/src/mame/drivers/modellot.cpp
+++ b/src/mame/drivers/modellot.cpp
@@ -197,8 +197,8 @@ MACHINE_CONFIG_START(modellot_state::modellot)
MCFG_PALETTE_ADD_MONOCHROME("palette")
/* Devices */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(modellot_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(modellot_state::kbd_put));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/ms9540.cpp b/src/mame/drivers/ms9540.cpp
index 8463f146b2b..fc17a01d395 100644
--- a/src/mame/drivers/ms9540.cpp
+++ b/src/mame/drivers/ms9540.cpp
@@ -78,16 +78,16 @@ void ms9540_state::kbd_put(u8 data)
m_term_data = data;
}
-MACHINE_CONFIG_START(ms9540_state::ms9540)
+void ms9540_state::ms9540(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 8000000) // unknown clock
- MCFG_DEVICE_PROGRAM_MAP(mem_map)
+ M68000(config, m_maincpu, 8000000); // unknown clock
+ m_maincpu->set_addrmap(AS_PROGRAM, &ms9540_state::mem_map);
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ms9540_state, kbd_put))
-
-MACHINE_CONFIG_END
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(ms9540_state::kbd_put));
+}
/* ROM definition */
ROM_START( ms9540 )
diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp
index ce48e989269..fd674df3c9e 100644
--- a/src/mame/drivers/naomi.cpp
+++ b/src/mame/drivers/naomi.cpp
@@ -2915,7 +2915,8 @@ MACHINE_CONFIG_START(dc_state::naomi_aw_base)
MCFG_DEVICE_ADD("soundcpu", ARM7, ((XTAL(33'868'800)*2)/3)/8) // AICA bus clock is 2/3rds * 33.8688. ARM7 gets 1 bus cycle out of each 8.
MCFG_DEVICE_PROGRAM_MAP(dc_audio_map)
- MCFG_MAPLE_DC_ADD( "maple_dc", "maincpu", dc_maple_irq )
+ MAPLE_DC(config, m_maple, 0, m_maincpu);
+ m_maple->irq_callback().set(FUNC(dc_state::maple_irq));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/okean240.cpp b/src/mame/drivers/okean240.cpp
index ca108352322..30c102ce069 100644
--- a/src/mame/drivers/okean240.cpp
+++ b/src/mame/drivers/okean240.cpp
@@ -574,8 +574,8 @@ MACHINE_CONFIG_START(okean240_state::okean240)
MCFG_DEVICE_REMOVE("uart")
MCFG_DEVICE_REMOVE("rs232")
subdevice<pit8253_device>("pit")->out_handler<1>().set_nop();
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(okean240_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(okean240_state::kbd_put));
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/olyboss.cpp b/src/mame/drivers/olyboss.cpp
index bbf469f3c2e..19d28fa6cc9 100644
--- a/src/mame/drivers/olyboss.cpp
+++ b/src/mame/drivers/olyboss.cpp
@@ -476,8 +476,8 @@ MACHINE_CONFIG_START( olyboss_state::olybossd )
m_ppi->out_pc_callback().set(FUNC(olyboss_state::ppic_w));
/* keyboard */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(olyboss_state, keyboard_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(olyboss_state::keyboard_put));
MACHINE_CONFIG_END
MACHINE_CONFIG_START( olyboss_state::olybossb )
@@ -540,8 +540,8 @@ MACHINE_CONFIG_START( olyboss_state::bossb85 )
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
/* keyboard */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(olyboss_state, keyboard85_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(olyboss_state::keyboard85_put));
MACHINE_CONFIG_END
MACHINE_CONFIG_START( olyboss_state::bossa85 )
diff --git a/src/mame/drivers/olytext.cpp b/src/mame/drivers/olytext.cpp
index 9af7a15d98f..ed80b13dfd3 100644
--- a/src/mame/drivers/olytext.cpp
+++ b/src/mame/drivers/olytext.cpp
@@ -171,8 +171,8 @@ MACHINE_CONFIG_START( olytext_state::olytext )
MCFG_FLOPPY_DRIVE_SOUND(true)
/* keyboard */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(olytext_state, keyboard_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(olytext_state::keyboard_put));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/patinho_feio.cpp b/src/mame/drivers/patinho_feio.cpp
index fbdc3479590..92463e03178 100644
--- a/src/mame/drivers/patinho_feio.cpp
+++ b/src/mame/drivers/patinho_feio.cpp
@@ -134,8 +134,8 @@ void patinho_feio_state::teletype_kbd_input(u8 data)
//I figured out that the data is provided inverted (2's complement)
//based on a comment in the source code listing of the HEXAM program.
//It is not clear though, if all I/O devices complement the data when
- //communicating with the computer, or if this behavious is a particular
- //caracteristics of the teletype.
+ //communicating with the computer, or if this behaviour is a particular
+ //characteristic of the teletype.
m_maincpu->transfer_byte_from_external_device(0xB, ~data);
}
@@ -263,22 +263,22 @@ MACHINE_CONFIG_START(patinho_feio_state::patinho_feio)
/* Teleprinter
TeleType ASR33
- (max. speed: 10 characteres per second)
+ (max. speed: 10 characters per second)
with paper tape reading (and optionally punching) capabilities */
MCFG_PATINHO_IODEV_WRITE_CB(0xB, WRITE8(*this, patinho_feio_state, teletype_data_w))
/* Papertape Reader
Hewlett-Packard HP-2737-A
- Optical Papertape Reader (max. speed: 300 characteres per second) */
+ Optical Papertape Reader (max. speed: 300 characters per second) */
// MCFG_PATINHO_IODEV_READ_CB(0xE, READ8(*this, patinho_feio_state, papertapereader_data_r))
/* DECWRITER */
- MCFG_DEVICE_ADD("decwriter", TELEPRINTER, 0)
- MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(PUT(patinho_feio_state, decwriter_kbd_input))
+ teleprinter_device &decwriter(TELEPRINTER(config, "decwriter", 0));
+ decwriter.set_keyboard_callback(FUNC(patinho_feio_state::decwriter_kbd_input));
/* Teletype */
- MCFG_DEVICE_ADD("teletype", TELEPRINTER, 1)
- MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(PUT(patinho_feio_state, teletype_kbd_input))
+ teleprinter_device &teletype(TELEPRINTER(config, "teletype", 1));
+ teletype.set_keyboard_callback(FUNC(patinho_feio_state::teletype_kbd_input));
/* punched tape */
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "patinho_tape")
diff --git a/src/mame/drivers/pdp11.cpp b/src/mame/drivers/pdp11.cpp
index e48405c021f..aa8dcbc9811 100644
--- a/src/mame/drivers/pdp11.cpp
+++ b/src/mame/drivers/pdp11.cpp
@@ -353,18 +353,19 @@ void pdp11_state::kbd_put(u8 data)
m_teletype_status |= 0x80;
}
-MACHINE_CONFIG_START(pdp11_state::pdp11)
+void pdp11_state::pdp11(machine_config &config)
+{
/* basic machine hardware */
T11(config, m_maincpu, XTAL(4'000'000)); // Need proper CPU here
m_maincpu->set_initial_mode(6 << 13);
m_maincpu->set_addrmap(AS_PROGRAM, &pdp11_state::pdp11_mem);
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(pdp11_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(pdp11_state::kbd_put));
RX01(config, "rx01", 0);
-MACHINE_CONFIG_END
+}
MACHINE_CONFIG_START(pdp11_state::pdp11ub2)
pdp11(config);
diff --git a/src/mame/drivers/pes.cpp b/src/mame/drivers/pes.cpp
index 7abd62cd632..1e51fe6a583 100644
--- a/src/mame/drivers/pes.cpp
+++ b/src/mame/drivers/pes.cpp
@@ -263,7 +263,7 @@ void pes_state::pes(machine_config &config)
m_speech->add_route(ALL_OUTPUTS, "mono", 1.0);
GENERIC_TERMINAL(config, m_terminal, 0);
- m_terminal->set_keyboard_callback(KEYBOARDCB_PUT(pes_state, pes_kbd_input));
+ m_terminal->set_keyboard_callback(FUNC(pes_state::pes_kbd_input));
}
/******************************************************************************
diff --git a/src/mame/drivers/phunsy.cpp b/src/mame/drivers/phunsy.cpp
index 3a83660c4f9..4de1d9e683e 100644
--- a/src/mame/drivers/phunsy.cpp
+++ b/src/mame/drivers/phunsy.cpp
@@ -372,8 +372,8 @@ MACHINE_CONFIG_START(phunsy_state::phunsy)
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
/* Devices */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(phunsy_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(phunsy_state::kbd_put));
MCFG_CASSETTE_ADD( "cassette" )
/* quickload */
diff --git a/src/mame/drivers/poly.cpp b/src/mame/drivers/poly.cpp
index e3d7fc38168..9853ee4f05c 100644
--- a/src/mame/drivers/poly.cpp
+++ b/src/mame/drivers/poly.cpp
@@ -315,8 +315,8 @@ MACHINE_CONFIG_START(poly_state::poly)
//m_kr2376->strobe().set("pia1", FUNC(pia6821_device::cb1_w));
/* generic keyboard until ROM in KR2376-12 is known */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(poly_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(poly_state::kbd_put));
/* video control */
PIA6821(config, m_pia[0], 0);
diff --git a/src/mame/drivers/proteus3.cpp b/src/mame/drivers/proteus3.cpp
index 1a37cbaf089..39332f15078 100644
--- a/src/mame/drivers/proteus3.cpp
+++ b/src/mame/drivers/proteus3.cpp
@@ -402,8 +402,8 @@ MACHINE_CONFIG_START(proteus3_state::proteus3)
m_pia->ca2_handler().set(FUNC(proteus3_state::ca2_w));
m_pia->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE);
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(proteus3_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(proteus3_state::kbd_put));
/* cassette */
ACIA6850(config, m_acia1, 0);
diff --git a/src/mame/drivers/ptcsol.cpp b/src/mame/drivers/ptcsol.cpp
index cc151ef77e9..c6cd8ac2f5d 100644
--- a/src/mame/drivers/ptcsol.cpp
+++ b/src/mame/drivers/ptcsol.cpp
@@ -783,8 +783,8 @@ MACHINE_CONFIG_START(sol20_state::sol20)
m_uart_s->set_rx_clock(4800.0);
m_uart_s->set_auto_rdav(true); // ROD (pin 4) tied to RDD (pin 18)
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(sol20_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(sol20_state::kbd_put));
MCFG_SOFTWARE_LIST_ADD("cass_list", "sol20_cass")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp
index ce65e70c338..4441483d0f0 100644
--- a/src/mame/drivers/ravens.cpp
+++ b/src/mame/drivers/ravens.cpp
@@ -369,8 +369,8 @@ MACHINE_CONFIG_START(ravens_state::ravens2)
MCFG_MACHINE_RESET_OVERRIDE(ravens_state, ravens2)
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ravens_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(ravens_state::kbd_put));
/* quickload */
MCFG_QUICKLOAD_ADD("quickload", ravens_state, ravens, "pgm", 1)
diff --git a/src/mame/drivers/rc702.cpp b/src/mame/drivers/rc702.cpp
index 3118eb79565..d29dfad2a64 100644
--- a/src/mame/drivers/rc702.cpp
+++ b/src/mame/drivers/rc702.cpp
@@ -369,8 +369,8 @@ MACHINE_CONFIG_START(rc702_state::rc702)
MCFG_FLOPPY_DRIVE_SOUND(true)
/* Keyboard */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(rc702_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(rc702_state::kbd_put));
TTL7474(config, m_7474, 0);
m_7474->output_cb().set(FUNC(rc702_state::q_w));
diff --git a/src/mame/drivers/rc759.cpp b/src/mame/drivers/rc759.cpp
index 5a6b107d558..89921ab5608 100644
--- a/src/mame/drivers/rc759.cpp
+++ b/src/mame/drivers/rc759.cpp
@@ -568,8 +568,8 @@ MACHINE_CONFIG_START(rc759_state::rc759)
MCFG_I82730_SINT_HANDLER(WRITELINE(m_pic, pic8259_device, ir4_w))
// keyboard
- MCFG_DEVICE_ADD("keyb", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(rc759_state, keyb_put))
+ generic_keyboard_device &keyb(GENERIC_KEYBOARD(config, "keyb", 0));
+ keyb.set_keyboard_callback(FUNC(rc759_state::keyb_put));
// cassette
MCFG_CASSETTE_ADD("cas")
diff --git a/src/mame/drivers/rm380z.cpp b/src/mame/drivers/rm380z.cpp
index 45df7b155b7..56373e7f788 100644
--- a/src/mame/drivers/rm380z.cpp
+++ b/src/mame/drivers/rm380z.cpp
@@ -269,8 +269,8 @@ MACHINE_CONFIG_START(rm380z_state::rm380z)
MCFG_FLOPPY_DRIVE_ADD("wd1771:1", rm380z_floppies, "sssd", floppy_image_device::default_floppy_formats)
/* keyboard */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(rm380z_state, keyboard_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(rm380z_state::keyboard_put));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(rm380z_state::rm480z)
@@ -292,8 +292,8 @@ MACHINE_CONFIG_START(rm380z_state::rm480z)
// MCFG_PALETTE_ADD_MONOCHROME("palette")
/* keyboard */
-// MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
-// MCFG_GENERIC_KEYBOARD_CB(PUT(rm380z_state, keyboard_put))
+// generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+// keyboard.set_keyboard_callback(FUNC(rm380z_state::keyboard_put));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/rvoice.cpp b/src/mame/drivers/rvoice.cpp
index f4c17174833..b8d8c3e6c93 100644
--- a/src/mame/drivers/rvoice.cpp
+++ b/src/mame/drivers/rvoice.cpp
@@ -360,15 +360,16 @@ void rvoice_state::null_kbd_put(u8 data)
{
}
-MACHINE_CONFIG_START(rvoice_state::rvoicepc)
+void rvoice_state::rvoicepc(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", HD63701, XTAL(7'372'800))
- MCFG_DEVICE_PROGRAM_MAP(hd63701_main_mem)
+ HD63701(config, m_maincpu, XTAL(7'372'800));
+ m_maincpu->set_addrmap(AS_PROGRAM, &rvoice_state::hd63701_main_mem);
- //MCFG_DEVICE_ADD("playercpu", HD63701, XTAL(7'372'800)) // not dumped yet
- //MCFG_DEVICE_PROGRAM_MAP(hd63701_slave_mem)
- //MCFG_DEVICE_IO_MAP(hd63701_slave_io)
- MCFG_QUANTUM_TIME(attotime::from_hz(60))
+ //hd63701_cpu_device &playercpu(HD63701(config "playercpu", XTAL(7'372'800))); // not dumped yet
+ //playercpu.set_addrmap(AS_PROGRAM, &rvoice_state::hd63701_slave_mem);
+ //playercpu.set_addrmap(AS_PROGRAM, &rvoice_state::hd63701_slave_io);
+ config.m_minimum_quantum = attotime::from_hz(60);
mos6551_device &acia(MOS6551(config, "acia65c51", 0));
acia.set_xtal(1.8432_MHz_XTAL);
@@ -376,10 +377,9 @@ MACHINE_CONFIG_START(rvoice_state::rvoicepc)
/* video hardware */
/* sound hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(rvoice_state, null_kbd_put))
-
-MACHINE_CONFIG_END
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(rvoice_state::null_kbd_put));
+}
diff --git a/src/mame/drivers/sacstate.cpp b/src/mame/drivers/sacstate.cpp
index 78fbaa66432..5f0e7a9c912 100644
--- a/src/mame/drivers/sacstate.cpp
+++ b/src/mame/drivers/sacstate.cpp
@@ -133,16 +133,17 @@ void sacstate_state::machine_reset()
m_val = ioport("CONFIG")->read();
}
-MACHINE_CONFIG_START(sacstate_state::sacstate)
+void sacstate_state::sacstate(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",I8008, 800000)
- MCFG_DEVICE_PROGRAM_MAP(sacstate_mem)
- MCFG_DEVICE_IO_MAP(sacstate_io)
+ I8008(config, m_maincpu, 800000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &sacstate_state::sacstate_mem);
+ m_maincpu->set_addrmap(AS_IO, &sacstate_state::sacstate_io);
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(sacstate_state, kbd_put))
-MACHINE_CONFIG_END
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(sacstate_state::kbd_put));
+}
/* ROM definition */
ROM_START( sacstate )
diff --git a/src/mame/drivers/sapi1.cpp b/src/mame/drivers/sapi1.cpp
index 9e3c3deb865..142b7efb484 100644
--- a/src/mame/drivers/sapi1.cpp
+++ b/src/mame/drivers/sapi1.cpp
@@ -623,7 +623,7 @@ void sapi1_state::init_sapizps3b()
/* Machine driver */
MACHINE_CONFIG_START(sapi1_state::sapi1)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8080A, XTAL(18'000'000) / 9) // Tesla MHB8080A + MHB8224 + MHB8228
+ MCFG_DEVICE_ADD(m_maincpu, I8080A, XTAL(18'000'000) / 9) // Tesla MHB8080A + MHB8224 + MHB8228
MCFG_DEVICE_PROGRAM_MAP(sapi1_mem)
MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapi1)
@@ -642,14 +642,15 @@ MACHINE_CONFIG_START(sapi1_state::sapi1)
RAM(config, RAM_TAG).set_default_size("64K");
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(sapi1_state::sapi2)
+void sapi1_state::sapi2(machine_config &config)
+{
sapi1(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(sapi2_mem)
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(sapi1_state, kbd_put))
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &sapi1_state::sapi2_mem);
+
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(sapi1_state::kbd_put));
+}
MACHINE_CONFIG_START(sapi1_state::sapi3)
sapi2(config);
diff --git a/src/mame/drivers/sbc6510.cpp b/src/mame/drivers/sbc6510.cpp
index 9acf0c8bea7..8b2aac2908a 100644
--- a/src/mame/drivers/sbc6510.cpp
+++ b/src/mame/drivers/sbc6510.cpp
@@ -292,7 +292,7 @@ MACHINE_CONFIG_START(sbc6510_state::sbc6510)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sbc6510)
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
+ GENERIC_TERMINAL(config, m_terminal, 0);
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp
index 86b58ee4e76..1c2e873ccc2 100644
--- a/src/mame/drivers/tavernie.cpp
+++ b/src/mame/drivers/tavernie.cpp
@@ -359,8 +359,8 @@ MACHINE_CONFIG_START(tavernie_state::ivg09)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* Devices */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(tavernie_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(tavernie_state::kbd_put));
mc6845_device &crtc(MC6845(config, "crtc", 1008000)); // unknown clock
crtc.set_screen("screen");
diff --git a/src/mame/drivers/tk80bs.cpp b/src/mame/drivers/tk80bs.cpp
index 47cf0897071..fc26f3d365e 100644
--- a/src/mame/drivers/tk80bs.cpp
+++ b/src/mame/drivers/tk80bs.cpp
@@ -194,8 +194,8 @@ MACHINE_CONFIG_START(tk80bs_state::tk80bs)
m_ppi->in_pa_callback().set(FUNC(tk80bs_state::port_a_r));
m_ppi->in_pb_callback().set(FUNC(tk80bs_state::port_b_r));
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(tk80bs_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(tk80bs_state::kbd_put));
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp
index 76a95ab21ab..177b235dfab 100644
--- a/src/mame/drivers/trs80m2.cpp
+++ b/src/mame/drivers/trs80m2.cpp
@@ -776,8 +776,8 @@ MACHINE_CONFIG_START(trs80m2_state::trs80m2)
TRS80M2_KEYBOARD(config, m_kb, 0);
m_kb->clock_wr_callback().set(FUNC(trs80m2_state::kb_clock_w));
- MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(trs80m2_state, kbd_w))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0));
+ keyboard.set_keyboard_callback(FUNC(trs80m2_state::kbd_w));
// internal RAM
RAM(config, RAM_TAG).set_default_size("64K").set_extra_options("32K,96K,128K,160K,192K,224K,256K,288K,320K,352K,384K,416K,448K,480K,512K");
@@ -868,8 +868,8 @@ MACHINE_CONFIG_START(trs80m16_state::trs80m16)
TRS80M2_KEYBOARD(config, m_kb, 0);
m_kb->clock_wr_callback().set(FUNC(trs80m2_state::kb_clock_w));
- MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(trs80m2_state, kbd_w))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0));
+ keyboard.set_keyboard_callback(FUNC(trs80m2_state::kbd_w));
// internal RAM
RAM(config, RAM_TAG).set_default_size("256K").set_extra_options("512K,768K,1M");
diff --git a/src/mame/drivers/ts802.cpp b/src/mame/drivers/ts802.cpp
index 1f3ca782d91..d8fcc909224 100644
--- a/src/mame/drivers/ts802.cpp
+++ b/src/mame/drivers/ts802.cpp
@@ -191,7 +191,8 @@ void ts802_state::init_ts802()
membank("bankw0")->configure_entry(0, &main[0x0000]);
}
-MACHINE_CONFIG_START(ts802_state::ts802)
+void ts802_state::ts802(machine_config &config)
+{
/* basic machine hardware */
Z80(config, m_maincpu, 16_MHz_XTAL / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &ts802_state::ts802_mem);
@@ -199,8 +200,8 @@ MACHINE_CONFIG_START(ts802_state::ts802)
//m_maincpu->set_daisy_config(daisy_chain_intf); // causes problems
/* Devices */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ts802_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(ts802_state::kbd_put));
z80dma_device& dma(Z80DMA(config, "dma", 16_MHz_XTAL / 4));
dma.out_busreq_callback().set_inputline(m_maincpu, INPUT_LINE_HALT);
@@ -221,7 +222,7 @@ MACHINE_CONFIG_START(ts802_state::ts802)
FD1793(config, "fdc", 4'000'000 / 2); // unknown clock
FLOPPY_CONNECTOR(config, "fdc:0", ts802_floppies, "525dd", floppy_image_device::default_floppy_formats).enable_sound(true);
-MACHINE_CONFIG_END
+}
/* ROM definition */
ROM_START( ts802 )
diff --git a/src/mame/drivers/ts816.cpp b/src/mame/drivers/ts816.cpp
index 62f2070594c..b6c59cccdb4 100644
--- a/src/mame/drivers/ts816.cpp
+++ b/src/mame/drivers/ts816.cpp
@@ -263,7 +263,8 @@ void ts816_state::init_ts816()
membank("bank2")->configure_entry(1, &rams[0x1e000]);
}
-MACHINE_CONFIG_START(ts816_state::ts816)
+void ts816_state::ts816(machine_config &config)
+{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(16'000'000) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &ts816_state::ts816_mem);
@@ -271,8 +272,8 @@ MACHINE_CONFIG_START(ts816_state::ts816)
m_maincpu->set_daisy_config(daisy_chain);
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(ts816_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(ts816_state::kbd_put));
//z80sio_device& sio0(Z80SIO(config, "sio0", XTAL(16'000'000) / 4));
//sio0.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
@@ -310,7 +311,7 @@ MACHINE_CONFIG_START(ts816_state::ts816)
z80dma_device& dma(Z80DMA(config, "dma", XTAL(16'000'000) / 4));
//dma.out_busreq_callback().set(FUNC(ts816_state::busreq_w));
dma.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
-MACHINE_CONFIG_END
+}
/* ROM definition */
ROM_START( ts816 )
diff --git a/src/mame/drivers/v6809.cpp b/src/mame/drivers/v6809.cpp
index c9fbcad7fcc..d4122dea7e3 100644
--- a/src/mame/drivers/v6809.cpp
+++ b/src/mame/drivers/v6809.cpp
@@ -311,8 +311,8 @@ MACHINE_CONFIG_START(v6809_state::v6809)
m_crtc->set_update_row_callback(FUNC(v6809_state::crtc_update_row), this);
m_crtc->set_on_update_addr_change_callback(FUNC(v6809_state::crtc_update_addr), this);
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(v6809_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(v6809_state::kbd_put));
// port A = drive select and 2 control lines ; port B = keyboard
// CB2 connects to the interrupt pin of the RTC (the rtc code doesn't support it)
diff --git a/src/mame/drivers/vax11.cpp b/src/mame/drivers/vax11.cpp
index 6be5d7cde69..9a799f4e54e 100644
--- a/src/mame/drivers/vax11.cpp
+++ b/src/mame/drivers/vax11.cpp
@@ -140,18 +140,19 @@ void vax11_state::kbd_put(u8 data)
m_term_status = 0xffff;
}
-MACHINE_CONFIG_START(vax11_state::vax11)
+void vax11_state::vax11(machine_config &config)
+{
/* basic machine hardware */
T11(config, m_maincpu, XTAL(4'000'000)); // Need proper CPU here
m_maincpu->set_initial_mode(0 << 13);
m_maincpu->set_addrmap(AS_PROGRAM, &vax11_state::vax11_mem);
/* video hardware */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(vax11_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(vax11_state::kbd_put));
RX01(config, "rx01", 0);
-MACHINE_CONFIG_END
+}
ROM_START( vax785 )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp
index 8d02332522e..756d567936b 100644
--- a/src/mame/drivers/votrpss.cpp
+++ b/src/mame/drivers/votrpss.cpp
@@ -262,8 +262,8 @@ MACHINE_CONFIG_START(votrpss_state::votrpss)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* Devices */
- MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0)
- MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(votrpss_state, kbd_put))
+ GENERIC_TERMINAL(config, m_terminal, 0);
+ m_terminal->set_keyboard_callback(FUNC(votrpss_state::kbd_put));
i8251_device &uart(I8251(config, "uart", 0));
uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp
index 35a1e69c4b0..e29df35bee0 100644
--- a/src/mame/drivers/z9001.cpp
+++ b/src/mame/drivers/z9001.cpp
@@ -231,8 +231,8 @@ MACHINE_CONFIG_START(z9001_state::z9001)
BEEP(config, "beeper", 800).add_route(ALL_OUTPUTS, "mono", 0.50);
/* Devices */
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(z9001_state, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(z9001_state::kbd_put));
MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10))
z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(9'830'400) / 4));
diff --git a/src/mame/drivers/zrt80.cpp b/src/mame/drivers/zrt80.cpp
index c1df58bb97d..f4baf373946 100644
--- a/src/mame/drivers/zrt80.cpp
+++ b/src/mame/drivers/zrt80.cpp
@@ -312,7 +312,7 @@ void zrt80_state::zrt80(machine_config &config)
m_8250->out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0);
generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
- keyboard.set_keyboard_callback(KEYBOARDCB_PUT(zrt80_state, kbd_put));
+ keyboard.set_keyboard_callback(FUNC(zrt80_state::kbd_put));
}
/* ROM definition */
diff --git a/src/mame/includes/dc.h b/src/mame/includes/dc.h
index 0c8c8558a1d..707adb0cfc7 100644
--- a/src/mame/includes/dc.h
+++ b/src/mame/includes/dc.h
@@ -79,6 +79,7 @@ class dc_state : public driver_device
DECLARE_WRITE64_MEMBER( dc_modem_w );
DECLARE_WRITE8_MEMBER( g1_irq );
DECLARE_WRITE8_MEMBER( pvr_irq );
+ DECLARE_WRITE8_MEMBER( maple_irq );
DECLARE_READ64_MEMBER( sh4_soundram_r );
DECLARE_WRITE64_MEMBER( sh4_soundram_w );
DECLARE_WRITE_LINE_MEMBER(aica_irq);
@@ -287,6 +288,4 @@ class dc_state : public driver_device
#define IST_ERR_ISP_LIMIT 0x00000004
#define IST_ERR_PVRIF_ILL_ADDR 0x00000040
-void dc_maple_irq(running_machine &machine);
-
#endif // MAME_INCLUDES_DC_H
diff --git a/src/mame/machine/dc.cpp b/src/mame/machine/dc.cpp
index 0108b7f6187..20d1db3ebf7 100644
--- a/src/mame/machine/dc.cpp
+++ b/src/mame/machine/dc.cpp
@@ -177,12 +177,14 @@ WRITE8_MEMBER(dc_state::pvr_irq)
dc_update_interrupt_status();
}
-void dc_maple_irq(running_machine &machine)
+WRITE8_MEMBER(dc_state::maple_irq)
{
- dc_state *state = machine.driver_data<dc_state>();
-
- state->dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_MAPLE;
- state->dc_update_interrupt_status();
+ switch(data) {
+ case maple_dc_device::DMA_MAPLE_IRQ:
+ dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_MAPLE;
+ break;
+ }
+ dc_update_interrupt_status();
}
TIMER_CALLBACK_MEMBER(dc_state::ch2_dma_irq)
diff --git a/src/mame/machine/gridkeyb.h b/src/mame/machine/gridkeyb.h
index c70669dcb05..c4a41cd1589 100644
--- a/src/mame/machine/gridkeyb.h
+++ b/src/mame/machine/gridkeyb.h
@@ -9,18 +9,6 @@
/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define GRIDKEYBCB_PUT(cls, fnc) grid_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr))
-#define GRIDKEYBCB_DEVPUT(tag, cls, fnc) grid_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr))
-
-#define MCFG_GRID_KEYBOARD_CB(cb) \
- downcast<grid_keyboard_device &>(*device).set_keyboard_callback((GRIDKEYBCB_##cb));
-
-
-
-/***************************************************************************
DEVICE TYPE GLOBALS
***************************************************************************/
@@ -52,7 +40,12 @@ public:
device_t *owner,
u32 clock);
- template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); }
+ template <class FunctionClass>
+ void set_keyboard_callback(void (FunctionClass::*callback)(u16 character), const char *name)
+ {
+ set_keyboard_callback(output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_keyboard_callback(output_delegate callback) { m_keyboard_cb = callback; }
virtual ioport_constructor device_input_ports() const override;
diff --git a/src/mame/machine/maple-dc.cpp b/src/mame/machine/maple-dc.cpp
index 2d1b962669a..77705c6556b 100644
--- a/src/mame/machine/maple-dc.cpp
+++ b/src/mame/machine/maple-dc.cpp
@@ -18,13 +18,13 @@ void maple_dc_device::amap(address_map &map)
}
maple_dc_device::maple_dc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, MAPLE_DC, tag, owner, clock)
+ : device_t(mconfig, MAPLE_DC, tag, owner, clock),
+ cpu(*this, finder_base::DUMMY_TAG),
+ irq_cb(*this)
{
// Do not move that in device_start or there will be a race
// condition with the maple devices call to register_port.
memset(devices, 0, sizeof(devices));
- cpu = nullptr;
- irq_cb = nullptr;
}
void maple_dc_device::register_port(int port, maple_device *device)
@@ -38,8 +38,8 @@ void maple_dc_device::register_port(int port, maple_device *device)
void maple_dc_device::device_start()
{
logerror("maple_dc_device started\n");
- cpu = machine().device<sh4_device>(maincpu_tag);
timer = timer_alloc(0);
+ irq_cb.resolve_safe();
mdstar = 0;
@@ -86,8 +86,7 @@ void maple_dc_device::device_timer(emu_timer &timer, device_timer_id id, int par
case DMA_DONE:
dma_state = DMA_IDLE;
mdst = 0;
- if(irq_cb)
- irq_cb(machine());
+ irq_cb(DMA_MAPLE_IRQ);
break;
default:
diff --git a/src/mame/machine/maple-dc.h b/src/mame/machine/maple-dc.h
index 860294e2d4f..d0219f674fa 100644
--- a/src/mame/machine/maple-dc.h
+++ b/src/mame/machine/maple-dc.h
@@ -7,19 +7,25 @@
#include "cpu/sh/sh4.h"
-#define MCFG_MAPLE_DC_ADD(_tag, _maincpu_tag, _irq_cb) \
- MCFG_DEVICE_ADD(_tag, MAPLE_DC, 0) \
- downcast<maple_dc_device &>(*device).set_maincpu_tag(_maincpu_tag); \
- downcast<maple_dc_device &>(*device).set_irq_cb(_irq_cb);
-
class maple_device;
class maple_dc_device : public device_t
{
public:
+ enum {
+ DMA_MAPLE_IRQ
+ };
+
+ template <typename T>
+ maple_dc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&cpu_tag)
+ : maple_dc_device(mconfig, tag, owner, clock)
+ {
+ set_maincpu_tag(std::forward<T>(cpu_tag));
+ }
+
maple_dc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- void set_maincpu_tag(const char *new_maincpu_tag) { maincpu_tag = new_maincpu_tag; }
- void set_irq_cb(void (*new_irq_cb)(running_machine &)) { irq_cb = new_irq_cb; }
+ template <typename T> void set_maincpu_tag(T &&cpu_tag) { cpu.set_tag(std::forward<T>(cpu_tag)); }
+ auto irq_callback() { return irq_cb.bind(); }
DECLARE_READ32_MEMBER(sb_mdstar_r); // 5f6c04
DECLARE_WRITE32_MEMBER(sb_mdstar_w);
@@ -59,7 +65,7 @@ private:
maple_device *devices[4];
- sh4_device *cpu;
+ required_device<sh4_device> cpu;
emu_timer *timer;
uint32_t mdstar, mden, mdst, msys;
@@ -67,11 +73,9 @@ private:
uint32_t dma_state, dma_adr, dma_port, dma_dest;
bool dma_endflag;
- void (*irq_cb)(running_machine &);
+ devcb_write8 irq_cb;
void dma_step();
-
- const char *maincpu_tag;
};
DECLARE_DEVICE_TYPE(MAPLE_DC, maple_dc_device)
diff --git a/src/mame/machine/teleprinter.cpp b/src/mame/machine/teleprinter.cpp
index 1bd3d21e07f..6cbc53090cf 100644
--- a/src/mame/machine/teleprinter.cpp
+++ b/src/mame/machine/teleprinter.cpp
@@ -218,8 +218,8 @@ MACHINE_CONFIG_START(teleprinter_device::device_add_mconfig)
MCFG_SCREEN_SIZE(teleprinter_device::WIDTH*8, teleprinter_device::HEIGHT*8)
MCFG_SCREEN_VISIBLE_AREA(0, teleprinter_device::WIDTH*8-1, 0, teleprinter_device::HEIGHT*8-1)
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, teleprinter_device, tp_update)
- MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
- MCFG_GENERIC_KEYBOARD_CB(PUT(generic_terminal_device, kbd_put))
+ generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0));
+ keyboard.set_keyboard_callback(FUNC(generic_terminal_device::kbd_put));
SPEAKER(config, "bell").front_center();
MCFG_DEVICE_ADD("beeper", BEEP, 2'000)
diff --git a/src/mame/machine/teleprinter.h b/src/mame/machine/teleprinter.h
index f33090399b4..d6817d88066 100644
--- a/src/mame/machine/teleprinter.h
+++ b/src/mame/machine/teleprinter.h
@@ -14,9 +14,6 @@
#define TELEPRINTER_TAG "teleprinter"
#define TELEPRINTER_SCREEN_TAG "tty_screen"
-#define MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(cb) \
- downcast<generic_terminal_device &>(*device).set_keyboard_callback(KEYBOARDCB_##cb);
-
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/