summaryrefslogtreecommitdiff
path: root/avr/z80-if.c
diff options
context:
space:
mode:
Diffstat (limited to 'avr/z80-if.c')
-rw-r--r--avr/z80-if.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/avr/z80-if.c b/avr/z80-if.c
index 207aed1..9ee9cb0 100644
--- a/avr/z80-if.c
+++ b/avr/z80-if.c
@@ -2,7 +2,7 @@
*
* Pin assignments
*
- * | Z180-Sig | AVR-Port | Dir | Special Function |
+ * | Z180-Sig | AVR-Port | Dir | Special Function |
* +------------+---------------+-------+-----------------------+
* | A0 | PA 0 | O | |
* | A1 | PA 1 | O | |
@@ -137,14 +137,20 @@ struct bits {
//#define Z80_I_HALT SBIT(P_HALT, )
+#if 0
void z80_busreq(level_t level)
{
Z80_O_BUSREQ = level;
}
+#endif
void z80_reset(level_t level)
{
Z80_O_RST = level;
+ if (level)
+ Stat |= S_Z180_RUNNING;
+ else
+ Stat &= ~S_Z180_RUNNING;
}
@@ -153,6 +159,7 @@ void z80_reset_pulse(void)
Z80_O_RST = 0;
_delay_us(10);
Z80_O_RST = 1;
+ Stat |= S_Z180_RUNNING;
}
#if 0
@@ -241,6 +248,8 @@ void z80_setup_bus(void)
z80_setup_addrbus_tristate();
z80_setup_dbus_in();
+
+ Stat &= ~S_Z180_RUNNING;
}
/*--------------------------------------------------------------------------*/
@@ -248,6 +257,10 @@ void z80_setup_bus(void)
void z80_request_bus(void)
{
Z80_O_BUSREQ = 0;
+
+ if (!(Stat & S_Z180_RUNNING))
+ Z80_O_RST = 1;
+
while(Z80_I_BUSACK == 1);
z80_setup_addrbus_active();
}
@@ -256,6 +269,10 @@ void z80_release_bus(void)
{
z80_setup_dbus_in();
z80_setup_addrbus_tristate();
+
+ if (!(Stat & S_Z180_RUNNING))
+ Z80_O_RST = 0;
+
Z80_O_BUSREQ = 1;
//while(Z80_I_BUSACK == 0);
}
@@ -456,6 +473,9 @@ void z80_memfifo_putc(fifo_t f, uint8_t val)
}
/*--------------------------------------------------------------------------*/
+/*
+ TODO: Rewrite msg_fifo routines for AVR
+*/
static struct {
uint32_t base;