1 // license:BSD-3-Clause 2 // copyright-holders:Vas Crabb 3 /*************************************************************************** 4 5 Amiga 1200 Keyboard 6 7 ***************************************************************************/ 8 9 #ifndef MAME_BUS_AMIGA_KEYBOARD_A1200_H 10 #define MAME_BUS_AMIGA_KEYBOARD_A1200_H 11 12 #pragma once 13 14 #include "keyboard.h" 15 16 17 namespace bus { namespace amiga { namespace keyboard { 18 19 //************************************************************************** 20 // TYPE DECLARATIONS 21 //************************************************************************** 22 23 class a1200_kbd_device : public device_t, public device_amiga_keyboard_interface 24 { 25 public: 26 // construction/destruction 27 a1200_kbd_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock); 28 29 // from host 30 virtual DECLARE_WRITE_LINE_MEMBER(kdat_w) override; 31 32 DECLARE_INPUT_CHANGED_MEMBER(layout_changed); 33 34 protected: 35 // MPU I/O 36 u8 mpu_portb_r(); 37 void mpu_porta_w(offs_t offset, u8 data, u8 mem_mask = ~0); 38 void mpu_portb_w(offs_t offset, u8 data, u8 mem_mask = ~0); 39 void mpu_portc_w(offs_t offset, u8 data, u8 mem_mask = ~0); 40 DECLARE_WRITE_LINE_MEMBER(mpu_tcmp); 41 42 virtual tiny_rom_entry const *device_rom_region() const override; 43 virtual void device_add_mconfig(machine_config &config) override; 44 virtual ioport_constructor device_input_ports() const override; 45 46 virtual void device_start() override; 47 virtual void device_reset_after_children() override; 48 49 private: 50 required_ioport_array<15> m_rows; 51 required_device<cpu_device> m_mpu; 52 output_finder<> m_led_kbd_caps; 53 54 u16 m_row_drive; 55 bool m_host_kdat, m_mpu_kdat; 56 }; 57 58 } } } // namespace bus::amiga::keyboard 59 60 61 //************************************************************************** 62 // GLOBAL VARIABLES 63 //************************************************************************** 64 65 DECLARE_DEVICE_TYPE_NS(A1200_KBD, bus::amiga::keyboard, a1200_kbd_device) 66 67 #endif // MAME_BUS_AMIGA_KEYBOARD_A1200_H 68