summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/ie15_kbd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/ie15_kbd.h')
-rw-r--r--src/devices/machine/ie15_kbd.h30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/devices/machine/ie15_kbd.h b/src/devices/machine/ie15_kbd.h
index 9b7a4d802e4..f8ff57e963e 100644
--- a/src/devices/machine/ie15_kbd.h
+++ b/src/devices/machine/ie15_kbd.h
@@ -5,7 +5,9 @@
#pragma once
-class ie15_keyboard_device : public device_t
+#include "machine/keyboard.h"
+
+class ie15_keyboard_device : public device_t, protected device_matrix_keyboard_interface<4U>
{
public:
enum
@@ -27,41 +29,33 @@ public:
IE_KB_DK_BIT = 5,
IE_KB_PCH_BIT = 6,
IE_KB_NR_BIT = 7,
-
- IE_KB_SI = 0x0f,
- IE_KB_SO = 0x0e
};
-
ie15_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
auto keyboard_cb() { return m_keyboard_cb.bind(); }
+ auto sdv_cb() { return m_sdv_cb.bind(); }
+
+ void set_ruslat(bool state) { m_ruslat = state; }
+
+ DECLARE_INPUT_CHANGED_MEMBER(dip_changed);
protected:
ie15_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
virtual ioport_constructor device_input_ports() const override;
- virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void send_key(uint16_t code) { m_keyboard_cb(offs_t(0), code); }
+ virtual void key_make(uint8_t row, uint8_t column) override;
- required_ioport_array<4> m_io_kbd;
required_ioport m_io_kbdc;
- emu_timer *m_timer;
-
private:
- virtual uint16_t keyboard_handler(uint16_t last_code, uint8_t *scan_line);
- uint8_t row_number(uint32_t code);
- uint16_t m_last_code;
- uint8_t m_scan_line;
- uint8_t m_ruslat;
- uint8_t *m_rom;
-
+ required_region_ptr<uint8_t> m_rom;
devcb_write16 m_keyboard_cb;
+ devcb_write_line m_sdv_cb;
+ bool m_ruslat;
};
DECLARE_DEVICE_TYPE(IE15_KEYBOARD, ie15_keyboard_device)