User Tools

Site Tools


notes:asm:cpumem

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:asm:cpumem [2011/02/17 02:13] jr018429notes:asm:cpumem [2011/05/18 23:30] (current) jr018429
Line 1: Line 1:
 +====== CPUMEM ======
 +class library is included before the main function like this:\\
 +<code>
 +#include "cpumem.h"
 +</code>
 +\\
 +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:\\
 +\\
 +<code>
 +//Instantiates an object of type CPUMEM
 +CPUMEM cpumemory;
 +</code>
 +\\
 +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:\\
 +<code>
 +//reads 8-bit data from last memory address, 0xffff, or 65535
 +unsigned char value = cpumemory.read(0xffff);
 +</code>
 +\\
 +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:\\
 +<code>
 +//writes the value 0xff, or 255, to the last memory address 0xffff, or 65535
 +cpumemory.write(0xffff, 0xff);
 +</code>
 +\\
 +**or.h**\\
 +<code>
 +#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
 +</code>
 +\\
 +**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
 +<code>
 +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
 +</code>