1 // license: BSD-3-Clause
2 // copyright-holders: Dirk Best
3 /***************************************************************************
4 
5     SAMDAC Stereo DAC for SAM Coupe
6 
7 ***************************************************************************/
8 
9 #ifndef MAME_BUS_CENTRONICS_SAMDAC_H
10 #define MAME_BUS_CENTRONICS_SAMDAC_H
11 
12 #pragma once
13 
14 #include "ctronics.h"
15 #include "sound/dac.h"
16 
17 
18 //**************************************************************************
19 //  TYPE DEFINITIONS
20 //**************************************************************************
21 
22 // ======================> centronics_samdac_device
23 
24 class centronics_samdac_device : public device_t, public device_centronics_peripheral_interface
25 {
26 public:
27 	// construction/destruction
28 	centronics_samdac_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
29 
30 	// from centronics port
31 	virtual DECLARE_WRITE_LINE_MEMBER( input_strobe ) override;
DECLARE_WRITE_LINE_MEMBER(input_data0)32 	virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) override { update_data(0, state); }
DECLARE_WRITE_LINE_MEMBER(input_data1)33 	virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) override { update_data(1, state); }
DECLARE_WRITE_LINE_MEMBER(input_data2)34 	virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) override { update_data(2, state); }
DECLARE_WRITE_LINE_MEMBER(input_data3)35 	virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) override { update_data(3, state); }
DECLARE_WRITE_LINE_MEMBER(input_data4)36 	virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) override { update_data(4, state); }
DECLARE_WRITE_LINE_MEMBER(input_data5)37 	virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) override { update_data(5, state); }
DECLARE_WRITE_LINE_MEMBER(input_data6)38 	virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) override { update_data(6, state); }
DECLARE_WRITE_LINE_MEMBER(input_data7)39 	virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) override { update_data(7, state); }
40 
41 protected:
42 	virtual void device_add_mconfig(machine_config &config) override;
43 	virtual void device_start() override;
44 
45 private:
46 	void update_data(int bit, int state);
47 
48 	required_device_array<dac_byte_interface, 2> m_dac;
49 
50 	int m_strobe;
51 	uint8_t m_data[2];
52 };
53 
54 // device type definition
55 DECLARE_DEVICE_TYPE(CENTRONICS_SAMDAC, centronics_samdac_device)
56 
57 #endif // MAME_BUS_CENTRONICS_SAMDAC_H
58