summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/atarist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/atarist.cpp')
-rw-r--r--src/mame/drivers/atarist.cpp69
1 files changed, 40 insertions, 29 deletions
diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp
index 9c4b31dfe7d..beb3f41a8ab 100644
--- a/src/mame/drivers/atarist.cpp
+++ b/src/mame/drivers/atarist.cpp
@@ -610,7 +610,7 @@ WRITE8_MEMBER( st_state::ikbd_port2_w )
m_ikbd_joy = BIT(data, 0);
// serial transmit
- m_acia0->write_rxd(BIT(data, 4));
+ m_acia[0]->write_rxd(BIT(data, 4));
}
@@ -1270,8 +1270,8 @@ void st_state::st_map(address_map &map)
map(0xff8a3c, 0xff8a3d).rw(FUNC(st_state::blitter_ctrl_r), FUNC(st_state::blitter_ctrl_w));
#endif
map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
- map(0xfffc00, 0xfffc03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
- map(0xfffc04, 0xfffc07).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0xfffc00, 0xfffc03).rw(m_acia[0], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0xfffc04, 0xfffc07).rw(m_acia[1], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
}
@@ -1313,8 +1313,8 @@ void megast_state::megast_map(address_map &map)
map(0xff8a3c, 0xff8a3d).rw(FUNC(megast_state::blitter_ctrl_r), FUNC(megast_state::blitter_ctrl_w));
map(0xfffa00, 0xfffa3f).rw(m_mfp, FUNC(mc68901_device::read), FUNC(mc68901_device::write)).umask16(0x00ff);
map(0xfffa40, 0xfffa57).rw(FUNC(megast_state::fpu_r), FUNC(megast_state::fpu_w));
- map(0xfffc00, 0xfffc03).rw(m_acia0, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
- map(0xfffc04, 0xfffc07).rw(m_acia1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0xfffc00, 0xfffc03).rw(m_acia[0], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
+ map(0xfffc04, 0xfffc07).rw(m_acia[1], FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0xff00);
map(0xfffc20, 0xfffc3f).rw(RP5C15_TAG, FUNC(rp5c15_device::read), FUNC(rp5c15_device::write)).umask16(0x00ff);
}
@@ -1780,14 +1780,6 @@ WRITE_LINE_MEMBER( st_state::ikbd_tx_w )
m_ikbd_tx = state;
}
-WRITE_LINE_MEMBER(st_state::write_acia_clock)
-{
- m_acia0->write_txc(state);
- m_acia0->write_rxc(state);
- m_acia1->write_txc(state);
- m_acia1->write_rxc(state);
-}
-
WRITE_LINE_MEMBER( st_state::fdc_drq_w )
{
@@ -1880,6 +1872,7 @@ void st_state::machine_start()
/// TODO: get callbacks to trigger these.
m_mfp->i0_w(1);
+ m_mfp->i4_w(1);
m_mfp->i5_w(1);
m_mfp->i7_w(1);
}
@@ -1932,6 +1925,7 @@ void ste_state::machine_start()
/// TODO: get callbacks to trigger these.
m_mfp->i0_w(1);
+ m_mfp->i4_w(1);
m_mfp->i5_w(1);
m_mfp->i7_w(1);
}
@@ -1975,6 +1969,7 @@ void stbook_state::machine_start()
/// TODO: get callbacks to trigger these.
m_mfp->i0_w(1);
+ m_mfp->i4_w(1);
m_mfp->i5_w(1);
}
@@ -2034,21 +2029,29 @@ void st_state::common(machine_config &config)
m_rs232->cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w));
m_rs232->ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w));
- ACIA6850(config, m_acia0, 0);
- m_acia0->txd_handler().set(FUNC(st_state::ikbd_tx_w));
- m_acia0->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>));
+ ACIA6850(config, m_acia[0], 0);
+ m_acia[0]->txd_handler().set(FUNC(st_state::ikbd_tx_w));
+ m_acia[0]->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>));
+ m_acia[0]->write_cts(0);
+ m_acia[0]->write_dcd(0);
- ACIA6850(config, m_acia1, 0);
- m_acia1->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
- m_acia1->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<1>));
+ ACIA6850(config, m_acia[1], 0);
+ m_acia[1]->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
+ m_acia[1]->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<1>));
+ m_acia[1]->write_cts(0);
+ m_acia[1]->write_dcd(0);
input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq"));
aciairq.output_handler().set(m_mfp, FUNC(mc68901_device::i4_w)).invert();
- MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd));
+ MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia[1], FUNC(acia6850_device::write_rxd));
MIDI_PORT(config, "mdout", midiout_slot, "midiout");
- CLOCK(config, "acia_clock", Y2/64).signal_handler().set(FUNC(st_state::write_acia_clock)); // 500kHz
+ clock_device &acia_clock(CLOCK(config, "acia_clock", Y2/64)); // 500kHz
+ acia_clock.signal_handler().set(m_acia[0], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia[0], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia[1], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia[1], FUNC(acia6850_device::write_rxc));
// cartridge
GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "st_cart", "bin,rom");
@@ -2250,21 +2253,29 @@ void stbook_state::stbook(machine_config &config)
m_rs232->cts_handler().set(m_mfp, FUNC(mc68901_device::i2_w));
m_rs232->ri_handler().set(m_mfp, FUNC(mc68901_device::i6_w));
- ACIA6850(config, m_acia0, 0);
- m_acia0->txd_handler().set(FUNC(st_state::ikbd_tx_w));
- m_acia0->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>));
+ ACIA6850(config, m_acia[0], 0);
+ m_acia[0]->txd_handler().set(FUNC(st_state::ikbd_tx_w));
+ m_acia[0]->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<0>));
+ m_acia[0]->write_cts(0);
+ m_acia[0]->write_dcd(0);
- ACIA6850(config, m_acia1, 0);
- m_acia1->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
- m_acia1->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<1>));
+ ACIA6850(config, m_acia[1], 0);
+ m_acia[1]->txd_handler().set("mdout", FUNC(midi_port_device::write_txd));
+ m_acia[1]->irq_handler().set("aciairq", FUNC(input_merger_device::in_w<1>));
+ m_acia[1]->write_cts(0);
+ m_acia[1]->write_dcd(0);
input_merger_device &aciairq(INPUT_MERGER_ANY_HIGH(config, "aciairq"));
aciairq.output_handler().set(m_mfp, FUNC(mc68901_device::i4_w)).invert();
- MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd));
+ MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_acia[1], FUNC(acia6850_device::write_rxd));
MIDI_PORT(config, "mdout", midiout_slot, "midiout");
- CLOCK(config, "acia_clock", Y2/64).signal_handler().set(FUNC(st_state::write_acia_clock)); // 500kHz
+ clock_device &acia_clock(CLOCK(config, "acia_clock", Y2/64)); // 500kHz
+ acia_clock.signal_handler().set(m_acia[0], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia[0], FUNC(acia6850_device::write_rxc));
+ acia_clock.signal_handler().append(m_acia[1], FUNC(acia6850_device::write_txc));
+ acia_clock.signal_handler().append(m_acia[1], FUNC(acia6850_device::write_rxc));
// cartridge
GENERIC_CARTSLOT(config, m_cart, generic_linear_slot, "st_cart", "bin,rom");