// // DiskROM.hpp // Clock Signal // // Created by Thomas Harte on 07/01/2018. // Copyright © 2018 Thomas Harte. All rights reserved. // #ifndef DiskROM_hpp #define DiskROM_hpp #include "ROMSlotHandler.hpp" #include "../../Components/1770/1770.hpp" #include #include namespace MSX { class DiskROM: public ROMSlotHandler, public WD::WD1770 { public: DiskROM(const std::vector &rom); void write(uint16_t address, uint8_t value) override; uint8_t read(uint16_t address) override; void run_for(HalfCycles half_cycles) override; void set_disk(std::shared_ptr disk, int drive); private: const std::vector &rom_; long int controller_cycles_ = 0; int selected_drive_ = 0; int selected_head_ = 0; std::shared_ptr drives_[4]; void set_head_load_request(bool head_load); bool get_drive_is_ready(); }; } #endif /* DiskROM_hpp */