コード例 #1
0
ファイル: OricDos.cs プロジェクト: laurentd75/OricExplorer
        public void GetDiskInfo(string diskPathname)
        {
            base.LoadDisk(diskPathname);

            System.Text.Encoding enc = System.Text.Encoding.ASCII;

            // Read the System Sector
            byte[] sectorData = base.ReadSector(0, 1);

            MemoryStream stm = new MemoryStream(sectorData, 0, sectorData.Length);
            BinaryReader rdr = new BinaryReader(stm);

            stm.Seek(0x10, SeekOrigin.Begin);

            nextAvailableSector = rdr.ReadByte();
            nextAvailableTrack  = rdr.ReadByte();

            directorySector = rdr.ReadByte();
            directoryTrack  = rdr.ReadByte();

            sectorsFree = rdr.ReadUInt16();
            sectorsUsed = rdr.ReadUInt16();
            sectors     = (ushort)(sectorsUsed + sectorsFree);

            byte[] bByteArray = rdr.ReadBytes(21);

            diskName = enc.GetString(bByteArray).Trim().Trim(new char[] { '\0' });

            diskType = OricDisk.DiskTypes.Master;

            sides           = 2;
            tracksPerSide   = 40;
            sectorsPerTrack = 16;
        }
コード例 #2
0
        public OricDiskInfo(String diskPathName)
        {
            fullName = diskPathName;

            oricDisk = new OricDisk();
            oricDisk.LoadDisk(fullName);

            dosFormat  = oricDisk.DOSFormat();
            dosVersion = oricDisk.DOSVersion();

            switch (dosFormat)
            {
            case OricDisk.DOSFormats.OricDOS:
            {
                OricDos oricDisc = new OricDos();
                oricDisc.GetDiskInfo(fullName);

                nextAvailableSector = (ushort)oricDisc.nextAvailableSector;
                nextAvailableTrack  = (ushort)oricDisc.nextAvailableTrack;

                diskName = oricDisc.diskName;
                diskType = oricDisc.diskType;

                sectors     = oricDisc.sectors;
                freeSectors = oricDisc.sectorsFree;
                usedSectors = oricDisc.sectorsUsed;

                noOfSides       = oricDisc.sides;
                tracksPerSide   = oricDisc.tracksPerSide;
                sectorsPerTrack = oricDisc.sectorsPerTrack;

                fileCount = oricDisc.fileCount;
            }
            break;

            case OricDisk.DOSFormats.SedOric:
            {
                SedOric oricDisc = new SedOric();
                oricDisc.GetDiskInfo(fullName);

                diskName = oricDisc.diskName;
                diskType = oricDisc.diskType;

                sectors     = oricDisc.sectors;
                freeSectors = oricDisc.sectorsFree;
                usedSectors = oricDisc.sectorsUsed;

                noOfSides       = oricDisc.sides;
                tracksPerSide   = oricDisc.tracksPerSide;
                sectorsPerTrack = oricDisc.sectorsPerTrack;

                fileCount = oricDisc.noOfFiles;
            }
            break;

            case OricDisk.DOSFormats.StratSed:
            {
                SedOric oricDisc = new SedOric();
                oricDisc.GetDiskInfo(fullName);

                diskName = oricDisc.diskName;
                diskType = oricDisc.diskType;

                sectors     = oricDisc.sectors;
                freeSectors = oricDisc.sectorsFree;
                usedSectors = oricDisc.sectorsUsed;

                noOfSides       = oricDisc.sides;
                tracksPerSide   = oricDisc.tracksPerSide;
                sectorsPerTrack = oricDisc.sectorsPerTrack;

                fileCount = oricDisc.noOfFiles;
            }
            break;

            case OricDisk.DOSFormats.TDOS:
            {
                FTDos oricDisc = new FTDos();
                oricDisc.GetDiskInfo(fullName);

                diskName = oricDisc.diskName;
                diskType = oricDisc.diskType;

                sectors     = oricDisc.sectors;
                freeSectors = oricDisc.sectorsFree;
                usedSectors = oricDisc.sectorsUsed;

                noOfSides       = oricDisc.sides;
                tracksPerSide   = oricDisc.tracksPerSide;
                sectorsPerTrack = oricDisc.sectorsPerTrack;

                fileCount = oricDisc.noOfFiles;
            }
            break;

            default:
                break;
            }

            creationTime   = File.GetCreationTime(diskPathName);
            lastAccessTime = File.GetLastAccessTime(diskPathName);
            lastWriteTime  = File.GetLastWriteTime(diskPathName);
        }