Sunday, 4 May 2025

Minstrel 4th Returns

May the 4th be with you. 

Five years ago today, the Minstrel 4th was launched with that bad pun. 

And now it's back, with the same bad pun.

Yes, the Minstrel 4th is back, and available now from my Tindie store.

What is it?

It is a Z80 based single board computer with 49K of RAM, 2K of video RAM and 4 banks of 13K of ROM, running at 3.25MHz or 6.5MHz (or an external clock up to 8MHz)

It is compatible with the Jupiter Ace.

What is that?

The Jupiter Ace was a Z80 based single board computer with 1K of RAM, 2K of video RAM and 8K of ROM, running at 3.25MHz.

Unlike it's contemporaries like the ZX81 and the ZX Spectrum which ran BASIC, this runs Forth. (hence Minstrel 4th, do you see what I did there?)

Forth is a very fast and powerful language, although not as easy to pick up as BASIC, it is well worth investigating.

More info on Forth can be found here:

No post on Forth would be complete if it didn't show the result of the vlist command.

This shows the current vocabulary list, all the build in functions.

The default for the Minstrel 4th is black text on a white background, as it was for the ZX80 and ZX81 etc. I prefer this (it is also easier to take pictures of).

The Jupiter Ace used white text on a black background, so the inverse options is available if you wish.

The video on the Jupiter Ace was generated by a lot of logic chips forming counters and decoding logic. To simplify things, the Minstrel 4th uses a microcontroller to do the counting. The produces a more correct composite video signal with a backporch that was originally missing, and PAL or NTSC support via a jumper.

There is a 2K dual port video RAM chip to avoid multiplexing circuitry (the Ace had contended and un-contended memory access via two different address ranges, both are un-contended on the Minstrel 4th)

There is a lot of software available for the Jupiter Ace which will all run on the Minstrel 4th.

As well as some modern titles.

You can load using a standard cassette recorder, such as my favourite Sony TCM-818.

Or you can play the audio files into the ear port.

Not all PC sounds cards can cut it (low output level and fancy audio processing), but these cheap USB dongles usually work fine.

This is a great port of David Stephenson's Tut-Tut by George Beckett.

RC2014

One of the best features of the Minstrel 4th is it has an RC2014 expansion slot. This means it can use RC2014 modules to add whatever new functionality you want.

Most modules should work, apart from any that contain ROM, RAM or CPUs. The only IO port used on the Minstrel 4th is $FE. All others are available. Interrupts are used, generated by the video circuitry and used for timing, display update and keyboard scanning etc.

Minstrel 4th is designed for RC2014.

But don't just stop at one module, add a backplane and you can have loads.

The backplane 5 is a good starting point.

A lot of standard modules and backplanes can be used, some of the ones shown in the photos are:

Many more are available, see also:

This is my current fully loaded setup.

Made up of the following parts.

ROM options

There are four ROM options available with the Minstrel 4th

1 - The standard Forth ROM

This is the standard Forth ROM, to be most compatible with the Jupiter Ace.

2 - Enhanced Forth ROM

This is a patched version of the Forth ROM by Aleksandr Sharikhin (with some extra code from George Beckett).

This adds various features, see the github for details.

This works well with a 68B50 serial card, I have designed one with a separate clock, so it can run at 7.37MHz to divide down to standard RS232 baud rates, and the Minstrel 4th can run at a different speed.

With such a card installed, you can use some of the extra words it added to access the serial port.

If you use a standard FTDI serial cable to connect this up to a PC, you can run a file server from a Python script.

On the Minstrel 4th end, you can use commands like ls to show a directory listing or tapin to open a tape file and then use the modified load command to load over serial in a matter of seconds.

There I was loading 4D Monster Maze, a modified version of George Beckett's Ace version of 3D Monster Maze with some extra features.

If you press R when the first screen appears, you will be invited to select a DIO port. I like a bit of Ronnie James Dio. Oh wait, no.

If you have one of the RC2014 Digital IO modules, then it will function as a "Rex detector" and show you how close Rex is getting.

It also support my RC2014 Joystick module so you can use a standard 9 way D joystick in various games.

Another module you might want to pick up is Ed Brindley's YM2149 sound card.

This is supported by several games, including George Beckett's updated version of Centipede.

It works with the built in speaker, but sounds great with the extra AY-3 sounds.

There is a lot of software out there, including many new games:

3 - MPF-1

The Micro-Professor MPF-1 was a single-board computer, made by Multitech in the early 1980s. It was intended as a teaching aid for learning to program the Z80.

This used a 36 key keypad and 6 digit LED display and a simple monitor program, which allowed a user to enter small machine-code programs as hexadecimal object code, and then debug and run those programs.

George Beckett has ported the MPF-1's monitor to run on the Minstrel 4th so you can try out Z80 coding with the built in assembler and disassembler to help you debug your code.

Full details can be found here:

4 - ZX80 BASIC

What?

Yes

This is a port of the 4K ZX80 Integer BASIC that runs on the Minstrel 4th.

It is compatible with most BASIC programs, but is not fully hardware compatible for obvious reasons.

I have replaced the standard ZX80 screen draw routines with a routine to copy the ZX80 display file into the Minstrel 4th video RAM. It does that every frame so this display works pretty much as it did, although there is no flicker as the display continues to be drawn by the microcontroller even when the Z80 is busy.

I have written new LOAD and SAVE routines, which show a countdown rather than wavy lines.

They keyboard matrix is slightly different, as is the load hardware, so any games that use fancy display techniques, or their own keyboard scanners or load routines will not work.

But it works well enough for Paul Farrow's ZX80 versions of Kong and PacMan for example.

(but sadly not the recent port of Rock Crush or Rocket Man - for those you need the full ZX80 compatibility of a Minstrel 2)

Options

The Minstrel 4th is available as a kit or assembled. With sockets for the main chips, but optionally for the logic chips as well.

The standard version comes with a built in keyboard, but it is also available without a keyboard, should you want to use your own, or do something else.

I did create a sticker to fit over a ZX81 membrane, if you want to do something like that.

And the board is ZX81 size, so.....

But you won't be able to use an RC2014 modules, unless you are very creative with a Dremel....

Or there is a USB keyboard interface from Shiela Dixon:

So you can use a standard USB keyboard (doesn't it look small in comparison?)

Or even a non-standard USB keyboard (yes, they are back as well)

But most people will want the standard version with keyboard.

Whenever I pack a new kit, I like to build one to test.

As always, they work first time.

Oh wait,

That's not right.

Hmmm.

About 95% of the issues come down to things like incorrect jumper settings, shorts, dry joints, missed pins, etc.

Ah, there it is.

Sorted.


I think that's enough for now. I don't think I have included as many links in a blog post ever, and I think I must be pushing the number of images as well.

The only link you really need is this one:


Patreon

You can support me via Patreon, and get access to advance previews of development logs on new projects and behind the scenes updates. New releases like this will be notified to Patreon first, if you want to be sure to get the latest things. This also includes access to my Patreon only Discord server for even more regular updates.

Sunday, 27 April 2025

Minstrel ZXpand V1.5

I think I should re-introduce the Minstrel ZXpand.

This is a special version of ZXpand which has been designed for use with the Minstrel 3 computer.

It overrides the BASIC LOAD and SAVE instructions to allow fast loading from a full size SD card or serial. It also adds a 9 way D joystick port.

ZXpand was originally designed and produced by Charlie Robson (sirmorris). Those are now out of production and difficult to get hold of.

The Minstrel ZXpand was produced with his approval and assistance to work only with the Minstrel 2 and later Minstrel 3. I have simplified the design to reduce size and cost, making use of the 32K RAM already present in the Minstrel 3. A replacement ROM is provided for the Minstrel 3, and a wire link attached to the ROM jumper block to select the ZXpand ROM when required.

This version does not feature it's own ROM or RAM.

So it cannot be used with a real ZX81

(I am only going to mention that once, but hopefully it is in big enough letters to sink in)

When you power on, you will be greeted by a banner.

You can now use the Minstrel 3 as normal, the Minstrel ZXpand will be waiting until you need it.

You can also configure it to load a menu program at power on, such as ZXpand Commander.

See here for more information

Three new commands are added to BASIC when the Minstrel ZXpand is active:

  • CAT (to get a directory listing)
  • DELETE (to delete a file)
  • CONFIG (to change options)

Those commands replace three lesser used ZX printer commands (COPY, LPRINTLLIST). They are already marked on the Minstrel 3 keyboard overlays.

If you press Z, you will now see CAT in place of the ZX printer COPY command.

When you want to load a program, just type LOAD, with the program name (e.g. LOAD "3DMM" - the .P is optional on LOAD, and is only required for the DELETE command)

And in no time at all, the ringmaster will be greeting you.

The joystick port supports standard 9 way D Atari / Commodore joysticks, and can be read in three ways:

The ZXpand protocol

This is a way to read the port directly from assembly language code, which is supported directly by several games.

A replacement INKEY$ function

When the ZXpand is active, the INKEY$ function will also return joystick movements. These are normally set to be the cursor keys, so when you move the joystick left, it will look to any program calling INKEY$ as if you are pressing the 5 key. The keys can be changed using the CONFIG command, if you want WASD or any other combination. Any BASIC game should use this without modification.

Kempston compatible interface

Joystick movements can also be read form port $31, compatible with the Kempston joystick interface, also supported in many games.

The Kempston port and the ZXpand can be disabled by jumpers. The ZXpand can also be disabled in software

3D Monster Maze uses the INKEY$ function, so you can run away from Rex using a joystick without any changes to the original game.

When loading, you can also add a path to the load command, e.g. LOAD "REVIVAL/DOWN"

I know I always load 3DMM, but Down is another of my favourites, and supports the ZXpand joystick.

It detects it automatically, so you need to use it to press fire to start the game.

If you don't want that, you can set the Minstrel ZXpand to be disabled after load by adding ;X to the command. eg. LOAD "25THANNI;X"

The 25th anniversary demo is great, and needs every spare bit of RAM and the original ROM. If you run it with the Minstrel ZXpand enabled, there is some screen corruption.

With the ;X option, it runs fine.

There are a few differences between these V1.5 boards and the previous V1.4.

The logic chips on the side were originally lined up with the Minstrel 2.

The new version has been rearranged to line up with those on the Minstrel 3.

Yes I know that makes no difference to the functionality, but I think aesthetics are important, and I can waste my time relaying a perfectly functional PCB if I want to. So there.

One new feature is a 6 pin FTDI header has been added. This can be used to load files into the Minstrel 3 via serial from a PC.

A standard 6 pin FTDI serial cable can be connected, ground (usually the black wire) is marked with a "-" and is closest to the edge of the board. (I think I might even have got direction arrows correct, < out of the FTDI connector, > into it)

The PC program can be downloaded here - 

This works as a server. You need to wait until the Minstrel 3 is at the K prompt, then run the server with two parameters, a .P file and a the com port your FTDI cable is on, e.g. COM1. Don't worry about the speed settings, the program automatically configures this as 38400,8,N,1.

The server is written in C sharp (Charlie has provided the source on the github). You can use it on linux with the mono framework and the port would be in the form of /dev/ttyS0.

Once that is running, type LOAD "$" on the Minstrel 3.

When you press new line, it will begin to transfer blocks over the serial connection.

It is a lot faster than loading from tape, and can be useful during development to avoid having to keep copying updated code to the SD card.

Once complete you can run your program (if it hasn't already started).

As above, you can add the ;X to the LOAD command to disable the Minstrel ZXpand after loading if that is required.

Don't do the maths, the 25th anniversary was 2006. But that was only a couple of years ago, right?

The Minstrel ZXpand is available as a kit or pre-assembled, ready to plug in and go.

An SD card is required. The older, slower and lower capacity the better. Avoid microSD in adapters if you can, the adapters are not very reliable.

The SD socket is supplied pre-soldered onto the PCB. The remainder of the kit is standard through hole parts.

None of these versions will suit anything inside a ZX81 case. The ROM jumper needs to be connected to the Minstrel 3 jumper block, on either the front or the back of the board, so it is only suitable for open stand-alone SBC style systems.

Jason at JLProjects has designed a 3D printed enclosure for the Minstrel 3 and Minstrel 3 + Minstrel ZXpand.

The STL files are available here:

Minstrel ZXpand options

There are three options to suit your system:

Vertical pin header

This version is designed to mount vertically, either in the Minstrel Expansion Bus backplane, or in the Minstrel Expansion Bus socket on later Minstrel 3 boards. This is the recommended configuration.

The jumper wire connects to the Minstrel 3 jumper block. The reset button is not fitted here as the one on the Minstrel ZXpand is used in preference (long press = reset ZXpand, useful if previously disabled).

It will sit neatly on top of the Minstrel 3, even if you used IC sockets.

Horizontal soldered

This version has a pin header which is soldered directly to the Minstrel 3 edge connector, or the pass through connector on the Minstrel Expansion Bus. (here showing the older version, but the newer style will be supplied)

This provides a very reliable connection, but is not reversible.

Horizontal edge connector

This version is as above, but instead uses an edge connector. This can easily be removed, so is more adaptable, however the edge connectors are not as reliable as the pin headers or soldered connections.

The two horizontal versions include 10mm nylon pillars and screws matching those used on the Minstrel 3 kits, so it will sit level behind the main PCB.

The standard kit comes with a socket only for the 40pin microcontroller. Optionally sockets are available for the logic chips. (the ROM goes into the socket already present on the Minstrel 3).

Kits are available from my Tindie store

There is also the Minstrel Micro ZXpand, which takes up a lot less space, but does not include the joystick or serial interfaces.

I currently have none of the Minstrel 2 style boards. If anyone is interested, let me know and I will get some ordered with the new serial header.


Adverts

I have listed this and all the other Minstrel Expansion Bus modules and backplane on Tindie.


I understand now is not the best time to be selling on an American site, but I am from the UK. All products are designed, built and shipped by me, here in the Tynemouth in the north-east of England.

And now isn't the best time to be English either, but please don't penalise me or other small businesses that are just trying to do their thing.

I don't think it is going to help anyone by boycotting businesses because of the actions of those that run the countries they live in, or where the platforms they operator on are based.

My listings are on Tindie, but if you prefer, DM me or use the contact link above to order direct.

All international orders may be subject to local tariffs, taxes or duties, and handling fees etc. Please be aware of this before ordering.


Patreon

You can support me via Patreon, and get access to advance previews of development logs on new projects and behind the scenes updates. New releases like this will be notified to Patreon first, if you want to be sure to get the latest things. This also includes access to my Patreon only Discord server for even more regular updates.