projects
/
calu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sim: brr fix, interrupt
[calu.git]
/
3b_sim
/
ccpu.hpp
diff --git
a/3b_sim/ccpu.hpp
b/3b_sim/ccpu.hpp
index 4c250b57570b97363655da1bbf9c8374e3013843..17f90b18d6abadf65092469b230a38fd6213f101 100644
(file)
--- a/
3b_sim/ccpu.hpp
+++ b/
3b_sim/ccpu.hpp
@@
-5,26
+5,39
@@
#include "cmem.hpp"
#include "cpmem.hpp"
#include "cmem.hpp"
#include "cpmem.hpp"
+#include "ccolor.h"
+
class Iinstr;
class Iinstr;
+class Iext;
+#include "iext.hpp"
+#include <boost/regex.hpp>
#include "Iinstr.hpp"
class CCpu {
private:
#include "Iinstr.hpp"
class CCpu {
private:
- bool m_Z, m_S, m_C, m_O;
+ bool m_Z, m_S, m_C, m_O
, m_breakNext
;
CDat m_pc, m_pc_next, m_perf;
CMem<CDat> m_reg, m_ram;
CPMem<Iinstr*> m_prog;
CDat m_pc, m_pc_next, m_perf;
CMem<CDat> m_reg, m_ram;
CPMem<Iinstr*> m_prog;
+ vector<Iext*> m_exts;
+
CDat m_stack;
CDat m_stack;
+ static const int EXT_MODEL_OFFSET = 0x2000;
+
public:
void registerExtension() {};
public:
void registerExtension() {};
+ void applyToExtensions(const vector<string>& in);
void tick();
void tick();
+ void breakNext();
+ bool shouldBreak();
+
CDat getRegister(const int) const;
void setRegister(const int, CDat);
CDat getRegister(const int) const;
void setRegister(const int, CDat);
@@
-34,6
+47,8
@@
class CCpu {
Iinstr* getProg(const int) const;
void setProg(const int, Iinstr*);
Iinstr* getProg(const int) const;
void setProg(const int, Iinstr*);
+ void registerExtension(Iext*);
+
CDat getPerf() const;
void setPerf(CDat);
void incPerf();
CDat getPerf() const;
void setPerf(CDat);
void incPerf();
@@
-61,6
+76,8
@@
class CCpu {
int getStack() const;
void setStack(const int);
int getStack() const;
void setStack(const int);
+ string colorifyInstr(string instr);
+
CCpu(int,int,int);
};
CCpu(int,int,int);
};