1 // license:BSD-3-Clause
2 // copyright-holders:Barry Rodewald
3 /*
4  * The Music Machine - MIDI and sampling expansion
5  * by Ram Electronics
6  *
7  * Contains a 6850 AICA, Ferranti ZN429E8 DAC and ZN449 ADC
8  */
9 
10 #ifndef MAME_BUS_CPC_MUSICMACHINE_H
11 #define MAME_BUS_CPC_MUSICMACHINE_H
12 
13 #pragma once
14 
15 #include "cpcexp.h"
16 #include "machine/6850acia.h"
17 #include "sound/dac.h"
18 
19 class cpc_musicmachine_device  : public device_t,
20 							public device_cpc_expansion_card_interface
21 {
22 public:
23 	// construction/destruction
24 	cpc_musicmachine_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
25 
26 	void dac_w(uint8_t data);
27 	uint8_t acia_r(offs_t offset);
28 	void acia_w(offs_t offset, uint8_t data);
29 	void irqsel_w(uint8_t data);
30 	DECLARE_WRITE_LINE_MEMBER(irq_w);
31 
write_acia_clock(u8 data)32 	void write_acia_clock(u8 data) { m_acia->write_txc(data); m_acia->write_rxc(data); }
33 
34 protected:
35 	// device-level overrides
36 	virtual void device_start() override;
37 	virtual void device_reset() override;
38 
39 	// optional information overrides
40 	virtual void device_add_mconfig(machine_config &config) override;
41 
42 private:
43 	cpc_expansion_slot_device *m_slot;
44 
45 	required_device<acia6850_device> m_acia;
46 	required_device<dac_byte_interface> m_dac;
47 
48 	bool m_irq_select;
49 };
50 
51 // device type definition
52 DECLARE_DEVICE_TYPE(CPC_MUSICMACHINE, cpc_musicmachine_device)
53 
54 #endif  // MAME_BUS_CPC_MUSICMACHINE_H
55