This source file includes following definitions.
- peekb
- peekw
- pokeb
- pokew
static char szMemoryHpp[] = "$Id: memory.hpp,v 1.1 2011/03/24 11:58:05 doug Exp $";
#ifdef MEMORY
#define MEMSIZE 16384
class CMemory {
unsigned char m_memory[MEMSIZE];
int m_memsize;
char m_szFilename[128];
public:
CMemory(int);
CMemory(int,char *);
unsigned char peekb(int);
unsigned int peekw(int);
void pokeb(int,unsigned char);
void pokew(int,unsigned int);
~CMemory();
};
CMemory::CMemory(int memsize)
{
TRACE("starting CMemory::CMemory...");
m_memsize = memsize;
strcpy(m_szFilename,"memory.bin");
FILE * fd = fopen(m_szFilename,"r");
if(NULL == fd) {
fd = fopen(m_szFilename,"w");
memset(m_memory,0,memsize);
fwrite(m_memory,memsize,1,fd);
fclose(fd);
fd = fopen(m_szFilename,"r");
}
fread(m_memory,memsize,1,fd);
fclose(fd);
TRACE("...ending CMemory::CMemory");
}
CMemory::CMemory(int memsize,char *filename)
{
TRACE("starting CMemory::CMemory...");
m_memsize = memsize;
strcpy(m_szFilename,filename);
FILE * fd = fopen(filename,"r");
if(NULL == fd) {
fd = fopen(filename,"w");
memset(m_memory,0,memsize);
fwrite(m_memory,memsize,1,fd);
fclose(fd);
fd = fopen(filename,"r");
}
fread(m_memory,memsize,1,fd);
fclose(fd);
TRACE("...ending CMemory::CMemory");
}
unsigned char CMemory::peekb(int offset)
{
TRACE("starting CMemory::peekb...");
TRACE("...ending CMemory::peekb");
return m_memory[offset];
}
unsigned int CMemory::peekw(int offset)
{
TRACE("starting CMemory::peekw...");
TRACE("...ending CMemory::peekw");
return m_memory[offset] + (m_memory[offset+1]<<8) ;
}
void CMemory::pokeb(int offset,unsigned char data)
{
TRACE("starting CMemory::pokeb...");
TRACE("...ending CMemory::pokeb");
m_memory[offset] = data;
}
void CMemory::pokew(int offset,unsigned int data)
{
TRACE("starting CMemory::pokew...");
m_memory[offset] = data & 0xff;
m_memory[offset+1] = data >> 8;
TRACE("...ending CMemory::pokew");
}
CMemory::~CMemory()
{
TRACE("starting CMemory::~CMemory...");
FILE * fd = fopen(m_szFilename,"w");
fwrite(m_memory,MEMSIZE,1,fd);
fclose(fd);
TRACE("...ending CMemory::~CMemory");
}
#endif