It's been a long, long, time...
Exclusive to Tech/Worlde - here is a selection of long lost work from ZX81 old-timer,
Fred Nachbaur! Fred wrote some of finest software for the ZX81 and now after many years,
his programs are again available to you. Without further ado - over to Fred...
After the decline of the ZX81 (I almost said "demise" -- but this page is
proof that the ZX81 is alive and well!) I took an extended hiatus from computers in
general, focussing my efforts on other areas... like music. So now I've got a lot of
catching up to do, and started re-educating myself about two years ago by starting with a
'286. I'm up to 486DX2 now, and am hoping to get a Pentium before it's obsolete... ;-)
Our gracious host Steven McDonald has generously offered space on his site for some of
the ZX81 programs that my colleagues and I developed in the mid - '80's. Lest anyone think
that the software provided here is all my doing, I hasten to add that it wouldn't have
been possible without the hard work of people like Gregory C. Harder, Peter McMullin,
Harvey Taylor, John Oliger, and of course Wilf Rigter. Most of the work here uses Wilf's
"WRX16" true hi-res system, which in my opinion did more to elevate the ZX81 far
above its original mission in life, than any other single product or development.
All the programs presented here will, of course, run on a ZX81/TS1000 with at least 16K
of dynamic RAM (or TS1500), plus the all-important 8K static RAM accessible during refresh
time. Some programs have higher system requirements, as indicated. The programs have also
been tested on "ZX Emulator," a remarkable freeware ZX81 emulator. All run
properly, with the following qualifications:
"MO-SLO" to trim processor
speed as needed.
- Programs that use more than 24 rows (e.g. HRCHESS) lose the bottom two input lines.
- Programs that combine 22 hi-res rows with 2 low-res rows will show corruption of the
low-res input line.
- At least one program (ZX-TERM-80) doesn't run at all. This may be because of the use of
the latest version of WRX16, which eliminates the need of the "ghost dummy display
file" in high memory.
- Programs that reverse the dummy display file (set bit 7 high) to get an inverse screen
do not show up in reverse video on ZX Emulator. Don't know about Xtricator2.
Rather too bad, because this could be a spectacular effect in some programs (e.g.
- On faster computers, some games run too fast to be playable. One option is to use
I sincerely hope that ZX Emulator will continue to be developed, I really like its
compactness and modest system requirements.
Most will not run using V1 of "Xtricator." However, I've been
told that they do run on the beta version of V2, again with a few qualifications. Carlo is
working on this, and welcomes any assistance in beta-testing and further development.
Here are the keys to the system requirements codes:
- Main memory:
- 16 : Standard 16K RAM pack
- 32 : Memotech or other 32K RAM pack, or TS1500 plus 16K RAM pack
- 48 : Memotech 32K plus 16K, most "64K" packs. May need to disable 8-16K
- Hi-res system:
- QHR : "Quasi" hi-res (e.g. Steven's progs, Software Farm, Nissim Elmaleh,
etc.) No additional hardware required.
- WRX : Wilf Rigter's true 256x192 (or more) hi-res. Required 8K static RAM mapped 8-16K,
and accessible during refresh cycle.
- STD : Standard lo-res program (yawn).
- Other hardware:
- MOD : Modem (Westridge or Byte-Back)
- OLI : Oliger TI9918A colour video (if the interest is there).
Following is a listing of programs on this site. All programs are compressed into .zip
files, even those that consist of only a single *.p file. This is to prevent difficulties
with the Netscape browsers, which assume unknown file-types to be text mime-types instead
Click on the imbedded links (shown in orange) to download, or page down to the bottom
of the page where all available titles are summarised in tabular form.
- "3-D Fractals"
(16, WRX) This is an interesting little program by Gregory C. Harder, my main
"partner in crime" during the Great WRX16 Explosion of '86-'87. Adapted to ZX81
from an article in Creative Computing. I sure hope he doesn't mind my posting his
stuff here, Greg if you're reading this please give me a shout!
- "Graphics Archiver" (16, WRX)
Greg put together this little graphics archiver to store/ retrieve WRX16 graphics screens.
"Upload" transfers existing high-res screen into program for saving,
"Download" transfers from loaded program into high-res display file for viewing.
- "Bi-Plot demo" (16, WRX)
This is a demonstration of a cool WRX16 display option. The 8K hi-res display file is
divided into two 4K chunks, which are displayed on alternate frames to give a neat overlay
effect. The lower six lines are standard low-res. Doesn't work as expected on ZX Emulator,
needs a real ZX81 or TS1000/1500.
(16, WRX) "Blackjack" was written by myself in 1986. The game logic was
adapted from a similar game I had written earlier for the first "TRS-80 Pocket
Computer". This is a direct application of Greg Harder's "SRAM Hi-Res Extended
BASIC" (aka SHREB) that demonstrates just a few of the cool things you can do with
this package. Runs in a standard 16K ZX81 or equivalent, plus 8K SRAM. Works fine in ZX
Emulator, except the input lines are a bit messed up.
- "Block-Buster" (16, WRX) By
Greg Harder. This was adapted from a Spectrum program, and is an interesting game in the
"puzzle" genre. It's a bit sluggish on a real ZX81, and benefits from a moderate
speed increase, as is possible using emulators. Loads in two parts.
(16, WRX) "Year-at-a-Glance" was a neat little program using
tape-storage, but might actually be useful on a hard-disk system! It
calculates any given year, showing the whole year on a single screen. Press "M"
to give the "month" legends, "D" for day- of- the- week. Move the
cursor around the calendar to highlight any date, then press ENTER - you're shown your
appointments or other significant events for that date. Move the cursor to a non-date
field, and you can peruse the entire database. Better documentation to follow as soon as I
find it. Comes with the calendar for 1987 (which was when I wrote it) for you to play
with. And yes, your ZX81 is Y2K compliant!
"CE Amplifier" (16, STD) This is an oldie (from 1983) which
takes you through the entire design process, and subsequently analyses, the populor
Common-emitter transistor amplifier. Mainly of interest to electronics enthusiasts, but
sports some interesting features such as self-changing BASIC code to simulate VAL$ - i.e.
given a string representation of a variable name, INPUT to or PRINT that variable.
- "Dragons" (16, WRX) The
classic fractal dragons program, written by Greg Harder. Runs in 16K, but 32K recommended
for larger dragons.
- "Dungeon of
Ymir" (16, WRX) This is one of my all-time favourite games, and not
just because I wrote it. It's your basic D&D style game, but more action-oriented.
Nine levels that get harder as you go along, 8 kinds of monsters (each in two variants),
objects, spells, an oracle, all the usual stuff. And all in a mere 16K of very
compact Z80 machine code. Considering it's interrupt driven monster-move system, it's
amazing it runs in ZX Emulator, albeit sometimes a bit choppy compared to a real ZX81.
Also download YM-DUNGN.ZIP
which lets you design your own dungeon layout.
- "Fontkit for WRX16" (16, WRX)
Various high-res fonts developed by myself and Greg Harder, including Sanserif Bold,
Olden, Olden Bold, Machine Bold, Fancy, a general- purpose lower- case- only set, even a
proportional character set that looks like the "Sinclair" logo on our favourite
high-tech doorstopper. Various ways of "packaging" the fonts, you shouldn't have
too much trouble figuring them out.
Analysis" (32, WRX) This one started life as an ordinary low-res
program in late 1982, and was later upgraded to WRX16 format. It lets you input the data
points of any waveform (assumed repetitive) and computes the Fourier transform. Or give it
the transform (Fourier co-efficients) and it computes the wave. You can even do two
independent waveforms, plotted X vs Y (such as Lissajous figures). Sample run contains
such an X-Y plot in the shape of Mickey Mouse; by taking various numbers of harmonics into
account, you can see Mickey transform from an egg into a mouse... (Where else could you
ever find a program so useless?)
(48, WRX) "F-Scapes" was the last program I wrote for the ZX81, during a
short stint as an accountant's assistant (!) in 1988. Would you believe pull-down windows,
3-D rendering, 2-D topo maps, even 3-D fractals? Believe it! It's really quite something,
if I say so myself, and I strongly encourage you to read the extensive documentation
either in Text-format
or in Write-format
(also readable with MS Word). The documentation is also included in the main ZIP file as
FS-DOCx.P, which are ASCII "Big REMs" intended for reading using ZX-TERM-80.
Also included are FS-FIGx.P, the figures referenced in the documentation. Before running
(either on a real machine or on an emulator) POKE 16389,255 then NEW, and only then LOAD
"FSCAPES.P". The program really does need a full 48K of dynamic RAM!
Chess" (16, WRX) This one was a real bugger. It's the classic Psion
Chess game, with actual chess pieces on an actual (or rather, virtual) board! Only problem
- ZX Emulator doesn't show the bottom two input lines, because I stretched Wilf's routine
to give 26 display rows... 24 for the board, and 2 for the input lines. So you have to key
your moves in blind... not too much of a handicap, if you've played the original. To exit,
press DELETE (shift 0) when it's your turn, followed by STOP (shift A) then ENTER. btw -
to get out of Wilf's high-res mode from immediate mode you can (almost) always get out
with PAUSE 0.
(16, WRX) "Hi-Res Invaders" was my Christmas present to my customers in
1987. This one's claim to fame is that it used the SHREB package, but most of the program
runs in machine-code, demonstrating that the SHREB package is a useful library of graphics
routines as well as a BASIC extension. This program has a bug that's so charming I left it
in. If you sideswipe an invader, it kills it but it doesn't vaporise... it just sort of
hangs there in space. The same bug also causes occasional rocket shrapnel to stay in
place. Warning; this game is addictive, and hard to beat. Too bad the "reverse
video" mode doesn't work on ZX81 Emulator... (wish, wish!)
- "Julia Sets"
(16, WRX) This is the Julia set equivalent to "Mandelbrot FFP". See
(16, WRX) "L-Systems" is a type of fractal using rules of generation to
produce self-similar space-filling curves. This implementation by Greg Harder is true to
the original specification, and it's recommended that you look up the reference provided
in the program. From a ZX81 standpoint, this one is interesting in that it uses our
"QUIK" display mode. This is sort of a hybrid between FAST and SLOW; by mucking
with system variable MARGIN and display timing, you get varying degrees of speed
improvement traded off with dim or flickery displays. But at least you could see what was
going on! No guarantees what emulators will do with this...
- "Macro-Life" (16 or 32, WRX)
Greg Harder was a real Master at adapting program listings in magazine into our High-Res
BASIC environment. This Life simulation is an example. The zipfile contains both a 16K and
a 32K version, the 32K version saves the screen in high memory for improved speed and more
(16, WRX) This is the classic Mandelbrot set fractal. The program is pretty much
self-documenting, its claim to fame is the use of the ZX81's calculator language directly,
to give about a 3x speed increase over straight BASIC. However, it's still pretty slow...
be forewarned. A addition is MAND4-FP.P which is a quadric
Mandelbrot in medium-res dithered greyscale (needs 32K)
- "NIM - 2K" (2, STD) A
two-player Nim game for the 2K TS1000 (sorry, it won't run in a 1K ZX81). Demonstrates
what's possible in just 2K of RAM, using only standard Sinclair BASIC. Because it uses the
characteristics of the compressed display file, if you want to run it in a 16K ZX81 or
emulator, you first have to POKE 16389, 72 then NEW before loading.
- "SRAM Hi-Res Extended BASIC" (16,
WRX) This is the full SHREB package, written by myself and Greg Harder. I tended to
write the core routines (parser, tape routines, that sort of stuff) and Greg specialized
in the cool graphics commands. Contains the lastest version of the core only, plus a
couple demos. Documentation to follow as soon as I find it. (I know it's on one of those
rotten old floppies... but where?)
- "Snorth Games" (16, STD)
These wonderful games were written in an odd subset of Sinclair BASIC, then compiled using
a program I've forgotten the name of, by a professional comedian named Steve North. He
wrote these for his own amusement in 1983, then licensed them to me for distribution in
1985. LOAD "SNORTH", the loader gives you the option to load one of four games:
"NFLX Football," "Miner's Revenge," "Super Slide," or
"Storm Lander 3." Technically only legal if you own the original, since I
haven't been able to get hold of Steve to get his permission.
"Spirograph" (16, WRX) Yet another cool graphics program
adapted from a magazine article by Greg Harder. This one simulates the popular
"Spirograph" toy, you define the sizes of the gears and the program does the
rest. Includes yet another method of kinda- seeing the display while drawing in FAST mode
(this feature doesn't work properly in ZX Emulator.)
(16, QHR, OTH) "VDAQ1-HR" stands for "Votem Data Acquisition -
Hi-res." It was written originally for the "Votem", which was a simple
voltage-to-frequency converter designed for single-channel analog data acquisition using
the ZX81. My implementation allows multi-screen acquisition, variable scale and timebase,
all that sort of thing. Even without a Votem it was useful for frequency measurement, via
the tape input jack. It still could be used for such purposes with a real ZX81, but it's
only "something pretty to look at" on an emulator. Although... I suppose you
could sample your waveform with your PC, export it to emulator.... naw.. Ain't worth it.
- "Voyage of
Peril" (32, WRX) "Voyage of Peril" was adapted by Greg
Harder from a Spectrum program in a British mag, if I remember correctly. It's a cool
little adventure game, that nicely shows off his SHREB sprites, among other things.
Requires 32K of RAM, but no need to poke RAMTOP higher; it only uses high memory for data
storage. This is a bit sluggish on a real ZX81, and really benefits from a moderate
speed-up using an emulator.
(16, QHR) "Wa-Tor" was based on a "Computer Recreations" piece
in Scientific American (from which I used to get some of my best ideas...). It's a
predator vs. prey simulator, kind of like "Life" but way cooler. You have to
populate a planet with fish and sharks... the idea being to keep both species alive on a
long-term basis. This uses Nissim Elmaleh's "SHR" for the cover screen and
graphing routines, being before the days (1985) when Wilf's WRX16 routines really took
off. Program is pretty much self-documenting.
(16 up, WRX) This is truly one of those "Oh, Wow!" programs. Greg Harder
wrote some awesome stuff, but with this one he really out-did himself. I remember in those
productive days of 1987, I'd get a new version from him about every other week... each
version better than the one before. This is the final one. Too bad there was no longer
anyone around to sell it to... I Don't have a clue where the docs are, but with this
program it's almost better to play around and figure it out yourself.
(16 up, WRX, MOD) Though this was one of my best (and best-selling) programs, I
almost didn't post it here. For one thing, it's hardware dependent (either Byte-Back or
Timex/Westridge modem). For another, the hardware is long gone. Thirdly, you'd be hard-
pressed to find any 300 baud BBS's anymore. Lastly, though it runs fine on a real ZX81 or
TS1500 with appropriate "Wilf board", it won't run in hi-res mode on ZX
Emulator. All that being said, it would still be useful as an ASCII text reader. What's
more, it used some truly remarkable innovations - like hooking into the interrupt to do
fast keyboard sensing (and buffering!) while not missing a byte of incoming data. It was
really something to be typing away as fast as you can, while data is coming in, and nary a
beat is missed. It also featured separate windows for input, output and control, Xmodem
and ASCII down/ uploads, full relocatability... and all that in 4K of machine-code. I'm
posting it mainly for historical and study interest, perhaps someone can figure out why it
won't work with emulators.
||by G. C. Harder
||Store/ retrieve WRX16 images
||Real ZX81 only
||Good on ZX emulator
||maybe one day...
||Transistor amplifier design
your own Dungeons
|sample data included
||incl. Prop. font demo
|Illustrations incl. in ZIP file
||legal only if you own original
||by G. C. Harder
||by G. C. Harder
||includes quadric version
||POKE 16389,72 on 16K machines
|SRAM HR Ext.
||with G. C. Harder
||May follow later
||incl. NFLX Football, Miner's Revenge, Super Slide, Storm Lander 3
||by G. C. Harder
|by G.C. Harder
||Can't find it
by G. C. Harder
||May follow later
if worth retyping
All content ©1999 Fred Nachbaur.
This page was last updated on February 14th, 1999.
If you have any questions or comments on this site to pass onto Fred, you can contact him
Fred also runs his own excellent website which is well worth a visit at: