Extract ZX81 Programs from a Sampled Cassette

ZX81 programs are represented on a cassette tape as a series of beeps. The ZX81 Tape Converter analyses these beeps and reconstructs the program data.

To extract ZX81 programs, you first need to sample the cassette. The ZX81 Tape Converter doesn't currently do this, so you'll need to use another program to sample the cassette. I use the wave editor that came with my Nero CD writing software.

Once you've got the sample, open it using the File -> Open menu option from the Main ZX81 Tape Converter window.

This will automatically analyse the sample and will display the results of the analysis in the Analysis Results window. If successful, then the results window shows a list of the ZX81 programs identified in the sample. You can then save the ZX81 programs either as one or more .P files, or as a single .TZX file.

If it is not successful, then the errors encountered are shown in the results window. Clicking on each error shows the corresponding section of the sample, so you can determine how to fix the error. This will either be by changing the analysis settings in the Analysis Settings window, or by modifying the sample itself by inserting a 0 or 1 bit in the main ZX81 Tape Converter window.

Comparing two samples

Sometimes sampled programs suffer from "dropouts" where the sample volume drops sufficiently that one or more bits cannot be identified. For short dropouts it may be possible to deduce the missing data and manually insert the bits, however for longer dropouts this may not be possible.

If you are lucky enough to have a second sample of the same program, either from two different tapes, or because the same program was recorded twice on either side of the cassette, then the main ZX81 Tape Converter window allows you to load in the second sample (using the File -> Open Second menu option), and to compare them side by side, seeing any differences in the program data, and often allowing dropouts in one sample to be fixed manually by comparison with the second.

Note that when saving the ZX81 program data to .P or .TZX files, it is always the data from the first sample that is saved.

ZX81 Samples - Detail

A typical saved ZX81 program is simply a block of memory, starting at memory address 16393 (the VERSN system variable) and ending after the variables area. Unless otherwise indicated, the ZX81 Tape Converter assumes this is the case and uses information in the system variables to check the length of the program. Saved ZX81 programs don't include any built-in way to validate they have loaded correctly; some programs, such as Psion's Flight Simuation do include an additional checking routine that's called when the program has loaded.

Each bit of each byte in the program has a distinct beep. They are all of the same frequency; a 0 bit is represented by 4 complete waves, a 1 bit is represented as 9 complete waves. There's a fixed gap between each bit.

This picture shows a typical sequence of 1's and 0's: