diff --git a/arch/amiga/decoder.cc b/arch/amiga/decoder.cc index 8fbd03de..10e45cd1 100644 --- a/arch/amiga/decoder.cc +++ b/arch/amiga/decoder.cc @@ -32,6 +32,8 @@ AbstractDecoder::RecordType AmigaDecoder::advanceToNextRecord() void AmigaDecoder::decodeSectorRecord() { const auto& rawbits = readRawBits(AMIGA_RECORD_SIZE*16); + if (rawbits.size() < (AMIGA_RECORD_SIZE*16)) + return; const auto& rawbytes = toBytes(rawbits).slice(0, AMIGA_RECORD_SIZE*2); const auto& bytes = decodeFmMfm(rawbits).slice(0, AMIGA_RECORD_SIZE); diff --git a/lib/reader.cc b/lib/reader.cc index 59980270..e16a52d9 100644 --- a/lib/reader.cc +++ b/lib/reader.cc @@ -261,13 +261,13 @@ void readDiskCommand(AbstractDecoder& decoder) if (dumpSectors) { std::cout << "\nDecoded sectors follow:\n\n"; - for (auto& i : readSectors) + for (auto& sector : track->sectors) { - auto& sector = i.second; - std::cout << fmt::format("{}.{:02}.{:02}: I+{:.2f}us with {:.2f}us clock\n", - sector->logicalTrack, sector->logicalSide, sector->logicalSector, - sector->position.ns() / 1000.0, sector->clock / 1000.0); - hexdump(std::cout, sector->data); + std::cout << fmt::format("{}.{:02}.{:02}: I+{:.2f}us with {:.2f}us clock: status {}\n", + sector.logicalTrack, sector.logicalSide, sector.logicalSector, + sector.position.ns() / 1000.0, sector.clock / 1000.0, + sector.status); + hexdump(std::cout, sector.data); std::cout << std::endl; } }