// // StaticAnalyser.cpp // Clock Signal // // Created by Thomas Harte on 04/06/2017. // Copyright © 2017 Thomas Harte. All rights reserved. // #include "StaticAnalyser.hpp" #include #include #include "../../Storage/Tape/Parsers/ZX8081.hpp" static std::vector GetFiles(const std::shared_ptr &tape) { std::vector files; Storage::Tape::ZX8081::Parser parser; while(!tape->is_at_end()) { std::shared_ptr next_file = parser.get_next_file(tape); if(next_file != nullptr) { files.push_back(*next_file); } } return files; } void StaticAnalyser::ZX8081::AddTargets( const std::list> &disks, const std::list> &tapes, const std::list> &cartridges, std::list &destination) { if(!tapes.empty()) { std::vector files = GetFiles(tapes.front()); tapes.front()->reset(); if(!files.empty()) { StaticAnalyser::Target target; 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; // TODO: how to run software once loaded? Might require a BASIC detokeniser. if(target.zx8081.isZX81) { target.loadingCommand = "J\"\"\n"; } else { target.loadingCommand = "W\n"; } destination.push_back(target); } } }