Way back in 2020, I started looking into producing a Mini VIC kit, along the same lines as the Mini PET. Something that was VIC20 compatible but built using modern W65Cxx and 74HC parts.
The trickiest part of that was finding a way to replace the VIC video (and sound) chip. I tried various options to get a microcontroller to be able to generate the video output.
These were looking promising, so I set about designing the Mini VIC board, at this stage with everything apart from the VIC chip replaced. The plan was this would be the test harness for the replacement video chip design.
I wasn't really happy with the way that turned out, I tried to do a few too many things, and it didn't work out as well as I would have liked. In order to save a few chips, I ended up complicating things with 4 way mux chips and things like that.
I also added configurable internal RAM. Whilst that was nice, it further complicated things. When that was enabled, it shouldn't enable the same zones in the cartridge slot etc. And at the end of the day, you will probably be running this with a Penultimate cartridge installed, so it would just be duplicating the 35K expansion anyway.
It sort of worked, but wasn't quite right.
At the time I put the project to one side, waiting until I had a better idea for generating the video.
Roll on 2024, and I have more ideas for generating the video output.
I did spend a while looking at a purely logic based VIC, the Maxi-VIC. Whilst this is viable, I think it worked out something like 80 - 100 logic chips, so was never going to be practical for something like this. (although never say never....)
There is promise of a drop in FPGA based VIC chip replacement, which would solve the problem.
(edit, there are now several FPGA versions in development)
I looked again at the design and decided to roll back several of the changes I had made and go for something closer to a VIC20-CR.
That meant going back to two ROM chips (still one better than the original three ROM chips), and just the standard 5.5K of RAM across two chips (again better than the 5 chips on the VIC20 CR or something like 500 on the 2 pin VIC20*).
* OK, it's 11. But it feels like 500
I was also not happy with my clock optimisation, timing is always a bit of an issue, so I again decided to roll back, at least for the moment.
I am not sure at this stage if I will stick with logic chips or if I will replace a whole load of those with a GAL chip or two. I need to build a revision with standard 74HC logic, at least to start with, I can then try out the GAL and see how viable that is.
Once I had moved things around, I had a lot of space left for whatever solution I come up with.
The timing is a bit complicated. The original 6502 has three clock pins, one input and two outputs.
There are 5-10ns gate delays between the outputs. Φ2 is a buffered version of Φ0, and Φ1 is an inverted version of Φ2.
Vintage systems would feed Φ0 from an oscillator (or sometimes video chip or ULA), and then the rest of the system would use the Φ2 output (or Φ1 for some reason on the BBC if I remember correctly).
The VIC20 was a little different, it has lots of clocks going on. The VIC chip has two clock inputs which must be complimentary versions of each other, and two clock outputs, although only one is used.
The 6502 is fed from an inverted version of one of those (which is what the unused clock output is meant to be ?), and the main system clocks S1 and S2 are generated from ORing Φ0 and Φ2. This gives a slightly longer pulse that either of those on their own.
The VIC20-CR further complicated things by also using Φ1 to gate the VIC R/W signal (handily using up four spare gates and a square inch of space from the schematic above).
For the final Mini VIC, I will be using the modern WDC W65C02S. This does things slightly differently. It still has the two clock outputs, but I found in testing on the early Mini PETs that there was some drift in these outputs over time and that was enough to make things unstable on longer term burn in tests. The datasheet states these should not be used.
I notice they have changed the naming, and what was Φ0 (in) is now Φ2 (in). When I disconnected the system clock of the Mini PET from Φ2 (out) and ran everything from one external clock fed to Φ2 (in), everything was suddenly rock solid stable, and it would run for days on end with no issues.
Trying to fit that into the VIC20's clock arrangement is going to be interesting. I have set the revised board up to the original timings, and with a jumper on pin 1*. I can fit either a 6502 or W65C02S on this board. That should allow me to investigate this further and work out the best implementation going forward.
(* pin 1 is a second ground pin on the 6502, but is frustratingly now an output on the W65C02S. Other differences just need a few extra pullup resistors, but that one is a deal breaker)
I managed to get quite far before I realised I had forgotten decoupling caps. I usually add one per chip, but I noticed there were very few on an actual VIC20, so I was going to see how it went with fewer. In the end I decided to leave space for the usual compliment, and maybe try only fitting some of them (or "Muntzing" a working board to see how many I can get away with).
As always, I like to do a neat PCB layout. This one has lots of different busses, so I tried to arrange the parts to let them flow between the chips.
Also as usual, I routed myself into a corner in the middle of the board (I know what I mean), and had fun trying to sort out the routing for all the logic chips.
But I got there in the end. Not as elegant as I would like, but those may end up mostly replaced by a GAL or two which will make things simpler and neater.
GALs are great for dealing with all the address decoding, and replacing all those 74LS138s. And particularly the 74x133, a 13 input NAND gate, which is no longer in production in either it's 74LS or 74HC form.
I had to replace that with two 74HC21's and a 74HC10. (I was able to use the remaining parts elsewhere so not a complete disaster).
That's all routed now, it should be a drop in replacement for a VIC20 or VIC20-CR, with a few extra nice touches.
Made from all modern parts other than the glaring exception of the VIC chip, but hopefully an FPGA based replacement will drop from the skies at some point.
Adverts
You can now get a ZX80 kit for $200.
Sorry, right price, wrong advert.
You can now get a Minstrel 2 kit for $200. 1980s pricing.
Or you can get a Minstrel 3 kit for $200
Patreon
You can support me via Patreon, and get access to advance previews of development logs on new projects and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.