Saturday, 9 January 2016

VIC20 Diagnostic Cartridge

I'm currently working on a VIC20 cartridge with an assortment of features, and as that is progressing, I have made a few prototype boards testing different features. The first of these was a general proof of concept, to test the practicalities, and was a VIC20 ROM and RAM expansion.
This provided configurable RAM expansion, and a choice of ROM images. One of the things this could be used for was replicating the VIC20 Diagnostic cartridge. This was a ROM cartridge, but required additional RAM to operate. The original was supplied with a 4K ROM (mapped as Block 5, A000) and 3K RAM (6x2114 mapped as RAM1, RAM2 and RAM3), The notes say only 1K was fitted, but photos of one board shows 6 x 2114s, which would be 3K?
This was great to a point, but like the Commodore 64 diagnostic cartridges, this needs a diagnostic test harness to fully test the machine. The original has been reverse engineered by Ray Carlsen with various pictures here, and also on zimmers.
Building a replacement was fairly straightforward, it is mainly loopbacks on the joystick, cassette and user ports, and a link from the user port to the serial port. There was also a keyboard loopback connector, but I haven't built one of those yet (it passes the test without it).
I'll still leave the diagnostic ROM image on the ROM/RAM cartridge, but it wanted to make a standalone version as well. Looking at the photos of the original, it looks to be use the same board as the VIC20 'Super Expander' Cartridge.
I had a spare super expander board, this one caused a black screen when used, due to a faulty mask ROM. I had removed the ROM and replaced it with a socket and tested it just as a 3K RAM cartridge and it was working fine.
I needed to burn a replacement ROM. The original cartridges used 4K ROMs which are not pin compatible with standard 2732 4K EPROMs. I think it is possible to change the links on the board to use a 2732 EPROM, but that would involve cutting tracks and adding solder bridges.
Rather than that, I used a 2532 EPROM, which is pin compatible. These are quite old and most programmers don't support them. With a few pin changes, you can program them as 2732 EPROMs, which many programmers still support. To make the pin changes I used an adapter board from Dave Stevenson, which allowed the 2532 to be programmed with my EPROM programmer set to 2732.
The programmed chip could then be inserted directly into the Super Expander board, turning it into a Diagnostics Cartridge.
I had borrowed the case from this cartridge for the ROM and RAM expansion, so I needed another one. As part of a collection of other Commodore stuff, I had picked up a strange double stack made out of two Super Expanders wired together.
I was told this used to plug into a muti slot cartridge adapter (which I didn't get with it). I couldn't use it as is, and wasn't sure how it was mapped in memory, with no additional address decoding and only 6K of RAM?
I'll look into what exactly that does another time, but for the moment, I borrowed the bottom case and cleaned up the cut out section to end up with a trendy side window. Maybe I should add some LED lighting?
I then found I had chosen a different diagnostic cartridge ROM image to the one I had put in the ROM / RAM cartridge, I think this is an NTSC version, as like a lot of games, it appears off centre on the screen.
So I burned another 2532 with a ROM image from Zimmers labelled 324173-01.bin. This appears centrally on the display of a PAL system, and is labelled as VC-20 Diagnostic, rather than VIC-20 Diagnostic.
I've tried that on a selection of boards, and it's proven quite useful. This was a dead mark 1 VIC20, with a white screen.
The diagnostic showed up a ROM fault, although it's not clear which ROM it means.
When it runs successfully, it shows ROMCHECK FF, ROMCHECK E0 and ROMCHECK C0. Not sure what the FF test signifies (char ROM?), but the second one is normally E0, so does this mean the ROM at E000? This is the kernal ROM in EU12, and that is a common failure.
I replaced that and it's back in business.
Here I'm testing a board with a faulty IEC bus, good to know it agrees with me
This can be caused by the 6522, but it's usually down to the 7406 buffer.
A replacement 7406 and it's back up and running, so I put it all back in the case and retested.
The test loops around and keeps track of the time, I left this running for several hours with no problems.
That leaves me with two choices now for VIC20 diagnostics, the standalone cartridge, or the multi-purpose one.
I have some new cartridge boards on the way, one is a revised version of the ROM and RAM board above, which adds more RAM options (including the full 35K required for DOOM), and more ROMs, now supporting 4K, 8K or 16K ROMs. There are also cutouts for the supports in some VIC20 cartridge, so this will fit in without having to remove them.
The other is redesign of the Stack IEEE-488 cart I tested previously. I've reverse engineered the design and then simplified it (and reduced the chip count) by using 75150 and 75151 buffers. There is also 32K RAM under the ROM chip and provision for a diode in the IRQ line of the 6522 should that prove necessary for WDC chips.
The final aim is to combine both of these and a PET microSD into a single cartridge, 'the Penultimate Cartridge'. That's going to be quite a challenge, so I am testing out all the elements separately first.

Anders from Sweden has uploaded a video demonstrating VIC20 diagnostics using one of my VIC20 ROM/RAM Cartridges.
The latest ROM/RAM cartridge is now finished.