From ddf38595ffc6ee6cbbce776e3ec093a15b6c6c8c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 29 Nov 2023 14:54:33 -0500 Subject: [PATCH] Add enough for FAT12 IMA images to get to the PC. --- Analyser/Static/Enterprise/StaticAnalyser.cpp | 2 ++ Analyser/Static/StaticAnalyser.cpp | 3 +++ .../Clock Signal.xcodeproj/project.pbxproj | 18 +++++++++++++++++ OSBindings/Mac/Clock Signal/Info.plist | 20 +++++++++++++++++++ OSBindings/Qt/clksignal.pro | 2 ++ OSBindings/SDL/SConstruct | 1 + Storage/TargetPlatforms.hpp | 3 ++- 7 files changed, 48 insertions(+), 1 deletion(-) diff --git a/Analyser/Static/Enterprise/StaticAnalyser.cpp b/Analyser/Static/Enterprise/StaticAnalyser.cpp index ec0904ab0..02a3166f0 100644 --- a/Analyser/Static/Enterprise/StaticAnalyser.cpp +++ b/Analyser/Static/Enterprise/StaticAnalyser.cpp @@ -40,6 +40,8 @@ Analyser::Static::TargetList Analyser::Static::Enterprise::GetTargets(const Medi target->basic_version = Target::BASICVersion::Any; // Inspect any supplied disks. + // + // TODO: how best can these be discerned from MS-DOS and MSX disks? if(!media.disks.empty()) { // DOS will be needed. target->dos = Target::DOS::EXDOS; diff --git a/Analyser/Static/StaticAnalyser.cpp b/Analyser/Static/StaticAnalyser.cpp index ecae04603..c7e2578bc 100644 --- a/Analyser/Static/StaticAnalyser.cpp +++ b/Analyser/Static/StaticAnalyser.cpp @@ -28,6 +28,7 @@ #include "Macintosh/StaticAnalyser.hpp" #include "MSX/StaticAnalyser.hpp" #include "Oric/StaticAnalyser.hpp" +#include "PCCompatible/StaticAnalyser.hpp" #include "Sega/StaticAnalyser.hpp" #include "ZX8081/StaticAnalyser.hpp" #include "ZXSpectrum/StaticAnalyser.hpp" @@ -177,6 +178,7 @@ static Media GetMediaAndPlatforms(const std::string &file_name, TargetPlatform:: Disk::DiskImageHolder, TargetPlatform::Acorn | TargetPlatform::AmstradCPC | TargetPlatform::Commodore | TargetPlatform::Oric | TargetPlatform::ZXSpectrum) // HFE (TODO: switch to AllDisk once the MSX stops being so greedy) + Format("ima", result.disks, Disk::DiskImageHolder, TargetPlatform::PCCompatible) // IMG (Enterprise/MS-DOS style) Format("img", result.disks, Disk::DiskImageHolder, TargetPlatform::Macintosh) // IMG (DiskCopy 4.2) Format("image", result.disks, Disk::DiskImageHolder, TargetPlatform::Macintosh) // IMG (DiskCopy 4.2) Format("img", result.disks, Disk::DiskImageHolder, TargetPlatform::Enterprise) // IMG (Enterprise/MS-DOS style) @@ -289,6 +291,7 @@ TargetList Analyser::Static::GetTargets(const std::string &file_name) { Append(Macintosh); Append(MSX); Append(Oric); + Append(PCCompatible); Append(Sega); Append(ZX8081); Append(ZXSpectrum); diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index 9085363c4..6a77713d5 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 423820112B17CBC800964EFE /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 423820102B17CBC800964EFE /* StaticAnalyser.cpp */; }; + 423820122B17CBC800964EFE /* StaticAnalyser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 423820102B17CBC800964EFE /* StaticAnalyser.cpp */; }; 423BDC4A2AB24699008E37B6 /* 8088Tests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 423BDC492AB24699008E37B6 /* 8088Tests.mm */; }; 42437B332AC70833006DFED1 /* HDV.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B6FD0342923061300EC4760 /* HDV.cpp */; }; 425739382B051EA800B7D1E4 /* PCCompatible.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 425739372B051EA800B7D1E4 /* PCCompatible.cpp */; }; @@ -1128,6 +1130,9 @@ /* Begin PBXFileReference section */ 4238200B2B1295AD00964EFE /* Status.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Status.hpp; sourceTree = ""; }; 4238200C2B15998800964EFE /* Results.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Results.hpp; sourceTree = ""; }; + 4238200E2B17CBC800964EFE /* StaticAnalyser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StaticAnalyser.hpp; sourceTree = ""; }; + 4238200F2B17CBC800964EFE /* Target.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Target.hpp; sourceTree = ""; }; + 423820102B17CBC800964EFE /* StaticAnalyser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StaticAnalyser.cpp; sourceTree = ""; }; 423BDC492AB24699008E37B6 /* 8088Tests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = 8088Tests.mm; sourceTree = ""; }; 42437B342ACF02A9006DFED1 /* Flags.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Flags.hpp; sourceTree = ""; }; 42437B352ACF0AA2006DFED1 /* Perform.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = Perform.hpp; sourceTree = ""; }; @@ -2346,6 +2351,16 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4238200D2B17CBC800964EFE /* PCCompatible */ = { + isa = PBXGroup; + children = ( + 4238200E2B17CBC800964EFE /* StaticAnalyser.hpp */, + 4238200F2B17CBC800964EFE /* Target.hpp */, + 423820102B17CBC800964EFE /* StaticAnalyser.cpp */, + ); + path = PCCompatible; + sourceTree = ""; + }; 42437B372ACF2798006DFED1 /* Implementation */ = { isa = PBXGroup; children = ( @@ -3581,6 +3596,7 @@ 4BB4BFB622A4372E0069048D /* Macintosh */, 4B89450F201967B4007DE474 /* MSX */, 4B8944F6201967B4007DE474 /* Oric */, + 4238200D2B17CBC800964EFE /* PCCompatible */, 4B7F1894215486A100388727 /* Sega */, 4B894504201967B4007DE474 /* ZX8081 */, 4B0F1BAF2602645900B85C66 /* ZXSpectrum */, @@ -5724,6 +5740,7 @@ 4B0ACC2D23775819008902D0 /* IntelligentKeyboard.cpp in Sources */, 4B894539201967B4007DE474 /* Tape.cpp in Sources */, 4B92E26B234AE35100CD6D1B /* MFP68901.cpp in Sources */, + 423820122B17CBC800964EFE /* StaticAnalyser.cpp in Sources */, 4B7F1898215486A200388727 /* StaticAnalyser.cpp in Sources */, 4B15A9FD208249BB005E6C8D /* StaticAnalyser.cpp in Sources */, 4B055AD31FAE9B0B0060FFFF /* Microdisc.cpp in Sources */, @@ -5994,6 +6011,7 @@ 4B0ACC2A23775819008902D0 /* Video.cpp in Sources */, 4B54C0BF1F8D8F450050900F /* Keyboard.cpp in Sources */, 4B3FE75E1F3CF68B00448EE4 /* CPM.cpp in Sources */, + 423820112B17CBC800964EFE /* StaticAnalyser.cpp in Sources */, 4BC6236D26F4235400F83DFE /* Copper.cpp in Sources */, 4B2BFDB21DAEF5FF001A68B8 /* Video.cpp in Sources */, 4BEDA3BF25B25563000C2DBD /* Decoder.cpp in Sources */, diff --git a/OSBindings/Mac/Clock Signal/Info.plist b/OSBindings/Mac/Clock Signal/Info.plist index eba1e15b4..bec7b908b 100644 --- a/OSBindings/Mac/Clock Signal/Info.plist +++ b/OSBindings/Mac/Clock Signal/Info.plist @@ -672,6 +672,26 @@ NSDocumentClass $(PRODUCT_MODULE_NAME).MachineDocument + + CFBundleTypeExtensions + + ima + + CFBundleTypeName + Raw DOS disk image + CFBundleTypeOSTypes + + ???? + + CFBundleTypeRole + Viewer + LSHandlerRank + Owner + LSTypeIsPackage + + NSDocumentClass + $(PRODUCT_MODULE_NAME).MachineDocument + CFBundleTypeExtensions diff --git a/OSBindings/Qt/clksignal.pro b/OSBindings/Qt/clksignal.pro index 95cfe635e..c77ccee80 100644 --- a/OSBindings/Qt/clksignal.pro +++ b/OSBindings/Qt/clksignal.pro @@ -52,6 +52,7 @@ SOURCES += \ $$SRC/Analyser/Static/Macintosh/*.cpp \ $$SRC/Analyser/Static/MSX/*.cpp \ $$SRC/Analyser/Static/Oric/*.cpp \ + $$SRC/Analyser/Static/PCCompatible/*.cpp \ $$SRC/Analyser/Static/Sega/*.cpp \ $$SRC/Analyser/Static/ZX8081/*.cpp \ $$SRC/Analyser/Static/ZXSpectrum/*.cpp \ @@ -174,6 +175,7 @@ HEADERS += \ $$SRC/Analyser/Static/Macintosh/*.hpp \ $$SRC/Analyser/Static/MSX/*.hpp \ $$SRC/Analyser/Static/Oric/*.hpp \ + $$SRC/Analyser/Static/PCCompatible/*.hpp \ $$SRC/Analyser/Static/Sega/*.hpp \ $$SRC/Analyser/Static/ZX8081/*.hpp \ \ diff --git a/OSBindings/SDL/SConstruct b/OSBindings/SDL/SConstruct index 3cadda6a2..af28fb3ef 100644 --- a/OSBindings/SDL/SConstruct +++ b/OSBindings/SDL/SConstruct @@ -36,6 +36,7 @@ SOURCES += glob.glob('../../Analyser/Static/Enterprise/*.cpp') SOURCES += glob.glob('../../Analyser/Static/Macintosh/*.cpp') SOURCES += glob.glob('../../Analyser/Static/MSX/*.cpp') SOURCES += glob.glob('../../Analyser/Static/Oric/*.cpp') +SOURCES += glob.glob('../../Analyser/Static/PCCompatible/*.cpp') SOURCES += glob.glob('../../Analyser/Static/Sega/*.cpp') SOURCES += glob.glob('../../Analyser/Static/ZX8081/*.cpp') SOURCES += glob.glob('../../Analyser/Static/ZXSpectrum/*.cpp') diff --git a/Storage/TargetPlatforms.hpp b/Storage/TargetPlatforms.hpp index 790e428c2..eeed8657b 100644 --- a/Storage/TargetPlatforms.hpp +++ b/Storage/TargetPlatforms.hpp @@ -38,11 +38,12 @@ enum Type: IntType { ZX80 = 1 << 19, ZX81 = 1 << 20, ZXSpectrum = 1 << 21, + PCCompatible = 1 << 22, Acorn = AcornAtom | AcornElectron | BBCMaster | BBCModelA | BBCModelB, ZX8081 = ZX80 | ZX81, AllCartridge = Atari2600 | AcornElectron | Coleco | MSX, - AllDisk = Acorn | AmstradCPC | Commodore | Oric | MSX | ZXSpectrum | Macintosh | AtariST | DiskII | Amiga, + AllDisk = Acorn | AmstradCPC | Commodore | Oric | MSX | ZXSpectrum | Macintosh | AtariST | DiskII | Amiga | PCCompatible, AllTape = Acorn | AmstradCPC | Commodore | Oric | ZX8081 | MSX | ZXSpectrum, };