private void DoFloppyCommand() { byte head = _messageData[0]; byte cyl = _messageData[1]; byte sec = _messageData[2]; FloppyCommand command = (FloppyCommand)_messageData[3]; byte count = _messageData[4]; #if TRACING_ENABLED if (Trace.TraceOn) { Trace.Log(LogType.FloppyDisk, "Floppy command is {0}, cyl/head/sec {1}/{2}/{3}", command, cyl, head, sec); } #endif switch (command) { case FloppyCommand.Seek: Seek(head, cyl, sec); break; case FloppyCommand.Read: Read(head, cyl, sec); break; case FloppyCommand.Write: Write(head, cyl, sec, count); break; case FloppyCommand.Format: Format(head, cyl, sec); break; default: #if TRACING_ENABLED if (Trace.TraceOn) { Trace.Log(LogType.Warnings, "Unhandled floppy command {0}", command); } #endif break; } }
private void ProcessCommandAndArgs(ushort value) { if (inCommand) { data[paramIdx++] = (byte)value; if (paramIdx == paramCount) { RunCommand(); inCommand = false; } } else { inCommand = true; paramIdx = 0; command = (FloppyCommand)(value & 0x0f); switch (command) { case FloppyCommand.Recalibrate: paramCount = 1; break; case FloppyCommand.SenseInterrupt: paramCount = 0; RunCommand(); inCommand = false; break; case FloppyCommand.ReadData: paramCount = 8; break; case FloppyCommand.WriteData: paramCount = 8; break; default: System.Diagnostics.Debugger.Break(); break; } } }
private void ProcessCommandAndArgs(ushort value) { if (inCommand) { data[paramIdx++] = (byte) value; if (paramIdx == paramCount) { RunCommand(); inCommand = false; } } else { inCommand = true; paramIdx = 0; command = (FloppyCommand)(value & 0x0f); switch (command) { case FloppyCommand.Recalibrate: paramCount = 1; break; case FloppyCommand.SenseInterrupt: paramCount = 0; RunCommand(); inCommand = false; break; case FloppyCommand.ReadData: paramCount = 8; break; case FloppyCommand.WriteData: paramCount = 8; break; default: System.Diagnostics.Debugger.Break(); break; } } }