Nodes of Yesod: ZX Spectrum Next – developer blog episode 2

As promised in the previous episode, in this (brief) update I'll delve into the tool selection process and talk a little about the setup I'm using for Spectrum Next development. First of all, I unashamedly admit that I am a Mac user. Nothing against Windows, or other OS choices, it's just something that I have gravitated to over the years, via iPhone development in the first instance, but also through working in the SF Bay Area tech bubble for the past several years. While there are a lot of great Mac development tools available, it seems that most (not all!) Spectrum development tools are for other operating systems, Windows primarily. I'm not a big fan of running virtualization software such as Parallels, Fusion or Virtual Box as these (in my experience) tend to be resource hogs (though I do use Virtual Box now and then, and it does have the attractive property of being free - that is to say Open Source Software). For the most part these days, in order to run a particular piece of Windows software on Mac, I've been using CrossOver, which is basically a bundled version of Wine for Mac and Linux (note that while Wine itself is open source, CrossOver is not). From the Wine site

Wine (originally an acronym for "Wine Is Not an Emulator") is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.

In my experience, CrossOver works pretty well for most development tools, including the paint package ProMotion, and the Windows based Spectrum/Z80 assembler/emulator/debugger Zeus.

I really like Zeus, and the fact that it is a self-contained IDE for Spectrum development; however, even though Zeus has implemented a few of the extended hardware functions of the Spectrum Next (as of this writing, version 3.66 supports the Next hardware sprites), it is not the most up to date Next development environment. In a way, this makes sense, because many of the Next features are still "settling" in terms of final specs. Still, as I am committed to completing an updated version of Nodes of Yesod for the Next launch, I need something a little more current.

So, if not Zeus, what else? Well in terms of emulators there is ZEsarUX (which I can never pronounce, or remember how to spell - sorry Cesar!) which has some Next support and which'll run native on Mac. What I need though is an assembler, and the best one I have found so far is in the CSpect package, which as of this writing is at version 0.5. CSpect is a Windows based emulator/debugger that comes with an assembler, SNasm, which is tailored to the Next, and which is truly on the bleeding edge for feature parity with (and in some cases ahead of!) the Next. Importantly for me, this combination runs quite nicely in CrossOver on the Mac.

That's it for this update. In the next update I'll talk more about setting CSpect up to run with CrossOver and the Sublime Text editor on the Mac, along with the z80asm Sublime plugin.

Posted by Steve Wetherill


Cesar Hernandez


As you may read on the FAQ:

Q: How is pronounced the name of the emulator?
A: Phonetically: ZEsarUX is pronounced: θesar´uks
One by one, every letter:
Z like th on think
E like e on let
S like s on sing
A like a on cat
R like r on round
U like u on put
X like x on linux
And saying the accent on the final syllable
You can also play zesarux.mp3 to hear how it sounds



Steve Wetherill

Thanks Cesar!

For what it’s worth, if you do want to go down the virtualisation route to get easy access to all the Windows tools, in my experience Parallels Desktop is brilliant. Yes, Virtual Box is free, but it IS a resource hog. Open Source software may have some advantages, but for something like this, having a dedicated company working full-time on commercial software produces much more streamlined results. I find that on my Retina iMac, Parallels works absolutely beautifully, and doesn’t have excessive impact on the rest of the system. NB I’ve had numerous versions of both Parallels Desktop and VMware Fusion over the years, and in my experience, Parallels is consistently much the better of the two, in terms of features, performance and reliability. (NB Not trying to start a flame-war between the products; just passing on my own personal experience.) Actually, I find Parallels Desktop a hugely impressive product – what it achieves is pretty amazing, and it works terrifically well – and it’s completely saved me from any inclination to buy an actual PC.

Steve Wetherill

Thanks Richard. I’ve used Fusion a lot and Parallels some. I mostly use Virtual Box for running an Intuit Application that only runs on Windows. It does fine for that.

Still, Wine is working well for me. You can for example invoke it as “wine program.exe” to run program.exe from the default “bottle”. If program.exe is for example a z80 assembler, this is how you can run a Windows command line app from the Mac Terminal, and then this is easy to hook into, for example, Sublime Text’s build system.

That’s all very true, and I’m not arguing with you at all. I just thought I should say that I don’t find Parallels to be a particular resource hog, personally. Your original post noted that you use Virtual Box occasionally, but you didn’t say you used the other two – and Virtual Box is the clunkiest and most sluggish of the three in my experience. It’s great software for free, for occasional use, but if you want a more polished and capable experience, the commercial options are clearly better (and in my experience, Parallels is the best of the bunch for getting ‘the Windows experience’ – should you actually want it for some reason!).

But I completely concur with what you’re saying, and I’m also a fan of Wine, personally. CrossOver’s good too, and I’ve used it in the past, but I’m not a big fan of how you seem to end up spawning loads of bottles and the installation gets really messy. So instead of CrossOver I use Wine quite often these days, which allows the creation of nicely stand-alone, portable Mac apps from Windows software. But now we’re just talking about different ways of accessing Windows apps on the Mac.

The main point of my previous reply was simply to say that I find Parallels to be the best of its class of solution to the problem of running Windows software on the Mac, and not as much of a resource hog as your original post implied. But obviously there are several different approaches to accessing Windows software on the Mac, and one uses the best tools for one’s particular needs. Indeed, what you’re doing is almost certainly the best answer for your requirements, and I was in no way trying to argue against it. As you say, being able to invoke a Windows exec directly from the Mac command line is a big deal.

Steve Wetherill

Indeed. I’m using CrossOver for the GUI management of things, but using the embedded Wine from the Terminal.

Thanks for the comments Richard!

I’m also getting back into Z80 programming (although for different hardware – Pacman arcade machine) and came across Zeus. I really like the integration between the editor/assembler/profiler/emulator/debugger combo! Do you happen to have any idea what the timer and parasys tabs are for? Parasys seems to be some kind of ram downloader thingy, and I was hoping the timers might allow me to figure out how long one game loop takes…

Steve Wetherill

Hi there – Simon Brattel, the author of Zeus, is a member of the Facebook group “Z80 Assembly Programming On The ZX Spectrum”: – perhaps you could reach him there.

Leave a Reply to Steve Wetherill Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.