diff options
Diffstat (limited to 'src/lib/formats/wd177x_dsk.cpp')
-rw-r--r-- | src/lib/formats/wd177x_dsk.cpp | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/src/lib/formats/wd177x_dsk.cpp b/src/lib/formats/wd177x_dsk.cpp index c4c98f54d32..5a83da6a473 100644 --- a/src/lib/formats/wd177x_dsk.cpp +++ b/src/lib/formats/wd177x_dsk.cpp @@ -422,26 +422,23 @@ void wd177x_format::check_compatibility(floppy_image *image, std::vector<int> &c const format &f = formats[candidates[i]]; for(int track=0; track < f.track_count; track++) { for(int head=0; head < f.head_count; head++) { - uint8_t bitstream[500000/8]; - uint8_t sectdata[50000]; - desc_xs sectors[256]; - int track_size; const format &tf = get_track_format(f, head, track); - generate_bitstream_from_track(track, head, tf.cell_size, bitstream, track_size, image); + auto bitstream = generate_bitstream_from_track(track, head, tf.cell_size, image); + std::vector<std::vector<uint8_t>> sectors; switch (tf.encoding) { case floppy_image::FM: - extract_sectors_from_bitstream_fm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata)); + sectors = extract_sectors_from_bitstream_fm_pc(bitstream); break; case floppy_image::MFM: - extract_sectors_from_bitstream_mfm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata)); + sectors = extract_sectors_from_bitstream_mfm_pc(bitstream); break; } int ns = 0; for(int j=0; j<256; j++) - if(sectors[j].data) { + if(!sectors[j].empty()) { int sid; if(tf.sector_base_id == -1) { for(sid=0; sid < tf.sector_count; sid++) @@ -452,10 +449,10 @@ void wd177x_format::check_compatibility(floppy_image *image, std::vector<int> &c if(sid < 0 || sid > tf.sector_count) goto fail; if(tf.sector_base_size) { - if(sectors[j].size != tf.sector_base_size) + if(sectors[j].size() != tf.sector_base_size) goto fail; } else { - if(sectors[j].size != tf.per_sector_size[sid]) + if(sectors[j].size() != tf.per_sector_size[sid]) goto fail; } ns++; @@ -479,33 +476,29 @@ void wd177x_format::check_compatibility(floppy_image *image, std::vector<int> &c // A track specific format is to be supplied. void wd177x_format::extract_sectors(floppy_image *image, const format &f, desc_s *sdesc, int track, int head) { - uint8_t bitstream[500000/8]; - uint8_t sectdata[50000]; - desc_xs sectors[256]; - int track_size; - // Extract the sectors - generate_bitstream_from_track(track, head, f.cell_size, bitstream, track_size, image); + auto bitstream = generate_bitstream_from_track(track, head, f.cell_size, image); + std::vector<std::vector<uint8_t>> sectors; switch (f.encoding) { case floppy_image::FM: - extract_sectors_from_bitstream_fm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata)); + sectors = extract_sectors_from_bitstream_fm_pc(bitstream); break; case floppy_image::MFM: - extract_sectors_from_bitstream_mfm_pc(bitstream, track_size, sectors, sectdata, sizeof(sectdata)); + sectors = extract_sectors_from_bitstream_mfm_pc(bitstream); break; } for(int i=0; i<f.sector_count; i++) { desc_s &ds = sdesc[i]; - desc_xs &xs = sectors[ds.sector_id]; - if(!xs.data) + const auto &data = sectors[ds.sector_id]; + if(data.empty()) memset((void *)ds.data, 0, ds.size); - else if(xs.size < ds.size) { - memcpy((void *)ds.data, xs.data, xs.size); - memset((uint8_t *)ds.data + xs.size, 0, xs.size - ds.size); + else if(data.size() < ds.size) { + memcpy((void *)ds.data, data.data(), data.size()); + memset((uint8_t *)ds.data + data.size(), 0, data.size() - ds.size); } else - memcpy((void *)ds.data, xs.data, ds.size); + memcpy((void *)ds.data, data.data(), ds.size); } } |