private Int32 SPIC; // sectors per (perfect) interleave cycle public InterleavedVolume(CHSVolume volume, Int32 interleave, Int32 headSkew, Int32 cylSkew, Int32 start) { if (interleave < 0) { throw new ArgumentOutOfRangeException("interleave"); } if (interleave == 0) { interleave = 1; } mVol = volume; mSource = String.Format("{0} [I={1:D0},{2:D0},{3:D0}@{4:D0}]", volume.Source, interleave, headSkew, cylSkew, start); mInfo = String.Format("{0}\nInterleave={1:D0},HeadSkew={2:D0},CylSkew={3:D0},Start={4:D0}", volume.Info, interleave, headSkew, cylSkew, start); mInterleave = interleave; mHeadSkew = headSkew; mCylSkew = cylSkew; mStart = start; SPT = mVol.MaxSector(0, 0) - mVol.MinSector(0, 0) + 1; TPC = mVol.MaxHead - mVol.MinHead + 1; SPIC = SPT / GCD(SPT, interleave); }
public override Int32 MinSector() { return(mVol.MinSector()); }