Zeus Z80 Assembler stuff... (Last update - 03:18:16 14/11/2023)

Software

A few years ago I dug out what I could find of my Z80 games sources and looked about for a PC cross-assembler that could build them, and to cut a long story short the available assemblers ranged from utterly awful things that didn't even handle standard Z80 syntax to a couple of barely adequate assemblers that were less sophisticated than the in-house assembler we were using back in the 80's... So I've thrown a version of that (Zeus) together and provided it here. It has an IDE and emulator built in for debugging, and produces .szx and .tzx files and all the other formats under the sun files for use with Spectrum emulators.
Over time I have added bits and pieces to this version of Zeus and it now includes a fairly capable Z80 emulator, which can emulate the ZX Spectrum 48K/128K hardware pretty accurately, well enough to handle code that uses accurate timing to produce border and attribute special effects, as well as emulating a simple Z80 system capable of running CP/M.

Zeus now also includes a useful Z80 disassembler, one that can (with help) disassemble binary code to usable source code. Please see the documentation.

I've added a section for contributions from third-parties, I'll organise this better at some point; they probably deserve a page of their own.

Zeus Z80 Assembler. A PC Z80 cross-assembler and emulator. Use it to assemble the spectrum sources on this website...
Now emulates 48K/128K ZX Spectrum timing accurately, plus NASCOM-2, a CP/M SBC, an old homebrew of mine and something called the Z80 Membership Card... Includes the Diana disassembler - this can convert Z80 binary to useful source code.
zeus.exe   1702KB 14/Nov/2023 (Version 4.12) - windows application v4.12 Various changes, see history text.
zcl.exe   743KB 13/Nov/2023 (Version 4.12) a command line only version. Error messages similar to gcc format. Usage "zcl filename".
zeus.txt   166KB 13/Nov/2023 (Version 4.12) - The about/history file for those who use the command line version.
zeus.zip   2339KB 14/Nov/2023 (Version 4.12) - same again but zipped
examples.zip  212KB 30/Jan/2018 All the Zeus example sources below in one zip file.
zeus1.zip  60KB 30/Jan/2020 Reconstructed source-code for the "original" Spectrum release of Zeus.

Utilities.

sourceconvert.exe   653KB 30/Mar/2017 v1.01 This is a windows app that can convert old and nasty Z80 sources to bright, shiny new ones...
Improved to deal with those strange people who put tabs between mnemonics and operands. Some other improvements in comment addition. Removes octal, removes pointless full-stops before pseudo-ops, converts repulsive 0xxxxH to $xxxx, stuff like that.
It's far from perfect, but it can really help when importing old files to Zeus. Now with added colon fiddling! If you like your colon fiddled with, you'll love it...
tzx_display.exe   666KB 19/Feb/2019 v1.31 Quick And Dirty windows app I hacked together for displaying the contents of tzx files. Now with batch mode, see the "help" menu.
zeus68k.exe   1052KB 27/Sep/2017 A 68K version of Zeus that might be useful to assemble 68K files. See the about/history.
zeus6x09.zip   1209KB 22/Jan/2018 A 6809 and 6309 version of Zeus. Rather more competent than the usual simplistic two pass Motorola assemblers. See the about/history.
zeusscmp.exe   4000KB 27/Sep/2023 A SC/MP version of Zeus.

Example source files for the Zeus Z80 Assembler.

nascom.zip   241KB 13/Dec/2015 Sources for NAS-SYS3, BASIC, various games including The Keys of Kraal.
cpm_app.zip   1841KB 22/Jan/2018 All you need for an example of building/testing a CP/M application to work with Zeus's CP/M emulator. Also contains a virtual cpm drive file full of cp/m software.
cpm_sources.zip   840KB 6/Sep/2016 Grant Searle's CP/M utilities and sources converted to work with Zeus's CP/M emulator. (cpm_app.zip is more recent, use that now)
homebrew.zip   4231 bytes 15/Dec/2015 A space invader game I wrote in binary back in 1978 or so... it crashes when the game ends; the recovery from reel to reel tape was imperfect.
membership.zip   2142KB 23/Dec/2015 The OS for the "membership card" computer emulator.
zeus_ex1.asm  3029 bytes 28/May/2016 Some documentation for it
zeus_ex2.asm  13KB 28/May/2016 [Revised] Some more documentation for it
zeus_ex3.asm  5468 bytes 28/May/2016 Some more documentation for it
zeus_ex_if.asm  2359 bytes 28/May/2016 Demo source: Conditional assembly - if/elseif/else/endif
zeus_ex_loop.asm  1621 bytes 28/May/2016 Demo source: Conditional assembly - loop/lend
zeus_ex_repeat.asm  1503 bytes 28/May/2016 Demo source: Conditional assembly - repeat/until
zeus_ex_while.asm  1978 bytes 28/May/2016 Demo source: Conditional assembly - while/wend
zeus_ex_files.asm  3281 bytes 28/May/2016 Demo source: Covering multiple source files, output file formats and binary data (updated)
zeus_ex_struct.asm  4672 bytes 28/May/2016 Demo source: Structures (well, -ish)
zeus_ex_ld16.asm  5499 bytes 28/May/2016 Demo source: 16-bit load pseudo-ops
zeus_ex_macros.asm  15KB 28/May/2016 Demo source: Macros
zeus_ex_procedures.asm  21KB 28/May/2016 Demo source: Procedures (local label support) (includes print code example)
zeus_ex_segments.asm  6856 bytes 28/May/2016 Demo source: Segments
zeus_ex_sym.asm  3218 bytes 28/May/2016 Demo source: exporting the symbol table
zeus_ex_maths.asm  1597 bytes 28/May/2016 Demo source: use of the expression evaluator
zeus_ex_editor.asm  4585 bytes 28/May/2016 Some documentation for the editor.
zeus_ex_options.asm  5989 bytes 28/May/2016 [New in v2.10] Some documentation for the new assembler options.
zeus_ex_graphics.asm  3437 bytes 28/May/2016 [New in v2.10] Some documentation for the DG pseudo-op - eases graphical character definition.
zeus_ex_v222.asm  50KB 28/May/2016 [New in v2.22] Example documentation and source for features added in v2.20..v2.22 of Zeus (encryption, checksumming, random numbers, etc).
zeus_ex_v250.zip  6119 bytes 28/May/2016 [New in v2.50] Example documentation and source code for features added in v2.32..v2.50 of Zeus (binary file comparison, etc).
zeus_ex_v264.asm  54KB 28/May/2016 [New in v2.64] Example documentation and source code for features added in v2.64 of Zeus (single-step and breakpoints, etc).
zeus_ex_v280.asm  43KB 28/May/2016 [New in v2.80] Example documentation and source code for features added in v2.80 of Zeus (profiling, etc).
zeus_ex_v352.asm  40KB 30/Mar/2017 [New in v3.52] Example documentation and source code for features added in v3.52 of Zeus (scatterloaded tzx files, 128K loading, etc).
zeus_ex_linkedlists.asm  33KB 28/May/2016 Demo source for some macros that produce linked-list pointers. Amusement really.
zeus_ex_pages.asm  35KB 30/Mar/2017 Example documentation and source code for generating 128K files.
zeus_ex_simple.asm  5375 bytes 30/Jan/2018 A basic example for a simple Z80 homebrew machine with just a serial port, also demonstrates writing various file formats.
zeus_ex_noflow.asm  4776 bytes 30/Jan/2018 Examples of Zeus "noflow" and "zeusdatafollows" and flow warnings in general.
zeus_ex_sprites.asm  23KB 14/Jul/2017 Example code to test the Next sprite support. (Changed sprite port from $xx55 to $xx5B to reflect current hardware changes)
zeus_ex_tape.zip  156KB 11/Feb/2020 Example code demonstrating the "output_tzx" options.
sprites.scr  6912 bytes 14/Jul/2017 A loading screen for the above.
spritetest.tap  9350 bytes 14/Jul/2017 A pre-built tap file for the above.
spritetesta.tap  2779 bytes 14/Jul/2017 A pre-built tap file for the above, saved with mode 2 because ZEsarUX doesn't seem able to load any other kind of tape file.
z80test.asm  105KB 30/Mar/2017 An old CP/M Z80 test app converted to run on the Spectrum. Useful proportional print routine, too, and an example of multipass.
tony.asm   23KB 10/Jun/2016 [Needs v3.00 or later] Example of border timing graphics - draws Tony and animates him.
hott2015src.zip   78KB 30/May/2016 [Needs v3.00 or later] 2015 version of Halls, demonstrates many things including "tzx" file generation.
nos_zeus.zip  150KB 7/Jul/2016 Another complete game - Nosferatu The Vampire (Spectrum)
tb.zip   51KB 30/Mar/2017 A working reconstruction of the original Amstrad CPC game. Requireds Zeus v3.50 or later.
hottnext.zip   82KB 11/Feb/2020 Source code for the Next test release of Halls. Also an example of using ParaSys for remote development, but still test code. Nag me (PM) for instructions.

Various games and applications for Zeus.

fp_zeus.zip  90KB 29/May/2016 A large application - Forbidden Planet as a multi-source file. (slightly revised for Zeus v1.7)
on_the_run_zeus.zip  49KB 29/May/2016 Another complete game - On The Run (Spectrum)
kat_trap_zeus.zip  160KB 29/May/2016 Another complete game - Kat Trap (Spectrum)
galactic.zip  457KB 1984? The unfinished source for Galactic Patrol in a form that zeus can assemble. (aka. Martin's spinning around game.) (c) Martin Horsley.

Various examples for Diana.

fp.def  31KB 12/Oct/2008 Diana definition file - an example file for the Diana disassembler, it disassembles Forbidden Plant (binary below) reasonably accurately.
fp.bin  64KB 1/Oct/2008 Forbidden Planet binary (see above)
rr.def  7042 bytes 22/Oct/2008 Diana definition file - an example file for the Diana disassembler, early start of a definition file for Rommel's Revenge.
rr.bin  64KB 14/Oct/2008 Rommel's Revenge binary (see above)

Halls of the Things sources (c) Simon Brattel, Martin Horsley and Neil Mottershead.

hott2015src.zip   78KB 30/May/2016 [Needs v3.00 or later of Zeus] 2015 version of Halls, has user definable keys
hottvega_src.zip   64KB 14/May/2018 The sources for the Spectrum Vega version of the game
hott2012src.zip   66KB 30/May/2016 The sources for a new emulator-friendly ZX Spectrum release of Halls of the Things.
hott2011rc_src.zip   59KB 30/May/2016 The sources for a release candidate of a new emulator-friendly ZX Spectrum release of Halls of the Things.
halls.asm  242KB 30/May/2016 The complete halls source as one file. Use the zeus.exe assembler (above) to assemble this...
halls83_chars.rtf   77KB 10:10pm 3/Mar/1983 Spectrum (Original 1983 released version) The character set
halls83_front.rtf   20KB 10:10pm 3/Mar/1983 Spectrum (Original 1983 released version) The front end source code
halls83_main.rtf   124KB 10:10pm 3/Mar/1983 Spectrum (Original 1983 released version) The main source code
halls_chars.rtf   79KB 26/Feb/2007 Spectrum The character set
halls_front.rtf   24KB 26/Feb/2007 Spectrum The front end source code
halls_main.rtf   200KB 26/Feb/2007 Spectrum The main source code
halls8256.zip  168KB ?? All the files for the Amstrad 8256 version, plus others? Modified mazes...
halls68k_a.txt   37KB 1988?? 68K version for Warp board. Main code part A
halls68k_b.txt   85KB 1988?? 68K version for Warp board. Main code part B
halls86.zip   62KB 1991?? An IBM PC version. Unfinished and far, far, far too fast on modern hardware...

Invasion of the Body Snatchers sources (Spectrum) (c) Simon Brattel and Neil Mottershead.
If you liked this, have a play with Return of the Body Snatchers, below.
Inv 15_7_83.txt   46KB 15/Jul/1983 (Original 1983 release version) Part of the source.
Inv Ai 2_46 AM 6_9_83.txt   40KB 2:46am 6/Sep/1983 (Original 1983 release version) Another part of the source.
Inv Bi 2_46 AM 6_9_83.txt   42KB 2:46am 6/Sep/1983 (Original 1983 release version) Yet another part of the source.

Warlock of Firetop Mountain sources (Spectrum) (c) Simon Brattel and Neil Mottershead. (And Martin Horsley, of course. Lots of Halls in there).
They looked at Halls and asked us to write something like it, but without the magic. They got something without the magic...
Puffin FE.txt   19KB 1984 (Original released version) The front end source code
Puffin Source 0,10.txt  29KB 1984 (Original released version) Part of the game.
Puffin Source 1a,10.txt  47KB 1984 (Original released version) Another part of the game.
Puffin Source 1b,9.txt  26KB 1984 (Original released version) Yet another part of the game.

Rommel's Revenge sources (Spectrum) (c) Martin Horsley
This was written by Martin Horsley on a Spectrum using Zeus, which is why the source was broken into small sections and the files are so compressed. It amazed me at the time that he could write such an impressive game just on the machine itself, I certainly couldn't have done that...

These are all the files I now have, so it looks like I've lost one or more files. I presume they're intended to be assembled in order and then run, but these files don't contain any of the data or front-end stuff...

RR_Source1.txt  10KB 1983 One of the Zeus (spectrum) source files.
RR_Source2.txt  12KB 1983 Another...
RR_Source3.txt  3708 bytes 1983 Another...
RR_Source4.txt  10KB 1983 Another...
RR_Source5.txt  266 bytes 1983 Another...
RR_SourceX.asm  114KB 28/May/2016 A Diana disassembly of Rommel's, combined with Martin's sources. Doesn't assemble yet, a work in progress...
rr.def  7042 bytes 22/Oct/2008 Diana definition file - an example file for the Diana disassembler, early start of a definition file for Rommel's Revenge.
rr.bin  64KB 14/Oct/2008 Rommel's Revenge binary (see above)

Dark Star sources (Spectrum) (c) Simon Brattel.
New - I've added a reconstructed source for the Spectrum version.
ds2012src.zip   68KB 27/Mar/2012 The sources for a new emulator-friendly ZX Spectrum release of Dark Star. Reconstructed using Diana and fragments of old sources
ds_dev.zip  75KB 13/Mar/2012 NEW - working recreation of the Dark Star sources - a work in progress. Added analogue joystick support...
Surface spekki most of towers 5_00pm 1_4_84.asm   36KB 5:00pm 1/Apr/1984 An early version. Source compatible with zeus.exe, see above.
dsu_1.szx  3820 bytes 5:00pm 1/Apr/1984 The above file assembled and running. Controls are Q/A fast/slow Z/X left/right N/M up/down and H/J/K for fire. Try flying slowly forward and shooting...
Dark Star + coloured thingys 2_35am 14_6_84.asm   381KB 2:35am 14/Jun/1984 Most of it. Source compatible with zeus.exe, see above.
dsu_2.szx  16KB 2:35am 14/Jun/1984 The above file assembled and running (grafted onto the released front-end code, which provides the key-scan routines for it).
Loader v2 Wednesday 05_36_49 am 21_08_85.txt   4508 bytes 5:36:49am 21/Aug/1985 Tape loader for it?

Forbidden Planet (Spectrum) (c) Simon Brattel
New - revised the sources
fp2012src.zip   69KB 27/Mar/2012 The sources for Forbidden Planet. Updated for emulators but can (optionally) generate the original code.
fp.asm  558KB 28/May/2016 The complete source code for the Spectrum version of Forbidden Planet, for use with the Zeus assembler provided on this site.
This has the whole project as a single file. See above...
fp_zeus.zip  90KB 29/May/2016 The complete source code for the Spectrum version of Forbidden Planet, for use with the Zeus assembler provided on this site.
This is a multiple-source version. See above...
fp_zeus_2_10.zip  84KB 8/Dec/2008 The complete source code for the Spectrum version of Forbidden Planet, for use with the Zeus assembler provided on this site.
This is slightly changed to take advantage of features available in Zeus v2.10 onwards.
fp_spin.asm  530KB 3/Oct/2008 The complete source code for the Spectrum version of Forbidden Planet. Various ugly changes to work round bugs in the zx-spin assembler. [muffled noises]

Graham Stafford's Spectrum game's sources

on_the_run_zeus.zip  49KB 29/May/2016 Graham's "On The Run" for the Spectrum in Zeus-compatible source format. Revised (27 Aug 2010) so it uses $NNNN hex numbers.
nos_zeus.zip  150KB 7/Jul/2016 Another complete game - "Nosferatu The Vampire" for the Spectrum in Zeus-compatible source format.
kat_trap_zeus.zip  160KB 29/May/2016 Graham's "Kat Trap" for the Spectrum in Zeus-compatible source format.
graham_games_src.zip  880KB 26/Aug/2010 Most of Graham Stafford's games as M80 (CP/M) Z80 sources. 2112, Kat Trap, Nexor, Nosferatu and On The Run... Tidier sources than mine, the utter bastard!
hexconv.exe   170KB 27/Aug/2010 A windows tool that reads source files containing leading-zero hex numbers and converts them all to $format, so 01234 => $1234, for example. Also strips the strange characters (0x8A) out of Grahams sources.

CP/M files - these are mostly conversions from Grant Searle's Z80 CP/M machine project.
Start out by assembling boot.asm
cpm_sources.zip   840KB 6/Sep/2016 Grant Searle's CP/M utilities and sources converted to work with Zeus's CP/M emulator.
cpm_drive.zip   828KB 10/Dec/2015 A sample CP/M "drive"... the emulator uses a 128MB file to emulate a CF memory card. This is a zipped copy of that file containing a set of useful CP/M utilities.

NASCOM files
Start out by assembling nassys.asm
nascom.zip   241KB 13/Dec/2015 Sources for NAS-SYS3, BASIC, various games including The Keys of Kraal.

Games-related files provided by "Friends of Design Design"...
Contributions from third-parties - received with thanks :)
desdes_loader.asm  10KB 29/Oct/2008 [revised] Robert Crawford has kindly used Diana to disassemble the tape loader we used to use on the Spectrum. This is the reconstructed source...
Rather better commented than the original, by the look of it...
invade_load_v1.0.def  2567 bytes 29/Oct/2008 [revised] His Diana definition file
inv_load.bin  63KB 21/Oct/2008 The binary he was working from.

Various examples of ZX Spectrum tape loader files generated by Zeus's loader
These are examples of playing with the options available with Zeus's tape loader. It generates tape files with a single statement, with options for the loading screen (shown here) including 128K files with data scattered across any or all of the pages. You just tell it which parts of which page you want the tape file to include and it does everything for you...
h0.tzx   25KB 31/Mar/2017 Halls with option 0 (Normal Design-Design neat loading)
h1.tzx   25KB 31/Mar/2017 Halls with option 1
h2.tzx   25KB 31/Mar/2017 Halls with option 2
h3.tzx   25KB 31/Mar/2017 Halls with option 3
h4.tzx   25KB 31/Mar/2017 Halls with option 4
h5.tzx   25KB 31/Mar/2017 Halls with option 5
h6.tzx   25KB 31/Mar/2017 Halls with option 6
Third party tools and utilities:
  Adobe Acrobat Reader
(necessary to read the PDF files on this site)
DOSBox   The DOSBox PC emulator - this will allow the PC files to be run perfectly, even under windoze XP and Vista. Thanks Bill :(

 

Home Author: crem@cix.co.uk
Copyright 2008, Design Design. All rights reserved.