Corrected decoding of ATA IDENTIFY without currentchs.

This commit is contained in:
2017-06-06 18:16:13 +01:00
parent d12ab2ce42
commit d70c2ba207

View File

@@ -2460,6 +2460,8 @@ namespace DiscImageChef.Decoders.ATA
}
if(minatalevel <= 5)
{
if(ATAID.CurrentCylinders > 0 && ATAID.CurrentHeads > 0 && ATAID.CurrentSectorsPerTrack > 0)
{
sb.AppendFormat("Cylinders: {0} max., {1} current", ATAID.Cylinders, ATAID.CurrentCylinders).AppendLine();
sb.AppendFormat("Heads: {0} max., {1} current", ATAID.Heads, ATAID.CurrentHeads).AppendLine();
@@ -2467,6 +2469,14 @@ namespace DiscImageChef.Decoders.ATA
sb.AppendFormat("Sectors addressable in CHS mode: {0} max., {1} current", ATAID.Cylinders * ATAID.Heads * ATAID.SectorsPerTrack,
ATAID.CurrentSectors).AppendLine();
}
else
{
sb.AppendFormat("Cylinders: {0}", ATAID.Cylinders).AppendLine();
sb.AppendFormat("Heads: {0}", ATAID.Heads).AppendLine();
sb.AppendFormat("Sectors per track: {0}", ATAID.SectorsPerTrack).AppendLine();
sb.AppendFormat("Sectors addressable in CHS mode: {0}", ATAID.Cylinders * ATAID.Heads * ATAID.SectorsPerTrack).AppendLine();
}
}
if(ATAID.Capabilities.HasFlag(CapabilitiesBit.LBASupport))
{
@@ -2480,8 +2490,15 @@ namespace DiscImageChef.Decoders.ATA
if(minatalevel <= 5)
{
if(ATAID.CurrentSectors > 0)
sb.AppendFormat("Device size in CHS mode: {0} bytes, {1} Mb, {2} MiB", (ulong)ATAID.CurrentSectors * logicalsectorsize,
((ulong)ATAID.CurrentSectors * logicalsectorsize) / 1000 / 1000, ((ulong)ATAID.CurrentSectors * 512) / 1024 / 1024).AppendLine();
else
{
ulong currentSectors = (ulong)(ATAID.Cylinders * ATAID.Heads * ATAID.SectorsPerTrack);
sb.AppendFormat("Device size in CHS mode: {0} bytes, {1} Mb, {2} MiB", currentSectors * logicalsectorsize,
(currentSectors * logicalsectorsize) / 1000 / 1000, (currentSectors * 512) / 1024 / 1024).AppendLine();
}
}
if(ATAID.Capabilities.HasFlag(CapabilitiesBit.LBASupport))