I built a cross-assembler for the 6502/6510 while working on a C64 project. I switch between macOS and Linux frequently, and my previous setup didn't handle that well — so I wrote my own.
ASM64 is pure C99 with no dependencies beyond the standard library. It aims for ACME compatibility (same directive syntax, same output format), so existing projects should migrate easily.
Features: two-pass assembly, macros with local labels, conditional assembly, !for loops, pseudo-PC for relocatable code, illegal opcodes, automatic zero-page optimization, VICE-compatible symbol files.
frpa•2h ago
ASM64 is pure C99 with no dependencies beyond the standard library. It aims for ACME compatibility (same directive syntax, same output format), so existing projects should migrate easily.
Features: two-pass assembly, macros with local labels, conditional assembly, !for loops, pseudo-PC for relocatable code, illegal opcodes, automatic zero-page optimization, VICE-compatible symbol files.
I wrote about the development journey here: https://fredrikpaulin.hashnode.dev/building-asm64-a-modern-6...
The most interesting bug was in the !pseudopc implementation—tracking two program counters (real and virtual) across two passes has subtle gotchas.
GitHub: https://github.com/fredrikpaulin/asm64
Cheers, Fredrik