Tape
Most Spectrum software was originally distributed on
audio cassette tapes. The software was encoded on tape as a sequence of pulses that may sound similar to the sounds of a modern day
modem. Since ZX Spectrum had only a rudimentary tape interface, data was recorded using an unusually simple and very reliable modulation, similar to
pulse-width modulation but without a constant clock rate. Pulses of different widths (durations) represent 0s and 1s. A "zero" is represented by a ~244
μs pulse followed by a gap of the same duration (855 clock ticks each at 3.5
MHz) for a total ~489 μs;
[11] "one" is twice as long, totaling ~977 μs. This allows for 1023 "ones" or 2047 "zeros" to be recorded per second. Assuming an even proportion of each, the resulting average speed was ~1365 bit/s. Higher speeds were possible using custom
machine code loaders instead of the
ROM routines.
Naturally, a standard 48K program would take about 5 minutes to load: 49152 bytes × 8 = 393216 bits; 393216 bits / 1350
baud ≈ 300 seconds = 5 minutes. In reality, however, a 48K program usually took between 34 minutes to load (because of different number of 0s and 1s encoded using pulse-width modulation), and 128K programs could take 12 or more minutes to load. Experienced users could often tell the type of a file, e.g. machine code, BASIC program, or screen image, from the way it sounded on the tape.
During loading and saving processes, the border usually flashes with cyan/red stripes for the pilot signal and yellow/blue stripes for the header and data blocks. Headers had a short file size of about 15 bytes and are generally presented with a message such as "Program: <filename>", "Bytes: <filename>" and "Character array: <filename>". Each message displays information and details about the file type. The "Program" message is used for BASIC programs. "Bytes" refers to a program written in machine code (binary file) or the screen display (LOAD"" SCREEN$, LOAD"" CODE 16384,6912). "Character array" refers to an ASCII-encoded file. Pilot signals are usually represented with a thick stripe size; on header and data blocks, the stripes are thinner (depending the baudrate). However, it's possible to alter the border colours by modifying the parameters of many custom loaders and making the border flashing with multicoloured stripes to obtain a fancy border effect during the loading process. The striped border effects can also be found on games written for other 8-bit computers such as the Amstrad CPC 464/664/6128 and the Commodore C64/128.
The Spectrum was intended to work with almost any cassette tape player, and despite differences in audio reproduction fidelity, the software loading process was quite reliable; however all Spectrum users knew and dreaded the "
R Tape loading error, 0:1" message. One common cause was the use of a cassette copy from a tape recorder with a different head
alignment to the one being used. This could sometimes be fixed by pressing on the top of the player during loading, or wedging the cassette with pieces of folded paper, to physically shift the tape into the required alignment. A more reliable solution was to realign the head, which was easily accessible on a number of tape players, with a small (jeweller's)
screwdriver.
Typical settings for loading were ¾ volume, 100% treble, 0% bass. Audio filters like loudness and
Dolby Noise Reduction had to be disabled, and it was not recommended to use a
Hi-Fi player to load programs. There were some tape recorders built specially for digital use, such as the
Timex Computer 2010 Tape Recorder. The
ZX Spectrum Plus 2 and
2A models are fashioned after an
Amstrad CPC 464 and feature a built-in tape "datacorder".
Complex loaders with unusual speeds or encoding were the basis of the ZX Spectrum
copy protection schemes, although other methods were used including asking for a particular word from the documentation included with the game often a novella or the notorious
Lenslok system. This had a set of plastic prisms in a fold-out plastic holder: the idea was that a scrambled word would appear on the screen, which could only be read by holding the prisms at a fixed distance from the screen courtesy of the plastic holder. This relied rather too much on everyone using the same size television, and Lenslok became a running joke with Spectrum users.
One very interesting kind of software was copiers. Most were
copyright infringement oriented, and their function was only tape duplication, but when
Sinclair Research launched the ZX Microdrive, copiers were developed to copy programs from audio tape to microdrive tapes, and later on diskettes. Best known were the Lerm suite produced by Lerm Software and
Trans Express by Romantic Robot. As the protections became more complex (e.g. Speedlock) it was almost impossible to use copiers to copy tapes, and the loaders had to be cracked by hand, to produce unprotected versions. Special hardware, like the Romantic Robot's
Multiface which was able to dump a copy of the ZX Spectrum RAM to disk/tape at the press of a button, was developed, entirely circumventing the copy protection systems. "Snapshots" generated by these black boxes would later become the original fileteype recognised by emulators - .SNA - although these memory dumps have been generally replaced by more complex files, incorporating original loading features and multi-level options.