Introducing the new Minstrel ZXpand II.
Designing a new product wasn't actually on the plan.
This was one of those, oh, "I wonder if ..." type moments, and I happen to have space on the bench and most of the bits to hand so I thought I would give it a go.
So What Is It?
Well, it is an SD card and joystick interface for the Minstrel 2, Minstrel 3 (and also ZX81 / TS1000 with caveats).
It overloads LOAD and SAVE, and adds CAT, DELETE and CONFIG commands to make it easy to work with files on the SD card.
The Commodore / Atari style 9 way D joystick can be read in three ways:
- The ZXpand interface
- Via an updated INKEY$ command
- As a Kempston compatible joystick interface
There is an FTDI style serial header that can be used to load files over serial from a PC.
The big change with the Minstrel ZXpand II is it now includes the overlay ROM, so it does not need the extra wire connecting to the host board that the original Minstrel ZXpand did.
The ROM chip is squeezed in on the right, so there are now two chips with labels on. Minstrel ZXpand II. Get it?
Build Options
The Minstrel ZXpand II is available as a kit or assembled.
There are versions with edge connectors or pin headers, either vertically in the Minstrle Expansion Bus socket, of horizontally soldered direct to the host.
It can be fitted to a variety of machines in a variety of different ways to suit your needs.
I will write a separate post going through all the options in more details.
DIP Switches
The jumpers on the previous Minstrel ZXpand have been replaced by DIP switches.
There are four switches:
Switch 1 disables the Kempston compatible joystick interface.
Switch 2 disables the ZXpand interface.
Switches 3 and 4 select the ROM.
The ROM overlay needs to match the host device. There were going to be three ROM overlay images:
1 - Minstrel 3 8K BASIC with NMI slow mode
2 - Minstrel 2 8K BASIC without NMI slow mode
3 - Minstrel 2 4K BASIC
I think I might use the fourth slot to add another ROM. No George, not a Forth slot. Not this time, sorry.
4 - ZX81 / TS1000
This should work on a ZX81 or TS1000, although you will really need an internal RAM upgrade or an external RAM pack, there is no RAM on the Minstrel ZXpand II.
Something like this as shown in one of my most popular blog posts showing a 16K internal RAM upgrade (it currently has almost 16K views, which is rather appropriate)
It will not work on a ZX80 as there is no ROM_CS line on the edge connector, and it's also on the wrong side. Get a Minstrel 2 instead.
The current ZXpand ROMs bypass the power-on RAM test, as they are expecting to be connected to a Minstrel 2 or 3 with it's normal complement of RAM. That way you get straight to the boot screen.
To work properly, for the ZX81 version I have reinstated the RAM test to properly set RAMTOP.
This is on my TS1000.
Ah, RAMTOP is 18432, that's ... err ... hang on ... carry the three ... the sound of counting on fingers followed by shoes being removed ...
I know, let's ask the TS1000.
I know the answer, I am just checking, I am sure you understand?
Ah yes, there it is, 2048 bytes, 2K installed (they never made much of the 2K RAM on the TS1000, presumably because it was too late to call it the TS2000).
RAMTOP holds the address of the byte above the last valid byte if RAM. RAM starts at the $4000 / 16384 mark, with ROM and RAM or ROM mirrors below.
On the Minstrel 2 and 3, it is set to 32768, 16K of RAM, the maximum BASIC normally sees.
The Minstrel 3 actually has 32K of RAM, with 8K below the 16K mark, and another 8K above the 32K mark, but BASIC is usually restricted to the standard 16K region.
How Did This Happen?
The Original Minstrel ZXpand kit included the board itself and a separate ROM chip.
This would replace the ROM in the Minstrel 3, and it would be controlled by a bit of green wire.
That wasn't ideal, although if you were doing a permanent install, you would solder the wire on the back of the boards.
The original ZXpand by Charlie Robson had onboard ROM and RAM, so didn't need the extra wire and ROM swap.
It also had space for an AY-3-8190 (or in this case a Yamaha compatible).
When I produced the first Minstrel version, I was going for the minimal approach.
The Minstrel already had RAM, so that wasn't required, and with that one wire link, I was able to share the main ROM on the Minstrel so I didn't need a second ROM chip.
That did mean it wasn't suitable for a ZX81 or a Minstrel in a ZX81 case, as it wasn't practical to connect the wire.
There was a sort of work around, when I added the Minstrel ROM cart, one of the uses I suggested was hosting the ZXpand ROM.
This meant you could leave the original ROM in the Minstrel and add this and the ZXpand without the need for the wire.
It also opened up the possibility of using it on a ZX81 or TS1000, as long as you have an internal RAM upgrade, or external RAM pack.
There was a small caveat of doing it that way, there was no option to disable the ROM.
There was now no connection between the ZXpand board and the ROM interface, so the control signal which disables the ROM was not connected.
Most of the time this wouldn't make a difference, unless you wanted to use a ZX Printer (or Alphacom 32 etc.) or had some software which needed the original ROM.
My test case for that is the 25th Anniversary demo (which celebrated it's 20th Anniversary this year).
When used with the ZXpand, some of the high-resolution graphics demo parts do not work.
This is meant to say A HOT ZX81, but it is just noise.
When loading, you should be able to append ";X" to the filename to disable the ZXpand ROM after loading.
With the ROM correctly disabled, you can see the difference.
You can get around that by connecting the wire from the Minstrel ZXpand to the ROM cart A15 jumper.
Or a wire connected to the ROM select block on the host ROM.
An Idea
I didn't think much more about this, until a couple of people recently asked about using the Minstrel ZXpand with Minstrel 3 boards in ZX81 cases. Whilst it's not impossible, it is a bit fiddly to run the wire out of the edge connector slot.
I wonder if I could modify the ROM board to check the control input, so the ROM could be disabled if required?
Oh look, there are all the bits I need handily arranged on the bench. What a bit of luck.
I needed an extra couple of logic gates to combine the signals, but I wired it up and it worked.
Great, now what?
Well, is there a way I can fit all of that onto one board?
So let me get this right, without making the board larger, you want to add a ROM, two more logic chips for that and a third extra logic chip to do the switching?
Oh, and whilst you are at it, get rid of the jumpers and add some DIP switches.
Oh, and the current theme is round all the corners, so do that as well.
Making It Fit
I fairly quickly concluded I couldn't fit all that on the same board.
To make it fit, I managed to fit most of the logic into a GAL chip.
The chip count is now the microcontroller, the ROM, a GAL, a 74HC10 triple 3 input NAND gate, a 74HC540 inverting buffer (for the Kempston joystick interface that runs in parallel with the ZXpand), and the 4050 to level shift to 3.3V for the SD card.
I am quite pleased with how that turned out, sticking to the horizontal on one layer, vertical on the other worked well.
Thanks to Charlie Robson (Sir Morris) for designing the original ZXpand and letting me do the Minstrel version.
How To Get A Minstrel ZXpand II
The Minstrel ZXpand II is available from my Tindie store:
You might also want a Minstrel Expansion Bus to plug it.
If you are outside the UK, you will need to contact me direct if you want to order. See last week's post for more information
Patreon
If you enjoy posts like this, you can support me via Patreon, and get access to advance previews of blog posts, and exclusive posts, and there was a much longer version of the "how did this start" in the Patreon Preview version of this post a few weeks ago.
You also get progress updates on new projects and other behind the scenes updates, as well as access to my Patreon only Discord server for even more regular updates, and to discuss your own projects.