Late 2014, I found a Beckman DU600 spectrophotometer in the trash. I took a quick look at the back and saw a VGA port, some serial ports, and a parallel port, so I decided to take it. Upon disassembly, I saw that the motherboard of the unit was based around the Motorola 68332 microprocessor. I decided to reverse engineer the hardware and see if I could get some of my own software to run on it. Since I could not find what I considered a decent monitor/debugger for 68K, I decided to write my own.
What it does
Joe-Mon is a machine language monitor. It is essentially a small simple debugger intended to run in ROM on a system to allow programming and development on the system. This type of setup was common before JTAG and similar interfaces.
Joe-Mon has been in development for a while now and has been open source since the beginning. During the hackathon, I added over 1500 lines of assembly code and brought the integrated disassembler from about 25% completion to over 50% completion.
How I built it
I started by visually reverse engineering the hardware that Joe-Mon is built for. In addition, I disassembled the original firmware to get an idea of hardware initialization necessary to run new software. Once I felt I had a good enough understanding of the hardware, I wrote the first program I ever ran on it, essential a hello world variant. From there, I added on continuing with hardware documentation and improving the software in my free time.
Challenges I ran into
working remotely from the physical device during the hackathon meant I had no easy way to reset if the hardware got stuck in an infinite loop during testing. I was able to solve the by implementing a serial break interrupt handler.
Accomplishments that I'm proud of
I wrote all of the low level hardware driving code myself I devised a working method for a disassembler completely on my own
What's next for Joe-Mon
completion of vital debugger functionality features like disassembly of instructions, single step support, etc.