Sunday, January 27, 2019

A 6809 Single Board Computer


As well as the 6502, 6800, and 68000 chips, another CPU I used early in my career was the Motorola 6809, the more powerful successor to the 6800. Having completed some retrocomputing projects with the other chips, I start looking for a project where I could play with this CPU for nostalgia purposes.

I soon came across a Single Board Computer design by Grant Searle. A five or six chip design, it has serial i/o and can run a version of Microsoft BASIC that he adapted from the version in the Radio Shack Color Computer.

The basic specs are a 6809 processor running at just under 2 MHz, 32K of static RAM, 16K of EPROM, and a 6850 ACIA-based serial port.

The design is simple, potentially buildable on a breadboard, and had been reproduced by other people, so I decided to give it a try.

I entered my own schematic using the EasyEDA web-based CAD software. This would make it easier to make design changes and potentially a printed circuit board (PCB).

I made a few small changes in my version of the board:

  • Used a 6-pin connector for a standard FTDI USB to serial breakout board and omitted any RS-232 line driver/receiver circuitry. I also omitted the optional hardware handshaking circuit.
  • Added a simple power on reset circuit to the pushbutton reset.
  • Added a power on LED.
  • Provided a jumper to select USB or external power source.
  • Added a 32-pin header with access to most signals, for future expansion and to help with debug.

The system can plug into a computer's USB port where it shows up as a serial port. It is powered by USB (taking about 230 mA of current) and you communicate with it using a terminal emulator.

The provided BASIC is a port of Microsoft Extended BASIC for the 6809-based Radio Shack Color Computer. A disassembly of it was published in two books. In Grant Searle's port, all code and commands that were not applicable (e.g. graphics, sound, cassette tape i/o) were removed. It is just under 10KB in size. Pretty typical of Microsoft BASIC of the era, it has a few quirks, e.g. available memory i available from the variable MEM rather than a function FRE(). Extended Color Computer BASIC has some additional commands that are useful like RENUMber, additional math functions, PRINT USING, TRON/TROFF and even EDIT to support editing program lines. Apparently this was the last version of Microsoft BASIC that Bill Gates personally worked on. You can find online copies of books on the Colour Computer and its version of BASIC.

I took the BASIC firmware and got it to build under Linux using the as09 cross-assembler with no warnings. I found and fixed a small typo that might have affected the PRINT USING command.

I breadboarded the CPU, clock, and reset circuit on a solderless breadboard. Then I got the 6809 to free run by forcing all the data lines all low. I decided not to breadboard the entire circuit as it would be quite tedious to do so, wouldn't fit on my small breadboard, and the design looked stable and had been verified by others, so I opted to move directly to a PCB layout.

I made a PCB layout from EasyEDA (using the autorouter). Once it looked good, I ordered some PCBs from JLPCB, a partner of EasyEDA which offers PCBS for as little as $2 per board.

There are high quality double-sided boards with plated-through holes, silkscreened, solder masked and even electrically tested. They are built in about one day and arrive in about 5 business days. With the availability of suppliers like this, it really doesn't make sense to etch your own boards at home.


I had found and orders the remaining parts I needed on Ebay. Some, like the Motorola 68B50 and 68B09, are readily available as new old stock (NOS).


I programmed the firmware onto a 27C128 EPROM using my UV eraser and programmer.


Once the boards arrived, I build one up, starting with the power, then clock and reset circuits. Everything checked out and before long BASIC was up and running!

I read some books on Color Computer BASIC to review the commands, played with the commands and tested some old programs. Here is an example, a little horoscope program I wrote in BASIC some time again, which ran with some minor changes:

           YOUR HOROSCOPE
           --------------

THE PROGRAM GENERATES A PERSONAL
HOROSCOPE. I NEED SOME INFORMATION
ABOUT YOUR DATE AND LOCATION OF BIRTH.
I WILL THEN GENERATE AN ANALYSIS BASED
ON YOUR ASTROLOGICAL DATA.

WHAT IS YOUR FIRST NAME? Fred
YOUR YEAR OF BIRTH (E.G. 1980)? 1980
YOUR MONTH OF BIRTH (1=JAN)? 6
DAY OF THE MONTH (1-31)? 21
COUNTRY OF BIRTH? Canada
IN WHAT CITY? Ottawa
CALCULATING HOROSCOPE...PLEASE WAIT.

Fred, YOUR ASTROLOGICAL SIGN IS:
CANCER.

HERE IS MY ANALYSIS:

AT TIMES YOU ARE EXTROVERTED, AFFABLE,
SOCIABLE, WHILE AT OTHER TIMES YOU ARE
INTROVERTED, WARY, RESERVED.

YOU WORRY ABOUT YOUR HEALTH AS YOU GET
OLDER.

YOU ARE CONCERNED ABOUT THE HEALTH OF
AN AGING RELATIVE.

GENERATE ANOTHER HOROSCOPE (Y/N)? 

Looking for machine language monitors, I found source code for the ASSIST09 program that Motorola offers for their 6809-based development ports. I got it to cross-assemble under Linux, and modified it to work with the 6850 ACIA instead of what the Motorola hardware used. With a little debugging, I got it running. It works well, and provides most feature you want for development and debug, including memory display and change, register display and change, running and breakpoints, and generating and loading Motorola S record files. here is a sample session:

ASSIST09
>D 1000 20

      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  
1000 45 41 4C 49 53 54 49 43 2E 22 20 3A 20 90 00 10  EALISTIC." : ...
1010 56 2F 26 87 20 22 54 48 45 20 42 49 52 54 48 44  V/&. "THE BIRTHD
>R
PC-F842 A-00 B-00 X-20FE Y-F002 U-60C2 S-6051 CC-F4 DP-00 
PC-
>M 1000
45-55
>P 1000 100F
S13100055414C49535449432E22203A2090001014
S9030000FC
>

I am able to cross-assemble code on a Linux computer and then load the S record file onto the board via the serial port. This is much more efficient than erasing and burning EPROMs.


Note that for uploading you need to add delays due to no hardware handshaking. I use the ascii-xfr program on Linux to do this, as well as the minicom terminal emulator.

I wrote a couple of example programs that run with the ASSIST09 monitor, using it's SWI functions for i/o.

Next, I combined BASIC and ASSIST09 into one EPPROM. It comes up in ASSIST09 but you can get to BASIC using the "G D000" command. This offers the ability to play with BASIC or machine language without swapping EPROMs.

ASSIST09
>G D000
6809 EXTENDED BASIC
(C) 1982 BY MICROSOFT

OK
10 FOR I = 1 TO 10
20 PRINT I,
30 NEXT I
RUN
 1               2               3               4               5
 6               7               8               9               10
OK

I have built up a second board and am just waiting to receive a second 68B09 chip to complete it. I have a few programming projects in mind to work on, and some code (like a small C compiler) that I want to look at.

If you want to give this a design a try, I encourage you to do so. Feel free to use my PCB design files if you wish, or just breadboard it up.

References


  1. Grant's 6-chip 6809 Computer: http://searle.hostei.com/grant/6809/Simple6809.html
  2. My git code with firmware and other software: https://github.com/jefftranter/6809/tree/master/sbc
  3. EasyEDA project: https://easyeda.com/tranter/6809-Single-Board-Computer
  4. AS9 assembler: http://home.hccnet.nl/a.w.m.van.der.horst/m6809.html

Tuesday, January 22, 2019

Hugo Award Winner: The Wanderer, by Fritz Leiber


Winner of the Hugo for best novel in 1965, this is a story about a mysterious moon-like object that encounters the Earth and causes major destruction. I found the novel rough going -- it has a style with more than ten sub-plots occurring simultaneously, and switching between them very quickly, almost every paragraph. The many different characters in different locations were hard to follow. I didn't really buy into the story until close to the end where I found it more interesting, but much like novels by Arthur C. Clarke, it never fully explains what was happening. It has some in-jokes that give nods to other science fiction stories and authors, and pokes fun at a group of flying saucer enthusiasts, but I would not describe it as a humorous novel.

I had similar feelings about his novel "The Big Time", so I won't be adding Leiber to my list of favourite SF authors.

Wednesday, January 2, 2019

Hugo Winner Book Review: Way Station by Clifford D. Simak



Originally published as Here Gather the Stars, this novel won the Hugo for best novel in 1964.

It starts with the premise of a man that appears not to age, a rather common plot in science fiction, but soon expands into a much more complex and interesting story.

The plot and characterization were excellent, and the author has a very readable and relaxed style of writing, which sometimes became quite poetic.

Stylistically, I found it much like Asimov and Clarke, two of my favourite authors. Simak, in fact was a friend of Asimov and an influence on him.

I thoroughly enjoyed this book, was hooked after the first page, and read it over a weekend (the paperback was under 200 pages).

Monday, December 31, 2018

Hugo Winner Book Review: The Man in the High Castle by Philip K. Dick



Winner of the Hugo Award for best novel in 1963, this is an alternate history story in which Germany and Japan won the second world war.

An unusual novel, the plot concerns a number of characters whose lives intersect. Taking place in the 1960s, it paints a believable picture of a possible future. An interesting twist is the existence in the story of a fictional novel that depicts a world where Germany and Japan lost the war.

It has an number of unusual and unexpected plot twists, but no satisfying ending.

Readers may be more familiar with the author's novel do Androids Dream of Electric Sheep? which was made into the film Blade Runner.

Saturday, December 29, 2018

Hugo Winner Book Review: Dune by Frank Herbert



This novel won the Hugo award for best novel in 1966 and has been called the world's best-selling science fiction novel.

A sweeping novel, Herbert invented an entire universe with depth and detail like few other novels. It is alien, yet strangely familiar and could have taken place in another universe, or maybe in ours some time in the past or the distant future.

It spawned a series of novels. I first first read it in the 1970s, and remember seeing the spectacular failure of the 1984 film version by David Lynch.

I recall trying to read at least one of the sequels and was not able to finish it. Maybe I will give make another attempt.

The novel held up well on re-reading and, while long, is definitely a must-read for science fiction fans.

Saturday, December 8, 2018

Hugo Winner Book Review: Stranger in a Strange Land by Robert A. Heinlein



This is another Hugo award winner by Heinlein (who won the award for best novel six times, more than any other author). Written in 1961, it won the award for 1962.

The inspiration for the book was said to come from an offhand comment Heinlein made in a speech (and later in one of his books) about the fact that no one ever wrote a book about a Martian named Smith.

Other than the premise of a human raised on Mars, the book is not heavy science fiction. The book was incredibly popular, becoming the first science fiction novel to make the New York Times best-seller list and had sold 5 million copies by 1997 and is still in print.

It's depiction of free love and commune living made the book controversial. The beliefs and politics in the book were substantially different from those in his previous novels. Friends of Heinlein have remarked that it reflected turning point in his personal beliefs from conservative to liberal values, which apparently also coincided with his marriage to his third wife. Heinlein claimed that he had planned and worked out the novel for years, but had to wait until society was ready to accept it. It was certainly in line with many of the societal changes that happened in the 1960s.

The book was even responsible for adding a new word, "grok", to the English language (and is recognized in the Oxford English Dictionary).

I've read the novel several times in the past, and enjoyed reading it again. I don't personally agree with many of the ideas in the story, but the goal of the author was to make the reader think and questions their values, and I fee that he succeeded.

I would rate this as the peak of Heinlein's career. Some of his later novels seemed to try to a similar approach but in my opinion came across as just trying to shock the reader. Overall this is an ideal novel for the non-science fiction reader.

Thursday, November 29, 2018

Hugo Winner Book Review: A Canticle for Leibowitz by Walter Miller



The winner of the Hugo award for best novel of 1961 (the year I was born), I found this an interesting novel that is hard to categorize. Is it post apocalyptic science fiction? Black comedy? Does it make a statement about where the world may have been headed during the cold war (and maybe in the future)? Is it for or against religion?

Written in three parts, each separated by several hundred years but taking place in the same location, it is a long and sweeping novel. I'll need some time to absorb it.

Recommended, even for non-fans of science fiction. But be prepared to look up some Latin words and phrases.