I'm currently using [this version of f9dasm] on Linux to disassemble a moderately large Motorola 6800 program (Altair 680 Basic, about 8 KB in size).
f9dasm isn't too bad, but I'd prefer to use something more featureful and/or easier to modify and extend so I can add features to it more easily.
Disassembly features I'd like to have include:
- Better handling of ASCII characters with the high bit set.
- Being able to assign one of a choice of multiple symbols with the
same value, so that I could have e.g.
EXTIO = 0
andDISKIO = 0
in the disassembly and annotate different locations to use the appropriate symbol for that code (or no symbol at all). This applies both to definitions of constants and to addresses that have multiple names because they're used for different purposes in different parts of the code. - A choice of ouput formats, including a "list" format (addresses and values on the left) as well as a format suitable for input to an assembler.
- The ability to add comments and other text in arbitrary locations, not just before the disassembly for particular address.
- The ability to define macros and have the disassembler generate the macro call as output when it finds matching code, or at least when I ask it to. (This may be asking too much, I know.)
Some of the things that make f9dasm hard to modify and extend (for me, anyway) are:
- It is mainly large, complex functions rather than smaller, simpler ones that are easier to re-use, understand and test.
- Lack of unit tests to make modifying individual functions easier.
- Lack of functional tests to make adding/changing features easier.
- Being written in C rather than a higher-level language (e.g., Python).
I'm specifically looking for something I can run on modern machines (Linux/Unix strongly preferred), rather than something I'd have to bring up in an emulator.
Does anybody have any suggestions for me? I'd be willing to consider adding 6800 support to a multi-architecture disassembler that doesn't currently support it if the code is in good shape to make that relatively easy.