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);
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);
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;
Represents a clock with a variable frequency.
Every class that wants to get scheduled at some point must inherit from this class.
uint8_t peekStatus() const
void writeControlReg0(uint8_t value, EmuTime::param time)
void writeDataPort(uint8_t value, EmuTime::param time)
void serialize(Archive &ar, unsigned version)
void writeControlReg1(uint8_t value, EmuTime::param time)
uint8_t peekDataPort(EmuTime::param time) const
void reset(EmuTime::param time)
uint8_t readDataPort(EmuTime::param time)
bool peekDiskChanged(unsigned driveNum) const
uint8_t readStatus(EmuTime::param time)
TC8566AF(Scheduler &scheduler, std::span< std::unique_ptr< DiskDrive >, 4 >, CliComm &cliComm, EmuTime::param time)
bool diskChanged(unsigned driveNum)
@ CMD_SENSE_DEVICE_STATUS
@ CMD_SENSE_INTERRUPT_STATUS
This file implemented 3 utility functions:
SERIALIZE_CLASS_VERSION(CassettePlayer, 2)