1 // license:BSD-3-Clause
2 // copyright-holders:Krzysztof Strzecha, Nathan Woods
3 /*****************************************************************************
4  *
5  * includes/dai.h
6  *
7  ****************************************************************************/
8 
9 #ifndef MAME_INCLUDES_DAI_H
10 #define MAME_INCLUDES_DAI_H
11 
12 #include "cpu/i8085/i8085.h"
13 #include "audio/dai_snd.h"
14 #include "machine/i8255.h"
15 #include "machine/pit8253.h"
16 #include "machine/tms5501.h"
17 #include "imagedev/cassette.h"
18 #include "machine/timer.h"
19 #include "emupal.h"
20 
21 
22 class dai_state : public driver_device
23 {
24 public:
dai_state(const machine_config & mconfig,device_type type,const char * tag)25 	dai_state(const machine_config &mconfig, device_type type, const char *tag)
26 		: driver_device(mconfig, type, tag)
27 		, m_maincpu(*this, "maincpu")
28 		, m_pit(*this, "pit")
29 		, m_tms5501(*this, "tms5501")
30 		, m_sound(*this, "custom")
31 		, m_cassette(*this, "cassette")
32 		, m_rom(*this, "maincpu")
33 		, m_ram(*this, "mainram")
34 		, m_palette(*this, "palette")
35 		, m_io_keyboard(*this, "IN%u", 0U)
36 		, m_tms_timer(*this, "tms_timer")
37 	{ }
38 
39 	void dai(machine_config &config);
40 
41 private:
42 	u8 m_paddle_select;
43 	u8 m_paddle_enable;
44 	u8 m_cassette_motor[2];
45 	u8 m_keyboard_scan_mask;
46 	u8 m_4_colours_palette[4];
47 	void stack_interrupt_circuit_w(u8 data);
48 	u8 io_discrete_devices_r(offs_t offset);
49 	void io_discrete_devices_w(offs_t offset, u8 data);
50 	u8 amd9511_r();
51 	void amd9511_w(offs_t offset, u8 data);
52 	u8 pit_r(offs_t offset);
53 	void pit_w(offs_t offset, u8 data);
54 	u8 keyboard_r();
55 	void keyboard_w(u8 data);
56 	void dai_palette(palette_device &palette) const;
57 	u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
58 	IRQ_CALLBACK_MEMBER(int_ack);
59 	TIMER_DEVICE_CALLBACK_MEMBER(tms_timer);
60 
61 	void mem_map(address_map &map);
62 
63 	static const rgb_t s_palette[16];
64 
65 	virtual void machine_start() override;
66 	virtual void machine_reset() override;
67 
68 	memory_passthrough_handler *m_rom_shadow_tap;
69 	required_device<cpu_device> m_maincpu;
70 	required_device<pit8253_device> m_pit;
71 	required_device<tms5501_device> m_tms5501;
72 	required_device<dai_sound_device> m_sound;
73 	required_device<cassette_image_device> m_cassette;
74 	required_region_ptr<u8> m_rom;
75 	required_shared_ptr<u8> m_ram;
76 	required_device<palette_device> m_palette;
77 	required_ioport_array<9> m_io_keyboard;
78 	required_device<timer_device> m_tms_timer;
79 };
80 
81 
82 #endif // MAME_INCLUDES_DAI_H
83