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.

Sunday, 20 April 2025

Building a 1581 Disk Drive Part 3

What do you mean part 3? I thought it was finished. You promised it was over.

You had the big bumper bank holiday post last week. This is just one more wafer thin post.

Something I skipped over before is the Samsung SFD-321B is a dual density drive. Not double density. Dual density. That means it supports both double density and high density disks, as did a lot of standard PC floppy drives. There were double density only in the early days, but I am not aware of any drives being high density only, except perhaps the thin ones used in laptops and USB floppy drives.

In 3.5" disk terms, double density is the blue ones, the ones with one hole for write protect. They are 1MB unformatted, 720K PC formatted. 80 tracks, 2 side, 9 sectors per track (or 10 in the case of the 1581 and 11 for the Amiga).

High density is the black disks, the ones with the extra hole on the other side. 2MB unformatted, 1.44MB PC formatted. 80 tracks, 2 sides, 18 sectors per track (22 on the later Amigas that supported HD disks).

My first experiences with floppy disks was the BBC micro. On there, it was important to get the right match of disk and drive. The 80 track heads were thinner than the 40 track ones, so if you had a 40 track disk from a 40 track drive and you wrote to it in an 80 track drive, it might not read back right in the 40 track drive as you had only written to half of the track width, the old data was still present in the rest of the track.

It seems the same issues does not affect the 3.5" drives, the number of tracks and crucially the head width are the same, only the number of sectors. Behind the scenes, there are some physical differences in the way the drive writes to the disk, the coating used, the write current etc.

However, you shouldn't need to know anything about that. If you have a drive that supports high density, it will detect the disk type using the hole and write to the disk appropriately.

(as long as you don't start drilling holes in DD disks or covering the holes in HD disks, both of those might work short term but both are misusing the disk and would not be reliable long term)

But wait, the SFD-321B in my 1581 supports high density. Does that mean I can use high density disks in it?

Well, yes. Yes it does.

But, you won't get any more capacity out of it, because the 1581 does not know about it, so it will be formatted 80/2/10 and you will get the same capacity as if it were a normal disk.

There does not seem to be a way the drive can find out the type of the disk, other than reading the formatted disk and the geometry information stored in there.

On a PC, if you have a HD drive and you put an DD disk in there and try to format it, it will try to format 1.44MB, unless you select 720K from the drop down (when there was one) or use /f720 in DOS.

Both the hardware and the operating system need to support for 720K disks, and it was dropped from the format menu from Windows XP onwards, and is not supported by the USB floppy drive I was using.

It may be possible to modify the 1581 firmware to support high density and get double the capacity. I don't see the point, I have not filled up one of the double density ones yet. But that might make an interesting project for someone so inclined. It should also be possible to reduce the timing of the 1581 for the more modern drive and disks and speed it up, should they wish.

I am just using HD disks because I have more good ones of those, they were produced more recently, so are more likely to be in good condition. It means they will not be compatible with a real 1581, but I'm not bothered, I am unlikely to see one of those (and even if I do, I can still use DD disks, nothing has actually changed).

Unless anyone can tell me otherwise, I can just use those and each track will only be half used. They work fine, just as well as DD disks. It's not like anything is being misused, simply underused.

OK, that's the last 1581 post for now.

Promise.

Well, maybe.

You see, I've got this idea for a track display.......

And I want to revist the disk change signal....


Adverts

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 UK.

My listings are on Tindie, but if you prefer, DM me or use the contact email on my site 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.

Minstrels

Have you eaten too much chocolate already? You need a different type of Minstrels.

There are Minstrel 2 and Minstrel 3 kits and accessories available.

You can now get a Minstrel 2 kit for $200. Same as the 1980 pricing for the ZX80 kit on which it is based.

Or if you want ZX81 compatibility, you can get a Minstrel 3 kit for $200

There are a selection of other repair and upgrade parts for various machines, many of which can be seen on this PET 2001 board.


Patreon

You can support me via Patreon, and get access to advance previews of development logs on new projects and behind the scenes updates. These are often in more detail than I can fit in here. This was actually three Patreon posts rolled into one, so a lot got cut out. This also includes access to my Patreon only Discord server for even more regular updates.