diff options
Diffstat (limited to 'emu/memory.c')
-rw-r--r-- | emu/memory.c | 26 |
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 ); +} |