Ejemplo n.º 1
0
 public void MarkSector(int track, int sectorIndex, SectorProcessResult processResult, MapCell mapCell)
 {
     Tracks[track].Layout.Data[sectorIndex].ProcessResult = processResult;
     Tracks[track].Layout.Data[sectorIndex].MapCellValue  = mapCell;
     Tracks[track].MapModified = true;
     Modified = true;
 }
Ejemplo n.º 2
0
 public void SetSectorsProcessResult(SectorProcessResult processResult, int index, int length = 1)
 {
     for (int i = index, last = Math.Min(index + length, Sectors.Length); i < last; i++)
     {
         Sectors[i] = processResult;
     }
     SectorsChanged(index, length);
     Modified = true;
 }
Ejemplo n.º 3
0
 public void MarkSectorRange(int firstTrack, int lastTrack, SectorProcessResult processResult, MapCell mapCell)
 {
     for (int i = firstTrack; i < lastTrack; i++)
     {
         TrackFormat tf = Tracks[i];
         for (int j = 0; j < tf.Layout.Cnt; j++)
         {
             tf.Layout.Data[j].ProcessResult = processResult;
             tf.Layout.Data[j].MapCellValue  = mapCell;
         }
         tf.MapModified = true;
     }
     Modified = true;
 }
Ejemplo n.º 4
0
        public void SetSize(int sizeSectors)
        {
            if (Sectors.Length == sizeSectors)
            {
                return;
            }
            int newLen  = sizeSectors * SectorSize;
            int oldSize = Sectors.Length;

            byte[] newData = new byte[newLen];
            Array.Copy(Data, 0, newData, 0, Math.Min(Data.Length, newLen));
            Data = newData;
            SectorProcessResult[] newSectors = new SectorProcessResult[sizeSectors];
            Array.Copy(Sectors, 0, newSectors, 0, Math.Min(Sectors.Length, sizeSectors));
            Sectors = newSectors;
            SectorsChanged(Math.Min(oldSize, sizeSectors), Math.Abs(oldSize - sizeSectors));
        }
Ejemplo n.º 5
0
        public void Merge(DiskImage image, out int addedReadSectors)
        {
            int size        = Math.Max(image.Data.Length, Data.Length);
            int sizeSectors = size / SectorSize;

            byte[] newData = new byte[size];
            SectorProcessResult[] sectors = new SectorProcessResult[sizeSectors];
            addedReadSectors = 0;
            for (int i = 0; i < sizeSectors; i++)
            {
                if (i < Sectors.Length && Sectors[i] == SectorProcessResult.Good)
                {
                    Array.Copy(Data, i * SectorSize, newData, i * SectorSize, SectorSize);
                    sectors[i] = SectorProcessResult.Good;
                }
                else if (i < image.Sectors.Length && image.Sectors[i] == SectorProcessResult.Good)
                {
                    Array.Copy(image.Data, i * SectorSize, newData, i * SectorSize, SectorSize);
                    sectors[i] = SectorProcessResult.Good;
                    addedReadSectors++;
                }
                else if (i < Sectors.Length && Sectors[i] == SectorProcessResult.Bad)
                {
                    sectors[i] = SectorProcessResult.Bad;
                }
                else if (i < image.Sectors.Length && image.Sectors[i] == SectorProcessResult.Bad)
                {
                    sectors[i] = SectorProcessResult.Bad;
                }
                else
                {
                    sectors[i] = SectorProcessResult.Unprocessed;
                }
            }
            Data    = newData;
            Sectors = sectors;
            SectorsChanged(0, Sectors.Length);
        }