private bool Run() { _zMemory.Running = true; bool restart = false; while (_zMemory.Running) { var opCode = _zMemory.GetCurrentByteAndInc(); IOperation operation; OpCodes opCodeEnum; (opCode, opCodeEnum, operation) = _zOperations.GetOperation(opCode); if (opCodeEnum == OpCodes.Restart) { restart = true; break; } if (operation == null) { throw new Exception($"No operation found for Op Code {opCode} ({opCode:X2})!"); } Log.WriteLine($" OP: {opCodeEnum:D} ({(byte)opCodeEnum:X2}) - {operation.GetType().Name})"); var args = _zMemory.OperandManager.GetOperands(opCode); if (opCodeEnum == OpCodes.Read && !_interruptMode) { _io.ShowStatus(_zMemory); Read read = (Read)operation; read.SetParseAddresses(args[0], args[1]); break; } operation.Execute(args); Log.Flush(); } return(restart); }
public override void Execute(List <ushort> args) => _io.ShowStatus(Memory);