1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 /********************************************************************** 4 5 Tandy Radio Shack TRS-80 Model II keyboard emulation 6 7 **********************************************************************/ 8 9 #ifndef MAME_MACHINE_TRS80M2KB_H 10 #define MAME_MACHINE_TRS80M2KB_H 11 12 #pragma once 13 14 #include "cpu/mcs48/mcs48.h" 15 #include "sound/discrete.h" 16 17 18 19 //************************************************************************** 20 // MACROS / CONSTANTS 21 //************************************************************************** 22 23 #define TRS80M2_KEYBOARD_TAG "trs80m2kb" 24 25 26 //************************************************************************** 27 // TYPE DEFINITIONS 28 //************************************************************************** 29 30 // ======================> trs80m2_keyboard_device 31 32 class trs80m2_keyboard_device : public device_t 33 { 34 public: 35 // construction/destruction 36 trs80m2_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 37 clock_wr_callback()38 auto clock_wr_callback() { return m_write_clock.bind(); } 39 40 DECLARE_WRITE_LINE_MEMBER( busy_w ); 41 DECLARE_READ_LINE_MEMBER( data_r ); 42 43 protected: 44 // device-level overrides 45 virtual void device_start() override; 46 virtual void device_reset() override; 47 // optional information overrides 48 virtual const tiny_rom_entry *device_rom_region() const override; 49 virtual void device_add_mconfig(machine_config &config) override; 50 virtual ioport_constructor device_input_ports() const override; 51 52 private: 53 enum 54 { 55 LED_0 = 0, 56 LED_1 57 }; 58 59 required_device<i8021_device> m_maincpu; 60 required_ioport_array<12> m_y; 61 output_finder<2> m_leds; 62 63 devcb_write_line m_write_clock; 64 65 int m_busy; 66 int m_data; 67 int m_clk; 68 69 uint8_t m_keylatch; 70 71 DECLARE_READ_LINE_MEMBER( kb_t1_r ); 72 uint8_t kb_p0_r(); 73 void kb_p1_w(uint8_t data); 74 void kb_p2_w(uint8_t data); 75 }; 76 77 78 // device type definition 79 DECLARE_DEVICE_TYPE(TRS80M2_KEYBOARD, trs80m2_keyboard_device) 80 81 82 83 #endif // MAME_MACHINE_TRS80M2KB_H 84