mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
harddriv.cpp: Add 74LS259 to sound board (nw)
This commit is contained in:
parent
04295ba3e1
commit
14d282e0a4
@ -32,6 +32,7 @@ DEFINE_DEVICE_TYPE(HARDDRIV_SOUND_BOARD, harddriv_sound_board_device, "harddriv_
|
||||
harddriv_sound_board_device::harddriv_sound_board_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, HARDDRIV_SOUND_BOARD, tag, owner, clock),
|
||||
m_soundcpu(*this, "soundcpu"),
|
||||
m_latch(*this, "latch"),
|
||||
m_dac(*this, "dac"),
|
||||
m_sounddsp(*this, "sounddsp"),
|
||||
m_sounddsp_ram(*this, "sounddsp_ram"),
|
||||
@ -192,41 +193,42 @@ READ16_MEMBER(harddriv_sound_board_device::hdsnd68k_status_r)
|
||||
|
||||
WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_latches_w)
|
||||
{
|
||||
/* bit 3 selects the value; data is ignored */
|
||||
data = (offset >> 3) & 1;
|
||||
// bit 3 selects the value; data is ignored
|
||||
// low 3 bits select the function
|
||||
m_latch->write_bit(offset & 7, (offset >> 3) & 1);
|
||||
}
|
||||
|
||||
/* low 3 bits select the function */
|
||||
offset &= 7;
|
||||
switch (offset)
|
||||
{
|
||||
case 0: /* SPWR - 5220 write strobe */
|
||||
/* data == 0 means high, 1 means low */
|
||||
logerror("%06X:SPWR=%d\n", space.device().safe_pcbase(), data);
|
||||
break;
|
||||
|
||||
case 1: /* SPRES - 5220 hard reset */
|
||||
/* data == 0 means low, 1 means high */
|
||||
logerror("%06X:SPRES=%d\n", space.device().safe_pcbase(), data);
|
||||
break;
|
||||
WRITE_LINE_MEMBER(harddriv_sound_board_device::speech_write_w)
|
||||
{
|
||||
// data == 0 means high, 1 means low
|
||||
logerror("%06X:SPWR=%d\n", m_soundcpu->pcbase(), state);
|
||||
}
|
||||
|
||||
case 2: /* SPRATE */
|
||||
/* data == 0 means 8kHz, 1 means 10kHz */
|
||||
logerror("%06X:SPRATE=%d\n", space.device().safe_pcbase(), data);
|
||||
break;
|
||||
|
||||
case 3: /* CRAMEN */
|
||||
/* data == 0 means disable 68k access to COM320, 1 means enable */
|
||||
m_cramen = data;
|
||||
break;
|
||||
WRITE_LINE_MEMBER(harddriv_sound_board_device::speech_reset_w)
|
||||
{
|
||||
// data == 0 means low, 1 means high
|
||||
logerror("%06X:SPRES=%d\n", m_soundcpu->pcbase(), state);
|
||||
}
|
||||
|
||||
case 4: /* RES320 */
|
||||
logerror("%06X:RES320=%d\n", space.device().safe_pcbase(), data);
|
||||
m_sounddsp->set_input_line(INPUT_LINE_HALT, data ? CLEAR_LINE : ASSERT_LINE);
|
||||
break;
|
||||
|
||||
case 7: /* LED */
|
||||
break;
|
||||
}
|
||||
WRITE_LINE_MEMBER(harddriv_sound_board_device::speech_rate_w)
|
||||
{
|
||||
// data == 0 means 8kHz, 1 means 10kHz
|
||||
logerror("%06X:SPRATE=%d\n", m_soundcpu->pcbase(), state);
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(harddriv_sound_board_device::cram_enable_w)
|
||||
{
|
||||
// data == 0 means disable 68k access to COM320, 1 means enable
|
||||
m_cramen = state;
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(harddriv_sound_board_device::led_w)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@ -433,6 +435,14 @@ MACHINE_CONFIG_MEMBER( harddriv_sound_board_device::device_add_mconfig )
|
||||
MCFG_CPU_ADD("soundcpu", M68000, XTAL_16MHz/2)
|
||||
MCFG_CPU_PROGRAM_MAP(driversnd_68k_map)
|
||||
|
||||
MCFG_DEVICE_ADD("latch", LS259, 0) // 80R
|
||||
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(harddriv_sound_board_device, speech_write_w)) // SPWR - 5220 write strobe
|
||||
MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(harddriv_sound_board_device, speech_reset_w)) // SPRES - 5220 hard reset
|
||||
MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(harddriv_sound_board_device, speech_rate_w)) // SPRATE
|
||||
MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(harddriv_sound_board_device, cram_enable_w)) // CRAMEN
|
||||
MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(INPUTLINE("sounddsp", INPUT_LINE_HALT)) MCFG_DEVCB_INVERT // RES320
|
||||
MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(harddriv_sound_board_device, led_w))
|
||||
|
||||
MCFG_CPU_ADD("sounddsp", TMS32010, XTAL_20MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(driversnd_dsp_program_map)
|
||||
/* Data Map is internal to the CPU */
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "cpu/tms32010/tms32010.h"
|
||||
#include "cpu/tms34010/tms34010.h"
|
||||
|
||||
#include "machine/74259.h"
|
||||
#include "machine/asic65.h"
|
||||
#include "machine/mc68681.h"
|
||||
#include "machine/timekpr.h"
|
||||
@ -485,6 +486,11 @@ public:
|
||||
DECLARE_READ16_MEMBER(hdsnd68k_320port_r);
|
||||
DECLARE_READ16_MEMBER(hdsnd68k_status_r);
|
||||
DECLARE_WRITE16_MEMBER(hdsnd68k_latches_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(speech_write_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(speech_reset_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(speech_rate_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(cram_enable_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(led_w);
|
||||
DECLARE_WRITE16_MEMBER(hdsnd68k_speech_w);
|
||||
DECLARE_WRITE16_MEMBER(hdsnd68k_irqclr_w);
|
||||
DECLARE_READ16_MEMBER(hdsnd68k_320ram_r);
|
||||
@ -510,6 +516,7 @@ protected:
|
||||
|
||||
private:
|
||||
required_device<cpu_device> m_soundcpu;
|
||||
required_device<ls259_device> m_latch;
|
||||
required_device<dac_word_interface> m_dac;
|
||||
required_device<cpu_device> m_sounddsp;
|
||||
required_shared_ptr<uint16_t> m_sounddsp_ram;
|
||||
|
Loading…
Reference in New Issue
Block a user