25 void reset(EmuTime::param time);
26 [[nodiscard]] uint8_t
peekDataPort(EmuTime::param time)
const;
36 template<
typename Archive>
37 void serialize(Archive& ar,
unsigned version);
72 void executeUntil(EmuTime::param time)
override;
74 [[nodiscard]] uint8_t executionPhasePeek(EmuTime::param time)
const;
75 uint8_t executionPhaseRead(EmuTime::param time);
76 [[nodiscard]] uint8_t resultsPhasePeek()
const;
77 uint8_t resultsPhaseRead(EmuTime::param time);
78 void idlePhaseWrite(uint8_t value, EmuTime::param time);
79 void commandPhase1(uint8_t value);
80 void commandPhaseWrite(uint8_t value, EmuTime::param time);
82 void executionPhaseWrite(uint8_t value, EmuTime::param time);
83 void resultPhase(
bool readId =
false);
84 void endCommand(EmuTime::param time);
86 [[nodiscard]]
bool isHeadLoaded(EmuTime::param time)
const;
88 [[nodiscard]]
EmuDuration getHeadUnloadDelay()
const;
91 [[nodiscard]] EmuTime locateSector(EmuTime::param time,
bool readId);
92 void startReadWriteSector(EmuTime::param time);
94 void initTrackHeader(EmuTime::param time);
96 void setDrqRate(
unsigned trackLength);
100 std::array<DiskDrive*, 4> drive;
105 EmuTime headUnloadTime = EmuTime::zero();
113 unsigned dataAvailable = 0;
125 uint8_t cylinderNumber;
127 uint8_t sectorNumber;
130 uint8_t sectorsPerCylinder;
133 std::array<uint8_t, 2> specifyData;
136 EmuTime time = EmuTime::zero();
137 uint8_t currentTrack = 0;
138 uint8_t seekValue = 0;
141 template<
typename Archive>
142 void serialize(Archive& ar,
unsigned version);
144 std::array<SeekInfo, 4> seekInfo;