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