Nice work and thanks for sharing. I'd like to add this blog post [1] I read a while ago that explains a bit how to write a disassembler and emulator for Chip-8. The source is not as clean as yours and written in C but it's still worthwhile to check out.
I wrote a disassembler as part of my own Chip8 IDE[1]
It doesn't look like it impacts this disassembler, but it's worth noting that Cowgod's Chip8 technical reference gets the shift and load/store instructions wrong. A much better reference is Mastering Chip8[2].
[1] http://emulator101.com/chip-8-disassembler/