Skip to content

Commit 3440792

Browse files
committed
Update documentation.
1 parent 397ae84 commit 3440792

File tree

3 files changed

+120
-109
lines changed

3 files changed

+120
-109
lines changed

README.md

Lines changed: 72 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,37 @@ the excellent [ImHex](https://imhex.werwolv.net/), which is substantially better
1414
What?
1515
-----
1616

17-
The FluxEngine is a very cheap USB floppy disk interface capable of reading and
18-
writing exotic non-PC floppy disk formats. It allows you to use a conventional
19-
PC drive to accept Amiga disks, CLV Macintosh disks, bizarre 128-sector CP/M
20-
disks, and other weird and bizarre formats. (Although not all of these are
21-
supported yet. I could really use samples.)
22-
23-
The hardware consists of a single, commodity part with a floppy drive
24-
connector soldered onto it. No ordering custom boards, no fiddly surface
25-
mount assembly, and no fuss: nineteen simpler solder joints and you're done.
26-
You can make one for $15 (plus shipping).
27-
28-
Don't believe me? Watch the demo reel!
29-
30-
<div style="text-align: center">
31-
<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>
32-
</div>
33-
34-
**New!** The FluxEngine client software now works with
35-
[Greaseweazle](https://github.com/keirf/Greaseweazle/wiki) and
36-
[Applesauce](https://applesaucefdc.com/) hardware. So, if you can't find a PSoC5
37-
development kit, or don't want to use the Cypress Windows tools for programming
38-
it, you can use one of these instead. Very nearly all FluxEngine features are
39-
available with the Greaseweazle and it works out-of-the box; the Applesauce is a
40-
bit less supported but still works. See the [dedicated Greaseweazle
41-
documentation page](doc/greaseweazle.md) or the [Applesauce
42-
page](doc/applesauce.md) for more information.
17+
FluxEngine is two things:
18+
19+
- Firstly: the [FluxEngine hardware](doc/building-hardware.md) is a very cheap USB floppy disk interface capable of
20+
reading and
21+
writing exotic non-PC floppy disk formats. It allows you to use a conventional
22+
PC drive to accept Amiga disks, CLV Macintosh disks, bizarre 128-sector CP/M
23+
disks, and other weird and bizarre formats. (Although not all of these are
24+
supported yet. I could really use samples.)
25+
26+
The hardware consists of a single, commodity part with a floppy drive
27+
connector soldered onto it. No ordering custom boards, no fiddly surface
28+
mount assembly, and no fuss: nineteen simpler solder joints and you're done.
29+
You can make one for $15 (plus shipping).
30+
31+
Don't believe me? Watch the demo reel!
32+
33+
<div style="text-align: center">
34+
<iframe width="373" height="210" src="https://www.youtube.com/embed/m_s1iw8eW7o" frameborder="0"
35+
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
36+
</div>
37+
38+
- Secondly: the [FluxEngine software](doc/building-client.md) is a cross-platform set of tools for reading, writing and
39+
processing floppy disk magnetic flux information.
40+
It works on the FluxEngine hardware (described above), the
41+
[Greaseweazle](https://github.com/keirf/Greaseweazle/wiki), and to a limited extent the
42+
[Applesauce](https://applesaucefdc.com/). You can also use it standalone for working with either flux dumps or simple
43+
sector images of disks.
44+
45+
See the [dedicated Greaseweazle
46+
documentation page](doc/greaseweazle.md) or the [Applesauce
47+
page](doc/applesauce.md) for more information about using the FluxEngine client with these devices.
4348

4449
Where?
4550
------
@@ -52,35 +57,37 @@ How?
5257
This page was getting kinda unwieldy so I've broken it up. Please consult the
5358
following friendly articles:
5459

55-
- [Frequently asked questions](doc/faq.md) ∾ but why...? ∾ does it...? ∾ can it...?
56-
57-
- [How the FluxEngine works](doc/technical.md) ∾ nitty gritty of the
58-
sampler/sequencer hardware ∾ useful links on floppy drives ∾ why I'm not
59-
using an Arduino/STM32/ESP32/Raspberry Pi
60+
- [Frequently asked questions](doc/faq.md) ∾ but why...? ∾ does it...? ∾ can it...?
61+
62+
- [How the FluxEngine works](doc/technical.md) ∾ nitty gritty of the
63+
sampler/sequencer hardware ∾ useful links on floppy drives ∾ why I'm not
64+
using an Arduino/STM32/ESP32/Raspberry Pi
65+
66+
- [Building the FluxEngine software](doc/building-client.md) ∾ dependencies ∾ build commands ∾ installation
67+
68+
- [Making the FluxEngine hardware](doc/building-hardware.md) ∾ what parts you need ∾ building it ∾
69+
setting up the toolchain ∾ compiling the firmware ∾ programming the board
6070

61-
- [Making a FluxEngine](doc/building.md) ∾ what parts you need ∾ building it
62-
setting up the toolchain ∾ compiling the firmware ∾ programming the board
71+
- [Using a FluxEngine](doc/using.md) ∾ what to do with your new hardware
72+
flux files and image files ∾ knowing what you're doing
6373

64-
- [Using a FluxEngine](doc/using.md) ∾ what to do with your new hardware ∾
65-
flux files and image files ∾ knowing what you're doing
74+
- [Using Greaseweazle hardware with the FluxEngine client
75+
software](doc/greaseweazle.md) ∾ what works ∾ what doesn't work ∾ where to
76+
go for help
6677

67-
- [Using Greaseweazle hardware with the FluxEngine client
68-
software](doc/greaseweazle.md) ∾ what works ∾ what doesn't work ∾ where to
69-
go for help
78+
- [Configuring for your drive](doc/drives.md) ∾ but I don't have a 80 track
79+
drive! ∾ reading and writing 40 track disks ∾ Shugart and Apple II
7080

71-
- [Configuring for your drive](doc/drives.md) ∾ but I don't have a 80 track
72-
drive! ∾ reading and writing 40 track disks ∾ Shugart and Apple II
81+
- [Direct filesystem access](doc/filesystem.md) ∾ imaging files is a pain
82+
∾ accessing files directly ∾ features and limitation ∾ it works on disk
83+
images too, you say?
7384

74-
- [Direct filesystem access](doc/filesystem.md) ∾ imaging files is a pain
75-
∾ accessing files directly ∾ features and limitation ∾ it works on disk
76-
images too, you say?
77-
78-
- [Troubleshooting dubious disks](doc/problems.md) ∾ it's not an exact
79-
science ∾ the sector map ∾ clock detection and the histogram
85+
- [Troubleshooting dubious disks](doc/problems.md) ∾ it's not an exact
86+
science ∾ the sector map ∾ clock detection and the histogram
8087

81-
- [Disk densities](doc/driveresponse.md) ∾ what's the difference between an HD
82-
and DD disk? ∾ you can't do that with that ∾ measuring your drive's ability to
83-
work with exotic formats ∾ I think my drive is broken
88+
- [Disk densities](doc/driveresponse.md) ∾ what's the difference between an HD
89+
and DD disk? ∾ you can't do that with that ∾ measuring your drive's ability to
90+
work with exotic formats ∾ I think my drive is broken
8491

8592
Which?
8693
------
@@ -148,22 +155,22 @@ choices because they can store multiple types of file system.
148155

149156
### Notes
150157

151-
- IBM PC disks are the lowest-common-denominator standard. A number of other
152-
systems use this format in disguise (the Atari ST, late-era Apple
153-
machines, Acorn). FluxEngine supports both FM and MFM disks, although you
154-
have to tell it which one. If you have an unknown disk, try this; you may
155-
get something. Then [tell me about
156-
it](https://github.com/davidgiven/fluxengine/issues/new).
157-
158-
- Not many formats support writing yet. That's because I need actual,
159-
physical hardware to test with in order to verify it works, and I only
160-
have a limited selection. (Plus a lot of the write code needs work.)
161-
There hasn't been a lot of demand for this yet; if you have a pressing
162-
need to write weird disks, [please
163-
ask](https://github.com/davidgiven/fluxengine/issues/new). I haven't
164-
implemented write support for PC disks because they're boring and I'm lazy,
165-
and also because they vary so much that figuring out how to specify them
166-
is hard.
158+
- IBM PC disks are the lowest-common-denominator standard. A number of other
159+
systems use this format in disguise (the Atari ST, late-era Apple
160+
machines, Acorn). FluxEngine supports both FM and MFM disks, although you
161+
have to tell it which one. If you have an unknown disk, try this; you may
162+
get something. Then [tell me about
163+
it](https://github.com/davidgiven/fluxengine/issues/new).
164+
165+
- Not many formats support writing yet. That's because I need actual,
166+
physical hardware to test with in order to verify it works, and I only
167+
have a limited selection. (Plus a lot of the write code needs work.)
168+
There hasn't been a lot of demand for this yet; if you have a pressing
169+
need to write weird disks, [please
170+
ask](https://github.com/davidgiven/fluxengine/issues/new). I haven't
171+
implemented write support for PC disks because they're boring and I'm lazy,
172+
and also because they vary so much that figuring out how to specify them
173+
is hard.
167174

168175
If you have samples of weird disks, and want to send them to me --- either
169176
FluxEngine, Kryoflux or Catweasel dumps, or (even better) actually physically

doc/building-client.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
Building the client
2+
=====================
3+
4+
The client software is where the intelligence, such as it is, is. It doesn't need the FluxEngine hardware, and will work
5+
either with it, a Greaseweazle, or (to a limited extent) an Applesauce.
6+
7+
The CLI is pretty generic libusb stuff and should build and run on pretty much anything; the GUI is based on ImHex and
8+
will work wherever ImHex does. Support platforms for the FluxEngine client include Windows, Linux and OSX as
9+
well, although on Windows it'll need MSYS2 and mingw32. You'll need to
10+
install some support packages. **You will need to check out git with submodules enabled.**
11+
12+
- For Linux with Ubuntu/Debian:
13+
`libudev-dev` `libsqlite3-dev` `protobuf-compiler` `libfmt-dev`
14+
`libprotobuf-dev` `libmagic-dev` `libmbedtls-dev`
15+
`libcurl4-openssl-dev` `libmagic-dev` `nlohmann-json3-dev`
16+
`libdbus-1-dev` `libglfw3-dev` `libmd4c-dev` `libfreetype-dev`
17+
`libcli11-dev` `libboost-regex-dev`
18+
- For OSX with Homebrew:
19+
`sqlite` `pkg-config` `libusb` `protobuf` `fmt` `make` `coreutils`
20+
`dylibbundler` `libjpeg` `libmagic` `nlohmann-json` `cli11` `boost`
21+
`glfw3` `md4c` `ninja` `python` `freetype2` `mbedtls`
22+
- For Windows with MSYS and pacboy:
23+
`protobuf:p` `pkgconf:p` `curl-winssl:p` `file:p` `glfw:p` `mbedtls:p`
24+
`sqlite:p` `freetype:p` `boost:p` `gcc:p` `binutils:p` `nsis:p`
25+
`abseil-cpp:p`
26+
27+
There may be mistakes here --- please [get in
28+
touch](https://github.com/davidgiven/fluxengine/issues/new) if I've missed
29+
anything.
30+
31+
Windows and Linux (and other Unixes) build by just doing `make`. OSX builds by
32+
doing `gmake` (we're using a feature which the elderly default make in OSX
33+
doesn't have). Parallel builds will be detected automatically; do `-j1` if for some
34+
reason you don't want one.
35+
You should end up with some executables in the current directory. The command line version
36+
is called `fluxengine` or `fluxengine.exe` depending on your platform,
37+
and the ImHex-based GUI will be `fluxengine-gui` or `fluxengine-gui.exe`.
38+
They have
39+
minimal dependencies and you should be able to put it anywhere. The other
40+
binaries may also be of interest.
41+
42+
Potential issues:
43+
44+
- Complaints about a missing `libudev` on Windows? Make sure you're using the
45+
mingw Python rather than the msys Python.
46+
47+
If it doesn't build, please [get in
48+
touch](https://github.com/davidgiven/fluxengine/issues/new).
Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -194,50 +194,6 @@ until the light stays solidly on. Now you should be able to acquire
194194
the port and proceed normally.
195195

196196

197-
## Building the client
198-
199-
The client software is where the intelligence, such as it is, is. It's pretty
200-
generic libusb stuff and should build and run on Windows, Linux and OSX as
201-
well, although on Windows it'll need MSYS2 and mingw32. You'll need to
202-
install some support packages.
203-
204-
- For Linux with Ubuntu/Debian:
205-
`libusb-1.0-0-dev`, `libsqlite3-dev`, `zlib1g-dev`,
206-
`libudev-dev`, `protobuf-compiler`, `libwxgtk3.0-gtk3-dev`,
207-
`libfmt-dev`, `python3`. `ninja-build`
208-
- For Linux with Fedora/Red Hat:
209-
`git`, `make`, `gcc`, `gcc-c++`, `xxd`, `protobuf-compiler`,
210-
`protobuf-devel`, `fmt-devel`, `systemd-devel`, `wxGTK3-devel`,
211-
`libsqlite3x-devel`, `ninja-build`
212-
- For OSX with Homebrew: `libusb`, `pkg-config`, `sqlite`,
213-
`protobuf`, `truncate`, `wxwidgets`, `fmt`. `ninja`
214-
- For Windows with WSL: `protobuf-c-compiler` `protobuf-devel` `fmt-devel`
215-
`systemd-devel` `sqlite-devel` `wxGTK-devel` `mingw32-gcc` `mingw32-gcc-c++`
216-
`mingw32-zlib-static` `mingw32-protobuf-static` `mingw32-sqlite-static`
217-
`mingw32-wxWidgets3-static` `mingw32-libpng-static` `mingw32-libjpeg-static`
218-
`mingw32-libtiff-static` `mingw32-nsis png2ico` `ninja-build`
219-
220-
These lists are not necessarily exhaustive --- please [get in
221-
touch](https://github.com/davidgiven/fluxengine/issues/new) if I've missed
222-
anything.
223-
224-
Windows and Linux (and other Unixes) build by just doing `make`. OSX builds by
225-
doing `gmake` (we're using a feature which the elderly default make in OSX
226-
doesn't have). Remember to add an appropriate `-j` option for a parallel build.
227-
You should end up with some executables in the current directory, one of which
228-
is called `fluxengine` or `fluxengine.exe` depending on your platform. It has
229-
minimal dependencies and you should be able to put it anywhere. The other
230-
binaries may also be of interest.
231-
232-
Potential issues:
233-
234-
- Complaints about a missing `libudev` on Windows? Make sure you're using the
235-
mingw Python rather than the msys Python.
236-
237-
If it doesn't build, please [get in
238-
touch](https://github.com/davidgiven/fluxengine/issues/new).
239-
240-
241197
## Connecting it up
242198

243199
You should now have a working board, so it's time to test it.

0 commit comments

Comments
 (0)