summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ss50/mps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ss50/mps.cpp')
-rw-r--r--src/devices/bus/ss50/mps.cpp47
1 files changed, 33 insertions, 14 deletions
diff --git a/src/devices/bus/ss50/mps.cpp b/src/devices/bus/ss50/mps.cpp
index 15d7d160e31..30e2a534615 100644
--- a/src/devices/bus/ss50/mps.cpp
+++ b/src/devices/bus/ss50/mps.cpp
@@ -10,6 +10,7 @@
#include "mps.h"
#include "bus/rs232/rs232.h"
+#include "bus/rs232/swtpc8212.h"
#include "machine/6850acia.h"
//**************************************************************************
@@ -23,11 +24,12 @@ class ss50_mps_device : public device_t, public ss50_card_interface
public:
// construction/destruction
ss50_mps_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
- : device_t(mconfig, SS50_MPS, tag, owner, clock),
- ss50_card_interface(mconfig, *this),
- m_acia(*this, "acia"),
- m_irq_jumper(*this, "IRQ"),
- m_rate_jumper(*this, "BAUD")
+ : device_t(mconfig, SS50_MPS, tag, owner, clock)
+ , ss50_card_interface(mconfig, *this)
+ , m_acia(*this, "acia")
+ , m_irq_jumper(*this, "IRQ")
+ , m_rate_jumper(*this, "BAUD")
+ , m_cts_route(*this, "CTS_ROUTE")
{
}
@@ -48,26 +50,34 @@ protected:
private:
DECLARE_WRITE_LINE_MEMBER(acia_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(route_cts_r);
required_device<acia6850_device> m_acia;
required_ioport m_irq_jumper;
required_ioport m_rate_jumper;
+ required_ioport m_cts_route;
};
static INPUT_PORTS_START( mps )
PORT_START("IRQ")
- PORT_DIPNAME(1, 0, "IRQ")
- PORT_DIPSETTING(1, DEF_STR(Off))
- PORT_DIPSETTING(0, DEF_STR(On))
+ PORT_CONFNAME(1, 0, "IRQ")
+ PORT_CONFSETTING(1, DEF_STR(Off))
+ PORT_CONFSETTING(0, DEF_STR(On))
PORT_START("BAUD")
- PORT_DIPNAME(0x1f, 0x1d, "Baud Rate")
- PORT_DIPSETTING(0x1e, "110")
- PORT_DIPSETTING(0x1d, "150 / 9600")
- PORT_DIPSETTING(0x1b, "300")
- PORT_DIPSETTING(0x17, "600")
- PORT_DIPSETTING(0x0f, "1200")
+ PORT_CONFNAME(0x1f, 0x1d, "Baud Rate")
+ PORT_CONFSETTING(0x1e, "110")
+ PORT_CONFSETTING(0x1d, "150 / 9600")
+ PORT_CONFSETTING(0x1b, "300")
+ PORT_CONFSETTING(0x17, "600")
+ PORT_CONFSETTING(0x0f, "1200")
+
+ PORT_START("CTS_ROUTE")
+ PORT_CONFNAME(1, 0, "CTS route")
+ PORT_CONFSETTING(0, "Wired low (standard)")
+ PORT_CONFSETTING(1, "Connected through (modified)")
+
INPUT_PORTS_END
@@ -105,6 +115,8 @@ void ss50_mps_device::device_add_mconfig(machine_config &config)
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd));
+ rs232.cts_handler().set(FUNC(ss50_mps_device::route_cts_r));
+ rs232.option_add("swtpc8212", SERIAL_TERMINAL_SWTPC8212);
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));
}
@@ -178,6 +190,13 @@ WRITE_LINE_MEMBER(ss50_mps_device::acia_irq_w)
write_irq(state);
}
+WRITE_LINE_MEMBER(ss50_mps_device::route_cts_r)
+{
+ if (m_cts_route->read())
+ {
+ m_acia->write_cts(state);
+ }
+}
// device type definition
DEFINE_DEVICE_TYPE_PRIVATE(SS50_MPS, ss50_card_interface, ss50_mps_device, "ss50_mps", "MP-S Serial Interface")