public fsMegaImage(AbstractDiskImage diskImage)
     : base(diskImage)
 {
     maxFiles = 64;
     LastUsableSector = 8192;
     sectorMap = new SectorMap(LastUsableSector + 1);
 }
示例#2
0
 public fsDos25(AbstractDiskImage diskImage)
     : base(diskImage)
 {
     SystemSectors = 14;
     LastUsableSector = 1024;
     TotalSectors = 1040;
     maxFiles = 64;
     sectorMap = new SectorMap(TotalSectors + 1);
 }
示例#3
0
        public fsDos20(AbstractDiskImage diskImage)
            : base(diskImage)
        {
            maxFiles = 64;
            LastUsableSector = 719;
            TotalSectors = 720;
            SystemSectors = 12;

            sectorMap = new SectorMap(TotalSectors + 1);
        }
        public override void Format(bool clearData)
        {
            int i;
            byte[] sec = new byte[128];

            //Clear sectors
            if (clearData)
            {
                for (i = 1; i <= diskImage.NumberOfSectors(); i++)
                {
                    diskImage.ClearSector(i);
                }
            }

            // Create sector map
            sectorMap = new SectorMap(LastUsableSector + 1);
            sectorMap.ClearMap();
            sectorMap[1] = SectorMap.SectorTypes.System;
            sectorMap[2] = SectorMap.SectorTypes.System;
            sectorMap[3] = SectorMap.SectorTypes.System;
            for (i = 351; i <= 368; i++)
            {
                sectorMap[i] = SectorMap.SectorTypes.System;
            }

            WriteSectorMap();

            //Write VTOC header
            sec = diskImage.ReadSector(360);
            sec[0] = 7;
            sec[1] = (8171 & 0xff);
            sec[2] = (8171 & 0xff00) >> 8;
            sec[3] = sec[1];
            sec[4] = sec[2];
            diskImage.WriteSector(360, sec);
        }
示例#5
0
        /// <summary>
        /// Create a map of sector usage based on the sector chain for each file on the disk.
        /// </summary>
        /// <returns></returns>
        public SectorMap TraceFiles()
        {
            var map = new SectorMap(LastUsableSector + 1);

            foreach (DirectoryEntry di in directory)
            {
                if (!di.EntryInUse || di.Deleted || di.OpenForOutput) continue;
                var fi = GetFileInfo(di.FileName);
                foreach (var fs in fi.SectorList)
                {
                    map[fs.Sector] = SectorMap.SectorTypes.Used;
                }

            }

            return map;
        }