Two months ago I found a SID disassembler at the website of Covert BitOps. I rewrote large parts of it and added support for SAP and NSF (NES) files. It tries to do some simple code-flow analysis to determine code and data blocks. The output is compatible with ATASM. Because I want to avoid it'll bitrot on my harddisk, like so many other of my projects, I decided to post it here. Have fun.
Possible improvements (todo-list):
* command line option to manually mark blocks as code or data
* add emulation engine to better handle self-modifying code
* multiple assembly formats (xasm, mads, et cetera)