Finished
This commit is contained in:
parent
705c7bcb58
commit
d50c62106e
14 changed files with 344 additions and 156 deletions
|
|
@ -19,6 +19,7 @@ class cpu {
|
|||
bool isRunning();
|
||||
void setSpeed(int kHz);
|
||||
int getSpeed();
|
||||
void step();
|
||||
private:
|
||||
void zankaUre();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
class machine {
|
||||
public:
|
||||
// Register indices
|
||||
static const int A = 0;
|
||||
static const int X = 1;
|
||||
static const int L = 2;
|
||||
|
|
@ -29,7 +28,6 @@ public:
|
|||
static const int PC = 8;
|
||||
static const int SW = 9;
|
||||
|
||||
// Condition codes
|
||||
static const int CC_LT = 0x00;
|
||||
static const int CC_EQ = 0x40;
|
||||
static const int CC_GT = 0x80;
|
||||
|
|
@ -39,7 +37,8 @@ public:
|
|||
private:
|
||||
std::array<int, 10> registri{};
|
||||
double F_val = 0.0;
|
||||
|
||||
int program_end = 0;
|
||||
int program_start = 0;
|
||||
std::array<uint8_t, MAX_ADRESS> pomnilnik{};
|
||||
std::array<std::unique_ptr<Device>, 256> naprave{};
|
||||
std::unordered_map<std::string, std::function<bool(int,int)>> ukaziF2;
|
||||
|
|
@ -47,8 +46,7 @@ private:
|
|||
|
||||
public:
|
||||
machine();
|
||||
|
||||
// getters-setters
|
||||
//getterji, setterji
|
||||
int getA(); void setA(int a);
|
||||
int getX(); void setX(int x);
|
||||
int getL(); void setL(int l);
|
||||
|
|
@ -63,19 +61,21 @@ public:
|
|||
int getReg(int r);
|
||||
void setReg(int r, int val);
|
||||
|
||||
// memory
|
||||
int getByte(int adr);
|
||||
void setByte(int adr, int val);
|
||||
int getWord(int adr);
|
||||
void setWord(int adr, int val);
|
||||
void writeWord(int addr, int value);
|
||||
int readWord(int addr);
|
||||
int getUN(int n, int i, int x, int b, int p, int e, int operand);
|
||||
|
||||
// devices
|
||||
//naprave
|
||||
Device& getDevice(uint8_t dev);
|
||||
void setDevice(uint8_t num, std::unique_ptr<Device> dev);
|
||||
void setFileDevice(uint8_t num, const std::string& filename);
|
||||
|
||||
// error helpers
|
||||
void loadObj(const std::string &path);
|
||||
|
||||
// errorji
|
||||
void notImplemented(const std::string& mnemonic);
|
||||
void invalidOpcode(int opcode);
|
||||
void invalidAdressing();
|
||||
|
|
@ -83,9 +83,9 @@ public:
|
|||
void outOfMemoryRange(int mem);
|
||||
void divisionByZero();
|
||||
|
||||
// execution
|
||||
//execution
|
||||
uint8_t fetch();
|
||||
void execute();
|
||||
bool execute();
|
||||
bool execF1(uint8_t opcode, const std::string& mnemonic);
|
||||
bool execF2(uint8_t opcode, uint8_t operand, const std::string& mnemonic);
|
||||
bool execSIC_F3_F4(uint8_t b1, uint8_t b2, uint8_t b3, const std::string& mnemonic);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue