[NOTE - The new WFDis is here]

[This page preseves the old 1990s incarnation of the project]

-WFDis- Demo #2

Download it! (61,524 bytes)

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:

Starting the program

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.

Initial display of the file

What you see was completely generated by the disassembler without human intervention, save for the BASIC header question.

Now we can easily see that the BASIC launcher calls "Entry00" at $0828 which gets a comma, parses an address, gets another comma, and makes a nasty call to an internal ROM routine, probably to set up the filename. It then copies the 8 bytes at $0849 to the top of the stack and jumps to them. Disassemblers aren't usually smart enough to detect that the code at $0849 is relocated and called, thus being executable machine code, so WFDis lets the user explore the file themselves. In the picture above, the line of hex values at $0849 has been selected, and the Change command has been invoked, listing the possible methods to display the selected data in. Pressing "a" will change the hex dump into assembly code:

Changing the program layout

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)

All pages were generated with a text editor.
All images (except counter art and host ads) are generated, owned and (c) by me.

Home - Files - Scratchpad