Zero all memories when initializing program
[emu8051.git] / src / memory.c
index 44a2118..c5b2acf 100644 (file)
@@ -70,6 +70,8 @@ memory_init(void)
                        log_err("%s", strerror(errno));
                        exit(1);
                }
+
+               memset(m->buf, 0x00, m->size);
        }
 }
 
@@ -183,44 +185,16 @@ stack_pop16(void)
        return value;
 }
 
-void
-psw_write_cy(int cy)
-{
-       u_int8_t psw = memory_read8(INT_MEM_ID, _PSW_);
-
-       if (cy)
-               psw |= 0x80;  /* Set */
-       else
-               psw &= ~0x80; /* Clear */
-
-       memory_write8(INT_MEM_ID, _PSW_, psw); /* Save updated value */
-}
-
-void
-psw_set_cy(void)
-{
-       u_int8_t psw = memory_read8(INT_MEM_ID, _PSW_);
-
-       psw |= 0x80;
-
-       memory_write8(INT_MEM_ID, _PSW_, psw); /* Save updated value */
-}
-
-void
-psw_clr_cy(void)
+/* Read a 16-bit address from PGM memory, starting at <base> offset */
+uint16_t
+pgm_read_addr16(uint16_t base)
 {
-       u_int8_t psw = memory_read8(INT_MEM_ID, _PSW_);
-
-       psw &= ~0x80;
+       uint16_t addr;
 
-       memory_write8(INT_MEM_ID, _PSW_, psw); /* Save updated value */
-}
+       addr = memory_read8(PGM_MEM_ID, base) << 8; /* MSB */
+       addr |= memory_read8(PGM_MEM_ID, base + 1); /* LSB */
 
-/* Returns 0 or 1 */
-int
-psw_read_cy(void)
-{
-       return memory_read8(INT_MEM_ID, _PSW_) >> 7;
+       return addr;
 }
 
 /* Dump memory */