|
The BBC Microcomputer
System (BBC Micro) |
BBC Micro Matchbox Co-Processor
The Tube Interface
The
Tube
is an expansion interface built into the BBC Micro which was
designed to enable the computer to communicate with a second
processor. The BBC Micro host processor would then handle the
Inputs and Outputs (I/O) while the second processor took over
program execution. Available Second Processors included a higher
speed
MOS 6502 running at 3MHz, a
Z80 running
at 6MHz, a
NS32016 running at 6MHz as well as an ARM Evaluation System
using an
ARM1 processor running at 8MHz.
The Second Processors, and other options like the
Teletext Adapter and
Prestel Adapter, were all built into wedge shaped
enclosures, often called "cheese wedges", which sat side-by-side
with the BBC Micro as shown in the photo of the Teletext adapter
above, connected via a ribbon cable to the Micro's Tube
interface port. The photo on the right is a Z80 Second
Processor, the picture was downloaded from
Chris's Acorns.
I have an original Z80 Second Processor,
complete with original documentation and software, including
CP/M.
As the photos show, the footprint of the original
co-processor modules is pretty large, you would likely run out
of desk space before you ran out of cheese wedges if you had the
full set!
The Matchbox Co-Processor
Sometime around the middle of 2015, I started following a
discussion on the
stardot
forum, a UK discussion board "for users of Acorn computers and
emulators", entitled "Matchbox
sized 6502 / Z80 / 6809 Co Pro".
The original thread now runs to some 35 pages and has
spawned additional threads, making it somewhat difficult to get
a good overview of the final product "at-a-glance". Having grown
tired of flicking back and forth between different pages and
threads, I decided to develop this page to condense the
information that I needed into a single page, primarily for my
own use, but I have posted in here in case others find it useful
and/or interesting. Any errors or omissions on this page are all
mine - the primary reference and the most likely source of
accurate information is the stardot thread(s).
The text here is a very small extract from the information
available on the forum and does not do justice to the amount of
work that has gone into this from various contributors - the
thread makes very interesting reading and is well worth a look.
The thread
was originated by hoglet
(Dave) and started out as "Matchbox sized
6502 Co Processor", when the concept was
for the implementation of a 6502 co-pro using a
GOP XC3S200 made by oho-elektronik for his own BBC
Micro, and potentially, his
Acorn
Atom.
The GOP_XC3S200 is a mini
FPGA module built using a
Xilinx
Spartan 3 XC3S200 FPGA. |
|
The
GOP_XC3S200 includes an
XCF01S In-System Programmable PROM for Configuration
of the FPGA, 4MBit SRAM, 49.152 MHz oscillator. LEDs and
switches, all built onto a small PCB that incorporates a
24-pin DIL for mounting on breadboard or a host PCB.
http://www.oho-elektronik.de/pics/UM_XC3S200.pdf |
|
Dave has made the
VHDL
code available on
his
repository on GitHub.
The project has also benefited from the work done by
others, including the
Commented
6502 Tube Client Code documented by J.G.Harston
hosted on his mdfs.net
site.
The thread also included input from
flynnjs (Jason) and made me aware of
the similar project that he was actively developing to
implement BBC Micro co-processors on the more powerful
Spartan 6 LX9 microboard. |
Dave built
a small host PCB to mount the GOP on and provide
termination for the Tube interface cable and connection
for his logic analyser to aid debugging. |
|
Within a
couple of days, the system was able to boot from the
Tube interface. . . . . |
|
And run
some software, including Level 9 Adventure gamess such
as Colossal Adventure, but some issues required further
work, including getting it to boot on a
BBC
Master and getting the Tube version of
Elite to run. |
|
Dave also
started to implement a Z80 Second Processor using the
T80 CPU from
opencores.
After lots of debugging and
helpful input from other contributors to the forum, the
Z80 co-pro was realised - seen here running the Z80
version of BBC BASIC. |
|
And, after
lots more work . . . . .
The Z80 co-pro running
the BBC Version of CP/M 2.2 !
The subject title
of the forum thread now changed to
Matchbox sized 6502 / Z80 Co Processor
|
|
And, not
content with that, Dave went on to get a
6809 Tube Client running, using
John
Kent's CPU09 Core.
And yes, the title of the
forum thread changed too -
Matchbox sized 6502 / Z80 / 6809 Co Pro
Around this time, Dave began to question the suitability
of the
Spartan 3 for implementing additional co-processor
cores and whether the hardware design that Jason was
planning might be a better solution. |
|
In response
to a question from Dave, Jason pointed to
an earlier forum thread from 2013 which had a photo
of the prototype board for the co-pro that he had been
working on, but never completed and the thread
ultimately petered out.
Jason commented that the
one pictured was based on a Spartan 3-200, although he
did have a version based on the LX9.
The
possibility of including an
80186 was then added to the mix. |
|
Dave
mentioned his aspiration to have a system with multiple
co-processors available, one of which could be switched
in/out as required.
Jason also took on board the
suggestion for an 80186 and solicited input for other
"nice to haves" for his co-processor board. After some
discussion about the suitability of the Altera Cyclone
IV DE0-nano, the idea was dropped (due to cost) and
Jason settled on the LX9 with a plan to modify his
prototype to include additional RAM for use with other
co-pros, leading to this modified design |
|
The
schematic for Jason's modified design, changes from V1
include :
S3-200 replaced with S6-LX9
External SRAM changed to 2x 16-bit x 512k DIP
switches to control which CPU is activated (6502, Z80
etc.) 8 LED status indicators
This design
was used to order a couple of prototype boards. |
|
Jason's
partially assembled prototype - missing the tube
connector and JTAG header at this point.
When
fully assembled, the board ran the 6502 and Z80
co-processor code at a comparable level to the Spartan 3
and Cyclone boards and was able to run the Tube version
of Elite, although the 6509 was not running yet, the
results gave Jason enough confidence to order a run of
"production" boards made. |
|
The thread was now a
mixture of technical discussion about implementing and
fixing various co-processors as well as a number of
requests for Jason's version of the co-pro when it
became available.
A new thread was started where anyone interested
could log a request for one of Jason's boards.
The boards were available in two versions : One with
only the LX9s 64kB of internal RAM (limited to 6502 and
Z80 processors) [£35], and One with 2MB of external
RAM (adding the ability to run 80186 or ARM) [£40] |
The boards
proved to be really popular and the initial run of
boards 40 were quickly spoken for and the supply of
boards exhausted within a few days.
The first run
of 40 boards, ready for assembly and already "sold out".
By the time that I saw how good this was going to
be, I put my name down for a prospective second run of
boards. (November 2014) |
|
Part of the
first batch of assembled boards ready for dispatch.
(December 2014)
A small number of the early
shipments had some stability issues, this was fixed by
adding a decoupling capacitor across each pair of supply
pins on the level shifter. (January 2015) |
|
Jason had spent a
lot of time & effort on the first batch and made it
known that there would be a significant delay before a
second batch would be produced.
Questions were
asked about whether the GOP_XC3S200 that Dave had used
in his design was a good alternative and Dave confirmed
that 6502, Z80 and 6808 co-processors were all running
happily, but the 80x86 was too big for the XC3S200.
However, the GOP solution has the advantage of being
more suitable for self assembly - not requiring the use
of additional surface mount components and just needing
an adapter board (shown above) for connection to the
Tube port.
In July, Jason announced that a second
batch was likely to happen, partially because of the
announcement of a 32xxx core on
OpenCores and by
November, an order for new PCBs had been placed. In
December, Jason announced that all of the new boards
would be fitted with the 2MB of external RAM and the new
price would be £50.00. |
|
|
|
|
The
"standard" connector will fit both B and Master, there's
just not enough space to home the whole thing under the
Master keyboard without seriously butchering the
plastic. Most people are using extension ribbon cable to
avoid doing so. Some people prefer a ribbon cable with
the same connector on both ends or maybe the use of a
IDC transition rather than a male to female extension. |
|
|
|
|
|
.
The VHDL was
|