diff options
Diffstat (limited to 'src/lib/formats/ap2_dsk.h')
-rw-r--r-- | src/lib/formats/ap2_dsk.h | 138 |
1 files changed, 55 insertions, 83 deletions
diff --git a/src/lib/formats/ap2_dsk.h b/src/lib/formats/ap2_dsk.h index f70483bd072..cbeea73f2d3 100644 --- a/src/lib/formats/ap2_dsk.h +++ b/src/lib/formats/ap2_dsk.h @@ -13,7 +13,6 @@ #pragma once #include "flopimg.h" -#include "flopimg_legacy.h" /*************************************************************************** @@ -22,70 +21,73 @@ ***************************************************************************/ -#define APPLE2_NIBBLE_SIZE 416 -#define APPLE2_SMALL_NIBBLE_SIZE 374 -#define APPLE2_STD_TRACK_COUNT 35 -#define APPLE2_TRACK_COUNT 40 -#define APPLE2_SECTOR_COUNT 16 -#define APPLE2_SECTOR_SIZE 256 - - +#define APPLE2_NIBBLE_SIZE 416 +#define APPLE2_SMALL_NIBBLE_SIZE 374 +#define APPLE2_STD_TRACK_COUNT 35 +#define APPLE2_TRACK_COUNT 40 +#define APPLE2_SECTOR_COUNT 16 +#define APPLE2_SECTOR_SIZE 256 /**************************************************************************/ - -LEGACY_FLOPPY_OPTIONS_EXTERN(apple2); - -// new style code - class a2_16sect_format : public floppy_image_format_t { public: - a2_16sect_format(); + a2_16sect_format(bool prodos_order); - virtual int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) override; - virtual bool load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override; - virtual bool save(util::random_read_write &io, const std::vector<uint32_t> &variants, floppy_image *image) 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 const char *name() const override; - virtual const char *description() const override; - virtual const char *extensions() const override; - virtual bool supports_save() const override; + virtual bool supports_save() const noexcept override; private: - static const desc_e mac_gcr[]; + const bool m_prodos_order; - uint8_t gb(const std::vector<bool> &buf, int &pos, int &wrap); - void update_chk(const uint8_t *data, int size, uint32_t &chk); + static uint8_t gb(const std::vector<bool> &buf, int &pos, int &wrap); +}; - bool m_prodos_order; +class a2_16sect_dos_format : public a2_16sect_format +{ +public: + a2_16sect_dos_format(); + virtual const char *name() const noexcept override; + virtual const char *description() const noexcept override; + virtual const char *extensions() const noexcept override; +}; - int m_tracks; +class a2_16sect_prodos_format : public a2_16sect_format +{ +public: + a2_16sect_prodos_format(); + virtual const char *name() const noexcept override; + virtual const char *description() const noexcept override; + virtual const char *extensions() const noexcept override; }; -extern const floppy_format_type FLOPPY_A216S_FORMAT; +extern const a2_16sect_dos_format FLOPPY_A216S_DOS_FORMAT; +extern const a2_16sect_prodos_format FLOPPY_A216S_PRODOS_FORMAT; class a2_rwts18_format : public floppy_image_format_t { public: a2_rwts18_format(); - virtual int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) override; - virtual bool load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override; - virtual bool save(util::random_read_write &io, const std::vector<uint32_t> &variants, floppy_image *image) 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 const char *name() const override; - virtual const char *description() const override; - virtual const char *extensions() const override; - virtual bool supports_save() const override; + virtual const char *name() const noexcept override; + virtual const char *description() const noexcept override; + virtual const char *extensions() const noexcept override; + virtual bool supports_save() const noexcept override; private: static const desc_e mac_gcr[]; - uint8_t gb(const std::vector<bool> &buf, int &pos, int &wrap); - void update_chk(const uint8_t *data, int size, uint32_t &chk); + static uint8_t gb(const std::vector<bool> &buf, int &pos, int &wrap); }; -extern const floppy_format_type FLOPPY_RWTS18_FORMAT; +extern const a2_rwts18_format FLOPPY_RWTS18_FORMAT; class a2_edd_format : public floppy_image_format_t @@ -93,62 +95,32 @@ class a2_edd_format : public floppy_image_format_t public: a2_edd_format(); - virtual int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) override; - virtual bool load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override; - virtual bool supports_save() const 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 supports_save() const noexcept override; - virtual const char *name() const override; - virtual const char *description() const override; - virtual const char *extensions() const override; + virtual const char *name() const noexcept override; + virtual const char *description() const noexcept override; + virtual const char *extensions() const noexcept override; private: static uint8_t pick(const uint8_t *data, int pos); }; -extern const floppy_format_type FLOPPY_EDD_FORMAT; - -class a2_woz_format : public floppy_image_format_t -{ -public: - a2_woz_format(); - - virtual int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) override; - virtual bool load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override; - virtual bool save(util::random_read_write &io, const std::vector<uint32_t> &variants, floppy_image *image) override; - virtual bool supports_save() const override; - - virtual const char *name() const override; - virtual const char *description() const override; - virtual const char *extensions() const override; - -private: - static const uint8_t signature[8]; - static const uint8_t signature2[8]; - - static uint32_t r32(const std::vector<uint8_t> &data, uint32_t offset); - static uint16_t r16(const std::vector<uint8_t> &data, uint32_t offset); - static uint8_t r8(const std::vector<uint8_t> &data, uint32_t offset); - static void w32(std::vector<uint8_t> &data, int offset, uint32_t value); - static void w16(std::vector<uint8_t> &data, int offset, uint16_t value); - static uint32_t crc32r(const uint8_t *data, uint32_t size); - static uint32_t find_tag(const std::vector<uint8_t> &data, uint32_t tag); -}; - -extern const floppy_format_type FLOPPY_WOZ_FORMAT; - +extern const a2_edd_format FLOPPY_EDD_FORMAT; class a2_nib_format : public floppy_image_format_t { public: a2_nib_format(); - virtual int identify(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants) override; - virtual bool load(util::random_read &io, uint32_t form_factor, const std::vector<uint32_t> &variants, floppy_image *image) override; - virtual bool supports_save() const 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 supports_save() const noexcept override; - virtual const char *name() const override; - virtual const char *description() const override; - virtual const char *extensions() const override; + virtual const char *name() const noexcept override; + virtual const char *description() const noexcept override; + virtual const char *extensions() const noexcept override; private: @@ -157,9 +129,9 @@ private: static constexpr auto expected_size_35t = 35 * nibbles_per_track; static constexpr auto expected_size_40t = 40 * nibbles_per_track; - std::vector<uint32_t> generate_levels_from_nibbles(const std::vector<uint8_t>& nibbles); + static std::vector<uint32_t> generate_levels_from_nibbles(const std::vector<uint8_t>& nibbles); }; -extern const floppy_format_type FLOPPY_NIB_FORMAT; +extern const a2_nib_format FLOPPY_NIB_FORMAT; #endif // MAME_FORMATS_AP2_DSK_H |