sim: added extensionmodule support + progger
[calu.git] / 3b_sim / extensions / cprog.hpp
diff --git a/3b_sim/extensions/cprog.hpp b/3b_sim/extensions/cprog.hpp
new file mode 100644 (file)
index 0000000..82d83cf
--- /dev/null
@@ -0,0 +1,24 @@
+#include "../iext.hpp"
+
+class Cprog : public Iext {
+       public:
+               Cprog() : m_writeAddress(0) {};
+               void applyTick() {};
+               void loadData(const int address, CDat value);
+               CDat readData(const int) { return 0; }
+       private:
+               int m_writeAddress;
+};
+
+void Cprog::loadData(const int address, CDat value)
+{
+       if(address == 0x2034) {
+               m_writeAddress = value;
+               //adress pointer
+       }
+       else if(address == 0x2038) {
+               this->m_cpu->setProg(m_writeAddress, m_disasm->decodeNum(value));
+               m_writeAddress += 4;
+               //data pointer
+       }
+}