This is a work-in-progress of one of my greatest endeavors. Right now, though, it's merely a disassembler that runs in DOS that allows you to play with the layout of a file interactively. Here's some screenshots of a simple sample session:
First, the program asks for a filename (if not specified on the command line), then loads it and asks information about BASIC headers and start addresses, if this can't be inferred from the layout of the file. In the above example, which is the loader for MULE, only one question is asked: if there's a BASIC launcher or not; the rest is handled automagically. The program then cranks through the BASIC and assembly portions of the code, tagging each as such in a nice display of gobbledegook numbers jumping around all over the place. A keypress brings us into the main interactive mode of WFDis.
What you see was completely generated by the disassembler without human intervention, save for the BASIC header question.
All is revealed! Most likely, if you see a hex dump starting in A9 (LDA immediate), it'll be assembly code, and you can peek into it by changing its display method.
This is only a small portion of what's possible with the program. If you tried the first demo release (wfd_dem1.zip), everything is still the same, except that saving and loading of the current labels and display layout is now possible. Due to the nature of how the file is stored, and the screen dependence of the drawscreen subroutine, I'm not able to implement an ASCII export yet. You can get around this by using a DOS window in Win9x and using the copy/paste features of Windoze with the mouse, one screen at a time.
WFDis is for hackers, and isn't the easiest program to use. However, if you're disassembling C64 files, you probably know what you're doing. Full documentation of command line options (which eliminate the queries at startup) and interactive commands is included in the .ZIP file.
Also, WFDis is now Freeware! It also should have a good future, as I'm rewriting it in DJGPP, and will port it to the Amiga and x86 Linux. The current download, as well as the 1st demo are in QuickBASIC (excellent IDE, garbage compiler). For the record, it's written very structuredly (almost object-oriented), but still uses POKEs! :) I've completely rewritten the code about 2 or 3 times already, and am still trying to get it to the point where the disassembler can be more intelligent about knowing what's where in the system and why, so it might be a while before the next release. Keep the faith! :)
Download it! (61,524 bytes)