diff options
| author | Loic Guegan <loic.guegan@mailbox.org> | 2023-12-25 07:24:17 +0100 |
|---|---|---|
| committer | Loic Guegan <loic.guegan@mailbox.org> | 2023-12-25 07:24:17 +0100 |
| commit | 475996af26408156486faa43682f7effdabfa156 (patch) | |
| tree | 571bd3934c7a312ab032e20e7111bf81d93f4ff7 /src/mem.c | |
| parent | 3924115080f5332d8e452494af21be7b47b6bac6 (diff) | |
Minor changes
Diffstat (limited to 'src/mem.c')
| -rw-r--r-- | src/mem.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/mem.c b/src/mem.c new file mode 100644 index 0000000..c537120 --- /dev/null +++ b/src/mem.c @@ -0,0 +1,57 @@ +#include "mem.h" +#include <stdio.h> + +unsigned char memory[4096]; + +extern unsigned char DEFAULT_FONT[]; + +void MemInit(){ + MemSet(0,0,4096); + MemCopy(DEFAULT_FONT,16*5,ADDR_FONT); +} + +void MemSet(int addr, unsigned char value, int size){ + for(int i=0;i<size;i++) + memory[addr+i]=value; +} + +void MemCopy(unsigned char *data, int size, int addr){ + for(int i=0;i<size;i++) + memory[addr+i]=data[i]; +} + +void MemRead(unsigned char *data, int size, int addr){ + int location=addr; + for(int i=0;i<size;i++) + data[i]=memory[addr+i]; +} + +void MemLoadROM(char *path){ + char byte; + FILE *ptr; + ptr=fopen(path,"rb"); + int location=ADDR_ROM; + while(fread(&byte,1,1,ptr)==1){ + MemSet(location,byte,1); + location++; + } + fclose(ptr); +} + +unsigned char DEFAULT_FONT[]={ +0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 +0x20, 0x60, 0x20, 0x20, 0x70, // 1 +0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 +0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3 +0x90, 0x90, 0xF0, 0x10, 0x10, // 4 +0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5 +0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6 +0xF0, 0x10, 0x20, 0x40, 0x40, // 7 +0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8 +0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9 +0xF0, 0x90, 0xF0, 0x90, 0x90, // A +0xE0, 0x90, 0xE0, 0x90, 0xE0, // B +0xF0, 0x80, 0x80, 0x80, 0xF0, // C +0xE0, 0x90, 0x90, 0x90, 0xE0, // D +0xF0, 0x80, 0xF0, 0x80, 0xF0, // E +0xF0, 0x80, 0xF0, 0x80, 0x80}; // F |
