Example #1
0
        public override void Execute(string[] lines, TheCpu cpu)
        {
            cpu.PC = cpu.Stack.Pop();
            cpu.OnPropertyChanged(cpu.PropertyName(() => cpu.Stack));

            cpu.ZERO             = cpu.PRESERVED_ZERO;
            cpu.CARRY            = cpu.PRESERVED_CARRY;
            cpu.INTERRUPT_ENABLE = false;
        }
Example #2
0
 protected override void ExecuteInternal(TheCpu cpu, bool value)
 {
     if (value)
     {
         cpu.PC = cpu.Stack.Pop() + 1;
         cpu.OnPropertyChanged(cpu.PropertyName(() => cpu.Stack));
     }
     else
     {
         cpu.PC++;
     }
 }
Example #3
0
        protected override void ExecuteInternal(string address, TheCpu cpu, bool value)
        {
            if (value)
            {
                cpu.Stack.Push(cpu.PC);
                cpu.OnPropertyChanged(cpu.PropertyName(() => cpu.Stack));

                var addressValue = cpu.GetAddress(address);
                cpu.PC = addressValue;

                if (cpu.Stack.Count > 31)
                {
                    throw new ArgumentException("Препълване на стекът");
                }
            }
            else
            {
                cpu.PC++;
            }
        }