Sunday 13 November 2022

VIC 20 Repair - The VIC that did not like Cheese and Onion

The Future Was 8 bit gets occasional support messages along the lines of

"My Penultimate Cartridge doesn't work"

From past experience, we know that is almost certainly not the case. What is actually means is

"My VIC 20 is broken, and I didn't realise until I tried to use it in a way I had not done before".

It is understandable that when a user buys something new, plugs it into what they believe is a working machine and it doesn't work, they blame the thing they have just bought.

However, when you look at the options, is it more likely to be the brand new, recently built and tested cartridge, or the 40 year old computer in unknown condition that has had who knows what plugged into the cartridge port over the course of it's life.

The most common issue reported is some games work and some do not. I normally suggest trying out some specific games, usually something like

  • Adventure Land (which uses blocks 2 and 3)
  • Defender (which uses blocks 3 and 5)
  • Donkey Kong (which uses blocks 1 and 5)

From that it usually turns out that one or more of blocks 1,2,3 or 5 are not working, and any cartridge needing to run from that block will not work. (for more on how the VIC20 memory map is split into 8K blocks, see http://blog.tynemouthsoftware.co.uk/2019/09/how-the-vic20-works.html)

That is often caused by a faulty 74LS138 which decodes the bank address, or occasionally the circuitry around that, particularly on the later VIC20 CR where they are right next to the cartridge port and susceptible to static etc.

TFW8b recently had a message that said that pretty much everything worked, apart from Cheese and Onion (an excellent platform game from Misfit).

This is odd because all the test games worked, so all four blocks were seemingly OK. Add to that Pentagorat also worked, and that also needs all four blocks to work.

This was a bit confusing. The internal test tool passed all blocks, every time, so it did not appear to be a faulty VIC 20, or a faulty Penultimate+ Cartridge, it just wouldn't run Cheese and Onion.

I suggested getting it sent to me to investigate. A very nice early 2 pin VIC 20 arrived, complete with the Penultimate+ Cartridge.

To narrow things out, I tried the following tests:

  • My VIC20 + My Penultimate+ Cartridge 
  • My VIC20 + Users Penultimate+ Cartridge 
  • Users VIC20 + Users Penultimate+ Cartridge 
  • Users VIC20 + My Penultimate+ Cartridge 

I repeated that with several other Penultimate+ Cartridges and several of my VIC20s, of various vintages, and it was always the same. I also found a 2 pin VIC 20 with very close date codes to the users machine, and tested that, just in case it was something about it being quite an early machine. But no, it basically boiled down to:

  • All the other VIC20s + Any Penultimate+ Cartridges 
  • Users VIC20 + Any Penultimate+ Cartridge 

So there was a fault with the user's VIC20, but what was causing just that one game to fail?

To confuse things further, I tried a dedicated Cheese and Onion cartridge.

  • Users VIC20 + Cheese and Onion Cartridge 

That worked, so it wasn't the actual game, just something about the way it was being loaded.

I spent quite a while investigating. It seems something was slightly out of specification and switching too late or too early or not hard enough. It seemed related to the way that Cheese and Onion was loaded. This is a 32K ROM, so it is copied into the RAM of the Penultimate+ Cartridge and runs from there.

I produced some special builds with delays inserted in various places and some different methods of loading the ROMs, and I did manage to get Cheese and Onion running with one of these. However, I didn't really want to send it back with a special cartridge with lots of delays inserted. Ideally it should work with the default cartridge. Lets fix the cause, not adjust the best known test case so it is no longer a test case.

I tried swapping various things out, just it case it turned out to be something simple.

The 6502 CPU and the VIC chip both drive the read write line, and the timing of that did seem to be a problem.

It wasn't either of those.

The ROMs were not socketed, but it was probably not those since too many other things were working fine.

They had also passed multiple cycles of Dead Test + testing.

My gut feeling was the 138 I mentioned or possibly the 245 that buffers the read write line, but I didn't really want to just start desoldering and replacing lots of chips.

Probing around, the read write signal was looking a little rounded, as were several of the other signals buffered by the same chip.

This was potentially an issue, the CPU Read/Write signal is buffered by this 245, which is disabled when the VIC chip wants to write to RAM.

I notice that the design changed between the original 2 pin VIC 20, and the later cost reduced version. They actually added chips, so they must have had good reason. The CPU read write signal was now gated with two clock signals.

I also note they did not use the redundant 245 pins for anything and left the input floating. That's not good design practice, it should be tied to a rail or a pullup or any other signal, just not floating.

It did look like that 245 might be the issue, as per my original hunch, so I replaced it, and Cheese and Onion loaded.

Hurray, lets have a party....

Oh, but it's not scrolling properly, and now it's stopped working.

OK, cancel the party.

I had another look around the board and spotted an occasional invalid pulse on the output of the 138.

This was the 74LS138 I had also originally suspected (which is in a different place on the 2 pin board, over near all the RAM chips).

OK time to replace that as well.

Before I booked the party this time, I tried Cheese and Onion out, and it loaded, and it worked.

I now need to load and play Cheese and Onion a lot, and also go through various other games, just to make sure it is fixed, but it does appear to be with everything I have tried so far.

Before I put it back together, there is one more thing I need to fix.

Hmm, that's not quite right it is?

That's better, T3.15A fuse rather than a bit of wire wrapped around a blown fuse.

Now I can put it back together and get back to testing.



Advertisements

Penultimate Cartridge

The VIC20 Penultimate+ Cartridge is available from The Future Was 8 bit.

https://www.thefuturewas8bit.com/shop/commodore/vic20-penultimate-plus.html

Fun fact, as a reward to anyone actually still reading. The photograph on the sleeve of the VIC20 Penultimate+ Cartridge is a close up shot of an EPROM (I think it was a 2708 or 2716) that I took with a USB microscope.

Patreon

You can support me via Patreon, and get access to advance previews of posts like this 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