User Tools

Site Tools


notes:asm:cpumem

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);


or.h

#ifndef _OR_H
#define _OR_H
class OR
{
        public:
                OR();

                void set();
                void set(bool);
                void set(bool, bool);
                bool get();

        private:
                bool input1;
                bool input2;
};
#endif


ortest.cc
#include <cstdio> #include “or.h”

int main() {

      bool a, b;
      a = true, b = false;
      printf("--------------------\n");
      printf("TRUE is: %d\n", true);
      printf("FALSE is: %d\n", false);
      printf("--------------------\n\n");
      OR myOrGate;
      printf(" a b | x \n");
      printf("-----+---\n");
      for(int temp = 0; temp <=3; temp++)
      {
              a = temp & 0x02;
              b = temp & 0x01;
              //if(temp & 0x02) a = true;
              //else a = false;
              //if(temp & 0x01) b = true;
              //else b = false;
              ////switch(temp)
              ////{
              ////    case 0:
              ////            a = false;
              ////            b = false;
              ////            break;
              ////    case 1:
              ////            a = false;
              ////            b = true;
              ////            break;
              ////    case 2:
              ////            a = true;
              ////            b = false;
              ////            break;
              ////    case 3:
              ////            a = true;
              ////            b = true;
              ////            break;
              ////}
              myOrGate.set(a, b);
              printf(" %d %d | %d\n", a, b, myOrGate.get());
      }
      printf("---------\n");
      return(0);

} </code>
Makefile

CXX = g++ $(CXXFLAGS) $(INC)
CXXFLAGS = -Wall
INC = -I ../../include/
SRC = or.cc
OBJ = $(SRC:.cc=.o)
all: $(SRC) $(OBJ)
debug: CXX += -DDEBUG -g
debug: DEBUG = debug
debug: $(SRC) $(OBJ)

.cc.o:
ifneq ($(MAKECMDGOALS),debug)
        @printf "[B]   %-20s ... " "$<"
        @$(CXX) -c $< && echo "OK" || echo "FAIL"
else
        $(CXX) -c $<
endif


clean:
        rm -f *.o $(OBJ) core
notes/asm/cpumem.txt · Last modified: 2011/05/18 19:30 by jr018429