diff options
author | 2016-07-22 17:02:22 +1000 | |
---|---|---|
committer | 2016-07-22 17:02:22 +1000 | |
commit | 269e3f997647fecbecca3ef17f74841be2f27879 (patch) | |
tree | b76eb0ae306990387a57af1564604e5d8110732d /src/devices/bus/rs232 | |
parent | c07ea6ab99711dc172d3da18defcda76d6f1d604 (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.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/rs232/sun_kbd.cpp | 55 | ||||
-rw-r--r-- | src/devices/bus/rs232/sun_kbd.h | 33 |
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 |