i love to write my own devtools, so of course, i wrote by own Z80
assembler. ah, and Z80 emulator, and ZX Spectrum emulator, of course.
anyway, UrAsm is two-pass Z80 macroassembler with support for all Z80A
instructions (included undocumented). usually, code from other asms
can be compiled with minimal changes (or without changes at all).
there are support for some features from Storm assembler (one of many
assemblers developed in xUSSR):
ld a,b,c,d -> ld a,b : ld c,d
push bc,de -> push bc : push de
...and so on for some other instructions line inc/dec and shifts.
also, there is converter from other eastern assembler formats to
simple text files. input is HoBeta file, output is text file.
there is a special handling for "system" includes:
include <lib.zas>
will look for "lib.zas" in "system library dir", which will be:
/path/to/executable/libs/lib.zas
i.e. it will look for "libs/" subdir at the location of UrAsm
executable. you can use URASM_INCLUDE_DIR envvar to override
this.
also, if you're including a directory (i.e. will specify dir
name in include), UrAsm will load "zzmain.zas" file in that
directory. this way you can put your libraries in subdirs, and
use "zzmain.zas" to load all necessary lib source files.
include will first look into path where the last system/user
include file was found (i.e. works almost like C `include ""`).
happy hacking,
Ketmar // Invisible Vector