PZX home page

Welcome to PZX homepage.

PZX is a tape file format designed primarily for archiving content of Sinclair ZX Spectrum tapes. It was designed by Patrik Rak to be simpler to use than TZX format while retaining all important TZX features.

PZX tools suite is the accompanying set of programs for manipulating the PZX files. You can download both the source and precompiled binaries from this page using the links listed further below.

The format

If you are looking for the PZX format specification itself, you have come to the right place. You can find the most recent version here.

If you intend to add support for PZX to your software, you might be also interested in the PZX tools themselves. In particular the pzx2txt and txt2pzx proved to be invaluable aid while experimenting with tape files and tape file support in general.

If you need some PZX files for testing to get you started, you may have a look here.

The tools

The format itself would be of little use if there were no tools to support it. Therefore the basic suite of programs which can be used to create and modify the PZX files was written. You can download it by using one of the links below:

Download PZX tools 1.1 for Windows - includes both source and Windows binaries.

Download PZX tools 1.1 Source - this one includes source only, no binaries.

Just download the archive which suits you best and unpack it to wherever you want to. For further installation and usage instructions simply read the docs included in the archives themselves. You might also want to check the Q&A section below for hints regarding common tasks such as mass converting tape files to PZX.

Questions & Answers

This section is a humble attempt to answer few of the common questions you might have wanted to know an answer for (or maybe not).

Why new format?

One would expect that after the TZX format was in use for so many years, there would be little need to come up with something else. The TZX should already allow for archiving of anything there is, right?

Well, the authors of the TZX format themselves didn't think so, and so yet another version of the format specification was created, one which added few more blocks which should overcome the shortcomings of the previous version. However, not everyone seemed to be really excited about these changes, in particular the developers of the emulators complained about the overly complexity added to an already quite bloated format.

An interested reader can find all the details of the heated discussion which followed in the forums of World of Spectrum, namely here, here, and here. But to make the long story short, PZX format was created as a viable alternative for those who want a format which is fairly simple to use and implement and yet retains all the important TZX features.

What difference makes PZX for developers?

Simplicity.

If you have ever implemented TZX support in your emulator or other software, you certainly must have wondered about certain aspects of the format, like it's non-uniform block structure, or why there are so many different blocks for storing pulses and data, or its awkward handling of polarity. You might have even not got so far, giving up just after reading the TZX specs, discarding the very idea as something too complex.

If that's the case, you should certainly give PZX a look. You might be surprised how simple it is to implement. In fact, in some aspects it is even simpler than adding the TAP support, as there is no pulse information which needs to be hardcoded in your program.

What difference makes PZX for users?

As far as the users are concerned, there is little difference between using PZX or TZX. The filesize is about the same, perhaps few hundred bytes more on average in case of PZX, but that's about that.

This is, of course, assuming the emulator of your choice supports both PZX and TZX. If it doesn't, there is not much choice, is it?

Which emulators support PZX?

At the time being, there are few emulators which already support PZX, albeit the format was published fairly recently. The ones which do include:

Feel free to let me know if you learn about some addition for this list.

How do I convert all my TZX files to PZX?

Converting all of your TZX files to PZX is simple. Download and install PZX tools, open console, cd to the directory containing your files, then use the following command (in case if you are using Unix/Linux/MacOS):

find . -iname '*.tzx' | perl -pe 's/^((.*).tzx)$/tzx2pzx -o "$2.pzx" "$1"/i' | sh

or this command (in case you are using Windows NT/XP/Vista):

for /r %A in (*.tzx) do tzx2pzx -o "%~dpnA.pzx" "%~fA"

Contact

In case you have some PZX related stuff to discuss, feel free to contact me at pzx at raxoft dot cz. Only serious mails, though, please.