1 // license:BSD-3-Clause
2 // copyright-holders:Dirk Best, Nigel Barnes
3 /***************************************************************************
4 
5     Acorn - BBC Micro, Electron, Archimedes
6 
7     Disk image formats
8 
9 ***************************************************************************/
10 #ifndef MAME_FORMATS_ACORN_DSK_H
11 #define MAME_FORMATS_ACORN_DSK_H
12 
13 #pragma once
14 
15 #include "flopimg.h"
16 #include "wd177x_dsk.h"
17 
18 class acorn_ssd_format : public wd177x_format
19 {
20 public:
21 	acorn_ssd_format();
22 
23 	virtual int find_size(io_generic *io, uint32_t form_factor) override;
24 	virtual int identify(io_generic *io, uint32_t form_factor) override;
25 	virtual int get_image_offset(const format &f, int head, int track) override;
26 	virtual const char *name() const override;
27 	virtual const char *description() const override;
28 	virtual const char *extensions() const override;
29 
30 private:
31 	static const format formats[];
32 };
33 
34 class acorn_dsd_format : public wd177x_format
35 {
36 public:
37 	acorn_dsd_format();
38 
39 	virtual int find_size(io_generic *io, uint32_t form_factor) override;
40 	virtual int identify(io_generic *io, uint32_t form_factor) override;
41 	virtual int get_image_offset(const format &f, int head, int track) override;
42 	virtual const char *name() const override;
43 	virtual const char *description() const override;
44 	virtual const char *extensions() const override;
45 
46 private:
47 	static const format formats[];
48 };
49 
50 class opus_ddos_format : public wd177x_format
51 {
52 public:
53 	opus_ddos_format();
54 
55 	virtual int find_size(io_generic *io, uint32_t form_factor) override;
56 	virtual int identify(io_generic *io, uint32_t form_factor) override;
57 	virtual int get_image_offset(const format &f, int head, int track) override;
58 	virtual const char *name() const override;
59 	virtual const char *description() const override;
60 	virtual const char *extensions() const override;
61 
62 private:
63 	static const format formats[];
64 };
65 
66 class acorn_adfs_old_format : public wd177x_format
67 {
68 public:
69 	acorn_adfs_old_format();
70 
71 	virtual int find_size(io_generic *io, uint32_t form_factor) override;
72 	virtual int identify(io_generic *io, uint32_t form_factor) override;
73 	virtual int get_image_offset(const format &f, int head, int track) override;
74 	virtual const char *name() const override;
75 	virtual const char *description() const override;
76 	virtual const char *extensions() const override;
77 
78 private:
79 	static const format formats[];
80 };
81 
82 class acorn_adfs_new_format : public wd177x_format
83 {
84 public:
85 	acorn_adfs_new_format();
86 
87 	virtual int find_size(io_generic *io, uint32_t form_factor) override;
88 	virtual int identify(io_generic *io, uint32_t form_factor) override;
89 	virtual int get_image_offset(const format &f, int head, int track) override;
90 	virtual const char *name() const override;
91 	virtual const char *description() const override;
92 	virtual const char *extensions() const override;
93 
94 private:
95 	static const format formats[];
96 };
97 
98 class acorn_dos_format : public wd177x_format
99 {
100 public:
101 	acorn_dos_format();
102 
103 	virtual int find_size(io_generic *io, uint32_t form_factor) override;
104 	virtual int identify(io_generic *io, uint32_t form_factor) override;
105 	virtual int get_image_offset(const format &f, int head, int track) override;
106 	virtual const char *name() const override;
107 	virtual const char *description() const override;
108 	virtual const char *extensions() const override;
109 
110 private:
111 	static const format formats[];
112 };
113 
114 class opus_ddcpm_format : public floppy_image_format_t
115 {
116 public:
117 	opus_ddcpm_format();
118 
119 	virtual int identify(io_generic *io, uint32_t form_factor) override;
120 	virtual bool load(io_generic *io, uint32_t form_factor, floppy_image *image) override;
121 	virtual bool save(io_generic *io, floppy_image *image) override;
122 
123 	virtual const char *name() const override;
124 	virtual const char *description() const override;
125 	virtual const char *extensions() const override;
126 	virtual bool supports_save() const override;
127 };
128 
129 
130 extern const floppy_format_type FLOPPY_ACORN_SSD_FORMAT;
131 extern const floppy_format_type FLOPPY_ACORN_DSD_FORMAT;
132 extern const floppy_format_type FLOPPY_ACORN_DOS_FORMAT;
133 extern const floppy_format_type FLOPPY_ACORN_ADFS_OLD_FORMAT;
134 extern const floppy_format_type FLOPPY_ACORN_ADFS_NEW_FORMAT;
135 extern const floppy_format_type FLOPPY_OPUS_DDOS_FORMAT;
136 extern const floppy_format_type FLOPPY_OPUS_DDCPM_FORMAT;
137 
138 #endif // MAME_FORMATS_ACORN_DSK_H
139