summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-07-09 00:40:29 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-07-09 00:40:29 -0400
commit51b43b5e0d247b4cebcc8d4eb00c28c46ec749c2 (patch)
tree3070fe79b245f5f639146d545d1da1bab87fc63d
parentb6afb9778627d1a62202980714f0502ec34e6ecf (diff)
atarist.cpp: Use input merger for ACIA IRQs (nw)
-rw-r--r--src/mame/drivers/atarist.cpp46
-rw-r--r--src/mame/includes/atarist.h6
2 files changed, 21 insertions, 31 deletions
diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp
index 075a04326b0..67dddc93b95 100644
--- a/src/mame/drivers/atarist.cpp
+++ b/src/mame/drivers/atarist.cpp
@@ -3,6 +3,7 @@
#include "emu.h"
#include "includes/atarist.h"
#include "machine/clock.h"
+#include "machine/input_merger.h"
#include "bus/midi/midi.h"
#include "video/atarist.h"
#include "screen.h"
@@ -1773,21 +1774,6 @@ WRITE_LINE_MEMBER( st_state::ikbd_tx_w )
m_ikbd_tx = state;
}
-WRITE_LINE_MEMBER( st_state::acia_ikbd_irq_w )
-{
- m_acia_ikbd_irq = state;
-
- m_mfp->i4_w(!(m_acia_ikbd_irq || m_acia_midi_irq));
-}
-
-
-WRITE_LINE_MEMBER( st_state::acia_midi_irq_w )
-{
- m_acia_midi_irq = state;
-
- m_mfp->i4_w(!(m_acia_ikbd_irq || m_acia_midi_irq));
-}
-
WRITE_LINE_MEMBER(st_state::write_acia_clock)
{
m_acia0->write_txc(state);
@@ -1880,8 +1866,6 @@ void st_state::state_save()
save_item(NAME(m_ikbd_tx));
save_item(NAME(m_ikbd_joy));
save_item(NAME(m_midi_tx));
- save_item(NAME(m_acia_ikbd_irq));
- save_item(NAME(m_acia_midi_irq));
}
//-------------------------------------------------
@@ -2082,11 +2066,14 @@ MACHINE_CONFIG_START(st_state::st)
MCFG_DEVICE_ADD(MC6850_0_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, st_state, ikbd_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_ikbd_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<0>))
MCFG_DEVICE_ADD(MC6850_1_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE("mdout", midi_port_device, write_txd))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_midi_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<1>))
+
+ input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq"));
+ aciairq.output_handler().set(MC68901_TAG, FUNC(mc68901_device::i4_w)).invert();
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd))
@@ -2173,11 +2160,14 @@ MACHINE_CONFIG_START(megast_state::megast)
MCFG_DEVICE_ADD(MC6850_0_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, st_state, ikbd_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_ikbd_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<0>))
MCFG_DEVICE_ADD(MC6850_1_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE("mdout", midi_port_device, write_txd))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_midi_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<1>))
+
+ input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq"));
+ aciairq.output_handler().set("mfp", FUNC(mc68901_device::i4_w)).invert();
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd))
@@ -2272,11 +2262,14 @@ MACHINE_CONFIG_START(ste_state::ste)
MCFG_DEVICE_ADD(MC6850_0_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, st_state, ikbd_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_ikbd_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<0>))
MCFG_DEVICE_ADD(MC6850_1_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE("mdout", midi_port_device, write_txd))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_midi_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<1>))
+
+ input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq"));
+ aciairq.output_handler().set("mfp", FUNC(mc68901_device::i4_w)).invert();
MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd))
@@ -2379,11 +2372,14 @@ static MACHINE_CONFIG_START(stbook_state::stbook)
// device hardware
MCFG_DEVICE_ADD(MC6850_0_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE(*this, st_state, ikbd_tx_w))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_ikbd_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<0>))
MCFG_DEVICE_ADD(MC6850_1_TAG, ACIA6850, 0)
MCFG_ACIA6850_TXD_HANDLER(WRITELINE("mdout", midi_port_device, write_txd))
- MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, st_state, acia_midi_irq_w))
+ MCFG_ACIA6850_IRQ_HANDLER(WRITELINE("aciairq", input_merger_device, in_w<1>))
+
+ input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq"));
+ aciairq.output_handler().set("mfp", FUNC(mc68901_device::i4_w)).invert();
MCFG_SERIAL_PORT_ADD("mdin", midiin_slot, "midiin")
MCFG_MIDI_RX_HANDLER(WRITELINE(MC6850_1_TAG, acia6850_device, write_rxd))
diff --git a/src/mame/includes/atarist.h b/src/mame/includes/atarist.h
index cdcfa2e21dc..76e6b908d60 100644
--- a/src/mame/includes/atarist.h
+++ b/src/mame/includes/atarist.h
@@ -114,8 +114,6 @@ public:
m_mousex(*this, "IKBD_MOUSEX"),
m_mousey(*this, "IKBD_MOUSEY"),
m_config(*this, "config"),
- m_acia_ikbd_irq(1),
- m_acia_midi_irq(1),
m_ikbd_mouse_x(0),
m_ikbd_mouse_y(0),
m_ikbd_mouse_px(IKBD_MOUSE_PHASE_STATIC),
@@ -236,8 +234,6 @@ public:
DECLARE_WRITE8_MEMBER( psg_pa_w );
DECLARE_WRITE_LINE_MEMBER( ikbd_tx_w );
- DECLARE_WRITE_LINE_MEMBER( acia_ikbd_irq_w );
- DECLARE_WRITE_LINE_MEMBER( acia_midi_irq_w );
DECLARE_READ8_MEMBER( mfp_gpio_r );
DECLARE_WRITE_LINE_MEMBER( mfp_tdo_w );
@@ -256,8 +252,6 @@ public:
uint8_t m_mmu;
/* keyboard state */
- int m_acia_ikbd_irq;
- int m_acia_midi_irq;
uint16_t m_ikbd_keylatch;
uint8_t m_ikbd_mouse;
uint8_t m_ikbd_mouse_x;