mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
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:
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user