RC2014 Module Template

One of the things I am keen to promote about the RC2014 is that designing your own modules is very simple and straightforward.  The standard bus layout gives access to all of the basic signals that you are likely to need and the enhanced, or v2.0 layout builds on this with access to extra lines.  PCBs can, of course, be whatever shape and size you want, but you may have noticed that since around April 2016 I have settled on a standard shape for all new modules.

In this post, I want to discuss the past, present and future of the RC2014 bus, the physical modules, and what you might want to bare in mind when designing your own modules.

rc2014-v2-0-pcb-layout-png

 

Mechanical Layout

Firstly, to dispel a few myths about the shape of this; It was not designed to mimic an SD Card, a New Document icon or even an Apple II expansion card.  The shape was actually inspired by the Hollerith, or IBM punched cards with the cut off corner being an easy way to identify which end Pin 1 is.

The default size, 99.1mm x 49.9mm was chosen to fit within a standard 10cm x 5cm PCB manufacturing size, whilst also being within the 100mm limit of the free Eagle licence.  (Personally, I use and recommend KiCad, which does not have such limitations).

A drawback of the length is that there is only room for a 39 pin header.  To comfortable fit a standard 40 pin header it would need to be 104mm.  Therefore, the length is nominal and can be adjusted, either longer to accommodate the extra pin, or shorter to reduce PCB cost if necessary.

Height is also nominal – although a suggested ‘low profile’ height of 38.1mm could be used, which will allow for a small angled cut off to indicate pin 1 and also leave room for the mounting hole.

The 45° corner cut off not only signifies the orientation of the module, but would allow for a case to be designed to take advantage of this.

The mounting hole can also be used in case design to anchor all modules in place if necessary.

A KiCad template can be downloaded here (delete the .txt extension and rename it according to your KiCad project)

 

Bus layout

When the idea of the RC2014 was conceived, the goal was to get a Z80 based computer running on a backplane as simply as possible.  Some signals that were not required in the basic design, such as BUSRQ, were not bought out on to the backplane and were simply terminated on the CPU module.  As the RC2014 has developed, however, some of these signals are needed to support more advanced modules such as the SD Memory Dump Module.

The challenge has been to expand the bus to allow for this, whilst keeping things compatible with older modules and backplanes.  The solution is to add an ‘enhanced bus’ – a partial secondary line of pins above the original (on the module) and to the left of the original (on the backplane).  Standard right-angle header pins can be used for the original parts and double right-angle header pins used where the enhanced bus is needed.

Standard Bus

The original RC2014 only needed 34 pins to operate, with an extra 2 if the serial module is to talk to other modules.  This leaves 4 pins of the 40 pin header which users are free to use for whatever they want – however, be aware that using pin 40 will take the module over 100mm (see mechanical layout above)

Pin  Label Description   Note
 1-16  A15 – A0  Address lines for up to 64k of addressable memory
 17 Gnd 0v power supply
18 5v 5v power supply
19 M1 M1 control line from CPU Active Low
20 Reset Reset line for CPU and optionally other modules Active Low
21 Clock Main CPU clock signal and optionally other modules
22 INT Interupt Active Low
23 MREQ Memory Request Active Low
24 WR Write Active Low
25 Rd Read Active Low
26 IORQ I/O Request Active Low
27 – 34 D0 -D7 8 data lines
35 Tx Serial transmit
36 Rx Serial receive
37 – 39 USR1-3 3 spare pins for user functions
40 USR4 4th spare pin. Suggest it is not used Avoid

 

Enhanced Bus

The enhanced, or v2.0 bus, adds to the standard bus to allow for backwards compatibility whilst giving access to other control lines not available on the original bus.  This is intended to be an optional bus, only used if it is required.  However, if it is used, the 10 pins in the center should be the minimum.  Having additional clock, reset, Tx and Rx lines opens the RC2014 up to more advanced peripherals and the extra 8 data lines would be required if a 16 bit CPU was used.

Pin  Label Description   Note
 1-16  Not used
 17 Gnd 0v power supply
18 5v 5v power supply
19 RFSH M1 control line from CPU Active Low
20 Reset2/Page Secondary reset or page line for other modules Active Low
21 Clock2 Secondary clock line for other modules
22 BUSACK Bus Acknowledge Active Low
23 HALT Halt Active Low
24 BUSRQ Bus Request Active Low
25 WAIT Wait Active Low
26 NMI Non-maskable Interupt Active Low
27 – 34 D8 -D15 Additional 8 data lines (for 16bit CPU)
35 Tx2 Secondary serial transmit
36 Rx2 Secondary serial receive
37 – 39 USR5-7 3 spare pins for user functions
40 USR8 4th spare pin. Suggest it is not used Avoid

 

Making your own modules – Designed for RC2014

If you wish to design your own modules, you are, of course, free to use whatever shape, size or pin arrangement you wish.  However, keeping to the above guidelines should give your modules compatibility with other RC2014 modules.  If your module may be of use to other RC2014 owners, please consider sharing your design or selling them yourself.  I’m happy to help you with this and to spread the word.  Note that “RC2014” is a registered trademark, so you are not allowed to call your module “RC2014 [thingy] Module” or use the RC2014 logo.  However, feel free to mark your modules as “Designed for RC2014”

If you need clarification on anything here, please feel free to contact me directly using the Contact Me link or start a thread on the RC2014-Z80 Google Group.

Accessing the BUSRQ and BUSACK Pins on CPU 1.0 Modules

If you have a v1.0 CPU Module and wish to use the SD Memory Dump Module, you will need access to the BUSRQ and BUSACK pins.

BUSRQ is pin 25 on the Z80

BUSACK is pin 23 on the Z80

The good news is that the BUSACK pin is not connected to anything else and is fairly easy to solder a connector to on the PCB.

BUSRQ, sadly, is not so easy.  The 5v supply from the backplane goes via pin 25 and off to 3 other pins.  You have got a couple of options from here; Modify the PCB or solder to the CPU directly.

To modify the PCB you will need to cut 3 tracks and solder 3 wires before you can connect to pin 25.  See images below;

cpu1-0-module

cpu1-0-module-close-up

Luckily, the tracks shown in green are on the back of the PCB, so aren’t too hard to get to with a sharp knife.  You’ll need to cut each of the connections around pin 25 and then solder links to rejoin pin 11, 17 and 24 to 5v

cpu-module-1-0-after-mod

Good luck!

Retro Challenge 10/2016 – Still a work in progress

So, who remembers my entry for Retro Challenge in January?  It was quite devoid of effort and results I think you’ll agree.

Well, this time around, I’ve taken that theme and pushed it even further!  Even less effort and much less result.

Since January, I have had a few opportunities to carry on with the ZX81 Module.  Because I wanted this to be a Retro Challenge project, I deliberately avoided doing any work on it, so I could save it all for October.  Well, October started and I was overwhelmed with non-Retro Challenge stuff.  But after a couple of weeks, I had a spare afternoon, and decided to dedicate this to the ZX81 Module!

So, I dug out the PCBs I had manufactured in January and fired up the soldering iron;

retrochallenge10-2016_1

Time to wrack my brains and work out what my plans had been 9 months earlier.  I had failed to put any component values on the PCB, or even my Kicad schematics, so had to rifle through original ZX81 schematics to work out what these should be.

Now I knew what components I needed, it quickly dawned on me that I didn’t have very many of these at all.  This didn’t deter me though.  I fitted everything I had; IC socket, pin headers, some resistors and some transistors that may or may not be compatible;

retrochallenge10-2016_2

And that’s about it.  I have ordered the rest of the parts now, but not had an opportunity to fit them.  yet.

One thing I have learned from this experience though, is that if I get any opportunity or urge to work on this, then I will seize it.  Not wait until the next Retro Challenge.  If I’d done work on this months ago when I had the chance, then this would more likely be a trouble shooting / tweaking / developing challenge.

One other good thing that has come out of this though, is that when I started this in January, I had a few design changes or additions required for the RC2014 for it to work.  The Backplane 8 has the ability to add resistors between the CPU and the RAM.  The Universal Micro Keyboard has the right connections to work with a real ZX81 or this ZX81 Module (including diodes).  The CPU Module also now has BUSRQ, WAIT, NMI and WAIT pins broken out which is required for this.  These changes should all make things much easier.

Despite my poor efforts this time around, I have thoroughly enjoyed seeing what everybody else has achieved with their Retro Challenge.  Good work everybody else!

Use Pocket C.H.I.P as RC2014 Terminal

If you don’t know about Pocket C.H.I.P, then firstly, where have you been? And secondly, check out getchip.com

Assuming you have one, and assuming you have an RC2014, I’m sure you’re wanting to connect them together. Well, good news… it’s easy!


To begin with, open the Terminal and download Screen;

sudo apt-get install screen   (Default password is chip)
The biggest “gotcha” is that the internal serial port service needs to be turned off, otherwise it just spews stuff.  To do this, 

sudo systemctl stop serial-getty@ttyS0.service

(Have a look at this article on more info about that) 
Then start screen

sudo screen /dev/ttyS0 115200

The connectors on the top of the Pocket C.H.I.P are those nice offset ones that will take a strip of straight header pins and hold it there (Thanks NextCo!), so plug in a 4 way header to the very right, and connect Ground, UART:TX, UART:RX to the RC2014.

And that’s it! You’re good to go! 

Retro Challenge 2016 – My Dog Ate My Homework

So, all the way back in deepest darkest December, I announced I would enter the Retro Challenge 2016 competition that ran throughout January.  Those of you that followed by blog or Twitter account when I did this in 2014 will know that I blogged and Tweeted relentlessly for the whole month, but, this time around, almost nothing.  Obviously, I’m keeping some secret about an amazing breakthrough or something, right?  Well, truth is, I’ve done almost nothing.

Things started well, and on 1st January, I designed a new backplane for the RC2014.  Although I hadn’t studied the circuit diagrams for the ZX81, Jupiter Ace or ZX Spectrum yet, I knew that there were resistiors between the Z80 CPU and other devices.  The stripboard backplane I’d been using had served me well, but it was time to progress to a better solution, and one that could be adapted better to my needs.  Knowing that PCB delivery times could be against me, I thought it best to crack on and get this  ordered.

Screenshot from 2016-01-31 16:01:00

The basic circuit is very very simple – however, I wanted to get this just right, not only for Retro Challenge 2016, but for other possible RC2014 uses.  Essentially, there are 8 40 way connectors that are linked straight through – however, the data lines and address lines for the leftmost 2 connectors and rightmost 2 connectors are separated by a pair of pads.  These can either be shorted together for up to 8 commoned connectors, or have resistors soldered across them.  I also added a power connector and the option of either running 5v directly in to the board, or regulating a higher voltage down via a LM7805.

(more…)