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); } } } }
private void SetSize(object sender, EventArgs e) { int sizeTracks = Image.SizeTracks; if (!InputBox.InputInt32("", "Введите размер в треках", ref sizeTracks, 1, MainForm.MaxTrack)) { return; } Image.SetSize(sizeTracks * SectorsOnTrack); map.Repaint(); stats.Repaint(); Log.Info?.Out($"Размер образа установлен: {sizeTracks} треков."); }