diff options
Diffstat (limited to 'src/lib/formats/flex_dsk.h')
-rw-r--r-- | src/lib/formats/flex_dsk.h | 66 |
1 files changed, 39 insertions, 27 deletions
diff --git a/src/lib/formats/flex_dsk.h b/src/lib/formats/flex_dsk.h index 3c61bdd4243..d2a34eaf213 100644 --- a/src/lib/formats/flex_dsk.h +++ b/src/lib/formats/flex_dsk.h @@ -18,39 +18,51 @@ class flex_format : public wd177x_format public: flex_format(); - virtual const char *name() const override; - virtual const char *description() const override; - virtual const char *extensions() const override; - virtual int identify(io_generic *io, uint32_t form_factor) override; - virtual int find_size(io_generic *io, uint32_t form_factor) override; - virtual void build_sector_description(const format &f, uint8_t *sectdata, desc_s *sectors, int track, int head) const override; - virtual void check_compatibility(floppy_image *image, std::vector<int> &candidates) override; + 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 int find_size(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) const override; + virtual const wd177x_format::format &get_track_format(const format &f, int head, int track) const override; private: struct sysinfo_sector { - uint8_t unused1[16]; - uint8_t disk_name[8]; - uint8_t disk_ext[3]; - uint8_t disk_number[2]; - uint8_t fc_start_trk; - uint8_t fc_start_sec; - uint8_t fc_end_trk; - uint8_t fc_end_sec; - uint8_t free[2]; - uint8_t month; - uint8_t day; - uint8_t year; - uint8_t last_trk; - uint8_t last_sec; - uint8_t unused2[216]; - } info; - static const format formats[]; + uint8_t unused1[16]{}; + uint8_t disk_name[8]{}; + uint8_t disk_ext[3]{}; + uint8_t disk_number[2]{}; + uint8_t fc_start_trk = 0; + uint8_t fc_start_sec = 0; + uint8_t fc_end_trk = 0; + uint8_t fc_end_sec = 0; + uint8_t free[2]{}; + uint8_t month = 0; + uint8_t day = 0; + uint8_t year = 0; + uint8_t last_trk = 0; + uint8_t last_sec = 0; + uint8_t unused2[216]{}; + }; + // FLEX 1.0 SIR (System Information Record) + // Ref: https://deramp.com/downloads/swtpc/software/FLEX/FLEX%201.0%20(MiniFLEX)/Source/NEWDISK.LST + struct sysinfo_sector_flex10 + { + uint8_t unused[21]{}; + uint8_t fc_start_trk = 0; + uint8_t fc_start_sec = 0; + uint8_t fc_end_trk = 0; + uint8_t fc_end_sec = 0; + uint8_t free[2]{}; + uint8_t unused2[101]{}; + }; - uint8_t boot0_sector_id; - uint8_t boot1_sector_id; + static const format formats[]; + static const format formats_head1[]; + static const format formats_track0[]; + static const format formats_head1_track0[]; }; -extern const floppy_format_type FLOPPY_FLEX_FORMAT; +extern const flex_format FLOPPY_FLEX_FORMAT; #endif // MAME_FORMATS_FLEX_DSK_H |