diff options
Diffstat (limited to 'src/lib/formats/lw30_dsk.cpp')
-rw-r--r-- | src/lib/formats/lw30_dsk.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/lib/formats/lw30_dsk.cpp b/src/lib/formats/lw30_dsk.cpp index dd5eef5da5f..dd1536755d5 100644 --- a/src/lib/formats/lw30_dsk.cpp +++ b/src/lib/formats/lw30_dsk.cpp @@ -138,9 +138,11 @@ static constexpr int raw_track_size = 2/*0xaa*/ + 48/*0xaa*/ + SECTORS_PER_TRACK int lw30_format::identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) const { uint64_t size = 0; - io.length(size); + if(io.length(size)) + return 0; + if(size == TRACKS_PER_DISK * SECTORS_PER_TRACK * SECTOR_SIZE) - return 50; // identified by size + return FIFID_SIZE; // identified by size return 0; } @@ -150,9 +152,8 @@ bool lw30_format::load(util::random_read &io, uint32_t form_factor, const std::v uint8_t trackdata[SECTORS_PER_TRACK * SECTOR_SIZE], rawdata[CELLS_PER_REV / 8]; memset(rawdata, 0xaa, sizeof(rawdata)); for(int track = 0; track < TRACKS_PER_DISK; track++) { - size_t actual{}; - io.read_at(track * SECTORS_PER_TRACK * SECTOR_SIZE, trackdata, SECTORS_PER_TRACK * SECTOR_SIZE, actual); - if(actual != SECTORS_PER_TRACK * SECTOR_SIZE) + auto const [err, actual] = read_at(io, track * SECTORS_PER_TRACK * SECTOR_SIZE, trackdata, SECTORS_PER_TRACK * SECTOR_SIZE); + if(err || (actual != SECTORS_PER_TRACK * SECTOR_SIZE)) return false; size_t i = 0; for(int x = 0; x < 2 + 48; x++) |