Skip to content

Commit

Permalink
Was this the problem?
Browse files Browse the repository at this point in the history
  • Loading branch information
davidgiven committed Oct 15, 2024
1 parent 9dc6bdb commit ca8f2a8
Show file tree
Hide file tree
Showing 37 changed files with 73 additions and 1,700 deletions.
17 changes: 2 additions & 15 deletions doc/disk-40track_drive.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,2 @@
40track_drive
====
## Adjust configuration for a 40-track drive
<!-- This file is automatically generated. Do not edit. -->

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
```

-d
\r
41 changes: 2 additions & 39 deletions doc/disk-acornadfs.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,2 @@
acornadfs
====
## BBC Micro, Archimedes
<!-- This file is automatically generated. Do not edit. -->

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`

-d
\r
40 changes: 2 additions & 38 deletions doc/disk-acorndfs.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,2 @@
acorndfs
====
## Acorn Atom, BBC Micro series
<!-- This file is automatically generated. Do not edit. -->

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)

-d
\r
50 changes: 2 additions & 48 deletions doc/disk-aeslanier.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,2 @@
aeslanier
====
## 616kB 5.25" 77-track SSDD hard sectored
<!-- This file is automatically generated. Do not edit. -->

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.

-d
\r
38 changes: 2 additions & 36 deletions doc/disk-agat.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,2 @@
agat
====
## 840kB 5.25" 80-track DS
<!-- This file is automatically generated. Do not edit. -->

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)

-d
\r
43 changes: 2 additions & 41 deletions doc/disk-amiga.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,2 @@
amiga
====
## 880kB 3.5" DSDD
<!-- This file is automatically generated. Do not edit. -->

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)

-d
\r
54 changes: 2 additions & 52 deletions doc/disk-ampro.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,2 @@
ampro
====
## CP/M
<!-- This file is automatically generated. Do not edit. -->

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)

-d
\r
76 changes: 2 additions & 74 deletions doc/disk-apple2.md
Original file line number Diff line number Diff line change
@@ -1,74 +1,2 @@
apple2
====
## Prodos, Appledos, and CP/M
<!-- This file is automatically generated. Do not edit. -->

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)

-d
\r
18 changes: 2 additions & 16 deletions doc/disk-apple2_drive.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,2 @@
apple2_drive
====
## Adjust configuration for a 40-track Apple II drive
<!-- This file is automatically generated. Do not edit. -->

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
```

-d
\r
Loading

0 comments on commit ca8f2a8

Please sign in to comment.