Showing posts with label Minstrel 3. Show all posts
Showing posts with label Minstrel 3. Show all posts

Sunday, 30 August 2026

Minstrel ZXpand II

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:

  1. The ZXpand interface
  2. Via an updated INKEY$ command
  3. 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.

Sunday, 5 July 2026

Testing not-quite-a-ZX-Printer on not-quite-a-ZX81

The Sinclair ZX Printer is another of Sinclair's clever minimalists designs.

A small, cheap printer to go with a small, cheap computer, the ZX81.

It connects to the expansion bus, but does not use the full bus, only one address line and five data lines.

It is mapped to any address where A2 is low, the code uses $FB, where all the other bits are high.

This follows the pattern used for the ZX80 IO, any address where A0 is low, with the code using $FE, again the address where the other bits are all high. The ZX81 added an NMI generator that was disabled by a write to any address where A1 was low, using $FD following the same pattern.

It is a very minimal design, just paper feed, and a moving single pixel head. This head burns tiny holes in special metalised printer paper (yes, really).

I have picked up quite a few of these other the years, usually as part of bundles with ZX81s.

Unfortunately, none of them work.

They seem to have two Achilles heel's, first the circuitry inside is based around a Feranti ULA, and like many of those in most of Sinclair's products, these tend to fail in time. Another victim of time is the drive belts, these test to degrade over time and fall apart.

(there is a third, which only applies if you actually get past the first two hurdles is getting hold of the special paper it uses)

At some point I need to go through all the ones I have and try to find one good ULA and one good belt (or get one of the 3D printed replacements) and get one running.

Until then, I am afraid all I can do is take photos of what it would look like if you connected a ZX Printer up to a Minstrel 3.

Ah, you say, but what if it is the Minstrel 3 at fault and the printers are fine.

Well, I have tested all of these several times over the years on ZX81s and Minstrels various and they have sadly never worked.

Alphacom 32

Another way to verify this is with an Alphacom 32.

This is a ZX Printer compatible printer, also sold as the TS2040 to go with the Timex/Sinclair range of computers like the TS1000 and TS1500.

This has several advantages over the ZX Printer.

Firstly, it has the words "Alphacom 32" written across the front in large, friendly, letters.

Secondly, they generally work, and I think you can actually still buy new-old-stock units, the last of the Timex stock (from the same place that had all the unassembled ZX81 kits).

Another advantage is that rather than the "burning holes into foil" approach, this is an early example of a thermal printer, a technology which is widely used these days.

Pretty much every till receipt and the labels on all the parcels you receive use a thermal printed label.

This means you can buy rolls of paper to drop straight into your Alphacom 32. (update - I just did)

The reason these are used for till receipts etc. is they are very simple and reliable, and require no ink cartridges or toners or anything other than till rolls.

Testing the Alphacom 32 on a Minstrel 3

The Alphacom 32 plugs into the back of your ZX81, or in this case, Minstrel 3.

It responds to the standard LPRINT, LLIST and COPY commands in ZX81 BASIC.

LPRINT is the equivalent of PRINT, it just sends the output to the printer.

LLIST is the equivalent of LIST, and as a bonus, it just keeps going, it doesn't stop after one screen full. Handy for those long listings.

COPY prints out a copy of whatever is on the screen to the printer.

That all seems to be working nicely.

Testing the Alphacom 32 on a Minstrel 4th

Wait? the Minstrel 4th doesn't have a ZX81 style edge connector.

Very true.

But it does have an RC2014 bus slot. And several people have been looking into running a ZX Printer on the RC2014 bus.

George Beckett looked into this a while ago, and ordered some PCBs to Robert Price's design.

Thanks to George, who kindly sent me one of his spare PCBs so I could build it up and test it out.

There is a socket on the right for a 9V DC input, the pads are too small for the sockets I have, so for the moment I will leave that empty. It is only required for the ZX Printer, the Alphacom 32 has it's own supply (rather oddly 24V AC).

Rather than the "any address with A2 low" Sinclair approach, Robert has fully decoded the address, allowing it to be selected from a DIP switch.

I have set this to address $FB (1111 1011), the one used on the ZX81. It also servers as a visual representation of "an address where A2 is low", A2 being the third bit from the right (A0, A1, A2 etc.)

With that all connected up, I can run ZX81 BASIC on the Minstrel 4th, and talk over the RC2014 bus to the Alphacom 32, using the standard BASIC commands.

And there we go, a not-quite-a-ZX81 driving a not-quite-a-ZX-printer.

You might have guessed, I am here because I also wanted to try out the new Lambda 8300 BASIC for Minstrel 4th.

I am pleased to say that also worked fine.

The printout is not very readable, blue on white thermal paper dating back maybe as far as the 1980s.

I did try printing on a 6"x4" postage label from my label printer.

That's more readable, not quite feeding right, so I am sure the proper printer roll will be even better.

That was ZX81 BASIC and Lambda 8300 BASIC. It should be possible to use it from the other ROMs, it would need some code writing to pixelise what you want to print and send it to the printer. (there is an example on Robert Price's page, linked above)

As a final test, I did try the ZX Printer on the Minstrel 4th, if only to get the photo of that combination.

Not quite ideal due to the bodge wire I added for the 9V supply (I knew it wasn't going to work, otherwise I would have made more effort).

As expected, that doesn't work, not because of anything in the BASIC port, the Minstrel 4th hardware, or the interface card, simply a faulty printer. In this case, it just line feeds whenever you try to print.

Update

The new printer rolls have arrived.

2026 printer rolls are smaller than part used 1980s rolls. Who would have guessed?

That's looking good with the printers built in test pattern.

I repeated some of the tests.

It's much clearer, with the new paper.

The quality is pretty good, certainly the best quality of any vintage printer I have.

It is also by design pixel for pixel with the screen font, so none of the scaling issues you get with modern printers, no need for anti-aliasing or anything like that.

Handy for printing out listings for your programming masterpieces (of which that is not one)

Or screenshots of your favourite games.

I am impressed with the usability and quality of the output from the Alphacom 32, I suspect I will be using this more, especially as the only consumable (the printer roll) is still widely available.

I plan to follow this with a more in-depth look at the hardware of the ZX Printer, and repairs or rebuilds to get one working, but that will have to follow another day.


Adverts

There are all sort of kits, test gear and upgrades and recreations of the ZX80, ZX81, Jupiter ACE and Commodore PET in my Tindie store.

Including the Minstrel 2, Minstrel 3 and the newly updated Minstrel 4th


Patreon

If you enjoy posts like these, you can support me via Patreon, and get access to advance previews of blog posts plus exclusive posts.

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.