URL
https://opencores.org/ocsvn/eco32/eco32/trunk
Subversion Repositories eco32
Compare Revisions
- This comparison shows the changes necessary to convert path
/eco32/trunk/sim
- from Rev 83 to Rev 91
- ↔ Reverse comparison
Rev 83 → Rev 91
/memory.c
30,6 → 30,7
static unsigned int romSize; |
static FILE *progImage; |
static unsigned int progSize; |
static unsigned int progAddr; |
|
|
Word memoryReadWord(Word pAddr) { |
208,7 → 209,7
cPrintf("%6d MB RAM installed", memSize / M); |
if (progImage != NULL) { |
fseek(progImage, 0, SEEK_SET); |
if (fread(mem, progSize, 1, progImage) != 1) { |
if (fread(mem + progAddr, progSize, 1, progImage) != 1) { |
error("cannot read program image file"); |
} |
cPrintf(", %d bytes loaded", progSize); |
230,6 → 231,7
|
void memoryInit(unsigned int memorySize, |
char *progImageName, |
unsigned int loadAddr, |
char *romImageName) { |
/* allocate RAM */ |
memSize = memorySize; |
249,8 → 251,9
} |
fseek(progImage, 0, SEEK_END); |
progSize = ftell(progImage); |
if (progSize > memSize) { |
error("program file too big"); |
progAddr = loadAddr; |
if (progAddr + progSize > memSize) { |
error("program file or load address too big"); |
} |
/* do actual loading of image in memoryReset() */ |
} |
/memory.h
17,6 → 17,7
void memoryReset(void); |
void memoryInit(unsigned int memorySize, |
char *progImageName, |
unsigned int loadAddr, |
char *romImageName); |
void memoryExit(void); |
|
/main.c
30,6 → 30,7
fprintf(stderr, " [-m <n>] install n MB of RAM (1-%d)\n", |
RAM_SIZE_MAX / M); |
fprintf(stderr, " [-l <prog>] set program file name\n"); |
fprintf(stderr, " [-a <addr>] set program load address\n"); |
fprintf(stderr, " [-r <rom>] set ROM image file name\n"); |
fprintf(stderr, " [-d <disk>] set disk image file name\n"); |
fprintf(stderr, " [-t <n>] connect n terminals (0-%d)\n", |
50,6 → 51,7
Bool interactive; |
int memSize; |
char *progName; |
unsigned int loadAddr; |
char *romName; |
char *diskName; |
int numTerms; |
63,6 → 65,7
interactive = false; |
memSize = RAM_SIZE_DFL / M; |
progName = NULL; |
loadAddr = 0; |
romName = NULL; |
diskName = NULL; |
numTerms = 0; |
96,6 → 99,15
} |
progName = argv[++i]; |
break; |
case 'a': |
if (i == argc - 1) { |
usage(argv[0]); |
} |
loadAddr = strtoul(argv[++i], &endp, 0); |
if (*endp != '\0') { |
usage(argv[0]); |
} |
break; |
case 'r': |
if (i == argc - 1 || romName != NULL || progName != NULL) { |
usage(argv[0]); |
155,10 → 167,10
if (graphics) { |
graphInit(); |
} |
memoryInit(memSize * M, progName, romName); |
memoryInit(memSize * M, progName, loadAddr, romName); |
mmuInit(); |
if (progName != NULL) { |
initialPC = 0xC0000000; |
initialPC = 0xC0000000 | loadAddr; |
} else { |
initialPC = 0xC0000000 | ROM_BASE; |
} |