From 0f21c3fc3adce625fa6366f15b2119b536f333bd Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Tue, 31 Jul 2018 04:55:32 +0200 Subject: -8042kbdc, mb89352, mc6854: Removed legacy devcb accessors. [Ryan Holtz] --- src/devices/bus/acorn/atom/econet.cpp | 17 ++++-- src/devices/bus/acorn/system/econet.cpp | 16 ++++-- src/devices/bus/econet/econet.h | 1 - src/devices/cpu/i86/i286.h | 1 + src/devices/machine/8042kbdc.h | 27 --------- src/devices/machine/fdc37c93x.cpp | 10 ++-- src/devices/machine/mb89352.h | 8 --- src/devices/machine/mc6854.h | 37 ++++-------- src/emu/diexec.h | 39 ++++++++++++- src/mame/drivers/accomm.cpp | 12 ++-- src/mame/drivers/bbc.cpp | 12 ++-- src/mame/drivers/mtouchxl.cpp | 11 ++-- src/mame/drivers/poly.cpp | 6 +- src/mame/drivers/proteus.cpp | 4 +- src/mame/drivers/segas32.cpp | 8 +-- src/mame/drivers/thomson.cpp | 4 +- src/mame/drivers/tv990.cpp | 6 +- src/mame/drivers/vis.cpp | 99 ++++++++++++++++++--------------- src/mame/drivers/x68k.cpp | 8 +-- src/mame/includes/thomson.h | 2 +- src/mame/machine/thomflop.cpp | 2 +- 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 a20_cb; template void set_a20_callback(Object &&cb) { m_a20_callback = std::forward(cb); } template devcb_base &set_shutdown_callback(Object &&cb) { return m_out_shutdown_func.set_callback(std::forward(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 @@ -16,28 +16,6 @@ #include "machine/pckeybrd.h" -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_KBDC8042_KEYBOARD_TYPE(_kbdt) \ - downcast(*device).set_keyboard_type(kbdc8042_device::_kbdt); - -#define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \ - downcast(*device).set_system_reset_callback(DEVCB_##_devcb); - -#define MCFG_KBDC8042_GATE_A20_CB(_devcb) \ - downcast(*device).set_gate_a20_callback(DEVCB_##_devcb); - -#define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \ - downcast(*device).set_input_buffer_full_callback(DEVCB_##_devcb); - -#define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \ - downcast(*device).set_output_buffer_empty_callback(DEVCB_##_devcb); - -#define MCFG_KBDC8042_SPEAKER_CB(_devcb) \ - downcast(*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 devcb_base &set_system_reset_callback(Object &&cb) { return m_system_reset_cb.set_callback(std::forward(cb)); } - template devcb_base &set_gate_a20_callback(Object &&cb) { return m_gate_a20_cb.set_callback(std::forward(cb)); } - template devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward(cb)); } - template devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward(cb)); } - template devcb_base &set_speaker_callback(Object &&cb) { return m_speaker_cb.set_callback(std::forward(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(*device).set_irq_callback(DEVCB_##_devcb); - -#define MCFG_MB89352A_DRQ_CB(_devcb) \ - downcast(*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 devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_drq_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward(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(*device).set_out_irq_callback(DEVCB_##_devcb); - -#define MCFG_MC6854_OUT_TXD_CB(_devcb) \ - downcast(*device).set_out_txd_callback(DEVCB_##_devcb); - -#define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \ - downcast(*device).set_out_frame_callback(mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this)); - -#define MCFG_MC6854_OUT_RTS_CB(_devcb) \ - downcast(*device).set_out_rts_callback(DEVCB_##_devcb); - -#define MCFG_MC6854_OUT_DTR_CB(_devcb) \ - downcast(*device).set_out_dtr_callback(DEVCB_##_devcb); - - class mc6854_device : public device_t { public: @@ -40,18 +21,24 @@ public: typedef device_delegate 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 devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward(cb)); } - template void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward(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 void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward(cb); } + void set_out_frame_callback(out_frame_delegate callback) { m_out_frame_cb = callback; } + template 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(nullptr))); + } + template 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(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 void set_vblank_int(Object &&cb, const char *tag, int rate = 0) + template void set_vblank_int(Object &&cb, const char *tag) { m_vblank_interrupt = std::forward(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 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(nullptr)), tag); + } + template 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(nullptr)), tag); + } + template void set_periodic_int(Object &&cb, const attotime &rate) { m_timed_interrupt = std::forward(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 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(nullptr)), rate); + } + template 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(nullptr)), rate); + } + template void set_irq_acknowledge_callback(Object &&cb) { m_driver_irq = std::forward(cb); } + void set_irq_acknowledge_callback(device_irq_acknowledge_delegate callback) { m_driver_irq = callback; } + template 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(nullptr))); + } + template 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(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 m_rdac; - required_device m_ldac; + required_device m_rdac; + required_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++ ) -- cgit v1.2.3