summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--avr/z80-if.c12
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;