Computers Overview
Commodore PET
Sinclair ZX80
Sinclair ZX81
BBC Micro
        Floppy Drives
        Matchbox Co-Pro
    Tips for the newbie
    Z80 2nd Processor
Commodore 64
Sinclair ZXSpectrum
Memotech MTX
Memotech CP/M
Tatung Einstein
Atari ST
Commodore Amiga
DEC 3000 AXP
Raspberry Pi



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.
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 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




mailto: Webmaster

 Terms & Conditions