Added support for Apple FileWare (aka Twiggy) disks as dumped

by Sigma Seven's BLU

git-svn-id: svn://claunia.com/FileSystemIDandChk@33 17725271-3d32-4980-a8cb-9ff532f270ba
This commit is contained in:
2014-04-17 03:19:27 +00:00
parent c42a5bdf27
commit 1dfda680a8
3 changed files with 21 additions and 6 deletions

View File

@@ -1,3 +1,10 @@
2014-04-17 Natalia Portillo <claunia@claunia.com>
* ImagePlugins/DiskCopy42.cs:
* ImagePlugins/ImagePlugin.cs:
Added support for Apple FileWare (aka Twiggy) disks as
dumped by Sigma Seven's BLU
2014-04-17 Natalia Portillo <claunia@claunia.com> 2014-04-17 Natalia Portillo <claunia@claunia.com>
* Plugins/AppleMFS.cs: * Plugins/AppleMFS.cs:

View File

@@ -49,11 +49,15 @@ namespace FileSystemIDandChk.ImagePlugins
// 3.5", double side, high density, MFM, 21 sectors/track (aka, Microsoft DMF) // 3.5", double side, high density, MFM, 21 sectors/track (aka, Microsoft DMF)
// Unchecked value // Unchecked value
const byte kSonyFormat1680K = 0x04; const byte kSonyFormat1680K = 0x04;
// Defined by Sigma Seven's BLU
const byte kSigmaFormatTwiggy = 0x54;
// There should be a value for Apple HD20 hard disks, unknown... // There should be a value for Apple HD20 hard disks, unknown...
// fmyByte byte // fmyByte byte
// Based on GCR nibble // Based on GCR nibble
// Always 0x02 for MFM disks // Always 0x02 for MFM disks
// Unknown for Apple HD20 // Unknown for Apple HD20
// Defined by Sigma Seven's BLU
const byte kSignaFmtByteTwiggy = 0x01;
// 3.5" single side double density GCR and MFM all use same code // 3.5" single side double density GCR and MFM all use same code
const byte kSonyFmtByte400K = 0x02; const byte kSonyFmtByte400K = 0x02;
const byte kSonyFmtByte720K = kSonyFmtByte400K; const byte kSonyFmtByte720K = kSonyFmtByte400K;
@@ -141,11 +145,11 @@ namespace FileSystemIDandChk.ImagePlugins
FileInfo fi = new FileInfo(imagePath); FileInfo fi = new FileInfo(imagePath);
if (tmp_header.dataSize + tmp_header.tagSize + 0x54 != fi.Length) if (tmp_header.dataSize + tmp_header.tagSize + 0x54 != fi.Length && tmp_header.format != kSigmaFormatTwiggy)
return false; return false;
if (tmp_header.format != kSonyFormat400K && tmp_header.format != kSonyFormat800K && tmp_header.format != kSonyFormat720K && if (tmp_header.format != kSonyFormat400K && tmp_header.format != kSonyFormat800K && tmp_header.format != kSonyFormat720K &&
tmp_header.format != kSonyFormat1440K && tmp_header.format != kSonyFormat1680K) tmp_header.format != kSonyFormat1440K && tmp_header.format != kSonyFormat1680K && tmp_header.format != kSigmaFormatTwiggy)
{ {
if (MainClass.isDebug) if (MainClass.isDebug)
Console.WriteLine("Unknown tmp_header.format = 0x{0:X2} value", tmp_header.format); Console.WriteLine("Unknown tmp_header.format = 0x{0:X2} value", tmp_header.format);
@@ -154,7 +158,7 @@ namespace FileSystemIDandChk.ImagePlugins
} }
if (tmp_header.fmtByte != kSonyFmtByte400K && tmp_header.fmtByte != kSonyFmtByte800K && tmp_header.fmtByte != kSonyFmtByte800KIncorrect && if (tmp_header.fmtByte != kSonyFmtByte400K && tmp_header.fmtByte != kSonyFmtByte800K && tmp_header.fmtByte != kSonyFmtByte800KIncorrect &&
tmp_header.fmtByte != kSonyFmtByteProDos && tmp_header.fmtByte != kInvalidFmtByte) tmp_header.fmtByte != kSonyFmtByteProDos && tmp_header.fmtByte != kInvalidFmtByte && tmp_header.fmtByte != kSignaFmtByteTwiggy)
{ {
if (MainClass.isDebug) if (MainClass.isDebug)
Console.WriteLine("Unknown tmp_header.fmtByte = 0x{0:X2} value", tmp_header.fmtByte); Console.WriteLine("Unknown tmp_header.fmtByte = 0x{0:X2} value", tmp_header.fmtByte);
@@ -217,11 +221,11 @@ namespace FileSystemIDandChk.ImagePlugins
FileInfo fi = new FileInfo(imagePath); FileInfo fi = new FileInfo(imagePath);
if (header.dataSize + header.tagSize + 0x54 != fi.Length) if (header.dataSize + header.tagSize + 0x54 != fi.Length && header.format != kSigmaFormatTwiggy)
return false; return false;
if (header.format != kSonyFormat400K && header.format != kSonyFormat800K && header.format != kSonyFormat720K && if (header.format != kSonyFormat400K && header.format != kSonyFormat800K && header.format != kSonyFormat720K &&
header.format != kSonyFormat1440K && header.format != kSonyFormat1680K) header.format != kSonyFormat1440K && header.format != kSonyFormat1680K && header.format != kSigmaFormatTwiggy)
{ {
if (MainClass.isDebug) if (MainClass.isDebug)
Console.WriteLine("DEBUG (DC42 plugin): Unknown header.format = 0x{0:X2} value", header.format); Console.WriteLine("DEBUG (DC42 plugin): Unknown header.format = 0x{0:X2} value", header.format);
@@ -230,7 +234,7 @@ namespace FileSystemIDandChk.ImagePlugins
} }
if (header.fmtByte != kSonyFmtByte400K && header.fmtByte != kSonyFmtByte800K && header.fmtByte != kSonyFmtByte800KIncorrect && if (header.fmtByte != kSonyFmtByte400K && header.fmtByte != kSonyFmtByte800K && header.fmtByte != kSonyFmtByte800KIncorrect &&
header.fmtByte != kSonyFmtByteProDos && header.fmtByte != kInvalidFmtByte) header.fmtByte != kSonyFmtByteProDos && header.fmtByte != kInvalidFmtByte && header.fmtByte != kSignaFmtByteTwiggy)
{ {
if (MainClass.isDebug) if (MainClass.isDebug)
Console.WriteLine("DEBUG (DC42 plugin): Unknown tmp_header.fmtByte = 0x{0:X2} value", header.fmtByte); Console.WriteLine("DEBUG (DC42 plugin): Unknown tmp_header.fmtByte = 0x{0:X2} value", header.fmtByte);
@@ -421,6 +425,8 @@ namespace FileSystemIDandChk.ImagePlugins
return DiskType.DOS_35_HD; return DiskType.DOS_35_HD;
case kSonyFormat1680K: case kSonyFormat1680K:
return DiskType.DMF; return DiskType.DMF;
case kSigmaFormatTwiggy:
return DiskType.AppleFileWare;
default: default:
return DiskType.Unknown; return DiskType.Unknown;
} }

View File

@@ -272,6 +272,8 @@ namespace FileSystemIDandChk.ImagePlugins
AppleSonySS, AppleSonySS,
// 3.5", DS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR // 3.5", DS, DD, 80 tracks, 8 to 12 spt, 512 bytes/sector, GCR
AppleSonyDS, AppleSonyDS,
// 5.25", DS, ?D, ?? tracks, ?? spt, 512 bytes/sector, GCR, opposite side heads, aka Twiggy
AppleFileWare,
// IBM/Microsoft PC standard floppy formats // IBM/Microsoft PC standard floppy formats
// 5.25", SS, DD, 40 tracks, 8 spt, 512 bytes/sector, MFM // 5.25", SS, DD, 40 tracks, 8 spt, 512 bytes/sector, MFM
DOS_525_SS_DD_8, DOS_525_SS_DD_8,