diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index 08c354208..72a5dee94 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -50,7 +50,7 @@ case StaticAnalyser::Target::Electron: return @"ElectronOptions"; case StaticAnalyser::Target::Oric: return @"OricOptions"; case StaticAnalyser::Target::Vic20: return @"Vic20Options"; - case StaticAnalyser::Target::ZX80: return @"ZX8081Options"; + case StaticAnalyser::Target::ZX8081: return @"ZX8081Options"; default: return nil; } } @@ -63,7 +63,7 @@ case StaticAnalyser::Target::Electron: return [[CSElectron alloc] init]; case StaticAnalyser::Target::Oric: return [[CSOric alloc] init]; case StaticAnalyser::Target::Vic20: return [[CSVic20 alloc] init]; - case StaticAnalyser::Target::ZX80: return [[CSZX8081 alloc] init]; + case StaticAnalyser::Target::ZX8081: return [[CSZX8081 alloc] init]; default: return nil; } } diff --git a/StaticAnalyser/StaticAnalyser.hpp b/StaticAnalyser/StaticAnalyser.hpp index 8aef59c62..982dc1315 100644 --- a/StaticAnalyser/StaticAnalyser.hpp +++ b/StaticAnalyser/StaticAnalyser.hpp @@ -40,6 +40,12 @@ enum class Atari2600PagingModel { Pitfall2 }; +enum class ZX8081MemoryModel { + Unexpanded, + SixteenKB, + SixtyFourKB +}; + /*! A list of disks, tapes and cartridges plus information about the machine to which to attach them and its configuration, and instructions on how to launch the software attached, plus a measure of confidence in this target's correctness. @@ -50,7 +56,7 @@ struct Target { Electron, Vic20, Oric, - ZX80 + ZX8081 } machine; float probability; @@ -75,6 +81,11 @@ struct Target { Vic20MemoryModel memory_model; bool has_c1540; } vic20; + + struct { + ZX8081MemoryModel memory_model; + bool isZX81; + } zx8081; }; std::string loadingCommand; diff --git a/StaticAnalyser/ZX8081/StaticAnalyser.cpp b/StaticAnalyser/ZX8081/StaticAnalyser.cpp index 2f5251e47..6b8cf3afd 100644 --- a/StaticAnalyser/ZX8081/StaticAnalyser.cpp +++ b/StaticAnalyser/ZX8081/StaticAnalyser.cpp @@ -36,9 +36,16 @@ void StaticAnalyser::ZX8081::AddTargets( if(!tapes.empty()) { std::vector files = GetFiles(tapes.front()); if(!files.empty()) { - // TODO: check files for machine type, memory size. StaticAnalyser::Target target; - target.machine = Target::ZX80; + target.machine = Target::ZX8081; + target.zx8081.isZX81 = files.front().isZX81; + if(files.front().data.size() > 16384) { + target.zx8081.memory_model = ZX8081MemoryModel::SixtyFourKB; + } else if(files.front().data.size() > 1024) { + target.zx8081.memory_model = ZX8081MemoryModel::SixteenKB; + } else { + target.zx8081.memory_model = ZX8081MemoryModel::Unexpanded; + } target.tapes = tapes; destination.push_back(target); }