mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-24 11:11:02 -07:00
Fix bad documentation which got checked in somehow.
This commit is contained in:
@@ -1,2 +1,15 @@
|
||||
-d
|
||||
\r
|
||||
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
|
||||
```
|
||||
|
||||
|
||||
@@ -1,2 +1,39 @@
|
||||
-d
|
||||
\r
|
||||
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`
|
||||
|
||||
|
||||
@@ -1,2 +1,38 @@
|
||||
-d
|
||||
\r
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,2 +1,48 @@
|
||||
-d
|
||||
\r
|
||||
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.
|
||||
|
||||
|
||||
@@ -1,2 +1,36 @@
|
||||
-d
|
||||
\r
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,2 +1,41 @@
|
||||
-d
|
||||
\r
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,2 +1,52 @@
|
||||
-d
|
||||
\r
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,2 +1,74 @@
|
||||
-d
|
||||
\r
|
||||
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)
|
||||
|
||||
|
||||
@@ -1,2 +1,16 @@
|
||||
-d
|
||||
\r
|
||||
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
|
||||
```
|
||||
|
||||
|
||||
@@ -1,2 +1,61 @@
|
||||
-d
|
||||
\r
|
||||
atarist
|
||||
====
|
||||
## Almost PC compatible
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -1,2 +1,30 @@
|
||||
-d
|
||||
\r
|
||||
bk
|
||||
====
|
||||
## 800kB 5.25"/3.5" 80-track 10-sector DSDD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
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`
|
||||
|
||||
|
||||
@@ -1,2 +1,128 @@
|
||||
-d
|
||||
\r
|
||||
brother
|
||||
====
|
||||
## GCR family
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@@ -1,2 +1,74 @@
|
||||
-d
|
||||
\r
|
||||
commodore
|
||||
====
|
||||
## 1541, 1581, 8050 and variations
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@@ -1,2 +1,42 @@
|
||||
-d
|
||||
\r
|
||||
eco1
|
||||
====
|
||||
## CP/M; 1210kB 77-track mixed format DSHD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
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'.
|
||||
|
||||
<div style="text-align: center">
|
||||
<a href="vds-eco1.jpg"> <img src="vds-eco1.jpg" style="width:80%" alt="A contemporary advert for the Eco1"/></a>
|
||||
</div>
|
||||
|
||||
Its format is standard IBM scheme, but with an interesting wrinkle: there are
|
||||
_three_ different formatting zones on the disk:
|
||||
|
||||
- Track 0 side 0: 26 sectors, 128 bytes per sector (3296 bytes)
|
||||
- Track 0 side 1: 26 sectors, 256 bytes per sector (6656 bytes)
|
||||
- All others: 16 sectors, 512 bytes per sector (8192 bytes)
|
||||
|
||||
The standard `read ibm` command will autodetect and read these disks, but due
|
||||
to the format confusing the size autodetection the images need postprocessing
|
||||
to be useful, so there's a custom profile for the Eco1 which produces sensible
|
||||
images.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read eco1 -s drive:0 -o eco1.img`
|
||||
|
||||
## References
|
||||
|
||||
- [Apulio Retrocomputing's page on the
|
||||
Eco1](https://www.apuliaretrocomputing.it/wordpress/?p=8976)
|
||||
|
||||
|
||||
@@ -1,2 +1,19 @@
|
||||
-d
|
||||
\r
|
||||
epsonpf10
|
||||
====
|
||||
## CP/M; 3.5" 40-track DSDD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Epson PF10 is the disk unit for the Epson Z80 series of 'laptops', running
|
||||
CP/M. It uses a single-sided 40-track 3.5" format, which is unusual, but the
|
||||
format itself is yet another IBM scheme variant.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read epsonpf10 -s drive:0 -o epsonpf10.img`
|
||||
|
||||
|
||||
@@ -1,2 +1,47 @@
|
||||
-d
|
||||
\r
|
||||
f85
|
||||
====
|
||||
## 461kB 5.25" 77-track SS
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Durango F85 was an early office computer based around a 5MHz 8085 processor,
|
||||
sold in 1977. It had an impressive 64kB of RAM, upgradable to 128kB, and ran
|
||||
its own multitasking operating system call DX-85M, as well as CP/M. It had an
|
||||
interesting electric-typewriter form factor, with a little monitor sitting on
|
||||
the side of it --- in operation you were facing the 14" printer.
|
||||
|
||||
It was touted as being portable. Which it was, if you were strong; the story
|
||||
is that they had to do an extensive search to find someone capable of lifting
|
||||
it for the following photo...
|
||||
|
||||
<div style="text-align: center">
|
||||
<img src="durangof85.jpg" style="max-width: 60%" alt="A Durango F85, held precariously">
|
||||
</div>
|
||||
|
||||
...and even then, they had to airbrush out the tendons in her neck from the
|
||||
effort!
|
||||
|
||||
It used 5.25 soft-sectored disks storing an impressive-for-those-days
|
||||
480kBish on a side, using a proprietary 4-in-5 GCR encoding. They used 77
|
||||
tracks, 12 sectors and 512 bytes per sector. Later models used double-sided
|
||||
disks; I don't have access to an image of one so don't know how they work
|
||||
(there's a suspicious looking spare byte in the sector header which could
|
||||
store the side). As always, if you have one, please [get in
|
||||
touch](https://github.com/davidgiven/fluxengine/issues/new).
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read f85 -s drive:0 -o f85.img`
|
||||
|
||||
## References
|
||||
|
||||
There's amazingly little information about these things.
|
||||
|
||||
* [Chuck Guzis' F85 page](http://www.sydex.com/durango/durango.html) with
|
||||
lots of pictures
|
||||
|
||||
|
||||
@@ -1,2 +1,48 @@
|
||||
-d
|
||||
\r
|
||||
fb100
|
||||
====
|
||||
## 100kB 3.5" 40-track SSSD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Brother FB-100 is a serial-attached smart floppy drive used by a several
|
||||
different machines for mass storage, including the Tandy Model 100 and
|
||||
clones, the Husky Hunter 2, and (bizarrely) several knitting machines. It was
|
||||
usually rebadged, sometimes with a cheap paper label stuck over the Brother
|
||||
logo, but the most common variant appears to be the Tandy Portable Disk Drive
|
||||
or TPDD:
|
||||
|
||||
<div style="text-align: center">
|
||||
<a href="http://www.old-computers.com/museum/computer.asp?c=233&st=1"> <img src="tpdd.jpg" alt="A Tandy Portable Disk Drive"/></a>
|
||||
</div>
|
||||
|
||||
It's a bit of an oddball: the disk encoding is FM with a very custom record
|
||||
scheme: 40-track single-sided 3.5" disks storing 100kB or so each. Each track
|
||||
had only _two_ sectors, each 1280 bytes, but with an additional 12 bytes of
|
||||
ID data used for filesystem management.
|
||||
|
||||
There was also apparently a TPDD-2 which could store twice as much data, but
|
||||
I don't have access to one of those disks.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read fb100 -s drive:0 -o fb100.img`
|
||||
|
||||
## References
|
||||
|
||||
- [Tandy Portable Disk Drive operations
|
||||
manual](http://www.classiccmp.org/cini/pdf/Tandy/Portable%20Disk%20Drive%20Operation%20Manual.pdf)
|
||||
|
||||
- [Tandy Portable Disk Drive service
|
||||
manual](https://archive.org/details/TandyPortableDiskDriveSoftwareManual26-3808s)
|
||||
|
||||
- [TPDD design notes (including a dump of the
|
||||
ROM)](http://bitchin100.com/wiki/index.php?title=TPDD_Design_Notes)
|
||||
|
||||
- [Knitting machine FB-100
|
||||
resources](http://www.k2g2.org/wiki:brother_fb-100)
|
||||
|
||||
|
||||
@@ -1,2 +1,42 @@
|
||||
-d
|
||||
\r
|
||||
hplif
|
||||
====
|
||||
## a variety of disk formats used by HP
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
LIF, a.k.a. Logical Interchange Format, is a series of formats used by
|
||||
Hewlett-Packard across their entire range of computers, from calculators to
|
||||
modern servers. It also defines a simple non-hierarchical filesystem which is
|
||||
bizarrely _still_ supported by HP-UX systems.
|
||||
|
||||
Floppy-disk wise, they're yet more variations of the standard IBM floppy
|
||||
encoding scheme.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `264`: 264kB 3.5" 66-track SSDD; HP9121 format
|
||||
- `608`: 608kB 3.5" 76-track DSDD; HP9122 format
|
||||
- `616`: 616kB 3.5" 77-track DSDD
|
||||
- `770`: 770kB 3.5" 77-track DSDD
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read hplif --264 -s drive:0 -o hplif.img`
|
||||
- `fluxengine read hplif --608 -s drive:0 -o hplif.img`
|
||||
- `fluxengine read hplif --616 -s drive:0 -o hplif.img`
|
||||
- `fluxengine read hplif --770 -s drive:0 -o hplif.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write hplif --264 -d drive:0 -i hplif.img`
|
||||
- `fluxengine write hplif --608 -d drive:0 -i hplif.img`
|
||||
- `fluxengine write hplif --616 -d drive:0 -i hplif.img`
|
||||
- `fluxengine write hplif --770 -d drive:0 -i hplif.img`
|
||||
|
||||
## References
|
||||
|
||||
* [A summary of the Hewlett Packard floppy disk
|
||||
formats](http://www.bitsavers.org/pdf/hp/disc/912x/HP_Flexible_Disk_Formats.pdf)
|
||||
|
||||
|
||||
124
doc/disk-ibm.md
124
doc/disk-ibm.md
@@ -1,2 +1,122 @@
|
||||
-d
|
||||
\r
|
||||
ibm
|
||||
====
|
||||
## Generic PC 3.5"/5.25" disks
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
IBM scheme disks are _the_ most common disk format, ever. They're used by a
|
||||
huge variety of different systems, and they come in a huge variety of different
|
||||
forms, but they're all fundamentally the same: either FM or MFM, either single-
|
||||
or double-sided, with distinct sector header and data records and no sector
|
||||
metadata. Systems which use IBM scheme disks include but are not limited to:
|
||||
|
||||
- IBM PCs (naturally)
|
||||
- Atari ST
|
||||
- late era Apple machines
|
||||
- Acorn machines
|
||||
- the TRS-80
|
||||
- late era Commodore machines (the 1571 and so on)
|
||||
- most CP/M machines
|
||||
- NEC PC-88 series
|
||||
- NEC PC-98 series
|
||||
- Sharp X68000
|
||||
- Fujitsu FM Towns
|
||||
- VAX & PDP-11
|
||||
- etc
|
||||
|
||||
FluxEngine supports reading these. However, some variants are more peculiar
|
||||
than others, and as a result there are specific decoders which set the defaults
|
||||
correctly for certain formats (for example: on PC disks the sector numbers
|
||||
start from 1, but on Acorn disks they start from 0). The IBM decoder described
|
||||
here is the generic one, and is suited for 'conventional' PC disks. While you
|
||||
can read all the variant formats with it if you use the right set of arguments,
|
||||
it's easier to use the specific decoder.
|
||||
|
||||
There is a generic decoder which should adjust automatically to whichever disk
|
||||
format you are using, but it's unreliable and not recommended. This format
|
||||
should also be used if you are writing images such as DIM which specify the
|
||||
image format. FluxEngine will use these parameters.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `auto`: try to autodetect the format (unreliable)
|
||||
- `160`: 160kB 5.25" 40-track 8-sector SSDD
|
||||
- `180`: 180kB 5.25" 40-track 9-sector SSDD
|
||||
- `320`: 320kB 5.25" 40-track 8-sector DSDD
|
||||
- `360`: 360kB 5.25" 40-track 9-sector DSDD
|
||||
- `720_96`: 720kB 5.25" 80-track 9-sector DSDD
|
||||
- `720_135`: 720kB 3.5" 80-track 9-sector DSDD
|
||||
- `1200`: 1200kB 5.25" 80-track 15-sector DSHD
|
||||
- `1232`: 1232kB 5.25" 77-track 8-sector DSHD
|
||||
- `1440`: 1440kB 3.5" 80-track 18-sector DSHD
|
||||
- `1680`: 1680kB 3.5" 80-track 21-sector DSHD; DMF
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read ibm --auto -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --160 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --180 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --320 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --360 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --720_96 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --720_135 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --1200 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --1232 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --1440 -s drive:0 -o ibm.img`
|
||||
- `fluxengine read ibm --1680 -s drive:0 -o ibm.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write ibm --160 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --180 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --320 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --360 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --720_96 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --720_135 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --1200 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --1232 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --1440 -d drive:0 -i ibm.img`
|
||||
- `fluxengine write ibm --1680 -d drive:0 -i ibm.img`
|
||||
|
||||
Mixed-format disks
|
||||
------------------
|
||||
|
||||
Some disks, such as those belonging to early CP/M machines, or N88-Basic disks
|
||||
(for PC-88 and PC-98), have more than one format on the disk at once. Typically,
|
||||
the first few tracks will be low-density FM encoded and will be read by the
|
||||
machine's ROM; those tracks contain new floppy drive handling code capable of
|
||||
coping with MFM data, and so the rest of the disk will use that, allowing them
|
||||
to store more data.
|
||||
|
||||
FluxEngine can read these fine, but it tends to get a bit confused when it sees
|
||||
tracks with differing numbers of sectors --- if track 0 has 32 sectors but
|
||||
track 1 has 16, it will assume that sectors 16..31 are missing on track 1 and
|
||||
size the image file accordingly. This can be worked around by specifying the
|
||||
size of each track; see the `eco1` read profile for an example.
|
||||
|
||||
N88-Basic format floppies can be written by either specifying the `n88basic`
|
||||
format, or by using D88 or NFD format images which include explicit sector
|
||||
layout information.
|
||||
|
||||
Writing other formats can be made to work too, by creating a custom format
|
||||
specifier, using the `n88basic` format as an example.
|
||||
Please [get in touch](https://github.com/davidgiven/fluxengine/issues/new) if
|
||||
you have specific requirements.
|
||||
|
||||
360rpm 3.5" disks
|
||||
-----------------
|
||||
|
||||
Japanese PCs (NEC PC-98, Sharp X68000, Fujitsu FM Towns) spin their floppy
|
||||
drives at 360rpm rather than the more typical 300rpm. This was done in order
|
||||
to be fully backwards compatible with 5.25" disks, while using the exact
|
||||
same floppy controller. Later models of the PC-9821, as well as most USB floppy
|
||||
drives, feature "tri-mode" support which in addition to normal 300rpm modes,
|
||||
can change their speed to read and write 360rpm DD and HD disks.
|
||||
|
||||
Neither the FluxEngine or Greaseweazle hardware can currently command a
|
||||
tri-mode drive to spin at 360rpm. However on both devices the FluxEngine
|
||||
software is capable of both reading and writing 300rpm disks at 360rpm and vice
|
||||
versa, so it shouldn't matter.
|
||||
|
||||
|
||||
@@ -1,2 +1,19 @@
|
||||
-d
|
||||
\r
|
||||
icl30
|
||||
====
|
||||
## CP/M; 263kB 35-track DSSD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The ICL Model 30 is a reasonably standard CP/M machine using 35-track single
|
||||
density disks and the traditional CP/M 128-byte secotrs --- 30 of them per
|
||||
track! Other than that it's another IBM scheme variation.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read icl30 -s drive:0 -o icl30.img`
|
||||
|
||||
|
||||
@@ -1,2 +1,73 @@
|
||||
-d
|
||||
\r
|
||||
mac
|
||||
====
|
||||
## 400kB/800kB 3.5" GCR
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
Macintosh disks come in two varieties: the newer 1440kB ones, which are
|
||||
perfectly ordinary PC disks you should use the `ibm` profile to read them, and
|
||||
the older 800kB disks (and 400kB for the single sides ones). They have 80
|
||||
tracks and up to 12 sectors per track.
|
||||
|
||||
They are also completely insane.
|
||||
|
||||
It's not just the weird, custom GCR encoding. It's not just the utterly
|
||||
bizarre additional encoding/checksum built on top of that where [every byte
|
||||
is mutated according to the previous bytes in the
|
||||
sector](https://www.bigmessowires.com/2011/10/02/crazy-disk-encoding-schemes/).
|
||||
It's not just the odd way in which disks think they have four sides, two on one
|
||||
side and two on the other, so that the track byte stores only the bottom 6 bits
|
||||
of the track number. It's not just the way that Macintosh sectors are 524 bytes
|
||||
long. No, it's the way the Macintosh drive changes speed depending on which
|
||||
track it's looking at, so that each track contains a different amount of data.
|
||||
|
||||
The reason for this is actually quite sensible: the tracks towards the centre
|
||||
of the disk are obviously moving more slowly, so you can't pack the bits in
|
||||
quite as closely (due to limitations in the magnetic media). You can use a
|
||||
higher bitrate at the edge of the disk than in the middle. Many platforms, for
|
||||
example the Commodore 64 1541 drive, changed bitrate this way.
|
||||
|
||||
But Macintosh disks used a constant bitrate and changed the speed that the disk
|
||||
spun instead to achieve the same effect...
|
||||
|
||||
_Anyway_: FluxEngine will read them fine on conventional drives. Because it's
|
||||
clever.
|
||||
|
||||
Macintosh computers never really used the twelve bytes of metadata and the
|
||||
standard for disk images is to omit it. If you want them, specify that you want
|
||||
524-byte sectors. The metadata will follow the 512 bytes of user data.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `400`: 400kB 80-track SSDD
|
||||
- `800`: 800kB 80-track DSDD
|
||||
- `metadata`: read/write 524 byte sectors
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read mac --400 -s drive:0 -o mac.dsk`
|
||||
- `fluxengine read mac --800 -s drive:0 -o mac.dsk`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write mac --400 -d drive:0 -i mac.dsk`
|
||||
- `fluxengine write mac --800 -d drive:0 -i mac.dsk`
|
||||
|
||||
## References
|
||||
|
||||
- [MAME's ap_dsk35.cpp file](https://github.com/mamedev/mame/blob/4263a71e64377db11392c458b580c5ae83556bc7/src/lib/formats/ap_dsk35.cpp),
|
||||
without which I'd never have managed to do this
|
||||
|
||||
- [Crazy Disk Encoding
|
||||
Schemes](https://www.bigmessowires.com/2011/10/02/crazy-disk-encoding-schemes/), which made
|
||||
me realise just how nuts the format is
|
||||
|
||||
- [Les Disquettes et le drive Disk II](http://www.hackzapple.com/DISKII/DISKIITECH.HTM), an
|
||||
epicly detailed writeup of the Apple II disk format (which is closely related)
|
||||
|
||||
- [The DiskCopy 4.2
|
||||
format](https://www.discferret.com/wiki/Apple_DiskCopy_4.2), described on
|
||||
the DiskFerret website.
|
||||
|
||||
|
||||
@@ -1,2 +1,87 @@
|
||||
-d
|
||||
\r
|
||||
micropolis
|
||||
====
|
||||
## 100tpi MetaFloppy disks
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
Micropolis MetaFloppy disks use MFM and hard sectors. Mod I was 48 TPI and
|
||||
stored 143k per side. Mod II was 100 TPI and stored 315k per side. Each of the
|
||||
16 sectors contains 266 bytes of "user data," allowing 10 bytes of metadata for
|
||||
use by the operating system. Micropolis DOS (MDOS) used the metadata bytes, but
|
||||
CP/M did not.
|
||||
|
||||
Some later systems were Micropolis-compatible and so were also 100 TPI, like
|
||||
the Vector Graphic Dual-Mode Disk Controller which was paired with a Tandon
|
||||
drive.
|
||||
|
||||
**Important note:** You _cannot_ read these disks with a normal PC drive, as
|
||||
these drives are 96tpi. The track spacing is determined by the physical geometry
|
||||
of the drive and can't be changed in software. You'll need to get hold of a
|
||||
100tpi Micropolis drive. Luckily these seem to use the same connector and
|
||||
pinout as a 96tpi PC 5.25" drive. In use they should be identical.
|
||||
|
||||
While most operating systems use the standard Micropolis checksum, Vector
|
||||
Graphic MZOS uses a unique checksum. The decoder will automatically detect
|
||||
the checksum type in use; however, a specific checksum type may be forced
|
||||
using the `--decoder.micropolis.checksum_type=TYPE` where TYPE is one of:
|
||||
|
||||
| Checksum | Description |
|
||||
|------------|-----------------------------------------|
|
||||
| AUTO | Automatically detect |
|
||||
| MICROPOLIS | Standard Micropolis (MDOS, CP/M, OASIS) |
|
||||
| MZOS | Vector Graphic MZOS |
|
||||
|
||||
Later versions of the Micropolis format supported ECC, especially in
|
||||
controllers with HDD support. The ECC can detect and correct errors. However,
|
||||
it is unclear what ECC algorithm was used by each vendor. ECC is disabled by
|
||||
default, but available for checking and correcting using
|
||||
`--decoder.micropolis.ecc_type=TYPE` and for writing from IMG files using
|
||||
`--encoder.micropolis.ecc_type=TYPE`, where TYPE is one of:
|
||||
|
||||
| ECC | Description |
|
||||
|--------|------------------------------------------|
|
||||
| NONE | No ECC processing enabled |
|
||||
| VECTOR | Vector Graphic Dual-Mode Disk Controller |
|
||||
|
||||
The [CP/M BIOS](https://www.seasip.info/Cpm/bios.html) defined SELDSK, SETTRK,
|
||||
and SETSEC, but no function to select the head/side. Double-sided floppies
|
||||
could be represented as having either twice the number of sectors, for CHS, or
|
||||
twice the number of tracks, HCS; the second side's tracks in opposite order
|
||||
logically followed the first side (e.g., tracks 77-153). Micropolis disks
|
||||
tended to be the latter. FluxEngine always emits CHS format disks, so you may
|
||||
need to apply extra options to change the format if desired.
|
||||
|
||||
## Options
|
||||
|
||||
- :
|
||||
- `143`: 143kB 5.25" SSDD hard-sectored; Micropolis MetaFloppy Mod I
|
||||
- `287`: 287kB 5.25" DSDD hard-sectored; Micropolis MetaFloppy Mod I
|
||||
- `315`: 315kB 5.25" SSDD hard-sectored; Micropolis MetaFloppy Mod II
|
||||
- `630`: 630kB 5.25" DSDD hard-sectored; Micropolis MetaFloppy Mod II
|
||||
- `vgi`: Read/write VGI format images with 275 bytes per sector
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read micropolis -s drive:0 -o micropolis.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write micropolis -d drive:0 -i micropolis.img`
|
||||
|
||||
## References
|
||||
|
||||
- [Micropolis 1040/1050 S-100 Floppy Disk Subsystems User's Manual][micropolis1040/1050].
|
||||
Section 6, pages 261-266. Documents pre-ECC sector format. Note that the
|
||||
entire record, starting at the sync byte, is controlled by software
|
||||
|
||||
- [Vector Graphic Dual-Mode Disk Controller Board Engineering Documentation][vectordualmode].
|
||||
Section 1.6.2. Documents ECC sector format
|
||||
|
||||
- [AltairZ80 Simulator Usage Manual][altairz80]. Section 10.6. Documents ECC
|
||||
sector format and VGI file format
|
||||
|
||||
[micropolis1040/1050]: http://www.bitsavers.org/pdf/micropolis/metafloppy/1084-01_1040_1050_Users_Manual_Apr79.pdf
|
||||
[vectordualmode]: http://bitsavers.org/pdf/vectorGraphic/hardware/7200-1200-02-1_Dual-Mode_Disk_Controller_Board_Engineering_Documentation_Feb81.pdf
|
||||
[altairz80]: http://www.bitsavers.org/simh.trailing-edge.com_201206/pdf/altairz80_doc.pdf
|
||||
|
||||
|
||||
@@ -1,2 +1,33 @@
|
||||
-d
|
||||
\r
|
||||
ms2000
|
||||
====
|
||||
## MS2000 Microdisk Development System
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The RCA MicroDisk Development System MS2000 is a highly obscure (i.e. I gather
|
||||
that single digit numbers of original machines exist) development system for the
|
||||
RCA1802 series of CPUs, as made famous by the Cosmac ELF. It was a fairly
|
||||
straightforward big bag o'RAM system with a 2kB boot ROM, 62kB of RAM, twin
|
||||
floppy drives and a serial terminal --- CP/M users will find it very familiar.
|
||||
|
||||
Read and writing disks is currently not supported by FluxEngine, but there is
|
||||
basic support for the MicroDisk operating system's file system. This should
|
||||
allow files to be read from MS2000 disk images.
|
||||
|
||||
The disks are normal DD 3.5" disks, using a 70-track, single sided variation of
|
||||
the venerable IBM floppy disk scheme, so allowing 315kB of storage per disk.
|
||||
|
||||
If you have access to flux files for MS2000 disks, please [get in
|
||||
touch](https://github.com/davidgiven/cpm65/issues/new) --- I would like to add
|
||||
better support for these.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
## References
|
||||
|
||||
- [The EMMA-02 emulator](https://www.emma02.hobby-site.com/ms2000.html), which
|
||||
supports the MS2000 and provides information on it.
|
||||
|
||||
|
||||
@@ -1,2 +1,69 @@
|
||||
-d
|
||||
\r
|
||||
mx
|
||||
====
|
||||
## Soviet-era PDP-11 clone
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The DVK (in Russian, 沾7d65
|
||||
Computing Complex) was a late 1970s Soviet personal computer, a cut-down
|
||||
version of the professional SM EVM (ⵁ241c
|
||||
--- literally System of Mini Computers), which _itself_ was an unlicensed
|
||||
clone of the PDP-11. The MX board was an early floppy drive controller board
|
||||
for it.
|
||||
|
||||
<div style="text-align: center">
|
||||
<a href="http://www.leningrad.su/museum/show_big.php?n=1006"><img src="dvk3m.jpg" style="max-width: 60%" alt="A DVK computer"></a>
|
||||
</div>
|
||||
|
||||
The MX format is interesting in that it has to be read a track at a time. The
|
||||
format contains the usual ID prologue at the beginning of the track, then
|
||||
eleven data blocks and checksums, then the epilogue, then it stops. The
|
||||
actual encoding is normal FM. There were four different disk variants, in all
|
||||
combinations of single- and double-sided and 40- and 80-tracked; but every
|
||||
track contained eleven 256-byte sectors.
|
||||
|
||||
The format varies subtly depending on whether you're using the 'new' driver
|
||||
or the 'old' driver. FluxEngine should read both.
|
||||
|
||||
A track is:
|
||||
|
||||
* 8 x 0x0000 words (FM encoded as 01010101...)
|
||||
* 1 x 0x00F3 --- start of track
|
||||
* 1 x 0xnnnn --- track number
|
||||
* 11 of:
|
||||
* 128 words (256 bytes) of data
|
||||
* 16 bit checksum
|
||||
* **if 'new' format:**
|
||||
* 3 x 0x83nn --- `n = (track_number<<1) + side_number`
|
||||
* **if 'old' format:**
|
||||
* 3 x 0x8301
|
||||
|
||||
The checksum is just the unsigned integer sum of all the words in the sector.
|
||||
Words are all stored little-endian.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `110`: 110kB 5.25" 40-track SSSD
|
||||
- `220ds`: 220kB 5.25" 40-track DSSD
|
||||
- `220ss`: 220kB 5.25" 80-track SSSD
|
||||
- `440`: 440kB 5.25" 80-track DSSD
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read mx --110 -s drive:0 -o mx.img`
|
||||
- `fluxengine read mx --220ds -s drive:0 -o mx.img`
|
||||
- `fluxengine read mx --220ss -s drive:0 -o mx.img`
|
||||
- `fluxengine read mx --440 -s drive:0 -o mx.img`
|
||||
|
||||
## References
|
||||
|
||||
- [The Soviet Digital Electronics
|
||||
Museum](http://www.leningrad.su/museum/main.php) (source of the image
|
||||
above)
|
||||
|
||||
- [a random post on the HxC2001 support
|
||||
forum](http://torlus.com/floppy/forum/viewtopic.php?t=1384) with lots of
|
||||
information on the format
|
||||
|
||||
|
||||
@@ -1,2 +1,26 @@
|
||||
-d
|
||||
\r
|
||||
n88basic
|
||||
====
|
||||
## PC8800/PC98 5.25" 77-track 26-sector DSHD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The N88-BASIC disk format is the one used by the operating system of the same
|
||||
name for the Japanese PC8800 and PC98 computers. It is another IBM scheme
|
||||
variant, and is very similar to some mixed-format CP/M disk formats, where
|
||||
track 0 side 0 uses 128-byte single density sectors and the rest of the disk
|
||||
uses 512-byte double density sectors. (The reason for this is that the PC8800
|
||||
boot ROM could only read single density data.)
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read n88basic -s drive:0 -o n88basic.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write n88basic -d drive:0 -i n88basic.img`
|
||||
|
||||
|
||||
@@ -1,2 +1,50 @@
|
||||
-d
|
||||
\r
|
||||
northstar
|
||||
====
|
||||
## 5.25" hard sectored
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
Northstar Floppy disks use 10-sector hard sectored disks with either FM or MFM
|
||||
encoding. They may be single- or double-sided. Each of the 10 sectors contains
|
||||
256 (FM) or 512 (MFM) bytes of data. The disk has 35 cylinders, with tracks 0-
|
||||
34 on side 0, and tracks 35-69 on side 1. Tracks on side 1 are numbered "back-
|
||||
wards" in that track 35 corresponds to cylinder 34, side 1, and track 69
|
||||
corresponds to cylinder 0, side 1.
|
||||
|
||||
The Northstar sector format does not include any head positioning information.
|
||||
As such, reads from Northstar floppies need to by synchronized with the index
|
||||
pulse, in order to properly identify the sector being read. This is handled
|
||||
automatically by FluxEngine.
|
||||
|
||||
Due to the nature of the track ordering on side 1, an .nsi image reader and
|
||||
writer are provided for double-sided disks. The .nsi image writer supports
|
||||
both single- and double-sided disks; however single-sided .nsi images are
|
||||
equivalent to .img images.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `87`: 87.5kB 5.25" 35-track SSSD hard-sectored
|
||||
- `175`: 175kB 5.25" 40-track SSDD hard-sectored
|
||||
- `350`: 350kB 5.25" 40-track DSDD hard-sectored
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read northstar --87 -s drive:0 -o northstar.nsi`
|
||||
- `fluxengine read northstar --175 -s drive:0 -o northstar.nsi`
|
||||
- `fluxengine read northstar --350 -s drive:0 -o northstar.nsi`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write northstar --87 -d drive:0 -i northstar.nsi`
|
||||
- `fluxengine write northstar --175 -d drive:0 -i northstar.nsi`
|
||||
- `fluxengine write northstar --350 -d drive:0 -i northstar.nsi`
|
||||
|
||||
## References
|
||||
|
||||
- [MICRO-DISK SYSTEM MDS-A-D DOUBLE DENSITY Manual][northstar_mds].
|
||||
Page 33 documents sector format for single- and double-density.
|
||||
|
||||
[northstar_mds]: http://bitsavers.org/pdf/northstar/boards/Northstar_MDS-A-D_1978.pdf
|
||||
|
||||
|
||||
@@ -1,2 +1,32 @@
|
||||
-d
|
||||
\r
|
||||
psos
|
||||
====
|
||||
## 800kB DSDD with PHILE
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
pSOS was an influential real-time operating system from the 1980s, used mainly
|
||||
on 68000-based machines, lasting up until about 2000 when it was bought (and
|
||||
cancelled) by Wind River. It had its own floppy disk format and file system,
|
||||
both of which are partially supported here.
|
||||
|
||||
The PHILE file system is almost completely undocumented and so many of the data
|
||||
structures have had to be reverse engineered and are not well known. Please
|
||||
[get in touch](https://github.com/davidgiven/fluxengine/issues/new) if you know
|
||||
anything about it.
|
||||
|
||||
The floppy disk format itself is an IBM scheme variation with 1024-byte sectors
|
||||
and, oddly, swapped sides.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read psos -s drive:0 -o pme.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write psos -d drive:0 -i pme.img`
|
||||
|
||||
|
||||
@@ -1,2 +1,48 @@
|
||||
-d
|
||||
\r
|
||||
rolandd20
|
||||
====
|
||||
## 3.5" electronic synthesiser disks
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Roland D20 is a classic electronic synthesiser with a built-in floppy
|
||||
drive, used for saving MIDI sequences and samples.
|
||||
|
||||
Weirdly, it seems to use precisely the same format as the Brother word
|
||||
processors: a thoroughly non-IBM-compatible custom GCR system.
|
||||
|
||||
FluxEngine supports both reading and writing D20 disks, as well as basic support
|
||||
for the filesystem, allowing files to be read from and written to D20 disks.
|
||||
Note that the D20 was never intended to support arbitrary files on its disks and
|
||||
is very likely to crash if you put unexpected files on a disk. In addition,
|
||||
while the file format itself is currently unknown, there is a header at the top
|
||||
of the file containing what appears to be the name shown in the D20 file
|
||||
browser, so the name by which you see it is not necessarily the filename.
|
||||
|
||||
A word of warning --- just like the Brother word processors, the D20 floppy
|
||||
drive isn't very well aligned. The drive itself uses quarter-stepping to
|
||||
automatically adapt to whatever alignment the disk was formatted with. This
|
||||
means that trying to read such a disk on a PC drive, which does _not_ have
|
||||
adjustable alignment, may not work very well. In these situations it is possible
|
||||
to adjust the alignment of most modern drives, but this is a somewhat risky
|
||||
process and may result in permanently wrecking the drive alignment.
|
||||
|
||||
Please [get in touch](https://github.com/davidgiven/fluxengine/issues/new) if
|
||||
you know anything about it.
|
||||
|
||||
Many thanks to trondl [on the VCF
|
||||
forums](https://forum.vcfed.org/index.php?threads/roland-d-20-decoding-the-mysterious-floppy-format.1243226/)
|
||||
for assistance with this!
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read rolandd20 -s drive:0 -o rolandd20.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write rolandd20 -d drive:0 -i rolandd20.img`
|
||||
|
||||
|
||||
@@ -1,2 +1,23 @@
|
||||
-d
|
||||
\r
|
||||
rx50
|
||||
====
|
||||
## 400kB 5.25" 80-track 10-sector SSDD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Digital RX50 is one of the external floppy drive units used by Digital's
|
||||
range of computers, especially the DEC Rainbow microcomputer. It is a fairly
|
||||
vanilla single-sided IBM scheme variation.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read rx50 -s drive:0 -o rx50.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write rx50 -d drive:0 -i rx50.img`
|
||||
|
||||
|
||||
@@ -1,2 +1,15 @@
|
||||
-d
|
||||
\r
|
||||
shugart_drive
|
||||
====
|
||||
## Adjust configuration for a Shugart 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 to work with a Shugart drive. This only works
|
||||
on Greaseweazle hardware.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
fluxengine read ibm --720 shugart_drive
|
||||
```
|
||||
|
||||
|
||||
@@ -1,2 +1,34 @@
|
||||
-d
|
||||
\r
|
||||
smaky6
|
||||
====
|
||||
## 308kB 5.25" 77-track 16-sector SSDD, hard sectored
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Smaky 6 is a Swiss computer from 1978 produced by Epsitec. It's based
|
||||
around a Z80 processor and has one or two Micropolis 5.25" drives which use
|
||||
16-sector hard sectored disks. The disk format is single-sided with 77 tracks
|
||||
and 256-byte sectors, resulting in 308kB disks. It uses MFM with a custom
|
||||
sector record scheme. It was later superceded by a 68000-based Smaky which used
|
||||
different disks.
|
||||
|
||||
FluxEngine supports these, although because the Micropolis drives use a 100tpi
|
||||
track pitch, you can't read Smaky 6 disks with a normal PC 96tpi drive. You
|
||||
will have to find a 100tpi drive from somewhere (they're rare).
|
||||
|
||||
There is experimental read-only support for the Smaky 6 filesystem, allowing
|
||||
the directory to be listed and files read from disks. It's not known whether
|
||||
this is completely correct, so don't trust it!
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read smaky6 -s drive:0 -o smaky6.img`
|
||||
|
||||
## References
|
||||
|
||||
- [Smaky Info, 1978-2002 (in French)](https://www.smaky.ch/theme.php?id=sminfo)
|
||||
|
||||
|
||||
@@ -1,2 +1,48 @@
|
||||
-d
|
||||
\r
|
||||
tartu
|
||||
====
|
||||
## The Palivere and variations
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Tartu Palivere is a 1988 Z80-based computer from Estonia. It is a CP/M
|
||||
machine with 64kB of RAM, running off a 2MHz ꃣ0e30
|
||||
clone; it operated off punched tape, cassette, external hard drive or floppy, and was notable as being the first ever computer with an Estonian keyboard.
|
||||
|
||||
<div style="text-align: center">
|
||||
<img src="tartu.jpg" alt="The Tartu computer's developer Leo Humal working with one."/>
|
||||
</div>
|
||||
|
||||
From a floppy disk perspective, it is interesting because the floppy drive
|
||||
interface is almost entirely handled in software --- necessary at the time as
|
||||
the usual floppy disk interface chip at the time, the ⎲fba5
|
||||
of the WD1793), was hard to find. Instead, the floppy controller board was
|
||||
implemented entirely using TTL logic. Despite this, the encoding is fairly high
|
||||
density, using MFM and with up to 780kB on a double-sided 80 track disk.
|
||||
|
||||
<div style="text-align: center">
|
||||
<img src="tartu-fdc.jpg" alt="The Tartu FDC with Soviet TTL logic chips."/>
|
||||
</div>
|
||||
|
||||
FluxEngine supports reading and writing Tartu disks with CP/M filesystem access.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `390`: 390kB 5.25" 40-track DSDD
|
||||
- `780`: 780kB 5.25" 80-track DSDD
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read tartu --390 -s drive:0 -o tartu.img`
|
||||
- `fluxengine read tartu --780 -s drive:0 -o tartu.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write tartu --390 -d drive:0 -i tartu.img`
|
||||
- `fluxengine write tartu --780 -d drive:0 -i tartu.img`
|
||||
|
||||
## References
|
||||
|
||||
- [The Estonia Museum of Electronics](https://www.elektroonikamuuseum.ee/tartu_arvuti_lugu.html)
|
||||
|
||||
|
||||
@@ -1,2 +1,39 @@
|
||||
-d
|
||||
\r
|
||||
tids990
|
||||
====
|
||||
## 1126kB 8" DSSD
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Texas Instruments DS990 was a multiuser modular computing system from 1998,
|
||||
based around the TMS-9900 processor (as used by the TI-99). It had an 8" floppy
|
||||
drive module, the FD1000, which was a 77-track, 288-byte sector FM/MFM system
|
||||
with 26 sectors per track. The encoding scheme was very similar to a simplified
|
||||
version of the IBM scheme, but of course not compatible. A double-sided disk
|
||||
would store a very satisfactory 1126kB of data; here's one at <a
|
||||
href="https://www.old-computers.com/museum/computer.asp?st=1&c=1025">old-computers.com</a>:
|
||||
|
||||
<div style="text-align: center">
|
||||
<a href="https://www.old-computers.com/museum/computer.asp?st=1&c=1025">
|
||||
<img src="tids990.jpg" style="max-width: 60%" alt="A DS990 at old-computers.com"></a>
|
||||
</div>
|
||||
|
||||
FluxEngine will read and write these (but only the DSDD MFM variant).
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read tids990 -s drive:0 -o tids990.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write tids990 -d drive:0 -i tids990.img`
|
||||
|
||||
## References
|
||||
|
||||
- [The FD1000 Depot Maintenance
|
||||
Manual](http://www.bitsavers.org/pdf/ti/990/disk/2261885-9701_FD1000depotVo1_Jan81.pdf)
|
||||
|
||||
|
||||
@@ -1,2 +1,27 @@
|
||||
-d
|
||||
\r
|
||||
tiki
|
||||
====
|
||||
## CP/M
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Tiki 100 is a Z80-based Norwegian microcomputer from the mid 1980s intended
|
||||
for eductional use. It mostly ran an unbranded CP/M clone, and uses fairly
|
||||
normal CP/M disks --- IBM scheme and from 128 to 512 bytes per sector depending
|
||||
on the precise format.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `90`: 90kB 40-track 18-sector SSSD
|
||||
- `200`: 200kB 40-track 10-sector SSDD
|
||||
- `400`: 400kB 40-track 10-sector DSDD
|
||||
- `800`: 800kB 80-track 10-sector DSDD
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read tiki --90 -s drive:0 -o tiki.img`
|
||||
- `fluxengine read tiki --200 -s drive:0 -o tiki.img`
|
||||
- `fluxengine read tiki --400 -s drive:0 -o tiki.img`
|
||||
- `fluxengine read tiki --800 -s drive:0 -o tiki.img`
|
||||
|
||||
|
||||
@@ -1,2 +1,62 @@
|
||||
-d
|
||||
\r
|
||||
victor9k
|
||||
====
|
||||
## 1224kB 5.25" DSDD GCR
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Victor 9000 / Sirius One was a rather strange old 8086-based machine
|
||||
which used a disk format very reminiscent of the Commodore format; not a
|
||||
coincidence, as Chuck Peddle designed them both. They're 80-track, 512-byte
|
||||
sector GCR disks, with a variable-speed drive and a varying number of sectors
|
||||
per track --- from 19 to 12. Disks can be double-sided, meaning that they can
|
||||
store 1224kB per disk, which was almost unheard of back then. Because the way
|
||||
that the tracks on head 1 are offset from head 0 (this happens with all disks),
|
||||
the speed zone allocation on head 1 differs from head 0...
|
||||
|
||||
| Zone | Head 0 tracks | Head 1 tracks | Sectors | Original period (ms) |
|
||||
|:----:|:-------------:|:-------------:|:-------:|:--------------------:|
|
||||
| 0 | 0-3 | | 19 | 237.9 |
|
||||
| 1 | 4-15 | 0-7 | 18 | 224.5 |
|
||||
| 2 | 16-26 | 8-18 | 17 | 212.2 |
|
||||
| 3 | 27-37 | 19-29 | 16 | 199.9 |
|
||||
| 4 | 38-47\* | 30-39\* | 15 | 187.6 |
|
||||
| 5 | 48-59 | 40-51 | 14 | 175.3 |
|
||||
| 6 | 60-70 | 52-62 | 13 | 163.0 |
|
||||
| 7 | 71-79 | 63-74 | 12 | 149.6 |
|
||||
| 8 | | 75-79 | 11 | 144.0 |
|
||||
|
||||
(The Original Period column is the original rotation rate. When used in
|
||||
FluxEngine, the disk always spins at 360 rpm, which corresponds to a rotational
|
||||
period of 166 ms.)
|
||||
|
||||
\*The Victor 9000 Hardware Reference Manual has a bug in the documentation
|
||||
and lists Zone 4 as ending with track 48 on head 0 and track 40 on head 1.
|
||||
The above table matches observed data on various disks and the assembly
|
||||
code in the boot loader, which ends Zone 4 with track 47 on head 0
|
||||
and track 39 on Head 1.
|
||||
|
||||
FluxEngine can read and write both the single-sided and double-sided variants.
|
||||
|
||||
## Options
|
||||
|
||||
- Format variants:
|
||||
- `612`: 612kB 80-track DSHD GCR
|
||||
- `1224`: 1224kB 80-track DSHD GCR
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read victor9k --612 -s drive:0 -o victor9k.img`
|
||||
- `fluxengine read victor9k --1224 -s drive:0 -o victor9k.img`
|
||||
|
||||
To write:
|
||||
|
||||
- `fluxengine write victor9k --612 -d drive:0 -i victor9k.img`
|
||||
- `fluxengine write victor9k --1224 -d drive:0 -i victor9k.img`
|
||||
|
||||
## References
|
||||
|
||||
- [The Victor 9000 technical reference manual](http://bitsavers.org/pdf/victor/victor9000/Victor9000TechRef_Jun82.pdf)
|
||||
|
||||
- [DiskFerret's Victor 9000 format guide](https://discferret.com/wiki/Victor_9000_format)
|
||||
|
||||
|
||||
@@ -1,2 +1,42 @@
|
||||
-d
|
||||
\r
|
||||
zilogmcz
|
||||
====
|
||||
## 320kB 8" 77-track SSSD hard-sectored
|
||||
<!-- This file is automatically generated. Do not edit. -->
|
||||
|
||||
The Zilog MCZ is an extremely early Z80 development system, produced by
|
||||
Zilog, which came out in 1976. It used twin 8-inch hard sectored floppy
|
||||
drives; here's one at the <a
|
||||
href="http://www.computinghistory.org.uk/det/12157/Zilog-Z-80-Microcomputer-System/">Centre
|
||||
for Computing History</a>:
|
||||
|
||||
<div style="text-align: center">
|
||||
<a href="http://www.computinghistory.org.uk/det/12157/Zilog-Z-80-Microcomputer-System/">
|
||||
<img src="zilogmcz.jpg" style="max-width: 60%" alt="A Zilog MCZ at the Centre For Computing History"></a>
|
||||
</div>
|
||||
|
||||
The MCZ ran Zilog's own operating system, Z80-RIO, and used 77 track
|
||||
single-sided disks, with 32 sectors (each marked by an index hole), with 132
|
||||
bytes per sector --- 128 bytes of user payload plus two two-byte metadata
|
||||
words used to construct linked lists of sectors for storing files. These
|
||||
stored 320kB each.
|
||||
|
||||
FluxEngine has read support for these, including support for RIO's ZDOS file
|
||||
system.
|
||||
|
||||
## Options
|
||||
|
||||
(no options)
|
||||
|
||||
## Examples
|
||||
|
||||
To read:
|
||||
|
||||
- `fluxengine read zilogmcz -s drive:0 -o zilogmcz.img`
|
||||
|
||||
## References
|
||||
|
||||
* [About the Zilog MCZ](http://www.retrotechnology.com/restore/zilog.html),
|
||||
containing lots of useful links
|
||||
|
||||
* [The hardware user's manual](https://amaus.org/static/S100/zilog/ZDS/Zilog%20ZDS%201-25%20Hardware%20Users%20Manual.pdf)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user