summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/wd177x_dsk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/wd177x_dsk.cpp')
-rw-r--r--src/lib/formats/wd177x_dsk.cpp41
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);
}
}