11 , nbSectors(size_t(-1))
20 void SectorBasedDisk::writeTrackImpl(
byte track,
byte side,
const RawTrack& input)
31 auto logicalSector =
physToLog(track, side, s.sector);
49 int num = track | (side << 8);
50 if (num == cachedTrackNum) {
51 output = cachedTrackData;
91 for (
int i = 0; i < 80; ++i) output.write(idx++, 0x4E);
92 for (
int i = 0; i < 12; ++i) output.write(idx++, 0x00);
93 for (
int i = 0; i < 3; ++i) output.write(idx++, 0xC2);
94 for (
int i = 0; i < 1; ++i) output.write(idx++, 0xFC);
95 for (
int i = 0; i < 50; ++i) output.write(idx++, 0x4E);
97 for (
int j = 0; j < 9; ++j) {
98 for (
int i = 0; i < 12; ++i) output.write(idx++, 0x00);
100 for (
int i = 0; i < 3; ++i) output.write(idx++, 0xA1);
102 for (
int i = 0; i < 1; ++i) output.write(idx++, 0xFE);
103 output.write(idx++, track);
104 output.write(idx++, side);
105 output.write(idx++, j + 1);
106 output.write(idx++, 0x02);
107 word addrCrc = output.calcCrc(idx - 8, 8);
108 output.write(idx++, addrCrc >> 8);
109 output.write(idx++, addrCrc & 0xff);
111 for (
int i = 0; i < 22; ++i) output.write(idx++, 0x4E);
112 for (
int i = 0; i < 12; ++i) output.write(idx++, 0x00);
114 for (
int i = 0; i < 3; ++i) output.write(idx++, 0xA1);
115 for (
int i = 0; i < 1; ++i) output.write(idx++, 0xFB);
117 auto logicalSector =
physToLog(track, side, j + 1);
120 for (
int i = 0; i < 512; ++i) output.write(idx++, sectorBuf[i]);
122 word dataCrc = output.calcCrc(idx - (512 + 4), 512 + 4);
123 output.write(idx++, dataCrc >> 8);
124 output.write(idx++, dataCrc & 0xff);
126 for (
int i = 0; i < 84; ++i) output.write(idx++, 0x4E);
129 for (
int i = 0; i < 182; ++i) output.write(idx++, 0x4E);
131 }
catch (MSXException& ) {
140 cachedTrackData = output;
149 size_t SectorBasedDisk::getNbSectorsImpl()
const
151 assert(nbSectors !=
size_t(-1));
156 assert(nbSectors ==
size_t(-1));