summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/keytronic/keytronic.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/keytronic/keytronic.cpp')
-rw-r--r--src/devices/bus/keytronic/keytronic.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/devices/bus/keytronic/keytronic.cpp b/src/devices/bus/keytronic/keytronic.cpp
new file mode 100644
index 00000000000..aa80a69b8f2
--- /dev/null
+++ b/src/devices/bus/keytronic/keytronic.cpp
@@ -0,0 +1,78 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/***************************************************************************
+
+ Generic Keytronic serial keyboard connector
+
+ Although Key Tronic Corporation produced many keyboards with varied and
+ incompatible OEM interfaces, their most common interface uses
+ full-duplex TTL-level (possibly inverted) serial communications at
+ 300 baud, with 8 data bits and no parity. These keyboards normally
+ include buzzers to generate keyclicks when enabled and beeps when
+ requested, and often feature programmable LEDs as well.
+
+ Some of these keyboards send ASCII codes, while others send matrix scan
+ codes to be decoded by the host. Systems that support multiple
+ non-ASCII keyboard types can distinguish these by the ID bytes they
+ send back in response to the 0x10 command.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "bus/keytronic/keytronic.h"
+
+
+//**************************************************************************
+// KEYBOARD CONNECTOR DEVICE
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE(KEYTRONIC_CONNECTOR, keytronic_connector_device, "keytronic_connector", "Keytronic serial keyboard connector")
+
+keytronic_connector_device::keytronic_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, KEYTRONIC_CONNECTOR, tag, owner, clock)
+ , device_single_card_slot_interface<device_keytronic_interface>(mconfig, *this)
+ , m_ser_out_callback(*this)
+ , m_kbd(nullptr)
+{
+}
+
+void keytronic_connector_device::device_config_complete()
+{
+ m_kbd = get_card_device();
+}
+
+void keytronic_connector_device::device_start()
+{
+}
+
+//**************************************************************************
+// KEYTRONIC KEYBOARD INTERFACE
+//**************************************************************************
+
+device_keytronic_interface::device_keytronic_interface(const machine_config &mconfig, device_t &device)
+ : device_interface(device, "keytronic")
+ , m_port(device, DEVICE_SELF_OWNER)
+{
+}
+
+device_keytronic_interface::~device_keytronic_interface()
+{
+}
+
+//**************************************************************************
+// KEYBOARD OPTIONS
+//**************************************************************************
+
+#include "kay_kbd.h"
+#include "keytronic_l2207.h"
+
+void ascii_terminal_keyboards(device_slot_interface &device)
+{
+ device.option_add("l2207", KEYTRONIC_L2207);
+}
+
+void kaypro_keyboards(device_slot_interface &device)
+{
+ device.option_add("kayproii", KAYPROII_KEYBOARD);
+ device.option_add("kaypro10", KAYPRO_10_KEYBOARD);
+}