summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/rs232
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2016-07-22 17:02:22 +1000
committer Vas Crabb <vas@vastheman.com>2016-07-22 17:02:22 +1000
commit269e3f997647fecbecca3ef17f74841be2f27879 (patch)
treeb76eb0ae306990387a57af1564604e5d8110732d /src/devices/bus/rs232
parentc07ea6ab99711dc172d3da18defcda76d6f1d604 (diff)
Add an emulated Sun keyboard to RS232 adaptor [Vas Crabb]
Diffstat (limited to 'src/devices/bus/rs232')
-rw-r--r--src/devices/bus/rs232/rs232.cpp4
-rw-r--r--src/devices/bus/rs232/sun_kbd.cpp55
-rw-r--r--src/devices/bus/rs232/sun_kbd.h33
3 files changed, 91 insertions, 1 deletions
diff --git a/src/devices/bus/rs232/rs232.cpp b/src/devices/bus/rs232/rs232.cpp
index 407df36207d..82712343439 100644
--- a/src/devices/bus/rs232/rs232.cpp
+++ b/src/devices/bus/rs232/rs232.cpp
@@ -112,8 +112,9 @@ device_rs232_port_interface::~device_rs232_port_interface()
#include "loopback.h"
#include "null_modem.h"
#include "printer.h"
-#include "terminal.h"
#include "pty.h"
+#include "sun_kbd.h"
+#include "terminal.h"
SLOT_INTERFACE_START( default_rs232_devices )
SLOT_INTERFACE("keyboard", SERIAL_KEYBOARD)
@@ -122,4 +123,5 @@ SLOT_INTERFACE_START( default_rs232_devices )
SLOT_INTERFACE("printer", SERIAL_PRINTER)
SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
SLOT_INTERFACE("pty", PSEUDO_TERMINAL)
+ SLOT_INTERFACE("sunkbd", SUN_KBD_ADAPTOR)
SLOT_INTERFACE_END
diff --git a/src/devices/bus/rs232/sun_kbd.cpp b/src/devices/bus/rs232/sun_kbd.cpp
new file mode 100644
index 00000000000..c0fa833897c
--- /dev/null
+++ b/src/devices/bus/rs232/sun_kbd.cpp
@@ -0,0 +1,55 @@
+#include "sun_kbd.h"
+
+
+device_type const SUN_KBD_ADAPTOR = &device_creator<sun_keyboard_adaptor_device>;
+
+
+namespace {
+MACHINE_CONFIG_FRAGMENT(sun_keyboard_adaptor)
+ MCFG_SUNKBD_PORT_ADD("keyboard", default_sun_keyboard_devices, nullptr)
+ MCFG_SUNKBD_RXD_HANDLER(WRITELINE(sun_keyboard_adaptor_device, output_rxd))
+MACHINE_CONFIG_END
+} // anonymous namespace
+
+
+sun_keyboard_adaptor_device::sun_keyboard_adaptor_device(
+ machine_config const &mconfig,
+ char const *tag,
+ device_t *owner,
+ UINT32 clock)
+ : device_t(mconfig, SUN_KBD_ADAPTOR, "Sun Keyboard Adaptor", tag, owner, clock, "sunkbd_adaptor", __FILE__)
+ , device_rs232_port_interface(mconfig, *this)
+ , m_keyboard_port(*this, "keyboard")
+{
+}
+
+
+sun_keyboard_adaptor_device::~sun_keyboard_adaptor_device()
+{
+}
+
+
+machine_config_constructor sun_keyboard_adaptor_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME(sun_keyboard_adaptor);
+}
+
+
+WRITE_LINE_MEMBER( sun_keyboard_adaptor_device::input_txd )
+{
+ m_keyboard_port->write_txd(state);
+}
+
+
+void sun_keyboard_adaptor_device::device_start()
+{
+}
+
+
+void sun_keyboard_adaptor_device::device_reset()
+{
+ output_rxd(1);
+ output_dcd(0);
+ output_dsr(0);
+ output_cts(0);
+}
diff --git a/src/devices/bus/rs232/sun_kbd.h b/src/devices/bus/rs232/sun_kbd.h
new file mode 100644
index 00000000000..3033b33ce2f
--- /dev/null
+++ b/src/devices/bus/rs232/sun_kbd.h
@@ -0,0 +1,33 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+#ifndef MAME_DEVICES_RS232_SUN_KBD_H
+#define MAME_DEVICES_RS232_SUN_KBD_H
+
+#pragma once
+
+#include "rs232.h"
+#include "bus/sunkbd/sunkbd.h"
+
+
+extern device_type const SUN_KBD_ADAPTOR;
+
+
+class sun_keyboard_adaptor_device : public device_t, public device_rs232_port_interface
+{
+public:
+ sun_keyboard_adaptor_device(machine_config const &mconfig, char const *tag, device_t *owner, UINT32 clock);
+ virtual ~sun_keyboard_adaptor_device() override;
+
+ virtual machine_config_constructor device_mconfig_additions() const override;
+
+ virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) override;
+
+protected:
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+private:
+ required_device<sun_keyboard_port_device> m_keyboard_port;
+};
+
+#endif // MAME_DEVICES_RS232_SUN_KBD_H