1 // license:BSD-3-Clause
2 // copyright-holders:Zsolt Vasvari
3 
4 #include "cpu/z80/z80.h"
5 #include "machine/gen_latch.h"
6 
7 class zodiack_state : public driver_device
8 {
9 public:
zodiack_state(const machine_config & mconfig,device_type type,const char * tag)10 	zodiack_state(const machine_config &mconfig, device_type type, const char *tag)
11 		: driver_device(mconfig, type, tag),
12 			m_maincpu(*this, "maincpu"),
13 			m_audiocpu(*this, "audiocpu"),
14 			m_soundlatch(*this, "soundlatch")
15 	{ }
16 
17 	void zodiack(machine_config &config);
18 	void percuss(machine_config &config);
19 
20 protected:
21 	virtual void machine_start() override;
22 	virtual void machine_reset() override;
23 
24 private:
25 	void nmi_mask_w(uint8_t data);
26 	void sound_nmi_enable_w(uint8_t data);
27 	void master_soundlatch_w(uint8_t data);
28 	void control_w(uint8_t data);
29 
30 	// devices
31 	required_device<z80_device> m_maincpu;
32 	required_device<z80_device> m_audiocpu;
33 	required_device<generic_latch_8_device> m_soundlatch;
34 
35 	// state
36 	uint8_t m_main_nmi_enabled;
37 	uint8_t m_sound_nmi_enabled;
38 
39 	INTERRUPT_GEN_MEMBER(zodiack_sound_nmi_gen);
40 	DECLARE_WRITE_LINE_MEMBER(vblank_main_nmi_w);
41 
42 	void io_map(address_map &map);
43 	void main_map(address_map &map);
44 	void sound_map(address_map &map);
45 };
46