diff options
-rw-r--r-- | avr/z80-if.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/avr/z80-if.c b/avr/z80-if.c index 6d83172..180a27f 100644 --- a/avr/z80-if.c +++ b/avr/z80-if.c @@ -147,7 +147,7 @@ static volatile uint8_t timer; /* used for bus timeout */ static bool reset_polarity; /*---------------------------------------------------------*/ -/* 10Hz timer interrupt generated by OC4A */ +/* 10Hz timer interrupt generated by OC5A */ /*---------------------------------------------------------*/ ISR(TIMER5_COMPA_vect) @@ -351,6 +351,9 @@ zstate_t z80_bus_cmd(bus_cmd_t cmd) z80_addrbus_set_in(); z80_reset_active(); Z80_O_BUSREQ = 1; + timer = BUS_TO; + while (Z80_I_BUSACK == 0 && timer) + ; zstate = RESET; break; @@ -396,12 +399,18 @@ zstate_t z80_bus_cmd(bus_cmd_t cmd) z80_addrbus_set_in(); z80_reset_active(); Z80_O_BUSREQ = 1; + timer = BUS_TO; + while (Z80_I_BUSACK == 0 && timer) + ; zstate = RESET; break; case RUNNING_AQRD: z80_dbus_set_in(); z80_addrbus_set_in(); Z80_O_BUSREQ = 1; + timer = BUS_TO; + while (Z80_I_BUSACK == 0 && timer) + ; zstate = RUNNING; break; default: @@ -412,6 +421,7 @@ zstate_t z80_bus_cmd(bus_cmd_t cmd) case Run: switch (zstate) { case RESET: + _delay_ms(20); /* TODO: */ z80_reset_inactive(); zstate = RUNNING; break; |