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.
Well here we are again. It’s June of 2014, and I have to come up with a Retrochallenge entry.
Last year I decided to tackle an original hardware design and convert a VT100 keyboard to USB. It was a lot of fun, and a lot harder than I thought it would be. This year, I just haven’t been able to come up with a cohesive and innovative idea for something to do, so instead, I’m going to do two smaller projects.
6502 ROM Monitor
The first thing I’d like to do this year is finally put together a simple 6502 ROM Monitor program for my Home Brew 6502 computer. It runs EhBASIC right now, but there’s no interactive ROM monitor or debugger. For a while I had Steve Wozniak’s ROM monitor running, but I’d like to roll my own.
I don’t think this will be a particularly hard challenge, but I do think it will be fun and educational. It’ll probably also leave me with time for a totally un-related Part II…
Clean and Rehabilitate My RL02 Drives
Part two of my Retrochallenge will be to finally open up, clean out, and rehabilitate the RL02 drives on my PDP-11/23+ computer. It’s been sitting in my garage for years, and those drives need some attention. They both allegedly work, but they’re dirty, they (probably?) still have old crumbly air filters in them, and they probably need some regular maintenance before I turn them on. So I’m going to follow DEC’s care procedures, clean them, clean my packs, and get them up and running again. I think it’ll be fun to document this and make some videos out of it.
And In Closing…
I hope I haven’t bitten off more than I can chew, but I really think that these projects are small enough for me to get them both done in a month. I believe the ROM monitor will be two weekends, and the RL02 drives will be one weekend. We will see! I’ll do them serially, so I’ll try to get at least one of them done.
I’ll be seeing you all soon! July 1st is coming up fast.