Commit Graph

66 Commits

Author SHA1 Message Date
David Given
b55ebe95d9 Reformat. 2022-06-15 23:37:50 +02:00
David Given
cb5c0d5ebe Make the a2r flux sink build. Tracks are now always in the native numbering. 2022-06-15 23:33:00 +02:00
Jeff Epler
6cf86a4797 fix some whitespace 2022-04-22 11:03:51 -05:00
Jeff Epler
feb5eac02e Never write via structures, always write via a ByteWriter 2022-04-22 11:03:46 -05:00
Jeff Epler
00d30fe26b fix several missing override declarations 2022-04-12 11:20:46 -05:00
Jeff Epler
f2083ed5e9 fix macos-only build error (narrowing diagnostic) 2022-04-12 11:20:40 -05:00
Jeff Epler
6ac98d02a7 Merge remote-tracking branch 'origin/master' into applea2r 2022-04-12 10:53:17 -05:00
Jeff Epler
5e8f35c94e Fix review items, try again on applesauce compatibility
After these changes, applesauce accepts the image but produces a
non-working result.  passport.py still likes the files just fine, if
they're of the limited sorts that it can handle.

(applesauce wants just one STRM chunk with all the flux from all the
tracks; the whole STRM ends with an extra FF, which is not counted in the
size of any of the TIMING blocks. passport.py / a2archery is considerably
more forgiving)
2022-03-29 10:54:15 -05:00
David Given
adff739a5d Partial conversion to do automatic scaling of flux based on the disk rotation
speed. Although, something seems to have broken for 5.25" disks.
2022-03-27 23:50:32 +02:00
David Given
86c5cccb08 Rename cylinder to track throughout (mostly). 2022-03-25 20:16:12 +01:00
Jeff Epler
6e817e2d7c Add a2r as a flux sink
a2r is preferred for apple2 disk archiving and should have a pathway
to emulation via passport.py (woz and dsk conversion)
2022-03-23 14:06:01 -05:00
David Given
ba3f806616 Move a lot of drive parameters into a toplevel drive{} config rather than
leaving them in the source/sink configs (which means they have to be set
twice).
2022-03-13 21:13:56 +01:00
David Given
96214bf3fd Refactor for better multi-read support. Each read is now held separately, with
F_DESYNC being deprecated, and FluxSource returns an iterator which can be used
to retry reads.
2022-03-07 00:07:42 +01:00
David Given
78186d8a45 Archive. 2022-03-06 00:46:53 +01:00
David Given
d5245e3784 Don't capture parameters in static blocks. That never ends well... 2022-02-27 12:51:51 +01:00
David Given
042f7b0502 Log messages are now forwarded to the UI thread. 2022-02-22 00:50:58 +01:00
David Given
40a42c65c1 The rotational speed message is now done via the logger. 2022-02-21 22:21:46 +01:00
Jeff Epler
a6bf6f901f Error gracefully when requested to write a too-large scp image
This prevents a crash when more tracks were recorded than fit in an
scp image. When I first encountered a problem doing an 84-track operation,
this led to a segfault later on since memory was written past the end
of _fileheader, and (I think) stomped on a pointer.
2022-02-11 09:10:20 -06:00
David Given
89688394f8 Replace the upgradefluxfile builtin with a seperate upgrade-flux-file tool.
This allows us to remove all the SQL stuff from the main program, and restores
the ability to upgrade from version 2 SQL files.
2022-02-04 21:27:24 +01:00
David Given
40bca8b38c Merge pull request #370 from tdaede/rescale 2022-01-10 23:02:18 +01:00
David Given
7b0a4a057d Merge pull request #376 from tdaede/scpfix2
Fix SCP writer to always write complete revolutions.
2021-12-09 22:26:36 +00:00
Thomas Daede
ce1daf6a2b Add option to rescale flux sink pulses.
Note that this does not affect the decoder used for verify,
but at least for tame rescaling the decoders are still able to
lock.

This is a precursor to automatic scaling via the disk speed
measurement.
2021-12-07 14:45:32 -08:00
David Given
da84297b2c Merge pull request #380 from tdaede/last_fluxmap
SCP: Only write the last continuous fluxmap.
2021-12-07 21:47:54 +00:00
Thomas Daede
0c3c08db36 SCP: Only write the last continuous fluxmap. 2021-12-06 11:47:42 -08:00
Thomas Daede
634be4ae51 Fix SCP writer to always write complete revolutions.
There were a couple of problems that needed to be fixed:

- Fluxmaps can be produced with zero index pulses by encoders.
This is somewhat ambiguous but it's assumed that this means there
is exactly one revolution.

- The SCP unindexed mode wasn't properly supported, as it should
create equal-length revolutions not aligned to indexes. However,
fluxmaps don't contain any information on rotation speed. Therefore,
drop the ability to create unindexed SCPs and slightly change the
meaning of the option to not include pre-index data.

- Real flux reads can potentially produce duplicate index pulses.
Avoid creating zero-length revs.

- Fix off-by-one error for rev count.
2021-12-06 07:41:16 -08:00
dg
27fceb3f41 Make the new FL2 flux format the default. 2021-12-05 17:09:02 +00:00
dg
18d90c44dd Rework the flux decoders to add a desync opcode for separating multiple reads
in a flux stream. Finally add a unit test for the flux decoder.
2021-12-05 14:42:57 +00:00
dg
298f77f52e Add the FL2 reader. 2021-12-05 11:33:19 +00:00
dg
d36a18c17a Add the experimental FL2 encoder. 2021-12-04 12:39:36 +00:00
dtrg
8d6a811204 Correctly write the number of revolutions in SCP files. 2021-12-03 18:13:17 +00:00
Eric Anderson
181f2f38d8 s/ScpTrackStart/ScpTrackHeader/ and use in ScpTrack 2021-10-30 10:29:17 -07:00
Howard M. Harte
44b452b30b Perform retries when calculating drive RPM.
The drive RPM measurement fails about 3% of the time.  Retry up to
five times until it succeeds, and exit with an error if it doesn't.
2021-05-26 23:02:34 -07:00
David Given
1997abcde6 Warning fix pass. 2021-05-21 22:12:14 +02:00
David Given
18b683d22e Add drive:N as a valid flux source and sink specifier; remove the --drive
option. Also, a bunch of option cleanup.
2021-05-20 22:14:22 +02:00
David Given
a0164b8de3 Rip out dataspecs everywhere. 2021-05-18 22:22:06 +02:00
David Given
9df35c1814 Fix a bunch of documentation strings. 2021-05-18 21:10:59 +02:00
David Given
05aaa2634b Don't hard-code references to the global config in the
updateConfigForFilename() methods.
2021-05-18 19:57:23 +02:00
David Given
d246fca9df Convert scptoflux to a proper flux source. 2021-05-18 01:09:55 +02:00
David Given
c79feb405c Switch to resource path type thingies for specifying flux file types, where
appropriate. Much better.
2021-05-18 00:40:16 +02:00
David Given
b1145f8da3 Flux sink type is now detected from file extension. 2021-05-18 00:23:38 +02:00
David Given
3588d681a2 Convert fluxscp to a proper flux sink. 2021-05-17 23:28:30 +02:00
David Given
55d894ae1f Convert fluxtovcd to a proper flux sink. 2021-05-17 22:12:44 +02:00
David Given
0509caf432 Allow the .au writer to write multiple tracks. 2021-05-17 21:53:15 +02:00
David Given
5d1d807e78 Convert fluxtoau to a real flux sink. 2021-05-17 21:42:25 +02:00
David Given
41b36649a9 Rename a bunch of config fields for clarity. 2021-05-15 22:23:42 +02:00
David Given
509217606c Remove sqlite flux sink flags. 2021-05-15 13:42:30 +02:00
David Given
5a63172a86 Remove the hardware source/sink flags. 2021-05-15 13:06:53 +02:00
David Given
25f2c3a8c1 Move the USB flags into the config file. 2021-05-13 23:35:05 +02:00
David Given
5a186b6960 Rename all protos to end with 'Proto' to avoid name conflicts. 2021-05-13 18:05:08 +02:00
David Given
f9510c54b2 Split the encoder/decoder configuration away from inputs and outputs. Make the
test pattern creator a flux source.
2021-05-13 17:23:06 +02:00