summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/z29_kbd/keyboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/z29_kbd/keyboard.cpp')
-rw-r--r--src/devices/bus/z29_kbd/keyboard.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/devices/bus/z29_kbd/keyboard.cpp b/src/devices/bus/z29_kbd/keyboard.cpp
new file mode 100644
index 00000000000..670ab5804a8
--- /dev/null
+++ b/src/devices/bus/z29_kbd/keyboard.cpp
@@ -0,0 +1,111 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/***************************************************************************
+
+ Zenith Z-29 keyboard port
+
+ This supports the custom serial interface for the H-29/Z-29 and other
+ early Heath/Zenith terminals with detachable keyboards. (Keyboards for
+ later Zenith terminals such as the Z-49 use a standard asynchronous
+ serial protocol.)
+
+ All printable characters outside of the numeric keypad use standard
+ ASCII codes, as do Back Space, Line Feed, Return, Esc and Del. The
+ following codes are assigned to other keys:
+
+ 80 Up
+ 81 Down
+ 82 Left
+ 83 Right
+ 84 Home
+ 85 Erase
+ 86 Help
+ 87 No Scroll
+ 88 Set Up
+ 89 Break
+ 8A Caps Lock
+ 8B Tab
+ 8C Space Bar
+ 8F (Power On)
+ 90 0 (Keypad)
+ 91 1 (Keypad)
+ 92 2 (Keypad)
+ 93 3 (Keypad)
+ 94 4 (Keypad)
+ 95 5 (Keypad)
+ 96 6 (Keypad)
+ 97 7 (Keypad)
+ 98 8 (Keypad)
+ 99 9 (Keypad)
+ 9A . (Keypad)
+ 9B Enter (Keypad)
+ 9C - (Keypad)
+ 9D , (Keypad)
+ 9F 80 F1
+ 9F 81 F2
+ 9F 82 F3
+ 9F 83 F4
+ 9F 84 F5
+ 9F 85 F6
+ 9F 86 F7
+ 9F 87 F8
+ 9F 88 F9
+
+ Bit 6 is set in these codes when pressed with Shift, and bit 5 when
+ pressed with Ctrl.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "keyboard.h"
+
+#include "he191_3425.h"
+#include "md_kbd.h"
+
+//**************************************************************************
+// Z-29 KEYBOARD PORT DEVICE
+//**************************************************************************
+
+DEFINE_DEVICE_TYPE(Z29_KEYBOARD, z29_keyboard_port_device, "z29_kbd", "Z-29 Keyboard Port")
+
+z29_keyboard_port_device::z29_keyboard_port_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : device_t(mconfig, Z29_KEYBOARD, tag, owner, clock)
+ , device_single_card_slot_interface<device_z29_keyboard_interface>(mconfig, *this)
+ , m_keyin_callback(*this)
+ , m_reset_callback(*this)
+ , m_kbd(nullptr)
+{
+}
+
+void z29_keyboard_port_device::device_config_complete()
+{
+ m_kbd = get_card_device();
+}
+
+void z29_keyboard_port_device::device_start()
+{
+}
+
+//**************************************************************************
+// Z-29 KEYBOARD INTERFACE
+//**************************************************************************
+
+device_z29_keyboard_interface::device_z29_keyboard_interface(const machine_config &mconfig, device_t &device)
+ : device_interface(device, "z29kbd")
+ , m_port(device, DEVICE_SELF_OWNER)
+{
+}
+
+device_z29_keyboard_interface::~device_z29_keyboard_interface()
+{
+}
+
+//**************************************************************************
+// KEYBOARD OPTIONS
+//**************************************************************************
+
+void z29_keyboards(device_slot_interface &slot)
+{
+ slot.option_add("heath", HE191_3425);
+ slot.option_add("md", MD_KEYBOARD);
+}