From aabacee358cf3f5565a03cfd399650b88588ca45 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 1 Aug 2018 16:29:25 -0400 Subject: mc68901: Convert to devcb3 (nw) --- src/devices/machine/mc68901.h | 60 ++++++++----------------------------------- src/mame/drivers/atarist.cpp | 56 ++++++++++++++++++++-------------------- src/mame/drivers/harriet.cpp | 14 +++++----- src/mame/drivers/indiana.cpp | 10 ++++---- src/mame/drivers/micro3d.cpp | 16 ++++++------ src/mame/drivers/tti.cpp | 14 +++++----- src/mame/drivers/x68k.cpp | 14 +++++----- 7 files changed, 72 insertions(+), 112 deletions(-) diff --git a/src/devices/machine/mc68901.h b/src/devices/machine/mc68901.h index efba92e734b..d1598b41a00 100644 --- a/src/devices/machine/mc68901.h +++ b/src/devices/machine/mc68901.h @@ -41,47 +41,6 @@ #include "diserial.h" -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_MC68901_TIMER_CLOCK(_clk) \ - downcast(*device).set_timer_clock(_clk); - -#define MCFG_MC68901_RX_CLOCK(_clk) \ - downcast(*device).set_rx_clock(_clk); - -#define MCFG_MC68901_TX_CLOCK(_clk) \ - downcast(*device).set_tx_clock(_clk); - -#define MCFG_MC68901_OUT_IRQ_CB(_devcb) \ - downcast(*device).set_out_irq_callback(DEVCB_##_devcb); - -#define MCFG_MC68901_OUT_GPIO_CB(_devcb) \ - downcast(*device).set_out_gpio_callback(DEVCB_##_devcb); - -#define MCFG_MC68901_OUT_TAO_CB(_devcb) \ - downcast(*device).set_out_tao_callback(DEVCB_##_devcb); - -#define MCFG_MC68901_OUT_TBO_CB(_devcb) \ - downcast(*device).set_out_tbo_callback(DEVCB_##_devcb); - -#define MCFG_MC68901_OUT_TCO_CB(_devcb) \ - downcast(*device).set_out_tco_callback(DEVCB_##_devcb); - -#define MCFG_MC68901_OUT_TDO_CB(_devcb) \ - downcast(*device).set_out_tdo_callback(DEVCB_##_devcb); - -#define MCFG_MC68901_OUT_SO_CB(_devcb) \ - downcast(*device).set_out_so_callback(DEVCB_##_devcb); - -/*#define MCFG_MC68901_OUT_RR_CB(_devcb) \ - downcast(*device).set_out_rr_callback(DEVCB_##_devcb); - -#define MCFG_MC68901_OUT_TR_CB(_devcb) \ - downcast(*device).set_out_tr_callback(DEVCB_##_devcb);*/ - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -102,15 +61,16 @@ public: void set_timer_clock(const XTAL &xtal) { set_timer_clock(xtal.value()); } void set_rx_clock(const XTAL &xtal) { set_rx_clock(xtal.value()); } void set_tx_clock(const XTAL &xtal) { set_tx_clock(xtal.value()); } - template devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_gpio_callback(Object &&cb) { return m_out_gpio_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_tao_callback(Object &&cb) { return m_out_tao_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_tbo_callback(Object &&cb) { return m_out_tbo_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_tco_callback(Object &&cb) { return m_out_tco_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_tdo_callback(Object &&cb) { return m_out_tdo_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward(cb)); } - //template devcb_base &set_rr_callback(Object &&cb) { return m_out_rr_cb.set_callback(std::forward(cb)); } - //template devcb_base &set_tr_callback(Object &&cb) { return m_out_tr_cb.set_callback(std::forward(cb)); } + + auto out_irq_cb() { return m_out_irq_cb.bind(); } + auto out_gpio_cb() { return m_out_gpio_cb.bind(); } + auto out_tao_cb() { return m_out_tao_cb.bind(); } + auto out_tbo_cb() { return m_out_tbo_cb.bind(); } + auto out_tco_cb() { return m_out_tco_cb.bind(); } + auto out_tdo_cb() { return m_out_tdo_cb.bind(); } + auto out_so_cb() { return m_out_so_cb.bind(); } + //auto out_rr_cb() { return m_out_rr_cb.bind(); } + //auto out_tr_cb() { return m_out_tr_cb.bind(); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp index d01e603bf76..0c4e4a44eef 100644 --- a/src/mame/drivers/atarist.cpp +++ b/src/mame/drivers/atarist.cpp @@ -2050,13 +2050,13 @@ MACHINE_CONFIG_START(st_state::st) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MCFG_DEVICE_ADD(MC68901_TAG, MC68901, Y2/8) - MCFG_MC68901_TIMER_CLOCK(Y1) - MCFG_MC68901_RX_CLOCK(0) - MCFG_MC68901_TX_CLOCK(0) - MCFG_MC68901_OUT_IRQ_CB(INPUTLINE(M68000_TAG, M68K_IRQ_6)) - MCFG_MC68901_OUT_TDO_CB(WRITELINE(*this, st_state, mfp_tdo_w)) - MCFG_MC68901_OUT_SO_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) + MC68901(config, m_mfp, Y2/8); + m_mfp->set_timer_clock(Y1); + m_mfp->set_rx_clock(0); + m_mfp->set_tx_clock(0); + m_mfp->out_irq_cb().set_inputline(M68000_TAG, M68K_IRQ_6); + m_mfp->out_tdo_cb().set(FUNC(st_state::mfp_tdo_w)); + m_mfp->out_so_cb().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(MC68901_TAG, mc68901_device, write_rx)) @@ -2144,13 +2144,13 @@ MACHINE_CONFIG_START(megast_state::megast) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MCFG_DEVICE_ADD(MC68901_TAG, MC68901, Y2/8) - MCFG_MC68901_TIMER_CLOCK(Y1) - MCFG_MC68901_RX_CLOCK(0) - MCFG_MC68901_TX_CLOCK(0) - MCFG_MC68901_OUT_IRQ_CB(INPUTLINE(M68000_TAG, M68K_IRQ_6)) - MCFG_MC68901_OUT_TDO_CB(WRITELINE(*this, st_state, mfp_tdo_w)) - MCFG_MC68901_OUT_SO_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) + MC68901(config, m_mfp, Y2/8); + m_mfp->set_timer_clock(Y1); + m_mfp->set_rx_clock(0); + m_mfp->set_tx_clock(0); + m_mfp->out_irq_cb().set_inputline(M68000_TAG, M68K_IRQ_6); + m_mfp->out_tdo_cb().set(FUNC(st_state::mfp_tdo_w)); + m_mfp->out_so_cb().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(MC68901_TAG, mc68901_device, write_rx)) @@ -2246,13 +2246,13 @@ MACHINE_CONFIG_START(ste_state::ste) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MCFG_DEVICE_ADD(MC68901_TAG, MC68901, Y2/8) - MCFG_MC68901_TIMER_CLOCK(Y1) - MCFG_MC68901_RX_CLOCK(0) - MCFG_MC68901_TX_CLOCK(0) - MCFG_MC68901_OUT_IRQ_CB(INPUTLINE(M68000_TAG, M68K_IRQ_6)) - MCFG_MC68901_OUT_TDO_CB(WRITELINE(*this, st_state, mfp_tdo_w)) - MCFG_MC68901_OUT_SO_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) + MC68901(config, m_mfp, Y2/8); + m_mfp->set_timer_clock(Y1); + m_mfp->set_rx_clock(0); + m_mfp->set_tx_clock(0); + m_mfp->out_irq_cb().set_inputline(M68000_TAG, M68K_IRQ_6); + m_mfp->out_tdo_cb().set(FUNC(st_state::mfp_tdo_w)); + m_mfp->out_so_cb().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(MC68901_TAG, mc68901_device, write_rx)) @@ -2344,13 +2344,13 @@ static MACHINE_CONFIG_START(stbook_state::stbook) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - MCFG_DEVICE_ADD(MC68901_TAG, MC68901, U517/8) - MCFG_MC68901_TIMER_CLOCK(Y1) - MCFG_MC68901_RX_CLOCK(0) - MCFG_MC68901_TX_CLOCK(0) - MCFG_MC68901_OUT_IRQ_CB(INPUTLINE(M68000_TAG, M68K_IRQ_6)) - MCFG_MC68901_OUT_TDO_CB(WRITELINE(*this, st_state, mfp_tdo_w)) - MCFG_MC68901_OUT_SO_CB(WRITELINE(RS232_TAG, rs232_port_device, write_txd)) + MC68901(config, m_mfp, U517/8); + m_mfp->set_timer_clock(Y1); + m_mfp->set_rx_clock(0); + m_mfp->set_tx_clock(0); + m_mfp->out_irq_cb().set_inputline(M68000_TAG, M68K_IRQ_6); + m_mfp->out_tdo_cb().set(FUNC(st_state::mfp_tdo_w)); + m_mfp->out_so_cb().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); WD1772(config, m_fdc, U517/2); m_fdc->intrq_wr_callback().set(m_mfp, FUNC(mc68901_device::i5_w)).invert(); diff --git a/src/mame/drivers/harriet.cpp b/src/mame/drivers/harriet.cpp index c5da86323e3..38965474c70 100644 --- a/src/mame/drivers/harriet.cpp +++ b/src/mame/drivers/harriet.cpp @@ -90,13 +90,13 @@ MACHINE_CONFIG_START(harriet_state::harriet) MCFG_DEVICE_ADD("duart", MC68681, 3.6864_MHz_XTAL) - MCFG_DEVICE_ADD("mfp", MC68901, 40_MHz_XTAL / 16) - MCFG_MC68901_TIMER_CLOCK(2.4576_MHz_XTAL) - MCFG_MC68901_RX_CLOCK(9600) - MCFG_MC68901_TX_CLOCK(9600) - MCFG_MC68901_OUT_SO_CB(WRITELINE("rs232", rs232_port_device, write_txd)) - //MCFG_MC68901_OUT_TCO_CB(WRITELINE("mfp", mc68901_device, rc_w)) - //MCFG_MC68901_OUT_TDO_CB(WRITELINE("mfp", mc68901_device, tc_w)) + mc68901_device &mfp(MC68901(config, "mfp", 40_MHz_XTAL / 16)); + mfp.set_timer_clock(2.4576_MHz_XTAL); + mfp.set_rx_clock(9600); + mfp.set_tx_clock(9600); + mfp.out_so_cb().set("rs232", FUNC(rs232_port_device::write_txd)); + //mfp.out_tco_cb().set("mfp", FUNC(mc68901_device::rc_w)); + //mfp.out_tdo_cb().set("mfp", FUNC(mc68901_device::tc_w)); MCFG_DEVICE_ADD("dmac", HD63450, 40_MHz_XTAL / 4) // MC68450R10 (or HD68450Y-10) MCFG_HD63450_CPU("maincpu") diff --git a/src/mame/drivers/indiana.cpp b/src/mame/drivers/indiana.cpp index 0dc1b19d87e..6c68971be71 100644 --- a/src/mame/drivers/indiana.cpp +++ b/src/mame/drivers/indiana.cpp @@ -108,11 +108,11 @@ MACHINE_CONFIG_START(indiana_state::indiana) MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, ISABUS_TAG, indiana_isa_cards, "comat", false) MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, ISABUS_TAG, indiana_isa_cards, "ide", false) - MCFG_DEVICE_ADD(MFP_TAG, MC68901, XTAL(16'000'000)/4) - MCFG_MC68901_TIMER_CLOCK(XTAL(16'000'000)/4) - MCFG_MC68901_RX_CLOCK(0) - MCFG_MC68901_TX_CLOCK(0) - MCFG_MC68901_OUT_SO_CB(WRITELINE("keyboard", rs232_port_device, write_txd)) + mc68901_device &mfp(MC68901(config, MFP_TAG, XTAL(16'000'000)/4)); + mfp.set_timer_clock(XTAL(16'000'000)/4); + mfp.set_rx_clock(0); + mfp.set_tx_clock(0); + mfp.out_so_cb().set("keyboard", FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD("keyboard", RS232_PORT, default_rs232_devices, "keyboard") MCFG_RS232_RXD_HANDLER(WRITELINE(MFP_TAG, mc68901_device, write_rx)) diff --git a/src/mame/drivers/micro3d.cpp b/src/mame/drivers/micro3d.cpp index 08768fc7b5c..6ff9b75db5f 100644 --- a/src/mame/drivers/micro3d.cpp +++ b/src/mame/drivers/micro3d.cpp @@ -343,14 +343,14 @@ MACHINE_CONFIG_START(micro3d_state::micro3d) MCFG_MC68681_INPORT_CALLBACK(READ8(*this, micro3d_state, duart_input_r)) MCFG_MC68681_OUTPORT_CALLBACK(WRITE8(*this, micro3d_state, duart_output_w)) - MCFG_DEVICE_ADD("mfp", MC68901, 4000000) - MCFG_MC68901_TIMER_CLOCK(4000000) - MCFG_MC68901_RX_CLOCK(0) - MCFG_MC68901_TX_CLOCK(0) - MCFG_MC68901_OUT_IRQ_CB(INPUTLINE("maincpu", M68K_IRQ_4)) - //MCFG_MC68901_OUT_TAO_CB(WRITELINE("mfp", mc68901_device, rc_w)) - //MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("mfp", mc68901_device, tc_w)) - MCFG_MC68901_OUT_TCO_CB(WRITELINE("mfp", mc68901_device, tbi_w)) + mc68901_device &mfp(MC68901(config, "mfp", 4000000)); + mfp.set_timer_clock(4000000); + mfp.set_rx_clock(0); + mfp.set_tx_clock(0); + mfp.out_irq_cb().set_inputline("maincpu", M68K_IRQ_4); + //mfp.out_tao_cb().set("mfp", FUNC(mc68901_device::rc_w)); + //mfp.out_tao_cb().append("mfp", FUNC(mc68901_device::tc_w)); + mfp.out_tco_cb().set("mfp", FUNC(mc68901_device::tbi_w)); MCFG_NVRAM_ADD_0FILL("nvram") MCFG_QUANTUM_TIME(attotime::from_hz(3000)) diff --git a/src/mame/drivers/tti.cpp b/src/mame/drivers/tti.cpp index 8ff60924a84..1435dad107d 100644 --- a/src/mame/drivers/tti.cpp +++ b/src/mame/drivers/tti.cpp @@ -59,16 +59,16 @@ void tti_state::prg_map(address_map &map) } MACHINE_CONFIG_START(tti_state::tti) - MCFG_DEVICE_ADD("maincpu", M68008, XTAL(20'000'000) / 2) // guess + MCFG_DEVICE_ADD("maincpu", M68008, 20_MHz_XTAL / 2) // guess MCFG_DEVICE_PROGRAM_MAP(prg_map) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(tti_state, intack) - MCFG_DEVICE_ADD("mfp", MC68901, 0) - MCFG_MC68901_TIMER_CLOCK(XTAL(20'000'000) / 2) // guess - MCFG_MC68901_RX_CLOCK(9600) // for testing (FIXME: actually 16x) - MCFG_MC68901_TX_CLOCK(9600) // for testing (FIXME: actually 16x) - MCFG_MC68901_OUT_SO_CB(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_MC68901_OUT_IRQ_CB(INPUTLINE("maincpu", M68K_IRQ_5)) + MC68901(config, m_mfp, 20_MHz_XTAL / 2); // guess + m_mfp->set_timer_clock(20_MHz_XTAL / 2); // guess + m_mfp->set_rx_clock(9600); // for testing (FIXME: actually 16x) + m_mfp->set_tx_clock(9600); // for testing (FIXME: actually 16x) + m_mfp->out_so_cb().set("rs232", FUNC(rs232_port_device::write_txd)); + m_mfp->out_irq_cb().set_inputline("maincpu", M68K_IRQ_5); MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, "terminal") MCFG_RS232_RXD_HANDLER(WRITELINE("mfp", mc68901_device, write_rx)) diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp index 00acc76e486..21ec4e86444 100644 --- a/src/mame/drivers/x68k.cpp +++ b/src/mame/drivers/x68k.cpp @@ -1608,13 +1608,13 @@ MACHINE_CONFIG_START(x68k_state::x68000) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* device hardware */ - MCFG_DEVICE_ADD("mc68901", MC68901, 16_MHz_XTAL / 4) - MCFG_MC68901_TIMER_CLOCK(16_MHz_XTAL / 4) - MCFG_MC68901_RX_CLOCK(0) - MCFG_MC68901_TX_CLOCK(0) - MCFG_MC68901_OUT_IRQ_CB(WRITELINE(*this, x68k_state, mfp_irq_callback)) - MCFG_MC68901_OUT_TBO_CB(WRITELINE("mc68901", mc68901_device, clock_w)) - MCFG_MC68901_OUT_SO_CB(WRITELINE("keyboard", rs232_port_device, write_txd)) + MC68901(config, m_mfpdev, 16_MHz_XTAL / 4); + m_mfpdev->set_timer_clock(16_MHz_XTAL / 4); + m_mfpdev->set_rx_clock(0); + m_mfpdev->set_tx_clock(0); + m_mfpdev->out_irq_cb().set(FUNC(x68k_state::mfp_irq_callback)); + m_mfpdev->out_tbo_cb().set(m_mfpdev, FUNC(mc68901_device::clock_w)); + m_mfpdev->out_so_cb().set("keyboard", FUNC(rs232_port_device::write_txd)); MCFG_DEVICE_ADD("keyboard", RS232_PORT, keyboard, "x68k") MCFG_RS232_RXD_HANDLER(WRITELINE("mc68901", mc68901_device, write_rx)) -- cgit v1.2.3