• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H20-Feb-2021-4236

FluxEngine.cydsn/H20-Feb-2021-14,14013,741

arch/H20-Feb-2021-3,3222,522

dep/H20-Feb-2021-75,63654,514

doc/H03-May-2022-2,5501,946

lib/H20-Feb-2021-6,9525,574

scripts/H20-Feb-2021-3725

src/H20-Feb-2021-2,8302,310

tests/H20-Feb-2021-993827

tools/H20-Feb-2021-238196

.appveyor.ymlH A D20-Feb-20211.2 KiB4334

.gitignoreH A D20-Feb-202114 32

COPYING.mdH A D20-Feb-20211.1 KiB1916

MakefileH A D03-May-20221.2 KiB5340

README.mdH A D20-Feb-202110.3 KiB222170

mkninja.shH A D20-Feb-20216.4 KiB299258

protocol.hH A D20-Feb-20214.3 KiB194163

README.md

1FluxEngine
2==========
3
4(If you're reading this on GitHub, the formatting's a bit messed up. [Try the
5version on cowlark.com instead.](http://cowlark.com/fluxengine/)
6
7What?
8-----
9
10The FluxEngine is a very cheap USB floppy disk interface capable of reading and
11writing exotic non-PC floppy disk formats. It allows you to use a conventional
12PC drive to accept Amiga disks, CLV Macintosh disks, bizarre 128-sector CP/M
13disks, and other weird and bizarre formats. (Although not all of these are
14supported yet. I could really use samples.)
15
16The hardware consists of a single, commodity part with a floppy drive
17connector soldered onto it. No ordering custom boards, no fiddly surface
18mount assembly, and no fuss: nineteen simpler solder joints and you're done.
19You can make one for $15 (plus shipping).
20
21Don't believe me? Watch the demo reel!
22
23<div style="text-align: center">
24<iframe width="373" height="210" src="https://www.youtube.com/embed/m_s1iw8eW7o" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
25</div>
26
27**New!** The FluxEngine client software now works with
28[GreaseWeazle](https://github.com/keirf/Greaseweazle/wiki) hardware. So, if you
29can't find a PSoC5 development kit, or don't want to use the Cypress Windows
30tools for programming it, you can use one of these instead. Very nearly all
31FluxEngine features are available with the GreaseWeazle and it works out-of-the
32box. See the [dedicated GreaseWeazle documentation page](doc/greaseweazle.md)
33for more information.
34
35**Important note.** On 2020-04-02 I changed the bytecode format (and firmware).
36Flux files will need to be upgraded with `fluxengine upgradefluxfile`. The new
37format should be more reliable and use way, way less bandwidth. Sorry for the
38inconvenience.
39
40Where?
41------
42
43It's [open source on GitHub!](https://github.com/davidgiven/fluxengine)
44
45How?
46----
47
48This page was getting kinda unwieldy so I've broken it up. Please consult the
49following friendly articles:
50
51  - [Frequently asked questions](doc/faq.md) ∾ but why...? ∾ does it...? ∾ can it...?
52
53  - [How the FluxEngine works](doc/technical.md) ∾ nitty gritty of the
54    sampler/sequencer hardware ∾ useful links on floppy drives ∾ why I'm not
55    using an Arduino/STM32/ESP32/Raspberry Pi
56
57  - [Making a FluxEngine](doc/building.md) ∾ what parts you need ∾ building it ∾
58    setting up the toolchain ∾ compiling the firmware ∾ programming the board
59
60  - [Using a FluxEngine](doc/using.md) ∾ what to do with your new hardware ∾
61    flux files and image files ∾ knowing what you're doing
62
63  - [Using GreaseWeazle hardware with the FluxEngine client
64	software](doc/greaseweazle.md) ∾ what works ∾ what doesn't work ∾ where to
65	go for help
66
67  - [Troubleshooting dubious disks](doc/problems.md) ∾ it's not an exact
68	science ∾ the sector map ∾ clock detection and the histogram
69
70  - [Checking your drive](doc/driveresponse.md) ∾ you can't do that with that ∾
71	measuring your drive's ability to work with exotic formats
72
73Which?
74------
75
76The current support state is as follows.
77
78Dinosaurs (��) have yet to be observed in real life --- I've written the
79decoder based on Kryoflux (or other) dumps I've found. I don't (yet) have
80real, physical disks in my hand to test the capture process.
81
82Unicorns (��) are completely real --- this means that I've read actual,
83physical disks with these formats and so know they work (or had reports from
84people who've had it work).
85
86### Old disk formats
87
88| Format                                   | Read? | Write? | Notes |
89|:-----------------------------------------|:-----:|:------:|-------|
90| [IBM PC compatible](doc/disk-ibm.md)     |  ��   |   ��   | and compatibles (like the Atari ST) |
91| [Acorn ADFS](doc/disk-acornadfs.md)      |  ��   |   ��*  | single- and double- sided           |
92| [Acorn DFS](doc/disk-acorndfs.md)        |  ��   |   ��*  |                                     |
93| [Ampro Little Board](doc/disk-ampro.md)  |  ��   |   ��*   |                                     |
94| [Apple II DOS 3.3](doc/disk-apple2.md)   |  ��   |        | doesn't do logical sector remapping |
95| [Amiga](doc/disk-amiga.md)               |  ��   |        |                                     |
96| [Commodore 64 1541](doc/disk-c64.md)     |  ��   |        | and probably the other GCR formats  |
97| [Brother 120kB](doc/disk-brother.md)     |  ��   |        |                                     |
98| [Brother 240kB](doc/disk-brother.md)     |  ��   |   ��   |                                     |
99| [Brother FB-100](doc/disk-fb100.md)      |  ��   |        | Tandy Model 100, Husky Hunter, knitting machines |
100| [Macintosh 800kB](doc/disk-macintosh.md) |  ��   |   ��   | and probably the 400kB too          |
101| [TRS-80](doc/disk-trs80.md)              |  ��   |   ��*  | a minor variation of the IBM scheme |
102{: .datatable }
103
104`*`: these formats are variations of the generic IBM format, and since the
105IBM writer is completely generic, it should be configurable for these
106formats... theoretically. I don't have the hardware to try it.
107
108### Even older disk formats
109
110These formats are for particularly old, weird architectures, even by the
111standards of floppy disks. They've largely been implemented from single flux
112files with no access to physical hardware. Typically the reads were pretty
113bad and I've had to make a number of guesses as to how things work. They do,
114at least, check the CRC so what data's there is probably good.
115
116| Format                                   | Read? | Write? | Notes |
117|:-----------------------------------------|:-----:|:------:|-------|
118| [AES Superplus / No Problem](doc/disk-aeslanier.md) |  ��   | | hard sectors! |
119| [Durango F85](doc/disk-durangof85.md)    |  ��   |        | 5.25" |
120| [DVK MX](doc/disk-mx.md)                 |  ��   |        | Soviet PDP-11 clone |
121| [Micropolis](doc/disk-micropolis.md)     |  ��   |        | Micropolis 100tpi drives |
122| [TI DS990 FD1000](doc/disk-tids990.md)   |  ��   |  ��    | 8" |
123| [Victor 9000](doc/disk-victor9k.md)      |  ��   |        | 8" |
124| [Zilog MCZ](doc/disk-zilogmcz.md)        |  ��   |        | 8" _and_ hard sectors |
125{: .datatable }
126
127### Notes
128
129  - IBM PC disks are the lowest-common-denominator standard. A number of other
130    systems use this format in disguise (the Atari ST, late-era Apple
131    machines, Acorn). FluxEngine supports both FM and MFM disks, although you
132    have to tell it which one. If you have an unknown disk, try this; you may
133    get something. Then [tell me about
134    it](https://github.com/davidgiven/fluxengine/issues/new).
135
136  - Not many formats support writing yet. That's because I need actual,
137    physical hardware to test with in order to verify it works, and I only
138    have a limited selection. (Plus a lot of the write code needs work.)
139    There hasn't been a lot of demand for this yet; if you have a pressing
140    need to write weird disks, [please
141    ask](https://github.com/davidgiven/fluxengine/issues/new). I haven't
142    implement write support for PC disks because they're boring and I'm lazy,
143    and also because they vary so much that figuring out how to specify them
144    is hard.
145
146If you have samples of weird disks, and want to send them to me --- either
147FluxEngine, Kryoflux or Catweasel dumps, or (even better) actually physically
148--- I can identify them and add support.
149
150Please note that at this point I am *not interested in copy protected disks*.
151It's not out of principle. It's just they'll drive me insane. FluxEngine will
152most likely be able to read the data fine, unless they're doing bizarre
153things like spiral tracks or partially encoded data, but let's stick with
154normal conventionally formatted disks for the time being!
155
156But!
157----
158
159That said, I need to post a warning.
160
161<div style="text-align: center; color: red">
162<b>********** BIG DISCLAIMERY WARNING WITH ASTERISKS **********</b>
163</div>
164
165Floppy disks are old, unreliable, and frequently damaged and/or filthy. I
166expect you to know what you're doing and be responsible for your own actions.
167It's entirely possible for a damaged disk, when read, to scrape the magnetic
168coating off the disk and pack it into the drive's disk head, not only
169permanently damaging the drive, but also irrecoverably destroying any data on
170the disk.
171
172If this happens and you complain to me, I will be sympathetic but
173fundamentally unhelpful. Proceed at your own risk.
174
175Remember: **FluxEngine is not a substitute for a real data recovery
176service.** Is your data worth money to you? If so, don't try to read it using
177an open source project hacked together by some person you've never met on the
178internet.
179
180Also, remember to clean your disk heads.
181
182<div style="text-align: center; color: red">
183<b>********** END OF WARNING **********</b>
184</div>
185
186Who?
187----
188
189The FluxEngine was designed, built and written by me, David Given. You may
190contact me at dg@cowlark.com, or visit my website at http://www.cowlark.com.
191There may or may not be anything interesting there.
192
193License
194-------
195
196Everything here _except the contents of the `dep` directory_ is © 2019 David
197Given and is licensed under the MIT open source license. Please see
198[COPYING](COPYING) for the full text. The tl;dr is: you can do what you like
199with it provided you don't claim you wrote it.
200
201As an exception, `dep/fmt` contains a copy of [fmt](http://fmtlib.net),
202maintained by Victor Zverovich (`vitaut <https://github.com/vitaut>`) and
203Jonathan Müller (`foonathan <https://github.com/foonathan>`) with
204contributions from many other people. It is licensed under the terms of the
205BSD license. Please see the contents of the directory for the full text.
206
207As an exception, `dep/emu` contains parts of the OpenBSD C library
208code, maintained by Todd Miller and William A. Rowe (and probably others). It is licensed
209under the terms of the 3-clause BSD license. Please see the contents of the
210directory for the full text. It's been lightly modified by me.
211
212As an exception, `dep/agg` contains parts of the Anti-Grain Antialiasing
213library, written by Maxim Semanarev (and others). It is licensed under the
214terms of the 3-clause BSD license. Please see the contents of the directory for
215the full text. It's been lightly modified by me.
216
217As an exception, `dep/stb` contains parts of the libstb utility library,
218written by Sean T Barett (and others). It is public domain/Unlicense/MIT
219licensed, at your choice. Please see the contents of the directory for the full
220text.
221
222