summaryrefslogtreecommitdiff
path: root/src/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem.c')
-rw-r--r--src/mem.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/mem.c b/src/mem.c
index 12b039f..ec34750 100644
--- a/src/mem.c
+++ b/src/mem.c
@@ -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]);
}
}