summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--avr/z80-if.c10
-rw-r--r--include/common.h7
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)