text: // license:BSD-3-Clause
  // copyright-holders:R. Belmont
  /*********************************************************************
  
      a2dx1.c
  
      Implementation of the Decillionix DX-1 sampler card
  
  *********************************************************************/
  
  #include "emu.h"
  #include "a2dx1.h"
  #include "sound/volt_reg.h"
  #include "speaker.h"
  
  /***************************************************************************
      PARAMETERS
  ***************************************************************************/
  
  //**************************************************************************
  //  GLOBAL VARIABLES
  //**************************************************************************
  
  DEFINE_DEVICE_TYPE(A2BUS_DX1, a2bus_dx1_device, "a2dx1", "Decillonix DX-1")
  
  /***************************************************************************
      FUNCTION PROTOTYPES
  ***************************************************************************/
  
  //-------------------------------------------------
  //  device_add_mconfig - add device configuration
  //-------------------------------------------------
  
  MACHINE_CONFIG_START(a2bus_dx1_device::device_add_mconfig)
  	MCFG_SPEAKER_STANDARD_MONO("speaker")
  	MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC
  	MCFG_SOUND_ADD("dacvol", DAC_8BIT_R2R, 0) // unknown DAC
  	MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT)
  	MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
  	MCFG_SOUND_ROUTE_EX(0, "dacvol", 1.0, DAC_VREF_POS_INPUT)
  MACHINE_CONFIG_END
  
  //**************************************************************************
  //  LIVE DEVICE
  //**************************************************************************
  
  a2bus_dx1_device::a2bus_dx1_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) :
  	device_t(mconfig, type, tag, owner, clock),
  	device_a2bus_card_interface(mconfig, *this),
  	m_dac(*this, "dac"),
  	m_dacvol(*this, "dacvol")
  {
  }
  
  a2bus_dx1_device::a2bus_dx1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
  	a2bus_dx1_device(mconfig, A2BUS_DX1, tag, owner, clock)
  {
  }
  
  //-------------------------------------------------
  //  device_start - device-specific startup
  //-------------------------------------------------
  
  void a2bus_dx1_device::device_start()
  {
  }
  
  uint8_t a2bus_dx1_device::read_c0nx(uint8_t offset)
  {
  	switch (offset)
  	{
  		case 1: // ADC input
  			return 0;
  
  		case 3: // busy flag
  			return 0x80;    // indicate not busy
  
  		case 7: // 1-bit ADC input (bit 7 of c0n1, probably)
  			return 0;
  	}
  
  	return 0xff;
  }
  
  void a2bus_dx1_device::write_c0nx(uint8_t offset, uint8_t data)
  {
  	switch (offset)
  	{
  		case 5:
  			m_dacvol->write(data);
  			break;
  
  		case 6:
  			m_dac->write(data);
  			break;
  	}
  }
  
  bool a2bus_dx1_device::take_c800()
  {
  	return false;
  }
  