mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
atarist.cpp: Use input merger for ACIA IRQs (nw)
This commit is contained in:
parent
b6afb97786
commit
51b43b5e0d
@ -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))
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user