OpenCores
URL https://opencores.org/ocsvn/thor/thor/trunk

Subversion Repositories thor

[/] [thor/] [trunk/] [software/] [emuThor/] [source/] [clsThor.h] - Diff between revs 32 and 35

Only display areas with differences | Details | Blame | View Log

Rev 32 Rev 35
#pragma once
#pragma once
#include "clsCPU.h"
#include "clsCPU.h"
 
 
extern class clsSystem system1;
extern class clsSystem system1;
 
 
class clsThor : public clsCPU
class clsThor : public clsCPU
{
{
        bool StatusHWI;
        bool StatusHWI;
        bool StatusDBG;
        bool StatusDBG;
        __int16 StatusEXL;
        __int16 StatusEXL;
        __int64 string_pc;
        __int64 string_pc;
        unsigned __int64 imm;
        unsigned __int64 imm;
        bool imm_prefix;
        bool imm_prefix;
        unsigned __int64 ea;
        unsigned __int64 ea;
        unsigned int mode : 2;
        unsigned int mode : 2;
 
 
        void SetGP(int rg, __int64 val);
        void SetGP(int rg, __int64 val);
        int GetMode();
        int GetMode();
        void SetSpr(int Sprn, __int64 val);
        void SetSpr(int Sprn, __int64 val);
        __int64 GetSpr(int Sprn);
        __int64 GetSpr(int Sprn);
        void dRn(int b1, int b2, int b3, int *Ra, int *Sg, __int64 *disp);
        void dRn(int b1, int b2, int b3, int *Ra, int *Sg, __int64 *disp);
        void ndx(int b1, int b2, int b3, int *Ra, int *Rb, int *Rt, int *Sg, int *Sc);
        void ndx(int b1, int b2, int b3, int *Ra, int *Rb, int *Rt, int *Sg, int *Sc);
        int WriteMask(int ad, int sz);
        int WriteMask(int ad, int sz);
        unsigned __int64 ReadByte(int ad);
        unsigned __int64 ReadByte(int ad);
        unsigned __int64 ReadChar(int ad);
        unsigned __int64 ReadChar(int ad);
        unsigned __int64 ReadHalf(int ad);
        unsigned __int64 ReadHalf(int ad);
        unsigned __int64 Read(int ad);
        unsigned __int64 Read(int ad);
public:
public:
        unsigned __int32 pc;
        unsigned __int32 pc;
        __int64 gp[64];         // general purpose registers
        __int64 gp[64];         // general purpose registers
        __int64 ca[16];         // code address registers
        __int64 ca[16];         // code address registers
        __int8 pr[16];          // predicate registers
        __int8 pr[16];          // predicate registers
        __int64 seg_base[8];
        __int64 seg_base[8];
        __int64 seg_limit[8];
        __int64 seg_limit[8];
        __int64 lc;
        __int64 lc;
        __int64 tick;
        __int64 tick;
        __int8 bir;
        __int8 bir;
        __int64 dbad0,dbad1,dbad2,dbad3;
        __int64 dbad0,dbad1,dbad2,dbad3;
        __int64 dbctrl,dbstat;
        __int64 dbctrl,dbstat;
 
        bool _32bit;
        bool im;
        bool im;
        int imcd;
        int imcd;
        int pred;
        int pred;
 
        bool rts;                       // Indicator for step out.
        __int64 GetGP(int rg);
        __int64 GetGP(int rg);
        bool IsKM();
        bool IsKM();
        void Reset();
        void Reset();
        void Step();
        void Step();
 
        clsThor() { _32bit = true; };
private:
private:
        inline bool IRQActive() { return !StatusHWI && irq && !im; };
        inline bool IRQActive() { return !StatusHWI && irq && !im && imcd==0; };
        int GetBit(__int64 a, int b);
        int GetBit(__int64 a, int b);
        void SetBit(__int64 *a, int b);
        void SetBit(__int64 *a, int b);
        void ClearBit(__int64 *a, int b);
        void ClearBit(__int64 *a, int b);
};
};
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.