private void DoubleDensityBuilder(FloppyDisk floppyDisk, byte[] buffer) { var zeroTrack = new FloppyDiskTrack { TrackId = 0 }; floppyDisk.Sides[0].Tracks.Add(zeroTrack); // reading first track - first three sectors are 128 byte only regardless the density for (var i = 0; i < 3; i++) { var sector = new FloppyDiskSector(128) { SectorId = (ushort)i }; Buffer.BlockCopy(buffer, i * 128 + 16, sector.Data, 0, 128); zeroTrack.Sectors.Add(sector); } for (var i = 3; i < 18; i++) { var sector = new FloppyDiskSector(128) { SectorId = (ushort)i }; Buffer.BlockCopy(buffer, 3 * 128 + (i - 3) * 256 + 16, sector.Data, 0, 256); zeroTrack.Sectors.Add(sector); } for (var i = 1; i < 40; i++) { var track = new FloppyDiskTrack { TrackId = (ushort)i }; floppyDisk.Sides[0].Tracks.Add(track); for (var j = 0; j < 18; j++) { var sector = new FloppyDiskSector(128); sector.SectorId = (ushort)j; sector.Encoding = FloppyDataEncoding.MFMEncoding; Buffer.BlockCopy(buffer, (i * 18 + j) * 128 + 16, sector.Data, 0, 128); track.Sectors.Add(sector); } } }
private void SingleDensityBuilder(FloppyDisk floppyDisk, byte[] buffer) { for (var i = 0; i < 40; i++) { var track = new FloppyDiskTrack { TrackId = (ushort)i }; floppyDisk.Sides[0].Tracks.Add(track); for (var j = 0; j < 18; j++) { var sector = new FloppyDiskSector(128); sector.Encoding = FloppyDataEncoding.FMEncoding; Buffer.BlockCopy(buffer, (i * 18 + j) * 128 + 16, sector.Data, 0, 128); track.Sectors.Add(sector); } } }
private void EnhancedDensityBuilder(FloppyDisk floppyDisk, byte[] buffer) { for (var i = 0; i < 40; i++) { var track = new FloppyDiskTrack { TrackId = (ushort)i }; floppyDisk.Sides[0].Tracks.Add(track); for (var j = 0; j < 26; j++) { var sector = new FloppyDiskSector(256); sector.Encoding = FloppyDataEncoding.MFMEncoding; Buffer.BlockCopy(buffer, (i * 26 + j) * 256 + 16, sector.Data, 0, 256); track.Sectors.Add(sector); } } }