Berto's ZX-81 Page

last modified: 19980913 [very much under construction]


... yes I started writing my own emulator (take a look at it, but it is not working properly yet!!! (55kB))... updated 19980913
(click for full size image).


I wrote this small program that can be used to transfer the old zx-81 cassettes to the pc, [sound card and some standard wave editing software is required]. You can download a version, it is totally free, and contains also the source code.

Sample your tape program (e.g. on 22Khz, must be 8 bits mono), cut away leading and trailing silence and safe it in 'raw' mode (that is just the data, no headers ... most wave editors are capable of doing this). Then run the program and you get your .P files.

Now with improved error detection (including sample number) and more options.

Tip: if errors are reported, take a look at the original 'raw' wav file, in almost all cases the cause of the error is clearly visible, either a peak in the silence between two bits (a bit is inserted) or the data bit (or bits) are not recognized because of a tape dropout.

Try to record the signal as loud as possible (i.e. 80-90% of the maximum)


Produces a listing of a .P file.


Produces a wav file [mono, 8 bits, 22050 Hz, raw mode] from a .P file!

Can be used to transfer your .P back from the pc to the original zx81, although I have not tested this on a real zx81 (please let me know if it works, or also if it does not work!).

All three programs, including source code can be downloaded as a zip file: (63kB) [upd 19980902]

P-files collection (69kB) [upd 19980902]

A collection of zx81 programs I wrote in 1983/1984. Most programs have (compared to modern standards) a very crude interface, and often the language is a mixture of Dutch and English.

But at least I enjoyed to see (and run!) some of my first and historic programs ...

Description Screenshot
Appel ['apple']

A later version for the BBC electron was called Newton, because the purpose is to catch the (randomly) falling apples.

Control is <8> to the right, and <5> to the left.

Control is completely in machine code.

amusement: * *


This game was originally written by Paul Toland, but I rewrote the screen and movement control in machine code.

The purpose of this game is to leave the maze with the score (0,0)! which is not as easy as it may appear.

Control is <8> to the right, and <5> to the left, <6> down and <7> up.

amusement: * *


Another game originally written by Paul Toland, but see mcity for my version.

amusement: *


This program demonstrates a couple of machine code routines that can (could) be used in different programs:

  • Screen fill routines.
  • A better scroll (the default scroll routines of the zx81 were pretty useless when a lot of variable space was in use).
  • A random routine.
  • A dice routine (see zeven).

Find yourself a way in maze (with invisible walls). You can use the 'klein duimpje' (humpty dumpty) option !

Control is <6> to the right, and <4> to the left, <2> down and <8> up, but the movement is a little bit tricky (try to press a key as short as possible). Again (as in caverns) the directional input is only required if a change in direction is possible.

amusement: *


This utility will dump all your variables, it can be merged with an existing program, but only if the other program's first linenumber is greater than 15.


Four games in one program, including mastermind


Original author unknown, I rewrote it (again) in machine code for smoother control, you are a driver on a slippery road. Don't crash into the other cars !

Control is <6> ... <0> to the right, and <1> ... <5> to the left.

amusement: * *

Hunt & Huntmc

I'm not sure if this was an original game, or I stole the idea from somebody else, but it is at least my own interpretation.

Something is going after you, but at least when you move, you leave obstacles behind.

Control is <7> to the right, and <5> to the left, <6> down and <8> up.

amusement: * *


This program gives an illustration of a trick to store multiple screens on the zx81 and animate them, e.g. to show a rotating ball or a rotating cube.

The ball does not seem to work on xt2beta4 ! and it rotates much too quick on the zx81 emulator by Paul Robson. Initialization takes some time although.


Scrolling (to the left) of large characters (8x8).


Scrolling (to the left) of medium sized characters (4x4 (8x8 using plot 'characters')).


The program draws lines, nothing special, but the real trick is that you can store up to 5 screens, and retrieve them again in a few milliseconds !


You ('C') have to catch all the stars (6,8 or 11; this depends on the choosen speed), but you can control only the movement in the upwards direction (by pressing any key, except the space/break).

Use GOTO 2100 to restart if you've accidentally pressed break.

Control is completely in machine code.

amusement: * *


Originally written by Graham Charlton, but adapted by me (including some machine code, but I have no idea what it is used for).

amusement: * * *

Ry4mc ['connect4']

A complete MC implementation of the game connect 4, extremely fast and pretty strong. The control is obvious. A second version is also included (ry4mc2), but I have no idea what the differences are (somewhere in the machinecode, that's certain), I have a suspicion that ry4mc is the latest version.

I remember I worked on it (writing the complete code on paper first) for more than a week (almost night and day), and then in one nightly session typed the code into the zx ... and it worked almost immediately. The next week all my dreams where in hexadecimal numbers ....

amusement: * * *


Does not do much on emulators (although xt2beta4 shows produces nice displays).


'Squash', the purpose is to keep the ball in the game as long as possible, completely in machine code.

amusement: * * *


Another original game, it resembles gp a little bit, but this time you're on the ship 'titanic', and have to pick up drowning man and avoid the icebergs. I could have been rich from this game if the titanic mania happened in 1984!

This is another game that I spent a lot of time in writing it, but I've played the final game only a couple of times, the game speeds up and this has a strange hypnotic effect (or put it in other words, the game literally made me sea-sick).

amusement: * * *


This is an original implementation of a bar dice-game (that I played quite often at that time [the real game, not this zx81 version].

It is played by 2 or more players, the first players throws 6 dice, and removes all pairs of dice whose sum is 7. If the remaining total is still quite high, (s)he can decide to throw another time, and possibly a third time. The other players then take their turn, but they can only throw as many times as the first player did (or less). The remaining sums are added to each players total and the next round is played (the player with the highest total will be the first player now). The game ends when any of the players reach the maximum (75 or 100), but the final score is made up if all players have played this last round.

The looser has to buy a round of beer...

amusement: * * *


append programs ? (similar to mrg ??)


acutally a disassembler (a little bit of).


jump from machine code to a given basic line number.


merge two programs into one.


make your program nolistable.


Put 8 queens on a chess board (I think actually only the last method, in mc works at all).


can dump the registers from a mc program, and restores the screen ! (don't know exactly how it works, have to keep a key pressed ?)


machine code for random numbers.


reaction game.



mc routine that removes all rem-lines (above a given line nr)



tower of hanoi


stolen somewhere


Back to Berto's Home Page