(MESS) abc80: Added cassette sound. [Curt Coder]

This commit is contained in:
Curt Coder 2015-03-31 08:54:23 +03:00
parent 6bd93dc2c9
commit c8f822f7c5
2 changed files with 45 additions and 39 deletions

View File

@ -79,17 +79,6 @@ Notes:
#include "includes/abc80.h" #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); 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 // MACHINE INITIALIZATION
//************************************************************************** //**************************************************************************
@ -476,11 +473,6 @@ void abc80_state::machine_start()
// MACHINE DRIVERS // 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 ) // 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_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_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MCFG_SOUND_WAVE_ADD(WAVE_TAG, CASSETTE_TAG)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices // devices
MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_11_9808MHz/2/2) MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_11_9808MHz/2/2)
MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) 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_IN_PB_CB(READ8(abc80_state, pio_pb_r))
MCFG_Z80PIO_OUT_PB_CB(WRITE8(abc80_state, pio_pb_w)) MCFG_Z80PIO_OUT_PB_CB(WRITE8(abc80_state, pio_pb_w))
MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_ADD(CASSETTE_TAG)
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
MCFG_CASSETTE_INTERFACE("abc80_cass") MCFG_CASSETTE_INTERFACE("abc80_cass")
MCFG_DEVICE_ADD(ABC80_KEYBOARD_TAG, ABC80_KEYBOARD, 0) MCFG_DEVICE_ADD(ABC80_KEYBOARD_TAG, ABC80_KEYBOARD, 0)

View File

@ -21,6 +21,7 @@
#include "machine/ram.h" #include "machine/ram.h"
#include "machine/z80pio.h" #include "machine/z80pio.h"
#include "sound/sn76477.h" #include "sound/sn76477.h"
#include "sound/wave.h"
#define ABC80_HTOTAL 384 #define ABC80_HTOTAL 384
#define ABC80_HBEND 35 #define ABC80_HBEND 35
@ -56,32 +57,34 @@
#define Z80PIO_TAG "cd67" #define Z80PIO_TAG "cd67"
#define SN76477_TAG "g8" #define SN76477_TAG "g8"
#define RS232_TAG "ser" #define RS232_TAG "ser"
#define CASSETTE_TAG "cassette"
#define KEYBOARD_TAG "keyboard"
#define TIMER_CASSETTE_TAG "cass" #define TIMER_CASSETTE_TAG "cass"
class abc80_state : public driver_device class abc80_state : public driver_device
{ {
public: public:
abc80_state(const machine_config &mconfig, device_type type, const char *tag) abc80_state(const machine_config &mconfig, device_type type, const char *tag) :
: driver_device(mconfig, type, tag), driver_device(mconfig, type, tag),
m_maincpu(*this, Z80_TAG), m_maincpu(*this, Z80_TAG),
m_pio(*this, Z80PIO_TAG), m_pio(*this, Z80PIO_TAG),
m_psg(*this, SN76477_TAG), m_psg(*this, SN76477_TAG),
m_cassette(*this, "cassette"), m_cassette(*this, "cassette"),
m_bus(*this, ABCBUS_TAG), m_bus(*this, ABCBUS_TAG),
m_kb(*this, ABC80_KEYBOARD_TAG), m_kb(*this, ABC80_KEYBOARD_TAG),
m_ram(*this, RAM_TAG), m_ram(*this, RAM_TAG),
m_rs232(*this, RS232_TAG), m_rs232(*this, RS232_TAG),
m_palette(*this, "palette"), m_palette(*this, "palette"),
m_rom(*this, Z80_TAG), m_rom(*this, Z80_TAG),
m_mmu_rom(*this, "mmu"), m_mmu_rom(*this, "mmu"),
m_char_rom(*this, "chargen"), m_char_rom(*this, "chargen"),
m_hsync_prom(*this, "hsync"), m_hsync_prom(*this, "hsync"),
m_vsync_prom(*this, "vsync"), m_vsync_prom(*this, "vsync"),
m_line_prom(*this, "line"), m_line_prom(*this, "line"),
m_attr_prom(*this, "attr"), m_attr_prom(*this, "attr"),
m_video_ram(*this, "video_ram"), m_video_ram(*this, "video_ram"),
m_tape_in(1), m_tape_in(1),
m_tape_in_latch(1) m_tape_in_latch(1)
{ } { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
@ -133,6 +136,14 @@ public:
DECLARE_WRITE_LINE_MEMBER( keydown_w ); DECLARE_WRITE_LINE_MEMBER( keydown_w );
DECLARE_WRITE8_MEMBER( kbd_w ); DECLARE_WRITE8_MEMBER( kbd_w );
enum
{
MMU_XM = 0x01,
MMU_ROM = 0x02,
MMU_VRAMS = 0x04,
MMU_RAM = 0x08
};
// keyboard state // keyboard state
int m_key_data; int m_key_data;
int m_key_strobe; int m_key_strobe;