summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/nabupc_dsk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/nabupc_dsk.h')
-rw-r--r--src/lib/formats/nabupc_dsk.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/lib/formats/nabupc_dsk.h b/src/lib/formats/nabupc_dsk.h
new file mode 100644
index 00000000000..bedfe2a2e7b
--- /dev/null
+++ b/src/lib/formats/nabupc_dsk.h
@@ -0,0 +1,53 @@
+// license:BSD-3-Clause
+// copyright-holders:Brian Johnson
+/*********************************************************************
+
+ formats/nabupc_dsk.cpp
+
+ NABU PC floppy-disk images
+
+*********************************************************************/
+#ifndef MAME_FORMATS_NABUPC_DSK_H
+#define MAME_FORMATS_NABUPC_DSK_H
+
+#pragma once
+
+#include "flopimg.h"
+
+class nabupc_format : public floppy_image_format_t {
+public:
+ struct format {
+ uint32_t form_factor; // See floppy_image for possible values
+ uint32_t variant; // See floppy_image for possible values
+ int track_count;
+ int head_count;
+ int gap_1;
+ int gap_2;
+ int gap_3;
+ uint8_t dpb[18];
+ };
+
+ nabupc_format();
+
+ virtual const char *name() const noexcept override;
+ virtual const char *description() const noexcept override;
+ virtual const char *extensions() const noexcept override;
+
+ virtual int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) const override;
+ virtual bool load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image &image) const override;
+ virtual bool save(util::random_read_write &io, const std::vector<uint32_t> &variants, const floppy_image &image) const override;
+
+ virtual bool supports_save() const noexcept override;
+
+protected:
+ static void build_nabu_track_mfm(int track, int head, floppy_image &image, int cell_count, int sector_count, const desc_pc_sector *sects, int gap_3, int gap_1, int gap_2, const uint8_t *dpb);
+ int find_format(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) const;
+private:
+ static constexpr int sector_count = 5;
+ static constexpr int sector_size = 1024;
+ static const format formats[];
+};
+
+extern const nabupc_format FLOPPY_NABUPC_FORMAT;
+
+#endif // MAME_FORMATS_NABUPC_DSK_H