(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"
#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)

View File

@ -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<cpu_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;