From 559880243950c4926e7c3ecdef24c101df77762a Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 25 Aug 2019 15:10:09 -0400 Subject: [PATCH] Makes the static analyser aware of mass-storage devices. --- Analyser/Static/Macintosh/StaticAnalyser.cpp | 6 +++--- Analyser/Static/StaticAnalyser.cpp | 8 ++++++-- Analyser/Static/StaticAnalyser.hpp | 8 +++++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Analyser/Static/Macintosh/StaticAnalyser.cpp b/Analyser/Static/Macintosh/StaticAnalyser.cpp index 3c20dc7be..1dc76db84 100644 --- a/Analyser/Static/Macintosh/StaticAnalyser.cpp +++ b/Analyser/Static/Macintosh/StaticAnalyser.cpp @@ -10,10 +10,10 @@ #include "Target.hpp" Analyser::Static::TargetList Analyser::Static::Macintosh::GetTargets(const Media &media, const std::string &file_name, TargetPlatform::IntType potential_platforms) { - // This analyser can comprehend disks only. - if(media.disks.empty()) return {}; + // This analyser can comprehend disks and mass-storage devices only. + if(media.disks.empty() && media.mass_storage_devices.empty()) return {}; - // If there is at least one disk, wave it through. + // As there is at least one usable media image, wave it through. Analyser::Static::TargetList targets; using Target = Analyser::Static::Macintosh::Target; diff --git a/Analyser/Static/StaticAnalyser.cpp b/Analyser/Static/StaticAnalyser.cpp index 2aa77322d..a9df90cf0 100644 --- a/Analyser/Static/StaticAnalyser.cpp +++ b/Analyser/Static/StaticAnalyser.cpp @@ -46,6 +46,9 @@ #include "../../Storage/Disk/DiskImage/Formats/SSD.hpp" #include "../../Storage/Disk/DiskImage/Formats/WOZ.hpp" +// Mass Storage Devices (i.e. usually, hard disks) +#include "../../Storage/MassStorage/Formats/HFV.hpp" + // Tapes #include "../../Storage/Tape/Formats/CAS.hpp" #include "../../Storage/Tape/Formats/CommodoreTAP.hpp" @@ -102,7 +105,8 @@ static Media GetMediaAndPlatforms(const std::string &file_name, TargetPlatform:: Format("dsd", result.disks, Disk::DiskImageHolder, TargetPlatform::Acorn) // DSD Format("dsk", result.disks, Disk::DiskImageHolder, TargetPlatform::AmstradCPC) // DSK (Amstrad CPC) Format("dsk", result.disks, Disk::DiskImageHolder, TargetPlatform::DiskII) // DSK (Apple II) - Format("dsk", result.disks, Disk::DiskImageHolder, TargetPlatform::Macintosh) // DSK (Macintosh) + Format("dsk", result.disks, Disk::DiskImageHolder, TargetPlatform::Macintosh) // DSK (Macintosh, floppy disk) + Format("dsk", result.mass_storage_devices, MassStorage::HFV, TargetPlatform::Macintosh) // DSK (Macintosh, hard disk) Format("dsk", result.disks, Disk::DiskImageHolder, TargetPlatform::MSX) // DSK (MSX) Format("dsk", result.disks, Disk::DiskImageHolder, TargetPlatform::Oric) // DSK (Oric) Format("g64", result.disks, Disk::DiskImageHolder, TargetPlatform::Commodore) // G64 @@ -160,7 +164,7 @@ Media Analyser::Static::GetMedia(const std::string &file_name) { TargetList Analyser::Static::GetTargets(const std::string &file_name) { TargetList targets; - // Collect all disks, tapes and ROMs as can be extrapolated from this file, forming the + // Collect all disks, tapes ROMs, etc as can be extrapolated from this file, forming the // union of all platforms this file might be a target for. TargetPlatform::IntType potential_platforms = 0; Media media = GetMediaAndPlatforms(file_name, potential_platforms); diff --git a/Analyser/Static/StaticAnalyser.hpp b/Analyser/Static/StaticAnalyser.hpp index 7a7a00000..5981fc435 100644 --- a/Analyser/Static/StaticAnalyser.hpp +++ b/Analyser/Static/StaticAnalyser.hpp @@ -11,9 +11,10 @@ #include "../Machines.hpp" -#include "../../Storage/Tape/Tape.hpp" -#include "../../Storage/Disk/Disk.hpp" #include "../../Storage/Cartridge/Cartridge.hpp" +#include "../../Storage/Disk/Disk.hpp" +#include "../../Storage/MassStorage/MassStorageDevice.hpp" +#include "../../Storage/Tape/Tape.hpp" #include #include @@ -29,9 +30,10 @@ struct Media { std::vector> disks; std::vector> tapes; std::vector> cartridges; + std::vector> mass_storage_devices; bool empty() const { - return disks.empty() && tapes.empty() && cartridges.empty(); + return disks.empty() && tapes.empty() && cartridges.empty() && mass_storage_devices.empty(); } };