Hello, all:
I have another C issue that I can't seem to see the answer for, so I
thought I'd throw it out to the masses.
I'm deep into the Altair 680b emulation project (base code done,
working on telnet access) and I'm experiencing problems reading a file
stream into the memory array. Here's snippets of the code:
<SNIP>
byte *ppmem ; // pointer into memory array
byte ucMem[3*65536] ; // actual memory-see defines below for usage
// roms[] is an array of structures defining start-time loaded ROMs. Only
one ROM now
//(the monitor PROM), but flexible enough to allow bank-switched ROMs (not
applicable
//in the 680b but a leftover from the 6800 processor emulation code that was
borrowed
//for the project)
//
//MEM_xxx are defines for the offset into the ucMem array to various areas
#define MEM_RAM 0
#define MEM_ROM 0x10000
#define MEM_FLAGS 0x20000
FILE *pFH ;
// open file, etc.
//create while loop to walk through roms[] array
// Read ROM directly to memory. This works.
ppmem = &ucMem[roms[i].iROMStart + MEM_ROM] ;
fread(ppmem, sizeof(byte), roms[i].iROMLen, pFH) ;
//this doesn't work...
//fread(&ucMem[roms[i].iROMStart + MEM_ROM], sizeof(byte), roms[i].iROMLen,
pFH) ;
//...nor does this
//fread((char *)ucMem[roms[i].iROMStart + MEM_ROM], sizeof(byte),
roms[i].iROMLen, pFH) ;
// Set flags for ROM
memset(&ucMem[roms[i].iROMStart + MEM_FLAGS], 1, roms[i].iROMLen) ;
</SNIP>
So here's where I'm missing it. Under all three fread scenarios, the
compiler doesn't throw a warning...they all compile cleanly. But only the
first works.
This sounds like one of those "What's the Bug" ads from DDJ. What am
I missing?
Rich