public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { int NewValue = Pic.WRegister.Value + Value; Pic.RegisterMap.CarryBit = NewValue > 0xFF; Pic.RegisterMap.DigitalCarryBit = ((Pic.WRegister.Value & 0xF) + (Value & 0xF)) > 0xF; return((byte)NewValue); }
public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { int NewValue = Value << 1; NewValue = NewValue + (Pic.RegisterMap.CarryBit ? 1 : 0); Pic.RegisterMap.CarryBit = (NewValue & 0x100) != 0; return((byte)NewValue); }
public override bool Calculate(PIC Pic, Data.BytecodeLine Line, int Literal) { int NewValue = Pic.WRegister.Value ^ Literal; Pic.RegisterMap.ZeroBit = NewValue == 0; Pic.WRegister.Value = (byte)NewValue; return(true); }
public override void Execute(PIC Pic, Data.BytecodeLine Line) { int Command = Line.Command; int RegAddress = Command & 0x7F; Pic.RegisterMap.Set(Pic.WRegister.Value, RegAddress); Pic.RegisterMap.ProgrammCounter++; }
public override void Execute(PIC Pic, Data.BytecodeLine Line) { int NewAddress = Line.Command & 0x7FF; int PC = Pic.RegisterMap.ProgrammCounter; Pic.Stack.Push(PC + 1); Pic.RegisterMap.ProgrammCounter = NewAddress; }
public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { int CarryValue = Pic.RegisterMap.CarryBit ? 1 : 0; int NewCarry = Value & 0x1; int NewValue = CarryValue << 8 + Value >> 1; Pic.RegisterMap.CarryBit = NewCarry != 0; return((byte)NewValue); }
public override bool Calculate(PIC Pic, Data.BytecodeLine Line, int Literal) { int NewValue = Literal - Pic.WRegister.Value; Pic.RegisterMap.CarryBit = NewValue > 0; Pic.RegisterMap.DigitalCarryBit = ((Pic.WRegister.Value & 0xF) + (Literal & 0xF)) > 0xF; Pic.RegisterMap.ZeroBit = NewValue == 0; Pic.WRegister.Value = (byte)NewValue; return(true); }
public override void Execute(PIC Pic, Data.BytecodeLine Line) { int Command = Line.Command; byte NewValue = 0; Pic.RegisterMap.ZeroBit = true; Pic.WRegister.Value = NewValue; Pic.RegisterMap.ProgrammCounter++; }
public override void Execute(PIC Pic, Data.BytecodeLine Line) { int Command = Line.Command; int RegAddress = Command & 0x7F; byte NewValue = 0; Pic.RegisterMap.ZeroBit = true; Pic.RegisterMap.Set(NewValue, RegAddress); Pic.RegisterMap.ProgrammCounter++; }
public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { int WComp = ~Pic.WRegister.Value; WComp += 0x1; int NewValue = Value + WComp; Pic.RegisterMap.CarryBit = NewValue >= 0; NewValue = (byte)NewValue; Pic.RegisterMap.DigitalCarryBit = (Value & 0xF) + (WComp & 0xF) > 0xF; return((byte)NewValue); }
public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { byte NewValue = (byte)(Value + 1); if (NewValue == 0) { Cycles = 2; Pic.RegisterMap.ProgrammCounter++; } else { Cycles = 1; } return(NewValue); }
public override bool Calculate(PIC Pic, Data.BytecodeLine Line, int Literal) { Pic.WRegister.Value = (byte)Literal; Pic.RegisterMap.ProgrammCounter = Pic.Stack.Pop(); return(false); }
public override void Execute(PIC Pic, Data.BytecodeLine Line) { Pic.RegisterMap.ProgrammCounter = Pic.Stack.Pop(); }
public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { return((byte)~Value); }
public override void Execute(PIC Pic, Data.BytecodeLine Line) { //TODO! }
public override void Execute(PIC Pic, Data.BytecodeLine Line) { Pic.RegisterMap.ProgrammCounter = Pic.Stack.Pop(); Pic.RegisterMap.GlobalInterruptEnable = true; }
public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { return((byte)(Pic.WRegister.Value & Value)); }
public override byte Calculate(PIC Pic, Data.BytecodeLine Line, byte Value) { int NewValue = Value >> 4 + ((Value & 0xF) << 4); return((byte)NewValue); }