Hi,
I've recently released the first public version of an experimental cross-assembler I wrote, called "Pasta". It's written in OCaml, and supports macros, local scopes, 6502 & 65C02 instructions, automatic long-branch synthesis, and a few other things. The most interesting feature though is that it is capable of managing zero-page locations for you automatically, using a simple kind of register allocator.
More info at
http://panic.cs-bristol.org.uk/~jules/pasta/README. Download source code at
http://panic.cs-bristol.org.uk/~jules/pasta/.
(I mostly wrote this to support another project I was working on, so far unreleased -- for the BBC micro, naturally. I've basically only implemented things on an as-needed basis, so you'll probably find various holes or broken things if you try the assembler out...)
Sorry to just jump in and start advertising! Hi, by the way.
Cheers,
Julian