diff --git a/src/devices/bus/isa/dectalk.cpp b/src/devices/bus/isa/dectalk.cpp index cae8f8733f3..08641ec392c 100644 --- a/src/devices/bus/isa/dectalk.cpp +++ b/src/devices/bus/isa/dectalk.cpp @@ -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") diff --git a/src/devices/bus/isa/dectalk.h b/src/devices/bus/isa/dectalk.h index 5d9d11f44ca..2f65fc88c67 100644 --- a/src/devices/bus/isa/dectalk.h +++ b/src/devices/bus/isa/dectalk.h @@ -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); diff --git a/src/devices/cpu/tms32010/tms32010.cpp b/src/devices/cpu/tms32010/tms32010.cpp index ab49c52b603..7625ff96646 100644 --- a/src/devices/cpu/tms32010/tms32010.cpp +++ b/src/devices/cpu/tms32010/tms32010.cpp @@ -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; @@ -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; diff --git a/src/devices/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h index b7d77827a09..61e36279e17 100644 --- a/src/devices/cpu/tms32010/tms32010.h +++ b/src/devices/cpu/tms32010/tms32010.h @@ -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 static devcb_base & set_bio_in_cb(device_t &device, _Object object) { return downcast(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 diff --git a/src/devices/sound/bsmt2000.cpp b/src/devices/sound/bsmt2000.cpp index 2741f447fb5..00850252503 100644 --- a/src/devices/sound/bsmt2000.cpp +++ b/src/devices/sound/bsmt2000.cpp @@ -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; } diff --git a/src/devices/sound/bsmt2000.h b/src/devices/sound/bsmt2000.h index 9c1470278b7..befd8619d2d 100644 --- a/src/devices/sound/bsmt2000.h +++ b/src/devices/sound/bsmt2000.h @@ -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 diff --git a/src/mame/audio/harddriv.cpp b/src/mame/audio/harddriv.cpp index c629eb7f32c..f45c4755fea 100644 --- a/src/mame/audio/harddriv.cpp +++ b/src/mame/audio/harddriv.cpp @@ -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") diff --git a/src/mame/drivers/atarisy4.cpp b/src/mame/drivers/atarisy4.cpp index 78af3c1417c..923c091b070 100644 --- a/src/mame/drivers/atarisy4.cpp +++ b/src/mame/drivers/atarisy4.cpp @@ -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 diff --git a/src/mame/drivers/coolpool.cpp b/src/mame/drivers/coolpool.cpp index a4d0209c6aa..866690da7f5 100644 --- a/src/mame/drivers/coolpool.cpp +++ b/src/mame/drivers/coolpool.cpp @@ -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) diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp index 5f6a9b8cba2..1bf72ecced5 100644 --- a/src/mame/drivers/dectalk.cpp +++ b/src/mame/drivers/dectalk.cpp @@ -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 diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp index d9177645c16..2bae7de4e7c 100644 --- a/src/mame/drivers/toaplan1.cpp +++ b/src/mame/drivers/toaplan1.cpp @@ -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)) diff --git a/src/mame/drivers/tomcat.cpp b/src/mame/drivers/tomcat.cpp index fec676031c2..78d6280c427 100644 --- a/src/mame/drivers/tomcat.cpp +++ b/src/mame/drivers/tomcat.cpp @@ -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 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() diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp index 91ea4263f49..680f57d0734 100644 --- a/src/mame/drivers/twincobr.cpp +++ b/src/mame/drivers/twincobr.cpp @@ -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)) diff --git a/src/mame/drivers/wardner.cpp b/src/mame/drivers/wardner.cpp index da4e7c078b7..c8fb9684c25 100644 --- a/src/mame/drivers/wardner.cpp +++ b/src/mame/drivers/wardner.cpp @@ -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 */ diff --git a/src/mame/includes/coolpool.h b/src/mame/includes/coolpool.h index 6730f624cba..622f46dbe30 100644 --- a/src/mame/includes/coolpool.h +++ b/src/mame/includes/coolpool.h @@ -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); diff --git a/src/mame/includes/harddriv.h b/src/mame/includes/harddriv.h index 95dccfd57b2..58a430885bf 100644 --- a/src/mame/includes/harddriv.h +++ b/src/mame/includes/harddriv.h @@ -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); diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h index 7c67523b40a..e5366a7d123 100644 --- a/src/mame/includes/toaplan1.h +++ b/src/mame/includes/toaplan1.h @@ -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); diff --git a/src/mame/includes/twincobr.h b/src/mame/includes/twincobr.h index 6f6c603af24..d6b7af85e9e 100644 --- a/src/mame/includes/twincobr.h +++ b/src/mame/includes/twincobr.h @@ -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); diff --git a/src/mame/machine/asic65.cpp b/src/mame/machine/asic65.cpp index 3ad34f5e32a..58b46fda1fb 100644 --- a/src/mame/machine/asic65.cpp +++ b/src/mame/machine/asic65.cpp @@ -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 //------------------------------------------------- diff --git a/src/mame/machine/asic65.h b/src/mame/machine/asic65.h index c5f094461a2..0f481e2b6c0 100644 --- a/src/mame/machine/asic65.h +++ b/src/mame/machine/asic65.h @@ -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 { diff --git a/src/mame/machine/toaplan1.cpp b/src/mame/machine/toaplan1.cpp index 7c3f201af08..ef87079267d 100644 --- a/src/mame/machine/toaplan1.cpp +++ b/src/mame/machine/toaplan1.cpp @@ -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; } diff --git a/src/mame/machine/twincobr.cpp b/src/mame/machine/twincobr.cpp index 26bf4cec699..c6c0bbdac10 100644 --- a/src/mame/machine/twincobr.cpp +++ b/src/mame/machine/twincobr.cpp @@ -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; }