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; }
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); }