Because my NE555 timer hack keeps the interrupt active for too long.
Hm... Looking at the code we
see:
static MACHINE_CONFIG_START( mc1000, mc1000_state )
[...]
MDRV_TIMER_ADD_PERIODIC("ne555", ne555_tick, HZ(60))
and:
static TIMER_DEVICE_CALLBACK( ne555_tick )
{
mc1000_state *state = timer.machine->driver_data<mc1000_state>();
if (state->ne555_int == ASSERT_LINE)
{
state->ne555_int = CLEAR_LINE;
}
else
{
state->ne555_int = ASSERT_LINE;
}
cputag_set_input_line(timer.machine, Z80_TAG, INPUT_LINE_IRQ0, state->ne555_int);
}
If I understand this, "ne555_int" remain alternately "asserted" and "clear" (1 and 0, up and down, whatever) for 1/60 second:
* * * * * *
+------+ +------+ +------+
| | | | | |
+ +------+ +------+ +-...
How should this work instead? At every 1/60 second it should have a quick "asserted" time, and then remain "clear" for the rest of the cycle?
* * * * * *
+-+ +-+ +-+ +-+ +-+ +-...
| | | | | | | | | | |
+ +----+ +----+ +----+ +----+ +----+