private bool Call(OpCode code) { int address = code.AsInteger() & 0xFFF; stack.Push(programCounter); Jump(address); return(true); }
private bool ClearOrReturn(OpCode code) { if (code.AsInteger() == 0x00E0) { screen.Clear(); } else if (code.AsInteger() == 0x00EE) { Jump(stack.Pop()); } else { throw new InvalidOperationException("Invalid opcode detected " + code + "!"); } return(false); }
private bool JumpToAddressOffset(OpCode code) { Jump(((code.AsInteger() & 0xFFF) + GetRegister(0)) % 0x1000); return(true); }
private bool SetI(OpCode code) { registerI = code.AsInteger() & 0xFFF; return(false); }
private bool JumpToAddress(OpCode code) { Jump(code.AsInteger() & 0xFFF); return(true); }