In this page, I am offering my achievements in terms of software for the ZX81. These are programs that I developed and others that I just modified to incorporate new features such as AY sound or characters redefinition.

Some of these programs require special hardware features, which will be identified by the icons below:

Requires a character board mapped in RAM at address 3000h.
Requires a character board with CHR$128 scheme, mapped in RAM at address 3000h. This card allows the redefinition of up to 128 characters, as opposed to the traditional scheme that allows only 64 characters.
Requires a ZONX-81 compatible sound board.
Uses WRX high-resolution scheme and requires that the memory expansion has read access during the refresh cycle of the CPU.
Requires a ZX Printer

To run the programs on the EightyOne emulator you must configure the hardware emulated as shown in the following images (menu "Options / Hardware" or F6).

I hope you enjoy and have fun.

Kelly Abrantes Murta

ZX81 Toddy Forth (JAN/2011)

Toddy Forth is a implementation for the ZX81 microcomputer which was developed from MS Forth 2.0 code, adopting many of the concepts of Camel Forth by Bradford J. Rodriguez. As far as I know, is the only forth for ZX81 to use Direct Threaded Code (DTC), which makes it considerably faster than other existing implementations.


Programs can be comfortably writed in text editor of your choice and compiled into the emulator EightyOne. You shall load the forth text file at EO RAM through menu File/Load Memory Block at the address 32768, for example. Then just compile it with 32768 LOAD.

Compiling Calendar.fth in Eightyone

The basic core occupies a little over 4kB and includes the most common words and can be easily extended as needed. Includes several sample programs and a library file with dozens of definitions of words not included in the basic core.

The display is fixed in memory at address 16530 (4092h), corresponding to first screen position (DFILE+1).

The forth system variables are:

S0 Base value of the parameter stack
R0 Base value of the return stack
RSP Return Stack Pointer
TIB Terminal Input Buffer
LBP Line Buffer Pointer - current address into TIB
STATE Contain the compilation state - 0 = interpretation state / 1 = compilation state
BASE Current number base, used for input and output conversion
HLD Holds the address of the last character during numeric output conversion
CUR_POS Position of cursor on the screen
DP Dictionary Pointer
CONTEXT A pointer to the vocabulary within which dictionary searches will first begin
CURRENT A pointer to the vocabulary where new definitions are created
LAST Last word defined in CURRENT vocabulary

Bellow, all programs included in Toddy Forth package:

3D Maze   CHR$128ZONX


Breakout   UDGZONX

Breakout STD   ZONX





Towers of Hanoi


Millipede   UDGZONX






Poker HR (2010/SEP)   UDG

Program published in Micro Sistemas Magazine issue 54 (March 1986), here a version with characters redefinition.


Panic HR (2010/AUG)   CHR$128

Game published in MicroHobby magazine issue 23 (September 1985), was adapted by me for high resolution by redefinition of characters.

"You and other miners were working inside a mine when an explosion blocks all output.

This could be the biggest problem, if their partners were not alien creatures in constant mutation. They are becoming larger and thus quickly consume the oxygen in the mine. You have to act quickly and their only chance of survival is to exterminate them with your only weapon: a shovel.

At that moment your care must be increased, because the monsters are hungry and willing to devour you at any time.

As you may have noticed, your shovel is not an effective weapon to eliminate monsters of large proportions, so we have a solution that may help: digs traps, ambushed them and then fighting them one by one, until they die.

But do not forget that the monsters are mutants. If you take too long for this operation, the monster ambushed will become stronger and able to escape the trap.  Each time that suffers a mutation, it must take a bigger tumble to die, or better, it needs to fall through more than one hole. Could you feel the size of the problem you have?

There are three types of monsters: worth 50 points; worth 100 points; e worth 200 points
The monsters    and  will need to pass,
at once, for two or three holes, dug beneath the other one to succumb. It is allowed to dig them anywhere in the mine, except at the lower level and at places near the stairs or to another hole."



QuickSilva Games (2010/SEP)   CHR$128ZONX

These games from Quicksilva comes originally with AY sound and characters redefinition but only for own QS boards. I have adapted them to ZON-X81compatible boards and character boards maped at address 3000h of RAM.


Dancing Demon (2010/JUN)   ZONX

ZX81 version of the program Dancing Demon that was very successful in TRS80 microcomputers.

Choreograph the dance and compose the music for the little devil dancer make your show. The program comes with two pre-programmed shows.

Need a sound generator compatible with the ZON-X81 for music playback.

More information about the original program, including the download of the program manual, at the following link:


Pink Panther (2010/JUN)   ZONX

Experiment that I did with midi2ay program that converts midi files to a format suitable for implementation in AY-PSG 3-891 *. Here I used the theme of the Pink Panther and the result, although it was not perfect, was within the acceptable.


Micro Sistemas Forth V2.0 (2010/JAN)   UDG

With the interruption at the development of the ZX81 Fig Forth, my interest turned to the minimalist forth published in the Micro Sistemas magazine issue No. 37. This was a small and agile forth, but with a strange vocabulary with words such as TOKEN, COMPILER, MODE, LBP, 0SET, 1SET, OUTIN, FTOKEN, QUESTION, among others, not commonly found in standard forths. After disassembler the compiler I have discovered the function of each of these words, for example, found that OUTIN was equivalent to the word INTERPRET, LBP had the same function as >IN, TOKEN was equivalent to WORD.

So, knowing how MS forth worked, I started the new version that I decided to name MS Forth 2.0. I started the translation of unusual words, trying to follow the spelling and syntax from Fig Forth. Some words I found it more convenient mater as they were, such as LBP. The exchange of LBP to >IN would increase the code, what I did not want, as one of the goals was to have a tight code. Also adopted the ASCII code for characters and assumed the availability of a character board at 3000h (like in my TK85) to generate the ASCII character set. The keyboard routines have all been rewritten and the keyboard was remapped.

A nice feature that I implemented was the ability to import forth programs directly from text files, when using the emulator EightyOne. You should load the text file at menu File/Load Memory Block, at the RAM address 32768. Then just compile the text with 32768 LOAD.

Although it has reached a stage of development much more advanced than the ZX81 Fig Forth, the MS Forth V2.0 was also halted in order to bring a new forth more advanced and powerful, the ZX81 Toddy Forth, which currently is in final stage of development and will be released in early 2011.


ZX81 Fig Forth 1.1H alfa  (2009/JUL)   UDG

The ZX Forth, by Artic Computing, was a commercial implementation of Fig Forth for the ZX81 but in my opinion, unsatisfactory in terms of performance and usability. So I decided myself implement my own version of Fig Forth for the ZX81, this time in order to mainly use it with emulators, without worrying about the availability of technical resources on the real equipment. Thus, the compiler has been allocated in RAM at address 2200H and with character redefinition board active at address 2000h, resources easily obtained in the emulator EightyOne.

Although the project was developing and the compiler was already with a performance better that the Artic Forth, I was not satisfied with the result and the project was aborted. I was not satisfied with a forth intended for use only in emulators, I wanted something to use in an actual equipment, more specifically in my TK85 with character redefinition and a PSG AY-3-8912.

The version here, although it is an alpha version, it's quite functional but surely full of bugs and with incomplet definitions.


ZX81 Music Interpreter (2005/APR)

This program implements on the ZX81 a musical macro language similar to that used in command "PLAY " of MSX and TRS Color microcomputers. We implemented all subcommands required to perform music in a wide range of scales, with the sound being generated by the VSYNC signal.

All instructions for use are in the package, as well as sources and two demo programs with Beatles music's and the other with several music.


Cartoons (2005/APR)   WRX

Collection of high-resolution screens with cartoon characters.



I made this little program to demonstrate the use of ZX81 video routines to implementing a multi-task application, in this case a digital clock that is updated simultaneously with the execution of the BASIC program.

Enter the time in HHMMSS format, counted with 24 hours. The digital clock is shown in the upper right corner of the screen and a square traverses the screen from one side to another. Stop the program with BREAK and note that the clock is still being updated. Clear the screen with CLS or LIST the BASIC program, the clock is still there and is only disabled with the commands FAST, LLIST, LPRINT, PAUSE or editing any line of the BASIC program.


(2003/DEC)   WRXPRT

Ohhh! I hope this does not shock the puritanical ... an unusual application for small zeddys ;-)

The programs named HRLPRT*.p use the ZX Printer to print the images. When load them not execute it with RUN command, use  GOTO 1, else the images contained in variables are lost and nothing will be printed. Each program prints two high-resolution images and printing is a little slow. In the emulator open the screen of the ZX Printer (Options menu or CTRL + F7) to see the image being printed.


HiRes Galaxian (2003/FEB)   UDG

Galaxian game, from Artic Computing, adapted for high-resolution by redefinition of characters. Need a character board mapped into RAM at address 3000h.


Airport HR (2000/NOV)   UDG

The Airport Game, written by Renato Degiovani, was published in issue nº 22 of Micro Sistemas magazine and was the first game in machine language published in a Brazilian magazine. The version provided here was adapted by me to use characters redefined, based on the illustration on the cover of issue nº 37 of the same magazine, whose cover story was exactly the redefinition of characters on ZX81.

You must land a plane safely, but it is necessary to clear the runway that is blocked by enemy tanks and choppers. Press any key to throwing bombs on the enemies, but avoid hit radar and the control tower.


Free Web Hosting