diff options
-rw-r--r-- | avr/z80-if.c | 10 | ||||
-rw-r--r-- | include/common.h | 7 |
2 files changed, 10 insertions, 7 deletions
diff --git a/avr/z80-if.c b/avr/z80-if.c index 7a953f0..9452ad1 100644 --- a/avr/z80-if.c +++ b/avr/z80-if.c @@ -144,7 +144,6 @@ void z80_bus_request_or_exit(void) static zstate_t zstate; static volatile uint8_t timer; /* used for bus timeout */ -static bool reset_polarity; /*---------------------------------------------------------*/ /* 10Hz timer interrupt generated by OC5A */ @@ -207,7 +206,7 @@ static void z80_dbus_set_out(void) static void z80_reset_active(void) { - if (reset_polarity) + if (Stat & S_RESET_POLARITY) Z80_O_RST = 1; else Z80_O_RST = 0; @@ -215,7 +214,7 @@ static void z80_reset_active(void) static void z80_reset_inactive(void) { - if (reset_polarity) + if (Stat & S_RESET_POLARITY) Z80_O_RST = 0; else Z80_O_RST = 1; @@ -255,7 +254,10 @@ void z80_setup_bus(void) DDR_SS = (DDR_SS & ~_BV(WAIT)) | _BV(RUN) | _BV(STEP); } - reset_polarity = Z80_I_RST; + if (Z80_I_RST) + Stat |= S_RESET_POLARITY; + else + Stat &= ~S_RESET_POLARITY; z80_reset_active(); DDR_RST |= _BV(RST); diff --git a/include/common.h b/include/common.h index 12d87c4..9bd3418 100644 --- a/include/common.h +++ b/include/common.h @@ -78,9 +78,10 @@ struct bits { extern volatile uint_least8_t Stat; #endif /* __AVR__ */ -#define S_10MS_TO (1<<0) -#define S_MSG_PENDING (1<<1) -#define S_CON_PENDING (1<<2) +#define S_10MS_TO (1<<0) +#define S_MSG_PENDING (1<<1) +#define S_CON_PENDING (1<<2) +#define S_RESET_POLARITY (1<<3) static inline int my_puts(const char *s) |