summaryrefslogtreecommitdiff
path: root/avr
diff options
context:
space:
mode:
authorLeo C2016-06-13 23:04:35 +0200
committerLeo C2016-06-13 23:04:35 +0200
commit910e72069ea19a79e06e7146a5e42d0bb05a9c2f (patch)
tree4c03d51ea5afc65d73651646b41b2e692a369707 /avr
parent6b9edaeca057f14f2dd42469fef9f06d83138681 (diff)
downloadz180-stamp-910e72069ea19a79e06e7146a5e42d0bb05a9c2f.zip
Z180 parameter checks
Diffstat (limited to 'avr')
-rw-r--r--avr/z180-serv.c5
-rw-r--r--avr/z80-if.c6
2 files changed, 10 insertions, 1 deletions
diff --git a/avr/z180-serv.c b/avr/z180-serv.c
index f55b7a8..0ce6b9b 100644
--- a/avr/z180-serv.c
+++ b/avr/z180-serv.c
@@ -399,6 +399,7 @@ static const FLASH char * const FLASH rc_messages[] = {
FSTR("Access byond disk size"), /* 04 */
FSTR("Write protect"), /* 05 */
FSTR("No media"), /* 06 */
+ FSTR("R/W address == 0 !!!!"), /* 07 */
};
void msg_cpm_result(uint8_t subf, uint8_t rc, int res)
@@ -530,6 +531,10 @@ void do_msg_cpm_rw(uint8_t subf, int len, uint8_t * msg)
drv_debug(MIDDLE, PSTR(" T:%4d, S:%2d, cnt:%2d, lba: %.8lx, addr: %.5lx"),
track, sec, secs, pos, addr);
+ if (addr == 0) {
+ return msg_cpm_result(subf, 0x07, res);
+ }
+
if (dowrite && dp->opt & DRV_OPT_RO) {
return msg_cpm_result(subf, 0x05, res);
}
diff --git a/avr/z80-if.c b/avr/z80-if.c
index ae3bd66..08d417b 100644
--- a/avr/z80-if.c
+++ b/avr/z80-if.c
@@ -577,7 +577,6 @@ void z80_memfifo_init(const fifo_t f, uint32_t addr)
{
fifo_dsc[f].base = addr;
-DBG_P(2, "z80_memfifo_init: %i, %lx\n", f, addr);
if (addr != 0) {
z80_bus_cmd(Request);
@@ -585,6 +584,11 @@ DBG_P(2, "z80_memfifo_init: %i, %lx\n", f, addr);
fifo_dsc[f].idx_in = z80_read(addr + FIFO_INDEX_IN);
fifo_dsc[f].idx_out = z80_read(addr + FIFO_INDEX_OUT);
z80_bus_cmd(Release);
+
+ if (fifo_dsc[f].idx_in != 0 || fifo_dsc[f].idx_out != 0) {
+ DBG_P(1, "## z80_memfifo_init: %i, %lx, in: %.2x, out: %.2x, mask: %.2x\n",
+ f, addr, fifo_dsc[f].idx_in, fifo_dsc[f].idx_out, fifo_dsc[f].mask);
+ }
}
}