private static void SET(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); b.VAL = a.VAL; idcpu.SkipNext = false; }
private static void BOR(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); b.VAL = (ushort)(b.VAL | a.VAL); idcpu.SkipNext = false; }
private static void MUL(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); b.VAL = (ushort)(b.VAL * a.VAL); idcpu.SkipNext = false; //TODO: Handle EX }
private static void SUB(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); b.VAL = (ushort)(b.VAL - a.VAL); idcpu.SkipNext = false; //TODO: Handle underflow }
private static void DVI(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); b.VAL = (ushort)(b.VAL | a.VAL); idcpu.SkipNext = false; //TODO: Handle Unsigned }
private static void STD(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); b.VAL = a.VAL; idcpu.I--; idcpu.J--; idcpu.SkipNext = !(b.VAL < a.VAL); }
private static void SHL(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); b.VAL = (ushort)(b.VAL << a.VAL); idcpu.SkipNext = false; idcpu.EX = (ushort)(((b.VAL << 16) >> a.VAL) & 0xffff); }
private static void MDI(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); if (a.VAL == 0) { b.VAL = 0; } else { b.VAL = (ushort)(b.VAL % a.VAL); } idcpu.SkipNext = false; }
public OperandResolver(IDCPU idcpu) { this.idcpu = idcpu; }
public RegisterJMem(IDCPU idcpu) { this.idcpu = idcpu; }
public RegisterI(IDCPU idcpu) { this.idcpu = idcpu; }
private static void IFE(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); idcpu.SkipNext = a.VAL != b.VAL; }
private static void MovePCToNext(IDCPU idcpu) { idcpu.PC = (ushort)(idcpu.PC + idcpu.InstructionLength); idcpu.PC++; }
private static void IFU(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); idcpu.SkipNext = !(b.VAL < a.VAL); }
private static void IFC(IOperandVal a, IOperandVal b, IDCPU idcpu) { MovePCToNext(idcpu); idcpu.SkipNext = (a.VAL & b.VAL) != 0; }
public MemAddressOperandVaL(ushort address, IDCPU idcpu) { this.address = address; this.idcpu = idcpu; }