diff --git a/src/emu/machine/generic.c b/src/emu/machine/generic.c index 3d90dcad6fd..c41cf756dbd 100644 --- a/src/emu/machine/generic.c +++ b/src/emu/machine/generic.c @@ -583,17 +583,17 @@ static TIMER_CALLBACK( irq_pulse_clear ) /*------------------------------------------------- generic_pulse_irq_line - "pulse" an IRQ line by - asserting it and then clearing it 1 cycle + asserting it and then clearing it x cycle(s) later -------------------------------------------------*/ -void generic_pulse_irq_line(device_t *device, int irqline) +void generic_pulse_irq_line(device_t *device, int irqline, int cycles) { - assert(irqline != INPUT_LINE_NMI && irqline != INPUT_LINE_RESET); + assert(irqline != INPUT_LINE_NMI && irqline != INPUT_LINE_RESET && cycles > 0); device_set_input_line(device, irqline, ASSERT_LINE); cpu_device *cpudevice = downcast(device); - attotime target_time = cpudevice->local_time() + cpudevice->cycles_to_attotime(cpudevice->min_cycles()); + attotime target_time = cpudevice->local_time() + cpudevice->cycles_to_attotime(cycles * cpudevice->min_cycles()); device->machine().scheduler().timer_set(target_time - device->machine().time(), FUNC(irq_pulse_clear), irqline, (void *)device); } @@ -601,16 +601,16 @@ void generic_pulse_irq_line(device_t *device, int irqline) /*------------------------------------------------- generic_pulse_irq_line_and_vector - "pulse" an IRQ line by asserting it and then clearing it - 1 cycle later, specifying a vector + x cycle(s) later, specifying a vector -------------------------------------------------*/ -void generic_pulse_irq_line_and_vector(device_t *device, int irqline, int vector) +void generic_pulse_irq_line_and_vector(device_t *device, int irqline, int vector, int cycles) { - assert(irqline != INPUT_LINE_NMI && irqline != INPUT_LINE_RESET); + assert(irqline != INPUT_LINE_NMI && irqline != INPUT_LINE_RESET && cycles > 0); device_set_input_line_and_vector(device, irqline, ASSERT_LINE, vector); cpu_device *cpudevice = downcast(device); - attotime target_time = cpudevice->local_time() + cpudevice->cycles_to_attotime(cpudevice->min_cycles()); + attotime target_time = cpudevice->local_time() + cpudevice->cycles_to_attotime(cycles * cpudevice->min_cycles()); device->machine().scheduler().timer_set(target_time - device->machine().time(), FUNC(irq_pulse_clear), irqline, (void *)device); } @@ -633,35 +633,35 @@ INTERRUPT_GEN( nmi_line_assert ) { if (interrupt_enabled(device)) device_set_inp -------------------------------------------------*/ INTERRUPT_GEN( irq0_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 0, HOLD_LINE); } -INTERRUPT_GEN( irq0_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 0); } +INTERRUPT_GEN( irq0_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 0, 1); } INTERRUPT_GEN( irq0_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 0, ASSERT_LINE); } INTERRUPT_GEN( irq1_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 1, HOLD_LINE); } -INTERRUPT_GEN( irq1_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 1); } +INTERRUPT_GEN( irq1_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 1, 1); } INTERRUPT_GEN( irq1_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 1, ASSERT_LINE); } INTERRUPT_GEN( irq2_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 2, HOLD_LINE); } -INTERRUPT_GEN( irq2_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 2); } +INTERRUPT_GEN( irq2_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 2, 1); } INTERRUPT_GEN( irq2_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 2, ASSERT_LINE); } INTERRUPT_GEN( irq3_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 3, HOLD_LINE); } -INTERRUPT_GEN( irq3_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 3); } +INTERRUPT_GEN( irq3_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 3, 1); } INTERRUPT_GEN( irq3_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 3, ASSERT_LINE); } INTERRUPT_GEN( irq4_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 4, HOLD_LINE); } -INTERRUPT_GEN( irq4_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 4); } +INTERRUPT_GEN( irq4_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 4, 1); } INTERRUPT_GEN( irq4_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 4, ASSERT_LINE); } INTERRUPT_GEN( irq5_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 5, HOLD_LINE); } -INTERRUPT_GEN( irq5_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 5); } +INTERRUPT_GEN( irq5_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 5, 1); } INTERRUPT_GEN( irq5_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 5, ASSERT_LINE); } INTERRUPT_GEN( irq6_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 6, HOLD_LINE); } -INTERRUPT_GEN( irq6_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 6); } +INTERRUPT_GEN( irq6_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 6, 1); } INTERRUPT_GEN( irq6_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 6, ASSERT_LINE); } INTERRUPT_GEN( irq7_line_hold ) { if (interrupt_enabled(device)) device_set_input_line(device, 7, HOLD_LINE); } -INTERRUPT_GEN( irq7_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 7); } +INTERRUPT_GEN( irq7_line_pulse ) { if (interrupt_enabled(device)) generic_pulse_irq_line(device, 7, 1); } INTERRUPT_GEN( irq7_line_assert ) { if (interrupt_enabled(device)) device_set_input_line(device, 7, ASSERT_LINE); } diff --git a/src/emu/machine/generic.h b/src/emu/machine/generic.h index e0a91eea32e..26edf2b9036 100644 --- a/src/emu/machine/generic.h +++ b/src/emu/machine/generic.h @@ -106,8 +106,8 @@ void set_led_status(running_machine &machine, int num, int value); /* ----- interrupt enable and vector helpers ----- */ -void generic_pulse_irq_line(device_t *device, int irqline); -void generic_pulse_irq_line_and_vector(device_t *device, int irqline, int vector); +void generic_pulse_irq_line(device_t *device, int irqline, int cycles); +void generic_pulse_irq_line_and_vector(device_t *device, int irqline, int vector, int cycles); diff --git a/src/mame/audio/dcs.c b/src/mame/audio/dcs.c index 21ef8c489e1..cde0e702fd4 100644 --- a/src/mame/audio/dcs.c +++ b/src/mame/audio/dcs.c @@ -1977,7 +1977,7 @@ static TIMER_DEVICE_CALLBACK( dcs_irq ) reg = dcs.ireg_base; /* generate the (internal, thats why the pulse) irq */ - generic_pulse_irq_line(dcs.cpu, ADSP2105_IRQ1); + generic_pulse_irq_line(dcs.cpu, ADSP2105_IRQ1, 1); } /* store it */ diff --git a/src/mame/audio/n8080.c b/src/mame/audio/n8080.c index e8fb5a3cc40..cd69deb1ec6 100644 --- a/src/mame/audio/n8080.c +++ b/src/mame/audio/n8080.c @@ -191,7 +191,7 @@ static void spacefev_sound_pins_changed( running_machine &machine ) } if (changes & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5))) { - generic_pulse_irq_line(machine.device("audiocpu"), 0); + generic_pulse_irq_line(machine.device("audiocpu"), 0, 1); } } @@ -216,7 +216,7 @@ static void sheriff_sound_pins_changed( running_machine &machine ) } if (changes & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5))) { - generic_pulse_irq_line(machine.device("audiocpu"), 0); + generic_pulse_irq_line(machine.device("audiocpu"), 0, 1); } } @@ -232,7 +232,7 @@ static void helifire_sound_pins_changed( running_machine &machine ) if (changes & (1 << 6)) { - generic_pulse_irq_line(machine.device("audiocpu"), 0); + generic_pulse_irq_line(machine.device("audiocpu"), 0, 1); } } diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c index e5070d81f8e..314d2e8f3e9 100644 --- a/src/mame/drivers/bfcobra.c +++ b/src/mame/drivers/bfcobra.c @@ -1398,7 +1398,7 @@ static WRITE8_HANDLER( meter_w ) if (changed & (1 << i)) { MechMtr_update(i, data & (1 << i) ); - generic_pulse_irq_line(&space->device(), M6809_FIRQ_LINE); + generic_pulse_irq_line(&space->device(), M6809_FIRQ_LINE, 1); } } } @@ -1756,7 +1756,7 @@ static DRIVER_INIT( bfcobra ) /* TODO */ static INTERRUPT_GEN( timer_irq ) { - generic_pulse_irq_line(device, M6809_IRQ_LINE); + generic_pulse_irq_line(device, M6809_IRQ_LINE, 1); } /* TODO */ diff --git a/src/mame/drivers/bfm_sc1.c b/src/mame/drivers/bfm_sc1.c index 2787d28bb7a..4bfdc6962c4 100644 --- a/src/mame/drivers/bfm_sc1.c +++ b/src/mame/drivers/bfm_sc1.c @@ -176,7 +176,7 @@ static INTERRUPT_GEN( timer_irq ) state->m_sc1_Inputs[2] = input_port_read(device->machine(),"STROBE0"); - generic_pulse_irq_line(device->machine().device("maincpu"), M6809_IRQ_LINE); + generic_pulse_irq_line(device->machine().device("maincpu"), M6809_IRQ_LINE, 1); } } @@ -277,7 +277,7 @@ static WRITE8_HANDLER( mmtr_w ) if ( changed & (1 << i) ) { MechMtr_update(i, data & (1 << i) ); - generic_pulse_irq_line(space->machine().device("maincpu"), M6809_FIRQ_LINE); + generic_pulse_irq_line(space->machine().device("maincpu"), M6809_FIRQ_LINE, 1); } } } diff --git a/src/mame/drivers/bfm_sc2.c b/src/mame/drivers/bfm_sc2.c index b4278cd47be..af7c0fa30cc 100644 --- a/src/mame/drivers/bfm_sc2.c +++ b/src/mame/drivers/bfm_sc2.c @@ -444,7 +444,7 @@ static INTERRUPT_GEN( timer_irq ) state->m_irq_timer_stat = 0x01; state->m_irq_status = 0x02; - generic_pulse_irq_line(device, M6809_IRQ_LINE); + generic_pulse_irq_line(device, M6809_IRQ_LINE, 1); } } diff --git a/src/mame/drivers/bfmsys85.c b/src/mame/drivers/bfmsys85.c index e3a9c804aeb..65dee6196ab 100644 --- a/src/mame/drivers/bfmsys85.c +++ b/src/mame/drivers/bfmsys85.c @@ -172,7 +172,7 @@ static INTERRUPT_GEN( timer_irq ) if ( state->m_is_timer_enabled ) { state->m_irq_status = 0x01 |0x02; //0xff; - generic_pulse_irq_line(device, M6809_IRQ_LINE); + generic_pulse_irq_line(device, M6809_IRQ_LINE, 1); } } @@ -235,7 +235,7 @@ static WRITE8_HANDLER( mmtr_w ) for (i=0; i<8; i++) if ( changed & (1 << i) ) MechMtr_update(i, data & (1 << i) ); - if ( data ) generic_pulse_irq_line(space->machine().device("maincpu"), M6809_FIRQ_LINE); + if ( data ) generic_pulse_irq_line(space->machine().device("maincpu"), M6809_FIRQ_LINE, 1); } /////////////////////////////////////////////////////////////////////////// diff --git a/src/mame/drivers/cb2001.c b/src/mame/drivers/cb2001.c index 0a947857663..3b495cebf5f 100644 --- a/src/mame/drivers/cb2001.c +++ b/src/mame/drivers/cb2001.c @@ -736,7 +736,7 @@ INPUT_PORTS_END static INTERRUPT_GEN( vblank_irq ) { - generic_pulse_irq_line(device, NEC_INPUT_LINE_INTP0); + generic_pulse_irq_line(device, NEC_INPUT_LINE_INTP0, 1); } static const gfx_layout cb2001_layout = diff --git a/src/mame/drivers/cball.c b/src/mame/drivers/cball.c index fed0cea6407..3265d8bca47 100644 --- a/src/mame/drivers/cball.c +++ b/src/mame/drivers/cball.c @@ -73,7 +73,7 @@ static TIMER_CALLBACK( interrupt_callback ) cball_state *state = machine.driver_data(); int scanline = param; - generic_pulse_irq_line(state->m_maincpu, 0); + generic_pulse_irq_line(state->m_maincpu, 0, 1); scanline = scanline + 32; diff --git a/src/mame/drivers/changela.c b/src/mame/drivers/changela.c index ba86d6f086a..b36d49d8578 100644 --- a/src/mame/drivers/changela.c +++ b/src/mame/drivers/changela.c @@ -433,7 +433,7 @@ static INTERRUPT_GEN( chl_mcu_irq ) { changela_state *state = device->machine().driver_data(); - generic_pulse_irq_line(state->m_mcu, 0); + generic_pulse_irq_line(state->m_mcu, 0, 1); } static MACHINE_START(changela) diff --git a/src/mame/drivers/cvs.c b/src/mame/drivers/cvs.c index 9b7dbf18ce2..490b217dc54 100644 --- a/src/mame/drivers/cvs.c +++ b/src/mame/drivers/cvs.c @@ -239,7 +239,7 @@ WRITE8_HANDLER( cvs_s2636_2_or_character_ram_w ) static INTERRUPT_GEN( cvs_main_cpu_interrupt ) { device_set_input_line_vector(device, 0, 0x03); - generic_pulse_irq_line(device, 0); + generic_pulse_irq_line(device, 0, 1); cvs_scroll_stars(device->machine()); } diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c index 40107318d32..eee30d45e34 100644 --- a/src/mame/drivers/equites.c +++ b/src/mame/drivers/equites.c @@ -436,7 +436,7 @@ static WRITE8_HANDLER(equites_c0f8_w) case 1: // c0f9: RST75 trigger (written by NMI handler) // Note: solder pad CP3 on the pcb would allow to disable this - generic_pulse_irq_line(state->m_audio_cpu, I8085_RST75_LINE); + generic_pulse_irq_line(state->m_audio_cpu, I8085_RST75_LINE, 1); break; case 2: // c0fa: INTR trigger (written by NMI handler) diff --git a/src/mame/drivers/firetrk.c b/src/mame/drivers/firetrk.c index 1c38986a5dd..bd14f62c347 100644 --- a/src/mame/drivers/firetrk.c +++ b/src/mame/drivers/firetrk.c @@ -62,7 +62,7 @@ static TIMER_CALLBACK( periodic_callback ) { int scanline = param; - generic_pulse_irq_line(machine.device("maincpu"), 0); + generic_pulse_irq_line(machine.device("maincpu"), 0, 1); /* IRQs are generated by inverse 16V signal */ scanline += 32; diff --git a/src/mame/drivers/flyball.c b/src/mame/drivers/flyball.c index b7efa8ab542..14088327471 100644 --- a/src/mame/drivers/flyball.c +++ b/src/mame/drivers/flyball.c @@ -119,7 +119,7 @@ static TIMER_CALLBACK( flyball_joystick_callback ) int potsense = param; if (potsense & ~state->m_potmask) - generic_pulse_irq_line(state->m_maincpu, 0); + generic_pulse_irq_line(state->m_maincpu, 0, 1); state->m_potsense |= potsense; } diff --git a/src/mame/drivers/gaelco3d.c b/src/mame/drivers/gaelco3d.c index af89606d135..6d9f552506a 100644 --- a/src/mame/drivers/gaelco3d.c +++ b/src/mame/drivers/gaelco3d.c @@ -657,7 +657,7 @@ static TIMER_DEVICE_CALLBACK( adsp_autobuffer_irq ) reg = state->m_adsp_ireg_base; /* generate the (internal, thats why the pulse) irq */ - generic_pulse_irq_line(adsp, ADSP2105_IRQ1); + generic_pulse_irq_line(adsp, ADSP2105_IRQ1, 1); } /* store it */ diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c index 7f205dae73d..ca7a53e6737 100644 --- a/src/mame/drivers/igs_m027.c +++ b/src/mame/drivers/igs_m027.c @@ -383,7 +383,7 @@ GFXDECODE_END static INTERRUPT_GEN( igs_majhong_interrupt ) { - generic_pulse_irq_line(device, ARM7_FIRQ_LINE); + generic_pulse_irq_line(device, ARM7_FIRQ_LINE, 1); } diff --git a/src/mame/drivers/lasso.c b/src/mame/drivers/lasso.c index 2998aabc489..2df2ae4349c 100644 --- a/src/mame/drivers/lasso.c +++ b/src/mame/drivers/lasso.c @@ -51,7 +51,7 @@ static WRITE8_HANDLER( sound_command_w ) { lasso_state *state = space->machine().driver_data(); soundlatch_w(space, offset, data); - generic_pulse_irq_line(state->m_audiocpu, 0); + generic_pulse_irq_line(state->m_audiocpu, 0, 1); } static WRITE8_HANDLER( pinbo_sound_command_w ) diff --git a/src/mame/drivers/m90.c b/src/mame/drivers/m90.c index 9f734fa56b3..74775f1cb9e 100644 --- a/src/mame/drivers/m90.c +++ b/src/mame/drivers/m90.c @@ -696,7 +696,7 @@ static INTERRUPT_GEN( bomblord_fake_nmi ) static INTERRUPT_GEN( m90_interrupt ) { - generic_pulse_irq_line(device, NEC_INPUT_LINE_INTP0); + generic_pulse_irq_line(device, NEC_INPUT_LINE_INTP0, 1); } static INTERRUPT_GEN( dynablsb_interrupt ) diff --git a/src/mame/drivers/maxaflex.c b/src/mame/drivers/maxaflex.c index 2ee41a29e05..2776246b910 100644 --- a/src/mame/drivers/maxaflex.c +++ b/src/mame/drivers/maxaflex.c @@ -178,7 +178,7 @@ static TIMER_DEVICE_CALLBACK( mcu_timer_proc ) if ( (state->m_tcr & 0x40) == 0 ) { //timer interrupt! - generic_pulse_irq_line(timer.machine().device("mcu"), M68705_INT_TIMER); + generic_pulse_irq_line(timer.machine().device("mcu"), M68705_INT_TIMER, 1); } } } diff --git a/src/mame/drivers/mgolf.c b/src/mame/drivers/mgolf.c index e43b7db17b4..610914c975f 100644 --- a/src/mame/drivers/mgolf.c +++ b/src/mame/drivers/mgolf.c @@ -112,7 +112,7 @@ static TIMER_CALLBACK( interrupt_callback ) update_plunger(machine); - generic_pulse_irq_line(state->m_maincpu, 0); + generic_pulse_irq_line(state->m_maincpu, 0, 1); scanline = scanline + 32; diff --git a/src/mame/drivers/multigam.c b/src/mame/drivers/multigam.c index 919b255ac53..a37adee142c 100644 --- a/src/mame/drivers/multigam.c +++ b/src/mame/drivers/multigam.c @@ -377,7 +377,7 @@ static void multigam3_mmc3_scanline_cb( device_t *device, int scanline, int vbla if (--state->m_multigam3_mmc3_scanline_counter == -1) { state->m_multigam3_mmc3_scanline_counter = state->m_multigam3_mmc3_scanline_latch; - generic_pulse_irq_line(device->machine().device("maincpu"), 0); + generic_pulse_irq_line(device->machine().device("maincpu"), 0, 1); } } } diff --git a/src/mame/drivers/namcond1.c b/src/mame/drivers/namcond1.c index fa07b1a3806..2f14cdedd05 100644 --- a/src/mame/drivers/namcond1.c +++ b/src/mame/drivers/namcond1.c @@ -273,7 +273,7 @@ static INTERRUPT_GEN( mcu_interrupt ) namcond1_state *state = device->machine().driver_data(); if( state->m_h8_irq5_enabled ) { - generic_pulse_irq_line(device, H8_IRQ5); + generic_pulse_irq_line(device, H8_IRQ5, 1); } } diff --git a/src/mame/drivers/namcos22.c b/src/mame/drivers/namcos22.c index 2a55043f909..dd287a6505e 100644 --- a/src/mame/drivers/namcos22.c +++ b/src/mame/drivers/namcos22.c @@ -2727,7 +2727,7 @@ static READ8_HANDLER( propcycle_mcu_adc_r ) int i; for (i = 0; i < 16; i++) { - generic_pulse_irq_line(space->machine().device("mcu"), M37710_LINE_TIMERA3TICK); + generic_pulse_irq_line(space->machine().device("mcu"), M37710_LINE_TIMERA3TICK, 1); } } diff --git a/src/mame/drivers/nwk-tr.c b/src/mame/drivers/nwk-tr.c index 60eab11669a..191eff2ea9a 100644 --- a/src/mame/drivers/nwk-tr.c +++ b/src/mame/drivers/nwk-tr.c @@ -638,9 +638,9 @@ static const adc12138_interface nwktr_adc_interface = { static void sound_irq_callback(running_machine &machine, int irq) { if (irq == 0) - generic_pulse_irq_line(machine.device("audiocpu"), INPUT_LINE_IRQ1); + generic_pulse_irq_line(machine.device("audiocpu"), INPUT_LINE_IRQ1, 1); else - generic_pulse_irq_line(machine.device("audiocpu"), INPUT_LINE_IRQ2); + generic_pulse_irq_line(machine.device("audiocpu"), INPUT_LINE_IRQ2, 1); } static const k056800_interface nwktr_k056800_interface = diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c index 93976a2b8b3..fa45b6e9dd2 100644 --- a/src/mame/drivers/pgm.c +++ b/src/mame/drivers/pgm.c @@ -313,7 +313,7 @@ static WRITE16_HANDLER( arm7_latch_68k_w ) logerror("M68K: Latch write: %04x (%04x) (%06x)\n", data & 0x0000ffff, mem_mask, cpu_get_pc(&space->device())); COMBINE_DATA(&state->m_kov2_latchdata_68k_w); - generic_pulse_irq_line(state->m_prot, ARM7_FIRQ_LINE); + generic_pulse_irq_line(state->m_prot, ARM7_FIRQ_LINE, 1); space->machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(200)); device_spin_until_time(&space->device(), state->m_prot->cycles_to_attotime(200)); // give the arm time to respond (just boosting the interleave doesn't help) } @@ -562,7 +562,7 @@ static READ16_HANDLER( svg_68k_nmi_r ) static WRITE16_HANDLER( svg_68k_nmi_w ) { pgm_state *state = space->machine().driver_data(); - generic_pulse_irq_line(state->m_prot, ARM7_FIRQ_LINE); + generic_pulse_irq_line(state->m_prot, ARM7_FIRQ_LINE, 1); space->machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(200)); device_spin_until_time(&space->device(), state->m_prot->cycles_to_attotime(200)); // give the arm time to respond (just boosting the interleave doesn't help) } diff --git a/src/mame/drivers/pntnpuzl.c b/src/mame/drivers/pntnpuzl.c index 58f66586810..e465b14b32a 100644 --- a/src/mame/drivers/pntnpuzl.c +++ b/src/mame/drivers/pntnpuzl.c @@ -319,7 +319,7 @@ static INPUT_CHANGED( coin_inserted ) /* TODO: change this! */ if(newval) - generic_pulse_irq_line(state->m_maincpu, (UINT8)(FPTR)param); + generic_pulse_irq_line(state->m_maincpu, (UINT8)(FPTR)param, 1); } static INPUT_PORTS_START( pntnpuzl ) diff --git a/src/mame/drivers/segas16b.c b/src/mame/drivers/segas16b.c index 46bc4fe46e4..b42870061d3 100644 --- a/src/mame/drivers/segas16b.c +++ b/src/mame/drivers/segas16b.c @@ -1401,7 +1401,7 @@ static WRITE8_HANDLER( mcu_data_w ) { segas1x_state *state = space->machine().driver_data(); state->m_mcu_data = data; - generic_pulse_irq_line(state->m_mcu, 1); + generic_pulse_irq_line(state->m_mcu, 1, 1); } #endif diff --git a/src/mame/drivers/sigmab52.c b/src/mame/drivers/sigmab52.c index c1f73dc4bfa..b2c6118e42c 100644 --- a/src/mame/drivers/sigmab52.c +++ b/src/mame/drivers/sigmab52.c @@ -528,7 +528,7 @@ INPUT_PORTS_END static INTERRUPT_GEN( timer_irq ) { - generic_pulse_irq_line(device, M6809_IRQ_LINE); + generic_pulse_irq_line(device, M6809_IRQ_LINE, 1); } diff --git a/src/mame/drivers/ssfindo.c b/src/mame/drivers/ssfindo.c index 03ee86d8e98..5dde36fd9a9 100644 --- a/src/mame/drivers/ssfindo.c +++ b/src/mame/drivers/ssfindo.c @@ -279,7 +279,7 @@ static TIMER_CALLBACK( PS7500_Timer0_callback ) state->m_PS7500_IO[IRQSTA]|=0x20; if(state->m_PS7500_IO[IRQMSKA]&0x20) { - generic_pulse_irq_line(machine.device("maincpu"), ARM7_IRQ_LINE); + generic_pulse_irq_line(machine.device("maincpu"), ARM7_IRQ_LINE, 1); } } @@ -300,7 +300,7 @@ static TIMER_CALLBACK( PS7500_Timer1_callback ) state->m_PS7500_IO[IRQSTA]|=0x40; if(state->m_PS7500_IO[IRQMSKA]&0x40) { - generic_pulse_irq_line(machine.device("maincpu"), ARM7_IRQ_LINE); + generic_pulse_irq_line(machine.device("maincpu"), ARM7_IRQ_LINE, 1); } } @@ -320,7 +320,7 @@ static INTERRUPT_GEN( ssfindo_interrupt ) state->m_PS7500_IO[IRQSTA]|=0x08; if(state->m_PS7500_IO[IRQMSKA]&0x08) { - generic_pulse_irq_line(device, ARM7_IRQ_LINE); + generic_pulse_irq_line(device, ARM7_IRQ_LINE, 1); } } diff --git a/src/mame/drivers/starshp1.c b/src/mame/drivers/starshp1.c index 54cd255b600..f70d3da734a 100644 --- a/src/mame/drivers/starshp1.c +++ b/src/mame/drivers/starshp1.c @@ -17,7 +17,7 @@ Atari Starship 1 driver static INTERRUPT_GEN( starshp1_interrupt ) { if ((input_port_read(device->machine(), "SYSTEM") & 0x90) != 0x90) - generic_pulse_irq_line(device, 0); + generic_pulse_irq_line(device, 0, 1); } diff --git a/src/mame/drivers/toratora.c b/src/mame/drivers/toratora.c index 46a97338fd2..52db67c1bca 100644 --- a/src/mame/drivers/toratora.c +++ b/src/mame/drivers/toratora.c @@ -149,7 +149,7 @@ static INTERRUPT_GEN( toratora_timer ) if (state->m_last != (input_port_read(device->machine(), "INPUT") & 0x0f)) { state->m_last = input_port_read(device->machine(), "INPUT") & 0x0f; - generic_pulse_irq_line(device, 0); + generic_pulse_irq_line(device, 0, 1); } state->m_pia_u1->set_a_input(input_port_read(device->machine(), "INPUT") & 0x0f, 0); state->m_pia_u1->ca1_w(input_port_read(device->machine(), "INPUT") & 0x10); diff --git a/src/mame/drivers/truco.c b/src/mame/drivers/truco.c index 27bdc9dd33c..9004e9b633d 100644 --- a/src/mame/drivers/truco.c +++ b/src/mame/drivers/truco.c @@ -399,7 +399,7 @@ static INTERRUPT_GEN( truco_interrupt ) { if ( state->m_trigger == 0 ) { - generic_pulse_irq_line(device, M6809_IRQ_LINE); + generic_pulse_irq_line(device, M6809_IRQ_LINE, 1); state->m_trigger++; } } else diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c index 259b25fda99..4ba8ab8f13a 100644 --- a/src/mame/drivers/ultrsprt.c +++ b/src/mame/drivers/ultrsprt.c @@ -202,7 +202,7 @@ static INTERRUPT_GEN( ultrsprt_vblank ) static void sound_irq_callback(running_machine &machine, int irq) { if (irq == 0) - /*generic_pulse_irq_line(machine.device("audiocpu"), INPUT_LINE_IRQ5)*/; + /*generic_pulse_irq_line(machine.device("audiocpu"), INPUT_LINE_IRQ5, 1)*/; else cputag_set_input_line(machine, "audiocpu", INPUT_LINE_IRQ6, HOLD_LINE); } diff --git a/src/mame/drivers/wecleman.c b/src/mame/drivers/wecleman.c index 63b50787b42..a45448a1765 100644 --- a/src/mame/drivers/wecleman.c +++ b/src/mame/drivers/wecleman.c @@ -1084,7 +1084,7 @@ MACHINE_CONFIG_END static INTERRUPT_GEN( hotchase_sound_timer ) { - generic_pulse_irq_line(device, M6809_FIRQ_LINE); + generic_pulse_irq_line(device, M6809_FIRQ_LINE, 1); } static const k051316_interface hotchase_k051316_intf_0 = diff --git a/src/mame/machine/archimds.c b/src/mame/machine/archimds.c index 3ce47404615..970c86231d5 100644 --- a/src/mame/machine/archimds.c +++ b/src/mame/machine/archimds.c @@ -74,7 +74,7 @@ void archimedes_request_irq_b(running_machine &machine, int mask) if (ioc_regs[IRQ_MASK_B] & mask) { - generic_pulse_irq_line(machine.device("maincpu"), ARM_IRQ_LINE); + generic_pulse_irq_line(machine.device("maincpu"), ARM_IRQ_LINE, 1); } } @@ -84,7 +84,7 @@ void archimedes_request_fiq(running_machine &machine, int mask) if (ioc_regs[FIQ_MASK] & mask) { - generic_pulse_irq_line(machine.device("maincpu"), ARM_FIRQ_LINE); + generic_pulse_irq_line(machine.device("maincpu"), ARM_FIRQ_LINE, 1); } } diff --git a/src/mame/machine/galaxold.c b/src/mame/machine/galaxold.c index 7139b0217c2..0d3d51d6b3d 100644 --- a/src/mame/machine/galaxold.c +++ b/src/mame/machine/galaxold.c @@ -418,7 +418,7 @@ DRIVER_INIT( 4in1 ) INTERRUPT_GEN( hunchbks_vh_interrupt ) { - generic_pulse_irq_line_and_vector(device,0,0x03); + generic_pulse_irq_line_and_vector(device,0,0x03,1); } DRIVER_INIT( ladybugg ) diff --git a/src/mame/machine/namcos2.c b/src/mame/machine/namcos2.c index bdf8341b37a..fe9b7dc3b85 100644 --- a/src/mame/machine/namcos2.c +++ b/src/mame/machine/namcos2.c @@ -774,7 +774,7 @@ WRITE8_HANDLER( namcos2_mcu_analog_ctrl_w ) /* If the interrupt enable bit is set trigger an A/D IRQ */ if(data & 0x20) { - generic_pulse_irq_line(space->machine().device("mcu"), HD63705_INT_ADCONV); + generic_pulse_irq_line(space->machine().device("mcu"), HD63705_INT_ADCONV, 1); } } } diff --git a/src/mame/machine/playch10.c b/src/mame/machine/playch10.c index 8ecbff2c5a8..4f8d9df42b6 100644 --- a/src/mame/machine/playch10.c +++ b/src/mame/machine/playch10.c @@ -872,7 +872,7 @@ static void gboard_scanline_cb( device_t *device, int scanline, int vblank, int if (--state->m_gboard_scanline_counter == -1) { state->m_gboard_scanline_counter = state->m_gboard_scanline_latch; - generic_pulse_irq_line(device->machine().device("cart"), 0); + generic_pulse_irq_line(device->machine().device("cart"), 0, 1); } } }