1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 /********************************************************************** 4 5 Luxor ABC-99 keyboard and mouse emulation 6 7 *********************************************************************/ 8 9 #ifndef MAME_BUS_ABCKB_ABC99_H 10 #define MAME_BUS_ABCKB_ABC99_H 11 12 #pragma once 13 14 #include "abckb.h" 15 16 #include "cpu/mcs48/mcs48.h" 17 #include "sound/spkrdev.h" 18 19 20 21 //************************************************************************** 22 // TYPE DEFINITIONS 23 //************************************************************************** 24 25 // ======================> abc99_device 26 27 class abc99_device : public device_t, 28 public abc_keyboard_interface 29 { 30 public: 31 // construction/destruction 32 abc99_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 33 34 DECLARE_INPUT_CHANGED_MEMBER( keyboard_reset ); 35 36 protected: 37 // device-level overrides 38 virtual void device_start() override; 39 virtual void device_reset() override; 40 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 41 42 // optional information overrides 43 virtual const tiny_rom_entry *device_rom_region() const override; 44 virtual void device_add_mconfig(machine_config &config) override; 45 virtual ioport_constructor device_input_ports() const override; 46 47 // abc_keyboard_interface overrides 48 virtual void txd_w(int state) override; 49 50 private: 51 enum 52 { 53 TIMER_SERIAL, 54 TIMER_MOUSE 55 }; 56 57 enum 58 { 59 LED_1 = 0, 60 LED_2, 61 LED_3, 62 LED_4, 63 LED_5, 64 LED_6, 65 LED_7, 66 LED_8, 67 LED_INS, 68 LED_ALT, 69 LED_CAPS_LOCK 70 }; 71 72 inline void serial_input(); 73 inline void serial_output(int state); 74 inline void serial_clock(); 75 inline void key_down(int state); 76 inline void scan_mouse(); 77 78 void z2_p1_w(uint8_t data); 79 uint8_t z2_p2_r(); 80 DECLARE_READ_LINE_MEMBER( z2_t0_r ); 81 DECLARE_READ_LINE_MEMBER( z2_t1_r ); 82 83 void z2_led_w(uint8_t data); 84 uint8_t z5_p1_r(); 85 void z5_p2_w(uint8_t data); 86 uint8_t z5_t1_r(); 87 88 void abc99_z2_io(address_map &map); 89 void abc99_z2_mem(address_map &map); 90 void abc99_z5_mem(address_map &map); 91 92 emu_timer *m_serial_timer; 93 emu_timer *m_mouse_timer; 94 95 required_device<i8035_device> m_maincpu; 96 required_device<i8035_device> m_mousecpu; 97 required_device<speaker_sound_device> m_speaker; 98 required_ioport m_z14; 99 required_ioport m_mouseb; 100 output_finder<11> m_leds; 101 102 int m_si; 103 int m_si_en; 104 int m_so_z2; 105 int m_so_z5; 106 int m_keydown; 107 int m_t1_z2; 108 int m_t1_z5; 109 int m_led_en; 110 int m_reset; 111 int m_txd; 112 }; 113 114 115 // device type definition 116 DECLARE_DEVICE_TYPE(ABC99, abc99_device) 117 118 119 #endif // MAME_BUS_ABCKB_ABC99_H 120