Here it is, Retrochallenge Summer 2014. It’s time to get started. It’s time to write a ROM monitor.
But just what is a ROM monitor? In simple terms, it’s a program that gives the user direct control over the lowest level of a computer. Typical monitors will, at the very least, allow a user to read and write memory contents directly using a very simple command-line interface. Now, when I say “very simple”, I mean primitive. ROM monitors usually don’t have such luxuries as user help or warnings or anything of the sort. No. They allow you to shoot yourself squarely in the foot, using whatever gauge you happen to have on hand.
My goal is to build a full-featured but very simple ROM monitor for the 6502 that offers the following features:
- Built-in help
- Simple line editing (backspace, if nothing else)
- Read and write single memory addresses
- Read and write memory ranges
- Show contents of Accumulator and X and Y registers
- Show contents of the Processor Status register
- Allows starting execution from an arbitrary address
A secondary goal is to be very clear and well-documented code. It will likely be much larger and take up more ROM space than it needs to be. A superior 6502 programmer may even look at it and wince. But that’s OK. As long as it’s readable and easy to understand, I will be happy. I’m not a ROM hacker, I don’t need to fit my monitor into 128 bytes of code!
By necessity, of course, the monitor will be written in 6502 Assembly. That means my very first step will be picking and setting up a 6502 assembler and development environment. More on that tomorrow.