summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/audio/leland.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/audio/leland.cpp')
-rw-r--r--src/mame/audio/leland.cpp247
1 files changed, 143 insertions, 104 deletions
diff --git a/src/mame/audio/leland.cpp b/src/mame/audio/leland.cpp
index 218b72d8ce6..fd46dfb7714 100644
--- a/src/mame/audio/leland.cpp
+++ b/src/mame/audio/leland.cpp
@@ -133,35 +133,45 @@ WRITE_LINE_MEMBER(leland_80186_sound_device::i80186_tmr1_w)
set_clock_line(7, state);
}
-MACHINE_CONFIG_START(leland_80186_sound_device::device_add_mconfig)
- MCFG_DEVICE_ADD("audiocpu", I80186, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(leland_80186_map_program)
- MCFG_DEVICE_IO_MAP(leland_80186_map_io)
- MCFG_80186_CHIP_SELECT_CB(WRITE16(*this, leland_80186_sound_device, peripheral_ctrl))
- MCFG_80186_TMROUT0_HANDLER(WRITELINE(*this, leland_80186_sound_device, i80186_tmr0_w))
+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();
- MCFG_DEVICE_ADD("dac1", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // 74hc374.u31 + ad7524.u46
- MCFG_DEVICE_ADD("dac2", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // 74hc374.u32 + ad7524.u47
- MCFG_DEVICE_ADD("dac3", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // 74hc374.u33 + ad7524.u48
- MCFG_DEVICE_ADD("dac4", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // 74hc374.u34 + ad7524.u49
- MCFG_DEVICE_ADD("dac5", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // 74hc374.u35 + ad7524.u50
- MCFG_DEVICE_ADD("dac6", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // 74hc374.u36 + ad7524.u51
- MCFG_DEVICE_ADD("dac9", AD7533, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // ad7533.u64
- MCFG_DEVICE_ADD("dac1vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) // 74hc374.u17 + r2-r9 (24k,12k,6.2k,3k,1.5k,750,360,160)
- MCFG_DEVICE_ADD("dac2vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) // 74hc374.u18 + r12-r19 (24k,12k,6.2k,3k,1.5k,750,360,160)
- MCFG_DEVICE_ADD("dac3vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac3", -1.0, DAC_VREF_NEG_INPUT) // 74hc374.u19 + r22-r29 (24k,12k,6.2k,3k,1.5k,750,360,160)
- MCFG_DEVICE_ADD("dac4vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac4", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac4", -1.0, DAC_VREF_NEG_INPUT) // 74hc374.u20 + r32-r39 (24k,12k,6.2k,3k,1.5k,750,360,160)
- MCFG_DEVICE_ADD("dac5vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac5", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac5", -1.0, DAC_VREF_NEG_INPUT) // 74hc374.u21 + r42-r49 (24k,12k,6.2k,3k,1.5k,750,360,160)
- MCFG_DEVICE_ADD("dac6vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac6", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac6", -1.0, DAC_VREF_NEG_INPUT) // 74hc374.u22 + r52-r59 (24k,12k,6.2k,3k,1.5k,750,360,160)
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "dac1vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac2vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac3vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac4vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac5vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac6vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac9", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac9", -1.0, DAC_VREF_NEG_INPUT)
+ 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);
@@ -180,40 +190,49 @@ MACHINE_CONFIG_START(leland_80186_sound_device::device_add_mconfig)
m_pit[1]->out_handler<2>().set(FUNC(leland_80186_sound_device::pit1_2_w));
GENERIC_LATCH_16(config, m_soundlatch);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(redline_80186_sound_device::device_add_mconfig)
- MCFG_DEVICE_ADD("audiocpu", I80186, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(leland_80186_map_program)
- MCFG_DEVICE_IO_MAP(redline_80186_map_io)
- MCFG_80186_CHIP_SELECT_CB(WRITE16(*this, leland_80186_sound_device, peripheral_ctrl))
+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();
- MCFG_DEVICE_ADD("dac1", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac2", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac3", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac4", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac5", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac6", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac7", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac8", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac1vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac2vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac3vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac3", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac4vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac4", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac4", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac5vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac5", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac5", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac6vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac6", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac6", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac7vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac7", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac7", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac8vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac8", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac8", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "dac1vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac2vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac3vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac4vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac5vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac6vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac7vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac8vol", 1.0, DAC_VREF_POS_INPUT)
+ 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);
@@ -237,31 +256,41 @@ MACHINE_CONFIG_START(redline_80186_sound_device::device_add_mconfig)
m_pit[2]->set_clk<2>(7000000);
GENERIC_LATCH_16(config, m_soundlatch);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(ataxx_80186_sound_device::device_add_mconfig)
- MCFG_DEVICE_ADD("audiocpu", I80186, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(leland_80186_map_program)
- MCFG_DEVICE_IO_MAP(ataxx_80186_map_io)
- MCFG_80186_CHIP_SELECT_CB(WRITE16(*this, leland_80186_sound_device, peripheral_ctrl))
- MCFG_80186_TMROUT0_HANDLER(WRITELINE(*this, leland_80186_sound_device, i80186_tmr0_w))
+void ataxx_80186_sound_device::device_add_mconfig(machine_config &config)
+{
+ I80186(config, m_audiocpu, 16_MHz_XTAL);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &ataxx_80186_sound_device::leland_80186_map_program);
+ m_audiocpu->set_addrmap(AS_IO, &ataxx_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));
SPEAKER(config, "speaker").front_center();
- MCFG_DEVICE_ADD("dac1", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac2", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac3", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac4", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac9", AD7533, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
- MCFG_DEVICE_ADD("dac1vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac2vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac3vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac3", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac4vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac4", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac4", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "dac1vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac2vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac3vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac4vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac9", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac9", -1.0, DAC_VREF_NEG_INPUT)
+ 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);
+ 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);
+
+ 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);
PIT8254(config, m_pit[0], 0);
m_pit[0]->set_clk<0>(4000000);
@@ -272,32 +301,42 @@ MACHINE_CONFIG_START(ataxx_80186_sound_device::device_add_mconfig)
m_pit[0]->out_handler<2>().set(FUNC(leland_80186_sound_device::pit0_2_w));
GENERIC_LATCH_16(config, m_soundlatch);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(wsf_80186_sound_device::device_add_mconfig)
- MCFG_DEVICE_ADD("audiocpu", I80186, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(leland_80186_map_program)
- MCFG_DEVICE_IO_MAP(ataxx_80186_map_io)
- MCFG_80186_CHIP_SELECT_CB(WRITE16(*this, leland_80186_sound_device, peripheral_ctrl))
- MCFG_80186_TMROUT0_HANDLER(WRITELINE(*this, leland_80186_sound_device, i80186_tmr0_w))
- MCFG_80186_TMROUT1_HANDLER(WRITELINE(*this, leland_80186_sound_device, i80186_tmr1_w))
+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();
- MCFG_DEVICE_ADD("dac1", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac2", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac3", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac4", AD7524, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- MCFG_DEVICE_ADD("dac9", AD7533, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) // unknown DAC
- MCFG_DEVICE_ADD("dac1vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac1", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac1", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac2vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac2", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac2", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac3vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac3", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac3", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("dac4vol", DAC_8BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(0, "dac4", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac4", -1.0, DAC_VREF_NEG_INPUT) // unknown DAC
- MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0)
- MCFG_SOUND_ROUTE(0, "dac1vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac2vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac3vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac4vol", 1.0, DAC_VREF_POS_INPUT)
- MCFG_SOUND_ROUTE(0, "dac9", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac9", -1.0, DAC_VREF_NEG_INPUT)
+ 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);
@@ -313,7 +352,7 @@ MACHINE_CONFIG_START(wsf_80186_sound_device::device_add_mconfig)
m_pit[0]->out_handler<2>().set(FUNC(leland_80186_sound_device::pit0_2_w));
GENERIC_LATCH_16(config, m_soundlatch);
-MACHINE_CONFIG_END
+}
void leland_80186_sound_device::leland_80186_map_program(address_map &map)