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
This commit is contained in:
AJR 2020-03-06 14:40:20 -05:00
parent 415128cae4
commit 1400e65cde
23 changed files with 266 additions and 274 deletions

View File

@ -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 &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")
{
}

View File

@ -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"

View File

@ -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::pci_mconfig(machine_config &config, bool epci, const char *default_option)
{
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));
}
void dmv_k801_device::device_add_mconfig(machine_config &config)
{
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));
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));
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);
}
}

View File

@ -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);
};

View File

@ -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));
}

View File

@ -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<cpu_device> m_maincpu;
required_device_array<mc2661_device, 2> m_usart;
required_device_array<scn2651_device, 2> m_usart;
required_device<screen_device> m_screen;
optional_ioport_array<16> m_key_row;
required_region_ptr<u8> 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));
}
/**************************************************************************************************************

View File

@ -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);

View File

@ -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<cpu_device> m_maincpu;
required_device_array<mc2661_device, 4> m_usart;
required_device_array<scn_pci_device, 4> m_usart;
required_shared_ptr<uint16_t> 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 */

View File

@ -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));

View File

@ -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();

View File

@ -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));

View File

@ -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));

View File

@ -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<speaker_sound_device> m_speaker;
required_device<wd2793_device> m_fdc;
required_device<mc146818_device> m_rtc;
required_device_array<mc2661_device, 3> m_usart;
required_device_array<scn2661b_device, 3> m_usart;
required_device<scsi_port_device> m_scsi;
required_device<output_latch_device> m_scsi_data_out;
required_device<input_buffer_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");

View File

@ -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)

View File

@ -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<ls259_device> m_outreg;
required_device<screen_device> m_screen;
required_device<speaker_sound_device> m_bell;
required_device<mc2661_device> m_pci;
required_device<scn2651_device> m_pci;
required_device<rs232_port_device> m_serialio;
required_device<rs232_port_device> m_peripheral;
required_shared_ptr<u8> m_scratchpad;
@ -93,6 +93,9 @@ void teleray10_state::machine_start()
m_topr = 0;
m_timer_expired = false;
// HACK: force continuous CTS
subdevice<input_merger_device>("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));
}

View File

@ -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<cpu_device> m_maincpu;
required_device_array<mc2661_device, 4> m_usart;
required_device_array<scn2651_device, 4> m_usart;
required_shared_ptr<uint16_t> 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);
}

View File

@ -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<i8255_device> m_ppi;
required_device<pit8253_device> m_pit;
required_device<im6402_device> m_uart;
required_device<mc2661_device> m_epci;
required_device<scn_pci_device> m_epci;
required_device<upd765a_device> m_fdc;
required_device<ram_device> m_ram;
required_device<floppy_image_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));

View File

@ -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<m68000_device> m_maincpu;
required_device<mm58274c_device> m_rtc;
required_device<via6522_device> m_via;
required_device_array<mc2661_device, 7> m_uart;
required_device_array<scn2661c_device, 7> m_uart;
required_device<cpu_device> m_videocpu;
required_device<ls259_device> m_videoctrl;
required_device<input_merger_device> m_videoirq;
required_device<i8275_device> m_crtc;
required_device<am9517a_device> m_videodma;
required_device<mc2661_device> m_videouart0;
required_device<mc2661_device> m_videouart1;
required_device<scn2651_device> m_videouart0;
required_device<scn2651_device> m_videouart1;
required_device<im6402_device> m_videouart;
required_device<x2210_device> m_videosram;
required_device<palette_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

View File

@ -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<mcs48_cpu_device> m_maincpu;
required_device<address_map_bank_device> m_rambank;
required_device_array<i8276_device, 2> m_crtc;
required_device<mc2661_device> m_pci;
required_device<scn2651_device> m_pci;
required_device<rs232_port_device> m_modem;
required_device<rs232_port_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));
}

View File

@ -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<wy50_keyboard_device> m_keyboard;
required_device<er1400_device> m_earom;
required_device<scn2672_device> m_pvtc;
required_device<mc2661_device> m_sio;
required_device<scn2661b_device> m_sio;
required_region_ptr<u8> m_chargen;
required_shared_ptr_array<u8, 2> 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)

View File

@ -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<scn2672_device> m_pvtc;
required_device<mc2661_device> m_sio;
required_device<scn2661b_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);
}

View File

@ -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<pic8259_device> m_pics;
required_device<fd1797_device> m_fdc;
required_device_array<floppy_connector, 4> m_floppies;
required_device_array<mc2661_device, 2> m_epci;
required_device_array<scn2661b_device, 2> m_epci;
required_device<ttl74123_device> m_keyclick;
required_device<ttl74123_device> m_keybeep;
required_device<beep_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>));

View File

@ -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<mc2661_device> m_vgb_uart;
required_device<scn2651_device> m_vgb_uart;
};
#endif // MAME_INCLUDES_MICRO3D_H