diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2020-03-06 14:40:20 -0500 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2020-03-06 14:45:53 -0500 |
commit | 1400e65cde34c78e2945eb8c44ba0ccfa331e50a (patch) | |
tree | 645bf24e55c0867cdfbae990bab2eb8c6cd07806 /src/devices | |
parent | 415128cae43090e4a5f7cae21eec2f049301886e (diff) |
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
Diffstat (limited to 'src/devices')
-rw-r--r-- | src/devices/bus/adamnet/spi.cpp | 22 | ||||
-rw-r--r-- | src/devices/bus/adamnet/spi.h | 2 | ||||
-rw-r--r-- | src/devices/bus/dmv/k801.cpp | 61 | ||||
-rw-r--r-- | src/devices/bus/dmv/k801.h | 8 | ||||
-rw-r--r-- | src/devices/bus/s100/am310.cpp | 60 |
5 files changed, 75 insertions, 78 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 @@ -12,16 +12,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<mc2661_device> m_epci; + void pci_mconfig(machine_config &config, bool epci, const char *default_option); + + required_device<scn_pci_device> m_pci; required_device<rs232_port_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<generic_latch_8_device> m_dilatch; required_device<generic_latch_8_device> m_statlatch; required_device<am9517a_device> m_dma; - required_device_array<mc2661_device, 4> m_pci; + required_device_array<scn_pci_device, 4> 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)); } |