Zero all memories when initializing program
[emu8051.git] / src / memory.c
index ac8bca5..c5b2acf 100644 (file)
@@ -70,6 +70,8 @@ memory_init(void)
                        log_err("%s", strerror(errno));
                        exit(1);
                }
+
+               memset(m->buf, 0x00, m->size);
        }
 }
 
@@ -183,6 +185,18 @@ stack_pop16(void)
        return value;
 }
 
+/* Read a 16-bit address from PGM memory, starting at <base> offset */
+uint16_t
+pgm_read_addr16(uint16_t base)
+{
+       uint16_t addr;
+
+       addr = memory_read8(PGM_MEM_ID, base) << 8; /* MSB */
+       addr |= memory_read8(PGM_MEM_ID, base + 1); /* LSB */
+
+       return addr;
+}
+
 /* Dump memory */
 void
 DumpMem(char *Address, char *Asize, int memory_id)