summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Nigel Barnes <Pernod70@users.noreply.github.com>2020-01-03 13:39:00 +0000
committer Nigel Barnes <Pernod70@users.noreply.github.com>2020-01-07 12:39:15 +0000
commitec751fc8c669a5725e1678a59e6b6efc91dafd6e (patch)
tree69bafa1c0c44fa0fa6a15c3bf4cbd08107c92c8b
parentcdd3c6bb01dea9ed3ca49988b732e51018e62156 (diff)
acorn_dsk: Added support for HADFS floppy images.
-rw-r--r--src/lib/formats/acorn_dsk.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/lib/formats/acorn_dsk.cpp b/src/lib/formats/acorn_dsk.cpp
index d8992b9ad5a..d0f0bdb93aa 100644
--- a/src/lib/formats/acorn_dsk.cpp
+++ b/src/lib/formats/acorn_dsk.cpp
@@ -45,6 +45,11 @@ int acorn_ssd_format::find_size(io_generic *io, uint32_t form_factor)
if (memcmp(cat, "\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd", 4) == 0 && size == (uint64_t)compute_track_size(f) * f.track_count * f.head_count)
return i;
+ // test for HADFS - test pattern at sector 70
+ io_generic_read(io, cat, 0x04610, 8);
+ if (memcmp(cat, "\x00\x28\x43\x29\x4a\x47\x48\x00", 4) == 0 && size == (uint64_t)compute_track_size(f) * f.track_count * f.head_count)
+ return i;
+
// read sector count from side 0 catalogue
io_generic_read(io, cat, 0x100, 8);
sectors0 = ((cat[6] & 3) << 8) + cat[7];
@@ -170,6 +175,11 @@ int acorn_dsd_format::find_size(io_generic *io, uint32_t form_factor)
if (memcmp(cat, "\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd", 4) == 0 && size == (uint64_t)compute_track_size(f) * f.track_count * f.head_count)
return i;
+ // test for HADFS - test pattern at sector 70
+ io_generic_read(io, cat, 0x08c10, 8);
+ if (memcmp(cat, "\x00\x28\x43\x29\x4a\x47\x48\x00", 4) == 0 && size == (uint64_t)compute_track_size(f) * f.track_count * f.head_count)
+ return i;
+
// read sector count from side 0 catalogue
io_generic_read(io, cat, 0x100, 8);
sectors0 = ((cat[6] & 3) << 8) + cat[7];