summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/g64_dsk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/g64_dsk.cpp')
-rw-r--r--src/lib/formats/g64_dsk.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/lib/formats/g64_dsk.cpp b/src/lib/formats/g64_dsk.cpp
index fc75b1a6528..685b16c42ca 100644
--- a/src/lib/formats/g64_dsk.cpp
+++ b/src/lib/formats/g64_dsk.cpp
@@ -12,8 +12,6 @@
#include "formats/g64_dsk.h"
-#include "emucore.h" // emu_fatalerror
-
#define G64_FORMAT_HEADER "GCR-1541"
@@ -34,9 +32,9 @@ int g64_format::identify(io_generic *io, uint32_t form_factor)
char h[8];
io_generic_read(io, h, 0, 8);
- if (!memcmp(h, G64_FORMAT_HEADER, 8)) {
+ if (!memcmp(h, G64_FORMAT_HEADER, 8))
return 100;
- }
+
return 0;
}
@@ -46,8 +44,10 @@ bool g64_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
std::vector<uint8_t> img(size);
io_generic_read(io, &img[0], 0, size);
- if (img[POS_VERSION]) {
- throw emu_fatalerror("g64_format: Unsupported version %u", img[POS_VERSION]);
+ if (img[POS_VERSION])
+ {
+ osd_printf_error("g64_format: Unsupported version %u\n", img[POS_VERSION]);
+ return false;
}
int track_count = img[POS_TRACK_COUNT];
@@ -68,12 +68,18 @@ bool g64_format::load(io_generic *io, uint32_t form_factor, floppy_image *image)
continue;
if (dpos > size)
- throw emu_fatalerror("g64_format: Track %u offset %06x out of bounds", track, dpos);
+ {
+ osd_printf_error("g64_format: Track %u offset %06x out of bounds\n", track, dpos);
+ return false;
+ }
uint32_t speed_zone = pick_integer_le(&img[0], spos, 4);
if (speed_zone > 3)
- throw emu_fatalerror("g64_format: Unsupported variable speed zones on track %d", track);
+ {
+ osd_printf_error("g64_format: Unsupported variable speed zones on track %d\n", track);
+ return false;
+ }
uint16_t track_bytes = pick_integer_le(&img[0], dpos, 2);
int track_size = track_bytes * 8;
@@ -137,8 +143,10 @@ bool g64_format::save(io_generic *io, floppy_image *image)
if ((speed_zone = generate_bitstream(track, head, 3, &trackbuf[0], track_size, image)) == -1)
if ((speed_zone = generate_bitstream(track, head, 2, &trackbuf[0], track_size, image)) == -1)
if ((speed_zone = generate_bitstream(track, head, 1, &trackbuf[0], track_size, image)) == -1)
- if ((speed_zone = generate_bitstream(track, head, 0, &trackbuf[0], track_size, image)) == -1)
- throw emu_fatalerror("g64_format: Cannot determine speed zone for track %u", track);
+ if ((speed_zone = generate_bitstream(track, head, 0, &trackbuf[0], track_size, image)) == -1) {
+ osd_printf_error("g64_format: Cannot determine speed zone for track %u\n", track);
+ return false;
+ }
LOG_FORMATS("head %u track %u size %u cell %u\n", head, track, track_size, c1541_cell_size[speed_zone]);