
Asm198x
A family of imagined workshop tools, not a diagram of software dependencies.
Modern assemblers & disassemblers for retro CPUs
Asm198x is the family's assembler toolchain — one modern, statically-linked, cross-platform binary that assembles and disassembles code for the retro CPUs of the era. Rather than invent a house syntax, each front-end matches a dialect people already use, and the output is checked byte-for-byte against that reference tool.
Why it exists
The period assemblers are dead-OS binaries — you need DOSBox or a full emulator just to run them. The modern community tools mostly work, but they're fragmented: a different program, syntax and build dance per machine, much of it unmaintained C. Asm198x is one well-documented toolchain that spans the family's CPUs.Rescue beats replace.
What it covers
About twenty CPUs, in both directions: the 6502 family (including the 65816 and HuC6280), the Z80 family (Z80N, SM83, 8080, Z8000), the 6800, 6809 and 68000, and less common chips such as the CDP1802, Signetics 2650, PDP-11, TMS9900 and CP1610. The front-ends the curriculum depends on are each checked byte-identical against their reference assembler: 6502 (acme for the C64, ca65 for the NES — with a bounded linker that emits a real .nes ROM), Z80 (pasmo/pasmonext and sjasmplus, including the Spectrum Next's Z80N), 68000 (vasm, with Amiga hunk-executable output), 6809 (lwasm), and 65816 (ca65). The other CPUs are checked with instruction-set sweeps, round trips and comparisons against reference assemblers. The full list is in the project README on GitHub.
How it's used
One binary, one --dialect flag. A few illustrative commands (the full dialect and flag set is on GitHub):
asm198x --dialect acme countdown.s -o countdown.binasm198x --dialect ca65 game.asm -o game.nesasm198x --disasm --dialect 6502 --org 0x0200 countdown.binWhy it's in the family
It's the tool that assembles Code198x's lesson code — the C64, NES and Spectrum assembly curricula all build byte-identical through it, so the code in a lesson is exactly what the reference assembler produces. The shared isa spec at its core is also the encoding source of truth that Emu198x validates its decoders against — one set of facts, three siblings. It's its own project with its own roadmap, not a Code198x component.