diff options
Diffstat (limited to 'src/mem.c')
| -rw-r--r-- | src/mem.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -7,7 +7,7 @@ extern unsigned char DEFAULT_FONT[]; void MemInit(){ MemSet(0,0,4096); - MemCopy(DEFAULT_FONT,16*5,ADDR_FONT); + MemStore(DEFAULT_FONT,16*5,ADDR_FONT); } void MemSet(int addr, unsigned char value, int size){ @@ -15,12 +15,12 @@ void MemSet(int addr, unsigned char value, int size){ memory[addr+i]=value; } -void MemCopy(unsigned char *data, int size, int addr){ +void MemStore(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){ +void MemLoad(unsigned char *data, int size, int addr){ int location=addr; for(int i=0;i<size;i++){ data[i]=memory[addr+i]; @@ -33,6 +33,8 @@ void MemLoadROM(char *path){ ptr=fopen(path,"rb"); int location=ADDR_ROM; while(fread(&byte,1,1,ptr)==1){ + if(location >= 4096) + break; MemSet(location,byte,1); location++; } @@ -40,7 +42,11 @@ void MemLoadROM(char *path){ } void MemDump(){ - for(int addr=0;addr<4096;addr+=2){ + MemDumpRange(0,4096); +} + +void MemDumpRange(int from, int size){ + for(int addr=from;addr<from+size;addr+=2){ printf("0x%03x: %02x %02x\n",addr,memory[addr], memory[addr+1]); } } |
