Move a lot of the data-handling utilities into their own module.

This commit is contained in:
David Given
2024-10-13 13:35:48 +02:00
parent e1f2494966
commit c5373480ba
143 changed files with 440 additions and 459 deletions

View File

@@ -2,10 +2,10 @@
#include "lib/decoders/decoders.h"
#include "aeslanier.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/core/bytes.h"
#include "fmt/format.h"
#include <string.h>

View File

@@ -2,10 +2,10 @@
#include "lib/decoders/decoders.h"
#include "agat.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/core/bytes.h"
#include "fmt/format.h"
#include <string.h>

View File

@@ -4,8 +4,8 @@
#include "agat.h"
#include "lib/core/crc.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/layout.h"
#include "lib/data/image.h"
#include "lib/data/layout.h"
#include "arch/agat/agat.pb.h"
#include "lib/encoders/encoders.pb.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "amiga.h"
#include "lib/core/bytes.h"
#include "fmt/format.h"

View File

@@ -4,7 +4,7 @@
#include "amiga.h"
#include "lib/core/crc.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "arch/amiga/amiga.pb.h"
#include "lib/encoders/encoders.pb.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "apple2.h"
#include "arch/apple2/apple2.pb.h"
#include "lib/decoders/decoders.pb.h"

View File

@@ -2,9 +2,9 @@
#include "arch/apple2/apple2.h"
#include "lib/decoders/decoders.h"
#include "lib/encoders/encoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "fmt/format.h"
#include "lib/encoders/encoders.pb.h"
#include <ctype.h>

View File

@@ -1,11 +1,11 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/decoders/decoders.h"
#include "lib/encoders/encoders.h"
#include "brother.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/core/bytes.h"
#include "lib/core/crc.h"
#include <ctype.h>

View File

@@ -4,7 +4,7 @@
#include "brother.h"
#include "lib/core/crc.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "arch/brother/brother.pb.h"
#include "lib/encoders/encoders.pb.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "c64.h"
#include "lib/core/crc.h"
#include "lib/core/bytes.h"

View File

@@ -3,13 +3,13 @@
#include "lib/encoders/encoders.h"
#include "c64.h"
#include "lib/core/crc.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "fmt/format.h"
#include "arch/c64/c64.pb.h"
#include "lib/encoders/encoders.pb.h"
#include "lib/layout.h"
#include "lib/data/layout.h"
#include <ctype.h>
#include "lib/core/bytes.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "f85.h"
#include "lib/core/crc.h"
#include "lib/core/bytes.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "fb100.h"
#include "lib/core/crc.h"
#include "lib/core/bytes.h"

View File

@@ -2,13 +2,13 @@
#include "lib/decoders/decoders.h"
#include "ibm.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "arch/ibm/ibm.pb.h"
#include "lib/config/proto.h"
#include "lib/layout.h"
#include "lib/data/layout.h"
#include <string.h>
static_assert(std::is_trivially_copyable<IbmIdam>::value,

View File

@@ -5,12 +5,12 @@
#include "ibm.h"
#include "lib/core/crc.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "arch/ibm/ibm.pb.h"
#include "lib/encoders/encoders.pb.h"
#include "fmt/format.h"
#include "lib/config/proto.h"
#include "lib/layout.h"
#include "lib/data/layout.h"
#include <ctype.h>
/* IAM record separator:

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "macintosh.h"
#include "lib/core/bytes.h"
#include "fmt/format.h"

View File

@@ -4,10 +4,10 @@
#include "macintosh.h"
#include "lib/core/crc.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "fmt/format.h"
#include "lib/encoders/encoders.pb.h"
#include "lib/layout.h"
#include "lib/data/layout.h"
#include "arch/macintosh/macintosh.pb.h"
#include <ctype.h>

View File

@@ -1,9 +1,9 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "micropolis.h"
#include "lib/core/bytes.h"
#include "fmt/format.h"

View File

@@ -1,9 +1,9 @@
#include "lib/core/globals.h"
#include "micropolis.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/decoders/decoders.h"
#include "lib/encoders/encoders.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "lib/encoders/encoders.pb.h"
static void write_sector(std::vector<bool>& bits,

View File

@@ -2,10 +2,10 @@
#include "lib/decoders/decoders.h"
#include "arch/mx/mx.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include <string.h>
const int SECTOR_SIZE = 256;

View File

@@ -12,11 +12,11 @@
*/
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "northstar.h"
#include "lib/core/bytes.h"
#include "lib/decoders/decoders.pb.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "northstar.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/core/bytes.h"
#include "lib/decoders/decoders.h"
#include "lib/encoders/encoders.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "lib/encoders/encoders.pb.h"
#define GAP_FILL_SIZE_SD 30

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/decoders/decoders.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/core/bytes.h"
#include "rolandd20.h"
#include <string.h>

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "smaky6.h"
#include "lib/core/bytes.h"
#include "lib/core/crc.h"

View File

@@ -3,22 +3,19 @@
#include "lib/decoders/decoders.h"
#include "arch/tartu/tartu.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include <string.h>
constexpr uint64_t HEADER_BITS = 0xaaaaaaaa44895554LL;
constexpr uint64_t DATA_BITS = 0xaaaaaaaa44895545LL;
constexpr uint64_t DATA_BITS = 0xaaaaaaaa44895545LL;
static const FluxPattern HEADER_PATTERN(64, HEADER_BITS);
static const FluxPattern DATA_PATTERN(64, DATA_BITS);
const FluxMatchers ANY_RECORD_PATTERN {
&HEADER_PATTERN,
&DATA_PATTERN
};
const FluxMatchers ANY_RECORD_PATTERN{&HEADER_PATTERN, &DATA_PATTERN};
class TartuDecoder : public Decoder
{
@@ -29,9 +26,7 @@ public:
{
}
void beginTrack() override
{
}
void beginTrack() override {}
nanoseconds_t advanceToNextRecord() override
{
@@ -45,7 +40,7 @@ public:
auto bits = readRawBits(16 * 4);
auto bytes = decodeFmMfm(bits).slice(0, 4);
ByteReader br(bytes);
uint8_t track = br.read_8();
_sector->logicalTrack = track >> 1;
@@ -54,7 +49,7 @@ public:
_sector->logicalSector = br.read_8();
uint8_t wantChecksum = br.read_8();
uint8_t gotChecksum = ~sumBytes(bytes.slice(0, 3));
if (wantChecksum == gotChecksum)
_sector->status = Sector::DATA_MISSING;
@@ -65,14 +60,15 @@ public:
{
if (readRaw64() != DATA_BITS)
return;
const auto& bits = readRawBits(129 * 16);
const auto& bytes = decodeFmMfm(bits).slice(0, 129);
_sector->data = bytes.slice(0, 128);
uint8_t wantChecksum = bytes.reader().seek(128).read_8();
uint8_t gotChecksum = ~sumBytes(_sector->data);
_sector->status = (wantChecksum == gotChecksum) ? Sector::OK : Sector::BAD_CHECKSUM;
_sector->status =
(wantChecksum == gotChecksum) ? Sector::OK : Sector::BAD_CHECKSUM;
}
private:
@@ -83,4 +79,3 @@ std::unique_ptr<Decoder> createTartuDecoder(const DecoderProto& config)
{
return std::unique_ptr<Decoder>(new TartuDecoder(config));
}

View File

@@ -4,8 +4,8 @@
#include "lib/encoders/encoders.h"
#include "arch/tartu/tartu.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/sector.h"
#include "lib/data/fluxmap.h"
#include "lib/data/sector.h"
#include <string.h>
class TartuEncoder : public Encoder

View File

@@ -3,10 +3,10 @@
#include "lib/encoders/encoders.h"
#include "arch/tids990/tids990.h"
#include "lib/core/crc.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include <string.h>
#include "fmt/format.h"

View File

@@ -4,7 +4,7 @@
#include "tids990.h"
#include "lib/core/crc.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "arch/tids990/tids990.pb.h"
#include "lib/encoders/encoders.pb.h"
#include "fmt/format.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "victor9k.h"
#include "lib/core/crc.h"
#include "lib/core/bytes.h"

View File

@@ -3,13 +3,13 @@
#include "lib/encoders/encoders.h"
#include "victor9k.h"
#include "lib/core/crc.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "lib/readerwriter.h"
#include "lib/image.h"
#include "lib/data/image.h"
#include "fmt/format.h"
#include "arch/victor9k/victor9k.pb.h"
#include "lib/encoders/encoders.pb.h"
#include "lib/layout.h"
#include "lib/data/layout.h"
#include <ctype.h>
#include "lib/core/bytes.h"

View File

@@ -1,10 +1,10 @@
#include "lib/core/globals.h"
#include "lib/fluxmap.h"
#include "lib/data/fluxmap.h"
#include "lib/decoders/fluxmapreader.h"
#include "lib/decoders/fluxpattern.h"
#include "protocol.h"
#include "lib/decoders/decoders.h"
#include "lib/sector.h"
#include "lib/data/sector.h"
#include "zilogmcz.h"
#include "lib/core/bytes.h"
#include "lib/core/crc.h"