1 // license: BSD-3-Clause 2 // copyright-holders: Dirk Best 3 /*************************************************************************** 4 5 Casio FP-6000 Keyboard 6 7 ***************************************************************************/ 8 9 #ifndef MAME_MACHINE_FP6000_KBD_H 10 #define MAME_MACHINE_FP6000_KBD_H 11 12 #pragma once 13 14 #include "machine/keyboard.h" 15 16 17 //************************************************************************** 18 // TYPE DEFINITIONS 19 //************************************************************************** 20 21 // ======================> fp6000_kbd_device 22 23 class fp6000_kbd_device : public device_t, protected device_matrix_keyboard_interface<6> 24 { 25 public: 26 // construction/destruction 27 fp6000_kbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); 28 29 // callbacks int_handler()30 auto int_handler() { return m_int_handler.bind(); } 31 32 uint8_t read(offs_t offset); 33 void write(offs_t offset, uint8_t data); 34 35 protected: 36 // device-level overrides 37 virtual ioport_constructor device_input_ports() const override; 38 virtual void device_start() override; 39 virtual void device_reset() override; 40 41 // device_matrix_keyboard_interface overrides 42 virtual void key_make(uint8_t row, uint8_t column) override; 43 virtual void key_break(uint8_t row, uint8_t column) override; 44 virtual void key_repeat(uint8_t row, uint8_t column) override; 45 46 private: 47 devcb_write_line m_int_handler; 48 49 enum 50 { 51 STATUS_READY_FOR_DATA = 0x01, 52 STATUS_DATA_AVAILABLE = 0x02 53 }; 54 55 uint8_t translate(uint8_t row, uint8_t column); 56 void send_key(uint8_t code); 57 58 uint8_t m_status; 59 uint8_t m_data; 60 }; 61 62 // device type definition 63 DECLARE_DEVICE_TYPE(FP6000_KBD, fp6000_kbd_device) 64 65 #endif // MAME_MACHINE_FP6000_KBD_H 66