Saturday 24 December 2022

Digital I/O Card for RC2014 (and Minstrel 4D)

Last week I built an RC2014 sound card, now it's time for the digital input/output board kit I ordered at the same time.

This is an RC2014 module from Mr. RC2014 himself. I built one of those with my first "full size" RC2014 system. The one before that was the "classic" low profile version (before it was called the "classic"). I also used that when testing the Minstrel 4th.

With that one, I hard-wired the address as 0x00, as it seems most people do, but I needed to do some testing at other addresses. I could have just removed the wire link and fitted some jumpers, but since I was ordering the sound card from z80kits.com, I thought I would get another kit.

Construction followed the normal practices for boards like this (other than me mumbling to myself that some of the footprints aren't quite the right size.....)

Jumpers aren't part of the kit, but I think the point of kits like these is you can make them your own way. When you are starting out, it is good to follow the instructions and build it as intended, but once you have done a lot of them, you change things to suit yourself.

I also switched out the IC sockets for my favourite turned pin ones, and the LEDs for 5mm ones just because I wanted to.

I meant to order some small, blue resistors to better fit the board, but I forgot.

Don't forget to fit the two link wires. See later for more detail as to why, for now, just remember to fit the two links.

The card has two ports, independently addressable. One 8 bit output port, 8 LEDs, latched on an IO write to the selected address 00, 01, 02 or 03.

The input port is 8 buttons, read on an IO read to the selected address, 00, 01, 02, 03 as before. They do not need to be the same address. These return 1 if the button is pressed, 0 otherwise.

I say 8 buttons, but somehow I managed to lose one along the way. I know it was there when the kit arrived as it is in the above knolled parts image, so I most have lost it on the bench somewhere. I replaced it with a similar part, but I didn't solder it. As soon as I post this blog, I will find the missing button and be able to fit it.

(as someone who sells kits, I know some kit builders would be getting in touch to complain that there was a switch missing from their kit. Always a good idea to knoll the parts out before you start to make sure they are all there, and handy to take a picture to know if you lost it or it was actually missing)

To test the card, I wrote a simple test program.

: SLOWLED 
  BEGIN
    256 0
    DO
      I 0 OUT

      2000 0
      DO
      LOOP
    LOOP
    0
  UNTIL 
;       

You can type that in or cut and paste it over a terminal as I did in the previous post.

I ran that and the LEDs counted up in binary as intended. Nice. Who doesn't love blinkenlights? 

The other thing I wanted to try with a modification George Beckett has made to his port of 3D Monster Maze for the Jupiter Ace. Or in this case, a special Minstrel 4D edition called 4D Monster Maze (because we couldn't not call it that once I had thought of it).

With this version, the LEDs act as a range detector, showing how close Rex is.

George built his IO card with address 03, so the early version of the code I was testing was writing to address 03. I changed the output port jumper on mine to address 03 to match.

I loaded up the special build and wandered about the maze and I walked straight into the exit. The one time I actually wanted find Rex I find the way out.

I tried again, and this time Rex found me as usual.

As "footsteps approaching" appears, more and more LEDs light until it reaches eight.

Then the players is ate. (sorry)

George has now published his finished version of 4D Monster Maze with the built-in Rex tracker.

https://github.com/markgbeckett/jupiter_ace/tree/master/3d_monster_maze

This has been updated to allow the user to select which IO port to use, just press R on the "Anyone there?" screen.

This is a nice addition to the game, it gives a new element to the gameplay as you now have a better indication of where "Rex Lies In Wait".

More Details

One thing that came up during testing reminded me of something I was going to mention before, so I guess I may as well add it now.

During testing George found that his card was responding to all addresses in the range on 00-03, not just the jumpered one. (photo stolen from @markgbeckett)

Can you spot the problem?

When I was building mine, I had to dig out the schematic to check what those pins marked "Link" were for. They are indeed links, and should be fitted.

The two links can to be used if you want to change the address the card uses, by breaking those links and fitting some additional circuitry. But in most cases, they should just be installed in the marked positions.

I have redrawn the schematic to highlight the relevant area:

The 74HCT138 chip is a 3-8 line decorder, which will set any one of its 8 outputs low if it is enabled and the appropriate address appears on it's input pins. (it has only just occurred to me after using these chips for nearly 40 years that the 3 and the 8 in 138 might be related to it being a 3 to 8 decoder? or that might just be coincidence?)

Here you can see the two links connect address lines A0 and A1 to pins 1 and 2 of the chip. The third address input is connected to the /WR line. This is low when a write operation occurs and high otherwise (i.e. a read operation).

You can see from the table on the diagram that for a write operation, the A2 input on the 138 will be low, so one of the /O0 through /O3 outputs will go low. Which of the four depends on the A0 and A1 lines, which are connected to the Z80 bus A0 and A1 lines via those links. One of the four possible outputs goes low, and if you have the jumper on the right in that position, it will enable the output latch chip.

For a read operation, /WR will be high, so it will be one of the bottom 4 output lines, and again is determined by the jumper.

Here I have drawn in the two links fitted, and the jumpers, set for address 0.

There are three other inputs, which all need to be in the correct state to enable the output.

E3 is connected to /M1, and is there to avoid false triggers when there is an interrupt acknowledge. The 138 outputs are only enabled if /M1 is high.

/E2 is connected to /IORQ, which is low only for IO requests, so the 138 is only active for an IO Request.

/E1 is connected to a signal which is low when an address in the range 00 to 03 is selected.

This is generated by a diode OR gate, connected to address lines A2 - A7.

If any of the inputs are high, the the address must be greater than 03, so the 138 should be disabled. When all the inputs are low, the 138 input is pulled low by the 10K resistor.


Or, in short, don't forget to fit the two link wires.


Look out for future posts where I will be testing this and the AY-3 Sound Card further in the Minstrel 4D and other RC2014 systems.


Advertisements

Minstrel 4D

The Minstrel 4D kits are shipping now, you can order one from The Future Was 8 bit

https://www.thefuturewas8bit.com/minstrel4d.html

More info in a previous post:

http://blog.tynemouthsoftware.co.uk/2022/08/minstrel-4d-overview.html


Z80 Kits

The RC2014 Digital IO Module is available from Z80Kits.com

https://z80kits.com/shop/digital-i-o-module/

Patreon

You can support me via Patreon, and get access to advance previews and behind the scenes updates. These are often in more detail than I can fit in here. This now includes access to my Patreon only Discord server for even more regular updates.

https://www.patreon.com/tynemouthsoftware

Sunday 18 December 2022

AY-3-8910 / YM2149 Sound Card for RC2014 (and Minstrel 4D)

I have spent a large part of the last few months packing kits, and putting several of them together along the way. (actually most of the last 6 years, the Minstrel 1 was December 2016)

Today it's time for a change, I am going to be putting together someone else's kits.

These are two RC2014 modules, direct from z80kits.com, the home of RC2014.

I'll look at the IO card in another post. First I am looking at a sound card for the RC2014 bus designed by Ed Brindley and now produced by Z80Kits.

https://github.com/electrified/rc2014-ym2149/tree/4b8af5396633bc87178b81087cec0f71b8307908

https://z80kits.com/shop/ym2149-sound-card/

This can use the AY-3-8910 or the Yamaha YM2149 sound chips (and with an adapter, the AY-3-8912) . These are three channel programmable sound generators chips, as used on many 1980s computers, such as the ZX Spectrum +2, the Oric, Atari ST etc. They also have one or two 8 bit IO ports, which are used on those machines for joysticks or keyboard or printer interfaces etc.

If I remember correctly, the same silicon is inside both the 40 pin AY-3-8910 and the 28 pin AY-3-8192, and some of the additional IO lines on the 40 pin chip are simply not connected to pins on the 28 pin version. The 40 pin versions seems to be cheaper and easier to get hold of these days. The Yamaha version seems to have some improvements, and apparently many of the AY-3 chips are actually remarked Yamaha chips. (I did order some blatantly remarked / fake AY-3-8910 chips from ebay a few weeks ago, but they remain lost in the postal backlog)

There are two versions of the kit available, I chose one that comes with an additional PCB to allow you to use the 28 pin version. I wasn't planning to use this, but I thought it might come in handy one day......

Construction followed the normal practices for boards like this (other than me grumbling under my breath about having to look up component values on the bill of materials.....)

The only change I made was using turned pin sockets for the ICs. The kit with the adapter so didn't have a 40 pin socket, but I prefer turned pin types anyway. Just my preference (and what I have to hand).

I decided to start with it in the side socket on the Minstrel 4D, it's easier to see and change the jumpers if I needed to. There are an awful lot of jumpers on there, to allow different addresses and clock speeds to be used. (this is a Revision 5 board, there is a Revision 6 with a built in crystal oscillator, but this seems to be the preferred version)

I pressed the power button on the Minstrel 4D and nothing happened.

Odd.

That's not normal. The power LED didn't even come on.

Then I noticed the power supply was in current limiting. Oops. That's not right.

Ah, that might be the problem. I couldn't have picked a better pair of pins to short if I tried. Looks like 5V and 0V.

To be fair, it is rather cold in the workshop upstairs that I use for soldering and drilling and all the sort of messy stuff I don't want going on in the office below. I was going as fast as I could, and I let that solder bridge slip through.

> USE HAT

> USE COAT

> GO WORKSHOP

> USE SOLDERWICK

OK, that's better, let's try again.

It powered on this time. So let's give it a go.

There is a test program listed on George Beckett's github page:  https://github.com/markgbeckett/jupiter_ace/tree/master/rc2014_sound_card

However, there is no associated .tap file, so I will need to type it in. But fear not, this is a Minstrel 4D.

Just wire up an FTDI serial cable and go to a terminal program and paste in the text.

And the program is automagically typed in for you.

Running that program produced some nice scales from the speakers, so it sounds like it is working.

Looking at the output on the scope, there is minimal DC offset, so this is probably a genuine AY-3-8910, where the offset would be around 200mV. The Yamaha chips (and remarked Yamaha chips) will show more like 2V. This will be a good way to identify the chips from ebay, if they turn out to be functional fakes rather then just useless lumps of plastic with somewhere near 40 pins sticking out.

Next test was Valkyr, see a previous post on all the fun that was had getting that running: http://blog.tynemouthsoftware.co.uk/2022/10/valkyr-one-game-so-many-changes.html

The game originally supported the Boldfield Soundbox, which also used the AY-3-8910 chip, but with different address mapping. There is a version on George's github which has been modified to work with this card and includes the other changes to make it run smoothly on a Minstrel 4th or 4D.

https://github.com/markgbeckett/jupiter_ace/tree/master/valkyr-minstrel

On the Minstrel 4D, you can load this by browsing the SD card for the TAP file and selecting option 1, LOAD valkyr valkyr so it will automatically load and run.

Select Soundbox (EME/Boldfield) (Essex Micro Electronics designed the Soundbox for Boldfield as far as I can tell).

When the game starts you are greeted with proper game music and effects, far above what you get with the onboard beeper. Very impressive.

There are more things to test, both on the Minstrel 4D and also on a more traditional RC2014 system, look out for those in future posts. I also have the IO board to build and something exciting to test that with.


Advertisements

Minstrel 4D

The Minstrel 4D kits are shipping now, you can order one from The Future Was 8 bit

https://www.thefuturewas8bit.com/minstrel4d.html

More info in a previous post:

http://blog.tynemouthsoftware.co.uk/2022/08/minstrel-4d-overview.html


Z80 Kits

The YM2149 Sound Card is available from Z80Kits.com

https://z80kits.com/shop/ym2149-sound-card/


Patreon

You can support me via Patreon, and get access to advance previews and behind the scenes updates. These are often in more detail than I can fit in here. This now includes access to my Patreon only Discord server for even more regular updates.

https://www.patreon.com/tynemouthsoftware

Sunday 11 December 2022

Minstrel 4D Kits are Shipping Now

The pre-ordered Minstrel 4D kits are now shipping from The Future Was 8 bit.

It has been quite a challenge to get together all of the bits required to make lots of Minstrel 4D kits, for a while it seemed like each section of the kit was missing one key part that was stopping me packing them, but finally all the bits were sourced.

First to be completed were the key switches, key caps and covers. Here looking like a massive pile of glacier mints. All ready to be counted and weighed into bags.

And then weighed again to check they are right, before finally being counted into boxes in neat rows (or at least neat-ish).

Next were the fixings kit. I like to use a sort of pick'n'mix arrangement of parts in old Ikea bows.

Diced onion? Rice? Pasta? No, M3 nylon fixings.

Those also get counted and weighed into bags.

And weighed again and counted into rows in boxes.

The next pick'n'mix was a lot more colourful.

But the process is the same.

The resistors and diodes and axial capacitors require a different approach. These are counted out in piles.

But then back to normal as these are also weighed to check and then counted into boxes.

And after all of that, the boxes go into bigger boxes.

And finally 16Kg worth of kit bags head off the TFW8b, ready to become part of the kits.

Each kit will need seven bags of parts each.

But that's not all, what about the ICs?

Well, we managed to assemble the largest collection of microcontrollers and EPROMs that anyone could expect to see in 2022.

All of which needed to be programmed, three devices per board, an EPROM and two microcontrollers.

For the AVR chips, I used the programmer I built for the purpose. I was a bit more effort that I would have liked, but none of the production programmers I had (or could get hold of) supported the AVR Dx series of chips, so I had to build my own AVR programmer.

They also needed to be labelled, and about 10 labels in, my label printer gave up. It is USB powered, but has an internal battery for the extra umph it needs for the motor. Last time I looked, the replacement batteries were about the same price as the complete printer, so luckily past me had bought a few spares, and I still had one left.

Must get around to trying to hack some sort of battery into one of the dead ones.

With all the parts programmed and labelled, onto the logic chips.

Again, with all the shortages, who would have expected to see this many logic chips in one place. Will we ever see the like again?


Those were all counted out onto foam sheets.

As with my previous kits, I have tried to arrange the chips in the same order they go into the board, to make it easier to locate the parts.

Laying parts out on the PCB in groups looks good, but makes it a lot more difficult to do these IC packs.

Once these arrive at TFW8b towers, they can be assembled into kits.

The IC packs are wrapped up with the PCB sets.

And finally they meet up with the manual and the label sheets and perspex kit (jelly may not be included).

The manual probably deserves a post of it's own. I think this is the best manual I had done (certainly the thickest).

Full details of the assembly. Lots of colour full diagrams.

Full schematics and theory of operation.

These finally get boxed up and sent off to the new owners.

And hopefully, not too long afterwards, they should look like this:

An awful lot of time and money went into developing these kits, and a lot has been invested in sourcing the parts required to assemble all these kits. This isn't kickstarter, all the bits have to be purchased in advance by TFW8b.

I don't know if I will ever be able to do anything like this again. I hope so, but it's really at the end of the day down to whether they sell. We know it's not a great time to be asking people to buy something they can't eat or heat their homes with, but this is something of a last roll of the dice for us.


Advertisements

Minstrel 4D

The Minstrel 4D kits are shipping now, you can order one from The Future Was 8 bit

https://www.thefuturewas8bit.com/minstrel4d.html

More info in a previous post:

http://blog.tynemouthsoftware.co.uk/2022/08/minstrel-4d-overview.html

Patreon

You can support me via Patreon, and get access to advance previews and behind the scenes updates. These are often in more detail than I can fit in here. This now includes access to my Patreon only Discord server for even more regular updates.

https://www.patreon.com/tynemouthsoftware