Originally Posted by Curt Coder
Because my NE555 timer hack keeps the interrupt active for too long.
Hm... Looking at the code we see:
Code
static MACHINE_CONFIG_START( mc1000, mc1000_state )
[...]
    MDRV_TIMER_ADD_PERIODIC("ne555", ne555_tick, HZ(60))
and:
Code
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:
Code
*      *      *      *      *      *
+------+      +------+      +------+
|      |      |      |      |      |
+      +------+      +------+      +-...
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?
Code
*      *      *      *      *      *
+-+    +-+    +-+    +-+    +-+    +-...
| |    | |    | |    | |    | |    |
+ +----+ +----+ +----+ +----+ +----+

Last edited by Ensjo; 10/19/10 03:20 PM.