diff options
Diffstat (limited to 'src/devices/bus/ss50/mps.cpp')
-rw-r--r-- | src/devices/bus/ss50/mps.cpp | 47 |
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") |