Here are some of the tools and programs I’ve been using to archive cassettes and disks for Timex/Sinclair computers.
Audacity
Available for Windows, Linux and Mac computers, Audacity is my go-to for converting cassette tapes to digital files.
Audacity can record from just about any audio input source on your computer. My MacBook does not have a microphone input, so I’m using a USB mic/ear port that cost less than $10. I’ve connected the EAR output of my TS 2020 cassette recorder to the mic in of the port.
Recording in Audacity is simple: I press play and hit the record button and in most cases, the recording levels are good. Once in a while, I either adjust the sound level on the tape or the input gain.
Once I have a recording, I export it from Audacity as a WAV file (mono, 44.1khz, 16 bit). The next stop is to FUSE, a ZX Spectrum and TS 2068 emulator.
FUSE
Fuse (the Free Unix Spectrum Emulator) was originally a ZX Spectrum emulator for Unix. It has been ported to Mac OS X, Windows, the Wii, AmigaOS and MorphOS. You can download compiled binaries for these platforms by starting at the FUSE website.
I like FUSE because it can load directly from WAV files and its loader is quite robust. It’ll immediately tell me whether my conversion has been successful. The image above is Salamander Software’s Laser Zone, released by Quicksilva for the ZX Spectrum and eventually converted to the TS 2068.
Once I’ve confirmed that the file is good, my next step is to convert it to the more popular (and a lot smaller) TZX and TAP formats.
tzxtools
tzxtools is a collection of command line tools for processing TZX files. TZX is a common file format for preserving computer tapes of the ZX Spectrum, but also Amstrad CPC and C64. tzxtools mainly supports ZX Spectrum TZX files, but raw file operations can be applied on any TZX file.
I start with tzxtools because it produces normal speed TZX files (more on that below). I also like it because most of the commands can produce some output as they run. tzxwav is the program I use to convert the WAV file from Audacity to TZX and TAP files. Here’s an example command:
tzxwav -p -v -o laserzone.tzx laserzone.wav
In the example, -p shows a progress bar as it works through the WAV file and -v gives verbose text output of the conversion process. -o specifies the output file, followed by the file name. The filename extension determines what kind of file tzxwav will produce. Last, the source filename is provided.
On a good tape, there are no errors and you get output that looks like this:
I do this again for the TAP format.
If tzxwav has a hard time converting a WAV file, I’ll turn to fuse-utils.
fuse-utils
A set of emulator and file manipulation utilities, fuse-utils leverages the libraries that are part of FUSE. I use audio2tape to convert WAV files to TZX and TAP files.
audio2tape is really good at converting difficult WAV files. Its main difference is that it writes TZX files using Turbo Speed blocks. I don’t quite know what that means aside from a string of error messages when trying to make TAP files. Here’s an example audio2tape command:
audio2tape laserzone.wav laserzone.tzx
And here’s what its output looks like:
Block ended, found 19 bytes
Flag: 0x00
Type: Header
Program: VLOADER
First block seconds: 7.30503
Last block seconds: 12.1233
Checksum:PASS Read:0x6d Computed:0x6d
Block ended, found 725 bytes
Flag: 0xff
Type: Data
First block seconds: 12.9139
Last block seconds: 18.3376
Checksum:PASS Read:0x90 Computed:0x90
Block ended, found 19 bytes
Flag: 0x00
Type: Header
CODE: LZLOGO
First block seconds: 23.0791
Last block seconds: 27.9036
Checksum:PASS Read:0x8a Computed:0x8a
Block ended, found 6914 bytes
Flag: 0xff
Type: Data
First block seconds: 28.6981
Last block seconds: 57.7498
Checksum:PASS Read:0x6e Computed:0x6e
Block ended, found 19 bytes
Flag: 0x00
Type: Header
CODE: LASERZONE
First block seconds: 63.7603
Last block seconds: 68.5727
Checksum:PASS Read:0xd4 Computed:0xd4
Block ended, found 12434 bytes
Flag: 0xff
Type: Data
First block seconds: 69.357
Last block seconds: 132.179
Checksum:PASS Read:0xa0 Computed:0xa0
found 6 ROM blocks
The important part here is the Checksum:PASS. That generally means the conversion has been successful.
Check your work
The last step is back to FUSE to check that the TZX and TAP files work. In the case of Laser Zone, it’s a resounding yes.