Convert from LayoutData to Layout.

This commit is contained in:
David Given
2022-09-10 19:53:05 +02:00
parent 1a4caccd07
commit a6db36e7b3
13 changed files with 180 additions and 145 deletions

View File

@@ -206,9 +206,8 @@ public:
std::set<unsigned> requiredSectors(const Location& location) const override
{
auto layoutdata = Layout::getLayoutOfTrack(location.logicalTrack, location.head);
auto sectors = Layout::getSectorsInTrack(layoutdata);
return std::set<unsigned>(sectors.begin(), sectors.end());
auto trackLayout = Layout::getLayoutOfTrack(location.logicalTrack, location.head);
return std::set<unsigned>(trackLayout.logicalSectors.begin(), trackLayout.logicalSectors.end());
}
private:

View File

@@ -115,14 +115,15 @@ public:
IbmEncoderProto::TrackdataProto trackdata;
getEncoderTrackData(trackdata, location.logicalTrack, location.head);
auto layoutdata =
auto trackLayout =
Layout::getLayoutOfTrack(location.logicalTrack, location.head);
int logicalSide = location.head ^ trackdata.swap_sides();
for (int sectorId : Layout::getSectorsInTrack(layoutdata))
for (unsigned physicalSectorId : trackLayout.physicalSectors)
{
unsigned logicalSectorId = trackLayout.physicalSectorToLogical(physicalSectorId);
const auto& sector =
image.get(location.logicalTrack, logicalSide, sectorId);
image.get(location.logicalTrack, logicalSide, logicalSectorId);
if (sector)
sectors.push_back(sector);
}
@@ -137,7 +138,7 @@ public:
IbmEncoderProto::TrackdataProto trackdata;
getEncoderTrackData(trackdata, location.logicalTrack, location.head);
auto layoutdata =
auto trackLayout =
Layout::getLayoutOfTrack(location.logicalTrack, location.head);
auto writeBytes = [&](const Bytes& bytes)
@@ -174,7 +175,7 @@ public:
uint8_t sectorSize = 0;
{
int s = layoutdata.sector_size() >> 7;
int s = trackLayout.sectorSize >> 7;
while (s > 1)
{
s >>= 1;
@@ -259,7 +260,7 @@ public:
bw.write_8(damUnencoded);
Bytes truncatedData =
sectorData->data.slice(0, layoutdata.sector_size());
sectorData->data.slice(0, trackLayout.sectorSize);
bw += truncatedData;
uint16_t crc = crc16(CCITT_POLY, data);
bw.write_be16(crc);