Compare commits

..

3 Commits

4 changed files with 15 additions and 1 deletions

View File

@@ -102,6 +102,8 @@ static uint8_t decodeUint16(uint16_t raw)
std::unique_ptr<Fluxmap> IbmEncoder::encode(
int physicalTrack, int physicalSide, const SectorSet& allSectors)
{
if (_parameters.swapSides)
physicalSide = 1 - physicalSide;
double clockRateUs = 1e3 / _parameters.clockRateKhz;
if (!_parameters.useFm)
clockRateUs /= 2.0;

View File

@@ -69,6 +69,7 @@ struct IbmParameters
int gap2;
int gap3;
std::string sectorSkew;
bool swapSides;
};
class IbmEncoder : public AbstractEncoder

View File

@@ -33,6 +33,11 @@ static StringFlag sectorSkew(
"Order to emit sectors.",
"");
static BoolFlag swapSides(
{ "--ibm-swap-sides" },
"Swap sides while writing.",
false);
static ActionFlag preset360(
{ "--st-preset-360" },
"Preset parameters to a 3.5\" 360kB disk (1 side, 80 tracks, 9 sectors).",
@@ -124,6 +129,7 @@ int mainWriteAtariST(int argc, const char* argv[])
parameters.gap2 = gap2;
parameters.gap3 = gap3;
parameters.sectorSkew = sectorSkew;
parameters.swapSides = swapSides;
IbmEncoder encoder(parameters);
writeDiskCommand(encoder);

View File

@@ -74,6 +74,11 @@ static StringFlag sectorSkew(
"Order to emit sectors.",
"");
static BoolFlag swapSides(
{ "--ibm-swap-sides" },
"Swap sides while writing. Needed for Commodore 1581, CMD FD-2000, Thomson TO7.",
false);
static ActionFlag preset1440(
{ "--ibm-preset-1440" },
"Preset parameters to a 3.5\" 1440kB disk.",
@@ -129,10 +134,10 @@ int mainWriteIbm(int argc, const char* argv[])
parameters.gap2 = gap2;
parameters.gap3 = gap3;
parameters.sectorSkew = sectorSkew;
parameters.swapSides = swapSides;
IbmEncoder encoder(parameters);
writeDiskCommand(encoder);
return 0;
}