// // HFE.hpp // Clock Signal // // Created by Thomas Harte on 17/08/2017. // Copyright © 2017 Thomas Harte. All rights reserved. // #ifndef HFE_hpp #define HFE_hpp #include "../DiskImage.hpp" #include "../../../FileHolder.hpp" #include namespace Storage { namespace Disk { /*! Provides a @c DiskImage containing an HFE — a bit stream representation of a floppy. */ class HFE: public DiskImage { public: /*! Construct an @c HFE containing content from the file with name @c file_name. @throws ErrorNotHFE if the file doesn't appear to contain a .SSD format image. */ HFE(const std::string &file_name); ~HFE(); enum { ErrorNotHFE }; // implemented to satisfy @c Disk int get_head_position_count() override; int get_head_count() override; bool get_is_read_only() override; void set_tracks(const std::map> &tracks) override; std::shared_ptr get_track_at_position(Track::Address address) override; private: Storage::FileHolder file_; uint16_t seek_track(Track::Address address); int head_count_; int track_count_; long track_list_offset_; }; } } #endif /* HFE_hpp */