mc68901: Convert to devcb3 (nw)

This commit is contained in:
AJR 2018-08-01 16:29:25 -04:00
parent 61693ea709
commit aabacee358
7 changed files with 72 additions and 112 deletions

View File

@ -41,47 +41,6 @@
#include "diserial.h"
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_MC68901_TIMER_CLOCK(_clk) \
downcast<mc68901_device &>(*device).set_timer_clock(_clk);
#define MCFG_MC68901_RX_CLOCK(_clk) \
downcast<mc68901_device &>(*device).set_rx_clock(_clk);
#define MCFG_MC68901_TX_CLOCK(_clk) \
downcast<mc68901_device &>(*device).set_tx_clock(_clk);
#define MCFG_MC68901_OUT_IRQ_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_GPIO_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_gpio_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TAO_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_tao_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TBO_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_tbo_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TCO_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_tco_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TDO_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_tdo_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_SO_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_so_callback(DEVCB_##_devcb);
/*#define MCFG_MC68901_OUT_RR_CB(_devcb) \
downcast<mc68901_device &>(*device).set_out_rr_callback(DEVCB_##_devcb);
#define MCFG_MC68901_OUT_TR_CB(_devcb) \
downcast<mc68901_device &>(*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 <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_gpio_callback(Object &&cb) { return m_out_gpio_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_tao_callback(Object &&cb) { return m_out_tao_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_tbo_callback(Object &&cb) { return m_out_tbo_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_tco_callback(Object &&cb) { return m_out_tco_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_tdo_callback(Object &&cb) { return m_out_tdo_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_so_callback(Object &&cb) { return m_out_so_cb.set_callback(std::forward<Object>(cb)); }
//template <class Object> devcb_base &set_rr_callback(Object &&cb) { return m_out_rr_cb.set_callback(std::forward<Object>(cb)); }
//template <class Object> devcb_base &set_tr_callback(Object &&cb) { return m_out_tr_cb.set_callback(std::forward<Object>(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 );

View File

@ -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();

View File

@ -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")

View File

@ -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))

View File

@ -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))

View File

@ -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))

View File

@ -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))