Skip to content

Commit d351b5c

Browse files
committed
cleanup
1 parent 617cd92 commit d351b5c

File tree

6 files changed

+75
-24
lines changed

6 files changed

+75
-24
lines changed

Core/Peripherals/Drive/FloppyDisk.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ FloppyDisk::writeBit(Cylinder c, Head h, isize offset, bool value) {
176176
}
177177

178178
u8
179-
FloppyDisk::readByte(Track t, isize offset) const
179+
FloppyDisk::read8(Track t, isize offset) const
180180
{
181181
assert(t < numTracks());
182182
assert(offset < length.track[t]);
@@ -185,7 +185,7 @@ FloppyDisk::readByte(Track t, isize offset) const
185185
}
186186

187187
u8
188-
FloppyDisk::readByte(Cylinder c, Head h, isize offset) const
188+
FloppyDisk::read8(Cylinder c, Head h, isize offset) const
189189
{
190190
assert(c < numCyls());
191191
assert(h < numHeads());
@@ -195,7 +195,7 @@ FloppyDisk::readByte(Cylinder c, Head h, isize offset) const
195195
}
196196

197197
void
198-
FloppyDisk::writeByte(Track t, isize offset, u8 value)
198+
FloppyDisk::write8(Track t, isize offset, u8 value)
199199
{
200200
assert(t < numTracks());
201201
assert(offset < length.track[t]);
@@ -205,7 +205,7 @@ FloppyDisk::writeByte(Track t, isize offset, u8 value)
205205
}
206206

207207
void
208-
FloppyDisk::writeByte(Cylinder c, Head h, isize offset, u8 value)
208+
FloppyDisk::write8(Cylinder c, Head h, isize offset, u8 value)
209209
{
210210
assert(c < numCyls());
211211
assert(h < numHeads());

Core/Peripherals/Drive/FloppyDisk.h

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "FloppyDiskTypes.h"
1313
#include "DriveTypes.h"
1414
#include "CoreComponent.h"
15+
#include "TrackDevice.h"
1516

1617
namespace vamiga {
1718

@@ -52,8 +53,8 @@ class FloppyDiskImage;
5253
* - a disk usually occupies 84 * 2 * 12.664 = 2.127.552 MFM bytes
5354
*/
5455

55-
class FloppyDisk : public CoreObject {
56-
56+
class FloppyDisk : public CoreObject, public TrackDevice {
57+
5758
friend class FloppyDrive;
5859
friend class ADFEncoder;
5960
friend class EADFEncoder;
@@ -62,13 +63,6 @@ class FloppyDisk : public CoreObject {
6263
friend class DiskEncoder;
6364

6465
friend class EADFFactory;
65-
/*
66-
friend class ADFFile; // TODO: REMOVE
67-
friend class EADFFile; // TODO: REMOVE
68-
friend class EADFFactory; // TODO: REMOVE
69-
friend class IMGFile; // TODO: REMOVE
70-
friend class STFile; // TODO: REMOVE
71-
*/
7266

7367
public:
7468

@@ -140,8 +134,42 @@ class FloppyDisk : public CoreObject {
140134

141135
const char *objectName() const override { return "Disk"; }
142136
void _dump(Category category, std::ostream &os) const override;
143-
144-
137+
138+
139+
//
140+
// Methods from LinearDevice
141+
//
142+
143+
isize size() const override { fatalError; }
144+
void read(u8 *dst, isize offset, isize count) const override { fatalError; }
145+
void write(const u8 *src, isize offset, isize count) override { fatalError; }
146+
147+
148+
//
149+
// Methods from BlockDevice
150+
//
151+
152+
public:
153+
154+
isize capacity() const override { return numCyls() * numHeads() * numSectors(0); }
155+
isize bsize() const override { return 512; }
156+
void readBlock(u8 *dst, isize nr) const override { fatalError; }
157+
void writeBlock(const u8 *src, isize nr) override { fatalError; }
158+
159+
160+
//
161+
// Methods from TrackDevice
162+
//
163+
164+
isize numCyls() const override { return diameter == Diameter::INCH_525 ? 42 : 84; }
165+
isize numHeads() const override { return 2; }
166+
isize numSectors(isize t) const override { return density == Density::DD ? 11 : 22; }
167+
168+
// isize numCyls() const { return diameter == Diameter::INCH_525 ? 42 : 84; }
169+
// isize numHeads() const { return 2; }
170+
// isize numTracks() const { return diameter == Diameter::INCH_525 ? 84 : 168; }
171+
172+
145173
//
146174
// Serializing
147175
//
@@ -186,11 +214,13 @@ class FloppyDisk : public CoreObject {
186214

187215
Diameter getDiameter() const { return diameter; }
188216
Density getDensity() const { return density; }
189-
217+
218+
/*
190219
isize numCyls() const { return diameter == Diameter::INCH_525 ? 42 : 84; }
191220
isize numHeads() const { return 2; }
192221
isize numTracks() const { return diameter == Diameter::INCH_525 ? 84 : 168; }
193-
222+
*/
223+
194224
bool isWriteProtected() const { return flags & long(DiskFlags::PROTECTED); }
195225
void setWriteProtection(bool value) { value ? flags |= long(DiskFlags::PROTECTED) : flags &= ~long(DiskFlags::PROTECTED); }
196226

@@ -216,12 +246,12 @@ class FloppyDisk : public CoreObject {
216246
void writeBit(Cylinder c, Head h, isize offset, bool value);
217247

218248
// Reads a byte from disk
219-
u8 readByte(Track t, isize offset) const;
220-
u8 readByte(Cylinder c, Head h, isize offset) const;
249+
u8 read8(Track t, isize offset) const;
250+
u8 read8(Cylinder c, Head h, isize offset) const;
221251

222252
// Writes a byte to disk
223-
void writeByte(Track t, isize offset, u8 value);
224-
void writeByte(Cylinder c, Head h, isize offset, u8 value);
253+
void write8(Track t, isize offset, u8 value);
254+
void write8(Cylinder c, Head h, isize offset, u8 value);
225255

226256

227257
//

Core/Peripherals/Drive/FloppyDrive.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -713,7 +713,7 @@ FloppyDrive::readByte() const
713713
if (agnus.clock < latestStepCompleted) return u8(amiga.random() & 0x55);
714714

715715
// Case 3: Normal operation
716-
return disk->readByte(head.cylinder, head.head, head.offset);
716+
return disk->read8(head.cylinder, head.head, head.offset);
717717
}
718718

719719
u8
@@ -737,7 +737,7 @@ void
737737
FloppyDrive::writeByte(u8 value)
738738
{
739739
if (disk) {
740-
disk->writeByte(head.cylinder, head.head, head.offset, value);
740+
disk->write8(head.cylinder, head.head, head.offset, value);
741741
}
742742
}
743743

Core/Storage/Media/HDZ/HDZFile.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
namespace vamiga {
1515

16-
class HDZFile : public DiskImage {
16+
class HDZFile : public HardDiskImage {
1717

1818
public:
1919

Core/Storage/Media/HardDiskImage.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,21 @@
99

1010
#include "config.h"
1111
#include "HardDiskImage.h"
12+
#include "HDFFactory.h"
13+
#include "HDZFactory.h"
14+
#include "utl/io.h"
15+
16+
namespace vamiga {
17+
18+
std::unique_ptr<HardDiskImage>
19+
HardDiskImage::make(const fs::path &path)
20+
{
21+
std::unique_ptr<HardDiskImage> result;
22+
23+
if (HDFFile::isCompatible(path)) return HDFFactory::make(path);
24+
if (HDZFile::isCompatible(path)) return HDZFactory::make(path);
25+
26+
throw IOError(IOError::FILE_TYPE_UNSUPPORTED);
27+
}
28+
29+
}

Core/Storage/Media/HardDiskImage.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ namespace vamiga {
1515

1616
class HardDiskImage : public DiskImage {
1717

18+
// Hard disk factory
19+
static std::unique_ptr<HardDiskImage> make(const fs::path &path);
20+
1821
};
1922

2023
}

0 commit comments

Comments
 (0)