Sunday, 29 January 2017

Minstrel ZX80 Clone Issue 2

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

This is the Tynemouth Software Minstrel Issue 2. It is a ZX80 clone with a few concessions to 2017. This fixes a few issue with the issue 1 boards (the missing link and the keyboard connector pinout)
Following testing on the issue 1 boards, I have added an extra chip to improve the composite video output. These is now also a reset switch on board, and the list of the extra ZX80 commands that is on the ZX80 case is duplicated on the silkscreen.
The board now has an edge connector and jumpers to select up to 8 ROM images if a 27C512 EPROM is used. The edge connector is the same as the ZX80, but adds ROMCS like the ZX81, driven via a resistor so it can be overridden by an external device.
The power input now has provision for a 7805 regulator mounted ZX81 style with heatsink, or a switch mode 7805 replacement. Power in is via a 2.1mm DC jack, with jumper selectable centre negative (ZX Spectrum, Commodore 16) or centre positive (everybody else). You could use a Spectrum power supply, or a modern replacement. Current draw is less than 200mA, more if you plan to draw any power from the expansion slot.

Build #1 - ZX80 Clone 4K ROM, 16K RAM

The ZX80 was originally supplied with a 4K BASIC ROM, and a keyboard with blue buttons. This is the classic ZX80. You can build the Minstrel to be a clone of this.
Here I have used a ZX80-KDLX ZX80 style keyboard attached to connectors mounted on the bottom of the board. They do a ZX81 version as well, if you wanted to do one of those.
These are both mounted on a sheet of perspex, the keyboard with double sided tape, the Minstrel board with nylon M3 pillars.
I've soldered in all the TTL chips on this one, and hard wired all the jumpers.
This runs the original 4K BASIC, so the keyboard matches that. W shift Y shift Y for LOAD ""

Build #2 - ZX80 Clone 8K ROM, 16K RAM

When the ZX81 was released, Sinclair also provided an upgrade for the ZX80. A new 8K BASIC ROM, and a new keyboard overlay with grey keys, that looked just like the ZX81. This allowed it to run much ZX81 software, but it didn't have slow mode, so many of the more graphical programs wouldn't work. You don't see many of those around, as I expect most people prefer to see ZX80's with the blue keys. If you want grey keys, get a ZX81.
So that's what I did. This ZX81, however, doesn't work, so will be the basis for the second build, a ZX80 8K BASIC clone.
Inside the ZX81 case was an issue 3 ZX81 board. I'll probably repair it later, but for now I am going to swap it for a Minstrel board with the ZX80 8K BASIC ROM.
The Minstrel board was designed to be a drop in replacement for ZX81 case. If you are building your own, you can borrow things like the keyboard connectors, Z80, 7805 and heatsink from the original board.
The membrane on the ZX81 case was cracked. You can sometimes repair these, but I gave up on this one and fitted a new ZX81 membrane from RWAP. It's easier to work with the new ones as they are very flexible, the originals get very brittle in their old age.
The board is attached to the case lid with 2 screws. There are 5 possible positions, 3 of which are used to screw on the base, and 2 hold the board in place. The Minstrel board has white silkscreen around the two screws that need to be fitted at this stage.
The red paint on the ZX81 logo on the case was partially missing, so I gave it a helping hand, and now the ZX81 logo is black. I was tempted to paint that white, or even spray the whole case white. I did get a can of spray paint, but it said use outdoors, and the temperature must be over 10 degrees, so will have to wait until July. I quite like it with the all black logo. The Darth Vader ZX80 (or the Master's ZX80 depending on your allegiance).
The connectors all line up with the original, the top one is now composite video, and the bottom uses a 2.1mm DC jack for power, rather than the original 3.5mm jack.
Since this is running the 8K BASIC ROM, the keys all work as marked, it is now the more familiar J shift P shift P to get LOAD "" on the screen.
If you look carefully, the font is different, a slashed zero on the later version.

Build #3 - ZX80 Clone 4K or 8K ROM, 16K RAM

The final of the three of these I have built has both ROMs installed, jumper selectable, and uses an RC2014 keyboard.
The pinout of the keyboard is slightly different, so I made up a lead with the rows rearranged. I've also replaced the diodes on the RC2014 keyboard with wire links as the diodes on the ZX80 are reverse biased.
This one has all the jumpers fitted, so I can test out NTSC and inverse mode and various different ROM images.
I have built all of these with 74LS series chips, the same as the original used.
I have tried with 74HCT, and it does work, and draws about a third of the power. The choice is yours. I haven't tried 74HC, less likely to work, as is a mixture, go for one type or another.
When I started the Minstrel ZX80 Clone, I had a few aims in mind.
  1. Create a ZX80 clone using the 4K ROM and original keyboard layout.
  2. Create a ZX80 clone using the 8K ROM which will fit into a ZX81 case
  3. Create a ZX81 clone with NMI mode which will fit into a ZX81 case
These issue two boards address the first two of those. The third one will follow in due course, I am deviating from the ZX80 design and adding in various upgrades, such as the NMI controlled slow mode which will make it fully ZX81 compatible.

Assembling a Minstrel ZX80 clone

Assembly should be fairly straightforward, they are all through hole parts. I've changed the silk screen to show values rather than part numbers, so it is just a case of putting 1K resistors in all the spaces marked '1K'.
Start with the resistors.
Then capacitors and diodes.
Then IC sockets, if you are using them.
Finally the connectors.
All of the ones I have built here have worked first time, and that should be the case as long as you make sure all the parts go in the right place and the soldering is reasonably neat, and as long as you are using good parts. No guarantees if you are using any IC's you got 'from a bloke in a pub'.

The Minstrel boards, overlays, kits and built units are available from my Tindie store.


2022 Update: PCBs, kits and occasional built kits are available from my SellMyRetro store.

https://www.sellmyretro.com/store/tynemouth-software

Friday, 20 January 2017

ZX Spectrum Issue 2 Testing with DivMMC Future

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

The classic rubber keyed Sinclair ZX Spectrum came in many versions. This one is issue 2, the first one produced in any volume.
I've dug this one out to answer a question posed on twitter:
This was part of a discussion about the new DivMMC Future board, which I have been tweaking the design of to make it work with all the different versions of the Spectrum.
Most of the issue 2 Spectrums you see will look like this. A ZTX313 transistor is soldered across the Z80 CPU to fix a bug in the ULA.
It responds to IO requests at all addresses, rather than just all even addresses as on the ZX80 and ZX81. To fix this, this transistor pulls the IOREQ line high when A0 is high so the ULA will not respond.
The schematic shows two versions, the ZTX313 and the 'alternative to TR6'. This uses a diode which will do the same thing, and rather alarmingly, pulls the A0 line up to 12V.
Looking at the photos provided by Brendan Alford on twitter, it is actually pulled up to 9V. But still that is A0, a 5V TTL line pulled up to 9V. The pad on the left is A0, and IOREQ is picked up at the pad at the bottom of the CPU.
I've looked through my collection of Issue 2 Spectrums, and I couldn't find one with that modification. I tried to find one that was a close match, a factory 48K model with the Hitachi ROM.
I found this one which looked a likely candidate, and it seemed to work, but I found that I was having problems with some games. JetPac was fine, as that only needs 16K, but others were failing. I loaded a RAM tester (from zx.zigg.net). That confirmed the lower 16K RAM was fine, but there was a fault (or rather several faults) in the upper 32K RAM.
So first job was to replace the RAM. This took a while as there were initially 4 faulty RAM chips, and one more which failed after a few minutes testing. I ended up replacing all 8 RAM chips to be safe.
In common with many issue 2 boards, the colours are all wrong when viewed on a colour TV. They are normally blue or yellow, but this one has gone green.
There are lots of adjustments here, and even then it can be tricky. Here I've clipped on a temporary composite video modification.
To the left of the ULA, there are four adjustments. The top variable capacitor needs to be adjusted so the clock is 14MHz (here checked at the CPU clock which is that divided by 4)
The second one adjusts the colour burst frequency to 4.433619MHz.
The two variable resistors are adjusted to find the sweet spot between yellow and blue, and at last, we have white.
With the RAM working and the picture sorted, I could get back to the testing. My plan was to test this issue 2 Spectrum with a selection of DivMMC boards. The three candidates will remain anonymous, but I can tell you that the green board on the right is the DivMMC future. Neat isn't it?
First up, all three boards worked. I tried several games, going in and out of the menu, saving and loading etc. Also using the Kempston joystick port that all three provide. No problems.
The next step was to try to replicate the 'alternative to TR6'. I carefully removed the transistor and installed a diode and resistor as per the photos.
I cautiously powered on the Spectrum, but no need to panic, it came on fine, and seemed to work OK. Time for some testing. Again all was fine, all three boards worked. No problem. So why are people saying the DivMMC will not work on an issue 2 with the diode-resistor mod?
The photo on the left is the one from Twitter, on the right is my modified board. Can you spot the difference? There is a 1K resistor on the board I was testing. This wasn't present on the one in the photo. That is part of another mod on the issue 2 schematic.
This one isn't that clear from the schematic, there is a join to the 5V line above TR6 which really shouldn't be there. I've tidied it up a little.
What it's saying is change the value of R24 from 3K3 to 1K, replace D14 with a 100pF capacitor, and add a 1K pullup to the clock line. The capacitor should speed up the transition time of the clock signal, and the reduced value and pullup should make it a stronger signal. Ah, now this is making sense. It looks like my board has this mod fitted, and the early ones do not.
Here R24 is indeed 1K, and two below that, the light green part is a 100pF axial capacitor. Before I revert the clock circuit, here is how the clock signal currently looks on the scope. 3.5MHz, around 3V peak to peak, not a very good square wave. Remember, this is the improved version!
With those removed you can see the silkscreen still shows the legend D14.
I've now replaced those with the parts on the original schematic.
The 1K pullup is also gone, so now it is back to the original clock circuit, which should match the one in the photo from twitter.
OK that powers on, so far so good. Let's check the clock on the scope. A bit worse now, down to a bit over 2V peak to peak and an even worse square wave. This is good enough to drive the Z80, but anything else plugged into this line will have difficulty working with that clock signal.
Over the last few months, I've spent rather a lot of time looking a clock signals from various issues of Spectrum. There is a great variance from this sort of thing all the way up to perfect 5V peak to peak square waves, so it is difficult for a plug in board to work across the range. There is a more detailed blog to follow on all the fun we have had getting the DivMMC future to work on boards like this.
With the issue 2 board reverted back to the early releases with the diode-resistor mod and no clock mod. Time to test with the DivMMC boards.
Black screen from the black board, sometime with various patterns, occasionally trying to start but locking up on the detection screen. Same from the blue board.
I tried several SD cards, as this can make a difference, and once got a bit of a menu.
Time to test the DivMMC future.
Great, menu loaded, games running. All games loading fine.
So, to answer the original question. Will the DivMMC future run on boards with the diode-resistor mod? Yes, but so will some other DivMMC boards.
The question to ask is will the DivMMC future work on early issue 2 boards without the clock mod? The answer is Yes. Will the other boards, not really.
Addendum: Thinking about the issue here, I remembered the Spectrum 128K+ Toastrack also has a rubbish clock signal, and some of these boards have a special switch to cope with the Toastrack, which adds a pullup to the clock line to try to get it into range. With the other units switched into Toastrack mode, it was a bit better, not 100%, but it was usable, you just need to remember to set the appropriate switches.
That's the nice thing about the DivMMC future, it did that automatically, no dip switches or jumpers, only the menu and reset buttons.
The DivMMC future will be available to pre-order soon. For the moment, watch this space, follow @futurewas8bit on twitter or sign up for the Future was 8 bit newsletter (link at the bottom of that page).

2022 Update: The production version of the DivMMC future is now available from  The Future Was 8 bit