A month of planning and coding between other projects has brought BranchMap v1.0 to completion. Written entirely in Python, and tested on Linux and Windows, this program allows you to generate postscript or PDF files containing a summary and semi-graphical overview of z80 ASM code. I intended this project as a way to trace program flow without staring at thousands of lines of z80 code for hours. It can do all of the following and more:
:: Displays all files, labels, and jumps in source file(s)
:: Optionally track and displays calls and bcalls
:: Tracks and tries to determine stack depth of all instructions. Looks for unreachable blocks.
:: Finds and warns of dangerous stack manipulation, such as returning from a call with the stack pointer misset.
:: Displays easy-to-read color-coded cross-file call/jump references
:: 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, including 14 stack manipulation warnings.