Example #1
0
        protected override void ExecuteV1(string register1, string register2, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register1);
            var sY = cpu.GetRegister(register2);

            cpu.WriteRAM(sY, sX);
            cpu.PC++;
        }
Example #2
0
        protected override void ExecuteV1(string register1, string register2, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register1);
            var sY = cpu.GetRegister(register2);

            cpu.ZERO  = sX == sY;
            cpu.CARRY = sX > sY;
            cpu.PC++;
        }
Example #3
0
        protected override void ExecuteV1(string register1, string register2, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register1);
            var sY = cpu.GetRegister(register2);

            sX = cpu.Input(sY);
            cpu.SetRegister(register1, sX);

            cpu.PC++;
        }
Example #4
0
        protected override void ExecuteV1(string register1, string register2, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register1);
            var sY = cpu.GetRegister(register2);

            var r = (byte)((sX - sY) % 256);

            cpu.SetRegister(register1, r);
            cpu.ZERO  = ((sX - sY) == 0);
            cpu.CARRY = ((sX - sY) < 0);
            cpu.PC++;
        }
Example #5
0
        protected override void ExecuteV1(string register1, string register2, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register1);
            var sY = cpu.GetRegister(register2);

            var r = (byte)(sX ^ sY);

            cpu.SetRegister(register1, r);
            cpu.ZERO  = (r == 0);
            cpu.CARRY = false;
            cpu.PC++;
        }
Example #6
0
        protected override void ExecuteV1(string register1, string register2, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register1);
            var sY = cpu.GetRegister(register2);

            var CARRY = (cpu.CARRY ? 1 : 0);
            var r     = (byte)((sX + sY + CARRY) % 256);

            cpu.SetRegister(register1, r);
            cpu.ZERO  = (r == 0);
            cpu.CARRY = ((sX + sY + CARRY) > 0xFF);
            cpu.PC++;
        }
Example #7
0
        protected override void ExecuteInternal(string register, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register);

            switch (this.commandString)
            {
            case "SL0":
                bit = 0;
                break;

            case "SL1":
                bit = 1;
                break;

            case "SLX":
                bit = (byte)(sX & 0x01);
                break;

            case "SLA":
                bit = (byte)(cpu.CARRY ? 1 : 0);
                break;

            default:
                throw new ArgumentException("Невалидна операция по изместване на ляво");
            }

            cpu.CARRY = (sX & 0x80) == 0x80;

            sX = (byte)((sX << 1) | bit);

            cpu.SetRegister(register, sX);
            cpu.ZERO = sX == 0;
            cpu.PC++;
        }
Example #8
0
        protected override void ExecuteV2(string register, string literal, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register);
            var kk = cpu.GetLiteral(literal);

            cpu.WriteRAM(kk, sX);
            cpu.PC++;
        }
Example #9
0
        protected override void ExecuteV1(string register1, string register2, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register1);
            var sY = cpu.GetRegister(register2);

            var r = (byte)(sX & sY);

            var bitCount = 0;

            if ((r & 1) == 1)
            {
                bitCount++;
            }
            if ((r & 2) == 2)
            {
                bitCount++;
            }
            if ((r & 4) == 4)
            {
                bitCount++;
            }
            if ((r & 8) == 8)
            {
                bitCount++;
            }
            if ((r & 16) == 16)
            {
                bitCount++;
            }
            if ((r & 32) == 32)
            {
                bitCount++;
            }
            if ((r & 64) == 64)
            {
                bitCount++;
            }
            if ((r & 128) == 128)
            {
                bitCount++;
            }

            cpu.ZERO  = (r == 0);
            cpu.CARRY = (bitCount % 2) == 1;
            cpu.PC++;
        }
Example #10
0
        protected override void ExecuteV2(string register, string literal, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register);
            var kk = cpu.GetLiteral(literal);

            var r = (byte)(sX & kk);

            cpu.ZERO  = sX == kk;
            cpu.CARRY = sX > kk;
            cpu.PC++;
        }
Example #11
0
        protected override void ExecuteInternal(string register, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register);

            cpu.CARRY = (sX & 0x01) == 0;

            sX = (byte)((sX >> 1) | (sX << (8 - 1)));

            cpu.SetRegister(register, sX);
            cpu.ZERO = sX == 0;
            cpu.PC++;
        }
Example #12
0
        protected override void ExecuteV2(string register, string literal, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register);
            var kk = cpu.GetLiteral(literal);

            var r = (byte)((sX - kk) % 256);

            cpu.SetRegister(register, r);
            cpu.ZERO  = ((sX - kk) == 0);
            cpu.CARRY = ((sX - kk) < 0);
            cpu.PC++;
        }
Example #13
0
        protected override void ExecuteV2(string register, string literal, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register);
            var kk = cpu.GetLiteral(literal);

            var CARRY = (cpu.CARRY ? 1 : 0);
            var r     = (byte)((sX + kk + CARRY) % 256);

            cpu.SetRegister(register, r);
            cpu.ZERO  = (r == 0);
            cpu.CARRY = ((sX + kk + CARRY) > 0xFF);
            cpu.PC++;
        }
Example #14
0
        protected override void ExecuteV2(string register, string literal, TheCpu cpu)
        {
            var sX = cpu.GetRegister(register);
            var kk = cpu.GetLiteral(literal);

            var r = (byte)(sX & kk);

            var bitCount = 0;

            if ((r & 1) == 1)
            {
                bitCount++;
            }
            if ((r & 2) == 2)
            {
                bitCount++;
            }
            if ((r & 4) == 4)
            {
                bitCount++;
            }
            if ((r & 8) == 8)
            {
                bitCount++;
            }
            if ((r & 16) == 16)
            {
                bitCount++;
            }
            if ((r & 32) == 32)
            {
                bitCount++;
            }
            if ((r & 64) == 64)
            {
                bitCount++;
            }
            if ((r & 128) == 128)
            {
                bitCount++;
            }

            cpu.ZERO  = (r == 0);
            cpu.CARRY = (bitCount % 2) == 1;
            cpu.PC++;
        }