diff --git a/doc/disk-40track_drive.md b/doc/disk-40track_drive.md
index f5ce0ddb..203628f8 100644
--- a/doc/disk-40track_drive.md
+++ b/doc/disk-40track_drive.md
@@ -1,2 +1,15 @@
--d
-\r
+40track_drive
+====
+## Adjust configuration for a 40-track drive
+
+
+This is an extension profile; adding this to the command line will configure
+FluxEngine to read from 40-track, 48tpi 5.25" drives. You have to tell it because there is
+no way to detect this automatically.
+
+For example:
+
+```
+fluxengine read ibm --180 40track_drive
+```
+
diff --git a/doc/disk-acornadfs.md b/doc/disk-acornadfs.md
index f5ce0ddb..2e63eff3 100644
--- a/doc/disk-acornadfs.md
+++ b/doc/disk-acornadfs.md
@@ -1,2 +1,39 @@
--d
-\r
+acornadfs
+====
+## BBC Micro, Archimedes
+
+
+Acorn ADFS disks are used by the 6502-based BBC Micro and ARM-based Archimedes
+series of computers. They are yet another variation on MFM encoded IBM scheme
+disks, although with different sector sizes and with the 0-based sector
+identifiers rather than 1-based sector identifiers. The index hole is ignored
+and sectors are written whereever, requiring FluxEngine to do two revolutions
+to read a disk.
+
+There are various different kinds, which should all work out of the box.
+
+Be aware that Acorn logical block numbering goes all the way up side 0 and
+then all the way up side 1. However, FluxEngine uses traditional disk images
+with alternating sides, with the blocks from track 0 side 0 then track 0 side
+1 then track 1 side 0 etc. Most Acorn emulators will use both formats, but
+they might require nudging as the side order can't be reliably autodetected.
+
+## Options
+
+  - Format variants:
+      - `160`: 160kB 3.5" or 5.25" 40-track SSDD; S format
+      - `320`: 320kB 3.5" or 5.25" 80-track SSDD; M format
+      - `640`: 640kB 3.5" or 5.25" 80-track DSDD; L format
+      - `800`: 800kB 3.5" 80-track DSDD; D and E formats
+      - `1600`: 1600kB 3.5" 80-track DSHD; F formats
+
+## Examples
+
+To read:
+
+  - `fluxengine read acornadfs --160 -s drive:0 -o acornadfs.img`
+  - `fluxengine read acornadfs --320 -s drive:0 -o acornadfs.img`
+  - `fluxengine read acornadfs --640 -s drive:0 -o acornadfs.img`
+  - `fluxengine read acornadfs --800 -s drive:0 -o acornadfs.img`
+  - `fluxengine read acornadfs --1600 -s drive:0 -o acornadfs.img`
+
diff --git a/doc/disk-acorndfs.md b/doc/disk-acorndfs.md
index f5ce0ddb..a36b0ddc 100644
--- a/doc/disk-acorndfs.md
+++ b/doc/disk-acorndfs.md
@@ -1,2 +1,38 @@
--d
-\r
+acorndfs
+====
+## Acorn Atom, BBC Micro series
+
+
+Acorn DFS disks are used by the Acorn Atom and BBC Micro series of computers.
+They are pretty standard FM encoded IBM scheme disks, with 256-sectors and
+0-based sector identifiers. There's nothing particularly special here.
+
+DFS disks are all single-sided, but allow the other side of the disk to be
+used as another volume.
+
+They come in two varieties, 40 track and 80 track. These should both work.
+Some rare disks are both at the same time. FluxEngine can read these but it
+requires a bit of fiddling as they have the same tracks on twice.
+
+## Options
+
+  - Format variants:
+      - `100`: 100kB 40-track SSSD
+      - `200`: 200kB 80-track SSSD
+
+## Examples
+
+To read:
+
+  - `fluxengine read acorndfs --100 -s drive:0 -o acorndfs.img`
+  - `fluxengine read acorndfs --200 -s drive:0 -o acorndfs.img`
+
+To write:
+
+  - `fluxengine write acorndfs --100 -d drive:0 -i acorndfs.img`
+  - `fluxengine write acorndfs --200 -d drive:0 -i acorndfs.img`
+
+## References
+
+  - [The Acorn DFS disc format](https://beebwiki.mdfs.net/Acorn_DFS_disc_format)
+
diff --git a/doc/disk-aeslanier.md b/doc/disk-aeslanier.md
index f5ce0ddb..73073fc3 100644
--- a/doc/disk-aeslanier.md
+++ b/doc/disk-aeslanier.md
@@ -1,2 +1,48 @@
--d
-\r
+aeslanier
+====
+## 616kB 5.25" 77-track SSDD hard sectored
+
+
+Back in 1980 Lanier released a series of very early integrated word processor
+appliances, the No Problem. These were actually [rebranded AES Data Superplus
+machines](http://vintagecomputers.site90.net/aes/). They were gigantic,
+weighed 40kg, and one example I've found cost ꆲ5bb4
+of nearly ㇢1a6e
+
+8080 machines with 32kB of RAM, they ran their own proprietary word
+processing software off twin 5.25" drive units, but apparently other software
+was available.
+
+The disk format is exceptionally weird. They used 77 track, 32 sector, single-sided
+_hard_ sectored disks, where there were multiple index holes,
+indicating to the hardware where the sectors start. The encoding scheme
+itself is [MMFM (aka
+M2FM)](http://www.retrotechnology.com/herbs_stuff/m2fm.html), an early
+attempt at double-density disk encoding which rapidly got obsoleted by the
+simpler MFM --- and the bytes are stored on disk _backwards_. Even aside from
+the encoding, the format on disk was strange; unified sector header/data
+records, so that the sector header (containing the sector and track number)
+is actually inside the user data.
+
+FluxEngine can read these, but I only have a single, fairly poor example of a
+disk image, and I've had to make a lot of guesses as to the sector format
+based on what looks right. If anyone knows _anything_ about these disks,
+[please get in touch](https://github.com/davidgiven/fluxengine/issues/new).
+
+## Options
+
+(no options)
+
+## Examples
+
+To read:
+
+  - `fluxengine read aeslanier -s drive:0 -o aeslanier.img`
+
+## References
+
+  * [SA800 Diskette Storage Drive - Theory Of
+    Operations](http://www.hartetechnologies.com/manuals/Shugart/50664-1_SA800_TheorOp_May78.pdf):
+    talks about MMFM a lot, but the Lanier machines didn't use this disk
+    format.
+
diff --git a/doc/disk-agat.md b/doc/disk-agat.md
index f5ce0ddb..dc2b579d 100644
--- a/doc/disk-agat.md
+++ b/doc/disk-agat.md
@@ -1,2 +1,36 @@
--d
-\r
+agat
+====
+## 840kB 5.25" 80-track DS
+
+
+The Agat (Russian: ↊fd74
+1983. These were based around a 6502 and were nominally Apple II-compatible
+although with enough differences to be problematic.
+
+They could use either standard Apple II 140kB disks, or a proprietary 840kb
+MFM-based double-sided format. FluxEngine supports both of these; this profile
+is for the proprietary format. for the Apple II format, use the `apple2`
+profile.
+
+## Options
+
+(no options)
+
+## Examples
+
+To read:
+
+  - `fluxengine read agat -s drive:0 -o agat.img`
+
+To write:
+
+  - `fluxengine write agat -d drive:0 -i agat.img`
+
+## References
+
+  - [Magazine article on the
+        Agat](https://sudonull.com/post/54185-Is-AGAT-a-bad-copy-of-Apple)
+
+  - [Forum thread with (some) documentation on the
+        format](https://torlus.com/floppy/forum/viewtopic.php?t=1385)
+
diff --git a/doc/disk-amiga.md b/doc/disk-amiga.md
index f5ce0ddb..fe40ed94 100644
--- a/doc/disk-amiga.md
+++ b/doc/disk-amiga.md
@@ -1,2 +1,41 @@
--d
-\r
+amiga
+====
+## 880kB 3.5" DSDD
+
+
+Amiga disks use MFM, but don't use IBM scheme. Instead, the entire track is
+read and written as a unit, with each sector butting up against the previous
+one. This saves a lot of space which allows the Amiga to not just store 880kB
+on a DD disk, but _also_ allows an extra 16 bytes of metadata per sector.
+
+This metadata is mostly unused, so the default for FluxEngine is to ignore it
+and just use the 512 bytes of main sector data. If you want it, specify a
+528-byte sector size. The metadata will come after the user data.
+
+Bizarrely, the data in each sector is stored with all the odd bits first, and
+then all the even bits. This is tied into the checksum algorithm, which is
+distinctly subpar and not particularly good at detecting errors.
+
+## Options
+
+  - Sector size:
+      - `without_metadata`: 512-byte sectors
+      - `with_metadata`: 528-byte sectors
+
+## Examples
+
+To read:
+
+  - `fluxengine read amiga -s drive:0 -o amiga.adf`
+
+To write:
+
+  - `fluxengine write amiga -d drive:0 -i amiga.adf`
+
+## References
+
+  - [The Amiga Floppy Boot Process and Physical
+    Layout](https://wiki.amigaos.net/wiki/Amiga_Floppy_Boot_Process_and_Physical_Layout)
+
+  - [The Amiga Disk File FAQ](http://lclevy.free.fr/adflib/adf_info.html)
+
diff --git a/doc/disk-ampro.md b/doc/disk-ampro.md
index f5ce0ddb..f1b51f32 100644
--- a/doc/disk-ampro.md
+++ b/doc/disk-ampro.md
@@ -1,2 +1,52 @@
--d
-\r
+ampro
+====
+## CP/M
+
+
+The Ampro Little Board was a very simple and cheap Z80-based computer from
+1984, which ran CP/M. It was, in fact, a single PCB which you could mount
+on the bottom of a 5.25" drive.
+
+[All about the Ampro Little Board](http://oldcomputers.net/ampro-little-board.html)
+
+It stored either 400kB on a double-sided 40-track drive or 800kB on a
+double-sided 80 track drive. The disk format it used was a slightly quirky
+variation of the standard MFM IBM scheme --- sector numbering starts at 17
+rather than 1 (or Acorn's 0). FluxEngine supports this.
+
+FluxEngine has direct filesystem support for these disks, or you can pass the
+disk images into [cpmtools](http://www.moria.de/~michael/cpmtools/):
+
+```
+$ cpmls -f ampdsdd ampro.img
+0:
+-a60014.e
+amprodsk.com
+bitchk.doc
+bitchk.mac
+cpmmac.mac
+dir.com
+himem.doc
+himem.mac
+kaydiag.lbr
+kayinfo.lbr
+...etc...
+```
+
+## Options
+
+  - Format variants:
+      - `400`: 400kB 40-track DSDD
+      - `800`: 800kB 80-track DSDD
+
+## Examples
+
+To read:
+
+  - `fluxengine read ampro --400 -s drive:0 -o ampro.img`
+  - `fluxengine read ampro --800 -s drive:0 -o ampro.img`
+
+## References
+
+  - [The Ampro Little Board](http://oldcomputers.net/ampro-little-board.html)
+
diff --git a/doc/disk-apple2.md b/doc/disk-apple2.md
index f5ce0ddb..d866a497 100644
--- a/doc/disk-apple2.md
+++ b/doc/disk-apple2.md
@@ -1,2 +1,74 @@
--d
-\r
+apple2
+====
+## Prodos, Appledos, and CP/M
+
+
+Apple II disks are nominally fairly sensible 40-track, single-sided, 256
+bytes-per-sector jobs. However, they come in two varieties: DOS 3.3/ProDOS and
+above, and pre-DOS 3.3. They use different GCR encoding systems, dubbed
+6-and-2 and 5-and-3, and are mutually incompatible (although in some rare
+cases you can mix 6-and-2 and 5-and-3 sectors on the same disk).
+
+The difference is in the drive controller; the 6-and-2 controller is capable
+of a more efficient encoding, and can fit 16 sectors on a track, storing
+140kB on a disk. The 5-and-3 controller can only fit 13, with a mere 114kB.
+
+Both formats use GCR (in different varieties) in a nice, simple grid of
+sectors, unlike the Macintosh. Like the Macintosh, there's a crazy encoding
+scheme applied to the data before it goes down on disk to speed up
+checksumming.
+
+In addition, a lot of the behaviour of the drive was handled in software.
+This means that Apple II disks can do all kinds of weird things, including
+having spiral tracks! Copy protection for the Apple II was even madder than
+on other systems.
+
+FluxEngine can only read well-behaved 6-and-2 disks. It doesn't even try to
+handle the weird stuff.
+
+Apple DOS also applies logical sector remapping on top of the physical sector
+numbering on the disk, and this _varies_ depending on what the disk is for.
+FluxEngine can remap the sectors from physical to logical using modifiers.  If
+you don't specify a remapping modifier, you get the sectors in the order they
+appear on the disk.
+
+If you don't want an image in physical sector order, specify one of the
+filesystem ordering options. These also select the appropriate file system;
+FluxEngine has read-only support for all of these.
+
+In addition, some third-party systems use 80-track double sides drives, with
+the same underlying disk format. The complication here is that the AppleDOS
+filesystem only supports up to 50 tracks, so it needs tweaking to support
+larger disks. It treats the second side of the disk as a completely different
+volume.
+
+## Options
+
+  - Format variants:
+      - `140`: 140kB 5.25" 35-track SS
+      - `640`: 640kB 5.25" 80-track DS
+  - Filesystem and sector skew:
+      - `nofs`: use physical CHS sector order and no file system
+      - `appledos`: use AppleDOS soft sector skew and file system
+      - `prodos`: use ProDOS soft sector skew and filesystem
+      - `cpm`: use CP/M soft sector skew and filesystem
+  - `side1`: for AppleDOS file system access, read the volume on side 1 of a disk
+
+## Examples
+
+To read:
+
+  - `fluxengine read apple2 --140 -s drive:0 -o apple2.img`
+  - `fluxengine read apple2 --640 -s drive:0 -o apple2.img`
+
+To write:
+
+  - `fluxengine write apple2 --140 -d drive:0 -i apple2.img`
+  - `fluxengine write apple2 --640 -d drive:0 -i apple2.img`
+
+## References
+
+  - [Beneath Apple DOS](https://fabiensanglard.net/fd_proxy/prince_of_persia/Beneath%20Apple%20DOS.pdf)
+
+  - [MAME's ap2_dsk.cpp file](https://github.com/mamedev/mame/blob/4263a71e64377db11392c458b580c5ae83556bc7/src/lib/formats/ap2_dsk.cpp)
+
diff --git a/doc/disk-apple2_drive.md b/doc/disk-apple2_drive.md
index f5ce0ddb..e631d138 100644
--- a/doc/disk-apple2_drive.md
+++ b/doc/disk-apple2_drive.md
@@ -1,2 +1,16 @@
--d
-\r
+apple2_drive
+====
+## Adjust configuration for a 40-track Apple II drive
+
+
+This is an extension profile; adding this to the command line will configure
+FluxEngine to adjust the pinout and track spacing to work with an Apple II
+drive.  This only works on Greaseweazle hardware and requires a custom
+connector.
+
+For example:
+
+```
+fluxengine read apple2 --160 apple2_drive
+```
+
diff --git a/doc/disk-atarist.md b/doc/disk-atarist.md
index f5ce0ddb..25f3e11e 100644
--- a/doc/disk-atarist.md
+++ b/doc/disk-atarist.md
@@ -1,2 +1,61 @@
--d
-\r
+atarist
+====
+## Almost PC compatible
+
+
+Atari ST disks are standard MFM encoded IBM scheme disks without an IAM header.
+Disks are typically formatted 512 bytes per sector with between 9-10 (sometimes
+11!) sectors per track and 80-82 tracks per side.
+
+For some reason, occasionally formatting software will put an extra IDAM record
+with a sector number of 66 on a disk, which can horribly confuse things. The
+Atari profiles below are configured to ignore these.
+
+Be aware that many PC drives (including mine) won't do the 82 track formats. 
+
+## Options
+
+  - Format variants:
+      - `360`: 360kB 3.5" 80-track 9-sector SSDD
+      - `370`: 370kB 3.5" 82-track 9-sector SSDD
+      - `400`: 400kB 3.5" 80-track 10-sector SSDD
+      - `410`: 410kB 3.5" 82-track 10-sector SSDD
+      - `720`: 720kB 3.5" 80-track 9-sector DSDD
+      - `740`: 740kB 3.5" 82-track 9-sector DSDD
+      - `800`: 800kB 3.5" 80-track 10-sector DSDD
+      - `820`: 820kB 3.5" 82-track 10-sector DSDD
+
+## Examples
+
+To read:
+
+  - `fluxengine read atarist --360 -s drive:0 -o atarist.img`
+  - `fluxengine read atarist --370 -s drive:0 -o atarist.img`
+  - `fluxengine read atarist --400 -s drive:0 -o atarist.img`
+  - `fluxengine read atarist --410 -s drive:0 -o atarist.img`
+  - `fluxengine read atarist --720 -s drive:0 -o atarist.img`
+  - `fluxengine read atarist --740 -s drive:0 -o atarist.img`
+  - `fluxengine read atarist --800 -s drive:0 -o atarist.img`
+  - `fluxengine read atarist --820 -s drive:0 -o atarist.img`
+
+To write:
+
+  - `fluxengine write atarist --360 -d drive:0 -i atarist.img`
+  - `fluxengine write atarist --370 -d drive:0 -i atarist.img`
+  - `fluxengine write atarist --400 -d drive:0 -i atarist.img`
+  - `fluxengine write atarist --410 -d drive:0 -i atarist.img`
+  - `fluxengine write atarist --720 -d drive:0 -i atarist.img`
+  - `fluxengine write atarist --740 -d drive:0 -i atarist.img`
+  - `fluxengine write atarist --800 -d drive:0 -i atarist.img`
+  - `fluxengine write atarist --820 -d drive:0 -i atarist.img`
+
+## References
+
+  - [Atari ST Floppy Drive Hardware
+        Information](https://info-coach.fr/atari/hardware/FD-Hard.php) by Jean
+        Louis-Guerin
+
+  - [Atari ST Floppy Drive Software
+        Information](https://info-coach.fr/atari/software/FD-Soft.php) by Jean
+        Louis-Guerin
+
diff --git a/doc/disk-bk.md b/doc/disk-bk.md
index f5ce0ddb..fa18d96a 100644
--- a/doc/disk-bk.md
+++ b/doc/disk-bk.md
@@ -1,2 +1,30 @@
--d
-\r
+bk
+====
+## 800kB 5.25"/3.5" 80-track 10-sector DSDD
+
+
+The BK (an abbreviation for 1ba9
+is a Soviet era personal computer from Elektronika based on a PDP-11
+single-chip processor. It was the _only_ official, government approved home
+computer in mass production at the time.
+
+It got a floppy interface in 1989 when the 128kB BK-0011 was released. This
+used a relatively normal double-sided IBM scheme format with 80 sectors and ten
+sectors per track, resulting in 800kB disks. The format is, in fact, identical
+to the Atari ST 800kB format. Either 5.25" or 3.5" drives were used depending
+on what was available at the time, with the same format on both.
+
+## Options
+
+(no options)
+
+## Examples
+
+To read:
+
+  - `fluxengine read bk -s drive:0 -o bk800.img`
+
+To write:
+
+  - `fluxengine write bk -d drive:0 -i bk800.img`
+
diff --git a/doc/disk-brother.md b/doc/disk-brother.md
index f5ce0ddb..6e12dced 100644
--- a/doc/disk-brother.md
+++ b/doc/disk-brother.md
@@ -1,2 +1,128 @@
--d
-\r
+brother
+====
+## GCR family
+
+
+Brother word processor disks are weird, using custom tooling and chipsets.
+They are completely not PC compatible in every possible way other than the
+size.
+
+Different word processors use different disk formats --- the only ones supported
+by FluxEngine are the 120kB and 240kB 3.5" formats. Use the `--120` and `--240`
+options to select which one.
+
+Apparently about 20% of Brother word processors have alignment issues which
+means that the disks can't be read by FluxEngine (because the tracks on the disk
+don't line up with the position of the head in a PC drive). The word processors
+themselves solved this by microstepping until they found where the real track
+is, but normal PC drives aren't capable of doing this.  Particularly with the
+120kB disks, you might want to fiddle with the head bias (e.g.
+`--drive.head_bias=3`) to get a clean read. Keep an eye on the bad sector map
+that's dumped at the end of a read. My word processor likes to put logical track
+0 on physical track 3, which means that logical track 77 is on physical track
+80, so I need that `head_bias` value of 3; luckily my PC drive can access track
+80.
+
+Using FluxEngine to *write* disks isn't a problem, so the
+simplest solution is to use FluxEngine to create a new disk, with the tracks
+aligned properly, and then use a word processor to copy the files you want
+onto it. The new disk can then be read and you can extract the files.
+Obviously this sucks if you don't actually have a word processor, but I can't
+do anything about that.
+
+If you find one of these misaligned disks then *please* [get in
+touch](https://github.com/davidgiven/fluxengine/issues/new); I want to
+investigate.
+
+## Options
+
+  - Format variants:
+      - `120`: 120kB 3.5" 39-track SS GCR
+      - `240`: 240kB 3.5" 78-track SS GCR
+
+## Examples
+
+To read:
+
+  - `fluxengine read brother --120 -s drive:0 -o brother.img`
+  - `fluxengine read brother --240 -s drive:0 -o brother.img`
+
+To write:
+
+  - `fluxengine write brother --120 -d drive:0 -i brother.img`
+  - `fluxengine write brother --240 -d drive:0 -i brother.img`
+
+Dealing with misaligned disks
+-----------------------------
+
+While FluxEngine can't read misaligned disks directly, Brother word processors
+_can_. If you have access to a compatible word processor, there's a fairly
+simple workaround to allow you to extract the data:
+
+  1. Format a disk using FluxEngine (by simply writing a blank filesystem image
+         to a disk). This will have the correct alignment to work on a PC drive.
+
+  2. Use a word processor to copy the misaligned disk to the newly formatted
+         disk. The machine will happily adjust itself to both sets of alignments.
+
+  3. Use FluxEngine to read the data off the correctly aligned disk.
+
+I realise this is rather unsatisfactory, as the Brother hardware is becoming
+rarer and they cope rather badly with damaged disks, but this is a limitation
+of the hardware of normal PC drives. (It _is_ possible to deliberately misalign
+a drive to make it match up with a bad disk, but this is for experts only --- I
+wouldn't dare.)
+
+Low level format
+----------------
+
+The drive is a single-sided 3.5" drive spinning at not 300 rpm (I don't know
+the precise speed yet but FluxEngine doesn't care). The 240kB disks have 78
+tracks and the 120kB disks have 39.
+
+Each track has 12 256-byte sectors. The drive ignores the index hole so they're
+lined up all anyhow. As FluxEngine can only read from index to index, it
+actually reads two complete revolutions and reassembles the sectors from that.
+
+The underlying encoding is exceptionally weird; they use two different kinds of
+GCR, one kind for the sector header records and a completely different one for
+the data itself. It also has a completely bizarre CRC variant which a genius on
+StackOverflow reverse engineered for me. However, odd though it may be, it does
+seem pretty robust.
+
+See the source code for the GCR tables and CRC routine.
+
+Sectors are about 16.2ms apart on the disk (at 300 rpm). The header and
+data records are 0.694ms apart. (All measured from the beginning of the
+record.) The sector order is 05a3816b4927, which gives a sector skew of 5.
+
+High level format
+-----------------
+
+Once decoded, you end up with a file system image. FluxEngine supports direct
+filesystem access for both kinds of disks.
+
+### 120kB disks
+
+These disks use a proprietary and very simple file system. It's FAT-like
+with an obvious directory and allocation table. It's supported by FluxEngine.
+
+Any files whose names begin with an asterisk (`*`) will be marked as hidden. If
+the file is named `*boot`, then a boot sector will be created which will load
+and run the file at 0x7000 if the machine is started with CODE+Q pressed. So
+far this has only been confirmed to work on a WP-1.
+
+### 240kB disks
+
+Conversely, the 240kB disks turns out to be a completely normal Microsoft FAT
+file system with a media type of 0x58 --- did you know that FAT supports 256
+byte sectors? I didn't --- of the MSX-DOS variety. There's a faint
+possibility that the word processor is based on MSX-DOS, but I haven't
+reverse engineered it to find out.
+
+Standard Linux mtools will access the filesystem image and allow you to move
+files in and out. However, you'll need to change the media type bytes at
+offsets 0x015 and 0x100 from 0x58 to 0xf0 before mtools will touch it. The
+supplied `brother240tool` will do this. Additionally, FluxEngine's own FAT
+file system supports this.
+
diff --git a/doc/disk-commodore.md b/doc/disk-commodore.md
index f5ce0ddb..c2ad45f9 100644
--- a/doc/disk-commodore.md
+++ b/doc/disk-commodore.md
@@ -1,2 +1,74 @@
--d
-\r
+commodore
+====
+## 1541, 1581, 8050 and variations
+
+
+Commodore 8-bit computer disks come in two varieties: GCR, which are the
+overwhelming majority; and MFM, only used on the 1571 and 1581. The latter were
+(as far as I can tell) standard IBM PC format disks with a slightly odd sector
+count.
+
+The GCR disks are much more interesting. They could store 170kB on a
+single-sided disk (although later drives were double-sided), using a proprietary
+encoding and record scheme; like [Apple Macintosh disks](macintosh.md) they
+stored varying numbers of sectors per track to make the most of the physical
+disk area, although unlike them they did it by changing the bitrate rather than
+adjusting the motor speed.
+
+The drives were also intelligent and ran DOS on a CPU inside them. The
+computer itself knew nothing about file systems. You could even upload
+programs onto the drive and run them there, allowing all sorts of custom disk
+formats, although this was mostly used to compensate for the [cripplingly
+slow connection to the
+computer](https://ilesj.wordpress.com/2014/05/14/1541-why-so-complicated/) of
+300 bytes per second (!). (The drive itself could transfer data reasonably
+quickly.)
+
+  - a 1541 disk has 35 tracks of 17 to 21 sectors, each 256 bytes long
+	(sometimes 40 tracks), and uses GCR encoding.
+
+  - a standard 1581 disk has 80 tracks and two sides, each with 10 sectors, 512
+	bytes long, and uses normal IBM encoding.
+
+  - an 8050 disk has 77 tracks and two sides, with four speed zones; the number
+	of sectors varies from 23 to 29, using GCR encoding. These will store
+	1042kB. These drives are peculiar because they are 100tpi and therefore the
+	disks cannot be read in normal 96tpi drives.
+
+  - a CMD FD2000 disk (a popular third-party Commodore disk drive) has 81
+	tracks and two sides, each with 10 1024-byte sectors, for a massive 1620kB
+	of storage. This also uses IBM encoding.
+
+A CMD FD2000 disk (a popular third-party Commodore disk drive) 
+
+## Options
+
+  - Format variants:
+      - `171`: 171kB 1541, 35-track variant
+      - `192`: 192kB 1541, 40-track variant
+      - `800`: 800kB 3.5" 1581
+      - `1042`: 1042kB 5.25" 8051
+      - `1620`: 1620kB, CMD FD2000
+
+## Examples
+
+To read:
+
+  - `fluxengine read commodore --171 -s drive:0 -o commodore.d64`
+  - `fluxengine read commodore --192 -s drive:0 -o commodore.d64`
+  - `fluxengine read commodore --800 -s drive:0 -o commodore.d64`
+  - `fluxengine read commodore --1042 -s drive:0 -o commodore.d64`
+  - `fluxengine read commodore --1620 -s drive:0 -o commodore.d64`
+
+To write:
+
+  - `fluxengine write commodore --171 -d drive:0 -i commodore.d64`
+  - `fluxengine write commodore --192 -d drive:0 -i commodore.d64`
+  - `fluxengine write commodore --800 -d drive:0 -i commodore.d64`
+  - `fluxengine write commodore --1620 -d drive:0 -i commodore.d64`
+
+## References
+
+  - [Ruud's Commodore Site: 1541](http://www.baltissen.org/newhtm/1541c.htm):
+    documentation on the 1541 disk format.
+
diff --git a/doc/disk-eco1.md b/doc/disk-eco1.md
index f5ce0ddb..f31ca3a1 100644
--- a/doc/disk-eco1.md
+++ b/doc/disk-eco1.md
@@ -1,2 +1,42 @@
--d
-\r
+eco1
+====
+## CP/M; 1210kB 77-track mixed format DSHD
+
+
+The Eco1 is a Italian CP/M machine produced in 1982. It had 64kB of RAM, in
+later models expandable up to 384kB, and _two_ Z80 processors. One of these was
+used solely for managing the twin 8" drives, each storing 1.2MB, which was
+quite impressive for a CP/M machine in those days. Visually it is best
+described as 'very brown'.
+
+
+
 
+
+

+
+
 
+
+

+
+

+
+

+
+
+
+
+
+
+