summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ss50/mps2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ss50/mps2.cpp')
-rw-r--r--src/devices/bus/ss50/mps2.cpp82
1 files changed, 42 insertions, 40 deletions
diff --git a/src/devices/bus/ss50/mps2.cpp b/src/devices/bus/ss50/mps2.cpp
index 7211aea1e3e..ce49fa911fb 100644
--- a/src/devices/bus/ss50/mps2.cpp
+++ b/src/devices/bus/ss50/mps2.cpp
@@ -28,28 +28,28 @@ public:
: device_t(mconfig, SS50_MPS2, tag, owner, clock)
, ss50_card_interface(mconfig, *this)
, m_acia_upper(*this, "acia_upper")
- , m_tx_rate_upper_jumper(*this, "tx_baud_upper")
- , m_rx_rate_upper_jumper(*this, "rx_baud_upper")
+ , m_tx_rate_upper_jumper(*this, "TX_BAUD_UPPER")
+ , m_rx_rate_upper_jumper(*this, "RX_BAUD_UPPER")
, m_acia_lower(*this, "acia_lower")
- , m_tx_rate_lower_jumper(*this, "tx_baud_lower")
- , m_rx_rate_lower_jumper(*this, "rx_baud_lower")
+ , m_tx_rate_lower_jumper(*this, "TX_BAUD_LOWER")
+ , m_rx_rate_lower_jumper(*this, "RX_BAUD_LOWER")
{
}
protected:
// device-specific overrides
- virtual ioport_constructor device_input_ports() const override;
- virtual void device_add_mconfig(machine_config &config) override;
+ virtual ioport_constructor device_input_ports() const override ATTR_COLD;
+ virtual void device_add_mconfig(machine_config &config) override ATTR_COLD;
virtual void device_start() override { }
// interface-specific overrides
virtual u8 register_read(offs_t offset) override;
virtual void register_write(offs_t offset, u8 data) override;
- virtual DECLARE_WRITE_LINE_MEMBER(f110_w) override;
- virtual DECLARE_WRITE_LINE_MEMBER(f150_9600_w) override;
- virtual DECLARE_WRITE_LINE_MEMBER(f300_w) override;
- virtual DECLARE_WRITE_LINE_MEMBER(f600_4800_w) override;
- virtual DECLARE_WRITE_LINE_MEMBER(f600_1200_w) override;
+ virtual void f110_w(int state) override;
+ virtual void f150_9600_w(int state) override;
+ virtual void f300_w(int state) override;
+ virtual void f600_4800_w(int state) override;
+ virtual void f600_1200_w(int state) override;
private:
required_device<acia6850_device> m_acia_upper;
@@ -62,37 +62,37 @@ private:
static INPUT_PORTS_START( mps2 )
- PORT_START("tx_baud_upper")
+ PORT_START("TX_BAUD_UPPER")
PORT_DIPNAME(0x1f, 0x1d, "Upper TX Baud Rate")
- PORT_DIPSETTING(0x1d, "9600 / 38400")
- PORT_DIPSETTING(0x17, "4800 / 19200")
- PORT_DIPSETTING(0x0f, "1200 / 4800")
- PORT_DIPSETTING(0x1b, "300 / 1200")
PORT_DIPSETTING(0x1e, "110 / 440")
+ PORT_DIPSETTING(0x1b, "300 / 1200")
+ PORT_DIPSETTING(0x0f, "1200 / 4800")
+ PORT_DIPSETTING(0x17, "4800 / 19200")
+ PORT_DIPSETTING(0x1d, "9600 / 38400")
- PORT_START("rx_baud_upper")
+ PORT_START("RX_BAUD_UPPER")
PORT_DIPNAME(0x1f, 0x1d, "Upper RX Baud Rate")
- PORT_DIPSETTING(0x1d, "9600 / 38400")
- PORT_DIPSETTING(0x17, "4800 / 19200")
- PORT_DIPSETTING(0x0f, "1200 / 4800")
- PORT_DIPSETTING(0x1b, "300 / 1200")
PORT_DIPSETTING(0x1e, "110 / 440")
+ PORT_DIPSETTING(0x1b, "300 / 1200")
+ PORT_DIPSETTING(0x0f, "1200 / 4800")
+ PORT_DIPSETTING(0x17, "4800 / 19200")
+ PORT_DIPSETTING(0x1d, "9600 / 38400")
- PORT_START("tx_baud_lower")
+ PORT_START("TX_BAUD_LOWER")
PORT_DIPNAME(0x1f, 0x1d, "Lower TX Baud Rate")
- PORT_DIPSETTING(0x1d, "9600 / 38400")
- PORT_DIPSETTING(0x17, "4800 / 19200")
- PORT_DIPSETTING(0x0f, "1200 / 4800")
- PORT_DIPSETTING(0x1b, "300 / 1200")
PORT_DIPSETTING(0x1e, "110 / 440")
+ PORT_DIPSETTING(0x1b, "300 / 1200")
+ PORT_DIPSETTING(0x0f, "1200 / 4800")
+ PORT_DIPSETTING(0x17, "4800 / 19200")
+ PORT_DIPSETTING(0x1d, "9600 / 38400")
- PORT_START("rx_baud_lower")
+ PORT_START("RX_BAUD_LOWER")
PORT_DIPNAME(0x1f, 0x1d, "Lower RX Baud Rate")
- PORT_DIPSETTING(0x1d, "9600 / 38400")
- PORT_DIPSETTING(0x17, "4800 / 19200")
- PORT_DIPSETTING(0x0f, "1200 / 4800")
- PORT_DIPSETTING(0x1b, "300 / 1200")
PORT_DIPSETTING(0x1e, "110 / 440")
+ PORT_DIPSETTING(0x1b, "300 / 1200")
+ PORT_DIPSETTING(0x0f, "1200 / 4800")
+ PORT_DIPSETTING(0x17, "4800 / 19200")
+ PORT_DIPSETTING(0x1d, "9600 / 38400")
INPUT_PORTS_END
@@ -110,7 +110,6 @@ ioport_constructor ss50_mps2_device::device_input_ports() const
static DEVICE_INPUT_DEFAULTS_START( terminal_upper )
DEVICE_INPUT_DEFAULTS("RS232_RXBAUD", 0xff, RS232_BAUD_9600)
DEVICE_INPUT_DEFAULTS("RS232_TXBAUD", 0xff, RS232_BAUD_9600)
- DEVICE_INPUT_DEFAULTS("RS232_STARTBITS", 0xff, RS232_STARTBITS_1)
DEVICE_INPUT_DEFAULTS("RS232_DATABITS", 0xff, RS232_DATABITS_8)
DEVICE_INPUT_DEFAULTS("RS232_PARITY", 0xff, RS232_PARITY_NONE)
DEVICE_INPUT_DEFAULTS("RS232_STOPBITS", 0xff, RS232_STOPBITS_1)
@@ -119,7 +118,6 @@ DEVICE_INPUT_DEFAULTS_END
static DEVICE_INPUT_DEFAULTS_START( terminal_lower )
DEVICE_INPUT_DEFAULTS("RS232_RXBAUD", 0xff, RS232_BAUD_9600)
DEVICE_INPUT_DEFAULTS("RS232_TXBAUD", 0xff, RS232_BAUD_9600)
- DEVICE_INPUT_DEFAULTS("RS232_STARTBITS", 0xff, RS232_STARTBITS_1)
DEVICE_INPUT_DEFAULTS("RS232_DATABITS", 0xff, RS232_DATABITS_8)
DEVICE_INPUT_DEFAULTS("RS232_PARITY", 0xff, RS232_PARITY_NONE)
DEVICE_INPUT_DEFAULTS("RS232_STOPBITS", 0xff, RS232_STOPBITS_1)
@@ -134,20 +132,24 @@ void ss50_mps2_device::device_add_mconfig(machine_config &config)
{
ACIA6850(config, m_acia_upper, 0);
m_acia_upper->txd_handler().set("rs232_upper", FUNC(rs232_port_device::write_txd));
- //m_acia_upper->rts_handler().set(FUNC(ss50_mps2_device::reader_control_w));
+ m_acia_upper->rts_handler().set("rs232_upper", FUNC(rs232_port_device::write_rts));
m_acia_upper->irq_handler().set("irq", FUNC(input_merger_device::in_w<0>));
rs232_port_device &rs232_upper(RS232_PORT(config, "rs232_upper", default_rs232_devices, "terminal"));
rs232_upper.rxd_handler().set(m_acia_upper, FUNC(acia6850_device::write_rxd));
+ rs232_upper.cts_handler().set(m_acia_upper, FUNC(acia6850_device::write_cts));
+ rs232_upper.dcd_handler().set(m_acia_upper, FUNC(acia6850_device::write_dcd));
rs232_upper.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal_upper));
ACIA6850(config, m_acia_lower, 0);
m_acia_lower->txd_handler().set("rs232_lower", FUNC(rs232_port_device::write_txd));
- //m_acia_lower->rts_handler().set(FUNC(ss50_mps2_device::reader_control_w));
+ m_acia_lower->rts_handler().set("rs232_lower", FUNC(rs232_port_device::write_rts));
m_acia_lower->irq_handler().set("irq", FUNC(input_merger_device::in_w<1>));
rs232_port_device &rs232_lower(RS232_PORT(config, "rs232_lower", default_rs232_devices, "terminal"));
rs232_lower.rxd_handler().set(m_acia_lower, FUNC(acia6850_device::write_rxd));
+ rs232_lower.cts_handler().set(m_acia_lower, FUNC(acia6850_device::write_cts));
+ rs232_lower.dcd_handler().set(m_acia_lower, FUNC(acia6850_device::write_dcd));
rs232_lower.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal_lower));
INPUT_MERGER_ANY_HIGH(config, "irq").output_handler().set(FUNC(ss50_mps2_device::write_irq));
@@ -193,7 +195,7 @@ void ss50_mps2_device::register_write(offs_t offset, u8 data)
m_acia_lower->write((offset - 4) & 1, data);
}
-WRITE_LINE_MEMBER(ss50_mps2_device::f110_w)
+void ss50_mps2_device::f110_w(int state)
{
if (!BIT(m_tx_rate_upper_jumper->read(), 0))
m_acia_upper->write_txc(state);
@@ -205,7 +207,7 @@ WRITE_LINE_MEMBER(ss50_mps2_device::f110_w)
m_acia_lower->write_rxc(state);
}
-WRITE_LINE_MEMBER(ss50_mps2_device::f150_9600_w)
+void ss50_mps2_device::f150_9600_w(int state)
{
if (!BIT(m_tx_rate_upper_jumper->read(), 1))
m_acia_upper->write_txc(state);
@@ -217,7 +219,7 @@ WRITE_LINE_MEMBER(ss50_mps2_device::f150_9600_w)
m_acia_lower->write_rxc(state);
}
-WRITE_LINE_MEMBER(ss50_mps2_device::f300_w)
+void ss50_mps2_device::f300_w(int state)
{
if (!BIT(m_tx_rate_upper_jumper->read(), 2))
m_acia_upper->write_txc(state);
@@ -229,7 +231,7 @@ WRITE_LINE_MEMBER(ss50_mps2_device::f300_w)
m_acia_lower->write_rxc(state);
}
-WRITE_LINE_MEMBER(ss50_mps2_device::f600_4800_w)
+void ss50_mps2_device::f600_4800_w(int state)
{
if (!BIT(m_tx_rate_upper_jumper->read(), 3))
m_acia_upper->write_txc(state);
@@ -241,7 +243,7 @@ WRITE_LINE_MEMBER(ss50_mps2_device::f600_4800_w)
m_acia_lower->write_rxc(state);
}
-WRITE_LINE_MEMBER(ss50_mps2_device::f600_1200_w)
+void ss50_mps2_device::f600_1200_w(int state)
{
if (!BIT(m_tx_rate_upper_jumper->read(), 4))
m_acia_upper->write_txc(state);