Commit Graph

40 Commits

Author SHA1 Message Date
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
7dd7057e1b Bump protocol number. 2019-03-28 23:10:08 +01:00
David Given
dfbe839826 Bump the protocol number. 2019-03-27 22:11:15 +01:00
David Given
098b2371a4 Crunched datastreams are now used when writing. 2019-03-27 21:58:41 +01:00
David Given
0453837c03 The high-density flag now actually changes the high-density line to the drive. 2019-03-26 20:05:16 +01:00
David Given
45eaf14133 Add a flag for setting the drive to high density mode. 2019-03-23 11:32:55 +01:00
David Given
4fe27afe9f Backed out changeset cd5bed99b0b4 --- erroneously pushed to master. 2019-03-24 17:59:17 +01:00
David Given
7f9a85ff77 Add a flag for setting the drive to high density mode. 2019-03-23 11:32:55 +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
4b0c7b095b FINALLY make the UDB-based sampler work... although without rollover, yet.
Sadly I seem to also have broken the sequencer.
2019-02-27 23:00:47 +01:00
David Given
74c6c6db56 Non-working attempt at replacing the sampler with a UDB datapath (so I can use
the FIFO).
2019-02-24 14:50:33 +01:00
David Given
a77925fe64 Replace the complicated sampler with 10 lines of Verilog; the hardware should
now be able to handle any length of transition. And it's simpler.
2019-02-22 20:01:34 +01:00
David Given
2527ac2ce9 Initial support for twin drives and 5.25" drives. 2019-02-11 23:43:44 +01:00
David Given
9f64de0c49 Do a recalibrate when retrying a track read --- it makes things a bit more
reliable.
2019-02-09 22:55:46 +01:00
David Given
4181736073 Added fe-writetestpattern. 2019-01-23 01:05:49 +01:00
David Given
80cb1e7a81 Add the ability to erase tracks. The writer now erases tracks for which no data
is available.
2019-01-10 23:51:47 +01:00
David Given
4f83aa8623 Change the USB ID to the new 1209:6e00 one allocated from pidcodes.github.com. 2018-12-14 19:08:19 +01:00
David Given
7efaae2f76 Add the skeleton of the new client app. 2018-10-20 13:28:20 +02:00
David Given
8648405710 Move the old client into its own directory; discover a file I forgot to check
in!
2018-10-20 11:53:55 +02:00
David Given
f9146b2b92 You can now record multiple revolutions (necessary for the Brother which puts
the index hole in the wrong place). Sector header record GCR is solved,
probably; data record GCR is partially solved, although kinda weird (should
check that my pulse train decoder isn't dropping bits).
2018-10-19 02:11:38 +02:00
David Given
3dec0ac54d Add the skeleton of the Brother GCR decoder. 2018-10-18 01:44:59 +02:00
David Given
607bb141b3 Radically rework decoding: there's now a simple statistical clock guesser, and
then we read the pulsetrain into nice tidy bits with a proper clock, which
makes the decoder's job way easier. We can actually get rid of the entire MFM
decoder state machine. Also, after sorting out the magic bit patterns at the
beginning of records, we can now reliably pull them out of the bitstream
without needing to know anything about the records themselves.
2018-10-18 00:27:48 +02:00
David Given
ed5b9c0b8d Implement simple precompensation; it makes HD writes more reliable (still not
quite right, though), but seems to mangle DD.
2018-10-13 20:04:52 +02:00
David Given
aa7d420754 Start work on an autocalibrator to detect precompensation, but something's gone
wrong and our reads are all bunk.
2018-10-13 12:04:37 +02:00
David Given
5d4e929302 Added the fluxdump command, for exporting a fluxmap into something like
Audacity where it can be visualised.
2018-10-10 23:02:45 +02:00
David Given
1430dfc4e1 Add the test pattern generator back again. Try some experimental code to
convert a fluxmap into an encoding_buffer, but locking each pulse to a us grid.
I'm not sure whether this is good enough for reliable decoding, but early
indications look promising.
2018-10-09 23:46:24 +02:00
David Given
40b9fbc25d Fix ghastly DMA ordering bug leading to corrupted writes. Writes are less
corrupted! Still can't reliably read back what I wrote, though. Added a test
pattern feature to write, to aid debugging.
2018-10-09 00:23:21 +02:00
David Given
30271d7e95 Just enough writing works to utterly destroy tracks now. 2018-10-06 23:01:24 +02:00
David Given
8f1cef48b1 Realise that the weird data dropouts were due to a stray capacitor on the
board... so remove it. Better now. Also realise that PSoC Creator lies to you
about clocks, so adjust the sample clock to be derivable from the USB clock,
making it both the right frequency and much more accurate --- decode success is
dramatically improved (presumably due to less jitter). Redesign the capture
logic to use a timer; simpler now.
2018-10-06 18:32:57 +02:00
David Given
74d051dff3 Start sketching out the write code; attempt to make more robust in the face of
the weird data dropouts.
2018-10-06 13:47:34 +02:00
David Given
d6b71beacf Reduced the sampling rate to 8MHz; 16MHz means that on a 720kB disk some
samples are more than 128 ticks apart! Doubled the settling time to make reads
more reliable; added disk change logic to rehome the disk when you replace
floppies.
2018-10-05 22:58:56 +02:00
David Given
339cdd5105 Add a partially working MFM decoder --- MFM's fine, it's aligning to sync bytes
which is hard.
2018-10-04 00:02:13 +02:00
David Given
4e19882d76 Archival checkin of messed-about non-working code to actually read data from
disk. Something's wrong with the DMA; requesting a transfer every 2us with a TD
size of 64 bytes is somehow leading to an nrq interrupt every 8us. Mysterious.
2018-09-30 01:13:39 +02:00
David Given
e5155d98cc You can now transfer gibberish from the FluxEngine to the PC to test bandwidth.
On Windows we're getting 620kB/s.
2018-09-29 18:32:06 +02:00
David Given
c174e5cafe You can now measure the rotation speed from the interval between index pulses. 2018-09-29 16:37:04 +02:00
David Given
026842b8a4 There's a seek command now, which might even work. 2018-09-29 14:51:01 +02:00
David Given
7d98ec7e01 Okay, the USB stuff works! I can send a command to the device and receive the
reply.
2018-09-29 12:13:00 +02:00
David Given
d06e201933 Finally figure out the secrets of WCID, so we don't need a signed driver to do
raw endpoints. Hurrah! Rip out the CDC stuff in favour of them.
2018-09-26 00:37:19 +02:00
David Given
7fc3b882d6 Lots of wasted time trying to make raw endpoints work --- but you can't do that
on Windows because libusb can't talk to any device without a signed driver.
Stupid Windows.

Luckily I can get 500+kB/s out of CDC, even on Windows, so let's use that.
2018-09-25 00:11:06 +02:00
David Given
264cf47c00 Add the skeleton of the client-side program. 2018-09-23 13:13:29 +02:00