Monday, 4 May 2020

Minstrel Goes Forth

First there was the Minstrel 2. Then came the Minstrel 3. Now there is the Minstrel 4......th.
The Minstrel 4th is another Z80 based single board computer on a ZX81 shaped board, but this one is not compatible with the ZX80 or ZX81. This one runs Forth, and is compatible with the Jupiter Ace.
The Minstrel 4th started a long time ago as an attempt to build a Jupiter Ace clone. That didn't quite work, and was quite a challenge to fit into the 142x100mm form factor.
Several revisions passed as I tried some different approaches (long and detailed blog post to follow with all the gory details). With each revision I was trying to simplify the design, reduce the chip count and increase the capabilities.
The main change is the way the video is generated. I have used dual port RAM (the big chip on the right) to remove the need for the multiplexing and all the 1K resistors that were in the original design.
Yes, they look nice in a row, that that's not the point. I never got that version to work properly. The display was a bit fuzzy, and it would appear to be OK whilst it was working, but as soon as it stopped, the screen would be corrupted.
I redesigned the video circuitry in a much simpler way, without any 1K resistors. One concession though is the introduction of a microcontroller to do the counting. It's is just running a state machine counting through the cycles and generating the video sync and timing. Doing pretty much what a 6845 does in a PET. You might call that cheating. I don't. Anyway, I am the author. You are the audience. I outrank you!
With that the picture is considerably improved and there is no display corruption. With the extra control of the timing, I was able to add a back porch signal. This was originally missing on the Ace, but was much less of an issues with it's black text on a white background. I added a jumper so you can select black text on a white background instead. There is also a PAL/NTSC 50/60Hz jumper rather than having to have separate boards like the Ace did.
The inverse option is there for those who prefer it, but I have found I preferred the black on white style as used on the ZX80 and ZX81, so that is the 'normal' setting. (see above statement about who's in charge here).
Other than that, the Minstrel 4th is able to run Forth and Jupiter Ace programs just like a real Ace would. And the video output looks great, doesn't it?
Loading files was a bit of a challenge, I'll go into that in more detail in the subsequent posts, but I spent ages going round in circles, and it turned out the problems I was having were down to the files and the programs I was using to get the audio out. Once I found the right combination, it loads fine every time.
Thanks to George Beckett for providing me with work in progress versions of his Jupiter Ace port of Dave Stepenson's Tut-Tut. That's been good for testing the hardware along the way.
I have followed the Ace memory map, but filling in the gaps with more ROM and RAM. The ROM is now 13K rather than 8K, with up to four ROM images in a 27C512 EPROM. The RAM is now 1K + 48K system RAM (+ the 2x 1K video RAM).
The Ace had an edge connector, but there weren't many add ons available, and these were mainly RAM packs. The Minstrel 4th doesn't need those as it already has the full complement of RAM.
Unlike the ZX80 or ZX81, the Z80 isn't involved with drawing the screen. It couldn't care less. It just writes to the memory mapped video RAM (and can also write to the font RAM to redefine all 128 characters). You maybe able to make out the white border isolating the video section. All that is connected to that is power in, clock and interrupt out, and the left hand side of the dual port RAM.
Other than that, it is a Z80 single board computer, which means the Z80 is free to run user code all the time, and can use any add ons that a Z80 can, so I thought why not give this an RC2014 bus connector, then it can use all the RC2014 expansion modules.
The Ace (like ZX80 and most of the other Sinclair machines) minimally decoded the IO, just using 'A0 is low', so even though it only ever accesses 0xFE, it ties up 0x00, 0x02, 0x04 etc. as well. That would limit things, so the IO is fully decoded on the Minstrel 4th to only use 0xFE. That leaves the other 255 IO addresses available for all manner of add ons.
I have been looking at porting the NASCOM BASIC that was the starting point for the version used in the RC2014 and Grant Searle's Z80 SBC. It's not quite ready yet, so a new ROM image will be released once that is fully tested and bug fixed, you would then be able to select Forth or BASIC via the ROM jumpers. Anyway, I think it would be far more fun to see people struggling to get their heads around Forth before I give them an easier option.
Although the Z80 needs to run at the original 3.25Mhz if you want to do Ace stuff (tape loading and beeps are speed dependent). 6.5Mhz is also available on board, and it runs fine at that speed. You can even load programs if you speed up the audio 2x. Neither of those speeds are ideal if you want to use a serial card, which normally need 7.3728Mhz to divide down to the standard BAUD rates.
To get around that, I designed a new RC2014 serial module with a built in clock, so you can use that with the Minstrel 4th without need for an additional clock module. You can also run the Z80 at 7.3728Mhz if you want that extra boost.
I'm not keen on using new old stock parts, and I couldn't find a suitable UART that was still in production (since the WDC 65C51 is useless due to a bug that has been reclassified a feature, and I overlooked the Z80 SIO due to Zilogs mad part numbering scheme). So, I designed a serial board that didn't need a UART, and used a microcontroller to interface directly as a USB serial device.
That's not available yet as I need another spin of the board, and it's getting a bit silly the number of chips it is using.
The Minstrel 4th and 6850 serial module with clock are now available in kit and assembled form from my Tindie store, which has now reopened. Postal options are a bit limited at the moment, and are likely to be a bit slower and be a bit more expensive, so please bear with me if you don't get your order within 24 hours.
To simplify the postage options, I have moved all the 'PCB Only' options into a single listing, so that can be set for letter postage. Everything else needs courier collection.
So that's the Minstrel 4th, I hope you like it.

May the 4th be with you.

If you want to support this blog, you can donate via Patreon or Paypal, or buy something from my store.