OXYGENHUB
◆ main openmsx / src / fdc / SectorBasedDisk.hh
912 B · C++ · last changed chore(): initial commit 1 month ago source blame history raw
e8555c89 Andy McCall 1
#ifndef SECTORBASEDDISK_HH
2
#define SECTORBASEDDISK_HH
3
4
#include "Disk.hh"
5
#include "RawTrack.hh"
6
7
namespace openmsx {
8
9
/** Abstract class for disk images that only represent the logical sector
10
  * information (so not the raw track data that is sometimes needed for
11
  * copy-protected disks).
12
  */
13
class SectorBasedDisk : public Disk
14
{
15
protected:
16
	explicit SectorBasedDisk(DiskName name);
17
	void detectGeometry() override;
18
	void flushCaches() override;
19
20
	void setNbSectors(size_t num);
21
22
protected:
23
	~SectorBasedDisk() override = default;
24
25
private:
26
	// Disk
27
	[[nodiscard]] size_t getNbSectorsImpl() override;
28
	void readTrack(uint8_t track, uint8_t side, RawTrack& output) override;
29
	void writeTrackImpl(uint8_t track, uint8_t side, const RawTrack& input) override;
30
31
private:
32
	size_t nbSectors = size_t(-1); // to detect misuse
33
	RawTrack cachedTrackData;
34
	int cachedTrackNum = -1;
35
};
36
37
} // namespace openmsx
38
39
#endif