diff --git a/src/lib/formats/abc800i_dsk.cpp b/src/lib/formats/abc800i_dsk.cpp index c976d7867cf..a865cc175a4 100644 --- a/src/lib/formats/abc800i_dsk.cpp +++ b/src/lib/formats/abc800i_dsk.cpp @@ -9,6 +9,7 @@ *********************************************************************/ #include "formats/abc800i_dsk.h" +#include "ioprocs.h" abc800i_format::abc800i_format() : wd177x_format(formats) { @@ -83,6 +84,19 @@ const abc800i_format::format abc800i_format::formats[] = { const abc800i_format FLOPPY_ABC800I_FORMAT; +int abc800i_format::identify(util::random_read &io, uint32_t form_factor, const std::vector &variants) const +{ + uint8_t h[1]; + size_t actual; + io.read_at(0x810, h, 1, actual); + + // start of directory + if (h[0] == 0x03) + return FIFID_SIGN; + + return 0; +} + void abc800i_format::build_sector_description(const format &f, uint8_t *sectdata, desc_s *sectors, int track, int head) const { if(f.sector_base_id == -1) { diff --git a/src/lib/formats/abc800i_dsk.h b/src/lib/formats/abc800i_dsk.h index 577573c11de..53310b6836e 100644 --- a/src/lib/formats/abc800i_dsk.h +++ b/src/lib/formats/abc800i_dsk.h @@ -23,6 +23,8 @@ public: virtual const char *description() const override; virtual const char *extensions() const override; + virtual int identify(util::random_read &io, uint32_t form_factor, const std::vector &variants) const override; + protected: virtual void build_sector_description(const format &d, uint8_t *sectdata, desc_s *sectors, int track, int head) const override;