Title: Disassembling (Z80) Date: 201901516 Tags: software ======================================== I'm currently still playing around with the Mailstation. It has a parallel port interface that can be used to transfer code to and from the flash memory but no serial interface. Unfortunately, I don't have any computers with a parallel port anymore. The stock Mailstation does have a hidden hex editor which is what I am stuck using to enter program and read code. You can't see everything through the hex editor but you can see some "apps" that the system had on it and read the hex opcodes of the assembly. I'm new to Z80 assembly so I printed out the the list of opcodes on the dot matrix printer and started hand disassembling chunks of code to try to learn how things work. Aside: The continuous feed paper of the dot matrix is great for this. I have a nice, continuous, folded reference that is super easy to flip through. Thanks to existing information, and resources, I have a ROM dump of the stock OS, and know some things to look for and where to poke around to find useful functions for my own programs. Having done a bunch of front panel programming on the Altair 8800, using hex entry to type programs is a step up. The other day I found a decent Z80 disassembler that compiles on OpenBSD. MZT[0] has a nice disassembler that supports a "control" file where you can annotate memory addresses or areas so the disassembler can add labels or treat areas differently and fill out the code with that information. I'm only a few iterations in but with the information I already had about the Mailstation, it should make finding related code a lot easier. And the more you learn, the cleaner you can make the output. I wish I had more assembly experience in order to recognize higher level functions the code is performing. I have to basically run the code in my head to decipher it. Also doesn't help that it's generated by a C compiler. Adds some consistency but also a lot of cruft. [0] https://www.z80cpu.eu/projects/78-data-articles/projects/76-mdz80