1 // license:BSD-3-Clause
2 // copyright-holders:Curt Coder
3 /**********************************************************************
4 
5     PCD3311 DTMF/modem/musical tone generator emulation
6 
7 **********************************************************************
8                             _____   _____
9                   OSCI   1 |*    \_/     | 16  Vdd
10                   OSCO   2 |             | 15  Vss
11                   MODE   3 |             | 14  D4
12                     D5   4 |  PCD3311T   | 13  N/C
13                    N/C   5 |             | 12  D3
14                 STROBE   6 |             | 11  D2
15                   TONE   7 |             | 10  D1/SDA
16                     A0   8 |_____________| 9   D0/SCL
17 
18 **********************************************************************/
19 
20 #ifndef MAME_SOUND_PCD3311_H
21 #define MAME_SOUND_PCD3311_H
22 
23 #pragma once
24 
25 
26 
27 
28 //**************************************************************************
29 //  TYPE DEFINITIONS
30 //**************************************************************************
31 
32 // ======================> pcd3311_device
33 
34 class pcd3311_device :  public device_t,
35 				   public device_sound_interface
36 {
37 public:
38 	// construction/destruction
39 	pcd3311_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
40 
write(uint8_t data)41 	void write(uint8_t data) { m_data = data; }
strobe_w(int state)42 	void strobe_w(int state) { m_strobe = state; }
mode_w(int state)43 	void mode_w(int state) { m_mode = state; }
a0_w(int state)44 	void a0_w(int state) { m_a0 = state; }
45 
46 protected:
47 	// device-level overrides
48 	virtual void device_start() override;
49 
50 	// internal callbacks
51 	virtual void sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) override;
52 
53 private:
54 	int m_a0;
55 	int m_mode;
56 	int m_strobe;
57 	uint8_t m_data;
58 };
59 
60 
61 // device type definition
62 DECLARE_DEVICE_TYPE(PCD3311, pcd3311_device)
63 
64 #endif // MAME_SOUND_PCD3311_H
65