diff options
Diffstat (limited to 'src/mame/drivers/atarist.cpp')
-rw-r--r-- | src/mame/drivers/atarist.cpp | 69 |
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"); |