#ifndef __CPU__H__ #define __CPU__H__ #include "cdat.hpp" #include "cmem.hpp" #include "cpmem.hpp" #include "ccolor.h" class Iinstr; #include "Iinstr.hpp" class CCpu { private: bool m_Z, m_S, m_C, m_O; CDat m_pc, m_pc_next, m_perf; CMem m_reg, m_ram; CPMem m_prog; CDat m_stack; public: void registerExtension() {}; void tick(); CDat getRegister(const int) const; void setRegister(const int, CDat); CDat getRAM(const int) const; void setRAM(const int, CDat); Iinstr* getProg(const int) const; void setProg(const int, Iinstr*); CDat getPerf() const; void setPerf(CDat); void incPerf(); void incPerfBy(short); CDat getCurPC() const; CDat getNextPC() const; void setNextPC(CDat); CDat getFlags() const; void setFlags(CDat); /* will only change zero and sign */ void updateFlags(CDat); /* will change all flags */ void updateFlags(CDatd, CDat, CDat); /* will change all flags */ void updateFlags(bool z, bool o, bool c, bool s); /* will change carry */ void updateCarry(bool c); bool getCarry(); bool conditionMet(short); int getStack() const; void setStack(const int); CCpu(int,int,int); }; #endif