summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/mg1/kbd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/mg1/kbd.h')
-rw-r--r--src/mame/mg1/kbd.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/mame/mg1/kbd.h b/src/mame/mg1/kbd.h
new file mode 100644
index 00000000000..85d111ba092
--- /dev/null
+++ b/src/mame/mg1/kbd.h
@@ -0,0 +1,39 @@
+// license:BSD-3-Clause
+// copyright-holders:Patrick Mackinlay
+#ifndef MAME_MG1_KBD_H
+#define MAME_MG1_KBD_H
+
+#pragma once
+
+#include "cpu/mcs48/mcs48.h"
+
+class mg1_kbd_device
+ : public device_t
+{
+public:
+ auto out_data() { return m_data_cb.bind(); }
+
+ mg1_kbd_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock = 0);
+
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual void device_start() override;
+
+ virtual tiny_rom_entry const *device_rom_region() const override;
+ virtual ioport_constructor device_input_ports() const override;
+
+private:
+ virtual void map_mem(address_map &map);
+ virtual void map_pio(address_map &map);
+
+ devcb_write_line m_data_cb;
+
+ required_device<i8039_device> m_mcu;
+ required_ioport m_w;
+ required_ioport_array<16> m_matrix;
+ output_finder<2> m_led;
+};
+
+DECLARE_DEVICE_TYPE(MG1_KBD, mg1_kbd_device)
+
+#endif // MAME_MG1_KBD_H