Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }