summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices
diff options
context:
space:
mode:
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
commit1400e65cde34c78e2945eb8c44ba0ccfa331e50a (patch)
tree645bf24e55c0867cdfbae990bab2eb8c6cd07806 /src/devices
parent415128cae43090e4a5f7cae21eec2f049301886e (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.cpp22
-rw-r--r--src/devices/bus/adamnet/spi.h2
-rw-r--r--src/devices/bus/dmv/k801.cpp61
-rw-r--r--src/devices/bus/dmv/k801.h8
-rw-r--r--src/devices/bus/s100/am310.cpp60
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 &centronics(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));
}