Growing up in the 80's I was part of an amazing and special time for computers. Every school I remember had a computer lab loaded with Apple II's running such iconic games as Oregon Trail, Odell Lake, and Number Munchers. My mom was a school teacher and somehow we were lucky enough to actually buy an Apple ][ to use at home. That to me sparked an interest in computers and technology that has followed me all these many decades later.
Towards the beginning of 2019 David Murray, best known as The 8 Bit Guy, posted a video where he described his dream computer. In his video David tells about his childhood, growing up with a VIC 20 computer, and how he missed the closeness to the hardware that those early 8 bit computers provided. David's video got me thinking, and made me ask the tough life question, "what was my dream computer growing up, and what would that look like today?". That question would eventually give way to a year long project I called RETRO II. The name Retro ][ came as a result of it being inspired and compatible with the original Apple II, but also because it is a descendant of my first 6502 computer I built in 2015 which was called Retro 1. Retro 1 was similar to the Apple 1, with basically a terminal window to type in BASIC programs. With Retro II I wanted to add graphics. I used the Parallax Propeller for video generation in Retro 1, and I knew it could handle the task of more video processing. This is why I'm using it again in Retro II.
Some basic design decisions for the project. I wanted it to feel like an 80's era computer, with the big beefy through hole components. I wanted it to be simple to understand and easy to program. I wanted it to be made from off the shelf parts that are still being produced today. I wanted it to have at least VGA output so that it could be connected to modern monitors. And for storage I wanted to be able to use a simple SD card. At its core, I wanted this project to be about learning. I wanted something that could give my kids the same sort of experience I had with the Apple II so long ago. The simplicity of being able to flip a bit at a ram location and see it result in drawing a pixel on the screen was eye opening to me as a youngster, and I was hoping to replicate that experience now with my own kids.
To meet my design decisions I needed to make a few changes to the original Apple II schematic. There were a number of components that were no longer made, like the keyboard encoder, the quad 558 timer, the RAM chips, etc. In addition the timing circuitry needed to be reworked to accommodate the new video requirements. The Apple II timing was tightly coupled with the video signal, the RAM refresh rates, as well as the keyboard multiplexer. I wanted to simplify all of this by feeding a simple 1MHz clock into all the key timing circuits. Later on I programmed the Parallax Propeller to take care of the timing. This enabled me to not only stop or single step the clock, but I could overclock the computer as well. I found that the max rate I could reliably get was around 4MHz. At the heart of Retro II is a WDC 65C02. I had to modify the original Apple II address decoding scheme a bit in order to get it to work for this project. By using the same address decoding as the original Apple ][ I'm able to run the same programs. I got rid of the DRAM and instead used a single 64K dual port static RAM. By using dual port ram, I can easily share the needed video RAM with the Propeller without having to worry about DMA.
I have two Parallax Propellers in Retro II. One is solely responsible for video. It simply reads from the video RAM and outputs a VGA signal. The other Propeller is in charge of routines related to the PS/2 keyboard, SD Card, and clock signals. The two Propeller's communicate with one another over an I2C bus. The Propeller ended up being a great fit for this project due to how it can easily handle many parallel processes at once. Instead of using interrupt...Read more »