public static bool F_LOADW() { byte r = Memory.Read((ushort)(CPU.ProgCtr + 1)); CPU.SetRegister(r, CPU.W); CPU.StepProgramCounter(I_LOADW.Arguments); return(true); }
public static bool F_XOR() { byte rx = Memory.Read((ushort)(CPU.ProgCtr + 1)); byte ry = Memory.Read((ushort)(CPU.ProgCtr + 2)); CPU.SetRegister(rx, (byte)(CPU.Registers[rx] ^ CPU.Registers[ry])); CPU.StepProgramCounter(I_XOR.Arguments); return(true); }
public static bool F_SUB() { byte r = Memory.Read((ushort)(CPU.ProgCtr + 1)); byte b = Memory.Read((ushort)(CPU.ProgCtr + 2)); CPU.SetRegister(15, (byte)(CPU.Registers[r] > b ? 1 : 0)); CPU.SetRegister(r, (byte)(CPU.Registers[r] - b)); CPU.StepProgramCounter(I_SUB.Arguments); return(true); }
public static bool F_LOAD() { byte r = Memory.Read((ushort)(CPU.ProgCtr + 1)); byte left = Memory.Read((ushort)(CPU.ProgCtr + 2)); byte right = Memory.Read((ushort)(CPU.ProgCtr + 3)); ushort addr = BytesToAddress(left, right); CPU.SetRegister(r, Memory.Read(addr)); CPU.StepProgramCounter(I_LOAD.Arguments); return(true); }
public static bool F_RAND() { byte r = Memory.Read((ushort)(CPU.ProgCtr + 1)); byte b = Memory.Read((ushort)(CPU.ProgCtr + 2)); try { byte rand = (byte)DataUtils.RandNum(b); CPU.SetRegister(r, rand); CPU.StepProgramCounter(I_RAND.Arguments); } catch (Exception ex) { Runner.IsRunning = false; CLI.Write("[FATAL] " + Color.Red); CLI.WriteLine(ex.Message, Color.White); } return(true); }