From 1400e65cde34c78e2945eb8c44ba0ccfa331e50a Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 6 Mar 2020 14:40:20 -0500 Subject: Replace old MC2661 device with new SCN2651/SCN2661/SCN2641 devices and make some associated changes - dual68: Fix baud rate by using new SCN2661B device - teleray10: Invert polarity of DIP switches; hack CTS to always be active for now - wangpc: Hook up modem control lines so that RS232 test now passes with a loopback connector - wicat: Remove some 68K interrupt conditions that were conflicting with each other - wy100: Fix CRLF problem by using new SCN2651 device; remove some old logging messages --- src/devices/bus/adamnet/spi.cpp | 22 +++------ src/devices/bus/adamnet/spi.h | 2 +- src/devices/bus/dmv/k801.cpp | 61 +++++++++++++----------- src/devices/bus/dmv/k801.h | 8 ++-- src/devices/bus/s100/am310.cpp | 60 +++++++++++------------ src/mame/drivers/aaa.cpp | 20 ++++---- src/mame/drivers/dps1.cpp | 14 +++--- src/mame/drivers/dual68.cpp | 28 +++++------ src/mame/drivers/falcots.cpp | 8 ++-- src/mame/drivers/hp16500.cpp | 10 ++-- src/mame/drivers/micro3d.cpp | 6 +-- src/mame/drivers/microterm.cpp | 6 +-- src/mame/drivers/pcd.cpp | 22 ++++----- src/mame/drivers/pg685.cpp | 8 ++-- src/mame/drivers/teleray10.cpp | 103 +++++++++++++++++++++------------------- src/mame/drivers/tricep.cpp | 20 ++++---- src/mame/drivers/wangpc.cpp | 19 ++++---- src/mame/drivers/wicat.cpp | 65 ++++++++++++------------- src/mame/drivers/wy100.cpp | 24 ++++------ src/mame/drivers/wy50.cpp | 12 ++--- src/mame/drivers/wy60.cpp | 6 +-- src/mame/drivers/z100.cpp | 12 ++--- src/mame/includes/micro3d.h | 4 +- 23 files changed, 266 insertions(+), 274 deletions(-) diff --git a/src/devices/bus/adamnet/spi.cpp b/src/devices/bus/adamnet/spi.cpp index 6ad84bbed7c..7b9f8e6ce00 100644 --- a/src/devices/bus/adamnet/spi.cpp +++ b/src/devices/bus/adamnet/spi.cpp @@ -11,16 +11,6 @@ -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define M6801_TAG "m6801" -#define MC2661_TAG "mc2661" -#define RS232_TAG "rs232" - - - //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** @@ -33,7 +23,7 @@ DEFINE_DEVICE_TYPE(ADAM_SPI, adam_spi_device, "adam_spi", "Adam SPI") //------------------------------------------------- ROM_START( adam_spi ) - ROM_REGION( 0x800, M6801_TAG, 0 ) + ROM_REGION( 0x800, "m6801", 0 ) ROM_LOAD( "spi.bin", 0x000, 0x800, CRC(4ba30352) SHA1(99fe5aebd505a208bea6beec5d7322b15426e9c1) ) ROM_END @@ -54,9 +44,9 @@ const tiny_rom_entry *adam_spi_device::device_rom_region() const void adam_spi_device::adam_spi_mem(address_map &map) { - map(0x0000, 0x001f).rw(M6801_TAG, FUNC(m6801_cpu_device::m6801_io_r), FUNC(m6801_cpu_device::m6801_io_w)); + map(0x0000, 0x001f).rw(m_maincpu, FUNC(m6801_cpu_device::m6801_io_r), FUNC(m6801_cpu_device::m6801_io_w)); map(0x0080, 0x00ff).ram(); - map(0xf800, 0xffff).rom().region(M6801_TAG, 0); + map(0xf800, 0xffff).rom().region("m6801", 0); } @@ -72,9 +62,9 @@ void adam_spi_device::device_add_mconfig(machine_config &config) m_maincpu->out_p2_cb().set(FUNC(adam_spi_device::p2_w)); m_maincpu->set_disable(); - MC2661(config, MC2661_TAG, XTAL(4'915'200)); + SCN2661A(config, "epci", XTAL(4'915'200)); - RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr); + RS232_PORT(config, "rs232", default_rs232_devices, nullptr); centronics_device ¢ronics(CENTRONICS(config, "centronics", centronics_devices, "printer")); centronics.set_data_input_buffer("cent_data_in"); @@ -96,7 +86,7 @@ void adam_spi_device::device_add_mconfig(machine_config &config) adam_spi_device::adam_spi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ADAM_SPI, tag, owner, clock) , device_adamnet_card_interface(mconfig, *this) - , m_maincpu(*this, M6801_TAG) + , m_maincpu(*this, "m6801") { } diff --git a/src/devices/bus/adamnet/spi.h b/src/devices/bus/adamnet/spi.h index 8dc75265c6b..89d61f10f01 100644 --- a/src/devices/bus/adamnet/spi.h +++ b/src/devices/bus/adamnet/spi.h @@ -15,7 +15,7 @@ #include "bus/centronics/ctronics.h" #include "bus/rs232/rs232.h" #include "cpu/m6800/m6801.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" diff --git a/src/devices/bus/dmv/k801.cpp b/src/devices/bus/dmv/k801.cpp index 2e632ca5c95..4465a45227b 100644 --- a/src/devices/bus/dmv/k801.cpp +++ b/src/devices/bus/dmv/k801.cpp @@ -84,7 +84,7 @@ dmv_k801_device::dmv_k801_device(const machine_config &mconfig, const char *tag, dmv_k801_device::dmv_k801_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), device_dmvslot_interface( mconfig, *this ), - m_epci(*this, "epci"), + m_pci(*this, "pci"), m_rs232(*this, "rs232"), m_dsw(*this, "DSW") { @@ -143,38 +143,43 @@ void dmv_k801_device::device_reset() // device_add_mconfig - add device configuration //------------------------------------------------- -void dmv_k801_device::device_add_mconfig(machine_config &config) +void dmv_k801_device::pci_mconfig(machine_config &config, bool epci, const char *default_option) { - MC2661(config, m_epci, XTAL(5'068'800)); - m_epci->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); - m_epci->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); - m_epci->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); - m_epci->rxrdy_handler().set(FUNC(dmv_k801_device::epci_irq_w)); - m_epci->txrdy_handler().set(FUNC(dmv_k801_device::epci_irq_w)); + if (epci) + SCN2661C(config, m_pci, XTAL(5'068'800)); + else + SCN2651(config, m_pci, XTAL(5'068'800)); + m_pci->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_pci->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + m_pci->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); + m_pci->rxrdy_handler().set(FUNC(dmv_k801_device::pci_irq_w)); + m_pci->txrdy_handler().set(FUNC(dmv_k801_device::pci_irq_w)); + + RS232_PORT(config, m_rs232, default_rs232_devices, default_option); + m_rs232->rxd_handler().set(m_pci, FUNC(scn_pci_device::rxd_w)); + m_rs232->dcd_handler().set(m_pci, FUNC(scn_pci_device::dcd_w)); + m_rs232->dsr_handler().set(m_pci, FUNC(scn_pci_device::dsr_w)); + m_rs232->cts_handler().set(m_pci, FUNC(scn_pci_device::cts_w)); +} - RS232_PORT(config, m_rs232, default_rs232_devices, "printer"); - m_rs232->rxd_handler().set(m_epci, FUNC(mc2661_device::rx_w)); - m_rs232->dcd_handler().set(m_epci, FUNC(mc2661_device::dcd_w)); - m_rs232->dsr_handler().set(m_epci, FUNC(mc2661_device::dsr_w)); - m_rs232->cts_handler().set(m_epci, FUNC(mc2661_device::cts_w)); +void dmv_k801_device::device_add_mconfig(machine_config &config) +{ + pci_mconfig(config, true, "printer"); } void dmv_k211_device::device_add_mconfig(machine_config &config) { - dmv_k801_device::device_add_mconfig(config); - m_rs232->set_default_option("null_modem"); + pci_mconfig(config, false, "null_modem"); } void dmv_k212_device::device_add_mconfig(machine_config &config) { - dmv_k801_device::device_add_mconfig(config); - m_rs232->set_default_option("printer"); + pci_mconfig(config, false, "printer"); } void dmv_k213_device::device_add_mconfig(machine_config &config) { - dmv_k801_device::device_add_mconfig(config); - m_rs232->set_default_option(nullptr); + pci_mconfig(config, false, nullptr); } //------------------------------------------------- @@ -201,7 +206,7 @@ ioport_constructor dmv_k213_device::device_input_ports() const return INPUT_PORTS_NAME( dmv_k213 ); } -WRITE_LINE_MEMBER(dmv_k801_device::epci_irq_w) +WRITE_LINE_MEMBER(dmv_k801_device::pci_irq_w) { out_irq(state); } @@ -212,9 +217,9 @@ void dmv_k801_device::io_read(int ifsel, offs_t offset, uint8_t &data) if ((dsw >> 1) == ifsel && BIT(offset, 3) == BIT(dsw, 0)) { if (offset & 0x04) - m_epci->write(offset & 0x03, data); + m_pci->write(offset & 0x03, data); else - data = m_epci->read(offset & 0x03); + data = m_pci->read(offset & 0x03); } } @@ -224,9 +229,9 @@ void dmv_k801_device::io_write(int ifsel, offs_t offset, uint8_t data) if ((dsw >> 1) == ifsel && BIT(offset, 3) == BIT(dsw, 0)) { if (offset & 0x04) - m_epci->write(offset & 0x03, data); + m_pci->write(offset & 0x03, data); else - data = m_epci->read(offset & 0x03); + data = m_pci->read(offset & 0x03); } } @@ -236,9 +241,9 @@ void dmv_k211_device::io_read(int ifsel, offs_t offset, uint8_t &data) if ((BIT(jumpers, 0) && ifsel == 0) || (BIT(jumpers, 1) && ifsel == 1)) { if (offset & 0x04) - m_epci->write(offset & 0x03, data); + m_pci->write(offset & 0x03, data); else - data = m_epci->read(offset & 0x03); + data = m_pci->read(offset & 0x03); } } @@ -248,8 +253,8 @@ void dmv_k211_device::io_write(int ifsel, offs_t offset, uint8_t data) if ((BIT(jumpers, 0) && ifsel == 0) || (BIT(jumpers, 1) && ifsel == 1)) { if (offset & 0x04) - m_epci->write(offset & 0x03, data); + m_pci->write(offset & 0x03, data); else - data = m_epci->read(offset & 0x03); + data = m_pci->read(offset & 0x03); } } diff --git a/src/devices/bus/dmv/k801.h b/src/devices/bus/dmv/k801.h index 13fe57ddd38..41f72aaacf8 100644 --- a/src/devices/bus/dmv/k801.h +++ b/src/devices/bus/dmv/k801.h @@ -7,7 +7,7 @@ #pragma once #include "dmvbus.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" #include "bus/rs232/rs232.h" @@ -40,12 +40,14 @@ protected: virtual void io_read(int ifsel, offs_t offset, uint8_t &data) override; virtual void io_write(int ifsel, offs_t offset, uint8_t data) override; - required_device m_epci; + void pci_mconfig(machine_config &config, bool epci, const char *default_option); + + required_device m_pci; required_device m_rs232; required_ioport m_dsw; private: - DECLARE_WRITE_LINE_MEMBER(epci_irq_w); + DECLARE_WRITE_LINE_MEMBER(pci_irq_w); }; diff --git a/src/devices/bus/s100/am310.cpp b/src/devices/bus/s100/am310.cpp index ec2ccf5a608..5eee55b1a2e 100644 --- a/src/devices/bus/s100/am310.cpp +++ b/src/devices/bus/s100/am310.cpp @@ -23,7 +23,7 @@ #include "machine/am9517a.h" #include "machine/gen_latch.h" #include "machine/input_merger.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" class s100_am310_device : public device_t, public device_s100_card_interface { @@ -62,7 +62,7 @@ private: required_device m_dilatch; required_device m_statlatch; required_device m_dma; - required_device_array m_pci; + required_device_array m_pci; required_ioport m_adr; required_ioport m_intr; }; @@ -187,14 +187,14 @@ void s100_am310_device::z80_map(address_map &map) map(0x8000, 0x800f).mirror(0x3ff0).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); map(0xc000, 0xc000).mirror(0x3fc7).w(m_statlatch, FUNC(generic_latch_8_device::write)); map(0xc008, 0xc008).mirror(0x3fc7).r(m_cmdlatch, FUNC(generic_latch_8_device::read)); - map(0xc010, 0xc013).mirror(0x3fc0).r(m_pci[0], FUNC(mc2661_device::read)); - map(0xc014, 0xc017).mirror(0x3fc0).w(m_pci[0], FUNC(mc2661_device::write)); - map(0xc018, 0xc01b).mirror(0x3fc0).r(m_pci[1], FUNC(mc2661_device::read)); - map(0xc01c, 0xc01f).mirror(0x3fc0).w(m_pci[1], FUNC(mc2661_device::write)); - map(0xc020, 0xc023).mirror(0x3fc0).r(m_pci[2], FUNC(mc2661_device::read)); - map(0xc024, 0xc027).mirror(0x3fc0).w(m_pci[2], FUNC(mc2661_device::write)); - map(0xc028, 0xc02b).mirror(0x3fc0).r(m_pci[3], FUNC(mc2661_device::read)); - map(0xc02c, 0xc02f).mirror(0x3fc0).w(m_pci[3], FUNC(mc2661_device::write)); + map(0xc010, 0xc013).mirror(0x3fc0).r(m_pci[0], FUNC(scn_pci_device::read)); + map(0xc014, 0xc017).mirror(0x3fc0).w(m_pci[0], FUNC(scn_pci_device::write)); + map(0xc018, 0xc01b).mirror(0x3fc0).r(m_pci[1], FUNC(scn_pci_device::read)); + map(0xc01c, 0xc01f).mirror(0x3fc0).w(m_pci[1], FUNC(scn_pci_device::write)); + map(0xc020, 0xc023).mirror(0x3fc0).r(m_pci[2], FUNC(scn_pci_device::read)); + map(0xc024, 0xc027).mirror(0x3fc0).w(m_pci[2], FUNC(scn_pci_device::write)); + map(0xc028, 0xc02b).mirror(0x3fc0).r(m_pci[3], FUNC(scn_pci_device::read)); + map(0xc02c, 0xc02f).mirror(0x3fc0).w(m_pci[3], FUNC(scn_pci_device::write)); map(0xc030, 0xc030).mirror(0x3fc7).select(8).rw(FUNC(s100_am310_device::int_r), FUNC(s100_am310_device::int_w)); } @@ -309,7 +309,7 @@ void s100_am310_device::device_add_mconfig(machine_config &config) GENERIC_LATCH_8(config, m_dilatch); // U40 GENERIC_LATCH_8(config, m_statlatch); // U41 - MC2661(config, m_pci[0], 5.0688_MHz_XTAL); // U30 + SCN2651(config, m_pci[0], 5.0688_MHz_XTAL); // U30 m_pci[0]->rts_handler().set("ch1", FUNC(rs232_port_device::write_rts)); m_pci[0]->dtr_handler().set("ch1", FUNC(rs232_port_device::write_dtr)); m_pci[0]->txd_handler().set("ch1", FUNC(rs232_port_device::write_txd)); @@ -317,7 +317,7 @@ void s100_am310_device::device_add_mconfig(machine_config &config) m_pci[0]->txrdy_handler().set("irq", FUNC(input_merger_device::in_w<1>)); m_pci[0]->rxrdy_handler().set("irq", FUNC(input_merger_device::in_w<2>)); - MC2661(config, m_pci[1], 5.0688_MHz_XTAL); // U28 + SCN2651(config, m_pci[1], 5.0688_MHz_XTAL); // U28 m_pci[1]->rts_handler().set("ch2", FUNC(rs232_port_device::write_rts)); m_pci[1]->dtr_handler().set("ch2", FUNC(rs232_port_device::write_dtr)); m_pci[1]->txd_handler().set("ch2", FUNC(rs232_port_device::write_txd)); @@ -325,7 +325,7 @@ void s100_am310_device::device_add_mconfig(machine_config &config) m_pci[1]->txrdy_handler().set("irq", FUNC(input_merger_device::in_w<4>)); m_pci[1]->rxrdy_handler().set("irq", FUNC(input_merger_device::in_w<5>)); - MC2661(config, m_pci[2], 5.0688_MHz_XTAL); // U27 + SCN2651(config, m_pci[2], 5.0688_MHz_XTAL); // U27 m_pci[2]->rts_handler().set("ch3", FUNC(rs232_port_device::write_rts)); m_pci[2]->dtr_handler().set("ch3", FUNC(rs232_port_device::write_dtr)); m_pci[2]->txd_handler().set("ch3", FUNC(rs232_port_device::write_txd)); @@ -333,7 +333,7 @@ void s100_am310_device::device_add_mconfig(machine_config &config) m_pci[2]->txrdy_handler().set("irq", FUNC(input_merger_device::in_w<7>)); m_pci[2]->rxrdy_handler().set("irq", FUNC(input_merger_device::in_w<8>)); - MC2661(config, m_pci[3], 5.0688_MHz_XTAL); // U29 + SCN2651(config, m_pci[3], 5.0688_MHz_XTAL); // U29 m_pci[3]->rts_handler().set("ch4", FUNC(rs232_port_device::write_rts)); m_pci[3]->dtr_handler().set("ch4", FUNC(rs232_port_device::write_dtr)); m_pci[3]->txd_handler().set("ch4", FUNC(rs232_port_device::write_txd)); @@ -342,28 +342,28 @@ void s100_am310_device::device_add_mconfig(machine_config &config) m_pci[3]->rxrdy_handler().set("irq", FUNC(input_merger_device::in_w<11>)); rs232_port_device &ch1(RS232_PORT(config, "ch1", default_rs232_devices, nullptr)); // J2 - ch1.rxd_handler().set(m_pci[0], FUNC(mc2661_device::rx_w)); - ch1.dcd_handler().set(m_pci[0], FUNC(mc2661_device::dcd_w)); - ch1.dsr_handler().set(m_pci[0], FUNC(mc2661_device::dsr_w)); - ch1.cts_handler().set(m_pci[0], FUNC(mc2661_device::cts_w)); + ch1.rxd_handler().set(m_pci[0], FUNC(scn_pci_device::rxd_w)); + ch1.dcd_handler().set(m_pci[0], FUNC(scn_pci_device::dcd_w)); + ch1.dsr_handler().set(m_pci[0], FUNC(scn_pci_device::dsr_w)); + ch1.cts_handler().set(m_pci[0], FUNC(scn_pci_device::cts_w)); rs232_port_device &ch2(RS232_PORT(config, "ch2", default_rs232_devices, nullptr)); // J3 - ch2.rxd_handler().set(m_pci[1], FUNC(mc2661_device::rx_w)); - ch2.dcd_handler().set(m_pci[1], FUNC(mc2661_device::dcd_w)); - ch2.dsr_handler().set(m_pci[1], FUNC(mc2661_device::dsr_w)); - ch2.cts_handler().set(m_pci[1], FUNC(mc2661_device::cts_w)); + ch2.rxd_handler().set(m_pci[1], FUNC(scn_pci_device::rxd_w)); + ch2.dcd_handler().set(m_pci[1], FUNC(scn_pci_device::dcd_w)); + ch2.dsr_handler().set(m_pci[1], FUNC(scn_pci_device::dsr_w)); + ch2.cts_handler().set(m_pci[1], FUNC(scn_pci_device::cts_w)); rs232_port_device &ch3(RS232_PORT(config, "ch3", default_rs232_devices, nullptr)); // J4 - ch3.rxd_handler().set(m_pci[2], FUNC(mc2661_device::rx_w)); - ch3.dcd_handler().set(m_pci[2], FUNC(mc2661_device::dcd_w)); - ch3.dsr_handler().set(m_pci[2], FUNC(mc2661_device::dsr_w)); - ch3.cts_handler().set(m_pci[2], FUNC(mc2661_device::cts_w)); + ch3.rxd_handler().set(m_pci[2], FUNC(scn_pci_device::rxd_w)); + ch3.dcd_handler().set(m_pci[2], FUNC(scn_pci_device::dcd_w)); + ch3.dsr_handler().set(m_pci[2], FUNC(scn_pci_device::dsr_w)); + ch3.cts_handler().set(m_pci[2], FUNC(scn_pci_device::cts_w)); rs232_port_device &ch4(RS232_PORT(config, "ch4", default_rs232_devices, nullptr)); // J5 - ch4.rxd_handler().set(m_pci[3], FUNC(mc2661_device::rx_w)); - ch4.dcd_handler().set(m_pci[3], FUNC(mc2661_device::dcd_w)); - ch4.dsr_handler().set(m_pci[3], FUNC(mc2661_device::dsr_w)); - ch4.cts_handler().set(m_pci[3], FUNC(mc2661_device::cts_w)); + ch4.rxd_handler().set(m_pci[3], FUNC(scn_pci_device::rxd_w)); + ch4.dcd_handler().set(m_pci[3], FUNC(scn_pci_device::dcd_w)); + ch4.dsr_handler().set(m_pci[3], FUNC(scn_pci_device::dsr_w)); + ch4.cts_handler().set(m_pci[3], FUNC(scn_pci_device::cts_w)); } diff --git a/src/mame/drivers/aaa.cpp b/src/mame/drivers/aaa.cpp index bf5d725de70..c69323d927d 100644 --- a/src/mame/drivers/aaa.cpp +++ b/src/mame/drivers/aaa.cpp @@ -11,7 +11,7 @@ Skeleton driver for Ann Arbor Ambassador terminal. #include "cpu/z80/z80.h" #include "machine/74259.h" #include "machine/input_merger.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" #include "machine/nvram.h" #include "screen.h" @@ -43,7 +43,7 @@ private: void io_map(address_map &map); required_device m_maincpu; - required_device_array m_usart; + required_device_array m_usart; required_device m_screen; optional_ioport_array<16> m_key_row; required_region_ptr m_font; @@ -244,7 +244,7 @@ void aaa_state::aaa(machine_config &config) input_merger_device &usartint(INPUT_MERGER_ANY_HIGH(config, "usartint")); // open collector usartint.output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - MC2661(config, m_usart[0], 5.0688_MHz_XTAL); // 16F on I/O board + SCN2651(config, m_usart[0], 5.0688_MHz_XTAL); // 16F on I/O board m_usart[0]->txrdy_handler().set("usartint", FUNC(input_merger_device::in_w<0>)); m_usart[0]->rxrdy_handler().set("usartint", FUNC(input_merger_device::in_w<1>)); m_usart[0]->txemt_dschg_handler().set("usartint", FUNC(input_merger_device::in_w<2>)); @@ -252,7 +252,7 @@ void aaa_state::aaa(machine_config &config) m_usart[0]->rts_handler().set("printer", FUNC(rs232_port_device::write_rts)); m_usart[0]->dtr_handler().set("printer", FUNC(rs232_port_device::write_dtr)); - MC2661(config, m_usart[1], 5.0688_MHz_XTAL); // 18F on I/O board + SCN2651(config, m_usart[1], 5.0688_MHz_XTAL); // 18F on I/O board m_usart[1]->txrdy_handler().set("usartint", FUNC(input_merger_device::in_w<3>)); m_usart[1]->rxrdy_handler().set("usartint", FUNC(input_merger_device::in_w<4>)); m_usart[1]->txemt_dschg_handler().set("usartint", FUNC(input_merger_device::in_w<5>)); @@ -265,14 +265,14 @@ void aaa_state::aaa(machine_config &config) m_screen->set_screen_update(FUNC(aaa_state::screen_update)); rs232_port_device &computer(RS232_PORT(config, "computer", default_rs232_devices, nullptr)); - computer.rxd_handler().set(m_usart[1], FUNC(mc2661_device::rx_w)); - computer.cts_handler().set(m_usart[1], FUNC(mc2661_device::cts_w)); - computer.dsr_handler().set(m_usart[1], FUNC(mc2661_device::dsr_w)); + computer.rxd_handler().set(m_usart[1], FUNC(scn2651_device::rxd_w)); + computer.cts_handler().set(m_usart[1], FUNC(scn2651_device::cts_w)); + computer.dsr_handler().set(m_usart[1], FUNC(scn2651_device::dsr_w)); rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr)); - printer.rxd_handler().set(m_usart[0], FUNC(mc2661_device::rx_w)); - printer.cts_handler().set(m_usart[0], FUNC(mc2661_device::cts_w)); - printer.dsr_handler().set(m_usart[0], FUNC(mc2661_device::dsr_w)); + printer.rxd_handler().set(m_usart[0], FUNC(scn2651_device::rxd_w)); + printer.cts_handler().set(m_usart[0], FUNC(scn2651_device::cts_w)); + printer.dsr_handler().set(m_usart[0], FUNC(scn2651_device::dsr_w)); } /************************************************************************************************************** diff --git a/src/mame/drivers/dps1.cpp b/src/mame/drivers/dps1.cpp index 123a7ec0efa..d78efb8be14 100644 --- a/src/mame/drivers/dps1.cpp +++ b/src/mame/drivers/dps1.cpp @@ -17,8 +17,8 @@ ToDo: #include "cpu/z80/z80.h" #include "imagedev/floppy.h" #include "machine/am9519.h" +#include "machine/scn_pci.h" #include "machine/upd765.h" -#include "machine/mc2661.h" #include "bus/rs232/rs232.h" //#include "bus/s100/s100.h" #include "softlist.h" @@ -73,7 +73,7 @@ void dps1_state::io_map(address_map &map) { map.global_mask(0xff); map.unmap_value_high(); - map(0x00, 0x03).rw("uart", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // S2651 + map(0x00, 0x03).rw("uart", FUNC(scn2651_device::read), FUNC(scn2651_device::write)); map(0xb0, 0xb1).m(m_fdc, FUNC(upd765_family_device::map)); map(0xb2, 0xb3).w(FUNC(dps1_state::portb2_w)); // set dma fdc->memory map(0xb4, 0xb5).w(FUNC(dps1_state::portb4_w)); // set dma memory->fdc @@ -84,7 +84,7 @@ void dps1_state::io_map(address_map &map) map(0xbe, 0xbf).w(FUNC(dps1_state::portbe_w)); // disable eprom map(0xff, 0xff).rw(FUNC(dps1_state::portff_r), FUNC(dps1_state::portff_w)); // other allocated ports, optional - // map(0x04, 0x07).rw("uart2", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // S2651 + // map(0x04, 0x07).rw("uart2", FUNC(scn2651_device::read), FUNC(scn2651_device::write)); // map(0x08, 0x0b) parallel ports // map(0x10, 0x11) // interrupt response map(0x14, 0x14).rw("am9519a", FUNC(am9519_device::data_r), FUNC(am9519_device::data_w)); @@ -206,15 +206,15 @@ void dps1_state::dps1(machine_config &config) m_maincpu->set_addrmap(AS_IO, &dps1_state::io_map); /* video hardware */ - mc2661_device &uart(MC2661(config, "uart", 5.0688_MHz_XTAL)); // Signetics 2651N + scn2651_device &uart(SCN2651(config, "uart", 5.0688_MHz_XTAL)); // Signetics 2651N uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); - rs232.rxd_handler().set(uart, FUNC(mc2661_device::rx_w)); - rs232.dsr_handler().set(uart, FUNC(mc2661_device::dsr_w)); - rs232.cts_handler().set(uart, FUNC(mc2661_device::cts_w)); + rs232.rxd_handler().set(uart, FUNC(scn2651_device::rxd_w)); + rs232.dsr_handler().set(uart, FUNC(scn2651_device::dsr_w)); + rs232.cts_handler().set(uart, FUNC(scn2651_device::cts_w)); AM9519(config, "am9519a", 0); AM9519(config, "am9519b", 0); diff --git a/src/mame/drivers/dual68.cpp b/src/mame/drivers/dual68.cpp index db1ec8424ae..19ef08d06e6 100644 --- a/src/mame/drivers/dual68.cpp +++ b/src/mame/drivers/dual68.cpp @@ -14,7 +14,7 @@ #include "bus/rs232/rs232.h" //#include "bus/s100/s100.h" #include "machine/input_merger.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" class dual68_state : public driver_device @@ -40,7 +40,7 @@ private: void sio4_mem(address_map &map); virtual void machine_reset() override; required_device m_maincpu; - required_device_array m_usart; + required_device_array m_usart; required_shared_ptr m_p_ram; }; @@ -89,21 +89,16 @@ void dual68_state::sio4_io(address_map &map) map.unmap_value_high(); map(0x06, 0x06).r(FUNC(dual68_state::sio_status_r)); map(0x18, 0x18).nopw(); - map(0x20, 0x23).rw("usart1", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); - map(0x28, 0x2b).rw("usart2", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); - map(0x30, 0x33).rw("usart3", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); - map(0x38, 0x3b).rw("usart4", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0x20, 0x23).rw("usart1", FUNC(scn_pci_device::read), FUNC(scn_pci_device::write)); + map(0x28, 0x2b).rw("usart2", FUNC(scn_pci_device::read), FUNC(scn_pci_device::write)); + map(0x30, 0x33).rw("usart3", FUNC(scn_pci_device::read), FUNC(scn_pci_device::write)); + map(0x38, 0x3b).rw("usart4", FUNC(scn_pci_device::read), FUNC(scn_pci_device::write)); } /* Input ports */ static INPUT_PORTS_START( dual68 ) INPUT_PORTS_END -static DEVICE_INPUT_DEFAULTS_START( terminal ) - DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_7200 ) // FIXME: should be 9600 with actual 2661B - DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_7200 ) -DEVICE_INPUT_DEFAULTS_END - void dual68_state::machine_reset() { uint8_t *mainbios = memregion("mainbios")->base(); @@ -122,7 +117,7 @@ void dual68_state::dual68(machine_config &config) siocpu.set_addrmap(AS_IO, &dual68_state::sio4_io); for (auto &usart : m_usart) - MC2661(config, usart, 9.8304_MHz_XTAL / 2); // SCN2661B + SCN2661B(config, usart, 9.8304_MHz_XTAL / 2); m_usart[0]->rxrdy_handler().set("usartint", FUNC(input_merger_device::in_w<0>)); m_usart[1]->rxrdy_handler().set("usartint", FUNC(input_merger_device::in_w<1>)); m_usart[2]->rxrdy_handler().set("usartint", FUNC(input_merger_device::in_w<2>)); @@ -134,11 +129,10 @@ void dual68_state::dual68(machine_config &config) INPUT_MERGER_ANY_HIGH(config, "usartint").output_handler().set_inputline("siocpu", I8085_RST65_LINE); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); - rs232.rxd_handler().set(m_usart[0], FUNC(mc2661_device::rx_w)); - rs232.dsr_handler().set(m_usart[0], FUNC(mc2661_device::dsr_w)); - rs232.dcd_handler().set(m_usart[0], FUNC(mc2661_device::dcd_w)); - rs232.cts_handler().set(m_usart[0], FUNC(mc2661_device::cts_w)); - rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); + rs232.rxd_handler().set(m_usart[0], FUNC(scn_pci_device::rxd_w)); + rs232.dsr_handler().set(m_usart[0], FUNC(scn_pci_device::dsr_w)); + rs232.dcd_handler().set(m_usart[0], FUNC(scn_pci_device::dcd_w)); + rs232.cts_handler().set(m_usart[0], FUNC(scn_pci_device::cts_w)); } /* ROM definition */ diff --git a/src/mame/drivers/falcots.cpp b/src/mame/drivers/falcots.cpp index 78aa7b3811a..b4619577087 100644 --- a/src/mame/drivers/falcots.cpp +++ b/src/mame/drivers/falcots.cpp @@ -9,9 +9,9 @@ #include "emu.h" #include "cpu/z80/z80.h" //#include "bus/rs232/rs232.h" -#include "machine/mc2661.h" #include "machine/nvram.h" #include "machine/rstbuf.h" +#include "machine/scn_pci.h" #include "machine/z80ctc.h" #include "machine/z80sio.h" #include "video/mc6845.h" @@ -114,8 +114,8 @@ void falcots_state::ts1_io_map(address_map &map) map(0xe8, 0xe8).r(FUNC(falcots_state::key_status_r)); map(0xf0, 0xf0).w(m_crtc, FUNC(mc6845_device::address_w)); map(0xf1, 0xf1).w(m_crtc, FUNC(mc6845_device::register_w)); - map(0xf8, 0xfb).r("pci", FUNC(mc2661_device::read)); - map(0xfc, 0xff).w("pci", FUNC(mc2661_device::write)); + map(0xf8, 0xfb).r("pci", FUNC(scn2651_device::read)); + map(0xfc, 0xff).w("pci", FUNC(scn2651_device::write)); } void falcots_state::mem_map(address_map &map) @@ -374,7 +374,7 @@ void falcots_state::ts1(machine_config &config) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 2x NEC D444C + battery? - mc2661_device &pci(MC2661(config, "pci", 15.2064_MHz_XTAL / 3)); // SCN2651N + scn2651_device &pci(SCN2651(config, "pci", 15.2064_MHz_XTAL / 3)); // SCN2651N pci.txrdy_handler().set(m_rstbuf, FUNC(rst_pos_buffer_device::rst1_w)); pci.rxrdy_handler().set(m_rstbuf, FUNC(rst_pos_buffer_device::rst2_w)); diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp index c1f3ade02ba..8cfe9946354 100644 --- a/src/mame/drivers/hp16500.cpp +++ b/src/mame/drivers/hp16500.cpp @@ -50,7 +50,7 @@ #include "emu.h" #include "cpu/m68000/m68000.h" #include "machine/ds1386.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" #include "bus/hp_hil/hp_hil.h" #include "bus/hp_hil/hil_devices.h" #include "video/mc6845.h" @@ -235,7 +235,7 @@ void hp16500_state::hp1650_map(address_map &map) map(0x206001, 0x206001).w(FUNC(hp16500_state::pal_g_w)); map(0x207001, 0x207001).w(FUNC(hp16500_state::pal_b_w)); - map(0x20a000, 0x20a007).rw("epci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0x00ff); + map(0x20a000, 0x20a007).rw("epci", FUNC(scn_pci_device::read), FUNC(scn_pci_device::write)).umask16(0x00ff); map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); @@ -264,7 +264,7 @@ void hp16500_state::hp1651_map(address_map &map) map(0x206001, 0x206001).w(FUNC(hp16500_state::pal_g_w)); map(0x207001, 0x207001).w(FUNC(hp16500_state::pal_b_w)); - map(0x20a000, 0x20a007).rw("epci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0x00ff); + map(0x20a000, 0x20a007).rw("epci", FUNC(scn_pci_device::read), FUNC(scn_pci_device::write)).umask16(0x00ff); map(0x20c001, 0x20c001).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w)); map(0x20c003, 0x20c003).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); @@ -432,7 +432,7 @@ void hp16500_state::hp1650(machine_config &config) crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650)); crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); - MC2661(config, "epci", 5000000); + SCN2661A(config, "epci", 5000000); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -455,7 +455,7 @@ void hp16500_state::hp1651(machine_config &config) crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650)); crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); - MC2661(config, "epci", 5000000); + SCN2661A(config, "epci", 5000000); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); diff --git a/src/mame/drivers/micro3d.cpp b/src/mame/drivers/micro3d.cpp index d55a9a0ad94..bdc18b9559a 100644 --- a/src/mame/drivers/micro3d.cpp +++ b/src/mame/drivers/micro3d.cpp @@ -361,7 +361,7 @@ void micro3d_state::micro3d(machine_config &config) screen.set_screen_update("vgb", FUNC(tms34010_device::tms340x0_ind16)); screen.set_palette(m_palette); - MC2661(config, m_vgb_uart, 40_MHz_XTAL / 8); // actually SCN2651 + SCN2651(config, m_vgb_uart, 40_MHz_XTAL / 8); m_vgb_uart->txd_handler().set("monitor_vgb", FUNC(rs232_port_device::write_txd)); rs232_port_device &monitor_host(RS232_PORT(config, "monitor_host", default_rs232_devices, nullptr)); // J2 (4-pin molex) @@ -372,8 +372,8 @@ void micro3d_state::micro3d(machine_config &config) monitor_drmath.dcd_handler().set("scc", FUNC(z80scc_device::dcdb_w)); rs232_port_device &monitor_vgb(RS232_PORT(config, "monitor_vgb", default_rs232_devices, nullptr)); // J3 (4-pin molex) - monitor_vgb.rxd_handler().set(m_vgb_uart, FUNC(mc2661_device::rx_w)); - monitor_vgb.dsr_handler().set(m_vgb_uart, FUNC(mc2661_device::dsr_w)); + monitor_vgb.rxd_handler().set(m_vgb_uart, FUNC(scn2651_device::rxd_w)); + monitor_vgb.dsr_handler().set(m_vgb_uart, FUNC(scn2651_device::dsr_w)); ADC0844(config, m_adc); m_adc->intr_callback().set("mfp", FUNC(mc68901_device::i3_w)); diff --git a/src/mame/drivers/microterm.cpp b/src/mame/drivers/microterm.cpp index a7ba32afebb..32376047847 100644 --- a/src/mame/drivers/microterm.cpp +++ b/src/mame/drivers/microterm.cpp @@ -9,8 +9,8 @@ Skeleton driver for Micro-Term terminals. #include "emu.h" #include "cpu/z80/z80.h" #include "machine/eepromser.h" -#include "machine/mc2661.h" #include "machine/mc68681.h" +#include "machine/scn_pci.h" #include "video/scn2674.h" #include "screen.h" @@ -66,7 +66,7 @@ void microterm_state::mt420_io_map(address_map &map) { map.global_mask(0xff); map(0xe0, 0xef).rw("duart", FUNC(scn2681_device::read), FUNC(scn2681_device::write)); - map(0xf0, 0xf3).rw("aci", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xf0, 0xf3).rw("aci", FUNC(scn2641_device::read), FUNC(scn2641_device::write)); } SCN2674_DRAW_CHARACTER_MEMBER(microterm_state::draw_character) @@ -106,7 +106,7 @@ void microterm_state::mt420(machine_config &config) duart.outport_cb().append("eeprom", FUNC(eeprom_serial_93cxx_device::cs_write)).bit(4); duart.outport_cb().append("eeprom", FUNC(eeprom_serial_93cxx_device::clk_write)).bit(3); - MC2661(config, "aci", 3.6864_MHz_XTAL); // SCN2641 + SCN2641(config, "aci", 3.6864_MHz_XTAL); EEPROM_93C46_16BIT(config, "eeprom").do_callback().set("duart", FUNC(scn2681_device::ip6_w)); diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp index 81bc957c5aa..b24484d023f 100644 --- a/src/mame/drivers/pcd.cpp +++ b/src/mame/drivers/pcd.cpp @@ -17,9 +17,9 @@ #include "cpu/i86/i186.h" #include "imagedev/floppy.h" #include "machine/mc146818.h" -#include "machine/mc2661.h" #include "machine/nvram.h" #include "machine/pic8259.h" +#include "machine/scn_pci.h" #include "machine/ram.h" #include "machine/timer.h" #include "machine/wd_fdc.h" @@ -97,7 +97,7 @@ private: required_device m_speaker; required_device m_fdc; required_device m_rtc; - required_device_array m_usart; + required_device_array m_usart; required_device m_scsi; required_device m_scsi_data_out; required_device m_scsi_data_in; @@ -434,9 +434,9 @@ void pcd_state::pcd_io(address_map &map) map(0xf904, 0xf905).rw(FUNC(pcd_state::dskctl_r), FUNC(pcd_state::dskctl_w)); map(0xf940, 0xf943).rw(FUNC(pcd_state::scsi_r), FUNC(pcd_state::scsi_w)); map(0xf980, 0xf9bf).m("video", FUNC(pcdx_video_device::map)); - map(0xf9c0, 0xf9c3).rw(m_usart[0], FUNC(mc2661_device::read), FUNC(mc2661_device::write)); // UARTs - map(0xf9d0, 0xf9d3).rw(m_usart[1], FUNC(mc2661_device::read), FUNC(mc2661_device::write)); - map(0xf9e0, 0xf9e3).rw(m_usart[2], FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xf9c0, 0xf9c3).rw(m_usart[0], FUNC(scn2661b_device::read), FUNC(scn2661b_device::write)); // UARTs + map(0xf9d0, 0xf9d3).rw(m_usart[1], FUNC(scn2661b_device::read), FUNC(scn2661b_device::write)); + map(0xf9e0, 0xf9e3).rw(m_usart[2], FUNC(scn2661b_device::read), FUNC(scn2661b_device::write)); // map(0xfa00, 0xfa7f) // pcs4-n (peripheral chip select) map(0xfb00, 0xfb00).rw(FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w)); map(0xfb02, 0xffff).rw(FUNC(pcd_state::nmi_io_r), FUNC(pcd_state::nmi_io_w)); @@ -506,25 +506,25 @@ void pcd_state::pcd(machine_config &config) FLOPPY_CONNECTOR(config, "fdc:1", pcd_floppies, "55f", pcd_state::floppy_formats); // usart - MC2661(config, m_usart[0], 4.9152_MHz_XTAL); + SCN2661B(config, m_usart[0], 4.9152_MHz_XTAL); m_usart[0]->rxrdy_handler().set(m_pic1, FUNC(pic8259_device::ir3_w)); m_usart[0]->txrdy_handler().set(m_pic1, FUNC(pic8259_device::ir3_w)); m_usart[0]->txd_handler().set("rs232_1", FUNC(rs232_port_device::write_txd)); - MC2661(config, m_usart[1], 4.9152_MHz_XTAL); + SCN2661B(config, m_usart[1], 4.9152_MHz_XTAL); m_usart[1]->rxrdy_handler().set(m_pic1, FUNC(pic8259_device::ir2_w)); //m_usart[1]->.txrdy_handler().set(m_pic1, FUNC(pic8259_device::ir2_w)); // this gets stuck high causing the keyboard to not work m_usart[1]->txd_handler().set("keyboard", FUNC(pcd_keyboard_device::t0_w)); - MC2661(config, m_usart[2], 4.9152_MHz_XTAL); + SCN2661B(config, m_usart[2], 4.9152_MHz_XTAL); m_usart[2]->rxrdy_handler().set(m_pic1, FUNC(pic8259_device::ir4_w)); m_usart[2]->txrdy_handler().set(m_pic1, FUNC(pic8259_device::ir4_w)); m_usart[2]->txd_handler().set("rs232_2", FUNC(rs232_port_device::write_txd)); rs232_port_device &rs232_1(RS232_PORT(config, "rs232_1", default_rs232_devices, nullptr)); - rs232_1.rxd_handler().set(m_usart[0], FUNC(mc2661_device::rx_w)); + rs232_1.rxd_handler().set(m_usart[0], FUNC(scn2661b_device::rxd_w)); rs232_port_device &rs232_2(RS232_PORT(config, "rs232_2", default_rs232_devices, nullptr)); - rs232_2.rxd_handler().set(m_usart[2], FUNC(mc2661_device::rx_w)); + rs232_2.rxd_handler().set(m_usart[2], FUNC(scn2661b_device::rxd_w)); // sound hardware SPEAKER(config, "mono").front_center(); @@ -539,7 +539,7 @@ void pcd_state::pcd(machine_config &config) m_rtc->set_24hrs(true); pcd_keyboard_device &keyboard(PCD_KEYBOARD(config, "keyboard", 0)); - keyboard.out_tx_handler().set(m_usart[1], FUNC(mc2661_device::rx_w)); + keyboard.out_tx_handler().set(m_usart[1], FUNC(scn2661b_device::rxd_w)); SCSI_PORT(config, m_scsi, 0); m_scsi->set_data_input_buffer("scsi_data_in"); diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp index 92d4d27f839..f0e112f5c9f 100644 --- a/src/mame/drivers/pg685.cpp +++ b/src/mame/drivers/pg685.cpp @@ -86,10 +86,10 @@ Memory: 54x 64KBit RAM, 18 empty sockets, 9 bit and 4 bit wire straps #include "machine/i8251.h" #include "machine/i8255.h" #include "machine/i8279.h" -#include "machine/mc2661.h" #include "machine/mm58167.h" #include "machine/pic8259.h" #include "machine/pit8253.h" +#include "machine/scn_pci.h" #include "machine/wd2010.h" #include "machine/wd_fdc.h" #include "video/mc6845.h" @@ -187,7 +187,7 @@ void pg685_state::pg685_mem(address_map &map) map.unmap_value_high(); pg675_mem(map); map(0xf9f34, 0xf9f37).rw(m_bppit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); - map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(scn2661b_device::read), FUNC(scn2661b_device::write)); map(0xf9f3c, 0xf9f3d).rw("bppic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); map(0xf9f3e, 0xf9f3e).w(FUNC(pg685_state::f9f3e_w)); map(0xf9f70, 0xf9f77).rw("hdc", FUNC(wd2010_device::read), FUNC(wd2010_device::write)); @@ -213,7 +213,7 @@ void pg685_state::pg685oua12_mem(address_map &map) map(0xf9f32, 0xf9f32).w(FUNC(pg685_state::f9f32_w)); map(0xf9f33, 0xf9f33).r(FUNC(pg685_state::f9f33_r)); map(0xf9f34, 0xf9f37).rw(m_bppit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)); - map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xf9f38, 0xf9f3b).rw("bpuart", FUNC(scn2661b_device::read), FUNC(scn2661b_device::write)); map(0xf9f3c, 0xf9f3d).rw("bppic", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); map(0xf9f3e, 0xf9f3e).w(FUNC(pg685_state::f9f3e_w)); map(0xf9f3f, 0xf9f3f).r(FUNC(pg685_state::f9f3f_r)); @@ -406,7 +406,7 @@ void pg685_state::pg685_backplane(machine_config &config) pic8259_device &bppic(PIC8259(config, "bppic", 0)); bppic.out_int_callback().set_nop(); // configured in single 8086 mode? - MC2661(config, "bpuart", 4915200); + SCN2661B(config, "bpuart", 4915200); } void pg685_state::pg685_module(machine_config &config) diff --git a/src/mame/drivers/teleray10.cpp b/src/mame/drivers/teleray10.cpp index 67d65222576..3bc9ec69e51 100644 --- a/src/mame/drivers/teleray10.cpp +++ b/src/mame/drivers/teleray10.cpp @@ -11,7 +11,7 @@ #include "cpu/m6502/m6502.h" #include "machine/74259.h" #include "machine/input_merger.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" #include "machine/timer.h" #include "sound/spkrdev.h" #include "screen.h" @@ -70,7 +70,7 @@ private: required_device m_outreg; required_device m_screen; required_device m_bell; - required_device m_pci; + required_device m_pci; required_device m_serialio; required_device m_peripheral; required_shared_ptr m_scratchpad; @@ -93,6 +93,9 @@ void teleray10_state::machine_start() m_topr = 0; m_timer_expired = false; + // HACK: force continuous CTS + subdevice("cts")->in_w<2>(0); + save_item(NAME(m_topr)); save_item(NAME(m_timer_expired)); } @@ -393,55 +396,55 @@ static INPUT_PORTS_START(teleray10) PORT_BIT(1, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Interrupt") PORT_WRITE_LINE_MEMBER(teleray10_state, key_interrupt_w) PORT_START("SW1A") - PORT_DIPNAME(0x01, 0x01, "Xmit ETX") PORT_DIPLOCATION("7A:3") - PORT_DIPSETTING(0x01, DEF_STR(Off)) - PORT_DIPSETTING(0x00, DEF_STR(On)) - PORT_DIPNAME(0x02, 0x02, "Xmit CSR") PORT_DIPLOCATION("7A:2") - PORT_DIPSETTING(0x02, DEF_STR(Off)) - PORT_DIPSETTING(0x00, DEF_STR(On)) - PORT_DIPNAME(0x04, 0x00, "Character Bits") PORT_DIPLOCATION("6A:8") - PORT_DIPSETTING(0x04, "7") - PORT_DIPSETTING(0x00, "8") + PORT_DIPNAME(0x01, 0x00, "Xmit ETX") PORT_DIPLOCATION("7A:3") + PORT_DIPSETTING(0x00, DEF_STR(Off)) + PORT_DIPSETTING(0x01, DEF_STR(On)) + PORT_DIPNAME(0x02, 0x00, "Xmit CSR") PORT_DIPLOCATION("7A:2") + PORT_DIPSETTING(0x00, DEF_STR(Off)) + PORT_DIPSETTING(0x02, DEF_STR(On)) + PORT_DIPNAME(0x04, 0x04, "Character Bits") PORT_DIPLOCATION("6A:8") + PORT_DIPSETTING(0x00, "7") + PORT_DIPSETTING(0x04, "8") PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN) // "Reserved" jumper - PORT_DIPNAME(0x30, 0x00, "Parity") PORT_DIPLOCATION("6A:6,5") - PORT_DIPSETTING(0x30, "Even") - PORT_DIPSETTING(0x20, "Odd") - PORT_DIPSETTING(0x00, "None/High") + PORT_DIPNAME(0x30, 0x30, "Parity") PORT_DIPLOCATION("6A:6,5") + PORT_DIPSETTING(0x00, "Even") + PORT_DIPSETTING(0x10, "Odd") + PORT_DIPSETTING(0x30, "None/High") PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_READ_LINE_MEMBER(teleray10_state, timer_expired_r) - PORT_DIPNAME(0x80, 0x80, "Stop Bits") PORT_DIPLOCATION("6A:7") - PORT_DIPSETTING(0x80, "1") - PORT_DIPSETTING(0x00, "2") + PORT_DIPNAME(0x80, 0x00, "Stop Bits") PORT_DIPLOCATION("6A:7") + PORT_DIPSETTING(0x00, "1") + PORT_DIPSETTING(0x80, "2") PORT_START("SW1B") - PORT_DIPNAME(0x0f, 0x01, "Baud Rate") PORT_DIPLOCATION("6A:4,3,2,1") - PORT_DIPSETTING(0x0f, "50") - PORT_DIPSETTING(0x0e, "75") - PORT_DIPSETTING(0x0d, "110") - PORT_DIPSETTING(0x0c, "134.5") - PORT_DIPSETTING(0x0b, "150") - PORT_DIPSETTING(0x0a, "300") - PORT_DIPSETTING(0x09, "600") - PORT_DIPSETTING(0x08, "1200") - PORT_DIPSETTING(0x07, "1800") - PORT_DIPSETTING(0x06, "2000") - PORT_DIPSETTING(0x05, "2400") - PORT_DIPSETTING(0x04, "3600") - PORT_DIPSETTING(0x03, "4800") - PORT_DIPSETTING(0x02, "7200") - PORT_DIPSETTING(0x01, "9600") - PORT_DIPSETTING(0x00, "Reserved") + PORT_DIPNAME(0x0f, 0x0e, "Baud Rate") PORT_DIPLOCATION("6A:4,3,2,1") + PORT_DIPSETTING(0x00, "50") + PORT_DIPSETTING(0x01, "75") + PORT_DIPSETTING(0x02, "110") + PORT_DIPSETTING(0x03, "134.5") + PORT_DIPSETTING(0x04, "150") + PORT_DIPSETTING(0x05, "300") + PORT_DIPSETTING(0x06, "600") + PORT_DIPSETTING(0x07, "1200") + PORT_DIPSETTING(0x08, "1800") + PORT_DIPSETTING(0x09, "2000") + PORT_DIPSETTING(0x0a, "2400") + PORT_DIPSETTING(0x0b, "3600") + PORT_DIPSETTING(0x0c, "4800") + PORT_DIPSETTING(0x0d, "7200") + PORT_DIPSETTING(0x0e, "9600") + PORT_DIPSETTING(0x0f, "Reserved") PORT_DIPNAME(0x10, 0x10, "Half/Full Duplex") PORT_DIPLOCATION("7A:4") - PORT_DIPSETTING(0x10, DEF_STR(Off)) - PORT_DIPSETTING(0x00, DEF_STR(On)) - PORT_DIPNAME(0x20, 0x20, "Right Margin Wrap") PORT_DIPLOCATION("7A:5") - PORT_DIPSETTING(0x20, DEF_STR(Off)) - PORT_DIPSETTING(0x00, DEF_STR(On)) - PORT_DIPNAME(0x40, 0x40, "LF NL/CR NL") PORT_DIPLOCATION("7A:7") - PORT_DIPSETTING(0x40, DEF_STR(Off)) - PORT_DIPSETTING(0x00, DEF_STR(On)) - PORT_DIPNAME(0x80, 0x80, "New Line") PORT_DIPLOCATION("7A:6") - PORT_DIPSETTING(0x80, DEF_STR(Off)) - PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPSETTING(0x00, DEF_STR(Off)) + PORT_DIPSETTING(0x10, DEF_STR(On)) + PORT_DIPNAME(0x20, 0x00, "Right Margin Wrap") PORT_DIPLOCATION("7A:5") + PORT_DIPSETTING(0x00, DEF_STR(Off)) + PORT_DIPSETTING(0x20, DEF_STR(On)) + PORT_DIPNAME(0x40, 0x00, "LF NL/CR NL") PORT_DIPLOCATION("7A:7") + PORT_DIPSETTING(0x00, DEF_STR(Off)) + PORT_DIPSETTING(0x40, DEF_STR(On)) + PORT_DIPNAME(0x80, 0x00, "New Line") PORT_DIPLOCATION("7A:6") + PORT_DIPSETTING(0x00, DEF_STR(Off)) + PORT_DIPSETTING(0x80, DEF_STR(On)) PORT_START("SW2A") PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) @@ -491,22 +494,22 @@ void teleray10_state::teleray10(machine_config &config) SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_bell).add_route(ALL_OUTPUTS, "mono", 0.5); - MC2661(config, m_pci, 5.0688_MHz_XTAL); // Signetics 2651 or equivalent + SCN2651(config, m_pci, 5.0688_MHz_XTAL); // Signetics 2651 or equivalent m_pci->rxrdy_handler().set(m_mainirq, FUNC(input_merger_device::in_w<0>)); m_pci->txd_handler().set("xmitser", FUNC(input_merger_device::in_w<1>)); m_pci->txd_handler().append("xmitperiph", FUNC(input_merger_device::in_w<0>)); m_pci->rts_handler().set(m_serialio, FUNC(rs232_port_device::write_rts)); RS232_PORT(config, m_serialio, default_rs232_devices, nullptr); - m_serialio->rxd_handler().set(m_pci, FUNC(mc2661_device::rx_w)); + m_serialio->rxd_handler().set(m_pci, FUNC(scn2651_device::rxd_w)); m_serialio->cts_handler().set("cts", FUNC(input_merger_device::in_w<1>)); - m_serialio->dcd_handler().set(m_pci, FUNC(mc2661_device::dcd_w)); + m_serialio->dcd_handler().set(m_pci, FUNC(scn2651_device::dcd_w)); RS232_PORT(config, m_peripheral, default_rs232_devices, nullptr); INPUT_MERGER_ANY_HIGH(config, "xmitser").output_handler().set(m_serialio, FUNC(rs232_port_device::write_txd)); INPUT_MERGER_ANY_HIGH(config, "xmitperiph").output_handler().set(m_peripheral, FUNC(rs232_port_device::write_txd)); - INPUT_MERGER_ALL_HIGH(config, "cts").output_handler().set(m_pci, FUNC(mc2661_device::cts_w)); + INPUT_MERGER_ALL_HIGH(config, "cts").output_handler().set(m_pci, FUNC(scn2651_device::cts_w)); } diff --git a/src/mame/drivers/tricep.cpp b/src/mame/drivers/tricep.cpp index 44b4a02ccaf..585ca85a91b 100644 --- a/src/mame/drivers/tricep.cpp +++ b/src/mame/drivers/tricep.cpp @@ -16,7 +16,7 @@ #include "bus/rs232/rs232.h" //#include "bus/s100/s100.h" #include "cpu/m68000/m68000.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" class tricep_state : public driver_device { @@ -40,7 +40,7 @@ private: virtual void machine_reset() override; required_device m_maincpu; - required_device_array m_usart; + required_device_array m_usart; required_shared_ptr m_p_ram; uint8_t m_mux; @@ -106,20 +106,20 @@ void tricep_state::tricep(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &tricep_state::tricep_mem); // TODO: MC68451 MMU - MC2661(config, m_usart[0], 5.0688_MHz_XTAL); + SCN2651(config, m_usart[0], 5.0688_MHz_XTAL); m_usart[0]->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); m_usart[0]->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); m_usart[0]->dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr)); - MC2661(config, m_usart[1], 5.0688_MHz_XTAL); - MC2661(config, m_usart[2], 5.0688_MHz_XTAL); - MC2661(config, m_usart[3], 5.0688_MHz_XTAL); + SCN2651(config, m_usart[1], 5.0688_MHz_XTAL); + SCN2651(config, m_usart[2], 5.0688_MHz_XTAL); + SCN2651(config, m_usart[3], 5.0688_MHz_XTAL); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); - rs232.rxd_handler().set(m_usart[0], FUNC(mc2661_device::rx_w)); - rs232.dsr_handler().set(m_usart[0], FUNC(mc2661_device::dsr_w)); - rs232.dcd_handler().set(m_usart[0], FUNC(mc2661_device::dcd_w)); - rs232.cts_handler().set(m_usart[0], FUNC(mc2661_device::cts_w)); + rs232.rxd_handler().set(m_usart[0], FUNC(scn2651_device::rxd_w)); + rs232.dsr_handler().set(m_usart[0], FUNC(scn2651_device::dsr_w)); + rs232.dcd_handler().set(m_usart[0], FUNC(scn2651_device::dcd_w)); + rs232.cts_handler().set(m_usart[0], FUNC(scn2651_device::cts_w)); rs232.set_option_device_input_defaults("terminal", terminal_defaults); } diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp index dbe6d36d98f..2e9e322123b 100644 --- a/src/mame/drivers/wangpc.cpp +++ b/src/mame/drivers/wangpc.cpp @@ -30,9 +30,9 @@ #include "machine/am9517a.h" #include "machine/i8255.h" #include "machine/im6402.h" -#include "machine/mc2661.h" #include "machine/pit8253.h" #include "machine/pic8259.h" +#include "machine/scn_pci.h" #include "machine/ram.h" #include "machine/upd765.h" #include "machine/wangpckb.h" @@ -101,7 +101,7 @@ private: required_device m_ppi; required_device m_pit; required_device m_uart; - required_device m_epci; + required_device m_epci; required_device m_fdc; required_device m_ram; required_device m_floppy0; @@ -764,8 +764,8 @@ void wangpc_state::wangpc_io(address_map &map) map(0x1028, 0x1029); //.w(FUNC(wangpc_state::)); (?) map(0x1040, 0x1047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff); map(0x1060, 0x1063).rw(m_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); - map(0x1080, 0x1087).r(m_epci, FUNC(mc2661_device::read)).umask16(0x00ff); - map(0x1088, 0x108f).w(m_epci, FUNC(mc2661_device::write)).umask16(0x00ff); + map(0x1080, 0x1087).r(m_epci, FUNC(scn_pci_device::read)).umask16(0x00ff); + map(0x1088, 0x108f).w(m_epci, FUNC(scn_pci_device::write)).umask16(0x00ff); map(0x10a0, 0x10bf).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask16(0x00ff); map(0x10c2, 0x10c7).w(FUNC(wangpc_state::dma_page_w)).umask16(0x00ff); map(0x10e0, 0x10e0).rw(FUNC(wangpc_state::status_r), FUNC(wangpc_state::timer0_irq_clr_w)); @@ -915,7 +915,7 @@ WRITE_LINE_MEMBER( wangpc_state::dack3_w ) void wangpc_state::check_level1_interrupts() { - int state = !m_timer2_irq || m_epci->rxrdy_r() || m_epci->txemt_r() || !m_centronics_ack || !m_dav || m_centronics_busy; + int state = !m_timer2_irq || !m_epci->rxrdy_r() || !m_epci->txemt_dschg_r() || !m_centronics_ack || !m_dav || m_centronics_busy; m_pic->ir1_w(state); } @@ -982,7 +982,7 @@ READ8_MEMBER( wangpc_state::ppi_pb_r ) data |= m_timer2_irq; // serial interrupt - data |= !(m_epci->rxrdy_r() | m_epci->txemt_r()) << 1; + data |= (m_epci->rxrdy_r() & m_epci->txemt_dschg_r()) << 1; // parallel port interrupt data |= m_centronics_ack << 2; @@ -1321,7 +1321,7 @@ void wangpc_state::wangpc(machine_config &config) m_uart->dr_callback().set(FUNC(wangpc_state::uart_dr_w)); m_uart->tbre_callback().set(FUNC(wangpc_state::uart_tbre_w)); - MC2661(config, m_epci, 0); + SCN2661C(config, m_epci, 5'068'800); m_epci->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd)); m_epci->rxrdy_handler().set(FUNC(wangpc_state::epci_irq_w)); m_epci->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts)); @@ -1347,7 +1347,10 @@ void wangpc_state::wangpc(machine_config &config) m_centronics->set_output_latch(*m_cent_data_out); rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr)); - rs232.rxd_handler().set(m_epci, FUNC(mc2661_device::rx_w)); + rs232.rxd_handler().set(m_epci, FUNC(scn_pci_device::rxd_w)); + rs232.cts_handler().set(m_epci, FUNC(scn_pci_device::cts_w)); + rs232.dsr_handler().set(m_epci, FUNC(scn_pci_device::dsr_w)); + rs232.dcd_handler().set(m_epci, FUNC(scn_pci_device::dcd_w)); WANGPC_KEYBOARD(config, "wangpckb").txd_handler().set(m_uart, FUNC(im6402_device::write_rri)); diff --git a/src/mame/drivers/wicat.cpp b/src/mame/drivers/wicat.cpp index e624caf454d..03965f3fc51 100644 --- a/src/mame/drivers/wicat.cpp +++ b/src/mame/drivers/wicat.cpp @@ -28,8 +28,8 @@ Wicat - various systems. #include "machine/am9517a.h" #include "machine/im6402.h" #include "machine/input_merger.h" -#include "machine/mc2661.h" #include "machine/mm58274c.h" +#include "machine/scn_pci.h" #include "machine/wd_fdc.h" #include "machine/x2212.h" #include "video/i8275.h" @@ -106,14 +106,14 @@ private: required_device m_maincpu; required_device m_rtc; required_device m_via; - required_device_array m_uart; + required_device_array m_uart; required_device m_videocpu; required_device m_videoctrl; required_device m_videoirq; required_device m_crtc; required_device m_videodma; - required_device m_videouart0; - required_device m_videouart1; + required_device m_videouart0; + required_device m_videouart1; required_device m_videouart; required_device m_videosram; required_device m_palette; @@ -160,13 +160,14 @@ void wicat_state::main_mem(address_map &map) map(0x300000, 0xdfffff).rw(FUNC(wicat_state::invalid_r), FUNC(wicat_state::invalid_w)); map(0xeff800, 0xeffbff).ram(); // memory mapping SRAM, used during boot sequence for storing various data (TODO) map(0xeffc00, 0xeffc01).rw(FUNC(wicat_state::memmap_r), FUNC(wicat_state::memmap_w)); - map(0xf00000, 0xf00007).rw(m_uart[0], FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); // UARTs - map(0xf00008, 0xf0000f).rw(m_uart[1], FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); - map(0xf00010, 0xf00017).rw(m_uart[2], FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); - map(0xf00018, 0xf0001f).rw(m_uart[3], FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); - map(0xf00020, 0xf00027).rw(m_uart[4], FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); - map(0xf00028, 0xf0002f).rw(m_uart[5], FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); - map(0xf00030, 0xf00037).rw(m_uart[6], FUNC(mc2661_device::read), FUNC(mc2661_device::write)).umask16(0xff00); + map(0xf00000, 0xf00007).rw(m_uart[0], FUNC(scn2661c_device::read), FUNC(scn2661c_device::write)).umask16(0xff00); // UARTs + map(0xf00008, 0xf0000f).rw(m_uart[1], FUNC(scn2661c_device::read), FUNC(scn2661c_device::write)).umask16(0xff00); + map(0xf00010, 0xf00017).rw(m_uart[2], FUNC(scn2661c_device::read), FUNC(scn2661c_device::write)).umask16(0xff00); + map(0xf00018, 0xf0001f).rw(m_uart[3], FUNC(scn2661c_device::read), FUNC(scn2661c_device::write)).umask16(0xff00); + map(0xf00020, 0xf00027).rw(m_uart[4], FUNC(scn2661c_device::read), FUNC(scn2661c_device::write)).umask16(0xff00); + map(0xf00028, 0xf0002f).rw(m_uart[5], FUNC(scn2661c_device::read), FUNC(scn2661c_device::write)).umask16(0xff00); + map(0xf00030, 0xf00037).rw(m_uart[6], FUNC(scn2661c_device::read), FUNC(scn2661c_device::write)).umask16(0xff00); + map(0xf0003a, 0xf0003b).nopr(); map(0xf00040, 0xf0005f).rw(FUNC(wicat_state::via_r), FUNC(wicat_state::via_w)); map(0xf00060, 0xf0007f).rw(m_rtc, FUNC(mm58274c_device::read), FUNC(mm58274c_device::write)).umask16(0xff00); map(0xf000d0, 0xf000d0).w("ledlatch", FUNC(ls259_device::write_nibble_d3)); @@ -736,37 +737,37 @@ void wicat_state::wicat(machine_config &config) m_rtc->set_day1(1); // monday // internal terminal - MC2661(config, m_uart[0], 5.0688_MHz_XTAL); // connected to terminal board - m_uart[0]->txd_handler().set(m_videouart0, FUNC(mc2661_device::rx_w)); + SCN2661C(config, m_uart[0], 5.0688_MHz_XTAL); // connected to terminal board + m_uart[0]->txd_handler().set(m_videouart0, FUNC(scn2651_device::rxd_w)); m_uart[0]->rxrdy_handler().set_inputline(m_maincpu, M68K_IRQ_2); - m_uart[0]->rts_handler().set(m_videouart0, FUNC(mc2661_device::cts_w)); - m_uart[0]->dtr_handler().set(m_videouart0, FUNC(mc2661_device::dsr_w)); + m_uart[0]->rts_handler().set(m_videouart0, FUNC(scn2651_device::cts_w)); + m_uart[0]->dtr_handler().set(m_videouart0, FUNC(scn2651_device::dsr_w)); // RS232C ports (x5) const char *serial_names[5] = { "serial1", "serial2", "serial3", "serial4", "serial5" }; for (int i = 1; i <= 5; i++) { - MC2661(config, m_uart[i], 5.0688_MHz_XTAL); + SCN2661C(config, m_uart[i], 5.0688_MHz_XTAL); m_uart[i]->txd_handler().set(serial_names[i - 1], FUNC(rs232_port_device::write_txd)); m_uart[i]->rts_handler().set(serial_names[i - 1], FUNC(rs232_port_device::write_rts)); m_uart[i]->dtr_handler().set(serial_names[i - 1], FUNC(rs232_port_device::write_dtr)); - m_uart[i]->rxrdy_handler().set_inputline(m_maincpu, M68K_IRQ_2); - m_uart[i]->txemt_dschg_handler().set_inputline(m_maincpu, M68K_IRQ_2); + //m_uart[i]->rxrdy_handler().set_inputline(m_maincpu, M68K_IRQ_2); + //m_uart[i]->txemt_dschg_handler().set_inputline(m_maincpu, M68K_IRQ_2); } // modem - MC2661(config, m_uart[6], 5.0688_MHz_XTAL); // connected to modem port - m_uart[6]->rxrdy_handler().set_inputline(m_maincpu, M68K_IRQ_2); - m_uart[6]->txemt_dschg_handler().set_inputline(m_maincpu, M68K_IRQ_2); + SCN2661C(config, m_uart[6], 5.0688_MHz_XTAL); // connected to modem port + //m_uart[6]->rxrdy_handler().set_inputline(m_maincpu, M68K_IRQ_2); + //m_uart[6]->txemt_dschg_handler().set_inputline(m_maincpu, M68K_IRQ_2); const char *uart_names[5] = { "uart1", "uart2", "uart3", "uart4", "uart5" }; for (int i = 1; i <= 5; i++) { rs232_port_device &port(RS232_PORT(config, serial_names[i - 1], default_rs232_devices, nullptr)); - port.rxd_handler().set(uart_names[i - 1], FUNC(mc2661_device::rx_w)); - port.dcd_handler().set(uart_names[i - 1], FUNC(mc2661_device::dcd_w)); - port.dsr_handler().set(uart_names[i - 1], FUNC(mc2661_device::dsr_w)); - port.cts_handler().set(uart_names[i - 1], FUNC(mc2661_device::cts_w)); + port.rxd_handler().set(uart_names[i - 1], FUNC(scn2661c_device::rxd_w)); + port.dcd_handler().set(uart_names[i - 1], FUNC(scn2661c_device::dcd_w)); + port.dsr_handler().set(uart_names[i - 1], FUNC(scn2661c_device::dsr_w)); + port.cts_handler().set(uart_names[i - 1], FUNC(scn2661c_device::cts_w)); } ls259_device &ledlatch(LS259(config, "ledlatch")); // U19 on I/O board @@ -810,15 +811,15 @@ void wicat_state::wicat(machine_config &config) INPUT_MERGER_ALL_HIGH(config, "tbreirq").output_handler().set(m_videoirq, FUNC(input_merger_device::in_w<3>)); // terminal (2x INS2651, 1x IM6042 - one of these is for the keyboard, another communicates with the main board, the third is unknown) - MC2661(config, m_videouart0, 5.0688_MHz_XTAL); // the INS2651 looks similar enough to the MC2661... - m_videouart0->txd_handler().set(m_uart[0], FUNC(mc2661_device::rx_w)); + SCN2651(config, m_videouart0, 5.0688_MHz_XTAL); + m_videouart0->txd_handler().set(m_uart[0], FUNC(scn2651_device::rxd_w)); m_videouart0->rxrdy_handler().set(m_videoirq, FUNC(input_merger_device::in_w<0>)); - m_videouart0->rts_handler().set(m_uart[0], FUNC(mc2661_device::cts_w)); - m_videouart0->dtr_handler().set(m_uart[0], FUNC(mc2661_device::dsr_w)); + m_videouart0->rts_handler().set(m_uart[0], FUNC(scn2651_device::cts_w)); + m_videouart0->dtr_handler().set(m_uart[0], FUNC(scn2651_device::dsr_w)); - MC2661(config, m_videouart1, 5.0688_MHz_XTAL); - m_videouart1->set_rxc(19200); - m_videouart1->set_txc(19200); + SCN2651(config, m_videouart1, 5.0688_MHz_XTAL); + //m_videouart1->set_rxc(19200); + //m_videouart1->set_txc(19200); m_videouart1->rxrdy_handler().set(m_videoirq, FUNC(input_merger_device::in_w<4>)); X2210(config, "vsram"); // XD2210 diff --git a/src/mame/drivers/wy100.cpp b/src/mame/drivers/wy100.cpp index 56d963dfa72..792924ee7fb 100644 --- a/src/mame/drivers/wy100.cpp +++ b/src/mame/drivers/wy100.cpp @@ -10,7 +10,6 @@ are protected, which is the only transparent attribute supported. Known emulation bugs: - - Return key often gets corrupted when looped back - Frequent screen glitches when writing to the display - No dimming of protected characters @@ -21,7 +20,7 @@ #include "cpu/mcs48/mcs48.h" #include "machine/bankdev.h" #include "machine/input_merger.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" #include "machine/wy50kb.h" #include "sound/spkrdev.h" #include "video/i8275.h" @@ -64,7 +63,7 @@ private: required_device m_maincpu; required_device m_rambank; required_device_array m_crtc; - required_device m_pci; + required_device m_pci; required_device m_modem; required_device m_printer; @@ -147,8 +146,6 @@ u8 wy100_state::memory_r(offs_t offset) { u8 p2 = m_maincpu->p2_r(); u8 data = BIT(p2, 5) ? m_pci->read(p2 & 3) : m_rambank->read8(offset); - if (BIT(p2, 5)) - logerror("%s: Reading %02X from PCI register %d\n", machine().describe_context(), data, p2 & 3); if (m_bs_enable && !machine().side_effects_disabled()) { u8 chardata = (data & 0xe0) == 0x80 ? data : data & 0x7f; @@ -172,11 +169,7 @@ void wy100_state::memory_w(offs_t offset, u8 data) m_bs_enable = true; if (BIT(p2, 5)) - { - logerror("%s: Writing %02X to PCI register %d\n", machine().describe_context(), data, p2 & 3); - m_pci->write(p2 & 3, data); - } m_rambank->write8(offset, data); } @@ -212,7 +205,8 @@ void wy100_state::wy100(machine_config &config) m_maincpu->p1_out_cb().append("spkrgate", FUNC(input_merger_device::in_w<0>)).bit(7); m_maincpu->p2_out_cb().set(FUNC(wy100_state::p2_w)); m_maincpu->t0_in_cb().set("keyboard", FUNC(wy100_keyboard_device::sense_r)).invert(); - m_maincpu->t1_in_cb().set(m_pci, FUNC(mc2661_device::rxrdy_r)).invert(); + //m_maincpu->t1_in_cb().set(m_pci, FUNC(mc2661_device::rxrdy_r)).invert(); + m_maincpu->t1_in_cb().set(m_pci, FUNC(scn2651_device::rxrdy_r)); WY100_KEYBOARD(config, "keyboard"); @@ -222,7 +216,7 @@ void wy100_state::wy100(machine_config &config) m_rambank->set_addr_width(13); m_rambank->set_stride(0x100); - MC2661(config, m_pci, 10.1376_MHz_XTAL / 2); // INS2651N + SCN2651(config, m_pci, 10.1376_MHz_XTAL / 2); // INS2651N m_pci->rts_handler().set(m_modem, FUNC(rs232_port_device::write_rts)); m_pci->dtr_handler().set(m_modem, FUNC(rs232_port_device::write_dtr)); m_pci->txd_handler().set(FUNC(wy100_state::txd_w)); @@ -250,12 +244,12 @@ void wy100_state::wy100(machine_config &config) spkrgate.output_handler().set("speaker", FUNC(speaker_sound_device::level_w)); RS232_PORT(config, m_modem, default_rs232_devices, "loopback"); - m_modem->dcd_handler().set(m_pci, FUNC(mc2661_device::dcd_w)); - m_modem->cts_handler().set(m_pci, FUNC(mc2661_device::cts_w)); - m_modem->rxd_handler().set(m_pci, FUNC(mc2661_device::rx_w)); + m_modem->dcd_handler().set(m_pci, FUNC(scn2651_device::dcd_w)); + m_modem->cts_handler().set(m_pci, FUNC(scn2651_device::cts_w)); + m_modem->rxd_handler().set(m_pci, FUNC(scn2651_device::rxd_w)); RS232_PORT(config, m_printer, default_rs232_devices, nullptr); - m_printer->dsr_handler().set(m_pci, FUNC(mc2661_device::dsr_w)); + m_printer->dsr_handler().set(m_pci, FUNC(scn2651_device::dsr_w)); } diff --git a/src/mame/drivers/wy50.cpp b/src/mame/drivers/wy50.cpp index 54be4930a00..a8d01829a15 100644 --- a/src/mame/drivers/wy50.cpp +++ b/src/mame/drivers/wy50.cpp @@ -28,7 +28,7 @@ #include "bus/rs232/rs232.h" #include "cpu/mcs51/mcs51.h" #include "machine/er1400.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" #include "machine/wy50kb.h" #include "video/scn2674.h" #include "screen.h" @@ -77,7 +77,7 @@ private: required_device m_keyboard; required_device m_earom; required_device m_pvtc; - required_device m_sio; + required_device m_sio; required_region_ptr m_chargen; required_shared_ptr_array m_videoram; @@ -306,16 +306,16 @@ void wy50_state::wy50(machine_config &config) m_pvtc->mbc_callback().set(FUNC(wy50_state::mbc_attr_clock_w)); m_pvtc->mbc_char_callback().set(FUNC(wy50_state::pvtc_videoram_r)); - MC2661(config, m_sio, 4.9152_MHz_XTAL); // SCN2661B + SCN2661B(config, m_sio, 4.9152_MHz_XTAL); m_sio->rxrdy_handler().set_inputline(m_maincpu, MCS51_INT1_LINE); m_sio->txd_handler().set("modem", FUNC(rs232_port_device::write_txd)); m_sio->dtr_handler().set("modem", FUNC(rs232_port_device::write_dtr)); m_sio->rts_handler().set("modem", FUNC(rs232_port_device::write_rts)); rs232_port_device &modem(RS232_PORT(config, "modem", default_rs232_devices, "loopback")); - modem.rxd_handler().set(m_sio, FUNC(mc2661_device::rx_w)); - modem.cts_handler().set(m_sio, FUNC(mc2661_device::cts_w)); - modem.dcd_handler().set(m_sio, FUNC(mc2661_device::dcd_w)); + modem.rxd_handler().set(m_sio, FUNC(scn2661b_device::rxd_w)); + modem.cts_handler().set(m_sio, FUNC(scn2661b_device::cts_w)); + modem.dcd_handler().set(m_sio, FUNC(scn2661b_device::dcd_w)); } ROM_START(wy50) diff --git a/src/mame/drivers/wy60.cpp b/src/mame/drivers/wy60.cpp index ef05208733c..f675e522ace 100644 --- a/src/mame/drivers/wy60.cpp +++ b/src/mame/drivers/wy60.cpp @@ -9,7 +9,7 @@ #include "emu.h" #include "cpu/mcs51/mcs51.h" //#include "machine/i2cmem.h" -#include "machine/mc2661.h" +#include "machine/scn_pci.h" #include "video/scn2674.h" #include "screen.h" @@ -42,7 +42,7 @@ private: void row_buffer_map(address_map &map); required_device m_pvtc; - required_device m_sio; + required_device m_sio; }; @@ -121,7 +121,7 @@ void wy60_state::wy60(machine_config &config) //m_pvtc->intr_callback().set_inputline("maincpu", MCS51_T0_LINE); //m_pvtc->breq_callback().set_inputline("maincpu", MCS51_INT0_LINE); - MC2661(config, m_sio, 4.9152_MHz_XTAL); // SCN2661B + SCN2661B(config, m_sio, 4.9152_MHz_XTAL); //m_sio->rxrdy_handler().set_inputline("maincpu", MCS51_INT1_LINE); } diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp index 1236ef20407..7460d316ca9 100644 --- a/src/mame/drivers/z100.cpp +++ b/src/mame/drivers/z100.cpp @@ -152,10 +152,10 @@ ZDIPSW EQU 0FFH ; Configuration dip switches #include "machine/74123.h" #include "machine/6821pia.h" #include "machine/input_merger.h" -#include "machine/mc2661.h" #include "machine/pit8253.h" #include "machine/pic8259.h" #include "machine/rescap.h" +#include "machine/scn_pci.h" #include "machine/wd_fdc.h" #include "sound/beep.h" #include "video/mc6845.h" @@ -234,7 +234,7 @@ private: required_device m_pics; required_device m_fdc; required_device_array m_floppies; - required_device_array m_epci; + required_device_array m_epci; required_device m_keyclick; required_device m_keybeep; required_device m_beeper; @@ -489,8 +489,8 @@ void z100_state::z100_io(address_map &map) // map(0xde, 0xde) light pen map(0xe0, 0xe3).rw(m_pia[1], FUNC(pia6821_device::read), FUNC(pia6821_device::write)); //main board map(0xe4, 0xe7).rw("pit", FUNC(pit8253_device::read), FUNC(pit8253_device::write)); - map(0xe8, 0xeb).rw(m_epci[0], FUNC(mc2661_device::read), FUNC(mc2661_device::write)); - map(0xec, 0xef).rw(m_epci[1], FUNC(mc2661_device::read), FUNC(mc2661_device::write)); + map(0xe8, 0xeb).rw(m_epci[0], FUNC(scn2661b_device::read), FUNC(scn2661b_device::write)); + map(0xec, 0xef).rw(m_epci[1], FUNC(scn2661b_device::read), FUNC(scn2661b_device::write)); map(0xf0, 0xf1).rw(m_pics, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); map(0xf2, 0xf3).rw(m_picm, FUNC(pic8259_device::read), FUNC(pic8259_device::write)); map(0xf4, 0xf5).rw("kbdc", FUNC(i8041a_device::upi41_master_r), FUNC(i8041a_device::upi41_master_w)); @@ -855,11 +855,11 @@ void z100_state::z100(machine_config &config) FLOPPY_CONNECTOR(config, m_floppies[2], z100_floppies, nullptr, floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, m_floppies[3], z100_floppies, nullptr, floppy_image_device::default_floppy_formats); - MC2661(config, m_epci[0], 4.9152_MHz_XTAL); // First 2661-2 serial port (printer) + SCN2661B(config, m_epci[0], 4.9152_MHz_XTAL); // First 2661-2 serial port (printer) m_epci[0]->txrdy_handler().set("epci0int", FUNC(input_merger_device::in_w<0>)); m_epci[0]->rxrdy_handler().set("epci0int", FUNC(input_merger_device::in_w<1>)); - MC2661(config, m_epci[1], 4.9152_MHz_XTAL); // Second 2661-2 serial port (modem) + SCN2661B(config, m_epci[1], 4.9152_MHz_XTAL); // Second 2661-2 serial port (modem) m_epci[1]->txrdy_handler().set("epci1int", FUNC(input_merger_device::in_w<0>)); m_epci[1]->rxrdy_handler().set("epci1int", FUNC(input_merger_device::in_w<1>)); diff --git a/src/mame/includes/micro3d.h b/src/mame/includes/micro3d.h index 20e802c9d1c..0310612a5d2 100644 --- a/src/mame/includes/micro3d.h +++ b/src/mame/includes/micro3d.h @@ -14,8 +14,8 @@ #include "cpu/mcs51/mcs51.h" #include "sound/upd7759.h" #include "machine/adc0844.h" -#include "machine/mc2661.h" #include "machine/mc68681.h" +#include "machine/scn_pci.h" #include "emupal.h" @@ -208,7 +208,7 @@ private: void soundmem_prg(address_map &map); void vgbmem(address_map &map); - required_device m_vgb_uart; + required_device m_vgb_uart; }; #endif // MAME_INCLUDES_MICRO3D_H -- cgit v1.2.3