openMSX
Classes | Public Member Functions | Static Public Attributes | List of all members
openmsx::RawTrack Class Reference

#include <RawTrack.hh>

Classes

struct  Sector
 

Public Member Functions

 RawTrack (unsigned size=STANDARD_SIZE)
 
void clear (unsigned size)
 Clear track data. More...
 
unsigned getLength () const
 Get track length. More...
 
void addIdam (unsigned idx)
 
byte read (int idx) const
 
void write (int idx, byte val, bool setIdam=false)
 
int wrapIndex (int idx) const
 
bytegetRawBuffer ()
 
const bytegetRawBuffer () const
 
const std::vector< unsigned > & getIdamBuffer () const
 
std::vector< SectordecodeAll () const
 Get info on all sectors in this track. More...
 
bool decodeNextSector (unsigned startIdx, Sector &sector) const
 Get the next sector (starting from a certain index). More...
 
bool decodeSector (byte sectorNum, Sector &sector) const
 Get a sector with a specific number. More...
 
void readBlock (int idx, unsigned size, byte *destination) const
 Like memcpy() but copy from/to circular buffer. More...
 
void writeBlock (int idx, unsigned size, const byte *source)
 
word calcCrc (int idx, int size) const
 Convenience method to calculate CRC for part of this track. More...
 
void updateCrc (CRC16 &crc, int idx, int size) const
 
void applyWd2793ReadTrackQuirk ()
 
template<typename Archive >
void serialize (Archive &ar, unsigned version)
 

Static Public Attributes

static const unsigned STANDARD_SIZE = 6250
 

Detailed Description

Definition at line 62 of file RawTrack.hh.

Constructor & Destructor Documentation

◆ RawTrack()

openmsx::RawTrack::RawTrack ( unsigned  size = STANDARD_SIZE)
explicit

Definition at line 23 of file RawTrack.cc.

References clear().

Member Function Documentation

◆ addIdam()

void openmsx::RawTrack::addIdam ( unsigned  idx)

Definition at line 34 of file RawTrack.cc.

Referenced by getLength(), and openmsx::DMKDiskImage::readTrack().

◆ applyWd2793ReadTrackQuirk()

void openmsx::RawTrack::applyWd2793ReadTrackQuirk ( )

◆ calcCrc()

word openmsx::RawTrack::calcCrc ( int  idx,
int  size 
) const

Convenience method to calculate CRC for part of this track.

Definition at line 192 of file RawTrack.cc.

References openmsx::CRC16::getValue(), and updateCrc().

Referenced by getIdamBuffer(), and openmsx::SectorBasedDisk::SectorBasedDisk().

◆ clear()

void openmsx::RawTrack::clear ( unsigned  size)

Clear track data.

Also sets the track length.

Definition at line 28 of file RawTrack.cc.

Referenced by RawTrack(), openmsx::DMKDiskImage::readTrack(), and openmsx::SectorBasedDisk::SectorBasedDisk().

◆ decodeAll()

vector< RawTrack::Sector > openmsx::RawTrack::decodeAll ( ) const

Get info on all sectors in this track.

Definition at line 119 of file RawTrack.cc.

References begin(), openmsx::RawTrack::Sector::dataIdx, end(), ranges::lower_bound(), and gl::rotate().

Referenced by getIdamBuffer(), and openmsx::SectorBasedDisk::SectorBasedDisk().

◆ decodeNextSector()

bool openmsx::RawTrack::decodeNextSector ( unsigned  startIdx,
Sector sector 
) const

Get the next sector (starting from a certain index).

Definition at line 142 of file RawTrack.cc.

Referenced by getIdamBuffer(), and openmsx::RealDrive::getNextSector().

◆ decodeSector()

bool openmsx::RawTrack::decodeSector ( byte  sectorNum,
Sector sector 
) const

Get a sector with a specific number.

Note that if a sector with the same number occurs multiple times, this method will always return the same (the first) sector. So don't use it in the implementation of FDC / DiskDrive code.

Definition at line 153 of file RawTrack.cc.

References openmsx::RawTrack::Sector::dataIdx, and openmsx::RawTrack::Sector::sector.

Referenced by getIdamBuffer(), openmsx::DMKDiskImage::readSectorImpl(), and openmsx::DMKDiskImage::writeSectorImpl().

◆ getIdamBuffer()

const std::vector<unsigned>& openmsx::RawTrack::getIdamBuffer ( ) const
inline

◆ getLength()

unsigned openmsx::RawTrack::getLength ( ) const
inline

◆ getRawBuffer() [1/2]

byte* openmsx::RawTrack::getRawBuffer ( )
inline

◆ getRawBuffer() [2/2]

const byte* openmsx::RawTrack::getRawBuffer ( ) const
inline

Definition at line 113 of file RawTrack.hh.

◆ read()

byte openmsx::RawTrack::read ( int  idx) const
inline

Definition at line 103 of file RawTrack.hh.

References wrapIndex(), and write().

Referenced by applyWd2793ReadTrackQuirk(), readBlock(), openmsx::RealDrive::readTrackByte(), and write().

◆ readBlock()

void openmsx::RawTrack::readBlock ( int  idx,
unsigned  size,
byte destination 
) const

Like memcpy() but copy from/to circular buffer.

Definition at line 166 of file RawTrack.cc.

References read(), and detail::size().

Referenced by getIdamBuffer(), openmsx::DMKDiskImage::readSectorImpl(), and openmsx::SectorBasedDisk::SectorBasedDisk().

◆ serialize()

template<typename Archive >
void openmsx::RawTrack::serialize ( Archive &  ar,
unsigned  version 
)

Definition at line 274 of file RawTrack.cc.

◆ updateCrc()

void openmsx::RawTrack::updateCrc ( CRC16 crc,
int  idx,
int  size 
) const

Definition at line 179 of file RawTrack.cc.

References end(), detail::size(), openmsx::CRC16::update(), and wrapIndex().

Referenced by calcCrc(), getIdamBuffer(), and write().

◆ wrapIndex()

int openmsx::RawTrack::wrapIndex ( int  idx) const
inline

Definition at line 105 of file RawTrack.hh.

Referenced by read(), updateCrc(), and write().

◆ write()

void openmsx::RawTrack::write ( int  idx,
byte  val,
bool  setIdam = false 
)

◆ writeBlock()

void openmsx::RawTrack::writeBlock ( int  idx,
unsigned  size,
const byte source 
)

Definition at line 172 of file RawTrack.cc.

References detail::size(), and write().

Referenced by getIdamBuffer(), and openmsx::DMKDiskImage::writeSectorImpl().

Member Data Documentation

◆ STANDARD_SIZE

const unsigned openmsx::RawTrack::STANDARD_SIZE = 6250
static

The documentation for this class was generated from the following files: