Introducing a new version of my USB joystick adapters, a dual 9 way D adapter.
This allows you to connect one or two Atari / Commodore style joysticks. These appear to the PC or Raspberry Pi as USB game controllers, so you can control modern games, or more likely emulators.
I have been making the single versions for a while. I found a nice off the shelf enclosure designed for a 9 way D connector at one end, and an RJ45 at the other, but it fits nicely with a USB connector.
I couldn't find something suitable for a dual enclosure though, until one day, whilst looking at something for a different project, I happen to notice I already had a suitable enclosure that I could repurpose.
If you haven't already recognised it, here it is in it's normal use.
As with the single adapter, I have made a custom board to fit the enclosure.
Some might say it was unnecessary to match the PCB silkscreen to the case, but those people probably wouldn't have bothered matching the interior of the connectors to the case colour either.
The case needs minor surgery to add a slot for the micro USB connector, but other than that, it is perfect.
It has a hole for a button, which isn't required here, but I managed to get some LEDs to fit those, and have set those to light whenever a joystick is moved or a button is pressed, handy to test your joysticks and who doesn't like flashing lights?
These appear to a Windows PC as USB game controllers with an X and Y axis and three buttons (although normally only one button is fitted to the joystick). The hardware does not support other 9 way D devices, such as Atari keypads and paddles, or the Amiga mouse, but why would you want to?
Before I start, I should apologise for the photography in this article. I've never got the hang of taking photos of a CRT, and this one is also a different orientation from this page, which doesn't help.
This is the Vextrex, an unusual games system with a built in 12" black and white monitor, which is mounted portrait and driven by vectors rather than the normal raster image. It was distributed in the UK by Milton Bradley, usually known as MB Games, although they wish to point out that this is not a toy.
It is a cartridge based system with a 6809 processor (like the Dragon 32 and Tandy CoCo) and a massive 1K of RAM.
This one is in for repair because it controllers are behaving oddly. Two were supplied, and both seems to show the same issues, permanent acceleration in a racing game, and lack of responsiveness on the direction controls.
The construction of these makes it difficult to get inside without damaging the labels, so I did some tests with a multimeter, and the buttons appeared to be working correctly.
Inside is a strange combination of a TV and a computer, which is what it is. It looked like getting the board out was going to involve desoldering various wires, but luckily the main chips were socketed.
The larger of the two is a 6522 VIA, a 'Versatile Interface Adapter' used for IO on the Commodore PET, VIC20, BBC Micro and others. That would be the obvious choice for the joystick interface, but no, it turns out to be connected to the other chip. That is a General Instrument AY-3-8912, a sound chip which also has an 8 bit IO port, used on the Amstrad CPC464 and Spectrum +2 and others. As you may be able to see from the fact it's less dusty than it's neighbours, I have swapped that out, and that has fixed the problem.
The racing game is now properly controllable. You can really see how games like this benefit from the vectors with smooth diagonal lines, no jaggy steps here.
You even get a change of scenery and some lovely (if a little out of season) Christmas trees. Normally these games come with a sheet of acetate which sits over the screen and provides fixed regions of colour, but it works fine in black and white if you don't have those.
With the cartridge removed, it activates a built in Asteroids style game called Minestorm, with some very angular UFOs.
I was presented with an interesting problem this week. I had been asked to build a PC for a friend, and they had sent me the parts they had chosen. Lots of boxes arrived, and all looked promising, lots of nice boxes from brands I like.
They had gone for an intel Core i3 7100, which is a good choice at the moment. However, there appeared to be a problem with the processor and motherboard combination. It wasn't the board I had suggested, but one that was cheaper. They said it should be fine, as it had apparently come up in the 'frequently bought together' section on Amazon with the processor, which I usually interpret as 'here is something else we want to sell you', rather than a guarantee of compatibility.
The board was a Gigabyte H110M-S2H. Not the latest 200 series chipsets, but the 100 series should support the later processors, and it has DDR4 RAM etc. so should be fine. Checking their website, it is listed as supporting 6th and 7th generation processors.
The box, however, didn't agree with that, it stated 6th generation only.
Checking the CPU support list, the processor is supported, but only with a BIOS update to version F20 or later. A bit of googling brought up a selection of reviews and ratings which indicated people had hit this problem before and either had to return the board or buy a cheap 6th generation CPU in order to be able to boot the board and upgrade the BIOS before discarding it and fitting their new 7th generation processor. Also comments from buyers on Amazon (where this came from) confirming the current boards were still shipping with the old BIOS.
I put those options to the buyer, either send the board back (I hadn't powered it up) and get a later one, or buy a cheap CPU just to do the BIOS update. I did look though the manual to see if it was one of the ones that can update the BIOS via a USB stick in a specific port, but sadly not. I could only think of one other way to do this. The BIOS chip on the board was a standard 8 pin EEPROM, if he were prepared to risk it, I could just remove the chip, program in the latest BIOS then put it back
Given the go ahead, I double checked the part number, MX25L6473F was supported by my programmer, so off with the chip it was. Kapton tape all around to protect the rest of the board, a bit of flux and some hot air and off comes the chip.
There are so many variations of small IC package these days, it's difficult to keep up, particularly when they interchangeably use different names for the same package, and similar names for different ones, SM8, SSOP, VSOP, TSOP, etc. Whatever it was, I didn't have an adapter board suitable to take the chip directly, so as it was only required briefly, I improvised.
A work of art no doubt, but it was recognised by the programmer, and as a test, I read back what was on there. I was expecting there to be a version number in there, but I couldn't find one. Nor was I able to match it to any of the 11 versions of the BIOS on the manufacturers website. The closest was version F4, which would not have supported the new processor.
They clearly had a neater adapter in mind when they drew the graphics, but it still worked. Programming took a minute or so, with version F25A, the latest on their website at the time. I did have lots of screenshots here, showing reading in, comparing the versions and then the erasing and programming. However, when I came back to my desk a few hours later, I found Microsoft had decided to reboot my PC to do an update. This had closed all the windows and lost all the raw screenshots. Well, I says 'my PC', it's clearly Microsoft's PC as they seem to decide when I can use it. Rant over.
I managed to clear a space just about large enough to test the board, and fired it up. I'm using an old 12V DC powered ATX supply. I find that useful for quick testing like this, a board like this only needs about 20W to post and do some basic testing.
Success! It booted and a quick check in the BIOS showed version F25a was indeed running, and the processor and RAM had been correctly detected.
I left that running for a while on memtest and it flew through. These modern intel processors have massive memory bandwidth, very impressive.
With that now working, it just needed building up in the case and Windows installing, and it's on to it's new owner.
When working with old computers, one thing you find yourself doing a lot is burning EPROMs, and that tends to lead to picking up various EPROM programmers. This is my latest, kindly donated by The Future Was 8 bit, who found he had two of them.
I have several different programmers, which all have their strengths and weaknesses. The two on the right are my current USB programmers.
The smallest, cheapest, and easiest to use is the MiniPro TL866CS. This is the one I normally turn to. It is suitable for most modern chips up to 40 pin, and 12.5V programming voltage. It doesn't do so well with older chips which need higher programming voltages. It also has a few gaps in it's device support. For example it can program the Lattice GALs 16V8 and 22V10, and the Atmel ATF16V8, but not the Atmel ATF22V10.
The one below that is the Wellon VP-390. This is larger, more expensive, and less easy to use. I tend to use this one only when the MiniPro can't help. It does support the ATF22V10 for example, and also chips up to 48 pin. It is also a bit flaky on older, higher programming voltage chips.
The Stag P301 is an older device, and communicates via RS232, but can be used standalone to copy chips. This does cope well with older EPROMs which need 21V even 25V programming voltages, it also supports some unusual chips such as the TMS2532, which is handy as it fits into Commodore PETs without needing an adapter like a 2732 does.
Unlike the USB programmers, this device relies on a memory buffer when programming. This can be read from another chip, or can be transmitted via RS232.
This does have the downside that it requires the device to have enough memory to hold the size of EPROM you are programming. The default device has 128K of RAM, enough for a 27C010 EPROM, but not enough for a 27C020, 040 or 080.
Stag did provide a way to upgrade this up to 1M (enough for a 27C080), using a plug in module, the P322. TFW8b had one of these. Only one of them, and that wasn't going in the programmer I was getting.
With that installed, the device is fully loaded with RAM. I put out a call out on twitter a couple of weeks ago, and located a few more of those, but none that were available.
I did think about trying to clone it, but it's quite a fiddly board with RAM chips on both sides, and small pitch connectors, so it would be a lot of effort. It may be possible to write some software to program the chip in 8 chunks, if it can offset the programming address. The current software doesn't support that, so it would mean working out the serial protocol and writing some new code.
At the end of the day, it is only necessary to support the largest chips, which tend to be modern 12.5V programming voltage devices, so both my USB programmers can handle them. It would still be nice to get one of those upgrade modules if anyone happens to have a spare P322?
The RAM expansion module hides under the battery pack. It is an interesting design. Actually no, let's be honest, it's an awful design. The battery pack is quite heavy, and isn't held that well by the plastic clip, so has a natural desire to fall out, or at least to slip out just enough to break the contact.
The battery pack is 8.4V, 650mAh, made up of 7 AA size rechargeable cells. These were originally 650mAh NiCd, but had failed in the past, and been upgraded to 2000 mAh NiMh cells. This wasn't holding charge anymore, and when I checked, four of the cells were measuring around 0.1V. I did try, but they were not willing to be recovered. The others seemed healthy, but couldn't work in series with the dead ones.
The Stag does have a built in charger, but that is designed for NiCd cells, so it's probably a simple trickle charger which will not be ideal for NiMh cells. This is likely to have led to the dead cells, if any of the cells are a bit lower capacity, they can put stress on the other cells. If one in the middle needs extra charge, that current has to pass through all the other cells, which just heats them up if they are charged.
Rather than order some more AA tagged NiMh cells, and go through the same cycle again, I looked at some alternative options. My thinking was to try to mount a battery pack inside the recess of the case, where the original battery pack fitted. I looked around, but there didn't seem to be many 8.4V packs around that would fit.
My next thought was to use some AA battery holders, and use AA eneloop cells. This would have worked, but didn't quite fit in the cutout, so it would have been resting on the cells, not ideal and they would be liable to fall out.
The next idea was to use AAA cells. Modern AAA rechargeables come in capacities greater than the original 650mAh NiCd cells, so it would be at least as good as the original, in fact about 50% better.
The AAA holders fitted nicely, and would allow me to use part of the original battery as a cover. There were some foam pads which previously held the cells in, I have left that in place, but I don't think it's actually touching the AA cells.
I stuck the battery holders in place with foam pads. I couldn't find any 7 way holders, so I used one 4 way and one 3 way, wired in series, and slightly reluctantly soldered to the battery contacts. I was going to try some kind of clip, but thought it was more important to get a good contact.
I dug out seven AAA eneloop cells, and topped them up in the charger. The plan would be to remove them when they needed charging, and charge them individually in a decent battery charger (such as this TechoLine BL700).
With those installed, the Stag powered up and showed the batteries as fully charged. I read and programmed several chips like this, and it seemed to be working nicely.
However, after I had finished programming various test chips, I checked the battery level again, and it was down to half. As a side note, the next job is going to have to be fitting a backlight or swapping the LCD for one with a backlight.
I checked the cells, and they were showing different voltages. I put this down to the fact they had led different lives, some had been used in my old DECT phones which had unsuitable trickle chargers that tends to damage the cells over time, others may have been in lower drain applications like remote controls. These were just some spare batteries I had lying around to test out the idea of running this from a pack of AAAs.
I put them in the charger to top up. They had all been full, but after recharging, it was clear they had been unevenly worn, one cell took only 81mAh to fill it up, another needed just over 1Ah. Just goes to show that even though those cells that had come out of the same batch, they had very different lives. Always remember, never mix batteries types, ages or chemistries as they are almost guaranteed to discharge at different rates, and the two cells that went flat quickly had compromised the whole battery pack.
As a temporary solution, I fitted a set of standard alkaline batteries. It goes without saying, don't plug in the mains adapter with non-rechargeables fitted. I don't actually have one of those for the Stag, so it is unlikely. This did work fine, and it is good to know that it is an option, but I would prefer to have rechargeables if I can.
A better solution is to get a new pack of cells and fit them all at the same time, and keep them as a set so they will hopefully age equally. I ordered a set of 10 Fujitsu 950 mAh NiHm cells, and installed 7 of those instead. They have been in use for a while now, and the battery is still showing full, so I think that is a result.
The cover fits back in place, and is more likely to stay there now there is no weight pulling it open.