mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
76 lines
2.5 KiB
Markdown
76 lines
2.5 KiB
Markdown
Disk: Apple II
|
|
==============
|
|
|
|
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.
|
|
|
|
|
|
Reading discs
|
|
-------------
|
|
|
|
Just do:
|
|
|
|
```
|
|
fluxengine read apple2
|
|
```
|
|
|
|
You should end up with an `apple2.img` which is 143360 bytes long. It will be in
|
|
physical sector ordering. You can specify a sector ordering, `--appledos` or
|
|
`--prodos` to get an image intended for use in an emulator, due to the logical
|
|
sector mapping issue described above:
|
|
|
|
```
|
|
fluxengine read apple2 --prodos
|
|
```
|
|
|
|
You will also need this for filesystem access.
|
|
|
|
Writing discs
|
|
-------------
|
|
|
|
Just do:
|
|
```
|
|
fluxengine write apple2 -i apple2.img
|
|
```
|
|
|
|
If your image is in logical sector ordering (images intended for emulators
|
|
usually are), specify a modifier of `--appledos` or `--prodos`:
|
|
|
|
```
|
|
fluxengine write apple2 --prodos -i apple2.img
|
|
```
|
|
|
|
|
|
Useful 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)
|