public void DetectDiskSize(int htMaxTracks) { DiskImage image = Params.Image; if (image.SizeTracks < htMaxTracks) { int realMaxTrack = image.SizeTracks; int prevCylinder = (image.SizeTracks - 1) / 2; for (int track = image.SizeTracks; track < htMaxTracks; track++) { int cylinder = track / 2; if (cylinder != prevCylinder) { Driver.Seek(DriverHandle, track); if (Aborted) { return; } prevCylinder = cylinder; } if (!ScanFormat(workTrackFormat, track, true)) { return; } Log.Info?.Out($"Формат трека {track}: {workTrackFormat.FormatName} | {workTrackFormat.Layout.Cnt} sectors | {workTrackFormat.ToStringAsSectorArray()}"); if (workTrackFormat.ContainsSectorsFrom(image.StandardFormat, cylinder)) { realMaxTrack = track + 1; image.SetSize(realMaxTrack * Params.SectorsOnTrack); Params.LastSectorNum = image.SizeSectors; ReadTrack(track, Params); } } } }