This is a collection of tools for automating the ripping of floppy disks with built in error detection and validation depending on the format of the disk. This is made possible with the Greaseweazle project.
I work with a wide variety of disk types and prefer to validate my disk image archives by using tools to "use" the files somehow. Most of the time that means extracting files from the disk image.
I also sometimes need to create my own diskdef
s for disks for uncommon
systems.
This is a location for me to track the different methods I'm using for ripping and validating disks based on the different systems and formats.
There are two types of scripts in this repo, the single parent script, and multiple format scripts.
The parent script is gw-raw
. This script handles the primary reading of a disk
to get the best archival copy to start. It is used by all format scripts as
well. If an error is detected while decoding a format it will automatically
re-rip the disk with more revs to get a higher confidence copy to work with. Any
tasks associated with all disk imaging for every format goes here.
The parent script can also be directly called to just get a raw reading of a disk if you do not know the format or do not wish to decode it.
The parent script should not normally need to be modified.
All other scripts will source
the parent script and call its rip
function.
They can also set up there own variables for file names. Log file names and
other information can be sourced from the parent script.
Format scripts need to overload the decode
function from the parent script.
This will most likely just be a call using gw
with a diskdef for the specific
format. You also can call any other external utilities needed to get your final
usable image. The decode log should always contain a gw convert
output which
is used to validate the image.
Format scripts may also overload the extract
function to perform post
processing work to images. This is done after validation and potential
re-rips. Logging here is optional.
If a format does not have a matching gw
diskdef one can be added to the
diskdefs.cfg
file. The gw-raw
script provides a path to the file in a
$diskdefs
variable by determining where it was run from.
Just running gw-ibm.1440 disk-name
as an example is all you need to do
depending on the format. This would create Kryoflux raw tracks, a 1.44MB IMG,
and extract files using mtools
.
The format scripts should have a header for sourcing the parent file that will
work either in the local directory or when the gw-tools
folder is put in the
PATH
.
If you are unsure of what a disk is or are adding a new format script, you can follow these steps:
- Rip your unknown disk using
gw-raw $project_name
(using appropriate "raw" drive type) - Inspect the disk structure from generated PNG (If HxC Floppy Emulator is setup)
- Find matching or create a new format script (copy
gw-template
for new formats) - Run the correct format script using the same project name to have it finish the decoding process.
Drive Type | Script |
---|---|
80 track double sided | gw-raw |
40 track double sided | gw-raw.40 |
80 track single sided | gw-raw.80ss |
Note: As a rule of thumb I always rip single sided disks as double sided if I have a double sided drive.
Disk Type | Format Script |
---|---|
IBM 5.25in SSDD 160KB | gw-ibm.160 |
IBM 5.25in DSDD 360KB | gw-ibm.360 |
IBM 5.25in DSHD 1.2MB | gw-ibm.1200 |
IBM 3.5in DSFD 720KB | gw-ibm.720 |
IBM 3.5in DSHD 1.44MB | gw-ibm.1440 |
IBM 3740 8in CP/M | gw-cpm.3740 |
Jonos Ltd 3.5in SSDD | gw-jonos.35 |
HP LIF 33 Track DD | gw-hp.lif.33dd |
HP LIF 77 Track DD | gw-hp.lif.77dd |
HP LIF 77 Track HD | gw-hp.lif.77hd |