mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
Make sure that places which use usbSeek() honour --40-track.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
FlagGroup fluxSourceSinkFlags;
|
||||
|
||||
SettableFlag fluxSourceSinkFortyTrack(
|
||||
{ "--40-track" },
|
||||
{ "--40-track", "-4" },
|
||||
"indicates a 40 track drive");
|
||||
|
||||
SettableFlag fluxSourceSinkHighDensity(
|
||||
|
||||
@@ -7,11 +7,13 @@
|
||||
#include "writer.h"
|
||||
#include "protocol.h"
|
||||
#include "fmt/format.h"
|
||||
#include "flaggroups/fluxsourcesink.h"
|
||||
#include "dep/agg/include/agg2d.h"
|
||||
#include "dep/stb/stb_image_write.h"
|
||||
#include <fstream>
|
||||
|
||||
static FlagGroup flags = {
|
||||
&fluxSourceSinkFlags,
|
||||
&usbFlags,
|
||||
};
|
||||
|
||||
@@ -186,8 +188,15 @@ int mainAnalyseDriveResponse(int argc, const char* argv[])
|
||||
if (spec.locations.size() != 1)
|
||||
Error() << "the destination dataspec must contain exactly one track (two sides count as two tracks)";
|
||||
|
||||
usbSetDrive(spec.drive, false, F_INDEX_REAL);
|
||||
usbSeek(spec.locations[0].track);
|
||||
usbSetDrive(spec.drive, fluxSourceSinkHighDensity, F_INDEX_REAL);
|
||||
int track = spec.locations[0].track;
|
||||
if (fluxSourceSinkFortyTrack)
|
||||
{
|
||||
if (track & 1)
|
||||
Error() << "you can only seek to even tracks on a 40-track disk";
|
||||
track /= 2;
|
||||
}
|
||||
usbSeek(track);
|
||||
|
||||
std::cout << "Measuring rotational speed...\n";
|
||||
nanoseconds_t period = usbGetRotationalPeriod(0);
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#include "globals.h"
|
||||
#include "flags.h"
|
||||
#include "usb/usb.h"
|
||||
#include "flaggroups/fluxsourcesink.h"
|
||||
#include "protocol.h"
|
||||
|
||||
static FlagGroup flags = {
|
||||
&fluxSourceSinkFlags,
|
||||
&usbFlags,
|
||||
};
|
||||
|
||||
@@ -22,6 +24,13 @@ int mainSeek(int argc, const char* argv[])
|
||||
flags.parseFlags(argc, argv);
|
||||
|
||||
usbSetDrive(drive, false, F_INDEX_REAL);
|
||||
usbSeek(track);
|
||||
if (fluxSourceSinkFortyTrack)
|
||||
{
|
||||
if (track & 1)
|
||||
Error() << "you can only seek to even tracks on a 40-track drive";
|
||||
usbSeek(track / 2);
|
||||
}
|
||||
else
|
||||
usbSeek(track);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user