Is my ROM blank?

I recently had a customer contact me to say his RC2014 kit was not working, and asked if the ROM had definitely been programmed. It is the first time I had been asked that, but despite sending out over 3000 ROMs so far without sending out a blank one yet, how could I be 100% sure that one hadn’t slipped through?

This question got me thinking. Obviously the easy answer is for the customer to put the ROM in an EPROM programmer and read it – but I don’t know if the customer has an EPROM programmer. Sending out a replacement ROM would normally be another option, but due to the Christmas shutdown, huge postal delays, and the customer being on a different continent, that wasn’t going to be a quick solution.

It turns out that there is a very simple way to prove the existence of something on the ROM. It won’t prove that the right image is on the ROM, or that there isn’t corruption on it, but it does answer the question of whether or not it has been programmed.

The theory is quite simple. Read the first byte of the ROM. A blank ROM will have 0xFF (0b11111111) in every location. The images for the RC2014 ROMs all start with either 0xF3 (0b11110011) or 0xC3 (0b10100011). So selecting address 0 should give either 11110011 or 10100011 on the datalines.

Thankfully, this is actually very simple in practice, and can be done with just 18 jumper cables! Firstly, remove all modules from the backplane except for the ROM Module. Set the three jumpers on the ROM Module to 0. To ground all the address lines, place a jumper cable from the Gnd pin on Slot 3 of the backplane to A0 on Slot 4. Then another from A0 on Slot 3 to A1 on Slot 4, and so on all the way up the address pins. RD and MREQ need to be held low too, so add a cable from Gnd on Slot 4 to MREQ on Slot 3, and from MREQ on Slot 4 to RD on Slot 3. Take a multimeter on its continuity setting and just confirm that A0-A15, MREQ and RD are all connected to ground.

Then swap your multimeter to DC voltage, connect power to the backplane, and read the voltages on D7 – D0. They should be a mixture of 0v and 5v that correlate to either 11110011 or 10100011. If they are all 5v, then it’s a pretty good assumption that the ROM has not been programmed!

Note that if you do not have jumper cables, then ordinary solid core wire can be used, or even humble paper clips! Alternatively, if you have a spare 40 way pin header, then soldering a wire across all the address lines to ground, and also connecting RD and MREQ to ground will also work.

This was written specifically for the RC2014 Classic, however the same applies to the RC2014 Classic ][, the RC2014 Plus and the RC2014 Pro. The theory also applies to the RC2014 Mini, although you will have to get a bit more creative with the wiring :-)

CrayZee Eighty

Ever wished that you had a Cray 1 Supercomputer? Ever wondered if an RC2014 backplane could wrap around a cylinder? Ever thought about how many retweets a Z80 drawing a Mandelbrot fractal could get? Ever had an idea that’s so daft, the only way to exorcise it is to do it? If so, would you like to Seymore…

Like most ideas in Lockdown, things started with a throwaway comment on Twitter and quickly escalated to laser cutting a toilet roll. I blame Shirley Knott

So, as a practical joke, the homage to the powerful Cray 1, and also the less powerful Rolodex worked surprisingly well. This inevitably lead to the question of making it work for real

Taking some measurements from the toilet roll, I laser cut a simple jig to hold 12 40 pin sockets around 270 degrees, with the intention of soldering wire from pin to pin in situ. This quickly demonstrated that it just wasn’t practical to get the soldering iron in such a tight area.

Another jig was made to hold the sockets at an even distance, and use brass wire to connect them up, with the intention of bending them around afterwards. This also became quickly apparent that it wasn’t going to work.

Luckily OSHPark offer a flex PCB option. I’ve been aware of this for a while, and wanted to try it, but there hadn’t been anything suitable within the RC2014 ecosystem. (Well, there have been requests for a Floppy Module, but I don’t think anybody actually wants a module which is floppy!). At $10 per square inch, it isn’t cheap, but, after a bit of KiCad work, the smallest 12 slot RC2014 backplane was ordered.

Soldering through hole components on to flex PCB is not easy, and 480 solder joints generate a lot of heat which will warp the plastic if it is not done carefully in a controlled manner. The Flex PCB was designed to fit the existing jigs, and when soldered up, it fitted perfectly!

Using the jig dimensions, I was able to 3D print a couple of end caps which held the slots in place and made things much more solid. I filled it with a bunch of spare modules and tested out if the backplane itself worked…

Huston we have a problem! Nothing came up when I plugged in a FTDI cable :-(

A few hours were wasted going down different rabbit holes chasing too many red herrings. The modules I’d put together essentially made up a RC2014 Zed, and were picked from some of my non-current module archive. What I’d forgotten about is that old versions of RomWBW which are built for use with a DS1302 RTC Module will hang for about 2 minutes on startup if the RTC cannot be found. So, in fact, it was all working perfectly, I just had to wait a little while after plugging in!

A quick upgrade to RomWBW v3.0.1 overcomes this problem, and should have been done right at the start!

To make things more Cray-like, I redesigned the end caps to be open at the top and bottom, and extended the lower one to support a laser cut skirt. One day this will house an IDE hard drive, but for now, it’s just there to mimic the bench seat on the Cray 1

The irony is not lost on me that the Pi Zero, which is only used to generate HDMI from serial data, is several orders of magnitude more powerful than the Cray 1, which is, itself, way more powerful than the Z80 which is calling all the shots!

There are no plans to release this as a product at this stage. The price would be too high to justify for a kit which really is not very practical at all.