mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
mc68901: Convert to devcb3 (nw)
This commit is contained in:
parent
61693ea709
commit
aabacee358
@ -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 );
|
||||
|
@ -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();
|
||||
|
@ -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")
|
||||
|
@ -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))
|
||||
|
@ -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))
|
||||
|
@ -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))
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user