OXYGENHUB
◆ main openmsx / src / fdc / XSADiskImage.cc
775 B · C++ · last changed chore(): initial commit 1 month ago source blame history raw
1
#include "XSADiskImage.hh"
2
3
#include "DiskExceptions.hh"
4
#include "XSAExtractor.hh"
5
6
#include "File.hh"
7
8
namespace openmsx {
9
10
XSADiskImage::XSADiskImage(const Filename& filename, File& file)
11
	: SectorBasedDisk(DiskName(filename))
12
{
13
	auto mmap = file.mmap<const uint8_t>();
14
	XSAExtractor extractor(mmap);
15
	data = std::move(extractor).extractData();
16
	setNbSectors(data.size());
17
}
18
19
void XSADiskImage::readSectorsImpl(
20
	std::span<SectorBuffer> buffers, size_t startSector)
21
{
22
	copy_to_range(std::span{&data[startSector], buffers.size()}, buffers);
23
}
24
25
void XSADiskImage::writeSectorImpl(size_t /*sector*/, const SectorBuffer& /*buf*/)
26
{
27
	throw WriteProtectedException("Write protected");
28
}
29
30
bool XSADiskImage::isWriteProtectedImpl() const
31
{
32
	return true;
33
}
34
35
} // namespace openmsx