Commit Graph

259 Commits

Author SHA1 Message Date
David Given
c5373480ba Move a lot of the data-handling utilities into their own module. 2024-10-13 13:35:48 +02:00
David Given
e1f2494966 Create a config module containing all the configuration, proto and flags
stuff.
2024-10-13 11:57:18 +02:00
David Given
f5b14cadf8 Use "" to access the fmt headers, not <>, or else Windows can't find the
fallback library.
2024-10-09 15:10:22 +02:00
David Given
27ab1e3e5a Refactor a lot of the proto stuff. 2024-10-08 23:18:30 +02:00
David Given
a6981ff7ef Split the FluxmapReader and FluxPattern files. 2024-10-02 00:42:06 +02:00
David Given
ca940d1599 Refactor core libraries into their own library. 2024-10-01 20:36:53 +02:00
David Given
8876aae2cc Calculate gaps in bits, not bytes (more accurate). Pad the end of the track to
avoid weirdness reading the last sector.
2024-04-30 23:09:30 +02:00
David Given
a84cf83ce5 Add a prototype Tartu encoder. 2024-04-30 00:56:26 +02:00
David Given
2732d9aec8 Get the Tartu checksums working, and hook up the CP/M filesystem code. 2024-04-21 00:17:11 +02:00
David Given
af3e257c78 Add boilerplate for the Tartu. 2024-04-19 21:10:49 +02:00
David Given
533b217c8f Eliminate the broken tpi system for a simple drive/format type field. 2023-10-29 21:10:14 +01:00
dg
dcb92db519 Remove old build system. 2023-10-26 19:29:01 +00:00
David Given
ca6b90f8c1 Split C and C++ libraries, so that you can use C++ compiler flags. Build with
C++17.
2023-10-24 22:00:09 +02:00
David Given
07aa416975 Make the tests work. 2023-10-22 22:57:54 +02:00
David Given
986be921f4 First working command-line executable. 2023-10-22 19:18:14 +02:00
David Given
f5f223f622 First steps towards reworking the build system... again. 2023-10-21 23:02:46 +02:00
Eric Anderson
96d4df296d Micropolis: Add Vector ECC support 2023-07-29 14:03:08 -07:00
Eric Anderson
c623d95a80 Micropolis: Fix encoder and decoder to support encodedecodetest
These changes should not impact reading/writing from real disks. This
includes a bug fix to Fluxmap where it might miss a trailing interval
when adding bits, as mentioned in #333.

With the Fluxmap bug fixed, the encoder now includes index pulses in its
output. The decoder was relaxed to allow reading precisely one track.

We don't actually add an encodedecodetest for micropolis, though,
because the SCP encoder is unhappy with so many revolutions.
2023-07-29 07:08:23 -07:00
David Given
6ce3ce20d0 Remove stray debugging code. 2023-07-07 01:03:31 +02:00
dg
b7634da310 Work around Apple dev kit stupidity (definiting BYTE_SIZE in a standard
header...)
2023-05-15 22:51:16 +00:00
dg
dcfcc6271c Sort out a whole bunch of other things, including cleaning up the way the
verification source is handled.
2023-05-12 23:28:25 +00:00
dg
e61eeb8c6f Fetching the flux source is now done through Config. 2023-05-12 21:25:54 +00:00
dg
baaeb0bca7 Fix mangled formatting caused by clang-format. 2023-05-09 21:39:35 +00:00
dg
466c3c34e5 Replace the Error() object with an error() function which takes fmt
formatspecs, making for much cleaner code. Reformatted everything.

This actually happened in multiple steps but then I corrupted my local
repository and I had to recover from the working tree.
2023-05-09 20:59:44 +00:00
Eric Anderson
d298f5b16e Micropolis: disk rotate period is 200 ms
The disks are expected to contain 100,000 bitcells, so clock_period_us
and rotational_period_ms need to align.
2023-04-23 13:54:50 -07:00
dg
ef60bfff6b Looks like the Roland D-20 format is the same as Brother240??? 2023-04-06 17:07:00 +00:00
dg
a633b73e12 Add boilerplate for Roland D20 decoder. 2023-04-05 22:36:54 +00:00
David Given
b78a057c81 Merge branch 'master' into basis 2023-03-31 22:10:47 +01:00
dg
0551ddc276 Add write support for Apple II 640kB disks. 2023-03-28 20:36:43 +00:00
dg
27a04ee22b Add initial support for the Basis-108. 2023-03-27 23:07:59 +00:00
dg
921e178e83 Tone down the bad-sector-size warning a bit. 2023-03-26 18:23:25 +00:00
dg
7ea4e116cc Add a warning if the configured sector size doesn't match the one on disk. 2023-03-26 16:25:40 +00:00
dg
3f85c9f006 Adjust timings to be more correct. 2023-01-06 21:28:51 +00:00
dg
4984a53bfd First hypothetically working version of the agat encoder. 2023-01-05 18:36:01 +00:00
dg
b0c77653a2 Add the boilerplate for the Agat encoder. 2023-01-05 12:04:36 +00:00
dg
86d0893261 Adjust mac encoder clock to be more like the real thing. 2022-12-05 20:27:52 +00:00
dg
c374ffd15e Increase the smaky disk signature to 32 bits. 2022-11-26 22:56:45 +00:00
dg
cf975b74bf Rename smaky to smaky6. 2022-11-26 11:18:38 +00:00
dg
5d65dcf3c8 Even better Smaky reads, and maybe with sector 0 in the right place. 2022-11-25 21:28:59 +00:00
dg
f299ec1f8d More Smaky improvements. 2022-11-25 20:23:24 +00:00
dg
3c7c4639a9 Massively improved the quality of Smaky reads. 2022-11-25 19:33:29 +00:00
dg
7e9a1268a5 Add an extremely prototype version of the Smaky decoder. 2022-11-23 21:44:40 +00:00
dg
a60b8e68ca Add a Bytes method for reversing each bit. 2022-11-23 21:44:10 +00:00
David Given
d0fb85e712 Rename all the remaining layout and location variables to trackInfo (where
appropriate).
2022-09-16 00:20:54 +02:00
David Given
81cbd00cc8 Rename Track to TrackInfo, which better describes what it is. 2022-09-16 00:09:39 +02:00
David Given
4a565b5ea0 Split the Layout class. 2022-09-16 00:07:22 +02:00
David Given
82f61eee12 Eliminate Location in favour of Layout. 2022-09-15 23:52:07 +02:00
David Given
88fc7ff9c3 Begin cleaning up the Layout stuff. 2022-09-15 21:45:12 +02:00
David Given
9a8fc80220 Massive overhaul of how the physical/logical layout mapping is done, to make it
more consistent and bidirectional everywhere and just generally better.
Hopefully this fixes that pesky 1581 problem.
2022-09-15 20:23:33 +02:00
David Given
6b7e81d7fb Move requiredSectors() to the base class. 2022-09-13 00:32:04 +02:00