zmac 1.3, a Z80 macro cross-assembler. Public domain by Bruce Norskog, John Providenza and Colin Kelley. Cleaned up somewhat and documented by Russell Marks. Tweaked by Mark RISON, Chris Smith, Matthew Phillips and Tim Mann. Description ----------- zmac is a rather good Z80 macro cross-assembler which hardly anyone seems to know about, but which I've used for about four or five years now for various things. I'd taken to, whenever I uploaded any of my Z80 sources, including a diff to get zmac minimally working (being a relatively old program, it made some assumptions which were a little odd in a modern context) and a pointer to where the shar archives could be found. (FWIW, that's comp.sources.unix volume 9.) But eventually, I decided it'd be a Good Thing if I got a more reasonable zmac package together, especially since I couldn't ever remember seeing a Z80 cross-assembler on sunsite. Honestly, why bother wasting space on junk like the kernel and gcc when you could be using it for *useful* stuff like Z80 assemblers? :-) So I made the code ANSI C and got it through gcc's `-Wall', fixed a couple of obscure bugs I'd found in it, wrote a man page, and added the option of only accepting 8080-compatible instructions so you can write programs in Z80 which will also run on the 8080 and 8085 (see the man page for details), and a couple of other minor features. And that's essentially what's here. The documentation is in the file zmac.doc (derived from the Un*x man page in the file zmac.1 ). Installation on Un*x -------------------- You'll need an ANSI C compiler. gcc is fine - so should most other compilers be, these days. (You'll also need bison or yacc, if you want to build from scratch, but that shouldn't be a problem.) Check/edit the Makefile first. (It should be fine, though.) Then do `make', then (as root) `make install'. This installs the man page as well as the executable. Installation on BeOS -------------------- You'll need an ANSI C compiler. gcc is fine. You should be able to use the Makefile provided, otherwise just do whatever you need to do to compile zmac.c, mio.c and getoptn.c together. Then put the executable in /boot/home/config/bin/ or /boot/beos/bin/ . Installation on DOS ------------------- You'll need an ANSI C compiler. You may be able to use the Makefile provided, if you're using djgpp, otherwise just do whatever you need to do to compile zmac.c, mio.c and getoptn.c together; in both cases make sure the preprocessor token MSDOS is defined. Then put the executable somewhere in your PATH. Installation on RISC OS ----------------------- You'll need an ANSI C compiler. Acorn C/C++ is fine, and so should gcc and lcc be. You may be able to use the Makefile provided, otherwise just do whatever you need to do to compile zmac.c, mio.c and getoptn.c together; in both cases make sure the preprocessor token __riscos or __riscos__ is defined (this is the case for Acorn C/C++, gcc and lcc). Then put the executable somewhere in your Run$Path. [Also see the file RISCOS.] Installation on other OSes -------------------------- You'll need an ANSI C compiler. You'll probably need to add filename-handling support for your OS. This involves adding appropriate definitions of OS_DIR_SEP and OS_EXT_SEP and adding appropriate code to decanonicalise (). In those cases where directories in pathnames are syntactically distinct to leafnames (e.g. VMS) changes will also be needed in suffix () and suffix_if_none (). You may be able to use the Makefile provided, otherwise just do whatever you need to do to compile zmac.c, mio.c and getoptn.c together. Then put the executable somewhere appropriate, and feed your changes back to so they can become part of the source source! History ------- Bruce Norskog wrote zmac in 1978, "modeled after the ... macro cross-assembler for the Intel 8080 by Ken Borgendale." John Providenza made some changes and bugfixes in the early 80s. Colin Kelley did much the same in the mid-80s. And of course, I've just messed about with it in the late 90s, together with Mark RISON, Chris Smith, Matthew Phillips and Tim Mann. :-) I assigned the first version I hacked on the version number 1.0 just for the sake of argument (previous versions didn't have a version number). A version number of about 4.0 or 5.0 would probably be a better reflection of what the code's been through over the years... Contacting me ------------- You can email me at . However, Mark RISON now maintains zmac, so you should generally email him instead at . The latest version of zmac is currently available from http://www.nenie.org/cpcip/index.html#zmac Share and enjoy! -Rus (with a few tweaks by Mark).