1 // license:BSD-3-Clause
2 // copyright-holders:Patrick Mackinlay
3 #ifndef MAME_DEVICES_INTERPRO_KEYBOARD_LLE_H
4 #define MAME_DEVICES_INTERPRO_KEYBOARD_LLE_H
5 
6 #pragma once
7 
8 #include "keyboard.h"
9 
10 #include "machine/keyboard.h"
11 #include "cpu/mcs48/mcs48.h"
12 #include "machine/bankdev.h"
13 #include "sound/spkrdev.h"
14 
15 namespace bus { namespace interpro { namespace keyboard {
16 
17 class lle_device_base
18 	: public device_t
19 	, public device_interpro_keyboard_port_interface
20 {
21 protected:
22 	// constructor/destructor
23 	lle_device_base(machine_config const &mconfig, device_type type, char const *tag, device_t *owner, u32 clock);
24 
25 	// device overrides
26 	virtual void device_add_mconfig(machine_config &config) override;
27 	virtual void device_start() override;
28 	virtual void device_reset() override;
29 
30 	virtual void io_map(address_map &map);
31 	virtual void ext_map(address_map &map);
32 
DECLARE_WRITE_LINE_MEMBER(input_txd)33 	DECLARE_WRITE_LINE_MEMBER(input_txd) override { m_txd = state; }
34 
35 	DECLARE_READ_LINE_MEMBER(t0_r);
36 	DECLARE_READ_LINE_MEMBER(t1_r);
37 	void p1_w(u8 data);
38 	void p2_w(u8 data);
39 	u8 bus_r();
40 	void bus_w(u8 data);
41 
42 private:
43 	required_device<i8049_device> m_mcu;
44 	required_device<address_map_bank_device> m_ext;
45 	required_ioport_array<15> m_upper;
46 	required_ioport_array<11> m_lower;
47 	required_device<speaker_sound_device> m_speaker;
48 
49 	output_finder<8> m_leds;
50 
51 	u8 m_txd;
52 	u8 m_p1;
53 	u8 m_p2;
54 	u8 m_bus;
55 
56 	u8 m_row;
57 	u8 m_count;
58 };
59 
60 class lle_en_us_device : public lle_device_base
61 {
62 public:
63 	lle_en_us_device(machine_config const &mconfig, char const *tag, device_t *owner, u32 clock);
64 
65 	virtual ioport_constructor device_input_ports() const override;
66 	virtual tiny_rom_entry const *device_rom_region() const override;
67 };
68 
69 } } } // namespace bus::interpro::keyboard
70 
71 DECLARE_DEVICE_TYPE_NS(INTERPRO_LLE_EN_US_KEYBOARD, bus::interpro::keyboard, lle_en_us_device)
72 
73 #endif // MAME_DEVICES_INTERPRO_KEYBOARD_LLE_H
74