7

Does anyone know of a good, modern Motorola 6800 assembler?

  • I've used dasm, which I quite like (and it's even actively developed), but it doesn't actually support 6800. It supports 6803, which is very similar, but I've already been burned once (it assembles extended JSR to the zero-page into the 6803-only direct JSR, which incidentally shares its opcode with the 6800's undocumented HCF instruction...). Not the biggest problem as long as you're aware of it, I suppose.
  • Crasm is also an option, but it only assembles S-Code files, not binary files, which is a bit of a hassle. Also not the biggest problem.

Are there any other good ones?

  • I use my own asm80.com (available as the command-line utility too). It is a multitarget assembler, focused on the old 8bit CPUs and it can generate binary files. (Biased comment, I am an author of this tool.) – Martin Maly Apr 17 at 9:50
  • @MartinMaly Thank you, but it doesn't seem to support 6800? – tobiasvl Apr 22 at 9:35
  • 1
    Yes, it does support 6800 (as well as 8085 / 8008 / 6502 / Z80 / 6809 / 1802 and 65816), just use the .a68 suffix (or select New file and type Motorola 6800) – Martin Maly Apr 22 at 12:47
7

The MacroAssembler AS

I use The Macroassembler AS. It's modern, multiplatform (Unix, Windows, DOS) with macros and all that other good stuff, still supported and under development, and supports an amazing variety of CPUs (around 60), including modern MCUs such as Amtel AVR. It's very nice to be able to use the same assembler for all one's 8- and 16-bit development.

Output is to its own record-based format, .p files. Tools are provided to generate binary and hex record files from those, but I found the format simple enough that I just wrote a bit of Python code to handle conversion for my various needs, which included loading code into an emulator/unit test framework and generating Apple II binary files with a check for overlapping records. (You can find the code in my 8bitdev repo.)

Though it doesn't have a public development repo, I help maintain KubaO/asl on GitHub where we import every release on to the upstream branch. You can easily fetch this if you want to build it yourself and perhaps hack on it. There's also some fetch and build support under the tool/ directory in my 8bitdev repo above, since the build/test script there automatically downloads and builds the tools it needs.

ASxxxx Cross Assemblers

I've also tried out the ASxxxx assembler suite, which generates relocatable binary files and has a linker, but I found in the end that for multiplatform work it's easier just to re-assemble than deal with linking (often different assembly parameters are needed for different platforms), and on modern hardware assemblers are so blazingly fast that there's no difference in build time. I also found the slightly odd syntax mildly annoying.

| improve this answer | |
  • AS seems promising, but I seem unable to build it on x86_64 Linux! Or maybe I just don't understand how. – tobiasvl Apr 22 at 9:58
  • OK, I managed to get it going on Windows, and I have to conclude that this is the assembler to use for most architectures. Amazingly broad range of features and syntax variations. – tobiasvl Apr 22 at 16:38
  • @tobiasvl It's not the easiest build in the world, though it's not the hardest, either. If you have issues, find my email address in my profile and send me mail, and I'll try to help get things fixed. And yeah, I'm pretty pleased with AS. – cjs May 2 at 20:44
5

The one I'm using on Windows is vasm: http://sun.hasenbraten.de/vasm/

vasm is a portable and retargetable assembler to create linkable objects in various formats or absolute code. Multiple CPU-, syntax and output-modules can be selected.

Many common directives/pseudo-opcodes are supported (depending on the syntax module) as well as CPU-specific extensions.

The assembler supports optimizations (e.g. choosing the shortest possible branch instruction or addressing mode) and relaxations (e.g. converting a branch to an absolute jump when necessary).

Most syntax modules support macros, include directives, repetitions, conditional assembly and local symbols.

It supports many CPUs, among them several flavours of the 6800 family:

6800 family (6800, 6801, 6803, 68HC11)

It can create binary files without any header or format, or platform-specific object files.

It is also actively maintained. I'm using it for 68k family with great success.

| improve this answer | |
  • vasm is a nice assembler, but it might be worth pointing out here that using it for commercial purposes requires a written agreement from its author. – Stephen Kitt Apr 16 at 12:20
  • True but I didn't see this mention anywhere., and OP didn't express that requirement, too. – Jean-François Fabre Apr 16 at 12:54
  • 1
    See the legal section in the vasm documentation. I know the OP didn’t mention that; I’m just mentioning it for other readers who might start using the tool without reading all the docs either ;-). – Stephen Kitt Apr 16 at 13:05
  • Thank you! I definitely don't need to use it for commercial purposes (although I suppose I would prefer one with a free software license for ideological reasons, that's not by any means a show stopper) – tobiasvl Apr 17 at 16:56
  • I think the author doesn't want people to make money with the software without him getting a piece of the pie, that's it (given that some supported processors are still rather recent) – Jean-François Fabre Apr 17 at 17:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.