summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats')
-rw-r--r--src/lib/formats/fl1_dsk.cpp59
-rw-r--r--src/lib/formats/fl1_dsk.h32
-rw-r--r--src/lib/formats/sdd_dsk.cpp59
-rw-r--r--src/lib/formats/sdd_dsk.h32
4 files changed, 182 insertions, 0 deletions
diff --git a/src/lib/formats/fl1_dsk.cpp b/src/lib/formats/fl1_dsk.cpp
new file mode 100644
index 00000000000..89419233056
--- /dev/null
+++ b/src/lib/formats/fl1_dsk.cpp
@@ -0,0 +1,59 @@
+// license:BSD-3-Clause
+// copyright-holders:MetalliC
+/*********************************************************************
+
+ formats/fl1_dsk.c
+
+ FloppyOne DOS disk images
+
+*********************************************************************/
+
+#include <cassert>
+
+#include "formats/fl1_dsk.h"
+
+fl1_format::fl1_format() : wd177x_format(formats)
+{
+}
+
+const char *fl1_format::name() const
+{
+ return "fl1";
+}
+
+const char *fl1_format::description() const
+{
+ return "FloppyOne floppy disk image";
+}
+
+const char *fl1_format::extensions() const
+{
+ return "fl1";
+}
+
+int fl1_format::get_image_offset(const format &f, int head, int track)
+{
+ return (f.track_count * head + track) * compute_track_size(f);
+}
+
+const fl1_format::format fl1_format::formats[] = {
+ { // 5"25 800K 80 track double sided double density
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
+ 2000, 5, 80, 2, 1024, {}, 0, {}, 80, 22, 54
+ },
+ { // 5"25 400K 80 track single sided double density
+ floppy_image::FF_525, floppy_image::SSQD, floppy_image::MFM,
+ 2000, 5, 80, 1, 1024, {}, 0, {}, 80, 22, 54
+ },
+ { // 3'5 800K 80 track double sided double density
+ floppy_image::FF_35, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 5, 80, 2, 1024, {}, 0, {}, 80, 22, 54
+ },
+ { // 3'5 400K 80 track single sided double density
+ floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
+ 2000, 5, 80, 1, 1024, {}, 0, {}, 80, 22, 54
+ },
+ {}
+};
+
+const floppy_format_type FLOPPY_FL1_FORMAT = &floppy_image_format_creator<fl1_format>;
diff --git a/src/lib/formats/fl1_dsk.h b/src/lib/formats/fl1_dsk.h
new file mode 100644
index 00000000000..82ea70329af
--- /dev/null
+++ b/src/lib/formats/fl1_dsk.h
@@ -0,0 +1,32 @@
+// license:BSD-3-Clause
+// copyright-holders:MetalliC
+/*********************************************************************
+
+ formats/fl1_dsk.h
+
+ FloppyOne DOS disk images
+
+*********************************************************************/
+#ifndef MAME_FORMATS_FL1_DSK_H
+#define MAME_FORMATS_FL1_DSK_H
+
+#pragma once
+
+#include "wd177x_dsk.h"
+
+class fl1_format : public wd177x_format {
+public:
+ fl1_format();
+
+ virtual const char *name() const override;
+ virtual const char *description() const override;
+ virtual const char *extensions() const override;
+
+private:
+ static const format formats[];
+ virtual int get_image_offset(const format &f, int head, int track) override;
+};
+
+extern const floppy_format_type FLOPPY_FL1_FORMAT;
+
+#endif // MAME_FORMATS_FL1_DSK_H
diff --git a/src/lib/formats/sdd_dsk.cpp b/src/lib/formats/sdd_dsk.cpp
new file mode 100644
index 00000000000..5159cd6e2bc
--- /dev/null
+++ b/src/lib/formats/sdd_dsk.cpp
@@ -0,0 +1,59 @@
+// license:BSD-3-Clause
+// copyright-holders:MetalliC
+/*********************************************************************
+
+ formats/sdd_dsk.c
+
+ Speccy-DOS SDD disk images
+
+*********************************************************************/
+
+#include <cassert>
+
+#include "formats/sdd_dsk.h"
+
+sdd_format::sdd_format() : wd177x_format(formats)
+{
+}
+
+const char *sdd_format::name() const
+{
+ return "sdd";
+}
+
+const char *sdd_format::description() const
+{
+ return "SDD floppy disk image";
+}
+
+const char *sdd_format::extensions() const
+{
+ return "sdd";
+}
+
+int sdd_format::get_image_offset(const format &f, int head, int track)
+{
+ return (f.track_count * head + track) * compute_track_size(f);
+}
+
+const sdd_format::format sdd_format::formats[] = {
+ { // 5"25 640K 80 track double sided double density
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
+ 2000, 16, 80, 2, 256, {}, -1, {1,12,7,2,13,8,3,14,9,4,15,10,5,16,11,6}, 60, 22, 24
+ },
+ { // 5"25 400K 80 track double sided single density
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
+ 4000, 10, 80, 2, 256, {}, -1, {1,8,5,2,9,6,3,10,7,4}, 40, 11, 10
+ },
+ { // 3'5 640K 80 track double sided double density
+ floppy_image::FF_35, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 16, 80, 2, 256, {}, -1, {1,12,7,2,13,8,3,14,9,4,15,10,5,16,11,6}, 60, 22, 24
+ },
+ { // 3'5 400K 80 track double sided single density
+ floppy_image::FF_35, floppy_image::DSDD, floppy_image::FM,
+ 4000, 10, 80, 2, 256, {}, -1, {1,8,5,2,9,6,3,10,7,4}, 40, 11, 10
+ },
+ {}
+};
+
+const floppy_format_type FLOPPY_SDD_FORMAT = &floppy_image_format_creator<sdd_format>;
diff --git a/src/lib/formats/sdd_dsk.h b/src/lib/formats/sdd_dsk.h
new file mode 100644
index 00000000000..bcead8007d4
--- /dev/null
+++ b/src/lib/formats/sdd_dsk.h
@@ -0,0 +1,32 @@
+// license:BSD-3-Clause
+// copyright-holders:MetalliC
+/*********************************************************************
+
+ formats/sdd_dsk.h
+
+ Speccy-DOS SDD disk images
+
+*********************************************************************/
+#ifndef MAME_FORMATS_SDD_DSK_H
+#define MAME_FORMATS_SDD_DSK_H
+
+#pragma once
+
+#include "wd177x_dsk.h"
+
+class sdd_format : public wd177x_format {
+public:
+ sdd_format();
+
+ virtual const char *name() const override;
+ virtual const char *description() const override;
+ virtual const char *extensions() const override;
+
+private:
+ static const format formats[];
+ virtual int get_image_offset(const format &f, int head, int track) override;
+};
+
+extern const floppy_format_type FLOPPY_SDD_FORMAT;
+
+#endif // MAME_FORMATS_SDD_DSK_H