Esempio n. 1
0
void leland_80186_sound_device::device_add_mconfig(machine_config &config)
{
	I80186(config, m_audiocpu, 16_MHz_XTAL);
	m_audiocpu->set_addrmap(AS_PROGRAM, &leland_80186_sound_device::leland_80186_map_program);
	m_audiocpu->set_addrmap(AS_IO, &leland_80186_sound_device::leland_80186_map_io);
	m_audiocpu->chip_select_callback().set(FUNC(leland_80186_sound_device::peripheral_ctrl));
	m_audiocpu->tmrout0_handler().set(FUNC(leland_80186_sound_device::i80186_tmr0_w));

	SPEAKER(config, "speaker").front_center();
	for (int i = 0; i < 6; i++)
	{
		AD7524(config, m_dac[i], 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // 74hc374.u31..6 + ad7524.u46..51
		DAC_8BIT_BINARY_WEIGHTED(config, m_dacvol[i], 0); // 74hc374.u17..22 + rX2-rX9 (24k,12k,6.2k,3k,1.5k,750,360,160) where X is 0..5
	}
	AD7533(config, "dac9", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // ad7533.u64

	m_dacvol[0]->add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[0]->add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT);
	m_dacvol[1]->add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[1]->add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT);
	m_dacvol[2]->add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[2]->add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT);
	m_dacvol[3]->add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[3]->add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT);
	m_dacvol[4]->add_route(0, "dac5", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[4]->add_route(0, "dac5", -1.0, DAC_VREF_NEG_INPUT);
	m_dacvol[5]->add_route(0, "dac6", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[5]->add_route(0, "dac6", -1.0, DAC_VREF_NEG_INPUT);

	voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
	vref.set_output(5.0);
	vref.add_route(0, "dac1vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac2vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac3vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac4vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac5vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac6vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac9", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac9", -1.0, DAC_VREF_NEG_INPUT);

	PIT8254(config, m_pit[0], 0);
	m_pit[0]->set_clk<0>(4000000);
	m_pit[0]->out_handler<0>().set(m_audiocpu, FUNC(i80186_cpu_device::drq0_w));
	m_pit[0]->set_clk<1>(4000000);
	m_pit[0]->out_handler<1>().set(m_audiocpu, FUNC(i80186_cpu_device::drq1_w));
	m_pit[0]->set_clk<2>(4000000);
	m_pit[0]->out_handler<2>().set(FUNC(leland_80186_sound_device::pit0_2_w));

	PIT8254(config, m_pit[1], 0);
	m_pit[1]->set_clk<0>(4000000);
	m_pit[1]->out_handler<0>().set(FUNC(leland_80186_sound_device::pit1_0_w));
	m_pit[1]->set_clk<1>(4000000);
	m_pit[1]->out_handler<1>().set(FUNC(leland_80186_sound_device::pit1_1_w));
	m_pit[1]->set_clk<2>(4000000);
	m_pit[1]->out_handler<2>().set(FUNC(leland_80186_sound_device::pit1_2_w));

	GENERIC_LATCH_16(config, m_soundlatch);
}
Esempio n. 2
0
void wsf_80186_sound_device::device_add_mconfig(machine_config &config)
{
	I80186(config, m_audiocpu, 16_MHz_XTAL);
	m_audiocpu->set_addrmap(AS_PROGRAM, &wsf_80186_sound_device::leland_80186_map_program);
	m_audiocpu->set_addrmap(AS_IO, &wsf_80186_sound_device::ataxx_80186_map_io);
	m_audiocpu->chip_select_callback().set(FUNC(leland_80186_sound_device::peripheral_ctrl));
	m_audiocpu->tmrout0_handler().set(FUNC(leland_80186_sound_device::i80186_tmr0_w));
	m_audiocpu->tmrout1_handler().set(FUNC(leland_80186_sound_device::i80186_tmr1_w));

	SPEAKER(config, "speaker").front_center();
	for (int i = 0; i < 4; i++)
	{
		AD7524(config, m_dac[i], 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // unknown DAC
		DAC_8BIT_BINARY_WEIGHTED(config, m_dacvol[i], 0); // unknown DAC
	}
	AD7533(config, "dac9", 0).add_route(ALL_OUTPUTS, "speaker", 1.0); // unknown DAC

	m_dacvol[0]->add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[0]->add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[1]->add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[1]->add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[2]->add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[2]->add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[3]->add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[3]->add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC

	voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
	vref.set_output(5.0);
	vref.add_route(0, "dac1vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac2vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac3vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac4vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac9", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac9", -1.0, DAC_VREF_NEG_INPUT);

	/* sound hardware */
	YM2151(config, m_ymsnd, 4000000);
	m_ymsnd->add_route(0, "speaker", 0.40);
	m_ymsnd->add_route(1, "speaker", 0.40);

	PIT8254(config, m_pit[0], 0);
	m_pit[0]->set_clk<0>(4000000);
	m_pit[0]->out_handler<0>().set(m_audiocpu, FUNC(i80186_cpu_device::drq0_w));
	m_pit[0]->set_clk<1>(4000000);
	m_pit[0]->out_handler<1>().set(m_audiocpu, FUNC(i80186_cpu_device::drq1_w));
	m_pit[0]->set_clk<2>(4000000);
	m_pit[0]->out_handler<2>().set(FUNC(leland_80186_sound_device::pit0_2_w));

	GENERIC_LATCH_16(config, m_soundlatch);
}
Esempio n. 3
0
void wpcsnd_device::device_add_mconfig(machine_config &config)
{
	MC6809E(config, m_cpu, XTAL(8'000'000) / 4); // MC68B09E
	m_cpu->set_addrmap(AS_PROGRAM, &wpcsnd_device::wpcsnd_map);
	config.m_minimum_quantum = attotime::from_hz(50);

	YM2151(config, m_ym2151, 3580000);
	m_ym2151->irq_handler().set(FUNC(wpcsnd_device::ym2151_irq_w));
	m_ym2151->add_route(ALL_OUTPUTS, *this, 0.25);

	AD7524(config, "dac", 0).add_route(ALL_OUTPUTS, *this, 0.25);
	voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
	vref.set_output(5.0);
	vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);

	HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, *this, 0.5);
}
Esempio n. 4
0
void redline_80186_sound_device::device_add_mconfig(machine_config &config)
{
	I80186(config, m_audiocpu, 16_MHz_XTAL);
	m_audiocpu->set_addrmap(AS_PROGRAM, &redline_80186_sound_device::leland_80186_map_program);
	m_audiocpu->set_addrmap(AS_IO, &redline_80186_sound_device::redline_80186_map_io);
	m_audiocpu->chip_select_callback().set(FUNC(leland_80186_sound_device::peripheral_ctrl));

	SPEAKER(config, "speaker").front_center();
	for (int i = 0; i < 8; i++)
	{
		AD7524(config, m_dac[i], 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // unknown DAC
		DAC_8BIT_BINARY_WEIGHTED(config, m_dacvol[i], 0);
	}

	m_dacvol[0]->add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[0]->add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[1]->add_route(0, "dac2", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[1]->add_route(0, "dac2", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[2]->add_route(0, "dac3", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[2]->add_route(0, "dac3", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[3]->add_route(0, "dac4", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[3]->add_route(0, "dac4", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[4]->add_route(0, "dac5", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[4]->add_route(0, "dac5", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[5]->add_route(0, "dac6", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[5]->add_route(0, "dac6", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[6]->add_route(0, "dac7", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[6]->add_route(0, "dac7", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC
	m_dacvol[7]->add_route(0, "dac8", 1.0, DAC_VREF_POS_INPUT);
	m_dacvol[7]->add_route(0, "dac8", -1.0, DAC_VREF_NEG_INPUT); // unknown DAC

	voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
	vref.set_output(5.0);
	vref.add_route(0, "dac1vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac2vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac3vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac4vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac5vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac6vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac7vol", 1.0, DAC_VREF_POS_INPUT);
	vref.add_route(0, "dac8vol", 1.0, DAC_VREF_POS_INPUT);

	PIT8254(config, m_pit[0], 0);
	m_pit[0]->set_clk<0>(7000000);
	m_pit[0]->out_handler<0>().set(m_audiocpu, FUNC(i80186_cpu_device::drq0_w));
	m_pit[0]->set_clk<1>(7000000);
	m_pit[0]->out_handler<1>().set(m_audiocpu, FUNC(i80186_cpu_device::drq1_w));
	m_pit[0]->set_clk<2>(7000000);
	m_pit[0]->out_handler<2>().set(FUNC(leland_80186_sound_device::pit0_2_w));

	PIT8254(config, m_pit[1], 0);
	m_pit[1]->set_clk<0>(7000000);
	m_pit[1]->out_handler<0>().set(FUNC(leland_80186_sound_device::pit1_0_w));
	m_pit[1]->set_clk<1>(7000000);
	m_pit[1]->out_handler<1>().set(FUNC(leland_80186_sound_device::pit1_1_w));
	m_pit[1]->set_clk<2>(7000000);

	PIT8254(config, m_pit[2], 0);
	m_pit[2]->set_clk<0>(7000000);
	m_pit[2]->out_handler<0>().set(FUNC(leland_80186_sound_device::pit1_2_w));
	m_pit[2]->set_clk<1>(7000000);
	m_pit[2]->set_clk<2>(7000000);

	GENERIC_LATCH_16(config, m_soundlatch);
}