/// <summary> /// Dump raw track data after MFM encoding. /// </summary> /// <param name="diskStream">Stream for reading the disk image data.</param> /// <param name="disk">Disk.</param> /// <param name="headId">Head.</param> /// <param name="trackId">Track.</param> void DumpTrackData(Stream diskStream, HfeDisk disk, int headId, int trackId) { Console.WriteLine(); Console.Write("Track data for track {0} side {1}", trackId, headId); Console.WriteLine(); var t = disk.GetTrack(trackId, headId); var trackStream = new MfmStream(new HfeRawTrack(diskStream, t.TrackOffset, t.TrackLength, headId)); var offset = 0; var done = false; var buffer = new byte[16]; while (!done) { Console.Write(String.Format("{0:x4} : ", offset)); var len = trackStream.Read(buffer, 0, buffer.Length); for (var i = 0; i < Math.Min(buffer.Length, len); i++) { Console.Write(String.Format("{0:x2} ", buffer[i])); } Console.WriteLine(); done = (len < buffer.Length); offset += len; } trackStream.Dispose(); }
public void EncodeMfmWithSync() { using (var memstream = new MemoryStream()) { using (var stream = new MfmStream(memstream)) { for (var i = 0; i < decodedData.Length; i++) { if (syncPosition[i]) { stream.WriteSync(); } else { stream.WriteByte(decodedData[i]); } } } var encoded = memstream.GetBuffer(); for (var i = 0; i < encodedData.Length; i++) { Assert.Equal(encodedData[i], encoded[i]); } } }
public void DetectSync() { using (var stream = new MfmStream(new MemoryStream(encodedData, false))) { int readCount = 0; bool sync; while (stream.ReadByte(out sync) != -1) { Assert.Equal(syncPosition[readCount], sync); readCount++; } Assert.Equal(decodedData.Length, readCount); } }
public void DecodeMfm() { using (var stream = new MfmStream(new MemoryStream(encodedData, false))) { int readData; int readCount = 0; while ((readData = stream.ReadByte()) != -1) { Assert.Equal(decodedData[readCount], readData); readCount++; } Assert.Equal(decodedData.Length, readCount); } }