Beispiel #1
0
static INTERRUPT_GEN( sm1800_vblank_interrupt )
{
	sm1800_state *state = device->machine().driver_data<sm1800_state>();
	cputag_set_input_line(device->machine(), "maincpu", 0, state->m_irq_state ?  HOLD_LINE : CLEAR_LINE);
	state->m_irq_state ^= 1;
}
Beispiel #2
0
static WRITE8_HANDLER( sound_cpu_command_w )
{
	soundlatch_w(space, offset, data);
	cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
}
Beispiel #3
0
static TIMER_CALLBACK( irq5_gen )
{
	cputag_set_input_line(machine, "maincpu", R3000_IRQ5, ASSERT_LINE);
}
Beispiel #4
0
static void set_gate_a20(running_machine *machine, int a20)
{
	cputag_set_input_line(machine, "maincpu", INPUT_LINE_A20, a20);
}
Beispiel #5
0
static WRITE8_HANDLER( gyruss_i8039_irq_w )
{
	cputag_set_input_line(space->machine, "audio2", 0, ASSERT_LINE);
}
Beispiel #6
0
static READ8_HANDLER( magmax_sound_irq_ack )
{
    cputag_set_input_line(space->machine(), "audiocpu", 0, CLEAR_LINE);
    return 0;
}
Beispiel #7
0
static MACHINE_RESET( friskyt )
{
    /* start with the protection mcu halted */
    cputag_set_input_line(machine, "mcu", INPUT_LINE_HALT, ASSERT_LINE);
}
Beispiel #8
0
static void update_interrupts(running_machine *machine)
{
	cputag_set_input_line(machine, "maincpu", 1, vblank_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
	cputag_set_input_line(machine, "maincpu", 2, display_position_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
	cputag_set_input_line(machine, "maincpu", 3, irq3_pending ? ASSERT_LINE : CLEAR_LINE);
}
Beispiel #9
0
static void audio_cpu_irq(const device_config *device, int assert)
{
	cputag_set_input_line(device->machine, "audiocpu", 0, assert ? ASSERT_LINE : CLEAR_LINE);
}
Beispiel #10
0
static WRITE8_HANDLER( sspeedr_int_ack_w )
{
	cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
}
Beispiel #11
0
static WRITE8_HANDLER( xyonix_irqack_w )
{
	cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
}
Beispiel #12
0
static TIMER_CALLBACK( irq_off )
{
	cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
}
Beispiel #13
0
static void update_interrupts(running_machine &machine)
{
	klax_state *state = machine.driver_data<klax_state>();
	cputag_set_input_line(machine, "maincpu", 4, state->m_video_int_state || state->m_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
}
Beispiel #14
0
static INTERRUPT_GEN( vtech2_interrupt )
{
	cputag_set_input_line(device->machine(), "maincpu", 0, HOLD_LINE);
}
Beispiel #15
0
static TIMER_CALLBACK( thunderx_firq_callback )
{
	cputag_set_input_line(machine, "maincpu", KONAMI_FIRQ_LINE, HOLD_LINE);
}
Beispiel #16
0
static void audio_cpu_assert_nmi(running_machine *machine)
{
	cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
}
Beispiel #17
0
static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0b )
{
	cputag_set_input_line(device->machine(), "audiocpu", 0, state ? ASSERT_LINE : CLEAR_LINE);
}
Beispiel #18
0
static WRITE8_HANDLER( audio_cpu_clear_nmi_w )
{
	cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
}
Beispiel #19
0
static WRITE16_HANDLER( deniam_irq_ack_w )
{
	cputag_set_input_line(space->machine, "maincpu", 4, CLEAR_LINE);
}
Beispiel #20
0
static WRITE8_HANDLER( cloak_irq_reset_1_w )
{
	cputag_set_input_line(space->machine, "slave", 0, CLEAR_LINE);
}
Beispiel #21
0
static WRITE_LINE_DEVICE_HANDLER( calchase_pic8259_1_set_int_line )
{
	cputag_set_input_line(device->machine, "maincpu", 0, state ? HOLD_LINE : CLEAR_LINE);
}
Beispiel #22
0
static WRITE_LINE_DEVICE_HANDLER( ipu_ctc_interrupt )
{
	cputag_set_input_line(device->machine(), "ipu", 0, state);
}
Beispiel #23
0
static WRITE8_HANDLER( gyruss_irq_clear_w )
{
	cputag_set_input_line(space->machine, "audio2", 0, CLEAR_LINE);
}
Beispiel #24
0
static void update_interrupt_state(running_machine &machine)
{
	compis_state *state = machine.driver_data<compis_state>();
	int i, j, new_vector = 0;

	if (LOG_INTERRUPTS) logerror("update_interrupt_status: req=%02X stat=%02X serv=%02X\n", state->m_i186.intr.request, state->m_i186.intr.status, state->m_i186.intr.in_service);

	/* loop over priorities */
	for (i = 0; i <= state->m_i186.intr.priority_mask; i++)
	{
		/* note: by checking 4 bits, we also verify that the mask is off */
		if ((state->m_i186.intr.timer & 15) == i)
		{
			/* if we're already servicing something at this level, don't generate anything new */
			if (state->m_i186.intr.in_service & 0x01)
				return;

			/* if there's something pending, generate an interrupt */
			if (state->m_i186.intr.status & 0x07)
			{
				if (state->m_i186.intr.status & 1)
					new_vector = 0x08;
				else if (state->m_i186.intr.status & 2)
					new_vector = 0x12;
				else if (state->m_i186.intr.status & 4)
					new_vector = 0x13;
				else
					popmessage("Invalid timer interrupt!");

				/* set the clear mask and generate the int */
				state->m_i186.intr.ack_mask = 0x0001;
				goto generate_int;
			}
		}

		/* check DMA interrupts */
		for (j = 0; j < 2; j++)
			if ((state->m_i186.intr.dma[j] & 15) == i)
			{
				/* if we're already servicing something at this level, don't generate anything new */
				if (state->m_i186.intr.in_service & (0x04 << j))
					return;

				/* if there's something pending, generate an interrupt */
				if (state->m_i186.intr.request & (0x04 << j))
				{
					new_vector = 0x0a + j;

					/* set the clear mask and generate the int */
					state->m_i186.intr.ack_mask = 0x0004 << j;
					goto generate_int;
				}
			}

		/* check external interrupts */
		for (j = 0; j < 4; j++)
			if ((state->m_i186.intr.ext[j] & 15) == i)
			{
				/* if we're already servicing something at this level, don't generate anything new */
				if (state->m_i186.intr.in_service & (0x10 << j))
					return;

				/* if there's something pending, generate an interrupt */
				if (state->m_i186.intr.request & (0x10 << j))
				{
					/* otherwise, generate an interrupt for this request */
					new_vector = 0x0c + j;

					/* set the clear mask and generate the int */
					state->m_i186.intr.ack_mask = 0x0010 << j;
					goto generate_int;
				}
			}
	}
	return;

generate_int:
	/* generate the appropriate interrupt */
	state->m_i186.intr.poll_status = 0x8000 | new_vector;
	if (!state->m_i186.intr.pending)
		cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
	state->m_i186.intr.pending = 1;
	machine.scheduler().trigger(CPU_RESUME_TRIGGER);
	if (LOG_OPTIMIZATION) logerror("  - trigger due to interrupt pending\n");
	if (LOG_INTERRUPTS) logerror("(%f) **** Requesting interrupt vector %02X\n", machine.time().as_double(), new_vector);
}
Beispiel #25
0
static WRITE8_DEVICE_HANDLER(via_irq)
{
       cputag_set_input_line(device->machine(), "maincpu", 4, data ? ASSERT_LINE : CLEAR_LINE);
}
Beispiel #26
0
void compis_irq_set(UINT8 irq)
{
	cputag_set_input_line_vector(machine, "maincpu", 0, irq);
	cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
}
Beispiel #27
0
static void ym2151_irq_gen(device_t *device, int state)
{
    rpunch_state *drvstate = device->machine().driver_data<rpunch_state>();
    drvstate->m_ym2151_irq = state;
    cputag_set_input_line(device->machine(), "audiocpu", 0, (drvstate->m_ym2151_irq | drvstate->m_sound_busy) ? ASSERT_LINE : CLEAR_LINE);
}
Beispiel #28
0
static void irqhandler(running_device *device, int irq)
{
	cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
}
Beispiel #29
0
static WRITE16_HANDLER( main_sound_latch_w )
{
	soundlatch_w(space,0,data&0xff);
	cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
}
Beispiel #30
0
static MACHINE_RESET( ccastles )
{
	ccastles_state *state = machine.driver_data<ccastles_state>();
	cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
	state->m_irq_state = 0;
}