There's an interesting ongoing thread over on stardot which I recommend to you:
Small 6502 disassemblerUser 'gfoot' started off with a disassembler which is only 510 bytes long, which is interesting enough and hopefully even useful, and since then there's been some improvement in size which might lead to improved functionality. (There is also a setup binary, under one page, which is run before the main one, and uses the same location for code.)
Naturally, it's a minimal disassembler, so it doesn't (presently) cope too well with non-code, and indeed it only works on official 6502 opcodes.
The coding techniques in the original, and the optimisations applied since, will also be of interest, if you like that sort of thing.
(It's for the Beeb, but would surely be portable. The source is, of course, BBC Basic, but again surely not at all difficult to port such a small program.)
Edit: George has said he considers this work, and his other work posted to forums, as released into the public domain.