146 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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 <mrison@hotmail.com> 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 <russell.marks@ntlworld.com>.  However,
 | |
| Mark RISON now maintains zmac, so you should generally
 | |
| email him instead at <mrison@hotmail.com>.
 | |
| 
 | |
| 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).
 | 
