* DiscImageChef.CommonTypes/DiskType.cs:

Added Acorn Archimedes and Commodore 15xx floppies.

	* DiscImageChef.DiscImages/ImagePlugin.cs:
	  Added DiskTag for PCMCIA CIS and SecureDigital/MMC CID, CSD
	  and extended CSD.

	* DiscImageChef.Metadata/DiskType.cs:
	  Added known floppies and magneto-opticals.

	* DiscImageChef/Commands/CreateSidecar.cs:
	  Implemented most support for block media sidecars.
This commit is contained in:
2016-01-01 00:01:42 +00:00
parent cdcbb1e21a
commit 62768b3e6b
8 changed files with 522 additions and 6 deletions

View File

@@ -1,3 +1,8 @@
2015-12-31 Natalia Portillo <claunia@claunia.com>
* DiskType.cs:
Added Acorn Archimedes and Commodore 15xx floppies.
2015-12-03 Natalia Portillo <claunia@claunia.com> 2015-12-03 Natalia Portillo <claunia@claunia.com>
* DiskType.cs: * DiskType.cs:

View File

@@ -294,6 +294,8 @@ namespace DiscImageChef.CommonTypes
ACORN_525_SS_DD_80, ACORN_525_SS_DD_80,
/// <summary>5,25", DS, DD, 80 tracks, 16 spt, 256 bytes/sector, MFM</summary> /// <summary>5,25", DS, DD, 80 tracks, 16 spt, 256 bytes/sector, MFM</summary>
ACORN_525_DS_DD, ACORN_525_DS_DD,
/// <summary>3,5", DS, DD, 80 tracks, 10 spt, 512 bytes/sector, MFM</summary>
ACORN_35_DS_DD,
// Atari standard floppy formats // Atari standard floppy formats
/// <summary>5,25", SS, SD, 40 tracks, 18 spt, 128 bytes/sector, FM</summary> /// <summary>5,25", SS, SD, 40 tracks, 18 spt, 128 bytes/sector, FM</summary>
@@ -304,12 +306,14 @@ namespace DiscImageChef.CommonTypes
ATARI_525_DD, ATARI_525_DD,
// Commodore standard floppy formats // Commodore standard floppy formats
/// <summary>3,5", DS, DD, 80 tracks, 10 spt, 512 bytes/sector, MFM</summary> /// <summary>3,5", DS, DD, 80 tracks, 10 spt, 512 bytes/sector, MFM (1581)</summary>
CBM_35_DD, CBM_35_DD,
/// <summary>3,5", DS, DD, 80 tracks, 11 spt, 512 bytes/sector, MFM (Amiga)</summary> /// <summary>3,5", DS, DD, 80 tracks, 11 spt, 512 bytes/sector, MFM (Amiga)</summary>
CBM_AMIGA_35_DD, CBM_AMIGA_35_DD,
/// <summary>3,5", DS, HD, 80 tracks, 22 spt, 512 bytes/sector, MFM (Amiga)</summary> /// <summary>3,5", DS, HD, 80 tracks, 22 spt, 512 bytes/sector, MFM (Amiga)</summary>
CBM_AMIGA_35_HD, CBM_AMIGA_35_HD,
/// <summary>5,25", SS, DD, 35 tracks, GCR</summary>
CBM_1540,
// NEC standard floppy formats // NEC standard floppy formats
/// <summary>8", SS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM</summary> /// <summary>8", SS, SD, 77 tracks, 26 spt, 128 bytes/sector, FM</summary>
@@ -378,9 +382,9 @@ namespace DiscImageChef.CommonTypes
FDFORMAT_525_DD, FDFORMAT_525_DD,
/// <summary>5,25", DS, HD, 82 tracks, 17 spt, 512 bytes/sector, MFM</summary> /// <summary>5,25", DS, HD, 82 tracks, 17 spt, 512 bytes/sector, MFM</summary>
FDFORMAT_525_HD, FDFORMAT_525_HD,
/// <summary>5,25", DS, DD, 82 tracks, 10 spt, 512 bytes/sector, MFM</summary> /// <summary>3,5", DS, DD, 82 tracks, 10 spt, 512 bytes/sector, MFM</summary>
FDFORMAT_35_DD, FDFORMAT_35_DD,
/// <summary>5,25", DS, HD, 82 tracks, 21 spt, 512 bytes/sector, MFM</summary> /// <summary>3,5", DS, HD, 82 tracks, 21 spt, 512 bytes/sector, MFM</summary>
FDFORMAT_35_HD, FDFORMAT_35_HD,
// Generic hard disks // Generic hard disks

View File

@@ -1,3 +1,9 @@
2015-12-31 Natalia Portillo <claunia@claunia.com>
* ImagePlugin.cs:
Added DiskTag for PCMCIA CIS and SecureDigital/MMC CID, CSD
and extended CSD.
2015-12-25 Natalia Portillo <claunia@claunia.com> 2015-12-25 Natalia Portillo <claunia@claunia.com>
* GDI.cs: * GDI.cs:

View File

@@ -662,7 +662,15 @@ namespace DiscImageChef.ImagePlugins
/// <summary>ATA IDENTIFY DEVICE response</summary> /// <summary>ATA IDENTIFY DEVICE response</summary>
ATA_IDENTIFY, ATA_IDENTIFY,
/// <summary>ATA IDENTIFY PACKET DEVICE response</summary> /// <summary>ATA IDENTIFY PACKET DEVICE response</summary>
ATAPI_IDENTIFY ATAPI_IDENTIFY,
/// <summary>PCMCIA/CardBus Card Information Structure</summary>
PCMCIA_CIS,
/// <summary>SecureDigital / MMC CID</summary>
SD_CID,
/// <summary>SecureDigital / MMC CSD</summary>
SD_CSD,
/// <summary>SecureDigital Extended CSD</summary>
SD_ExtendedCSD
}; };
/// <summary> /// <summary>

View File

@@ -1,3 +1,8 @@
2015-12-31 Natalia Portillo <claunia@claunia.com>
* DiskType.cs:
Added known floppies and magneto-opticals.
2015-12-13 Natalia Portillo <claunia@claunia.com> 2015-12-13 Natalia Portillo <claunia@claunia.com>
* DiskType.cs: * DiskType.cs:

View File

@@ -341,6 +341,297 @@ namespace DiscImageChef.Metadata
DiscType = "BD"; DiscType = "BD";
DiscSubType = "Xbox One Game Disc (XGD4)"; DiscSubType = "Xbox One Game Disc (XGD4)";
break; break;
case DiscImageChef.CommonTypes.DiskType.Apple32SS:
DiscType = "5.25\" floppy";
DiscSubType = "Apple DOS 3.2";
break;
case DiscImageChef.CommonTypes.DiskType.Apple32DS:
DiscType = "5.25\" floppy";
DiscSubType = "Apple DOS 3.2 (double-sided)";
break;
case DiscImageChef.CommonTypes.DiskType.Apple33SS:
DiscType = "5.25\" floppy";
DiscSubType = "Apple DOS 3.3";
break;
case DiscImageChef.CommonTypes.DiskType.Apple33DS:
DiscType = "5.25\" floppy";
DiscSubType = "Apple DOS 3.3 (double-sided)";
break;
case DiscImageChef.CommonTypes.DiskType.AppleSonySS:
DiscType = "3.5\" floppy";
DiscSubType = "Apple 400K";
break;
case DiscImageChef.CommonTypes.DiskType.AppleSonyDS:
DiscType = "3.5\" floppy";
DiscSubType = "Apple 800K";
break;
case DiscImageChef.CommonTypes.DiskType.AppleFileWare:
DiscType = "5.25\" floppy";
DiscSubType = "Apple FileWare";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_525_SS_DD_8:
DiscType = "5.25\" floppy";
DiscSubType = "IBM double-density, single-sided, 8 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_525_SS_DD_9:
DiscType = "5.25\" floppy";
DiscSubType = "IBM double-density, single-sided, 9 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_525_DS_DD_8:
DiscType = "5.25\" floppy";
DiscSubType = "IBM double-density, double-sided, 8 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_525_DS_DD_9:
DiscType = "5.25\" floppy";
DiscSubType = "IBM double-density, double-sided, 9 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_525_HD:
DiscType = "5.25\" floppy";
DiscSubType = "IBM high-density";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_35_SS_DD_8:
DiscType = "3.5\" floppy";
DiscSubType = "IBM double-density, single-sided, 8 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_35_SS_DD_9:
DiscType = "3.5\" floppy";
DiscSubType = "IBM double-density, single-sided, 9 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_35_DS_DD_8:
DiscType = "3.5\" floppy";
DiscSubType = "IBM double-density, double-sided, 8 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_35_DS_DD_9:
DiscType = "3.5\" floppy";
DiscSubType = "IBM double-density, double-sided, 9 sectors";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_35_HD:
DiscType = "3.5\" floppy";
DiscSubType = "IBM high-density";
break;
case DiscImageChef.CommonTypes.DiskType.DOS_35_ED:
DiscType = "3.5\" floppy";
DiscSubType = "IBM extra-density";
break;
case DiscImageChef.CommonTypes.DiskType.DMF:
DiscType = "3.5\" floppy";
DiscSubType = "Microsoft DMF";
break;
case DiscImageChef.CommonTypes.DiskType.DMF_82:
DiscType = "3.5\" floppy";
DiscSubType = "Microsoft DMF (82-track)";
break;
case DiscImageChef.CommonTypes.DiskType.XDF_35:
DiscType = "3.5\" floppy";
DiscSubType = "IBM XDF";
break;
case DiscImageChef.CommonTypes.DiskType.XDF_525:
DiscType = "5.25\" floppy";
DiscSubType = "IBM XDF";
break;
case DiscImageChef.CommonTypes.DiskType.IBM23FD:
DiscType = "8\" floppy";
DiscSubType = "IBM 23FD";
break;
case DiscImageChef.CommonTypes.DiskType.IBM33FD_128:
DiscType = "8\" floppy";
DiscSubType = "IBM 33FD (128 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.IBM33FD_256:
DiscType = "8\" floppy";
DiscSubType = "IBM 33FD (256 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.IBM33FD_512:
DiscType = "8\" floppy";
DiscSubType = "IBM 33FD (512 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.IBM43FD_128:
DiscType = "8\" floppy";
DiscSubType = "IBM 43FD (128 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.IBM43FD_256:
DiscType = "8\" floppy";
DiscSubType = "IBM 43FD (256 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.IBM53FD_256:
DiscType = "8\" floppy";
DiscSubType = "IBM 53FD (256 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.IBM53FD_512:
DiscType = "8\" floppy";
DiscSubType = "IBM 53FD (512 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.IBM53FD_1024:
DiscType = "8\" floppy";
DiscSubType = "IBM 53FD (1024 bytes/sector)";
break;
case DiscImageChef.CommonTypes.DiskType.RX01:
DiscType = "8\" floppy";
DiscSubType = "DEC RX-01";
break;
case DiscImageChef.CommonTypes.DiskType.RX02:
DiscType = "8\" floppy";
DiscSubType = "DEC RX-02";
break;
case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_SD_40:
DiscType = "5.25\" floppy";
DiscSubType = "BBC Micro 100K";
break;
case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_SD_80:
DiscType = "5.25\" floppy";
DiscSubType = "BBC Micro 200K";
break;
case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_DD_40:
DiscType = "5.25\" floppy";
DiscSubType = "Acorn S";
break;
case DiscImageChef.CommonTypes.DiskType.ACORN_525_SS_DD_80:
DiscType = "5.25\" floppy";
DiscSubType = "Acorn M";
break;
case DiscImageChef.CommonTypes.DiskType.ACORN_525_DS_DD:
DiscType = "5.25\" floppy";
DiscSubType = "Acorn L";
break;
case DiscImageChef.CommonTypes.DiskType.ACORN_35_DS_DD:
DiscType = "3.5\" floppy";
DiscSubType = "Acorn Archimedes";
break;
case DiscImageChef.CommonTypes.DiskType.ATARI_525_SD:
DiscType = "5.25\" floppy";
DiscSubType = "Atari single-density";
break;
case DiscImageChef.CommonTypes.DiskType.ATARI_525_ED:
DiscType = "5.25\" floppy";
DiscSubType = "Atari enhanced-density";
break;
case DiscImageChef.CommonTypes.DiskType.ATARI_525_DD:
DiscType = "5.25\" floppy";
DiscSubType = "Atari double-density";
break;
case DiscImageChef.CommonTypes.DiskType.CBM_1540:
DiscType = "5.25\" floppy";
DiscSubType = "Commodore 1540/1541";
break;
case DiscImageChef.CommonTypes.DiskType.CBM_35_DD:
DiscType = "3.5\" floppy";
DiscSubType = "Commodore 1581";
break;
case DiscImageChef.CommonTypes.DiskType.CBM_AMIGA_35_DD:
DiscType = "3.5\" floppy";
DiscSubType = "Amiga double-density";
break;
case DiscImageChef.CommonTypes.DiskType.CBM_AMIGA_35_HD:
DiscType = "3.5\" floppy";
DiscSubType = "Amiga high-density";
break;
case DiscImageChef.CommonTypes.DiskType.NEC_8_SD:
DiscType = "8\" floppy";
DiscSubType = "NEC single-sided";
break;
case DiscImageChef.CommonTypes.DiskType.NEC_8_DD:
DiscType = "8\" floppy";
DiscSubType = "NEC double-sided";
break;
case DiscImageChef.CommonTypes.DiskType.NEC_525_HD:
DiscType = "5.25\" floppy";
DiscSubType = "NEC high-density";
break;
case DiscImageChef.CommonTypes.DiskType.NEC_35_HD_8:
DiscType = "3.5\" floppy";
DiscSubType = "NEC high-density";
break;
case DiscImageChef.CommonTypes.DiskType.NEC_35_HD_15:
DiscType = "3.5\" floppy";
DiscSubType = "NEC floppy mode 3";
break;
case DiscImageChef.CommonTypes.DiskType.SHARP_525:
DiscType = "5.25\" floppy";
DiscSubType = "Sharp";
break;
case DiscImageChef.CommonTypes.DiskType.SHARP_35:
DiscType = "3.5\" floppy";
DiscSubType = "Sharp";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_54:
DiscType = "8\" floppy";
DiscSubType = "ECMA-54";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_59:
DiscType = "8\" floppy";
DiscSubType = "ECMA-59";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_69_8:
case DiscImageChef.CommonTypes.DiskType.ECMA_69_15:
case DiscImageChef.CommonTypes.DiskType.ECMA_69_26:
DiscType = "8\" floppy";
DiscSubType = "ECMA-69";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_66:
DiscType = "5.25\" floppy";
DiscSubType = "ECMA-66";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_70:
DiscType = "5.25\" floppy";
DiscSubType = "ECMA-70";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_78:
case DiscImageChef.CommonTypes.DiskType.ECMA_78_2:
DiscType = "5.25\" floppy";
DiscSubType = "ECMA-78";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_99_8:
case DiscImageChef.CommonTypes.DiskType.ECMA_99_15:
case DiscImageChef.CommonTypes.DiskType.ECMA_99_26:
DiscType = "5.25\" floppy";
DiscSubType = "ECMA-99";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_100:
DiscType = "3.5\" floppy";
DiscSubType = "ECMA-99";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_125:
DiscType = "3.5\" floppy";
DiscSubType = "ECMA-125";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_147:
DiscType = "3.5\" floppy";
DiscSubType = "ECMA-147";
break;
case DiscImageChef.CommonTypes.DiskType.FDFORMAT_525_DD:
DiscType = "5.25\" floppy";
DiscSubType = "FDFORMAT double-density";
break;
case DiscImageChef.CommonTypes.DiskType.FDFORMAT_525_HD:
DiscType = "5.25\" floppy";
DiscSubType = "FDFORMAT high-density";
break;
case DiscImageChef.CommonTypes.DiskType.FDFORMAT_35_DD:
DiscType = "3.5\" floppy";
DiscSubType = "FDFORMAT double-density";
break;
case DiscImageChef.CommonTypes.DiskType.FDFORMAT_35_HD:
DiscType = "3.5\" floppy";
DiscSubType = "FDFORMAT high-density";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_183_512:
case DiscImageChef.CommonTypes.DiskType.ECMA_183_1024:
DiscType = "5.25\" magneto-optical";
DiscSubType = "ECMA-183";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_184_512:
case DiscImageChef.CommonTypes.DiskType.ECMA_184_1024:
DiscType = "5.25\" magneto-optical";
DiscSubType = "ECMA-184";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_154:
DiscType = "3.5\" magneto-optical";
DiscSubType = "ECMA-154";
break;
case DiscImageChef.CommonTypes.DiskType.ECMA_201:
DiscType = "3.5\" magneto-optical";
DiscSubType = "ECMA-201";
break;
default: default:
DiscType = "Unknown"; DiscType = "Unknown";
DiscSubType = "Unknown"; DiscSubType = "Unknown";

View File

@@ -1,3 +1,8 @@
2015-12-31 Natalia Portillo <claunia@claunia.com>
* Commands/CreateSidecar.cs:
Implemented most support for block media sidecars.
2015-12-31 Natalia Portillo <claunia@claunia.com> 2015-12-31 Natalia Portillo <claunia@claunia.com>
* Commands/DeviceInfo.cs: * Commands/DeviceInfo.cs:

View File

@@ -1096,8 +1096,200 @@ namespace DiscImageChef.Commands
} }
sidecar.BlockMedia[0].Sequence.MediaTitle = _imageFormat.GetImageName(); sidecar.BlockMedia[0].Sequence.MediaTitle = _imageFormat.GetImageName();
//DiskType dskType = _imageFormat.ImageInfo.diskType; foreach (DiskTagType tagType in _imageFormat.ImageInfo.readableDiskTags)
// TODO: Complete it {
switch (tagType)
{
case DiskTagType.ATAPI_IDENTIFY:
sidecar.BlockMedia[0].ATA = new ATAType();
sidecar.BlockMedia[0].ATA.Identify = new DumpType();
sidecar.BlockMedia[0].ATA.Identify.Checksums = GetChecksums(_imageFormat.ReadDiskTag(DiskTagType.ATAPI_IDENTIFY)).ToArray();
sidecar.BlockMedia[0].ATA.Identify.Size = _imageFormat.ReadDiskTag(DiskTagType.ATAPI_IDENTIFY).Length;
break;
case DiskTagType.ATA_IDENTIFY:
sidecar.BlockMedia[0].ATA = new ATAType();
sidecar.BlockMedia[0].ATA.Identify = new DumpType();
sidecar.BlockMedia[0].ATA.Identify.Checksums = GetChecksums(_imageFormat.ReadDiskTag(DiskTagType.ATA_IDENTIFY)).ToArray();
sidecar.BlockMedia[0].ATA.Identify.Size = _imageFormat.ReadDiskTag(DiskTagType.ATA_IDENTIFY).Length;
break;
case DiskTagType.PCMCIA_CIS:
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType();
sidecar.BlockMedia[0].PCMCIA.CIS = new DumpType();
sidecar.BlockMedia[0].PCMCIA.CIS.Checksums = GetChecksums(_imageFormat.ReadDiskTag(DiskTagType.PCMCIA_CIS)).ToArray();
sidecar.BlockMedia[0].PCMCIA.CIS.Size = _imageFormat.ReadDiskTag(DiskTagType.PCMCIA_CIS).Length;
break;
case DiskTagType.SCSI_INQUIRY:
sidecar.BlockMedia[0].SCSI = new SCSIType();
sidecar.BlockMedia[0].SCSI.Inquiry = new DumpType();
sidecar.BlockMedia[0].SCSI.Inquiry.Checksums = GetChecksums(_imageFormat.ReadDiskTag(DiskTagType.SCSI_INQUIRY)).ToArray();
sidecar.BlockMedia[0].SCSI.Inquiry.Size = _imageFormat.ReadDiskTag(DiskTagType.SCSI_INQUIRY).Length;
break;
case DiskTagType.SD_CID:
if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.CID = new DumpType();
sidecar.BlockMedia[0].SecureDigital.CID.Checksums = GetChecksums(_imageFormat.ReadDiskTag(DiskTagType.SD_CID)).ToArray();
sidecar.BlockMedia[0].SecureDigital.CID.Size = _imageFormat.ReadDiskTag(DiskTagType.SD_CID).Length;
break;
case DiskTagType.SD_CSD:
if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType();
sidecar.BlockMedia[0].SecureDigital.CSD.Checksums = GetChecksums(_imageFormat.ReadDiskTag(DiskTagType.SD_CSD)).ToArray();
sidecar.BlockMedia[0].SecureDigital.CSD.Size = _imageFormat.ReadDiskTag(DiskTagType.SD_CSD).Length;
break;
case DiskTagType.SD_ExtendedCSD:
if(sidecar.BlockMedia[0].SecureDigital == null)
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType();
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Checksums = GetChecksums(_imageFormat.ReadDiskTag(DiskTagType.SD_ExtendedCSD)).ToArray();
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Size = _imageFormat.ReadDiskTag(DiskTagType.SD_ExtendedCSD).Length;
break;
}
}
string dskType, dskSubType;
Metadata.DiskType.DiskTypeToString(_imageFormat.ImageInfo.diskType, out dskType, out dskSubType);
sidecar.BlockMedia[0].DiskType = dskType;
sidecar.BlockMedia[0].DiskSubType = dskSubType;
switch(dskType)
{
case "8\" floppy":
// According to ECMA-59 et al
sidecar.BlockMedia[0].Dimensions = new DimensionsType();
sidecar.BlockMedia[0].Dimensions.Height = 203.2;
sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Width = 203.2;
sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Thickness = 1.65;
break;
case "5.25\" floppy":
// According to ECMA-99 et al
sidecar.BlockMedia[0].Dimensions = new DimensionsType();
sidecar.BlockMedia[0].Dimensions.Height = 133.3;
sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Width = 133.3;
sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Thickness = 1.65;
break;
case "3.5\" floppy":
// According to ECMA-100 et al
sidecar.BlockMedia[0].Dimensions = new DimensionsType();
sidecar.BlockMedia[0].Dimensions.Height = 94;
sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Width = 90;
sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Thickness = 3.3;
break;
case "5.25\" magneto-optical":
// According to ECMA-183 et al
sidecar.BlockMedia[0].Dimensions = new DimensionsType();
sidecar.BlockMedia[0].Dimensions.Height = 153;
sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Width = 135;
sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Thickness = 11;
break;
case "3.5\" magneto-optical":
// According to ECMA-154 et al
sidecar.BlockMedia[0].Dimensions = new DimensionsType();
sidecar.BlockMedia[0].Dimensions.Height = 94;
sidecar.BlockMedia[0].Dimensions.HeightSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Width = 90;
sidecar.BlockMedia[0].Dimensions.WidthSpecified = true;;
sidecar.BlockMedia[0].Dimensions.Thickness = 6;
break;
}
sidecar.BlockMedia[0].LogicalBlocks = (long)_imageFormat.GetSectors();
sidecar.BlockMedia[0].LogicalBlockSize = (int)_imageFormat.GetSectorSize();
// TODO: Detect it
sidecar.BlockMedia[0].PhysicalBlockSize = (int)_imageFormat.GetSectorSize();
DicConsole.WriteLine("Checking filesystems...");
List<Partition> partitions = new List<Partition>();
foreach (PartPlugin _partplugin in plugins.PartPluginsList.Values)
{
List<Partition> _partitions;
if (_partplugin.GetInformation(_imageFormat, out _partitions))
{
partitions = _partitions;
break;
}
}
sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[1];
if (partitions.Count > 0)
{
sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[partitions.Count];
for (int i = 0; i < partitions.Count; i++)
{
sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType();
sidecar.BlockMedia[0].FileSystemInformation[i].Description = partitions[i].PartitionDescription;
sidecar.BlockMedia[0].FileSystemInformation[i].EndSector = (int)(partitions[i].PartitionStartSector + partitions[i].PartitionSectors - 1);
sidecar.BlockMedia[0].FileSystemInformation[i].Name = partitions[i].PartitionName;
sidecar.BlockMedia[0].FileSystemInformation[i].Sequence = (int)partitions[i].PartitionSequence;
sidecar.BlockMedia[0].FileSystemInformation[i].StartSector = (int)partitions[i].PartitionStartSector;
sidecar.BlockMedia[0].FileSystemInformation[i].Type = partitions[i].PartitionType;
List<FileSystemType> lstFs = new List<FileSystemType>();
foreach (Plugin _plugin in plugins.PluginsList.Values)
{
try
{
if (_plugin.Identify(_imageFormat, partitions[i].PartitionStartSector, partitions[i].PartitionStartSector + partitions[i].PartitionSectors - 1))
{
string foo;
_plugin.GetInformation(_imageFormat, partitions[i].PartitionStartSector, partitions[i].PartitionStartSector + partitions[i].PartitionSectors - 1, out foo);
lstFs.Add(_plugin.XmlFSType);
}
}
catch
{
//DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name);
}
}
if (lstFs.Count > 0)
sidecar.BlockMedia[0].FileSystemInformation[i].FileSystems = lstFs.ToArray();
}
}
else
{
sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType();
sidecar.BlockMedia[0].FileSystemInformation[0].StartSector = 0;
sidecar.BlockMedia[0].FileSystemInformation[0].EndSector = (int)(_imageFormat.GetSectors() - 1);
List<FileSystemType> lstFs = new List<FileSystemType>();
foreach (Plugin _plugin in plugins.PluginsList.Values)
{
try
{
if (_plugin.Identify(_imageFormat, 0, _imageFormat.GetSectors() - 1))
{
string foo;
_plugin.GetInformation(_imageFormat, 0, _imageFormat.GetSectors() - 1, out foo);
lstFs.Add(_plugin.XmlFSType);
}
}
catch
{
//DicConsole.DebugWriteLine("Create-sidecar command", "Plugin {0} crashed", _plugin.Name);
}
}
if (lstFs.Count > 0)
sidecar.BlockMedia[0].FileSystemInformation[0].FileSystems = lstFs.ToArray();
}
// TODO: Implement support for getting CHS
break; break;
} }
case XmlMediaType.LinearMedia: case XmlMediaType.LinearMedia: