mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
tms32010.cpp: devcb instead of memory map for bio line (nw)
This commit is contained in:
parent
b4e62ef6cc
commit
82c526ea38
@ -93,7 +93,7 @@ WRITE16_MEMBER(dectalk_isa_device::dsp_dma_w)
|
||||
m_dsp_dma = data;
|
||||
}
|
||||
|
||||
READ16_MEMBER(dectalk_isa_device::bio_line_r)
|
||||
READ_LINE_MEMBER(dectalk_isa_device::bio_line_r)
|
||||
{
|
||||
// TODO: reading the bio line doesn't cause any direct external effects so this is wrong
|
||||
if(m_bio == ASSERT_LINE)
|
||||
@ -129,7 +129,6 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START(dectalk_dsp_io, AS_IO, 16, dectalk_isa_device)
|
||||
AM_RANGE(0x0, 0x0) AM_READ(dsp_dma_r)
|
||||
AM_RANGE(0x1, 0x1) AM_READWRITE(dsp_dma_r, dac_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(bio_line_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(dectalk_dsp_map, AS_PROGRAM, 16, dectalk_isa_device)
|
||||
@ -144,6 +143,7 @@ static MACHINE_CONFIG_FRAGMENT( dectalk_isa )
|
||||
|
||||
MCFG_CPU_ADD("dectalk_dsp", TMS32015, XTAL_20MHz)
|
||||
MCFG_CPU_IO_MAP(dectalk_dsp_io)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(dectalk_isa_device, bio_line_r))
|
||||
MCFG_CPU_PROGRAM_MAP(dectalk_dsp_map)
|
||||
|
||||
MCFG_SPEAKER_STANDARD_MONO("speaker")
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
DECLARE_READ16_MEMBER(dsp_dma_r);
|
||||
DECLARE_WRITE16_MEMBER(dsp_dma_w);
|
||||
DECLARE_WRITE16_MEMBER(output_ctl_w);
|
||||
DECLARE_READ16_MEMBER(bio_line_r);
|
||||
DECLARE_READ_LINE_MEMBER(bio_line_r);
|
||||
DECLARE_WRITE16_MEMBER(irq_line_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(clock_w);
|
||||
|
||||
|
@ -71,7 +71,6 @@
|
||||
#define M_RDOP_ARG(A) TMS32010_RDOP_ARG(A)
|
||||
#define P_IN(A) TMS32010_In(A)
|
||||
#define P_OUT(A,V) TMS32010_Out(A,V)
|
||||
#define BIO_IN TMS32010_BIO_In
|
||||
|
||||
|
||||
const device_type TMS32010 = &device_creator<tms32010_device>;
|
||||
@ -102,7 +101,8 @@ tms32010_device::tms32010_device(const machine_config &mconfig, const char *tag,
|
||||
: cpu_device(mconfig, TMS32010, "TMS32010", tag, owner, clock, "tms32010", __FILE__)
|
||||
, m_program_config("program", ENDIANNESS_BIG, 16, 12, -1)
|
||||
, m_data_config("data", ENDIANNESS_BIG, 16, 8, -1, ADDRESS_MAP_NAME(tms32010_ram))
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 4+1, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 4, -1)
|
||||
, m_bio_in(*this)
|
||||
, m_addr_mask(0x0fff)
|
||||
{
|
||||
}
|
||||
@ -112,7 +112,8 @@ tms32010_device::tms32010_device(const machine_config &mconfig, device_type type
|
||||
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
, m_program_config("program", ENDIANNESS_BIG, 16, 12, -1)
|
||||
, m_data_config("data", ENDIANNESS_BIG, 16, 8, -1, ADDRESS_MAP_NAME(tms32015_ram))
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 4+1, -1)
|
||||
, m_io_config("io", ENDIANNESS_BIG, 16, 4, -1)
|
||||
, m_bio_in(*this)
|
||||
, m_addr_mask(addr_mask)
|
||||
{
|
||||
}
|
||||
@ -157,14 +158,6 @@ offs_t tms32010_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8
|
||||
#define IND (m_AR[ARP] & 0xff) /* address used in indirect memory access operations */
|
||||
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Read the state of the BIO pin
|
||||
*/
|
||||
|
||||
#define TMS32010_BIO_In (m_io->read_word(TMS32010_BIO<<1))
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Input a word from given I/O port
|
||||
*/
|
||||
@ -448,7 +441,7 @@ void tms32010_device::bgz()
|
||||
}
|
||||
void tms32010_device::bioz()
|
||||
{
|
||||
if (BIO_IN != CLEAR_LINE) {
|
||||
if (m_bio_in() != CLEAR_LINE) {
|
||||
m_PC = M_RDOP_ARG(m_PC);
|
||||
m_icount -= add_branch_cycle();
|
||||
}
|
||||
@ -842,6 +835,8 @@ void tms32010_device::device_start()
|
||||
m_data = &space(AS_DATA);
|
||||
m_io = &space(AS_IO);
|
||||
|
||||
m_bio_in.resolve_safe(0);
|
||||
|
||||
m_PREVPC = 0;
|
||||
m_ALU.d = 0;
|
||||
m_Preg.d = 0;
|
||||
|
@ -18,13 +18,8 @@
|
||||
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Use this in the I/O port address fields of your driver for the BIO pin
|
||||
* i.e,
|
||||
* AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(twincobr_bio_line_r)
|
||||
*/
|
||||
|
||||
#define TMS32010_BIO 0x10 /* BIO input */
|
||||
#define MCFG_TMS32010_BIO_IN_CB(_devcb) \
|
||||
devcb = &tms32010_device::set_bio_in_cb(*device, DEVCB_##_devcb); /* BIO input */
|
||||
|
||||
|
||||
#define TMS32010_INT_PENDING 0x80000000
|
||||
@ -50,6 +45,9 @@ public:
|
||||
// construction/destruction
|
||||
tms32010_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
tms32010_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int addr_mask);
|
||||
|
||||
// static configuration helpers
|
||||
template<class _Object> static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast<tms32010_device &>(device).m_bio_in.set_callback(object); }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -80,6 +78,8 @@ private:
|
||||
address_space_config m_program_config;
|
||||
address_space_config m_data_config;
|
||||
address_space_config m_io_config;
|
||||
|
||||
devcb_read_line m_bio_in;
|
||||
|
||||
typedef void ( tms32010_device::*opcode_func ) ();
|
||||
struct tms32010_opcode
|
||||
|
@ -2,7 +2,7 @@
|
||||
// copyright-holders:Aaron Giles
|
||||
/***************************************************************************
|
||||
|
||||
bsmt2000.c
|
||||
bsmt2000.cpp
|
||||
|
||||
BSMT2000 device emulator.
|
||||
|
||||
@ -39,7 +39,6 @@ static ADDRESS_MAP_START( tms_io_map, AS_IO, 16, bsmt2000_device)
|
||||
AM_RANGE(2, 2) AM_READ(tms_rom_r)
|
||||
AM_RANGE(3, 3) AM_WRITE(tms_left_w)
|
||||
AM_RANGE(7, 7) AM_WRITE(tms_right_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(tms_write_pending_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -49,6 +48,7 @@ static MACHINE_CONFIG_FRAGMENT( bsmt2000 )
|
||||
MCFG_CPU_PROGRAM_MAP(tms_program_map)
|
||||
// data map is internal to the CPU
|
||||
MCFG_CPU_IO_MAP(tms_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(bsmt2000_device, tms_write_pending_r))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -352,7 +352,7 @@ WRITE16_MEMBER( bsmt2000_device::tms_right_w )
|
||||
// on the TMS32015
|
||||
//-------------------------------------------------
|
||||
|
||||
READ16_MEMBER( bsmt2000_device::tms_write_pending_r )
|
||||
READ_LINE_MEMBER( bsmt2000_device::tms_write_pending_r )
|
||||
{
|
||||
return m_write_pending ? 1 : 0;
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER( tms_rom_bank_w );
|
||||
DECLARE_WRITE16_MEMBER( tms_left_w );
|
||||
DECLARE_WRITE16_MEMBER( tms_right_w );
|
||||
DECLARE_READ16_MEMBER( tms_write_pending_r );
|
||||
DECLARE_READ_LINE_MEMBER( tms_write_pending_r );
|
||||
|
||||
private:
|
||||
// timers
|
||||
|
@ -299,7 +299,7 @@ WRITE16_MEMBER(harddriv_sound_board_device::hdsnd68k_320com_w)
|
||||
*
|
||||
*************************************/
|
||||
|
||||
READ16_MEMBER(harddriv_sound_board_device::hdsnddsp_get_bio)
|
||||
READ_LINE_MEMBER(harddriv_sound_board_device::hdsnddsp_get_bio)
|
||||
{
|
||||
UINT64 cycles_since_last_bio = m_sounddsp->total_cycles() - m_last_bio_cycles;
|
||||
INT32 cycles_until_bio = CYCLES_PER_BIO - cycles_since_last_bio;
|
||||
@ -307,7 +307,7 @@ READ16_MEMBER(harddriv_sound_board_device::hdsnddsp_get_bio)
|
||||
/* if we're not at the next BIO yet, advance us there */
|
||||
if (cycles_until_bio > 0)
|
||||
{
|
||||
space.device().execute().adjust_icount(-cycles_until_bio);
|
||||
m_sounddsp->adjust_icount(-cycles_until_bio);
|
||||
m_last_bio_cycles += CYCLES_PER_BIO;
|
||||
}
|
||||
else
|
||||
@ -421,7 +421,6 @@ static ADDRESS_MAP_START( driversnd_dsp_io_map, AS_IO, 16, harddriv_sound_board_
|
||||
AM_RANGE(4, 4) AM_WRITE(hdsnddsp_mute_w)
|
||||
AM_RANGE(5, 5) AM_WRITE(hdsnddsp_gen68kirq_w)
|
||||
AM_RANGE(6, 7) AM_WRITE(hdsnddsp_soundaddr_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(hdsnddsp_get_bio)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -435,6 +434,7 @@ static MACHINE_CONFIG_FRAGMENT( harddriv_snd )
|
||||
MCFG_CPU_PROGRAM_MAP(driversnd_dsp_program_map)
|
||||
/* Data Map is internal to the CPU */
|
||||
MCFG_CPU_IO_MAP(driversnd_dsp_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(harddriv_sound_board_device, hdsnddsp_get_bio))
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
@ -86,11 +86,11 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(m68k_shared_1_w);
|
||||
DECLARE_READ16_MEMBER(dsp0_status_r);
|
||||
DECLARE_WRITE16_MEMBER(dsp0_control_w);
|
||||
DECLARE_READ16_MEMBER(dsp0_bio_r);
|
||||
DECLARE_READ_LINE_MEMBER(dsp0_bio_r);
|
||||
DECLARE_WRITE16_MEMBER(dsp0_bank_w);
|
||||
DECLARE_READ16_MEMBER(dsp1_status_r);
|
||||
DECLARE_WRITE16_MEMBER(dsp1_control_w);
|
||||
DECLARE_READ16_MEMBER(dsp1_bio_r);
|
||||
DECLARE_READ_LINE_MEMBER(dsp1_bio_r);
|
||||
DECLARE_WRITE16_MEMBER(dsp1_bank_w);
|
||||
DECLARE_READ16_MEMBER(analog_r);
|
||||
DECLARE_DRIVER_INIT(airrace);
|
||||
@ -601,7 +601,7 @@ WRITE16_MEMBER(atarisy4_state::dsp0_control_w)
|
||||
m_csr[0] = data;
|
||||
}
|
||||
|
||||
READ16_MEMBER(atarisy4_state::dsp0_bio_r)
|
||||
READ_LINE_MEMBER(atarisy4_state::dsp0_bio_r)
|
||||
{
|
||||
return BIT(m_csr[0], 2);
|
||||
}
|
||||
@ -635,7 +635,7 @@ WRITE16_MEMBER(atarisy4_state::dsp1_control_w)
|
||||
m_csr[1] = data;
|
||||
}
|
||||
|
||||
READ16_MEMBER(atarisy4_state::dsp1_bio_r)
|
||||
READ_LINE_MEMBER(atarisy4_state::dsp1_bio_r)
|
||||
{
|
||||
return BIT(m_csr[1], 2);
|
||||
}
|
||||
@ -692,7 +692,6 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( dsp0_io_map, AS_IO, 16, atarisy4_state )
|
||||
AM_RANGE(0x00, 0x01) AM_WRITE(dsp0_bank_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(dsp0_bio_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -710,7 +709,6 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( dsp1_io_map, AS_IO, 16, atarisy4_state )
|
||||
AM_RANGE(0x00, 0x01) AM_WRITE(dsp1_bank_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(dsp1_bio_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -766,6 +764,7 @@ static MACHINE_CONFIG_START( atarisy4, atarisy4_state )
|
||||
MCFG_CPU_ADD("dsp0", TMS32010, 16000000)
|
||||
MCFG_CPU_PROGRAM_MAP(dsp0_map)
|
||||
MCFG_CPU_IO_MAP(dsp0_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(atarisy4_state, dsp0_bio_r))
|
||||
|
||||
|
||||
MCFG_SCREEN_ADD("screen", RASTER)
|
||||
@ -781,6 +780,7 @@ static MACHINE_CONFIG_DERIVED( airrace, atarisy4 )
|
||||
MCFG_CPU_ADD("dsp1", TMS32010, 16000000)
|
||||
MCFG_CPU_PROGRAM_MAP(dsp1_map)
|
||||
MCFG_CPU_IO_MAP(dsp1_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(atarisy4_state, dsp1_bio_r))
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(atarisy4_state,airrace)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -214,7 +214,7 @@ WRITE16_MEMBER(coolpool_state::amerdart_misc_w)
|
||||
m_dsp->set_input_line(INPUT_LINE_RESET, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
READ16_MEMBER(coolpool_state::amerdart_dsp_bio_line_r)
|
||||
READ_LINE_MEMBER(coolpool_state::amerdart_dsp_bio_line_r)
|
||||
{
|
||||
/* Skip idle checking */
|
||||
if (m_old_cmd == m_cmd_pending)
|
||||
@ -225,7 +225,7 @@ READ16_MEMBER(coolpool_state::amerdart_dsp_bio_line_r)
|
||||
if (m_same_cmd_count >= 5)
|
||||
{
|
||||
m_same_cmd_count = 5;
|
||||
space.device().execute().spin();
|
||||
m_dsp->spin();
|
||||
}
|
||||
m_old_cmd = m_cmd_pending;
|
||||
|
||||
@ -664,7 +664,6 @@ static ADDRESS_MAP_START( amerdart_dsp_io_map, AS_IO, 16, coolpool_state )
|
||||
AM_RANGE(0x05, 0x05) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x06, 0x06) AM_READ(amerdart_trackball_r)
|
||||
AM_RANGE(0x07, 0x07) AM_READ(amerdart_dsp_cmd_r)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(amerdart_dsp_bio_line_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -799,6 +798,7 @@ static MACHINE_CONFIG_START( amerdart, coolpool_state )
|
||||
MCFG_CPU_PROGRAM_MAP(amerdart_dsp_pgm_map)
|
||||
/* Data Map is internal to the CPU */
|
||||
MCFG_CPU_IO_MAP(amerdart_dsp_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(coolpool_state, amerdart_dsp_bio_line_r))
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("audioint", coolpool_state, amerdart_audio_int_gen, "screen", 0, 1)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(coolpool_state,amerdart)
|
||||
|
@ -328,7 +328,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(spc_latch_outfifo_error_stats);
|
||||
DECLARE_READ16_MEMBER(spc_infifo_data_r);
|
||||
DECLARE_WRITE16_MEMBER(spc_outfifo_data_w);
|
||||
DECLARE_READ16_MEMBER(spc_semaphore_r);
|
||||
DECLARE_READ_LINE_MEMBER(spc_semaphore_r);
|
||||
DECLARE_DRIVER_INIT(dectalk);
|
||||
virtual void machine_reset() override;
|
||||
TIMER_CALLBACK_MEMBER(outfifo_read_cb);
|
||||
@ -735,7 +735,7 @@ WRITE16_MEMBER(dectalk_state::spc_outfifo_data_w)
|
||||
//dectalk_outfifo_check(); // outfifo check should only be done in the audio 10khz polling function
|
||||
}
|
||||
|
||||
READ16_MEMBER(dectalk_state::spc_semaphore_r)// Return state of d-latch 74ls74 @ E64 'lower half' in d0 which indicates whether infifo is readable
|
||||
READ_LINE_MEMBER(dectalk_state::spc_semaphore_r)// Return state of d-latch 74ls74 @ E64 'lower half' in d0 which indicates whether infifo is readable
|
||||
{
|
||||
#ifdef SPC_LOG_DSP
|
||||
//logerror("dsp: read infifo semaphore, returned %d\n", m_infifo_semaphore); // commented due to extreme annoyance factor
|
||||
@ -793,7 +793,6 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START(tms32010_io, AS_IO, 16, dectalk_state )
|
||||
AM_RANGE(0, 0) AM_WRITE(spc_latch_outfifo_error_stats) // *set* the outfifo_status_r semaphore, and also latch the error bit at D0.
|
||||
AM_RANGE(1, 1) AM_READWRITE(spc_infifo_data_r, spc_outfifo_data_w) //read from input fifo, write to sound fifo
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(spc_semaphore_r) //read infifo-has-data-in-it fifo readable status
|
||||
//AM_RANGE(8, 8) //the newer firmware seems to want something mapped here?
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -877,6 +876,7 @@ static MACHINE_CONFIG_START( dectalk, dectalk_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32010, XTAL_20MHz) /* Y1 20MHz xtal */
|
||||
MCFG_CPU_PROGRAM_MAP(tms32010_mem)
|
||||
MCFG_CPU_IO_MAP(tms32010_io)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(dectalk_state, spc_semaphore_r)) //read infifo-has-data-in-it fifo readable status
|
||||
#ifdef USE_LOOSE_TIMING
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(100))
|
||||
#else
|
||||
|
@ -933,7 +933,6 @@ static ADDRESS_MAP_START( DSP_io_map, AS_IO, 16, toaplan1_state )
|
||||
AM_RANGE(0, 0) AM_WRITE(demonwld_dsp_addrsel_w)
|
||||
AM_RANGE(1, 1) AM_READWRITE(demonwld_dsp_r, demonwld_dsp_w)
|
||||
AM_RANGE(3, 3) AM_WRITE(demonwld_dsp_bio_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(demonwld_BIO_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -1979,6 +1978,7 @@ static MACHINE_CONFIG_START( demonwld, toaplan1_state )
|
||||
MCFG_CPU_ADD("dsp", TMS32010, XTAL_28MHz/2)
|
||||
MCFG_CPU_PROGRAM_MAP(DSP_program_map)
|
||||
MCFG_CPU_IO_MAP(DSP_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(toaplan1_state, demonwld_BIO_r))
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(600))
|
||||
|
||||
|
@ -78,11 +78,9 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(tomcat_irqclr_w);
|
||||
DECLARE_READ16_MEMBER(tomcat_inputs2_r);
|
||||
DECLARE_READ16_MEMBER(tomcat_320bio_r);
|
||||
DECLARE_READ16_MEMBER(dsp_BIO_r);
|
||||
DECLARE_READ16_MEMBER(tomcat_shared_ram_r);
|
||||
DECLARE_WRITE16_MEMBER(tomcat_shared_ram_w);
|
||||
DECLARE_READ8_MEMBER(tomcat_nvram_r);
|
||||
DECLARE_WRITE8_MEMBER(tomcat_nvram_w);
|
||||
DECLARE_READ_LINE_MEMBER(dsp_BIO_r);
|
||||
DECLARE_WRITE8_MEMBER(soundlatches_w);
|
||||
virtual void machine_start() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -232,9 +230,9 @@ READ16_MEMBER(tomcat_state::tomcat_320bio_r)
|
||||
return 0;
|
||||
}
|
||||
|
||||
READ16_MEMBER(tomcat_state::dsp_BIO_r)
|
||||
READ_LINE_MEMBER(tomcat_state::dsp_BIO_r)
|
||||
{
|
||||
if ( space.device().safe_pc() == 0x0001 )
|
||||
if ( m_dsp->pc() == 0x0001 )
|
||||
{
|
||||
if ( m_dsp_idle == 0 )
|
||||
{
|
||||
@ -243,7 +241,7 @@ READ16_MEMBER(tomcat_state::dsp_BIO_r)
|
||||
}
|
||||
return !m_dsp_BIO;
|
||||
}
|
||||
else if ( space.device().safe_pc() == 0x0003 )
|
||||
else if ( m_dsp->pc() == 0x0003 )
|
||||
{
|
||||
if ( m_dsp_BIO == 1 )
|
||||
{
|
||||
@ -264,16 +262,6 @@ READ16_MEMBER(tomcat_state::dsp_BIO_r)
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER(tomcat_state::tomcat_shared_ram_r)
|
||||
{
|
||||
return m_shared_ram[offset];
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(tomcat_state::tomcat_shared_ram_w)
|
||||
{
|
||||
COMBINE_DATA(&m_shared_ram[offset]);
|
||||
}
|
||||
|
||||
READ8_MEMBER(tomcat_state::tomcat_nvram_r)
|
||||
{
|
||||
return m_nvram[offset];
|
||||
@ -308,7 +296,7 @@ static ADDRESS_MAP_START( tomcat_map, AS_PROGRAM, 16, tomcat_state )
|
||||
AM_RANGE(0x40e01c, 0x40e01d) AM_WRITE(tomcat_ackh_w)
|
||||
AM_RANGE(0x40e01e, 0x40e01f) AM_WRITE(tomcat_txbuffh_w)
|
||||
AM_RANGE(0x800000, 0x803fff) AM_RAM AM_SHARE("vectorram")
|
||||
AM_RANGE(0xffa000, 0xffbfff) AM_READWRITE(tomcat_shared_ram_r, tomcat_shared_ram_w)
|
||||
AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("shared_ram")
|
||||
AM_RANGE(0xffc000, 0xffcfff) AM_RAM
|
||||
AM_RANGE(0xffd000, 0xffdfff) AM_DEVREADWRITE8("m48t02", timekeeper_device, read, write, 0xff00)
|
||||
AM_RANGE(0xffd000, 0xffdfff) AM_READWRITE8(tomcat_nvram_r, tomcat_nvram_w, 0x00ff)
|
||||
@ -318,9 +306,6 @@ static ADDRESS_MAP_START( dsp_map, AS_PROGRAM, 16, tomcat_state )
|
||||
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("shared_ram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( dsp_io_map, AS_IO, 16, tomcat_state )
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(dsp_BIO_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
WRITE8_MEMBER(tomcat_state::soundlatches_w)
|
||||
{
|
||||
@ -391,7 +376,7 @@ static MACHINE_CONFIG_START( tomcat, tomcat_state )
|
||||
|
||||
MCFG_CPU_ADD("dsp", TMS32010, XTAL_16MHz)
|
||||
MCFG_CPU_PROGRAM_MAP( dsp_map)
|
||||
MCFG_CPU_IO_MAP( dsp_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(tomcat_state, dsp_BIO_r))
|
||||
|
||||
MCFG_CPU_ADD("soundcpu", M6502, XTAL_14_31818MHz / 8 )
|
||||
MCFG_DEVICE_DISABLE()
|
||||
|
@ -449,7 +449,6 @@ static ADDRESS_MAP_START( DSP_io_map, AS_IO, 16, twincobr_state )
|
||||
AM_RANGE(1, 1) AM_READWRITE(twincobr_dsp_r, twincobr_dsp_w)
|
||||
AM_RANGE(2, 2) AM_READWRITE(fsharkbt_dsp_r, fsharkbt_dsp_w)
|
||||
AM_RANGE(3, 3) AM_WRITE(twincobr_dsp_bio_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(twincobr_BIO_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -669,6 +668,7 @@ static MACHINE_CONFIG_START( twincobr, twincobr_state )
|
||||
MCFG_CPU_PROGRAM_MAP(DSP_program_map)
|
||||
/* Data Map is internal to the CPU */
|
||||
MCFG_CPU_IO_MAP(DSP_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(twincobr_state, twincobr_BIO_r))
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||
|
||||
|
@ -232,7 +232,6 @@ static ADDRESS_MAP_START( DSP_io_map, AS_IO, 16, wardner_state )
|
||||
AM_RANGE(0x00, 0x00) AM_WRITE(wardner_dsp_addrsel_w)
|
||||
AM_RANGE(0x01, 0x01) AM_READWRITE(wardner_dsp_r, wardner_dsp_w)
|
||||
AM_RANGE(0x03, 0x03) AM_WRITE(twincobr_dsp_bio_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(twincobr_BIO_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -384,6 +383,7 @@ static MACHINE_CONFIG_START( wardner, wardner_state )
|
||||
MCFG_CPU_PROGRAM_MAP(DSP_program_map)
|
||||
/* Data Map is internal to the CPU */
|
||||
MCFG_CPU_IO_MAP(DSP_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(wardner_state, twincobr_BIO_r))
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
||||
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(nvram_data_w);
|
||||
DECLARE_WRITE16_MEMBER(nvram_thrash_data_w);
|
||||
DECLARE_WRITE16_MEMBER(amerdart_misc_w);
|
||||
DECLARE_READ16_MEMBER(amerdart_dsp_bio_line_r);
|
||||
DECLARE_READ_LINE_MEMBER(amerdart_dsp_bio_line_r);
|
||||
DECLARE_READ16_MEMBER(amerdart_iop_r);
|
||||
DECLARE_WRITE16_MEMBER(amerdart_iop_w);
|
||||
DECLARE_READ16_MEMBER(amerdart_dsp_cmd_r);
|
||||
|
@ -479,7 +479,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(hdsnd68k_320ports_w);
|
||||
DECLARE_READ16_MEMBER(hdsnd68k_320com_r);
|
||||
DECLARE_WRITE16_MEMBER(hdsnd68k_320com_w);
|
||||
DECLARE_READ16_MEMBER(hdsnddsp_get_bio);
|
||||
DECLARE_READ_LINE_MEMBER(hdsnddsp_get_bio);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(hdsnddsp_dac_w);
|
||||
DECLARE_WRITE16_MEMBER(hdsnddsp_comport_w);
|
||||
|
@ -89,7 +89,7 @@ public:
|
||||
DECLARE_READ16_MEMBER(demonwld_dsp_r);
|
||||
DECLARE_WRITE16_MEMBER(demonwld_dsp_w);
|
||||
DECLARE_WRITE16_MEMBER(demonwld_dsp_bio_w);
|
||||
DECLARE_READ16_MEMBER(demonwld_BIO_r);
|
||||
DECLARE_READ_LINE_MEMBER(demonwld_BIO_r);
|
||||
DECLARE_WRITE16_MEMBER(demonwld_dsp_ctrl_w);
|
||||
DECLARE_READ16_MEMBER(samesame_port_6_word_r);
|
||||
DECLARE_READ16_MEMBER(vimana_system_port_r);
|
||||
|
@ -68,7 +68,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(twincobr_dsp_bio_w);
|
||||
DECLARE_READ16_MEMBER(fsharkbt_dsp_r);
|
||||
DECLARE_WRITE16_MEMBER(fsharkbt_dsp_w);
|
||||
DECLARE_READ16_MEMBER(twincobr_BIO_r);
|
||||
DECLARE_READ_LINE_MEMBER(twincobr_BIO_r);
|
||||
DECLARE_WRITE16_MEMBER(twincobr_control_w);
|
||||
DECLARE_WRITE8_MEMBER(wardner_control_w);
|
||||
DECLARE_READ16_MEMBER(twincobr_sharedram_r);
|
||||
|
@ -516,10 +516,10 @@ READ16_MEMBER( asic65_device::stat_r )
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER( asic65_device::get_bio )
|
||||
READ_LINE_MEMBER( asic65_device::get_bio )
|
||||
{
|
||||
if (!m_tfull)
|
||||
space.device().execute().spin_until_interrupt();
|
||||
m_ourcpu->spin_until_interrupt();
|
||||
return m_tfull ? CLEAR_LINE : ASSERT_LINE;
|
||||
}
|
||||
|
||||
@ -539,7 +539,6 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( asic65_io_map, AS_IO, 16, asic65_device )
|
||||
AM_RANGE(0, 0) AM_MIRROR(6) AM_READWRITE(m68k_r, m68k_w)
|
||||
AM_RANGE(1, 1) AM_MIRROR(6) AM_READWRITE(stat_r, stat_w)
|
||||
AM_RANGE(TMS32010_BIO, TMS32010_BIO) AM_READ(get_bio)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -556,6 +555,7 @@ MACHINE_CONFIG_FRAGMENT( asic65 )
|
||||
MCFG_CPU_ADD("asic65cpu", TMS32010, 20000000)
|
||||
MCFG_CPU_PROGRAM_MAP(asic65_program_map)
|
||||
MCFG_CPU_IO_MAP(asic65_io_map)
|
||||
MCFG_TMS32010_BIO_IN_CB(READLINE(asic65_device, get_bio))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -28,11 +28,11 @@ public:
|
||||
DECLARE_READ16_MEMBER( read );
|
||||
DECLARE_READ16_MEMBER( io_r );
|
||||
|
||||
WRITE16_MEMBER( m68k_w );
|
||||
READ16_MEMBER( m68k_r );
|
||||
WRITE16_MEMBER( stat_w );
|
||||
READ16_MEMBER( stat_r );
|
||||
READ16_MEMBER( get_bio );
|
||||
DECLARE_WRITE16_MEMBER( m68k_w );
|
||||
DECLARE_READ16_MEMBER( m68k_r );
|
||||
DECLARE_WRITE16_MEMBER( stat_w );
|
||||
DECLARE_READ16_MEMBER( stat_r );
|
||||
DECLARE_READ_LINE_MEMBER( get_bio );
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -121,7 +121,7 @@ WRITE16_MEMBER(toaplan1_state::demonwld_dsp_bio_w)
|
||||
}
|
||||
}
|
||||
|
||||
READ16_MEMBER(toaplan1_state::demonwld_BIO_r)
|
||||
READ_LINE_MEMBER(toaplan1_state::demonwld_BIO_r)
|
||||
{
|
||||
return m_dsp_BIO;
|
||||
}
|
||||
|
@ -170,7 +170,7 @@ WRITE16_MEMBER(twincobr_state::fsharkbt_dsp_w)
|
||||
#endif
|
||||
}
|
||||
|
||||
READ16_MEMBER(twincobr_state::twincobr_BIO_r)
|
||||
READ_LINE_MEMBER(twincobr_state::twincobr_BIO_r)
|
||||
{
|
||||
return m_dsp_BIO;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user