// license:BSD-3-Clause // copyright-holders:Barry Rodewald /* * amdrum.cpp * * Created on: 23/08/2014 */ #include "emu.h" #include "amdrum.h" #include "sound/volt_reg.h" #include "speaker.h" //************************************************************************** // DEVICE DEFINITIONS //************************************************************************** DEFINE_DEVICE_TYPE(CPC_AMDRUM, cpc_amdrum_device, "cpc_amdrum", "Amdrum") MACHINE_CONFIG_START(cpc_amdrum_device::device_add_mconfig) SPEAKER(config, "speaker").front_center(); MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) // no pass-through MACHINE_CONFIG_END //************************************************************************** // LIVE DEVICE //************************************************************************** cpc_amdrum_device::cpc_amdrum_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, CPC_AMDRUM, tag, owner, clock), device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), m_dac(*this,"dac") { } //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- void cpc_amdrum_device::device_start() { m_slot = dynamic_cast(owner()); address_space &space = m_slot->cpu().space(AS_IO); space.install_write_handler(0xff00,0xffff,write8_delegate(FUNC(cpc_amdrum_device::dac_w),this)); } //------------------------------------------------- // device_reset - device-specific reset //------------------------------------------------- void cpc_amdrum_device::device_reset() { // TODO } WRITE8_MEMBER(cpc_amdrum_device::dac_w) { m_dac->write(data); }