1 // license:BSD-3-Clause 2 // copyright-holders:AJR 3 4 #ifndef MAME_BUS_Z29_KBD_HE191_3425_H 5 #define MAME_BUS_Z29_KBD_HE191_3425_H 6 7 #pragma once 8 9 #include "bus/z29_kbd/keyboard.h" 10 #include "sound/beep.h" 11 12 13 class he191_3425_device : public device_t, public device_z29_keyboard_interface 14 { 15 public: 16 // device type constructor 17 he191_3425_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 18 19 // miscellanous handlers 20 DECLARE_WRITE_LINE_MEMBER(shift_reset); 21 22 protected: 23 // device-level overrides 24 virtual void device_resolve_objects() override; 25 virtual void device_start() override; 26 virtual ioport_constructor device_input_ports() const override; 27 virtual void device_add_mconfig(machine_config &config) override; 28 virtual const tiny_rom_entry *device_rom_region() const override; 29 30 // device_z29_keyboard_interface overrides 31 virtual void receive_data(bool state) override; 32 33 private: 34 // MCU port handlers 35 u8 mcu_pa_r(); 36 void mcu_pb_w(u8 data); 37 void mcu_pc_w(u8 data); 38 DECLARE_READ_LINE_MEMBER(mcu_t1_r); 39 40 // misc. helpers 41 TIMER_CALLBACK_MEMBER(receive_data_synced); 42 43 // object finders 44 required_device<cpu_device> m_mcu; 45 required_device<beep_device> m_buzzer; 46 required_ioport_array<12> m_matrix; 47 required_ioport m_modifiers; 48 output_finder<4> m_leds; 49 50 // internal state 51 u8 m_select; 52 bool m_recv_data; 53 }; 54 55 // device type declaration 56 DECLARE_DEVICE_TYPE(HE191_3425, he191_3425_device) 57 58 #endif // MAME_BUS_Z29_KBD_HE191_3425_H 59