abc80: Fixed sound. [Curt Coder]

This commit is contained in:
Curt Coder 2017-03-12 21:08:18 +02:00
parent 01683a67bb
commit 5676b415e5
2 changed files with 15 additions and 18 deletions

View File

@ -69,7 +69,6 @@ Notes:
- MyAB TKN80 80-column card
- GeJo 80-column card
- Mikrodatorn 64K expansion
- floppy
- Metric ABC CAD 1000
*/
@ -152,12 +151,19 @@ WRITE8_MEMBER( abc80_state::write )
//**************************************************************************
//-------------------------------------------------
// vco_voltage_w - CSG VCO voltage select
// csg_w -
//-------------------------------------------------
WRITE_LINE_MEMBER( abc80_state::vco_voltage_w )
WRITE8_MEMBER( abc80_state::csg_w )
{
m_psg->vco_voltage_w(state ? 2.5 : 0);
m_csg->enable_w(!BIT(data, 0));
m_csg->vco_voltage_w(BIT(data, 1) ? 2.5 : 0);
m_csg->vco_w(BIT(data, 2));
m_csg->mixer_b_w(BIT(data, 3));
m_csg->mixer_a_w(BIT(data, 4));
m_csg->mixer_c_w(BIT(data, 5));
m_csg->envelope_2_w(BIT(data, 6));
m_csg->envelope_1_w(BIT(data, 7));
}
@ -189,7 +195,7 @@ static ADDRESS_MAP_START( abc80_io, AS_IO, 8, abc80_state )
AM_RANGE(0x03, 0x03) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c2_w)
AM_RANGE(0x04, 0x04) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c3_w)
AM_RANGE(0x05, 0x05) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_t, c4_w)
AM_RANGE(0x06, 0x06) AM_WRITE_PORT("SN76477")
AM_RANGE(0x06, 0x06) AM_WRITE(csg_w)
AM_RANGE(0x07, 0x07) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_t, rst_r)
AM_RANGE(0x10, 0x13) AM_MIRROR(0x04) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read_alt, write_alt)
ADDRESS_MAP_END
@ -224,16 +230,6 @@ static INPUT_PORTS_START( abc80 )
PORT_DIPUNKNOWN_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:6" )
PORT_DIPUNKNOWN_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:7" )
PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:8" )
PORT_START("SN76477")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(SN76477_TAG, sn76477_device, enable_w)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, abc80_state, vco_voltage_w)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(SN76477_TAG, sn76477_device, vco_w)
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(SN76477_TAG, sn76477_device, mixer_b_w)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(SN76477_TAG, sn76477_device, mixer_a_w)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(SN76477_TAG, sn76477_device, mixer_c_w)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(SN76477_TAG, sn76477_device, envelope_2_w)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_WRITE_LINE_DEVICE_MEMBER(SN76477_TAG, sn76477_device, envelope_1_w)
INPUT_PORTS_END
@ -536,7 +532,7 @@ static MACHINE_CONFIG_START( abc80, abc80_state )
MCFG_SN76477_ATTACK_PARAMS(CAP_U(10), RES_K(2.2)) // attack_decay_cap + attack_res: C50 10u/35V - R21 2.2k
MCFG_SN76477_AMP_RES(RES_K(33)) // amplitude_res: R19 33k
MCFG_SN76477_FEEDBACK_RES(RES_K(10)) // feedback_res: R18 10k
MCFG_SN76477_VCO_PARAMS(0, CAP_N(10), RES_K(100)) // VCO volt + cap + res: 0V or 2.5V - C48 10n - R20 100k
MCFG_SN76477_VCO_PARAMS(0, CAP_N(10), RES_K(100)) // VCO volt + cap + res: 0V/2.5V (voltage divider R17 1k / R16 1k) - C48 10n - R20 100k
MCFG_SN76477_PITCH_VOLTAGE(0) // pitch_voltage: N/C
MCFG_SN76477_SLF_PARAMS(CAP_U(1), RES_K(220)) // slf caps + res: C51 1u/35V - R22 220k
MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.1), RES_K(330)) // oneshot caps + res: C53 0.1u - R25 330k

View File

@ -69,7 +69,7 @@ public:
driver_device(mconfig, type, tag),
m_maincpu(*this, Z80_TAG),
m_pio(*this, Z80PIO_TAG),
m_psg(*this, SN76477_TAG),
m_csg(*this, SN76477_TAG),
m_cassette(*this, "cassette"),
m_bus(*this, ABCBUS_TAG),
m_kb(*this, ABC80_KEYBOARD_TAG),
@ -92,7 +92,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_pio;
required_device<sn76477_device> m_psg;
required_device<sn76477_device> m_csg;
required_device<cassette_image_device> m_cassette;
required_device<abcbus_slot_t> m_bus;
required_device<abc80_keyboard_device> m_kb;
@ -146,6 +146,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( keydown_w );
DECLARE_WRITE8_MEMBER( kbd_w );
DECLARE_WRITE8_MEMBER( csg_w );
DECLARE_QUICKLOAD_LOAD_MEMBER( bac );