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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }
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++; }