mirror of
https://github.com/makarcz/vm6502.git
synced 2024-06-09 11:29:27 +00:00
56 lines
1.1 KiB
C
56 lines
1.1 KiB
C
|
#ifndef MEMORY_H
|
||
|
#define MEMORY_H
|
||
|
|
||
|
#define MAX_8BIT_ADDR 0xFFFF
|
||
|
#define CHARIO_ADDR 0xE000
|
||
|
#define CHARIO_BUF_SIZE 256
|
||
|
#define ROM_BEGIN 0xD000
|
||
|
#define ROM_END 0xDFFF
|
||
|
|
||
|
namespace MKBasic {
|
||
|
|
||
|
class Memory
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
Memory();
|
||
|
~Memory();
|
||
|
|
||
|
void Initialize();
|
||
|
unsigned char Peek8bit(unsigned short addr);
|
||
|
unsigned short Peek16bit(unsigned short addr);
|
||
|
void Poke8bit(unsigned short addr, unsigned char val);
|
||
|
void SetCharIO(unsigned short addr, bool echo);
|
||
|
void DisableCharIO();
|
||
|
unsigned short GetCharIOAddr();
|
||
|
char GetCharIn();
|
||
|
char GetCharOut();
|
||
|
void EnableROM();
|
||
|
void EnableROM(unsigned short start, unsigned short end);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
private:
|
||
|
|
||
|
unsigned char m8bitMem[MAX_8BIT_ADDR+1];
|
||
|
char mCharIOBufIn[CHARIO_BUF_SIZE];
|
||
|
char mCharIOBufOut[CHARIO_BUF_SIZE];
|
||
|
unsigned int mInBufDataBegin;
|
||
|
unsigned int mInBufDataEnd;
|
||
|
unsigned int mOutBufDataBegin;
|
||
|
unsigned int mOutBufDataEnd;
|
||
|
unsigned short mCharIOAddr;
|
||
|
bool mCharIOActive;
|
||
|
bool mIOEcho;
|
||
|
unsigned short mROMBegin;
|
||
|
unsigned short mROMEnd;
|
||
|
bool mROMActive;
|
||
|
|
||
|
unsigned char ReadCharKb();
|
||
|
void PutCharIO(char c);
|
||
|
};
|
||
|
|
||
|
} // namespace MKBasic
|
||
|
|
||
|
#endif
|