Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        /// <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;
                }
            }
        }