This is a multi-CPU disassembler for many major 8-bit and some 16-bit CPUs, with a full-screen text user interface.
My first disassemblers were written in BASIC in the 80s, and were very stupid. They would just read the next byte and try to disassemble it, until the end of the input file. Any data would just become a complete mess.
Then I made a disassembler that would attempt to trace code references. While I was at it, I made it work with multiple different CPUs. That worked okay, but it had another problem. I had it use a control file to specify what every non-code byte was, manually. And usually I needed to run the disassembly again and again, to confirm that I got the last one right, and then to see the next bytes that needed to be manually specified.
After many years of suffering through this, I wanted something that could let me make those changes easily, with immediate response, and without having to flip back and forth constantly between three windows. Eventually I decided that a text-based interface would be easier to deal with than one of the many windowing systems out there. So I made a simple screen kernel using ncurses, while I thought about what kind of data structures would most efficiently represent hints for disassembling code.
Once I started working on the real thing, it only took just over two months to get it working. Then I ported my old CPU disassemblers to it, and went looking for every bit of code that I could find to disassemble with it so that I could kick its tires, over and over again. Bugs were found and fixed, but most important, I found a good balance of keyboard commands to make it efficient to use.
It supports a large set of CPUs, most of the common 8-bit ones, along with a few obscure ones, in different levels of quality.
It compiles on Mac and Linux. Windows users can probably make it work with Cygwin or WSL, or manually create a command-line project that links with the ncurses library.
disx4.txt | documentation (from trunk version) |
disx4-4.0.0r98.zip | zip of v4.0.0 source code |
disx4-4.1.0r116.zip | zip of v4.1.0 source code |
disx4-4.2.0r152.zip | zip of v4.2.0 source code |
disx4-4.3.0r172.zip | zip of v4.3.0 source code |
Version 4.1.0
http://svn.xi6.com/svn/disx4/tags/disx4-4.1.0/
svn command: svn co http://svn.xi6.com/svn/disx4/tags/disx4-4.1.0
Version 4.2.0
http://svn.xi6.com/svn/disx4/tags/disx4-4.2.0/
svn command: svn co http://svn.xi6.com/svn/disx4/tags/disx4-4.2.0
Version 4.3.0
http://svn.xi6.com/svn/disx4/tags/disx4-4.3.0/
svn command: svn co http://svn.xi6.com/svn/disx4/tags/disx4-4.3.0
Current trunk version
http://svn.xi6.com/svn/disx4/trunk/
svn command: svn co http://svn.xi6.com/svn/disx4/trunk disx4
Older releases can be found via tags at http://svn.xi6.com/svn/disx4/tags/