openMSX
|
#include <TC8566AF.hh>
Public Types | |
enum | Command { CMD_UNKNOWN , CMD_READ_DATA , CMD_WRITE_DATA , CMD_WRITE_DELETED_DATA , CMD_READ_DELETED_DATA , CMD_READ_DIAGNOSTIC , CMD_READ_ID , CMD_FORMAT , CMD_SCAN_EQUAL , CMD_SCAN_LOW_OR_EQUAL , CMD_SCAN_HIGH_OR_EQUAL , CMD_SEEK , CMD_RECALIBRATE , CMD_SENSE_INTERRUPT_STATUS , CMD_SPECIFY , CMD_SENSE_DEVICE_STATUS } |
enum | Phase { PHASE_IDLE , PHASE_COMMAND , PHASE_DATA_TRANSFER , PHASE_RESULT } |
enum | SeekState { SEEK_IDLE , SEEK_SEEK , SEEK_RECALIBRATE } |
Public Member Functions | |
TC8566AF (Scheduler &scheduler, std::span< std::unique_ptr< DiskDrive >, 4 >, MSXCliComm &cliComm, EmuTime::param time) | |
void | reset (EmuTime::param time) |
uint8_t | peekDataPort (EmuTime::param time) const |
uint8_t | readDataPort (EmuTime::param time) |
uint8_t | peekStatus () const |
uint8_t | readStatus (EmuTime::param time) |
void | writeControlReg0 (uint8_t value, EmuTime::param time) |
void | writeControlReg1 (uint8_t value, EmuTime::param time) |
void | writeDataPort (uint8_t value, EmuTime::param time) |
bool | diskChanged (unsigned driveNum) |
bool | peekDiskChanged (unsigned driveNum) const |
template<typename Archive > | |
void | serialize (Archive &ar, unsigned version) |
![]() | |
Schedulable (const Schedulable &)=delete | |
Schedulable & | operator= (const Schedulable &)=delete |
virtual void | executeUntil (EmuTime::param time)=0 |
When the previously registered syncPoint is reached, this method gets called. More... | |
virtual void | schedulerDeleted () |
Just before the the Scheduler is deleted, it calls this method of all the Schedulables that are still registered. More... | |
Scheduler & | getScheduler () const |
EmuTime::param | getCurrentTime () const |
Convenience method: This is the same as getScheduler().getCurrentTime(). More... | |
template<typename Archive > | |
void | serialize (Archive &ar, unsigned version) |
Additional Inherited Members | |
![]() | |
template<typename Archive > | |
static std::vector< SyncPointBW > | serializeBW (Archive &ar) |
template<typename Archive > | |
static void | restoreOld (Archive &ar, std::vector< Schedulable * > schedulables) |
![]() | |
Schedulable (Scheduler &scheduler) | |
~Schedulable () | |
void | setSyncPoint (EmuTime::param timestamp) |
bool | removeSyncPoint () |
void | removeSyncPoints () |
bool | pendingSyncPoint () const |
bool | pendingSyncPoint (EmuTime &result) const |
Definition at line 19 of file TC8566AF.hh.
Definition at line 40 of file TC8566AF.hh.
Enumerator | |
---|---|
PHASE_IDLE | |
PHASE_COMMAND | |
PHASE_DATA_TRANSFER | |
PHASE_RESULT |
Definition at line 58 of file TC8566AF.hh.
Enumerator | |
---|---|
SEEK_IDLE | |
SEEK_SEEK | |
SEEK_RECALIBRATE |
Definition at line 64 of file TC8566AF.hh.
openmsx::TC8566AF::TC8566AF | ( | Scheduler & | scheduler, |
std::span< std::unique_ptr< DiskDrive >, 4 > | drv, | ||
MSXCliComm & | cliComm, | ||
EmuTime::param | time | ||
) |
Definition at line 65 of file TC8566AF.cc.
References ranges::copy(), reset(), openmsx::RawTrack::STANDARD_SIZE, and view::transform().
bool openmsx::TC8566AF::diskChanged | ( | unsigned | driveNum | ) |
Definition at line 835 of file TC8566AF.cc.
Referenced by openmsx::TurboRFDC::readMem().
uint8_t openmsx::TC8566AF::peekDataPort | ( | EmuTime::param | time | ) | const |
Definition at line 136 of file TC8566AF.cc.
References PHASE_DATA_TRANSFER, and PHASE_RESULT.
Referenced by openmsx::TalentTDC600::peekMem(), and openmsx::TurboRFDC::peekMem().
bool openmsx::TC8566AF::peekDiskChanged | ( | unsigned | driveNum | ) | const |
Definition at line 841 of file TC8566AF.cc.
Referenced by openmsx::TurboRFDC::peekMem().
uint8_t openmsx::TC8566AF::peekStatus | ( | ) | const |
Definition at line 116 of file TC8566AF.cc.
References PHASE_DATA_TRANSFER.
Referenced by openmsx::TalentTDC600::peekMem(), openmsx::TurboRFDC::peekMem(), and readStatus().
uint8_t openmsx::TC8566AF::readDataPort | ( | EmuTime::param | time | ) |
Definition at line 148 of file TC8566AF.cc.
References openmsx::DynamicClock::before(), PHASE_DATA_TRANSFER, and PHASE_RESULT.
Referenced by openmsx::TalentTDC600::readMem(), and openmsx::TurboRFDC::readMem().
uint8_t openmsx::TC8566AF::readStatus | ( | EmuTime::param | time | ) |
Definition at line 123 of file TC8566AF.cc.
References openmsx::DynamicClock::before(), and peekStatus().
Referenced by openmsx::TalentTDC600::readMem(), and openmsx::TurboRFDC::readMem().
void openmsx::TC8566AF::reset | ( | EmuTime::param | time | ) |
Definition at line 77 of file TC8566AF.cc.
References CMD_UNKNOWN, PHASE_IDLE, and SEEK_IDLE.
Referenced by openmsx::TalentTDC600::reset(), openmsx::TurboRFDC::reset(), and TC8566AF().
void openmsx::TC8566AF::serialize | ( | Archive & | ar, |
unsigned | version | ||
) |
Definition at line 923 of file TC8566AF.cc.
References CMD_RECALIBRATE, CMD_SEEK, openmsx::Clock< FREQ_NUM, FREQ_DENOM >::getTime(), openmsx::CRC16::getValue(), openmsx::CRC16::init(), PHASE_IDLE, openmsx::CliComm::printWarning(), openmsx::DynamicClock::reset(), SEEK_IDLE, and openmsx::DynamicClock::setFreq().
void openmsx::TC8566AF::writeControlReg0 | ( | uint8_t | value, |
EmuTime::param | time | ||
) |
Definition at line 308 of file TC8566AF.cc.
Referenced by openmsx::TalentTDC600::writeMem(), and openmsx::TurboRFDC::writeMem().
void openmsx::TC8566AF::writeControlReg1 | ( | uint8_t | value, |
EmuTime::param | time | ||
) |
Definition at line 319 of file TC8566AF.cc.
References PHASE_DATA_TRANSFER.
Referenced by openmsx::TurboRFDC::writeMem().
void openmsx::TC8566AF::writeDataPort | ( | uint8_t | value, |
EmuTime::param | time | ||
) |
Definition at line 328 of file TC8566AF.cc.
References PHASE_COMMAND, PHASE_DATA_TRANSFER, and PHASE_IDLE.
Referenced by openmsx::TalentTDC600::writeMem(), and openmsx::TurboRFDC::writeMem().