1 // license:BSD-3-Clause 2 // copyright-holders:Aaron Giles 3 /************************************************************************* 4 5 Sega speech board 6 7 *************************************************************************/ 8 #ifndef MAME_AUDIO_SEGASPEECH_H 9 #define MAME_AUDIO_SEGASPEECH_H 10 11 #pragma once 12 13 #include "cpu/mcs48/mcs48.h" 14 #include "machine/netlist.h" 15 #include "machine/timer.h" 16 17 class sega_speech_device : public device_t, public device_mixer_interface 18 { 19 public: 20 sega_speech_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); 21 22 // auto int_cb() { return m_int_cb.bind(); } 23 24 void data_w(uint8_t data); 25 void control_w(uint8_t data); 26 27 protected: 28 // device-level overrides 29 virtual void device_add_mconfig(machine_config &config) override; 30 virtual void device_start() override; 31 32 DECLARE_READ_LINE_MEMBER( t0_r ); 33 DECLARE_READ_LINE_MEMBER( t1_r ); 34 uint8_t p1_r(); 35 uint8_t rom_r(offs_t offset); 36 void p1_w(uint8_t data); 37 void p2_w(uint8_t data); 38 39 DECLARE_WRITE_LINE_MEMBER(drq_w); 40 41 private: 42 void speech_map(address_map &map); 43 void speech_portmap(address_map &map); 44 45 required_memory_region m_speech; 46 required_device<cpu_device> m_cpu; 47 48 // internal state 49 u8 m_drq; 50 u8 m_latch; 51 u8 m_t0; 52 u8 m_p2; 53 54 TIMER_CALLBACK_MEMBER( delayed_speech_w ); 55 }; 56 57 DECLARE_DEVICE_TYPE(SEGA_SPEECH_BOARD, sega_speech_device) 58 59 #endif // MAME_AUDIO_SEGASPEECH_H 60