private void TrackFormat(int TrackMax, int TrackPerSector) { var Position = PlainFormat ? 0x0 : DefaultHeaderSize; for (var t = 0; t < TrackMax; t++) { TrackAddress[t] = Position; for (var s = 0; s < TrackPerSector; s++) { var Sector = new SectorData(); Sector.Format(t, s, TrackPerSector, DefaultSectorSize, Position); Sectors.Add(Sector); Position += DefaultSectorSize; } } }
/// <summary> /// セクタを読み出す /// </summary> /// <param name="fs"></param> void ReadSectors(FileStream fs) { int Track = 0; int SectorCount = 1; var Address = PlainFormat ? 0x00 : TrackAddress[Track]; if (!PlainFormat && Address == 0x00) { return; } fs.Seek(Address, SeekOrigin.Begin); while (true) { Address = fs.Position; var Sector = new SectorData(); if (!Sector.Read(PlainFormat, fs)) { break; } if (!PlainFormat) { SectorCount = Sector.Sector; } if (SectorCount == 0x01) { if (PlainFormat) { TrackAddress[Track] = Address; } Log.Verbose($"Track:{Track} Pos:{Address:X} Address:{TrackAddress[Track]:X}"); Track++; } Sectors.Add(Sector); SectorCount++; if (SectorCount > TrackPerSector) { SectorCount = 1; } } }