2015-03-02 The story behind the PlusDlite

Source: Facebook - part one - part two

Author: Ben Versteeg.

So what's behind the PlusDlite?

Well, it all started back in 2013 (a loooonnnnggg time ago).

Back than I was producing lot's of interfaces (just like now lol *smile-emoticon* ); see one of the photo's for my pcb stock back then.

The PlusDlite development was triggered by some thoughts I had about another interface I was producing: the DivIDE.
The DivIDE was becoming 'old', taking a lot of time to assemble, and using old parts. So I started to think about developing a DivIDE succesor: with one CPLD instead of the GAL chips, and SD card instead of Compact Flash.
But I was very reluctant to start this, as I did not have any experience with CPLD programming. I only used CPLD's on the K-Mouse Turbo interface from Velesoft, but I used his sourcefiles for that, with his permission.

But not long after I started to think about the DivIDE succesor, I discovered about the DivMMC interface from Mario Prato.
Instead of developing something similar myself, I contacted Mario and worked with him to bring the first version (v2013.1) of the DivMMC EnJOY! to life!
Here's the WoS thread about it:http://www.worldofspectrum.org/forums/showthread.php?t=44238

So there was no reason to work on my own CPLD development for that anymore.
But it was obvious that CPLD's had great advantage over older PLD solutions, like GAL chips, so I was still interested in that.
I was thinking what other interface would be interesting for a facelift / recreation with modern technology.

The Kempston Joystick interface I produce use one GAL22V10 chip.
As I can obtain these for half a Euro each, I didn't see much in replacing that with a much more expensive CPLD.
I still use that GAL chip for all Kempston Joystick implementations, for DivMMC EnJOY!, PlusDlite, etc. It's cheap, good and has some benefits over CPLD, like internal pull-ups on all I/O lines.

The next interface I thought of to develop a CPLD for, was the PlusD.
25 years ago I really enjoyed the MGT Disciple interface, and the PlusD is almost equal to that (although the Disciple is really much better looking!).
The PlusD has one custom PAL chip, and some more logic chips.

There weren't many floppydisk-interfaces around for a reasonable price.
The most affordable alternatives compared to original used ones, were the PlusD clones, available from Sintech (Germany), and I've seen it elsewhere too (maybe from RWAP, Rich Mellor).
So I thought the PlusD was a good one to pick up.
I ordered one PlusD clone, as I didn't have a PlusD in stock.

And then, it began...
I installed the Xilinx development suite, worked my way through a real lot of documents about the Verilog development language and started some prototyping.
I named the interface the PlusD Mini back then.
Here's the WoS thread:
http://www.worldofspectrum.org/forums/showthread.php?t=42717

Like always, I want to do things too quick *smile-emoticon*
After I had the feeling the design could work, I determined the final name 'PlusDlite', designed the schematic and board and ordered some pcb's, way too fast and not knowing it was 'far' from completion...
First WoS thread about the PlusDlite:
http://www.worldofspectrum.org/forums/showthread.php?t=44023

I ordered first issue PlusDlite pcb's somewhere around may 2013, after developing the first CPLD version and designing the schematic with Eagle.
That ugly green beast is in the first three photos.

The first video presentation:
https://www.youtube.com/watch?v=aB9bz7n0vjQ

People may think why I didn't release it back then.
In fact I did, sold a couple to some people.
Here's the manual that came with it:
http://www.benophetinternet.nl/…/van…/PlusDlite%20manual.pdf

I also developed a second and third board issue with small improvements.
These were numbered (shown on the PCB):
PlusDlite V1.0
PlusDlite V1.1
PlusDlite V1.2
I ordered boards of all of these.
I think from V1.1 +2A/+2B/+3 support was implemented.

But after a short while we discovered some issues, especially with toastracks.
The PlusDlite didn't always boot up correcty on toastracks.
Here's a WoS thread about that:http://www.worldofspectrum.org/forums/showthread.php?t=46361.

For weeks I was looking for a cause of the toastrack troubles.
But as I was also producing (DivIDE) and developing (DivMMC EnJOY!) a lot of other stuff, I couldn't give it the attention it needed.

After a while I decided to get back to the original design of the PlusD, to rule out the CPLD as cause of the troubles.
So I designed the PlusDlite v2014.1 schematic and board.
You can see it in the fourth photo.
This was the first black PCB.

You should know until 2013 I ordered pcb's at Futurlec.
These costed about 10 euro each (cheaper when buying dozens at once).
But from 2014 I had them produced at Seeed Studio: about 5 times cheaper.
And Seeed Studio offers different board colours, thickness, multilayer and more.
So from then I only ordered PCBs from them.

Unfortunately at fist I also had troubles with this version ..
The WoS thread about this:http://www.worldofspectrum.org/forums/showthread.php?t=48829.

The first problem was that my TOP2005+ universal programmer didn't like programming the GAL20V8 chips.
These GAL20V8's are a perfect replacement for discontinued PAL20L8 chips.
It's fairly easy to download a PAL20L8 program and save it to JEDEC, automatically reverse engineer this to the readable equations, and then create a JEDEC file for the GAL20V8.
But everytime I tried to program one, my 32 bit Windows install crashed completely.
As this only seemed to happen when -reading- the GAL20V8, and not when erasing or writing it, I thought I could program the chip and use it, even when Windows crashed.

And it seemed to work: the PlusDlite with the GAL20V8 seemed to work almost fine.
But I was having troubles with booting on the toastrack mainly.
This problem looked a lot like the one with the CPLD design.

So the search for (new) causes continued..

As I couldn't find TTL versions of all of the logic chips I needed (some SMD), I bought some HCT versions.
These should be completely compatible with the original (energy consuming) TTL versions.
But I was having problems with them, so I bought the (more expensive) TTL ones.

But still, problems weren't over..
I thought: maybe the placement of the buffer chips towards the floppydrive isn't chosen well (they were about halfway the V2014.1 PCB).
So I designed V2015.1 (somewhere at december 2014), which had parts at the right location, screwholes so I could put it in a case, and the joystick port right next to the floppyconnector.

After assembling this one a couple of months ago, it turned out it still had the same troubles.
So I contacted my buddy Imre from Hungary (who also did the DivMMC EnJOY! case design) for help.
He already tested the V2014.1 version with enormously great feedback, and after the troubles remained with the V2015.1 version, he again spent time and energy looking for more causes.

I was a bit ashamed hearing that one of the boot troubles was simply caused by the SYS file routines trying to access the printer port... which was left out in the PlusDlite design.
I related that specific problem to the main problems, but after a simple POKE @ command (a PlusD ROM command), that one was solved.

But still the interface often showed colouring blocks on a toastrack when powered on, but not always.
Imre gave me some hints that put me to the idea that maybe the universal programmer that crashed Windows with the GAL20V8, could be a cause.
I didn't assume this as the programmed chips did often work.
But my guts told me this could be a cause: the chips might not be programmed correctly.

So I ordered a new universal programmer:
https://www.facebook.com/photo.php?fbid=1545619469031104&set=a.1429993720593680.1073741828.100007491965906&type=1&theater

After it arrived (you know it takes a couple of weeks from China), I programmed the GAL20V8 chips again and retested.
But still *frown-emoticon* Bad luck.
That was a couple of weeks ago.

Last weekend...
I thought to get the stack of assembled boards again, and retry testing.
Now some GAL20V8s I programmed seemed to work well, and some didn't.
I thought: "could it be the GAL20V8s I programmed with the old programmer, are damaged because of that?".
So I picked some new GAL20V8s, and it seems to be true.

After carefully programming and testing new GAL20V8 chips, the problems seem to have disappeared!!!!

This was last Sunday afternoon.
I think my good mood that weekend helped me a lot *wink-emoticon*

Pfew, so... The list of causes:
- Signal compatibility problems with the Xilinx CPLD
- 6264 SRAM problems with some brands
- GAL20V8 programming problems caused by a bad programmer
- Enabled printer port that wasn't present on the interface
- Non TTL versions of logic chips
- Lack of patience, time and knowledge
There may be more, but this is what I was thinking of.

I know I have tested some more potential solutions, like adding thick ground wires to the floppydrive flatcable to avoid ground biasing.
Also I was thinking that maybe the cheap Chinese 5V 2A power supplies I use for the floppydrive sets might have been a cause, but it seems they are allright.

The CPLD solution might just work when the lines that go to the floppydrive directly are buffered.
The HTC versions of the logic chips might also work, now the GAL20V8s are programmed well.

So, that was the story behind two years of developing an already existing interface *wink-emoticon*
I should put this on the Sinclair wiki I'm trying to build...
http://sinclair.wikia.com/wiki/Sinclair\_Wiki

Hope you liked it!!!