BBC Micro 6809 2nd proc

From: Graham Toal <>
Date: Mon Sep 1 18:10:00 2003

I mentioned some time ago that I'd once built a second processor for
the BBC micro using a 6809.

I found it again recently and here's a photo...

You can see the Tube (furthest), CPU (next to it), boot rom
(left of the CPU), 64K DRAM, and two custom chips; one is an
8-bit counter for dynamic ram refresh, and a PLA for address
decoding. I forget what the other small TTL chip did; it may
have been a couple of inverters to create a signal delay?

I found this today which I think is the logic table for
the dynamic refresh and address decode PLA:

  Ras' = (Eclk + Qclk)'
  RomCS = A15.A14.A13.A12.A11.A10
  TubeCS = A15.A14.A13.A12.A11.A10'
  Cas = Q.(RomCS' + TubeCS')'
  Count' = Q.(RomCS' + TubeCS')
  TW' = E' + R/NW
  TR' = E' + R/NW'

IN A10, A11, A12, A13, A14, A15, Eclk, Qclk, R/W'
X X X X X X X X 1 0 0 1 0 0 0 0
X X X X X X X X 0 0 0 0 1 0 0 0
X X X X X X 0 X X 0 0 1 1 0 0 0
X X X X X X 0 X 0 0 0 0 0 0 0 0
X 1 1 1 1 1 X 1 X 1 0 0 0 0 0 0
X X X X X X 0 0 X 0 1 0 0 0 0 0
1 1 1 1 1 1 X X X 0 0 0 0 0 1 0
0 1 1 1 1 1 X X X 0 0 0 0 1 0 0
X X X X X 0 X 1 X 0 0 0 0 0 0 1
X X X X 0 X X 1 X 0 0 0 0 0 0 1
X X X 0 X X X 1 X 0 0 0 0 0 0 1
X X 0 X X X X 1 X 0 0 0 0 0 0 1
X 0 X X X X X 1 X 0 0 0 0 0 0 1
OUT Count', RAS', TW', TR', TubeCS, RomCS, CAS

   Ras' use as is.
   Cas invert with 30ns <= delay <= 60ns
   RomCS invert
   TubeCS invert
   Count' feed directly into counter, counter clocks on falling edge
   TR' use as is
   TW' use as is

I also found an HP Plotfile which *may* be the layout of this
chip that I'd love to see again - if anyone has a utility to
convert HP plotter codes into something more readable that they
could run this through in a few minutes (don't put a lot of
effort into it, I can write my own utility if I need to) I'ld
love to see what it looks like again...:

The chip was laid out in my own layout language called the
"Tiled Orthogonal Abutment Language" ;-) - it was basically a
crude tiling system with no overlap, pretty much like the
way the very first release of M$ Windows worked:

The two empty sockets originally contained 2 32K static
rams with battery-backup built-in, instead of the 64K SIL,
eprom, and counter. Unfortunately you had to pre-load it
with boot rom contents on another system then transfer
the ram without the battery falling off :-) (glued on,
kinda hacky!) I prototyped it with the static ram and
then got it working with dynamic ram when the chips were
returned from fab.

The custom chips weren't strictly necessary; I was working in
the VLSI CAD group and they needed some test chips when trialling
a new production line, so all the programmers got the chance to
design a chip if they wanted to. I took the chance to do these
for the 6809 as I'ld always liked that CPU in preference to
the 6502 in the BBC systems. I think if I had needed to I could
have used off the shelf chips that would have done the same

Anyway it was a nice small & cheap system to build in either
incarnation; I was disappointed that Acorn didn't pick it up.
(The primary reason being that Roger was a speed freak and
that the 6809 was obviously not going to be pushed as far as
the 6502 was being improved)

I also wrote a compiler for it because I had no luck at all getting
the only company I could find that wrote a C compiler (Introl)
to reply to my letters (
asking about the possibility of bundling it with our processor,
although they were quick enough to send brochures for sales of
a single unit when they thought I was an end-user at first.

My compiler is here if you're interested; it was no great shakes
but it worked for me...
- and as a result of the Edinburgh history project resurrecting
Imp, I've been able to get it running again, with the intention
of perhaps writing some Vectrex games with it... (You can see
the output of the compiler in this article: )

An early (unfinished) source of my boot rom (I lost the
final one) is here:
- I guess the final working binary is still in the eprom - it
does still boot up!

Received on Mon Sep 01 2003 - 18:10:00 BST

This archive was generated by hypermail 2.3.0 : Fri Oct 10 2014 - 23:36:25 BST