I’m going to dive right in and talk about setting up my dev environment. All the code and techniques we use with Z80 and ZX Spectrum development can be made to work with any toolchains, and every established developer has their favourites.
I’m no exception, and I’m an enthustiastic user of Simon Brattel‘s Zeus. Zeus has a lineage going back to 1977 on Simon’s homebrew computers, and on the Spectrum from the beginning. Many now-legendary games developers used Zeus back in the day.
Simon was also an early pioneer of cross-development. Many of his classic games, like Halls of the Things and Dark Star, were written on his Z80 homebrew computer, Basil, with a Parasys debugger link between Basil and the Spectrum.
The Windows cross-development IDE has had a continuous pedigree since, as the main IDE for Simon’s electronics and processor design business. And, for the last decade, as a continuously-developed Spectrum-oriented assembler, IDE and emulator with, incidentally, inbuilt support for NIRVANA+.
My personal affiliation to Zeus is based on how easy it makes my development process. I suspect most of this is an affinity between the way Simon and I think—some of this being that our thinking is similar, and some being the way I’m challenged to think differently.
Whatever the philosophical underpinnings, the end result is that I’ll be doing this tutorial series on Zeus. Feel free to follow along with Zeus if you’re a relative beginner, or adapt my examples for your own favourite IDE, assembler and emulator.
Installing Zeus is easy. Download the latest version of zeus.exe here, stick it in a directory and make a shortcut to it. If you’re on Windows 7/8/10, you’ll have to do the usual unblocking the first time you run the program. Zeus works well on Linux and MacOS under Wine, although I only use Windows myself.
I’ve made a GitHub repository for this series of tutorials. Familiarize yourself with the git version control system, and the process of cloning a repository, if you don’t already know this. I use TortoiseGit on Windows, and find it very simple and intuitive.
I will establish a convention that the source for the latest version of ZalaXa will be inside the
/src directory, and the source for a particular tutorial post will be inside the
/tutorials directory—this posts code is found at
/tutorials/part2, for example.
Once you have cloned the repository and updated it to the latest version, choose File >> Open in the Zeus menu, and open
\tutorials\part2\main.asm. You will see this code—the bare minimum template to assemble a Z80 program and run it in Zeus’s emulator:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
; main.asm zeusemulate "48K" ; Tell the Zeus emulator to be a 48K Spectrum zoLogicOperatorsHighPri = false ; Zeus assembler options zoSupportStringEscapes = false ; (see Config tab zoAllowFloatingLabels = false ; for details) Zeus_PC = Start ; Tell the Zeus emulator where to start running code at org $8000 ; Tell the Zeus assembler where to place the code Start proc ; A named PROCedure (also our start point) jp Start ; Go into an endless loop! pend
Click the Assemble Then Emulate button:
You should be rewarded with an assembler status message saying this:
nErrors = 0 nRedef = 0 nUndef = 0
and a completely blank white spectrum screen in the Zeus emulator:
And on that bombshell, we will continue in the next post!