diff --git a/DICUI.Library/DiscImageCreator/Constants.cs b/DICUI.Library/DiscImageCreator/Constants.cs index 1f205658..b3c63cab 100644 --- a/DICUI.Library/DiscImageCreator/Constants.cs +++ b/DICUI.Library/DiscImageCreator/Constants.cs @@ -24,6 +24,7 @@ namespace DICUI.DiscImageCreator public const string Stop = "stop"; public const string Sub = "sub"; public const string Swap = "swap"; + public const string Tape = "tape"; public const string XBOX = "xbox"; public const string XBOXSwap = "xboxswap"; public const string XGD2Swap = "xgd2swap"; @@ -43,6 +44,7 @@ namespace DICUI.DiscImageCreator public const string CopyrightManagementInformation = "/c"; public const string D8Opcode = "/d8"; public const string DisableBeep = "/q"; + public const string ExtractMicroSoftCabFile = "/mscf"; public const string ForceUnitAccess = "/f"; public const string MultiSession = "/ms"; public const string NoFixSubP = "/np"; @@ -59,6 +61,7 @@ namespace DICUI.DiscImageCreator public const string SeventyFour = "/74"; public const string SkipSector = "/sk"; public const string SubchannelReadLevel = "/s"; + public const string UseAnchorVolumeDescriptorPointer = "/avdp"; public const string VideoNow = "/vn"; public const string VideoNowColor = "/vnc"; public const string VideoNowXP = "/vnx"; diff --git a/DICUI.Library/DiscImageCreator/Converters.cs b/DICUI.Library/DiscImageCreator/Converters.cs index 15c2cfcb..a5496170 100644 --- a/DICUI.Library/DiscImageCreator/Converters.cs +++ b/DICUI.Library/DiscImageCreator/Converters.cs @@ -22,6 +22,7 @@ namespace DICUI.DiscImageCreator case Command.DigitalVideoDisc: case Command.Disk: case Command.Floppy: + case Command.Tape: return KnownSystem.IBMPCCompatible; case Command.GDROM: case Command.Swap: @@ -73,6 +74,8 @@ namespace DICUI.DiscImageCreator return MediaType.FloppyDisk; case Command.Disk: return MediaType.HardDisk; + case Command.Tape: + return MediaType.DataCartridge; default: return null; } @@ -168,6 +171,8 @@ namespace DICUI.DiscImageCreator return CommandStrings.Sub; case Command.Swap: return CommandStrings.Swap; + case Command.Tape: + return CommandStrings.Tape; case Command.XBOX: return CommandStrings.XBOX; case Command.XBOXSwap: @@ -208,6 +213,8 @@ namespace DICUI.DiscImageCreator return FlagStrings.D8Opcode; case Flag.DisableBeep: return FlagStrings.DisableBeep; + case Flag.ExtractMicroSoftCabFile: + return FlagStrings.ExtractMicroSoftCabFile; case Flag.ForceUnitAccess: return FlagStrings.ForceUnitAccess; case Flag.MultiSession: @@ -240,6 +247,8 @@ namespace DICUI.DiscImageCreator return FlagStrings.SkipSector; case Flag.SubchannelReadLevel: return FlagStrings.SubchannelReadLevel; + case Flag.UseAnchorVolumeDescriptorPointer: + return FlagStrings.UseAnchorVolumeDescriptorPointer; case Flag.VideoNow: return FlagStrings.VideoNow; case Flag.VideoNowColor: @@ -304,6 +313,8 @@ namespace DICUI.DiscImageCreator return Command.Sub; case CommandStrings.Swap: return Command.Swap; + case CommandStrings.Tape: + return Command.Tape; case CommandStrings.XBOX: return Command.XBOX; case CommandStrings.XBOXSwap: diff --git a/DICUI.Library/DiscImageCreator/Enumerations.cs b/DICUI.Library/DiscImageCreator/Enumerations.cs index 4da1708e..797891b3 100644 --- a/DICUI.Library/DiscImageCreator/Enumerations.cs +++ b/DICUI.Library/DiscImageCreator/Enumerations.cs @@ -25,6 +25,7 @@ namespace DICUI.DiscImageCreator Stop, Sub, Swap, + Tape, XBOX, XBOXSwap, XGD2Swap, @@ -45,6 +46,7 @@ namespace DICUI.DiscImageCreator CopyrightManagementInformation, D8Opcode, DisableBeep, + ExtractMicroSoftCabFile, ForceUnitAccess, MultiSession, NoFixSubP, @@ -61,6 +63,7 @@ namespace DICUI.DiscImageCreator SeventyFour, SkipSector, SubchannelReadLevel, + UseAnchorVolumeDescriptorPointer, VideoNow, VideoNowColor, VideoNowXP, diff --git a/DICUI.Library/DiscImageCreator/Parameters.cs b/DICUI.Library/DiscImageCreator/Parameters.cs index 22fee97c..f9e1936c 100644 --- a/DICUI.Library/DiscImageCreator/Parameters.cs +++ b/DICUI.Library/DiscImageCreator/Parameters.cs @@ -211,6 +211,7 @@ namespace DICUI.DiscImageCreator || BaseCommand == Command.SACD || BaseCommand == Command.Swap || BaseCommand == Command.Sub + || BaseCommand == Command.Tape || BaseCommand == Command.XBOX || BaseCommand == Command.XBOXSwap || BaseCommand == Command.XGD2Swap @@ -373,6 +374,13 @@ namespace DICUI.DiscImageCreator } } + // Extract MicroSoftCabFile + if (GetSupportedCommands(Flag.ExtractMicroSoftCabFile).Contains(BaseCommand)) + { + if (this[Flag.ExtractMicroSoftCabFile] == true) + parameters.Add(Converters.LongName(Flag.ExtractMicroSoftCabFile)); + } + // Multi-Session if (GetSupportedCommands(Flag.MultiSession).Contains(BaseCommand)) { @@ -514,6 +522,13 @@ namespace DICUI.DiscImageCreator } } + // Use Anchor Volume Descriptor Pointer + if (GetSupportedCommands(Flag.UseAnchorVolumeDescriptorPointer).Contains(BaseCommand)) + { + if (this[Flag.UseAnchorVolumeDescriptorPointer] == true) + parameters.Add(Converters.LongName(Flag.UseAnchorVolumeDescriptorPointer)); + } + // VideoNow if (GetSupportedCommands(Flag.VideoNow).Contains(BaseCommand)) { @@ -1031,9 +1046,7 @@ namespace DICUI.DiscImageCreator else DriveSpeed = Int32.Parse(parts[3]); - if (parts.Count > 4) - return false; - + index = 4; break; case Command.Start: @@ -1088,6 +1101,17 @@ namespace DICUI.DiscImageCreator index = 4; break; + case Command.Tape: + if (!DoesExist(parts, 1) || IsFlag(parts[1]) || !File.Exists(parts[1])) + return false; + else + Filename = parts[1]; + + if (parts.Count > 2) + return false; + + break; + case Command.XBOX: if (!DoesExist(parts, 1) || !IsValidDriveLetter(parts[1])) return false; @@ -1234,6 +1258,13 @@ namespace DICUI.DiscImageCreator this[Flag.DisableBeep] = true; break; + case FlagStrings.ExtractMicroSoftCabFile: + if (!GetSupportedCommands(Flag.ExtractMicroSoftCabFile).Contains(BaseCommand)) + return false; + + this[Flag.ExtractMicroSoftCabFile] = true; + break; + case FlagStrings.ForceUnitAccess: if (!GetSupportedCommands(Flag.ForceUnitAccess).Contains(BaseCommand)) return false; @@ -1411,6 +1442,13 @@ namespace DICUI.DiscImageCreator i++; break; + case FlagStrings.UseAnchorVolumeDescriptorPointer: + if (!GetSupportedCommands(Flag.UseAnchorVolumeDescriptorPointer).Contains(BaseCommand)) + return false; + + this[Flag.UseAnchorVolumeDescriptorPointer] = true; + break; + case FlagStrings.VideoNow: if (!GetSupportedCommands(Flag.VideoNow).Contains(BaseCommand)) return false; @@ -1850,15 +1888,20 @@ namespace DICUI.DiscImageCreator commands.Add(Command.Data); commands.Add(Command.DigitalVideoDisc); commands.Add(Command.GDROM); + commands.Add(Command.SACD); commands.Add(Command.Swap); commands.Add(Command.XBOX); break; + case Flag.ExtractMicroSoftCabFile: + commands.Add(Command.CompactDisc); + break; case Flag.ForceUnitAccess: commands.Add(Command.Audio); commands.Add(Command.BluRay); commands.Add(Command.CompactDisc); commands.Add(Command.Data); commands.Add(Command.DigitalVideoDisc); + commands.Add(Command.SACD); commands.Add(Command.Swap); commands.Add(Command.XBOX); break; @@ -1943,6 +1986,10 @@ namespace DICUI.DiscImageCreator commands.Add(Command.GDROM); commands.Add(Command.Swap); break; + case Flag.UseAnchorVolumeDescriptorPointer: + commands.Add(Command.DigitalVideoDisc); + commands.Add(Command.SACD); + break; case Flag.VideoNow: commands.Add(Command.CompactDisc); break; diff --git a/DICUI.Library/Utilities/Validators.cs b/DICUI.Library/Utilities/Validators.cs index 363c822a..ab195fab 100644 --- a/DICUI.Library/Utilities/Validators.cs +++ b/DICUI.Library/Utilities/Validators.cs @@ -260,6 +260,7 @@ namespace DICUI.Utilities types.Add(MediaType.DVD); types.Add(MediaType.FloppyDisk); types.Add(MediaType.HardDisk); + types.Add(MediaType.DataCartridge); break; // https://en.wikipedia.org/wiki/PC-8800_series diff --git a/appveyor.yml b/appveyor.yml index b0d5e245..9e055fc8 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -34,7 +34,7 @@ build: after_build: - ps: appveyor DownloadFile https://github.com/aaru-dps/Aaru/releases/download/v5.0.1.2884/aaru-5.0.1.2884-1_windows_x64.zip - ps: appveyor DownloadFile http://www.chrysocome.net/downloads/8ab730cd2a29e76ddd89be1f99357942/dd-0.6beta3.zip -- ps: appveyor DownloadFile https://github.com/saramibreak/DiscImageCreator/files/4807899/DiscImageCreator_20200620.zip +- ps: appveyor DownloadFile https://github.com/saramibreak/DiscImageCreator/files/4931645/DiscImageCreator_20200716.zip - ps: appveyor DownloadFile https://archive.org/download/subdump_fua_0x28/subdump_fua_0x28.zip - 7z e aaru-5.0.1.2884-1_windows_x64.zip -oDICUI\bin\Debug\net462\Programs\Aaru * - 7z e aaru-5.0.1.2884-1_windows_x64.zip -oDICUI\bin\Debug\net472\Programs\Aaru * @@ -44,10 +44,10 @@ after_build: - 7z e dd-0.6beta3.zip -oDICUI\bin\Debug\net472\Programs\DD * - 7z e dd-0.6beta3.zip -oDICUI\bin\Debug\net48\Programs\DD * - 7z e dd-0.6beta3.zip -oDICUI\bin\Debug\netcoreapp3.1\Programs\DD * -- 7z e DiscImageCreator_20200620.zip -oDICUI\bin\Debug\net462\Programs\Creator Release_ANSI\* -- 7z e DiscImageCreator_20200620.zip -oDICUI\bin\Debug\net472\Programs\Creator Release_ANSI\* -- 7z e DiscImageCreator_20200620.zip -oDICUI\bin\Debug\net48\Programs\Creator Release_ANSI\* -- 7z e DiscImageCreator_20200620.zip -oDICUI\bin\Debug\netcoreapp3.1\Programs\Creator Release_ANSI\* +- 7z e DiscImageCreator_20200716.zip -oDICUI\bin\Debug\net462\Programs\Creator Release_ANSI\* +- 7z e DiscImageCreator_20200716.zip -oDICUI\bin\Debug\net472\Programs\Creator Release_ANSI\* +- 7z e DiscImageCreator_20200716.zip -oDICUI\bin\Debug\net48\Programs\Creator Release_ANSI\* +- 7z e DiscImageCreator_20200716.zip -oDICUI\bin\Debug\netcoreapp3.1\Programs\Creator Release_ANSI\* - 7z e subdump_fua_0x28.zip -oDICUI\bin\Debug\net462 * - mkdir DICUI\bin\Debug\net462\Programs\Subdump - mv DICUI\bin\Debug\net462\subdump_fua_0x28.exe DICUI\bin\Debug\net462\Programs\Subdump\subdump.exe