summaryrefslogtreecommitdiff
path: root/emu/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'emu/memory.c')
-rw-r--r--emu/memory.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/emu/memory.c b/emu/memory.c
new file mode 100644
index 0000000..c9d953b
--- /dev/null
+++ b/emu/memory.c
@@ -0,0 +1,26 @@
+#include "memory.h"
+
+#include <stdio.h>
+
+void memory_init( memory_t *memory )
+{
+ memory->read = memory_read;
+ memory->write = memory_write;
+}
+
+uint8_t memory_read( memory_t *memory, uint16_t addr )
+{
+ return memory->cell[addr];
+}
+
+void memory_write( memory_t *memory, uint16_t addr, uint8_t data )
+{
+ memory->cell[addr] = data;
+}
+
+void memory_load( memory_t *memory, uint16_t addr, uint16_t size, const char *filename )
+{
+ FILE *f = fopen( filename, "rb" );
+ fread( &memory->cell[addr], size, 1, f );
+ fclose( f );
+}