diff options
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 |
commit | 51b43b5e0d247b4cebcc8d4eb00c28c46ec749c2 (patch) | |
tree | 3070fe79b245f5f639146d545d1da1bab87fc63d | |
parent | b6afb9778627d1a62202980714f0502ec34e6ecf (diff) |
atarist.cpp: Use input merger for ACIA IRQs (nw)
-rw-r--r-- | src/mame/drivers/atarist.cpp | 46 | ||||
-rw-r--r-- | src/mame/includes/atarist.h | 6 |
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; |