====== CPUMEM ====== class library is included before the main function like this:\\ #include "cpumem.h" \\ CPUMEM::CPUMEM() is the constructor and automatically creates memory of the correct size, 64k (65536 elements, 0-65535), and type 1 byte (8-bits) for the 8085. The constructor is called automatically as the object is being instantiated.\\ An object of the type CPUMEM is instatiated like this:\\ \\ //Instantiates an object of type CPUMEM CPUMEM cpumemory; \\ CPUMEM::~CPUMEM() is the destructor and automatically deallocates the memory which was created when an object of type CPUMEM when an object of this type goes out of scope.\\ \\ unsigned char& CPUMEM::operator[](unsigned short int address) is a depricated member function. It uses overloaded operators to make the code that calls this method look like an array. **Do NOT use it.**\\ \\ unsigned char CPUMEM::read(unsigned short int address) is the member function that is used to read the 8-bit (unsigned char) value at a specific address.\\ The **read** member function is used like this:\\ //reads 8-bit data from last memory address, 0xffff, or 65535 unsigned char value = cpumemory.read(0xffff); \\ void CPUMEM::write(unsigned short int address, unsigned char value) is the member function that is used to write an 8-bit value to a specific address.\\ The **write** member function is used like this:\\ //writes the value 0xff, or 255, to the last memory address 0xffff, or 65535 cpumemory.write(0xffff, 0xff); \\ **cpumem.h**\\ #ifndef _CPUMEM_H #define _CPUMEM_H class CPUMEM { public: CPUMEM(); unsigned char& operator[](unsigned short int address); unsigned char read(unsigned short int address); void write(unsigned short int address, unsigned char value); ~CPUMEM(); private: //unsigned short int memlngth; unsigned char *memadd; }; #endif \\ **cpumem.cc**\\ #include "cpumem.h" CPUMEM::CPUMEM() { memadd = new unsigned char[65536]; } CPUMEM::~CPUMEM() { delete[] memadd; } unsigned char& CPUMEM::operator[](unsigned short int address) { return memadd[address]; } unsigned char CPUMEM::read(unsigned short int address) { return *(memadd + address); } void CPUMEM::write(unsigned short int address, unsigned char value) { *(memadd + address) = value; } \\ **memtest.cc**\\ #include #include "cpumem.h" const int MEM_MAX = 65535; int main() { CPUMEM datamemory; for (int temp = 0x00; temp <= MEM_MAX; temp++) datamemory.write(temp, 255); for(int temp = 0x00; temp <= MEM_MAX; temp++) printf("Memory address %x contains the value %x\n", temp, datamemory.read(temp)); return(0); } \\ **Makefile**\\ CXX = g++ $(CXXFLAGS) $(INC) $(LIBS) AR = ar CXXFLAGS = -Wall INC = -I ../../include/ LIBS = SRC = cpumem.cc memtest.cc OBJ = $(SRC:.cc=.o) BIN = memtest all: $(SRC) $(BIN) debug: CXX += -DDEBUG -g debug: DEBUG = debug debug: $(SRC) $(BIN) $(BIN): $(OBJ) ifneq ($(MAKECMDGOALS),debug) @printf "[CC] %-20s ... " "$(BIN)" @$(CXX) -o $(BIN) $(OBJ) && echo "SUCCESS" || echo "FAIL" else $(CXX) -o $(BIN) $(OBJ) endif .cc.o: ifneq ($(MAKECMDGOALS),debug) @printf "[B] %-20s ... " "$<" @$(CXX) -c $< && echo "OK" || echo "FAIL" else $(CXX) -c $< endif clean: rm -f *.o $(BIN) core default: $(BIN)