Category Archives: Retro Tech

Interak Compact Flash adapter – Part 1.

I have been making good progress with the Interak-1 and having a lot of fun on the way. I have made an adapter so that I can use a modern USB keyboard. I completed the VDU2K video board that was given to me with the machine so now I want to improve its storage.

My machine came with a twin port cassette card and a floppy disk controller.

I don’t think cassette is a goer these days. It was OK back in the day for home use but this machine deserves better. The floppy disk controller will be useful but I’m rather taken by Scott Baker‘s Compact Flash adapter for Spencer Owen’s RC2014 Z80 retro machine.

Spencer is an old friend of mine and his RC2014 has become very popular, with many kits being sold through his Tindie store. As with other good ideas, RC2014 has been a focal point for other people’s efforts and Scott Baker has contributed some great projects that build on the RC2014 is very cool ways. The Compact Flash adapter is one such project.

Scott has generously put his designs out there and made his PCB designs available through OSHpark.

The bits on the bus (go up and down)

Both the Interak-1 and the RC2014 are Z80, slot based machines with easy access to the bus. The first thing to sort out is to get the buses to match.

I was given two blank prototype cards with the Interak and so one of those will do fine.

There is a possibility that I will want to add more than one RC2014 board to my machine and so I didn’t want to just solder one of Scott’s PCBs to the proto card. At this point I bought an RC2014 5-slot backplane and planned to fit that to the proto board and link between the to buses.

In this photo you can see that I have soldered a pack of short links from the Interak bus connector. These will go on to have their loose ends swapped about and fitted into the RC2014 bus.

Here you see that I have pushed the flying leads into one of the backplane’s slots. At this point I was just setting things up and testing the connections.

OK in principle but I need A bit of Vero

The problem with the approach shown above is that the backplane is just a bit too big. I could cut the top and bottom off it, there isn’t anything important there, but that would spoil it. I’ll keep it for later. Maybe I’ll build an RC2014 ad I’ll need it then.

As there isn’t anything too complicated about the backplane, I substituted a piece of Vero stripboard instead.

That fitted much better.

The CF card adapter.

As I mentioned above, Scott Baker has published his PCB design on OSHpark for anyone to order. OSHpark has a minimum order quantity of three and I only wanted one but, someone else only wanted one it seems as a blank PCB appeared on ebay. Yea, here we go.

The circuit for this card is very simple and it would be very easy to lay it out on the proto card except for the fact that CF card sockets have tiny connectors and really don’t work with 0.1″, through-hole boards. A very good reason to use the RC2014 card.

Here we have the populated CF card adapter plugged into the stripboard backplane.

Next time I’ll try it out.



Interak VDU2K progress.

In my previous post I talked about a second VDU card that came with my Interak-1. This is a VDU2K and supports 64×25 characters in its 2K of video memory.

When I finished the card and plugged it in, it mostly worked but there were problems.

Clearly the monitor ROM was expecting half the resolution and put the prompt half way up the screen but it wasn’t clear whether or not there were other problems. I needed to try and clarify is there was a hardware issue too.

To cut a long story short, I have blown a ROM that tries to clear the screen and then output every character in the character set.

The photo shows that the character set looks fine but clearing the screen has failed. This particular photo is misleading as it shows the screen filled with a single character. That is unusual. I usually see a repeated pattern of two or three characters. I’ve tried a few versions of this test. I’ve put the character set in various places but it makes no difference. The result is always that the screen doesn’t clear properly but the character set is fine.

I think the problem is somewhere in the circuit that looks after memory reads.

Outputting the character set.

; Now. Just dump out the character set to the screen.
   ld		hl, SCR_START;
   ld 		b, 0x00
   ld		a, 0x00

   ld		(hl), a
   inc		hl
   inc		a
   djnz	loop

When I output a character set, I’m getting the CPU to write ascending values to successive memory locations. Just writes.

start:   ld		hl, SCR_START
         ld		de, SCR_START + 1
         ld		bc, SCR_WIDTH * SCR_HEIGHT - 1
         ld		(hl), 0x00

When I clear the screen I’m writing a 0 to the start of memory and then using the Z80 instruction LDIR to copy that throughout the scree’s memory. In order to do that, the Z80 must read the first location and copy it to the second. It then reads the second location and copies it to the third and so on.

The LDIR has to read memory and I think that’s the bit that’s going wrong.

Further reading.

When my friend Dave got this card, it seems that not all of the documentation was available. However, thanks to a chance discovery, I had been in contact with Dave Parkins of Greenbank Electronic the original designer and he generously found and emailed the design notes for the card!

As I was reading through these notes I came across this paragraph:-

In a current Interak 1 disk system all of the 64k of RAM should be enabled. All elements of the two DIL switches on the DRM-64 card should therefore be OFF.

My RAM card had been set to just use 48K. I switched in the remaining 16K and Bingo! we have a clear screen.

The new card seems to need the RAM beneath its own. I think it has something to do with the way the Interak avoid snow on the screen. However, we are up and running now.

As you can imagine, the monitor ROM doesn’t know about the extra screen real estate but it does work and so does the keyboard.

I was recently given some other binaries to try, including a monitor that can cope with 64 columns but it needs some attention as it was intended to run under CPM from disk.

Progress! I’m rather chuffed.

Interak video card upgrade.

161105-img_20161105_145915When I received the Interak-1 it had two video cards. One (VDU-K) was finished and working. The other had all of the passive components fitted – resistors, capacitors etc – but the semiconductors had not been added.

I wasn’t sure why there was the second card at first as they both looked the same but on closer inspection the second is a VDU-2K and at the back of one of my manuals is a preliminary description of the card. I think it was pre-release when the previous owner got it as the documentation isn’t as thorough as the other manuals but it appears that this card is 64 characters wide rather than the 32 characters of the VDU-K.

I went through the parts list and bought the missing ICs, fitted them are here we are.

There are a couple of problems. Firstly, in 64 column mode, the line input is half way up the screen. Secondly, whatever is typed in on the keyboard is misunderstood and a “>” character is printed.

The first problem could be just the the ROMS don’t know how to drive the new card and that I need new ROMS.

The second problem is more interesting. I don’t know yet why the video card is affecting the keyboard input, I have a keyboard input card in a separate slot so it’s all a bit odd.

More news to follow.

Interak keyboard – proof of the pudding

This is just a quick post.

I’ve spent some of the afternoon in a happy state re-living the 1980’s by typing in a hex dump from a magazine and spotting my mistyping.

161023-img_20161023_201745The magazine in question was Interaktion – newsleter No. 2 from the Interak user group and as you can see, the program is a version breakout.

You can see in the photo that I have added the USB serial mod I hinted at in the last post. This enables me to use a PC to squirt data through a virtual serial port and have it appear at the Interak as though it had been typed in.

Thanks go to Alan Paton at for putting the newsletters onto the ‘net.


Retrochallenge 2016/2 – Interak keyboard wrap-up

160915-img_20160915_204655In my last two posts I wrote about how I made an adapter for my 1980’s Interak-1 computer so that it could make use of USB keyboards as the original Alphameric keyboard had failed.

Those posts were a bit rushed and the adapter was still a work in progress. It’s finished now and so in this post I’ll try to tell the full story and in more detail so if anyone else has the need for a USB keyboard to 7-bit parallel ASCII keyboard they will have something to follow.

The problem.

The Interak comes from an era before USB became ubiquitous, when a parallel cable running from a semi-intelligent keyboard to the main CPU was commonplace.

161005-img_20161005_192546With these keyboards, when a key is pressed, the binary representation of the key, in ASCII, is presented on seven data lines. An eighth bit called Strobe is then pulsed high (5V) and then low (0V) to indicate to the CPU that a character is ready.

Sadly, the keyboard that came with my Interak had developed a fault and several columns of keys didn’t work at all. I tested the socketed chips with my IC tester but they seemed OK and so I suspected the micro-controller and I didn’t want to go too far down that road and so I decided to do away with the  original keyboard.

What to do now?

I looked around for a while and found a number of solutions that will use PC keyboards with the PC-mini-DIN connector but they haven’t been mainstream for over ten years and I didn’t want to end up with the same problem later.

USB is the way to go.

When USB is the solution… Crikey.

161001-img_20161001_181323In all honesty, I don’t know a great deal about USB and the though of writing a USB host to interface with a keyboard seems like no kind of fun (Retrochallenge is meant to be fun) and so I looked around for solutions and found HobbyTronics who produce a small USB host board that just needs 5v and will produce a serial output.

Although a serial stream isn’t what’s needed, it is easy to pipe it into an Arduino and get that to output the ASCII in parallel on its IO pins.

161001-img_20161001_205049I made a prototype using an Arduino UNO connected to the Hobbytronics board.

To make debugging easier I used a software serial library to keep the hardware serial port free. More on that later.

The real thing.

The Arduino UNO worked very well. Well enough to convince me to use a small Arduino Pro Mini and make the thing real.

The Interak uses a 15 way D type on the front for the keyboard connector and so I soldered the Pro Mini as close as I could to the connector and the the three wires to the USB board.

161003-img_20161003_210244Next, get it into a small case… 161005-img_20161005_200524

Proof if proof were needed.

161005-img_20161005_200700So there you go. My beloved Interak has a new lease of life.

One more thing…

There is a nice little addition waiting in the wings here. The Arduino has another serial port, the hardware one and so It would be quite easy to add the standard USB to serial board and then the Interak’s keyboard port would appear to my PC as a serial port and I could squirt data into from a terminal emulator. There would be no handshaking and so I’d have to artificially drop the data rate with delays but it would work.

The code.

* Interak-1 USB keyboard adapter
* By Andy Collins.
* This code is free to use.
#include <SoftwareSerial.h>

#define CR 0x0d
#define LF 0x0a

SoftwareSerial mySerial(11, 12); // RX, TX

const int STROBE = 9;
const int D6 = 8;

int inByte = 0; // incoming serial byte
int lastInByte = 0;

void setup()
// Open the hardware serial port for debugging

// Start the SoftwareSerial port
DDRD = DDRD | B11111100; // Using d2-d7 as output. Saving d0-1 just in case.

pinMode(D6, OUTPUT);

digitalWrite(STROBE, LOW);

void loop() // run over and over
inByte = -1; // Nothing yet

if (mySerial.available()) // USB Keyboard
inByte =;
else if (Serial.available()) // USB Serial port
inByte =;

if(inByte != -1)

if( (inByte == LF) && (lastInByte == CR) )
PORTD = inByte << 2; // Shift left to avoid TX, RX;

// Catch the overflow.
digitalWrite(D6, inByte & 0x40);

// Bits set up. Now Strobe;
digitalWrite(STROBE, HIGH);
digitalWrite(STROBE, LOW);

lastInByte = inByte;



Retrochallenge 2016/2 – Oh-oh we’re half way there

161003-img_20161003_210244In my last post I started setting up my stall and wrote a simply Arduino sketch to read a character from the Hobbytronics USB keyboard adapter and squirt it to my PC.

My Interak-1 has a 15 way D-type connector for the keyboard as I’ve decided that my keyboard solution will plug into that rather than be buried inside the machine itself.

I have  also decided that the final project will live on an Arduino Pro mini as they are tiny and so the photo above shows the Arduino soldered onto a 15 way D-type plug linked to the USB keyboard PCB.

Cut to the chase.

161003-img_20161003_210058This photo shows things are basically working! Happy Happy Joy Joy etc.

There is some boxing up to be done and some writing up to be do so that if there is another Interak-1 user out there who needs a keyboard, they can see what I’ve done.

It’s not so daft really as plenty of old machines used 7 bit parallel ASCII keyboards and plenty of those will have been lost.

More to follow.


Retrochallenge 2016/2 – Interak keyboard

So RC is upon us and I have decided to replace the failed keyboard on my newly acquired Interak-1 with a modern USB item.

The Interak keyboard uses a 7 bit parallel interface to present an ASCII character to machine itself with a strobe line to say that the data is ready. It’s a bit much to ask the Interak to cope with USB directly and it’s a bit much for me to learn enough about USB to be able to program a Z80 to cope in the time allowed and I don’t want to.

161001-img_20161001_181323Enter HobbyTronics who produce a small USB host board that just needs 5v and a USB keyboard and will produce a serial output.

The serial output can’t go straight in to the Interak either but serial to parallel isn’t too bad.

Enter Arduino.

161001-img_20161001_205049So, here we have an Arduino UNO with a prototype shield and a tiny USB keyboard. At the moment it’s just reading the serial input from the keyboard adapter and squirting it down the serial port to the PC but it’s a start.161001-img_20161001_205115 Next is to set up some pins for the parallel interface.

Keep watching (if you want).

Retrochallenge 2016/2 – Throwing my hat into the ring.

It’s Retrochallenge time again and how quickly it comes around and how ill-prepared I am.

Recent competitions have seen great entries by talented retro-folks the world over whereas my contributions have been less glorious but filled with enthusiastic zeal.

This time around will be no different 🙂

I’m not sure what I will do to be honest. I may take a broken retro system down from the “shelf of good intentions” and try to fix it. I may try and interface a ZX printer to something non-Sinclair or perhaps get the Tandy 4 colo(u)r plotter talking to my PDP-11. Who can say?

Whatever happens there will be joy and frustration but mostly joy.

In the words of poppy-funster “Jem”

It’s just a ride, it’s just a ride
No need to run, no need to hide

Though there may be a need to solder…

See you on the other side.


Interak 1

160917-img_20160917_101041Back in the day, manufacturers of small computer were legion. There were myriad little companies trying their hand at getting into micros. If you look back through the pages of Electronic Today International, Practical Wireless etc. you will find adverts for these small companies selling their kits, PCB etc.

It was usual in those pre-web days to send off a “Stamped-Addressed-Envelope” (SAE) along with some unused postage stamps and in due course a catalogue would arrive  detailing the product available.

On such company was Greenbank Electronics of Merseyside here in the UK. Their machine was the Interak 1, a Z80 based computer composed of a 19″ rack with a backplane and a collection of cards that could be purchased individually as funds allowed.

Back then there were many companies vying for my money and whilst I got as far as sending off the stamps to Greenbank and getting the Interak catalogue, I got no further.

However, as you can see above, thanks to the generosity of a friend of mine, I now have an Interak1 and I am very happy about it.


New arrival – Sharp MZ-80K

160802-IMG_20160802_202212Like so many of my machines, the Sharp MZ-80K was out of my reach the first time round and by the time I could have afforded it, I was on to something else.

This example was passed on to me recently and had previously been used for developing a pharmacy system years ago.

The years have not been too kind to this one and there is some surface rust but it’s not too bad cosmetically.

160805-IMG_20160805_185525It’s not without problems however. When I first gave it some power I saw the screen on the right. As well as the general mush there are vertical lines running up through the characters. That made me suspect the character generator ROM and sure enough, it has a broken pin.

160805-IMG_20160805_203905 I snipped a pin from a surplus IC and solders that in place. The vertical line has gone and I’m just left with the mush.

MZ-80KSignalsDiagnostics continue.

Fortunately I have a copy of the service manual and on page 11 it shows a series of expected ‘scope traces. At pin 8 of IC7 there should be an 8Mhz wave. Sadly, I see about 760Hz. Way off.

MZ-80KClockCircuitIt doesn’t seem possible as the video is rock solid and all of the video signals are derived from that 8Mhz clock signal. I’ve checked several times and I always get the same result. I was suspecting the crystal, the 74LS93 or the 74LS04 so I replaced all three but to no avail.