From c8f822f7c5f7d74b22ef613a8f0167f0f9dd2cd8 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 31 Mar 2015 08:54:23 +0300 Subject: [PATCH] (MESS) abc80: Added cassette sound. [Curt Coder] --- src/mess/drivers/abc80.c | 31 ++++++++++------------- src/mess/includes/abc80.h | 53 +++++++++++++++++++++++---------------- 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/src/mess/drivers/abc80.c b/src/mess/drivers/abc80.c index 91bc13bcb5a..fd20868e73e 100644 --- a/src/mess/drivers/abc80.c +++ b/src/mess/drivers/abc80.c @@ -79,17 +79,6 @@ Notes: #include "includes/abc80.h" -#define KEYBOARD_TAG "keyboard" - -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define MMU_XM 0x01 -#define MMU_ROM 0x02 -#define MMU_VRAMS 0x04 -#define MMU_RAM 0x08 - //************************************************************************** @@ -395,6 +384,14 @@ WRITE8_MEMBER( abc80_state::kbd_w ) timer_set(attotime::from_msec(50), TIMER_ID_FAKE_KEYBOARD_CLEAR); } + +DEVICE_INPUT_DEFAULTS_START( abc830_slow ) + DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x03) + DEVICE_INPUT_DEFAULTS("S1", 0x01, 0x01) +DEVICE_INPUT_DEFAULTS_END + + + //************************************************************************** // MACHINE INITIALIZATION //************************************************************************** @@ -476,11 +473,6 @@ void abc80_state::machine_start() // MACHINE DRIVERS //************************************************************************** -DEVICE_INPUT_DEFAULTS_START( abc830_slow ) - DEVICE_INPUT_DEFAULTS("SW1", 0x0f, 0x03) - DEVICE_INPUT_DEFAULTS("S1", 0x01, 0x01) -DEVICE_INPUT_DEFAULTS_END - //------------------------------------------------- // MACHINE_CONFIG( abc80 ) //------------------------------------------------- @@ -509,6 +501,9 @@ static MACHINE_CONFIG_START( abc80, abc80_state ) MCFG_SN76477_ONESHOT_PARAMS(CAP_U(0.1), RES_K(330)) // oneshot caps + res: C53 0.1u - R25 330k MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + // devices MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_11_9808MHz/2/2) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -516,8 +511,8 @@ static MACHINE_CONFIG_START( abc80, abc80_state ) MCFG_Z80PIO_IN_PB_CB(READ8(abc80_state, pio_pb_r)) MCFG_Z80PIO_OUT_PB_CB(WRITE8(abc80_state, pio_pb_w)) - MCFG_CASSETTE_ADD("cassette") - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) + MCFG_CASSETTE_ADD(CASSETTE_TAG) + MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) MCFG_CASSETTE_INTERFACE("abc80_cass") MCFG_DEVICE_ADD(ABC80_KEYBOARD_TAG, ABC80_KEYBOARD, 0) diff --git a/src/mess/includes/abc80.h b/src/mess/includes/abc80.h index d58d508545f..aeb248bbf6d 100644 --- a/src/mess/includes/abc80.h +++ b/src/mess/includes/abc80.h @@ -21,6 +21,7 @@ #include "machine/ram.h" #include "machine/z80pio.h" #include "sound/sn76477.h" +#include "sound/wave.h" #define ABC80_HTOTAL 384 #define ABC80_HBEND 35 @@ -56,32 +57,34 @@ #define Z80PIO_TAG "cd67" #define SN76477_TAG "g8" #define RS232_TAG "ser" +#define CASSETTE_TAG "cassette" +#define KEYBOARD_TAG "keyboard" #define TIMER_CASSETTE_TAG "cass" class abc80_state : public driver_device { public: - abc80_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, Z80_TAG), - m_pio(*this, Z80PIO_TAG), - m_psg(*this, SN76477_TAG), - m_cassette(*this, "cassette"), - m_bus(*this, ABCBUS_TAG), - m_kb(*this, ABC80_KEYBOARD_TAG), - m_ram(*this, RAM_TAG), - m_rs232(*this, RS232_TAG), - m_palette(*this, "palette"), - m_rom(*this, Z80_TAG), - m_mmu_rom(*this, "mmu"), - m_char_rom(*this, "chargen"), - m_hsync_prom(*this, "hsync"), - m_vsync_prom(*this, "vsync"), - m_line_prom(*this, "line"), - m_attr_prom(*this, "attr"), - m_video_ram(*this, "video_ram"), - m_tape_in(1), - m_tape_in_latch(1) + abc80_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, Z80_TAG), + m_pio(*this, Z80PIO_TAG), + m_psg(*this, SN76477_TAG), + m_cassette(*this, "cassette"), + m_bus(*this, ABCBUS_TAG), + m_kb(*this, ABC80_KEYBOARD_TAG), + m_ram(*this, RAM_TAG), + m_rs232(*this, RS232_TAG), + m_palette(*this, "palette"), + m_rom(*this, Z80_TAG), + m_mmu_rom(*this, "mmu"), + m_char_rom(*this, "chargen"), + m_hsync_prom(*this, "hsync"), + m_vsync_prom(*this, "vsync"), + m_line_prom(*this, "line"), + m_attr_prom(*this, "attr"), + m_video_ram(*this, "video_ram"), + m_tape_in(1), + m_tape_in_latch(1) { } required_device m_maincpu; @@ -133,6 +136,14 @@ public: DECLARE_WRITE_LINE_MEMBER( keydown_w ); DECLARE_WRITE8_MEMBER( kbd_w ); + enum + { + MMU_XM = 0x01, + MMU_ROM = 0x02, + MMU_VRAMS = 0x04, + MMU_RAM = 0x08 + }; + // keyboard state int m_key_data; int m_key_strobe;