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