2

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 and DISKIO = 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.

  • 1
    Only 8k? To get that true retro experience I would print it out on fanfold paper in hex and ascii, and then disassemble it by hand! – Bruce Abbott Jul 30 at 5:18
  • 2
    I found 6502 disassemblers lacking and ended up writing my own. I haven't worked with 6800, so I don't know how much effort would be required to adapt the 6502-centric code to it, but it does check several of your boxes. At any rate, I was lured to the dark side by Microsoft's development tools and it currently only runs in Windows. – fadden Jul 30 at 5:50
  • @BruceAbbott Ouch! I've tried similar manual processes before (I used to do hand-assembly of 6809 code on paper pads), but I think I'll save myself the time and stick with automated tools for this. :-) – Curt J. Sampson Jul 30 at 6:39
  • 1
    About 20 years ago I wrote a table driven "universal" interactive disassembler running in a shell. It is quite simple, not to say primitive. My C skills were limited that time. :-} Unfortunately there is just an old mirror of its internet source, but you might to look at it and massage it to your liking. – the busybee Aug 2 at 6:29
  • 1
    Could the program at the end of this page be something to build on? seanriddle.com/willy3.html It doesn't have everything you need, but it seems to be a simple c program that ought to be quite easy to adapt. – UncleBod Aug 29 at 5:48
0

I had largely same requirements for similar CPU but ended up using f9dasm. But if you are serious then look at IDA Pro.

  • Sadly, it appears that the only version of IDA that will disassemble 6800 code is the Pro version, at $2000 or more. I did spend an hour playing with the free version on an 8086 BASIC.COM file, just to get feature ideas, but the documentation seems to be poor and the learning curve huge. – Curt J. Sampson Jul 30 at 10:28
  • Yes, unsuitable for one-off private hobby use, as eval versions do not support 6800. – Justme Jul 30 at 12:02

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.