summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/jpmsys5.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/jpmsys5.cpp')
-rw-r--r--src/mame/drivers/jpmsys5.cpp127
1 files changed, 64 insertions, 63 deletions
diff --git a/src/mame/drivers/jpmsys5.cpp b/src/mame/drivers/jpmsys5.cpp
index 9d93ed80713..c59942041d5 100644
--- a/src/mame/drivers/jpmsys5.cpp
+++ b/src/mame/drivers/jpmsys5.cpp
@@ -35,6 +35,7 @@
#include "includes/jpmsys5.h"
#include "machine/clock.h"
+#include "machine/input_merger.h"
#include "sound/saa1099.h"
#include "screen.h"
#include "speaker.h"
@@ -537,11 +538,6 @@ WRITE_LINE_MEMBER(jpmsys5_state::u26_o1_callback)
*
*************************************/
-WRITE_LINE_MEMBER(jpmsys5_state::acia_irq)
-{
- m_maincpu->set_input_line(INT_6850ACIA, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
WRITE_LINE_MEMBER(jpmsys5_state::a0_tx_w)
{
m_a0_data_out = state;
@@ -588,28 +584,30 @@ void jpmsys5v_state::machine_reset()
*************************************/
MACHINE_CONFIG_START(jpmsys5v_state::jpmsys5v)
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000))
- MCFG_DEVICE_PROGRAM_MAP(m68000_map)
+ M68000(config, m_maincpu, 8_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &jpmsys5v_state::m68000_map);
+
+ INPUT_MERGER_ANY_HIGH(config, "acia_irq").output_handler().set_inputline(m_maincpu, INT_6850ACIA);
- MCFG_DEVICE_ADD("acia6850_0", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5v_state, a0_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5v_state, acia_irq))
+ ACIA6850(config, m_acia6850[0], 0);
+ m_acia6850[0]->txd_handler().set(FUNC(jpmsys5v_state::a0_tx_w));
+ m_acia6850[0]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<0>));
- MCFG_DEVICE_ADD("acia6850_1", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5v_state, a1_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5v_state, acia_irq))
+ ACIA6850(config, m_acia6850[1], 0);
+ m_acia6850[1]->txd_handler().set(FUNC(jpmsys5v_state::a1_tx_w));
+ m_acia6850[1]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<1>));
- MCFG_DEVICE_ADD("acia6850_2", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5v_state, a2_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5v_state, acia_irq))
+ ACIA6850(config, m_acia6850[2], 0);
+ m_acia6850[2]->txd_handler().set(FUNC(jpmsys5v_state::a2_tx_w));
+ m_acia6850[2]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<2>));
- MCFG_DEVICE_ADD("acia_clock", CLOCK, 10000) // What are the correct ACIA clocks ?
- MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("acia6850_0", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_0", acia6850_device, write_rxc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_1", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_1", acia6850_device, write_rxc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_2", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_2", acia6850_device, write_rxc))
+ clock_device &acia_clock(CLOCK(config, "acia_clock", 10000)); // What are the correct ACIA clocks ?
+ acia_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_rxc));
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -807,29 +805,30 @@ void jpmsys5_state::machine_reset()
// later (incompatible with earlier revision) motherboards used a YM2413
MACHINE_CONFIG_START(jpmsys5_state::jpmsys5_ym)
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000))
+ M68000(config, m_maincpu, 8_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &jpmsys5_state::m68000_awp_map);
- MCFG_DEVICE_PROGRAM_MAP(m68000_awp_map)
+ INPUT_MERGER_ANY_HIGH(config, "acia_irq").output_handler().set_inputline(m_maincpu, INT_6850ACIA);
- MCFG_DEVICE_ADD("acia6850_0", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5_state, a0_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5_state, acia_irq))
+ ACIA6850(config, m_acia6850[0], 0);
+ m_acia6850[0]->txd_handler().set(FUNC(jpmsys5_state::a0_tx_w));
+ m_acia6850[0]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<0>));
- MCFG_DEVICE_ADD("acia6850_1", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5_state, a1_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5_state, acia_irq))
+ ACIA6850(config, m_acia6850[1], 0);
+ m_acia6850[1]->txd_handler().set(FUNC(jpmsys5_state::a1_tx_w));
+ m_acia6850[1]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<1>));
- MCFG_DEVICE_ADD("acia6850_2", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5_state, a2_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5_state, acia_irq))
+ ACIA6850(config, m_acia6850[2], 0);
+ m_acia6850[2]->txd_handler().set(FUNC(jpmsys5_state::a2_tx_w));
+ m_acia6850[2]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<2>));
- MCFG_DEVICE_ADD("acia_clock", CLOCK, 10000) // What are the correct ACIA clocks ?
- MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("acia6850_0", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_0", acia6850_device, write_rxc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_1", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_1", acia6850_device, write_rxc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_2", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_2", acia6850_device, write_rxc))
+ clock_device &acia_clock(CLOCK(config, "acia_clock", 10000)); // What are the correct ACIA clocks ?
+ acia_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_rxc));
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_S16LF01_ADD("vfd",0)
@@ -864,28 +863,30 @@ MACHINE_CONFIG_END
// the first rev PCB used an SAA1099
MACHINE_CONFIG_START(jpmsys5_state::jpmsys5)
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000))
- MCFG_DEVICE_PROGRAM_MAP(m68000_awp_map_saa)
-
- MCFG_DEVICE_ADD("acia6850_0", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5_state, a0_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5_state, acia_irq))
-
- MCFG_DEVICE_ADD("acia6850_1", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5_state, a1_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5_state, acia_irq))
-
- MCFG_DEVICE_ADD("acia6850_2", ACIA6850, 0)
- MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, jpmsys5_state, a2_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, jpmsys5_state, acia_irq))
-
- MCFG_DEVICE_ADD("acia_clock", CLOCK, 10000) // What are the correct ACIA clocks ?
- MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("acia6850_0", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_0", acia6850_device, write_rxc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_1", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_1", acia6850_device, write_rxc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_2", acia6850_device, write_txc))
- MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("acia6850_2", acia6850_device, write_rxc))
+ M68000(config, m_maincpu, 8_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &jpmsys5_state::m68000_awp_map_saa);
+
+ INPUT_MERGER_ANY_HIGH(config, "acia_irq").output_handler().set_inputline(m_maincpu, INT_6850ACIA);
+
+ ACIA6850(config, m_acia6850[0], 0);
+ m_acia6850[0]->txd_handler().set(FUNC(jpmsys5_state::a0_tx_w));
+ m_acia6850[0]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<0>));
+
+ ACIA6850(config, m_acia6850[1], 0);
+ m_acia6850[1]->txd_handler().set(FUNC(jpmsys5_state::a1_tx_w));
+ m_acia6850[1]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<1>));
+
+ ACIA6850(config, m_acia6850[2], 0);
+ m_acia6850[2]->txd_handler().set(FUNC(jpmsys5_state::a2_tx_w));
+ m_acia6850[2]->irq_handler().set("acia_irq", FUNC(input_merger_device::in_w<2>));
+
+ clock_device &acia_clock(CLOCK(config, "acia_clock", 10000)); // What are the correct ACIA clocks ?
+ acia_clock.signal_handler().set(m_acia6850[0], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[0], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[1], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia6850[2], FUNC(acia6850_device::write_rxc));
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_S16LF01_ADD("vfd",0)