10 : name(std::move(name_)), nbSides(0)
39 if ((track == 0) && (side == 0)) {
45 return sectorsPerTrack * (side + nbSides * track) + (sector - 1);
53 return {track, side, sector};
58 byte track =
byte(
log / (nbSides * sectorsPerTrack));
59 byte side =
byte((
log / sectorsPerTrack) % nbSides);
60 byte sector =
byte((
log % sectorsPerTrack) + 1);
61 return {track, side, sector};
69 return sectorsPerTrack;
122 if ((sectorsPerTrack == 0) || (sectorsPerTrack > 255) ||
123 (nbSides == 0) || (nbSides > 255)) {
129 byte mediaDescriptor = buf.
raw[0];
130 if (mediaDescriptor >= 0xF8) {
131 sectorsPerTrack = (mediaDescriptor & 2) ? 8 : 9;
132 nbSides = (mediaDescriptor & 1) ? 2 : 1;
virtual void detectGeometryFallback()
void writeTrack(byte track, byte side, const RawTrack &input)
Replace a full track in this image with the given track.
unsigned getSectorsPerTrack()
virtual void detectGeometry()
TSS logToPhys(size_t log)
size_t physToLog(byte track, byte side, byte sector)
virtual void writeTrackImpl(byte track, byte side, const RawTrack &input)=0
bool isWriteProtected() const
void readSector(size_t sector, SectorBuffer &buf)
size_t getNbSectors() const
virtual void flushCaches()
constexpr double log(double x)
This file implemented 3 utility functions:
uint8_t byte
8 bit unsigned integer