Fixing the Bellcom disks
This post is about the Bellcom disks, a large collection of largely public domain software sold out of Canada by Don Bell back in the late 1980s and early 1990s. I became interested in this collection when I downloaded the ABBUC "Atari Pooldisk Two" (it's on archive.org, e.g. https://archive.org/details/cdrom_PoolDisk_Too_disc2, although I believe that's actually disk 1). It was the largest set of disks on that CD (967 images), and contained quite an assortment of software for the Atari. It was also clear when I started examining the disks that parts of the archive had bit rotted.
So let's fight bit rot! The process is as follows:
- Identify all disks which are collections of files (largely DOS 2.0/2.5 format disks).
- Validate the integrity of the files on each disk by following the next sector links.
- When we find a file with integrity issues, look for an alternate source for the file to assist in restoring the data.
The last post outlined the larger parts of steps 1+2 (but omitted the code for brevity). Step three is actually simpler than you'd think. Find a part of the file that isn't bit rotted and is somewhat unique and grep for similar contents on the rest of the Pooldisk archive. There's a number of ways to do that, but given my love of Perl, here's what I've been using, a recurse binary grep routine, just add the read_file from the previous routines.
sub bgrep_dir { my ($path, $pattern) = @_; my (@dirs, @files); opendir my $dh, $path or return; for (readdir $dh) { push @dirs, $_ if -d "$path/$_" && $_ ne "." && $_ ne ".."; push @files, $_ if /\.atr$/i; } foreach my $dir (@dirs) { bgrep_dir("$path/$dir", $pattern); } foreach my $file (@files) { my $buff = read_file("$path/$file"); print "Binary file $path/$file matches\n" if $buff =~ $pattern; } } sub bgrep { my $pattern = shift; bgrep_dir('.', qr/$pattern/); } bgrep(@ARGV);
Let's start with two disks that have zero sectors where there is another copy of the data in the Bellcom collection.
D112_B.atr: Sector 182 is empty, affecting BBKART.OBJ (BBK Artist).
atr.pl -copy 642.atr 95 D112_B.atr 182 + fix the sector links
atr.pl -copy 417.atr 664 281.atr 327 + fix the sector links
281.atr
I'll append additional patched images over time to this post (at least 20 images have identifiable issues). But next time we're going to change the patch routine so that we won't usually need to manually fix the sector links.
- 1
- 1
0 Comments
Recommended Comments
There are no comments to display.