ZX Spectrum: Assembly programming

Assemblers, emulators and debuggers

There are quite a few emulators around for the ZX Spectrum, and even more Z80 assemblers. So it can be hard to find the one that works best for you.

Disclaimer: while I found more assemblers, emulators and debuggers during the research for this article, I have not included them here since I have no experience with them. This is in no means an exhaustive list. As time progresses I might extend the list but I don’t want to write about a program with at least a minimal amount of personal use.

I have not listed the OS these programs are available on. And while I use Linux professionally I use Windows on my personal computer for compatibility with some of the programs I need for other hobbies. None of these programs are heavy on resource use and can easily run on an older machine. And they don’t use fancy graphics that would preclude them from being run in Wine on a *nix based machine. The Retro Virtual Machine is the fanciest in it’s UI, but it has a releases for Windows, Mac and Linux. There is no need to run this one through emulation or any other virtualization system.

AssemblerEmulatorDebugger
TASMBasic
SJASMPlusAdvanced
Documentation is hard to get through
ZXSpinBasic
Bad editor (Selection of text is broken)
Awkward usage (cannot find key combinations)
OKWeak/Hard to use
ZesaruxPowerful
Advanced features are hard to learn
Not yet found how to use
Retro Virtual MachineOK
The fancy UI makes it hard to use
Not yet been able to get to work
OshonSoft Z80 Simulator IDEBasic
Can use TASM
Z80 emulation only, no ZX SpectrumExcelent

Since I’ll be writing for the ZX Spectrum for now I can’t use the OshonSoft IDE. While the emulation and debugger are excellent, I need the emulation of the whole system.

I have bought myself a license for the OshonSoft IDE and plan to use it once I start programming for a custom system.

Originally I started with doing everything in ZXSpin, but the bad editor and basic assembler made me look for alternatives.

I will be using the SJASMPlus assembler since it has the most features. It has specific functionality for the ZX Spectrum but can also be used for a self assembled machine. While I probably won’t need a whole lot of the advanced functionality (Lua scripting for example), being able to include other files and split up the work is the most important requirement I currently have.

I can’t see myself working on a large project using only a single source file.

For the emulation of the ZX Spectrum I’m currently using Zesarux. I’ll have to search to find out how to use the debugging features.

Editors

While you can use notepad to write your code, it offers no support.

I’ve listed a few assemblers that are part of an emulator, but sadly those emulator don’t have the best assemblers, and the editing functionality is very basic.

While the ZXSpin editor has a list of the used labels, which can be used to navigate the code, it doesn’t offer much more. And on my computer selecting code with the mouse or even navigating with arrow keys gives strange results.

The OshonSoft IDE has code highlighting and is integrated in the debugger. It doesn’t list the used labels and the built in assembler is basic and there is barely any documentation for. While TASM is included and better documented, it still is very basic. Using an external assembler makes it awkward to use since you have to switch to another window to call it.

There are a few code highlighting schemes available for Notepad++, I’m not sure if you can configure a key combination to call the assembler.

The 2 best options that I can currently think of are Atom or Visual Studio Code. Both have plugins that allow for code highlighting and can call the assembler.

For Visual Studio code there is a single plugin that handles all functionality I can think of needing. For Atom it’s a combination of plugins to have a working setup. I’ve installed both of them and try to see which setup works best. Once I have experience with both I will publish an article about this.