summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib
diff options
context:
space:
mode:
author tim lindner <tlindner@macmess.org>2021-06-05 22:44:28 -0700
committer tim lindner <tlindner@macmess.org>2021-06-05 22:44:28 -0700
commit48d511a17019a061bc588df6acbd8d3050c3d7db (patch)
tree85f914d1f744a4185cf57275b1ac455a0c42d052 /src/lib
parent7cbdbe2c2a71c90b98e9daf1f658926e40b813fb (diff)
wd177x: test to make sure the floppy drive has room for all of the tracks
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/formats/wd177x_dsk.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/lib/formats/wd177x_dsk.cpp b/src/lib/formats/wd177x_dsk.cpp
index 5dbc140a80a..bb9cc1da3a1 100644
--- a/src/lib/formats/wd177x_dsk.cpp
+++ b/src/lib/formats/wd177x_dsk.cpp
@@ -204,6 +204,18 @@ bool wd177x_format::load(io_generic *io, uint32_t form_factor, const std::vector
return false;
const format &f = formats[type];
+ int max_tracks, max_heads;
+ image->get_maximal_geometry(max_tracks, max_heads);
+
+ if(f.track_count > max_tracks) {
+ osd_printf_error("wd177x_format: Number of tracks in image file too high for floppy drive (%d > %d)\n", f.track_count, max_tracks);
+ return false;
+ }
+
+ if(f.head_count > max_heads) {
+ osd_printf_error("wd177x_format: Number of sides in image file too high for floppy drive (%d > %d)\n", f.track_count, max_heads);
+ return false;
+ }
for(int track=0; track < f.track_count; track++)
for(int head=0; head < f.head_count; head++) {