Commit Graph

67 Commits

Author SHA1 Message Date
David Given
984cdaeb03 Make nanoseconds_t a double to prevent overflow on very large numbers of
revolutions (I've just seen a flux file with 50).
2020-06-26 14:47:25 +02:00
David Given
30646ccb07 Fix an Amiga decoder bug where truncated sectors would be considered valid (the
Amiga checksum algorithm is weak and zero bytes don't contribute to the
checksum).
2020-04-08 23:35:55 +02:00
David Given
cd19fcdadd The CSV report now writes records for every sector in the output map, even the
missing ones.
2020-03-31 00:14:23 +02:00
David Given
37aa8b62b0 Add a --write-csv=X option to the reader to dump the sector status map as a
machine-readable file.
2020-03-14 14:35:19 +00:00
David Given
323da8272a Hopefully add support for giving the reader a set of required sectors, so if
one is missing then we can tell and the track can be reread.
2020-02-21 22:14:44 +01:00
David Given
be41c1de76 You now need to explicitly specify whether flux files get merged or
overwritten, because the old behaviour was weird. Reader uses SqliteFluxSink to
write flux files, rather than raw database accesses.
2020-02-08 12:41:50 +01:00
David Given
9dc1067032 Add --dump-sectors. Sector positions are recorded correctly. 2020-01-26 18:30:35 +01:00
David Given
6af80d1e5e Improve some messaging. A data record is always pushed, even if it's empty (to
help debugging).
2020-01-26 17:49:12 +01:00
David Given
7c66e1b0d4 Don't recalibrate after drive errors --- it's really annoying and I don't think it helps. 2019-12-14 21:43:48 +01:00
David Given
7988d0fe24 Don't replace bad sectors with more bad sectors. This means that if a sector is
permanently bad, the one which wins and goes into the output SectorSet is the
first one, not the last one. Frequently the last sector is truncated by the end
of read and so it isn't useful.
2019-08-27 22:39:24 +02:00
David Given
27f5c294b1 The visualiser period can now be specified in a flag. 2019-08-27 01:21:49 +02:00
David Given
b9a53e0d1c First draft of the visualiser. 2019-08-27 01:07:57 +02:00
David Given
60bfe050d3 Refactor the way image extensions are handled to be generally cleaner. Add
support for validating ImageSpecs before we actually want to read/write an
image, so as to allow us to check the extension *before* wasting time reading a
disk. Make .d81 an alias of .img.
2019-08-21 00:45:10 +02:00
David Given
d8172154c3 Output images now get geometry specs to indicate what kind of file to write. 2019-08-07 23:23:07 +02:00
David Given
eb924780ab Refactor dataspecs to allow them to be used for other things too. 2019-08-06 23:50:02 +02:00
David Given
8e1774c69f Show the clock rate in kHz as well, because that's more useful. 2019-07-12 23:09:50 +02:00
David Given
032df676c1 Replace meson with a very small shell script. 2019-07-03 22:18:34 +02:00
David Given
f7af8bb99b I... think it's done? That was suspiciously easy. 2019-07-02 23:20:47 +02:00
David Given
a1c207cb8f First milestone towards flags rewrite --- it builds and the tests pass, but
nothing actually works.
2019-07-02 23:06:40 +02:00
David Given
76e22995b7 Fix memory corruption issue when replacing sectors. 2019-06-27 22:10:35 +02:00
David Given
2ddc1045ec Rework the Victor 9000 decoder to use the new architecture. 2019-04-19 14:39:26 +02:00
David Given
5f8e0c846c Allow split decoders (into sector record and data record). 2019-04-19 00:55:01 +02:00
David Given
b158692a3a Radically simplify RawRecord and Sector. It all works, and the results are
better, but I've disabled a bunch of decoders for now.
2019-04-18 21:47:34 +02:00
David Given
4b480ce4f3 Rewrite the Macintosh decoder. 2019-04-18 01:31:52 +02:00
David Given
5ce2acdfb4 The new decoder architecture now works, at least for the FB100. All I need now
is to rewrite every single other decoder.
2019-04-18 00:47:28 +02:00
David Given
6e31a9e4ae Refactor so track state is passed around in the Track object. 2019-04-16 22:49:35 +02:00
David Given
3667595275 Rename FluxReader and FluxWriter to FluxSource and FluxSink. 2019-04-16 21:07:58 +02:00
David Given
6b73d1745c Merge from trunk. 2019-04-16 20:16:38 +02:00
David Given
7a49ec7819 Moderately crudely hack in routing side information to the decoders; this is
needed by the Victor 9000 decoder to figure out the right clock rate.
2019-04-16 19:50:25 +02:00
David Given
9b59e7025d Add the ability for decoders to specify their own clocks --- necessary for the
Victor 9k. We now have _much_ better decoding for this platform.
2019-04-16 01:13:28 +02:00
David Given
84076674fd Add stateful decoders, which makes formats like the FB-100 much easier to work
with. Add a generic CRC tool allowing all the parameters to be set (currently
unused).
2019-04-12 00:13:56 +02:00
David Given
50cff528a3 Merge from master. 2019-04-07 02:19:12 +02:00
David Given
bcc5a5f2cd Interim but working support for crunched data streams when reading from the
device; writes haven't been converted yet. Reduces the bandiwidth from about
800kB/s to about 500kB/s, which is about what I thought.
2019-03-26 23:03:19 +01:00
David Given
d0726e13c0 Add a fluxwriter library to try and abstract writing --- but this is going to
need some more refactoring to make it work.
2019-03-24 11:06:38 +01:00
David Given
456791e20c Refactor to use FluxmapReader. 2019-03-09 11:30:50 +01:00
David Given
f3640aa153 Show transfer bandwidth. 2019-03-06 19:44:27 +01:00
David Given
dfc818ff73 You now have to explicitly upgrade flux files --- much cleaner. Added a tool to
do this.
2019-03-03 20:52:53 +01:00
David Given
0eb7620854 Conflicted sectors are now treated as bad. 2019-03-03 11:39:54 +01:00
David Given
f0d64969fc Better conflicting sector warning formatting. Raw records can now be shown for
non-retryable data sources.
2019-02-28 23:02:58 +01:00
David Given
20c54f1956 Warn if two copies of the same sector are seen with different data. 2019-02-25 20:31:05 +01:00
David Given
75a321beef Don't retry reads if we're not talking to actual hardware.
Fixes #18.
2019-02-24 23:57:46 +01:00
David Given
dd9d978869 Fix logic bug when assembling images where good sectors would be replaced by
bad ones just because they showed up later.
2019-02-21 21:02:21 +01:00
David Given
ed9b7ef6b3 Don't attempt to decode tracks if no clock could be detected.
Fixes: #15
2019-02-21 11:17:09 +01:00
David Given
01acc4e5b3 Partially decode the Kryoflux Mac image I have (complete with checksum
checking). The read is very bad, but I don't know whether that's because
there's something wrong I'm doing, or if the Kryoflux image is bad.
2019-02-20 20:46:01 +01:00
David Given
259a02898f Massive refactor to overhaul and simplify the decoder system. Amiga has been
disabled (because it needs rewriting now).
2019-02-19 00:39:13 +01:00
David Given
6384b92bed Stop using inline constructor initialiser list things for tuples, as
it's a recent feature and old compilers don't support them.
2019-02-15 13:44:44 +01:00
David Given
61d98073a7 Add support for reading Kryoflux stream files. 2019-02-14 21:44:23 +01:00
David Given
d157574c6a Put back --just-read, and fix the formatting. 2019-02-14 21:15:08 +01:00
David Given
31a00696e1 Refactor the low-level reading stuff to be cleaner, simpler, and allow more
flux sources.
2019-02-14 20:15:35 +01:00
David Given
12135b5dd6 Add support for FM decoding and Acorn DFS disks, requiring some rearrangement.
Also make the Brother two revolutions thing (which DFS also needs) the default.
2019-02-12 21:29:31 +01:00