diff --git a/lib/algorithms/readerwriter.cc b/lib/algorithms/readerwriter.cc index 2c8d485a..f21f7a59 100644 --- a/lib/algorithms/readerwriter.cc +++ b/lib/algorithms/readerwriter.cc @@ -347,7 +347,7 @@ ReadResult readGroup(FluxSourceIteratorHolder& fluxSourceIteratorHolder, ReadResult result = BAD_AND_CAN_NOT_RETRY; for (unsigned offset = 0; offset < trackInfo->groupSize; - offset += Layout::getHeadWidth()) + offset += Layout::getHeadWidth()) { log(BeginReadOperationLogMessage{ trackInfo->physicalTrack + offset, trackInfo->physicalSide}); @@ -404,7 +404,7 @@ void writeTracks(FluxSink& fluxSink, for (;;) { for (int offset = 0; offset < trackInfo->groupSize; - offset += Layout::getHeadWidth()) + offset += Layout::getHeadWidth()) { unsigned physicalTrack = trackInfo->physicalTrack + offset; diff --git a/lib/config/flags.h b/lib/config/flags.h index 4757b046..67be675f 100644 --- a/lib/config/flags.h +++ b/lib/config/flags.h @@ -46,7 +46,7 @@ class Flag { public: Flag(const std::vector& names, const std::string helptext); - virtual ~Flag(){}; + virtual ~Flag() {}; void checkInitialised() const { diff --git a/lib/config/layout.proto b/lib/config/layout.proto index 1499809a..94ec350b 100644 --- a/lib/config/layout.proto +++ b/lib/config/layout.proto @@ -54,10 +54,12 @@ message LayoutProto [ default = 0, (help) = "number of tracks in image" ]; optional int32 sides = 3 [ default = 0, (help) = "number of sides in image" ]; - optional Order order = 4 + optional Order filesystem_track_order = 4 [ default = CHS, (help) = "the order of sectors in the filesystem" ]; - optional bool swap_sides = 5 + optional Order image_track_order = 5 + [ default = CHS, (help) = "the order of sectors in disk images" ]; + optional bool swap_sides = 6 [ default = false, (help) = "the sides are inverted on this disk" ]; - optional FormatType format_type = 6 + optional FormatType format_type = 7 [ default = FORMATTYPE_UNKNOWN, (help) = "Format type of image" ]; } diff --git a/lib/data/image.cc b/lib/data/image.cc index 9de32250..df7dc57a 100644 --- a/lib/data/image.cc +++ b/lib/data/image.cc @@ -2,6 +2,7 @@ #include "lib/data/sector.h" #include "lib/data/image.h" #include "lib/data/layout.h" +#include "lib/config/config.h" Image::Image() {} @@ -25,7 +26,8 @@ void Image::clear() void Image::createBlankImage() { clear(); - for (const auto& trackAndHead : Layout::getTrackOrdering()) + for (const auto& trackAndHead : Layout::getTrackOrdering( + globalConfig()->layout().filesystem_track_order())) { unsigned track = trackAndHead.first; unsigned side = trackAndHead.second; diff --git a/lib/data/layout.cc b/lib/data/layout.cc index 89bec9ed..5d89220c 100644 --- a/lib/data/layout.cc +++ b/lib/data/layout.cc @@ -108,21 +108,21 @@ void Layout::getBounds( } std::vector> Layout::getTrackOrdering( - unsigned guessedTracks, unsigned guessedSides) + LayoutProto::Order ordering, unsigned guessedTracks, unsigned guessedSides) { auto layout = globalConfig()->layout(); int tracks = layout.has_tracks() ? layout.tracks() : guessedTracks; int sides = layout.has_sides() ? layout.sides() : guessedSides; - std::vector> ordering; - switch (layout.order()) + std::vector> trackList; + switch (ordering) { case LayoutProto::CHS: { for (int track = 0; track < tracks; track++) { for (int side = 0; side < sides; side++) - ordering.push_back(std::make_pair(track, side)); + trackList.push_back(std::make_pair(track, side)); } break; } @@ -132,16 +132,16 @@ std::vector> Layout::getTrackOrdering( for (int side = 0; side < sides; side++) { for (int track = 0; track < tracks; track++) - ordering.push_back(std::make_pair(track, side)); + trackList.push_back(std::make_pair(track, side)); } break; } default: - error("LAYOUT: invalid track ordering"); + error("LAYOUT: invalid track trackList"); } - return ordering; + return trackList; } std::vector Layout::expandSectorList( diff --git a/lib/data/layout.h b/lib/data/layout.h index 34447139..1cbdcc77 100644 --- a/lib/data/layout.h +++ b/lib/data/layout.h @@ -2,6 +2,7 @@ #define LAYOUT_H #include "lib/data/flux.h" +#include "lib/config/layout.pb.h" class SectorListProto; class TrackInfo; @@ -39,7 +40,9 @@ public: /* Returns a series of pairs representing the filesystem * ordering of the disk, in logical numbers. */ static std::vector> getTrackOrdering( - unsigned guessedTracks = 0, unsigned guessedSides = 0); + LayoutProto::Order ordering, + unsigned guessedTracks = 0, + unsigned guessedSides = 0); /* Returns the layout of a given track. */ static std::shared_ptr getLayoutOfTrack( diff --git a/lib/decoders/decoders.h b/lib/decoders/decoders.h index ce2606f2..f689b898 100644 --- a/lib/decoders/decoders.h +++ b/lib/decoders/decoders.h @@ -98,10 +98,10 @@ public: } protected: - virtual void beginTrack(){}; + virtual void beginTrack() {}; virtual nanoseconds_t advanceToNextRecord() = 0; virtual void decodeSectorRecord() = 0; - virtual void decodeDataRecord(){}; + virtual void decodeDataRecord() {}; const DecoderProto& _config; std::shared_ptr _trackdata; diff --git a/lib/imagereader/d88imagereader.cc b/lib/imagereader/d88imagereader.cc index 9d568203..9accd64b 100644 --- a/lib/imagereader/d88imagereader.cc +++ b/lib/imagereader/d88imagereader.cc @@ -93,7 +93,7 @@ public: auto physical = layoutdata->mutable_physical(); for (int sectorInTrack = 0; sectorInTrack < currentSectorsInTrack; - sectorInTrack++) + sectorInTrack++) { Bytes sectorHeader(0x10); inputFile.read( diff --git a/lib/imagereader/imagereader.cc b/lib/imagereader/imagereader.cc index 73cd95d7..19aa8179 100644 --- a/lib/imagereader/imagereader.cc +++ b/lib/imagereader/imagereader.cc @@ -68,7 +68,7 @@ std::unique_ptr ImageReader::readMappedImage() { auto rawImage = readImage(); - if (!_config.filesystem_sector_order()) + if (!_config.filesystem_track_order()) return rawImage; log("READER: converting from filesystem sector order to disk order"); diff --git a/lib/imagereader/imagereader.h b/lib/imagereader/imagereader.h index c4855919..70d63d8a 100644 --- a/lib/imagereader/imagereader.h +++ b/lib/imagereader/imagereader.h @@ -13,7 +13,7 @@ class ImageReader { public: ImageReader(const ImageReaderProto& config); - virtual ~ImageReader(){}; + virtual ~ImageReader() {}; public: static std::unique_ptr create(Config& config); diff --git a/lib/imagereader/imagereader.proto b/lib/imagereader/imagereader.proto index 6feaad47..7b838f01 100644 --- a/lib/imagereader/imagereader.proto +++ b/lib/imagereader/imagereader.proto @@ -19,7 +19,7 @@ message NfdInputProto {} message ImageReaderProto { optional string filename = 1 [ (help) = "filename of input sector image" ]; - optional bool filesystem_sector_order = 13 [ + optional bool filesystem_track_order = 13 [ (help) = "read/write sector image in filesystem order", default = false ]; diff --git a/lib/imagereader/imdimagereader.cc b/lib/imagereader/imdimagereader.cc index 7875837f..b844f36a 100644 --- a/lib/imagereader/imdimagereader.cc +++ b/lib/imagereader/imdimagereader.cc @@ -301,7 +301,7 @@ public: switch (Status_Sector) { - // clang-format off + // clang-format off /* fluxengine knows of a few sector statussen but not all of the statussen in IMD. * // the statussen are in sector.h. Translation to fluxengine is as follows: * Statussen fluxengine | Status IMD diff --git a/lib/imagereader/imgimagereader.cc b/lib/imagereader/imgimagereader.cc index 42e747b2..d9ba43ed 100644 --- a/lib/imagereader/imgimagereader.cc +++ b/lib/imagereader/imgimagereader.cc @@ -32,7 +32,8 @@ public: "tracks, sides and trackdata fields in the layout?"); std::unique_ptr image(new Image); - for (const auto& p : Layout::getTrackOrdering()) + for (const auto& p : + Layout::getTrackOrdering(layout.filesystem_track_order())) { int track = p.first; int side = p.second; diff --git a/lib/imagewriter/d88imagewriter.cc b/lib/imagewriter/d88imagewriter.cc index 818db027..161acd46 100644 --- a/lib/imagewriter/d88imagewriter.cc +++ b/lib/imagewriter/d88imagewriter.cc @@ -65,15 +65,15 @@ public: uint32_t trackOffset = 688; for (int track = 0; track < geometry.numTracks * geometry.numSides; - track++) + track++) { headerWriter.seek(0x20 + 4 * track); headerWriter.write_le32(trackOffset); int side = track & 1; std::vector> sectors; for (int sectorId = geometry.firstSector; - sectorId <= geometry.numSectors; - sectorId++) + sectorId <= geometry.numSectors; + sectorId++) { const auto& sector = image.get(track >> 1, side, sectorId); if (sector) diff --git a/lib/imagewriter/imagewriter.cc b/lib/imagewriter/imagewriter.cc index f0fd463b..50bd14fc 100644 --- a/lib/imagewriter/imagewriter.cc +++ b/lib/imagewriter/imagewriter.cc @@ -176,7 +176,7 @@ void ImageWriter::printMap(const Image& image) void ImageWriter::writeMappedImage(const Image& image) { - if (_config.filesystem_sector_order()) + if (_config.filesystem_track_order()) { log("WRITER: converting from disk sector order to filesystem order"); diff --git a/lib/imagewriter/imagewriter.h b/lib/imagewriter/imagewriter.h index 9d754534..79c49bb1 100644 --- a/lib/imagewriter/imagewriter.h +++ b/lib/imagewriter/imagewriter.h @@ -9,7 +9,7 @@ class ImageWriter { public: ImageWriter(const ImageWriterProto& config); - virtual ~ImageWriter(){}; + virtual ~ImageWriter() {}; public: static std::unique_ptr create(Config& config); diff --git a/lib/imagewriter/imagewriter.proto b/lib/imagewriter/imagewriter.proto index c2b42daf..a8370912 100644 --- a/lib/imagewriter/imagewriter.proto +++ b/lib/imagewriter/imagewriter.proto @@ -67,7 +67,7 @@ message ImdOutputProto message ImageWriterProto { optional string filename = 1 [ (help) = "filename of output sector image" ]; - optional bool filesystem_sector_order = 10 [ + optional bool filesystem_track_order = 10 [ (help) = "read/write sector image in filesystem order", default = false ]; diff --git a/lib/imagewriter/imdimagewriter.cc b/lib/imagewriter/imdimagewriter.cc index 1a2537e7..c0478190 100644 --- a/lib/imagewriter/imdimagewriter.cc +++ b/lib/imagewriter/imdimagewriter.cc @@ -354,7 +354,7 @@ public: // determine how the optional cylinder map looks like // write the corresponding logical ID for (int sectorId = 0; sectorId < numSectorsinTrack; - sectorId++) + sectorId++) { // const auto& sector = sectors.get(track, head, // sectorId); @@ -372,7 +372,7 @@ public: // determine how the optional head map looks like // write the corresponding logical ID for (int sectorId = 0; sectorId < numSectorsinTrack; - sectorId++) + sectorId++) { // const auto& sector = sectors.get(track, head, // sectorId); @@ -440,7 +440,7 @@ public: } switch (sector->status) { - // clang-format off + // clang-format off /* fluxengine knows of a few sector statussen but not all of the statussen in IMD. * // the statussen are in sector.h. Translation to fluxengine is as follows: * Statussen fluxengine | Status IMD diff --git a/lib/imagewriter/imgimagewriter.cc b/lib/imagewriter/imgimagewriter.cc index 631059fd..b4678fbd 100644 --- a/lib/imagewriter/imgimagewriter.cc +++ b/lib/imagewriter/imgimagewriter.cc @@ -31,7 +31,8 @@ public: if (!outputFile.is_open()) error("cannot open output file"); - for (const auto& p : Layout::getTrackOrdering(tracks, sides)) + for (const auto& p : Layout::getTrackOrdering( + layout.filesystem_track_order(), tracks, sides)) { int track = p.first; int side = p.second; diff --git a/lib/imagewriter/ldbsimagewriter.cc b/lib/imagewriter/ldbsimagewriter.cc index 728244d1..f1a4c778 100644 --- a/lib/imagewriter/ldbsimagewriter.cc +++ b/lib/imagewriter/ldbsimagewriter.cc @@ -62,7 +62,7 @@ public: int actualSectors = 0; for (int sectorId = 0; sectorId < geometry.numSectors; - sectorId++) + sectorId++) { const auto& sector = image.get(track, side, sectorId); if (sector) @@ -81,7 +81,7 @@ public: trackHeaderWriter.write_le16(0); /* approximate track length */ for (int sectorId = 0; sectorId < geometry.numSectors; - sectorId++) + sectorId++) { const auto& sector = image.get(track, side, sectorId); if (sector) diff --git a/lib/imagewriter/nsiimagewriter.cc b/lib/imagewriter/nsiimagewriter.cc index 038cfbe2..4ea7b980 100644 --- a/lib/imagewriter/nsiimagewriter.cc +++ b/lib/imagewriter/nsiimagewriter.cc @@ -44,7 +44,7 @@ public: unsigned sectorFileOffset; for (int track = 0; track < geometry.numTracks * geometry.numSides; - track++) + track++) { int side = (track < geometry.numTracks) ? 0 : 1; for (int sectorId = 0; sectorId < geometry.numSectors; sectorId++) diff --git a/lib/imagewriter/rawimagewriter.cc b/lib/imagewriter/rawimagewriter.cc index f7a9c5a5..66d3f075 100644 --- a/lib/imagewriter/rawimagewriter.cc +++ b/lib/imagewriter/rawimagewriter.cc @@ -38,7 +38,7 @@ public: unsigned sectorFileOffset; for (int track = 0; track < geometry.numTracks * geometry.numSides; - track++) + track++) { int side = (track < geometry.numTracks) ? 0 : 1; diff --git a/lib/vfs/cbmfs.cc b/lib/vfs/cbmfs.cc index 5ac64fb6..0b4fc303 100644 --- a/lib/vfs/cbmfs.cc +++ b/lib/vfs/cbmfs.cc @@ -128,7 +128,7 @@ class CbmfsFilesystem : public Filesystem usedBlocks = 0; unsigned block = 0; for (int track = 0; track < globalConfig()->layout().tracks(); - track++) + track++) { uint8_t blocks = br.read_8(); uint32_t bitmap = br.read_le24(); diff --git a/lib/vfs/vfs.cc b/lib/vfs/vfs.cc index 50340539..95ac0d12 100644 --- a/lib/vfs/vfs.cc +++ b/lib/vfs/vfs.cc @@ -160,8 +160,8 @@ Filesystem::Filesystem(std::shared_ptr sectors): "information"); unsigned block = 0; - for (const auto& p : - Layout::getTrackOrdering(layout.tracks(), layout.sides())) + for (const auto& p : Layout::getTrackOrdering( + layout.filesystem_track_order(), layout.tracks(), layout.sides())) { int track = p.first; int side = p.second; diff --git a/src/formats/apple2.textpb b/src/formats/apple2.textpb index 7461b464..0a91d459 100644 --- a/src/formats/apple2.textpb +++ b/src/formats/apple2.textpb @@ -96,7 +96,8 @@ option_group { format_type: FORMATTYPE_80TRACK tracks: 80 sides: 2 - order: HCS + image_track_order: HCS + filesystem_track_order: HCS layoutdata { sector_size: 256 physical { @@ -136,11 +137,11 @@ option_group { config { image_reader { - filesystem_sector_order: true + filesystem_track_order: true } image_writer { - filesystem_sector_order: true + filesystem_track_order: true } filesystem { @@ -179,11 +180,11 @@ option_group { config { image_reader { - filesystem_sector_order: true + filesystem_track_order: true } image_writer { - filesystem_sector_order: true + filesystem_track_order: true } filesystem { @@ -221,11 +222,11 @@ option_group { config { image_reader { - filesystem_sector_order: true + filesystem_track_order: true } image_writer { - filesystem_sector_order: true + filesystem_track_order: true } filesystem { diff --git a/src/formats/micropolis.textpb b/src/formats/micropolis.textpb index dd445c62..268b0cd4 100644 --- a/src/formats/micropolis.textpb +++ b/src/formats/micropolis.textpb @@ -124,7 +124,8 @@ option { layoutdata { sector_size: 275 } - order: HCS + filesystem_track_order: HCS + image_track_order: HCS } decoder { diff --git a/src/formats/psos.textpb b/src/formats/psos.textpb index 4bf9afaa..19668efa 100644 --- a/src/formats/psos.textpb +++ b/src/formats/psos.textpb @@ -38,7 +38,8 @@ layout { format_type: FORMATTYPE_80TRACK tracks: 80 sides: 2 - order: HCS + image_track_order: HCS + filesystem_track_order: HCS swap_sides: true layoutdata { sector_size: 1024