Photography and Projects

6809 Single Board Computer

 
Page under construction
This page describes a project to build my own single board computer based on the Motorola 6809 CPU.
This is not my original design but I have used information shared by Grant Searle and Jeff Tranter to build my own version. Without them sharing their projects I would not have been able to create this project. See the links to their pages on the right.
The goal of my project is to have a working single board computer I can use to learn 6809 machine code and to build expansion boards to interface to the outside world.
 
Stacks Image 33
The Motorola 6809 CPU was used in a few home computers of the 1980's era and was an advanced 8-bit CPU at that time. My home computer fascination really took off when I bought my Dragon 32 and although I started to learn machine language at the time I have forgotten most of it now. When I saw that people had already built simple computers of their own using this older technology I wanted to do the same. I used the original design and purchased the required IC's from Ebay.
I created a prototype using solderless breadboard I bought from Maolin;s closing down sale. It is really helpful to use printed pinouts stuck to the surface of the 4 large IC's. I used yellow wire for the address bus, blue wires for the data bus and white wires for the control signals such as the E timing signal and R/W line. Red and black wires were also used for the power lines.

I downloaded the basic rom created by Grant Searle and programmed an eprom using a cheapish eprom programmer I bought from Amazon. Although used to programming flash on PIC microcontrollers I had never programmed an eprom. It took me a while to realise I had to use some offsets when loading the file to make sure the code was at the correct start point in the eprom. The eprom is addressed from C000-FFFF but basic starts from address DB00. The last two bytes of the eprom FFFE and FFFF are the reset vectors and hold the address where program execution should start after a reset (or when first powered on).
I connected the serial connections from the 80B50 IC to a laptop PC using a USB converter and used Putty as the serial terminal program. At first I could not get it to work so I removed the IC's except the CPU and wired the data bus to the NOP (no operation) instruction to test the CPU. I connected the address bus to a Picoscope MSO to see that when powered on the address bus incremented. The CPU increments the address bus one address at a time from 0000-FFFF. It does it so fast you cannot see it using LED's. After confirming the CPU was working I rechecked all the connections and plugged the IC's back in. I connected the Picoscope to the data bus and powered on. I could see the prompt in the serial terminal. Success!
However, I soon realised that when disconnecting the Picoscope from the data bus it stopped working again. I resolved this by using a 2K2 pull-up resister network on the data bus. I was able to enter a basic program and run it using the serial terminal to see the results. One Issue I saw was after running the program I had no response from the command line. I hit reset and it was ok again (and the basic program was still in memory). It was time to move on and create a PCB which could resolve these issues.
 
I had already transferred the schematic to Eagle CAD to help me with building the prototype. I added the pull-up resister network after my experience with the prototype knowing that if it was still required I had a place for it on the PCB. I based the layout of my PCB on Jeff Tranters design but I modified it so the reset button and the power LED were together on the left hand side of the PCB and added room for my USB-Serial converter.
I ordered my PCB's from All PCB in China who I have been using for a few years now. After about 5 days the PCB's were here ready for assembly. Great service!
I started with the IC sockets, then the capacitors, diode and resisters. I left out the network resistor for the data bus as I wanted to try without this first to see if it was required or not. Then I added the crystal, LED and reset button. Finally I added the connector pins and socketed the IC's.
Stacks Image 23
To test I connected the USB-Serial converter using Dupoint wire as final fitting would require me to remove the already soldered on right angle connector from the converter PCB. On power up I did not see the prompt on the serial terminal window so I added the pull-up resister network as I did for the prototype. A second test worked! I am not sure why the designs of Grant and Jeff did not require the pull up of the data bus but mine does! However I still had the issue with lock up after a program was run. I decided to try the basic as modified by Jeff Tranter as I noticed he had corrected a small bug. Using this newly programmed eprom the lock up issue disappeared. Now everything is working well. Finally I mounted the USB-Serial converter on the PCB.