collapseos/apps/zasm
Virgil Dupras c40bc329d5 zasm: fix expr returning wrong values on first pass
To run a parseExpr on first pass would always return a false success
with dummy value because symbols are configured to always succeed on
first pass. This would make expressions like ".fill 0x38-$" so bad
things to labels because "0x38-$" wouldn't return the same thing on
first and second pass.

Revert to parsing literals and symbols after having scanned for
expressions and add a special case specifically for char literals (which
is why we scanned for literals and symbols first in the first place).
2019-05-20 10:46:27 -04:00
..
directive.asm zasm: fix expr returning wrong values on first pass 2019-05-20 10:46:27 -04:00
expr.asm zasm: fix expr returning wrong values on first pass 2019-05-20 10:46:27 -04:00
glue.asm zasm emul: bring back kernel/user distinction 2019-05-19 12:57:59 -04:00
instr.asm zasm: add support for .org directive 2019-05-19 14:40:42 -04:00
io.asm zasm: make io unit handle PC and output suppression 2019-05-17 14:58:16 -04:00
main.asm zasm: add support for .org directive 2019-05-19 14:40:42 -04:00
parse.asm zasm: add support for "$" symbol 2019-05-20 09:17:50 -04:00
README.md Add zasm app 2019-04-16 13:36:57 -04:00
symbol.asm zasm: add support for .org directive 2019-05-19 14:40:42 -04:00
tok.asm zasm: accept whitespaces before separating comma 2019-05-19 10:39:29 -04:00
util.asm zasm: de-index symRegister 2019-05-19 09:06:24 -04:00

z80 assembler

This is probably the most critical part of the Collapse OS project. If this app can be brought to completion, it pretty much makes the project a success because it ensures self-reproduction.

Running on a "modern" machine

To be able to develop zasm efficiently, libz80 is used to run zasm on a modern machine. The code lives in emul and ran be built with make, provided that you have a copy libz80 living in emul/libz80.

The resulting zasm binary takes asm code in stdin and spits binary in stdout.