summaryrefslogtreecommitdiff
path: root/avr/z80-if.c
diff options
context:
space:
mode:
authorLeo C2018-09-08 09:39:06 +0200
committerLeo C2018-09-08 09:39:06 +0200
commit226d32211880a061265faf6b8eadaf6ca1ec7a38 (patch)
tree7e3acd41732e9e53cd65160ace61a5e74e85bd04 /avr/z80-if.c
parentf66d9570ec64ecaa1f879619a0e4fed8d5fa7803 (diff)
downloadz180-stamp-226d32211880a061265faf6b8eadaf6ca1ec7a38.zip
New command cpuchk
move z80_load_mem() to z80-if.c
Diffstat (limited to 'avr/z80-if.c')
-rw-r--r--avr/z80-if.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/avr/z80-if.c b/avr/z80-if.c
index 180a27f..7a953f0 100644
--- a/avr/z80-if.c
+++ b/avr/z80-if.c
@@ -506,6 +506,8 @@ int32_t z80_memsize_detect(void)
return addr;
}
+/*--------------------------------------------------------------------------*/
+
void z80_write(uint32_t addr, uint8_t data)
{
z80_setaddress(addr);
@@ -605,6 +607,7 @@ void z80_read_block (uint8_t *dest, uint32_t src, size_t length)
Z80_O_MREQ = 1;
}
+/*--------------------------------------------------------------------------*/
/*
0179' rx.bs_mask: ds 1 ; (buf_len - 1)
@@ -745,3 +748,31 @@ void z80_memfifo_putc(fifo_t f, uint8_t val)
z80_write(fifo_dsc[f].base+FIFO_INDEX_IN, fifo_dsc[f].idx_in);
z80_bus_cmd(Release);
}
+
+/*--------------------------------------------------------------------------*/
+
+void z80_load_mem(int_fast8_t verbosity,
+ const FLASH unsigned char data[],
+ const FLASH unsigned long *sections,
+ const FLASH unsigned long address[],
+ const FLASH unsigned long length_of_sections[])
+{
+ uint32_t sec_base = 0;
+
+ if (verbosity > 1)
+ printf_P(PSTR("Loading Z180 memory... \n"));
+
+ for (unsigned sec = 0; sec < *sections; sec++) {
+ if (verbosity > 0) {
+ printf_P(PSTR(" From: 0x%.5lX to: 0x%.5lX (%5li bytes)\n"),
+ address[sec],
+ address[sec]+length_of_sections[sec] - 1,
+ length_of_sections[sec]);
+ }
+
+ z80_write_block_P((const FLASH unsigned char *) &data[sec_base], /* src */
+ address[sec], /* dest */
+ length_of_sections[sec]); /* len */
+ sec_base += length_of_sections[sec];
+ }
+}