15#include "DiskAnalyzerTypes.h"
17#include "CoreObject.h"
22class DiskAnalyzer final :
public CoreObject {
31 DiskInfo diskInfo = { };
37 std::vector<string> errorLog[85];
40 std::vector<isize> errorStartIndex[85];
43 std::vector<isize> errorEndIndex[85];
46 char text[maxBitsOnTrack + 1] = { };
55 DiskAnalyzer(
const class Disk &disk);
65 const char *objectName()
const override {
return "DiskAnalyzer"; }
75 isize lengthOfTrack(Track t)
const;
76 isize lengthOfHalftrack(Halftrack ht)
const;
79 u8 decodeGcrNibble(Halftrack ht, isize offset);
80 u8 decodeGcr(Halftrack ht, isize offset);
88 TrackInfo analyzeTrack(Track t);
89 TrackInfo analyzeHalftrack(Halftrack ht);
92 void analyzeSectorBlocks(Halftrack ht, TrackInfo &trackInfo);
95 void analyzeSectorHeaderBlock(Halftrack ht, isize offset, TrackInfo &trackInfo);
96 void analyzeSectorDataBlock(Halftrack ht, isize offset, TrackInfo &trackInfo);
99 void log(Halftrack ht, isize begin, isize length,
const char *fmt, ...);
104 const SectorInfo §orLayout(Halftrack ht, Sector nr);
107 const string &getLogbook(Halftrack ht) {
return logbook[ht]; }
110 isize numErrors(Halftrack ht) {
return isize(errorLog[ht].size()); }
113 string errorMessage(Halftrack ht, isize nr)
const {
return errorLog[ht].at(nr); }
116 isize firstErroneousBit(Halftrack ht, isize nr)
const {
return errorStartIndex[ht].at(nr); }
119 isize lastErroneousBit(Halftrack ht, isize nr)
const {
return errorEndIndex[ht].at(nr); }
122 const char *diskNameAsString();
125 const char *trackBitsAsString(Halftrack ht);
128 const char *sectorHeaderBytesAsString(Halftrack ht, Sector nr,
bool hex);
131 const char *sectorDataBytesAsString(Halftrack ht, Sector nr,
bool hex);
136 const char *sectorBytesAsString(Halftrack ht, isize offset, isize length,
bool hex);
VirtualC64 project namespace.
Definition CmdQueue.cpp:16