public int GetNotGoodBounds(int firstSectorNum, int lastSectorNum, DiskSide side, ref int begin, ref int end) { int cntr = 0; int b = -1; for (int i = firstSectorNum; i < lastSectorNum; i++) { if (Sectors[i] == SectorProcessResult.Good) { continue; } int track = i / SectorsOnTrack; if ((track & 1) == 0 && (side == DiskSide.Side1)) { continue; } if ((track & 1) == 1 && (side == DiskSide.Side0)) { continue; } if (b < 0) { b = i; } end = i + 1; cntr++; } begin = b; return(cntr); }
public void ReadFromXml(XmlTextReader xml) { Drive = (Drive)Enum.Parse(typeof(Drive), xml.GetAttribute("Drive")); DataRate = (DataRate)Enum.Parse(typeof(DataRate), xml.GetAttribute("DataRate")); Side = (DiskSide)Enum.Parse(typeof(DiskSide), xml.GetAttribute("Side")); ReadMode = (ReadMode)Enum.Parse(typeof(ReadMode), xml.GetAttribute("ReadMode")); SectorReadAttempts = Math.Max(0, int.Parse(xml.GetAttribute("SectorReadAttempts"))); FirstTrack = Math.Max(0, int.Parse(xml.GetAttribute("FirstTrack"))); FirstTrack = Math.Min(171, FirstTrack); LastTrack = Math.Min(172, int.Parse(xml.GetAttribute("LastTrack"))); LastTrack = Math.Max(0, LastTrack); }