From 89e202f49b9857dcd3627fbc4e0262125d729bbc Mon Sep 17 00:00:00 2001 From: manuel Date: Wed, 13 May 2009 04:09:39 +0200 Subject: adding all instructions and displays --- ue3/mycpu/ccpu.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'ue3/mycpu/ccpu.cpp') diff --git a/ue3/mycpu/ccpu.cpp b/ue3/mycpu/ccpu.cpp index 6f364f8..b1539a4 100644 --- a/ue3/mycpu/ccpu.cpp +++ b/ue3/mycpu/ccpu.cpp @@ -10,23 +10,35 @@ # include #endif #include "ccpu.h" +#include "displays.h" using namespace std; CCPU::CCPU(const unsigned cnt) - : m_regcnt(cnt), m_memory(NULL), m_program(NULL), m_flagzero(0), m_flagsign(0) + : m_regcnt(cnt), m_memory(NULL), m_program(NULL), m_flagzero(false), m_flagsign(false) { + /* create registers */ m_registers = new CDat[cnt]; for(unsigned i = 0; i < cnt; ++i) m_registers[i] = 0; + + /* create displays */ + m_displays.insert(new CDisplayWDEZ); + m_displays.insert(new CDisplayWHEX); } /*----------------------------------------------------------------------------*/ CCPU::~CCPU() { + /* delete registers */ delete[] m_registers; m_registers = NULL; + + /* delete displays */ + std::set::iterator it; + for (it = m_displays.begin() ; it != m_displays.end(); ++it) + delete *it; } /*----------------------------------------------------------------------------*/ @@ -47,7 +59,7 @@ void CCPU::run() /* end of the program reached */ if (pc == m_program->size()) - return; + break; /* pc is out of bound */ if (pc > m_program->size()) @@ -57,8 +69,6 @@ void CCPU::run() m_program->at(pc)->execute(this); ++m_registers[0]; } - - cout << "LALA" << endl; } /*----------------------------------------------------------------------------*/ -- cgit v1.2.3