winzx - a Windows 98-themed ZX Spectrum custom tape loader
Loading games into the ZX Spectrum computer was an adventure in itself. For between 2-4.5 minutes the user was treated to a light show of red/cyan then blue/yellow lines dancing in the background - all to an audio score for which some time was required to acquire a taste.

This is, of course, if the loader being used was the default, ROM-located tape loader - invoked commonly from BASIC via LOAD "".

Some games, however, came with their own loader. This enabled any imaginable kind of on-screen effect - though limited by the timing of the analogue signal on the tape.

This prompted me to develop my own custom loader, winzx. Since it deals with precise timing, the only adequate programming language was Z80 assembly.

I designed winzx to look like a Windows 98 progress bar/window, which advances as the ZX Spectrum loads data from tape

Here, it is loading my ZX Spectrum game Husband Chores

In keeping with the Windows 98 style, this is what winzx displays if a tape loading error is encountered

Upon pressing a key, the ZX Spectrum resets

The downloads below provide full source code and build scripts for anybody to use the winzx loader with their own ZX Spectrum programs.


winzx source complete with tools - unzip anywhere and run make.bat to build a TAP image showing how winzx can be used to load a game. Contains everything (source code, tools) you need to study and extend winzx with your own effects

example TAP containing program loaded with winzx - run in any ZX Spectrum emulator.
NOTE that many emulators which use "insta-loading" will likely automatically stop the tape immediately BEFORE the block to be loaded by winzx (last block in this TAP). This is because many emulators' way of telling whether the program is awaiting tape load is by matching the PC (Program Counter) to the "Tape Routines" address range in the ZX Spectrum ROM. As such, they are oblivious of custom loaders (obviously loaded at addresses other than the ROM).