Skip to content

Commit

Permalink
Work on EXTFile::encodeDisk (#788)
Browse files Browse the repository at this point in the history
  • Loading branch information
dirkwhoffmann committed Mar 26, 2023
1 parent e44510b commit 1390865
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 5 deletions.
1 change: 1 addition & 0 deletions Documentation/index.rst
Expand Up @@ -24,6 +24,7 @@ vAmiga User's Manual
:caption: How-to guides

HowTo/MappingCmd
HowTo/NullModemCable

.. toctree::
:maxdepth: 1
Expand Down
11 changes: 8 additions & 3 deletions Emulator/Media/AmigaFile.cpp
Expand Up @@ -46,6 +46,13 @@ AmigaFile::init(std::istream &stream)
readFromStream(stream);
}

void
AmigaFile::init(isize len)
{
data.init(len);
data.clear();
}

void
AmigaFile::init(const u8 *buf, isize len)
{
Expand All @@ -72,10 +79,8 @@ AmigaFile::init(FILE *file)

AmigaFile::~AmigaFile()
{
// if (data) delete[] data;
}


}

void
AmigaFile::flash(u8 *buf, isize offset, isize len) const
Expand Down
1 change: 1 addition & 0 deletions Emulator/Media/AmigaFile.h
Expand Up @@ -81,6 +81,7 @@ class AmigaFile : public CoreObject {

void init(std::istream &stream) throws;
void init(const string &path, std::istream &stream) throws;
void init(isize len) throws;
void init(const u8 *buf, isize len) throws;
void init(const Buffer<u8> &buffer) throws;
void init(const string &path) throws;
Expand Down
32 changes: 32 additions & 0 deletions Emulator/Media/DiskFiles/ADFFile.cpp
Expand Up @@ -68,6 +68,38 @@ ADFFile::init(Diameter diameter, Density density)
data.init(fileSize(diameter, density));
}

void
ADFFile::init(const FloppyFile &file)
{
if (file.getDiameter() != INCH_35) throw VAError(ERROR_DISK_INVALID_DIAMETER);

switch (file.getDensity()) {

case DENSITY_DD:

switch (file.numCyls()) {

case 80: init(ADFSIZE_35_DD); break;
case 81: init(ADFSIZE_35_DD_81); break;
case 82: init(ADFSIZE_35_DD_82); break;
case 83: init(ADFSIZE_35_DD_83); break;
case 84: init(ADFSIZE_35_DD_84); break;

default:
throw VAError(ERROR_DISK_INVALID_LAYOUT);
}
break;

case DENSITY_HD:

init(ADFSIZE_35_HD);
break;

default:
throw VAError(ERROR_DISK_INVALID_DENSITY);
}
}

void
ADFFile::init(FloppyDisk &disk)
{
Expand Down
2 changes: 2 additions & 0 deletions Emulator/Media/DiskFiles/ADFFile.h
Expand Up @@ -49,11 +49,13 @@ class ADFFile : public FloppyFile {
ADFFile(const u8 *buf, isize len) throws { init(buf, len); }
ADFFile(FILE *file) throws { init(file); }
ADFFile(Diameter dia, Density den) throws { init(dia, den); }
ADFFile(const class FloppyFile &file) throws { init(file); }
ADFFile(class FloppyDisk &disk) throws { init(disk); }
ADFFile(class FloppyDrive &drive) throws { init(drive); }
ADFFile(MutableFileSystem &volume) throws { init(volume); }

void init(Diameter dia, Density den) throws;
void init(const FloppyFile &file) throws;
void init(FloppyDisk &disk) throws;
void init(FloppyDrive &drive) throws;
void init(MutableFileSystem &volume) throws;
Expand Down
2 changes: 1 addition & 1 deletion Emulator/Media/DiskFiles/EXTFile.cpp
Expand Up @@ -181,7 +181,7 @@ EXTFile::encodeDisk(class FloppyDisk &disk) const
debug(MFM_DEBUG, "Encoding Amiga disk with %ld tracks\n", tracks);

// Create an empty ADF
ADFFile adf(getDiameter(), getDensity());
ADFFile adf(*this);

// Wipe out all data
disk.clearDisk(0);
Expand Down
2 changes: 1 addition & 1 deletion Emulator/config.h
Expand Up @@ -26,7 +26,7 @@
#define SNP_BETA 1

// Uncomment this setting in a release build
#define RELEASEBUILD
// #define RELEASEBUILD


//
Expand Down
Expand Up @@ -159,5 +159,21 @@
landmarkType = "3">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "5F2E8422-98B1-41E1-A6B8-CD27313D354C"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Emulator/Media/DiskFiles/EXTFile.cpp"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "180"
endingLineNumber = "180"
landmarkName = "EXTFile::encodeDisk(disk)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

0 comments on commit 1390865

Please sign in to comment.