2018-05-04 22:02:36 +00:00
|
|
|
//
|
|
|
|
// StaticAnalyser.cpp
|
|
|
|
// Clock Signal
|
|
|
|
//
|
|
|
|
// Created by Thomas Harte on 03/05/2018.
|
|
|
|
// Copyright © 2018 Thomas Harte. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
#include "StaticAnalyser.hpp"
|
|
|
|
#include "../AppleII/Target.hpp"
|
|
|
|
|
2018-05-05 03:11:12 +00:00
|
|
|
#include "../../../Storage/Disk/Track/TrackSerialiser.hpp"
|
|
|
|
#include "../../../Storage/Disk/Encodings/AppleGCR/SegmentParser.hpp"
|
|
|
|
|
2018-05-04 22:02:36 +00:00
|
|
|
Analyser::Static::TargetList Analyser::Static::DiskII::GetTargets(const Media &media, const std::string &file_name, TargetPlatform::IntType potential_platforms) {
|
2018-05-05 03:11:12 +00:00
|
|
|
// This analyser can comprehend disks only.
|
|
|
|
if(media.disks.empty()) return {};
|
|
|
|
|
|
|
|
// Grab track 0, sector 0.
|
|
|
|
auto track_zero = media.disks.front()->get_track_at_position(Storage::Disk::Track::Address(0, 0));
|
|
|
|
auto sector_map = Storage::Encodings::AppleGCR::sectors_from_segment(
|
|
|
|
Storage::Disk::track_serialisation(*track_zero, Storage::Time(1, 50000)));
|
|
|
|
|
2018-05-05 20:37:33 +00:00
|
|
|
const Storage::Encodings::AppleGCR::Sector *sector_zero = nullptr;
|
|
|
|
for(const auto &pair: sector_map) {
|
|
|
|
if(!pair.second.address.sector) {
|
|
|
|
sector_zero = &pair.second;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-05-04 22:02:36 +00:00
|
|
|
using Target = Analyser::Static::AppleII::Target;
|
|
|
|
auto target = std::unique_ptr<Target>(new Target);
|
|
|
|
target->machine = Machine::AppleII;
|
|
|
|
target->media = media;
|
|
|
|
|
2018-05-05 03:11:12 +00:00
|
|
|
target->disk_controller = Target::DiskController::SixteenSector;
|
2018-05-04 22:02:36 +00:00
|
|
|
|
|
|
|
TargetList targets;
|
|
|
|
targets.push_back(std::move(target));
|
|
|
|
return targets;
|
|
|
|
}
|