Ejemplo n.º 1
0
        /// <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();
        }
Ejemplo n.º 2
0
        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]);
                }
            }
        }
Ejemplo n.º 3
0
 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);
     }
 }
Ejemplo n.º 4
0
 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);
     }
 }