tms32010.cpp: devcb instead of memory map for bio line (nw)

This commit is contained in:
Ivan Vangelista 2016-06-23 17:08:31 +02:00
parent b4e62ef6cc
commit 82c526ea38
22 changed files with 59 additions and 79 deletions

View File

@ -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")

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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")

View File

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

View File

@ -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)

View File

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

View File

@ -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))

View File

@ -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()

View File

@ -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))

View File

@ -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 */

View File

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

View File

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

View File

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

View File

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

View File

@ -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
//-------------------------------------------------

View File

@ -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
{

View File

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

View File

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