Example #1
0
static TIMER_CALLBACK( schaser_effect_555_cb )
{
	_8080bw_state *state = machine.driver_data<_8080bw_state>();
	int effect = param;
	attotime new_time;
	/* Toggle 555 output */
	state->m_schaser_effect_555_is_low = !state->m_schaser_effect_555_is_low;
	state->m_schaser_effect_555_time_remain = attotime::zero;
	state->m_schaser_effect_555_time_remain_savable = state->m_schaser_effect_555_time_remain.as_double();

	if (state->m_schaser_effect_555_is_low)
		new_time = PERIOD_OF_555_ASTABLE(0, RES_K(20), CAP_U(1)) / 2;
	else
	{
		if (effect)
			new_time = attotime(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
		else
			new_time = attotime::never;
	}
	state->m_schaser_effect_555_timer->adjust(new_time, effect);
	sn76477_enable_w(state->m_sn, !(state->m_schaser_effect_555_is_low || state->m_schaser_explosion));
	sn76477_one_shot_cap_voltage_w(state->m_sn, !(state->m_schaser_effect_555_is_low || state->m_schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
}
Example #2
0
static TIMER_CALLBACK( schaser_effect_555_cb )
{
    mw8080bw_state *state = machine->driver_data<mw8080bw_state>();
    int effect = param;
    attotime new_time;
    /* Toggle 555 output */
    state->schaser_effect_555_is_low = !state->schaser_effect_555_is_low;
    state->schaser_effect_555_time_remain = attotime_zero;
    state->schaser_effect_555_time_remain_savable = attotime_to_double(state->schaser_effect_555_time_remain);

    if (state->schaser_effect_555_is_low)
        new_time = attotime_div(PERIOD_OF_555_ASTABLE(0, RES_K(20), CAP_U(1)), 2);
    else
    {
        if (effect)
            new_time = attotime_make(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
        else
            new_time = attotime_never;
    }
    timer_adjust_oneshot(state->schaser_effect_555_timer, new_time, effect);
    sn76477_enable_w(state->sn, !(state->schaser_effect_555_is_low || state->schaser_explosion));
    sn76477_one_shot_cap_voltage_w(state->sn, !(state->schaser_effect_555_is_low || state->schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
}