Commit Graph

40 Commits

Author SHA1 Message Date
David Given
a833aa0a00 Import STB's image writer library and hook it up to AGG. 2021-01-10 16:38:49 +01:00
David Given
52332b04ac Import the AGG graphics library. 2021-01-10 14:45:32 +01:00
David Given
53cec292d0 Refactor the GreaseWeazle converter to allow it to be tested. 2021-01-07 22:06:45 +01:00
David Given
629af2a697 You can now create Bytes from strings and vice versa. 2021-01-04 23:31:54 +01:00
David Given
1b48ea20c4 Remove the cruncher. 2020-03-20 00:06:07 +01:00
David Given
fc2655ecd6 Rework the bytecode format to use a much simplified setup: a six-bit timer with
the top two bits reserved for pulse and index state. This is actually smaller,
bandwidth-wise, than the old version, and may be smaller than the crunched
version.
2020-03-14 18:58:43 +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
8acf8e181d Rework the crunch encoding to be, hopefully, smaller and use less bandwidth for
HD disks.
2020-02-18 21:37:32 +01:00
David Given
89a27619ff Correctly propagate MFM encoding state. 2020-02-15 21:47:01 +01:00
David Given
a4002d2617 Fix a few encoder issues; but while 720kB disks work fine in a real machine,
1440kB disks don't.
2020-02-14 22:47:15 +01:00
David Given
d25f96dd24 The IBM encoder now works well enough that my USB floppy drive thinks the disk
is formatted... but has trouble reading sectors above about 1000. Also remember
that encoding MFM needs to keep one bit of state at all times.
2020-02-14 00:06:51 +01:00
David Given
e8febe6508 Allow converting Bytes to bits, and slicing until the end of an object. 2020-02-14 00:04:31 +01:00
David Given
792cc88192 The Amiga writer now generates valid flux files --- but it looks like the
writer's broken (both the Amiga and the Brother have failed).
2019-12-14 20:44:48 +01:00
David Given
f9117b8d11 Added a simple library for reading and writing LDBS files. 2019-08-09 22:41:07 +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
032df676c1 Replace meson with a very small shell script. 2019-07-03 22:18:34 +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
4e3d4e31af The flux pattern matcher will now preserve leading zeroes (although it can't
match them). The IBM decoder is now properly converted, autodetecting FM and
MFM.
2019-04-27 22:11:39 +02:00
David Given
bec46419d6 Remove the obsolete FluxPatterns. 2019-04-27 10:27:55 +02:00
David Given
a483ad987e Archival checking: IBM FM works (but not MFM yet). Other formats have stopped
working.
2019-04-26 23:52:04 +02:00
David Given
643288bef8 Extend the flux pattern matcher to support trailing zeroes. 2019-04-25 23:18:47 +02:00
David Given
5f8e0c846c Allow split decoders (into sector record and data record). 2019-04-19 00:55:01 +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
db14642504 Beat the Kryoflux stream reader into enough shape that it will handle the weird
Kryoflux index markers; refactor it to use Bytes rather than raw streams
(because streams in C++ are terrible).
2019-04-14 14:35:52 +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
d013b0fe55 Fix Bytes slicing buffer overrun; fix bug in the IBM decoder which was
provoking it.
2019-03-21 20:14:35 +01:00
David Given
c558028552 Build file cleanup. 2019-03-09 17:49:00 +01:00
David Given
379985c2bc Rework the sampler state machine, with new, better, simpler bytecode at twice
the bandwidth; we now record the state of the index hole.
2019-03-06 21:09:07 +01:00
David Given
8212adf84f Temporary lifespan doesn't work intuitively. Fix it. 2019-03-05 19:17:06 +01:00
David Given
94fb10eb02 Behemoth change to rework everything to use Bytes rather than vectors of
uint8_t. The tests pass, but of course, nothing decodes any more.
2019-03-05 00:10:20 +01:00
David Given
3835afd022 Add a reasonably comprehensive bytes library. 2019-03-04 21:41:41 +01:00
David Given
b1368fff64 Hack in compressed flux streams; I don't like this much. 2019-03-03 19:11:13 +01:00
David Given
cf81acd8a5 Add Kryoflux stream decoder tests --- sadly, no bugs. Add a tool to convert CWF
format files to FluxEngine files.
2019-03-02 20:02:24 +01:00
David Given
7aa851d5f0 Fix hideously embarassing bug which was causing reading most floppies to
produce junk.
2019-02-20 22:41:08 +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
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
David Given
2527ac2ce9 Initial support for twin drives and 5.25" drives. 2019-02-11 23:43:44 +01:00
David Given
6af432f798 Refactor FluxEngine to use dataspecs for source and destinations. Document
them.
2019-01-21 00:38:03 +01:00
David Given
4b6b4aa9f7 Add the DataSpec class. 2019-01-13 00:43:19 +01:00