The Premier Sprite Board
This story really starts with the Premier Sprite board, first mentioned on the World of Dragon forums back in January 2019. That board was developed by Premier Microsystems back in the 1980s for their UK101 computer system, and it was adapted to work with the Dragon 32. There were articles on the board in Dragon User and Personal Computer News.
It turned out that David Linsley had two Premier Sprite boards which he photographed and posted to the WoD forum. The Sprite board was essentially a TMS9929 VDG chip coupled with 16K of DRAM, a BASIC extension ROM and some analogue video circuitry.
There were some known limitations to the Premier Sprite board – the main one being that it could not work with a Dragon 64 and did not have a very rich BASIC extensions; although LINE and CIRCLE had been implemented, neither DRAW nor PAINT were – limiting the usefulness from BASIC.
Discussions started around reproducing the boards, and I confess I was initially not that interested, due to the above limitations. It didn’t really feel worth bothering with if it wasn’t fully compatible. That initial disinterest didn’t last long. I reversed engineered everything I could from the pictures posted to the forum. Due to the amount of tracery underneath those awful 1980s IC sockets I was not able to progress further until David attended the July 2019 Dragon Meet-up where he loaned the boards to me for me to try and get them working. As of June 2021, courtesy of Covid-19 having cancelled successive meet-ups, they remain with me – but they are ultimately destined for Simon Hardy’s Dragon Archive.
As can be seen from the images above, the neutral coloured board was populated with more chips, and seemed to be more complete. I spent a long time trying to get this board running to very little avail. Whilst the neutral board had all the hallmarks of a prototype board, the green boards looked more like production boards. I therefore decided to strip the green board right back to get a decent look at all of the tracery.
Some months later (December 2019), I revisited the Sprite board and rebuilt the green one from scratch using some new components. I also wired the cartridge port to DIP socket again from scratch – and lo and behold, the board worked. For possibly the first time in 35 years, we were able to see the device working, video it and share it with the Dragon Facebook group.
Whilst this was an exciting moment, the graphics on show were not earth-shattering. And it was also realised that not only would the Sprite board not work with a Dragon 64 – it could also not work with a disk interface of any kind – mainly because of the onboard ROM for the BASIC commands.
All Hail the WordPak 2+
Mike Miller mentioned the WordPak 2+ board to the group, which was based upon the V9958 VDP. This chip was supposed to be backwards compatible with the TMS9929 (which was a PAL variant of the TMS9918). The WordPak 2+ board had been developed by CocoDemus, was designed primarily to work with a Coco 1 or 2, and to fit into a Tandy ProgramPak cartridge.
The design was freely available for others to use, and the PCBs were available from a Russian supplier. One quick jaunt around AliExpress and a couple of V9958s, some SDIP64 holders and twenty or so memory chips were on their way from China. The board used one seemingly obsolete component – a 74S133 – which is a 13-input NAND gate. Nevertheless, I managed to get hold of 24 of them for around £5.
One difficulty I encountered with the WordPak 2+ board was the video connection. The DSUB-15 socket was non-standard and the output was designed for 15 Khz monitors. Pere Serrat already had one of these WordPak 2+ boards, but had not used it by this point. Bas Gialopsos came to the rescue of both of us by showing us how to create this custom cable.
My first cobbled together cable gave an appalling output. It clearly was not well enough screened. After buying a full 21-to-21 connector from the UK store, Argos, I thought it would be easy to adapt. However, upon opening one end of the cable, I discovered a big problem. The SCART plug cabling had been completely glued in place for robustness – but more frustratingly, every cable inside it was pink!!
Not to be deterred, I set about making my new cable the hard way – buzzing out every pink wire until I found the ones I wanted, and then connecting into my DSUB-15 plug. It was difficult, but it was a success.
The WordPak 2+ board certainly proved that the V9958 would interface successfully with the Dragon computer. I’d used it with the Oojamaflip ensuring that full disk compatibility was possible. The output image was good, but did seem a little susceptible to noise. I also got this infernal ‘bee in my bonnet’ that it ought to be possible to create a board which also supported audio.
The WordPak 2+ board uses a couple of logic chips (74S133 and 74LS138) to handle the port addressing required for the V9958. I started to work on ways in which I could also squeeze a YM2149 PSG chip onto the board, with minimal supporting components (just one additional 74LS125).
I came to the conclusion that using additional LS logic was going to be cumbersome, and this coupled with my curiosity about CPLDs quickly led me onto an alternate development path.
After a discussion with Phill Harvey-Smith, I ordered a Xilinx CPLD programmer, along with tutorial board and a few XC9536XL CPLDs and QFP-44-to-DIP-44 adaptor boards. The tutorial board was really, really basic, and I had the LED flashing in no time – and thus it was time to start developing my own ‘code’. I originally decided to use VHDL as my CPLD progamming language – paying for a discounted online course.
I quickly got to the point where I was able to put together effective port addressing code, and thus use the CPLD to drive both the V9958 and the YM2149. For some months, the sound of ‘Hey Jude’ by the Beatles was the sole music playing from my prototype boards, as that was the music supplied by Pere. He’d originally written it to work with Ed Snider’s PSG board, and thus some changes were required, as the clock on my design was slightly different to Ed’s (mine adhering to the MSX clock frequencies – Ed’s adhering to the Atari ST clock frequencies).
Whilst still working on the breadboard prototype, I was using the same transistor RGBS output as was utilised on the WordPak 2+. I thought it was a very stable signal, albeit hampered by my poor SCART cable, and was thus ready to carry that across to the first prototype PCBs. Bas Gialopsos persuaded me, however, that using a proper RGB output chip (CXA1645) would make for a more compatible device – and he was correct. Around the same time I had been reading up on the MSX 2/2+ computers, and discovered that alongside the YM2149, they also used a small, 18-pin chip called the YM2413 – FM Sound Generator.
I therefore came up with the first prototype PCB – aptly named the “Dragon MSX 2+ Prototype – June 2020”. You can see that board and the next two prototypes below.
You might notice that the first board has a lot more circuitry on it. That’s because originally I tried to take advantage of most of the CXA1645’s functionality – including the PAL, composite and S-video outputs. This meant that a PAL clock generator and S-video output coupling was required – cramping the board somewhat. You can also see my two main errors. I’d failed to power the op-amp that handled the audio signals (see the yellow Kynar ‘patch’ wire) – and I’d also failed to appreciate that the CXA1645 had a non-standard lead pitch. I’d just used a 0.3 inch pitch 24-pin DIP footprint – whereas the CXA1645 is actually a 0.4 inch pitch device.
It was quickly decided to abandon the PAL, composite and S-video outputs. Compared to the RGB output, these were really very poor, and the trade off between the additional components and the output flexibility was not justified.
Some additional functionality was added at this point (V0.5 beta) which was a couple of 4053 switches, to multiplex the Dragon and DMSX 2+ display signals. I also resolved to support two port ranges – for complete compatibility across both the Dragon and Tandy Coco computer ranges.
This was an interesting point in the project for two reasons:
- The video output switching meant that an internal register was necessary within the CPLD. This should have been simple, but after some struggling, I realised that VHDL was too strongly typed to be of practical use to me, and so after yet another discussion with Phill decided to move across to using Verilog. Phill kindly supplied me the Verilog code that he had used for the Dragon MMC – which helped me get to grips with Verilog quickly.
- It was quickly realised that the 4053 was not a good choice due to it’s impedance – i.e. it depletes the input signals too much and makes for a poor quality output. These were later replaced by SN74CBT3245 ICs.
If you look closely at the version 0.5 image, you can see, to the lower-right of the CPLD chip, a few messy solder points. I had decided at design stage to allow setting between the two port ranges only by ‘solder blobs’ bridging SMD-sized PCB contacts. It really was far from simple, and I abandoned that for the next board type.
The next board version (Version 1.0 RC1) was functionally virtually the same as the boards I intend to release, with just two exceptions:
- Following on from the solder blob ‘brainwave’, I’d had another brainwave that I’d use 1.27mm jumpers and headers to allow selectable hardware options. Whilst more convenient than the solder blobs, they are still not that friendly for aging retro computer enthusiasts. The next board version therefore uses 2.54mm jumpers and headers for everything.
- I’d not realised that the MC6847 RGB solution I was using required 75 ohm load impedance resistors fitting prior to the SN74CBT3245 – whereas the V9958 output did not.
The solution to point 2 was simple. Finding that solution was not. I ended up investing in some SensePeek probes, so that I was able to take oscilloscope measurements of the RGB signals at various points on the PCB.
The only other change I made for the RC2 boards (below) was to add a lot more descriptive text to the boards to enable jumper adjustment without referring to manuals and circuit diagrams etc.