OpenCores
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;
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.