After a bit over a week of heavy-duty Python coding, I'm ready to unveil the first beta of BranchMap, a tool to simplify tracing and debugging program flow in z80 ASM source code. It takes in a plaintext z80 source file, parses it and any files included in that source file, and generates a postscript or (optionally) PDF file containing a detailed representation of the program flow. It can do all of the following and more:
:: Displays all files, labels, and jumps in source file(s)
:: Tracks and tries to determine stack depth of all instructions. Looks for unreachable blocks.
:: Displays easy-to-read color-coded cross-file call/jump references
:: Can optionally track calls and bcalls
:: Can optionally graphically track intra-routine stack manipulation
:: Easy-to-use PS/PDF output files
I've used it pretty thoroughly, testing everything from simple contrived source to Invalid Tangram to the monstrous behemoth that is Doors CS 7-in-progress. Doors CS has the most strange and tricky code, and hence had the most strange interpretations of nonstandard code, but even within the 108-page summary it produced there was a ton of useful information that I will be using to help me develop and debug faster. I humbly request that you give this little program a download, run branchmap.py -h to see what you can do, and try out some of your own z80 ASM programs on it. I look forward to all your comments, criticisms, feedback, suggestions, bug reports, and feature requests.