I've made this project for polish scene guys.
The history of cpu speeder is very long, at beginning few people changed CPU speed by simply xtal swap or by turn PAL machine to NTSC machine. It's easy and working good with all chips on commodore c64 board to frequency about 1.6Mhz, above this speed there is some problem with SID. Of course speeding up in this way cause PAL screen problems.So with a little help with my friends I've started new idea. Why don't we speed up all system chips without speeding up VIC? It took me plenty of sleeplessness nights, but result is as CPU running at 2Mhz speed, without bad lines. CPU stops only during access to VIC and SID because this chips running at 1Mhz.
Then I presented this card to the public some of people wanted to run demos and games with this speeder, so I had to add turbo switch. Now this card looks like this (comercial)
The idea of cpu overclocking is very simple.As you know you have to give higher clock frequency to CPU to make it faster but how we can do it on c64?
In PC it's easy you have BIOS or tweaker to speedup FSB (front side bus) and cpu clock. In c64 you can change only FSB.
All devices conected to fi2 of CPU have to work with higher frequency and there are two chips on board whose are can't work faster without problems: VIC and SID.
Whose chips are in sockets!!! Thanks for this goes to desingers;)
Main concept of TDC is speedup board without SID and VIC.
In this method CPU and other chips are working in speed 1,2,3,4 MHz.
More detailed information in coders section.
TDC registers occupate area of $d02f - $d031.
bit(4) - 4Mhz CPU speed with blank screen, (0-ON),No effect on 2Mhz mode.
contains $f0 value.
Bits (2-7) - dma control (reserved for TDC-F always zero)
Bit (1) - Mixed speed 3/4Mhz, (1-ON)
Bit (0) - 2 Mhz mode without c128 screen bug (1-ON.
Register read, hardware version ($D1 - version 1)
Register write, 8-bit covox output .
Speed settings are available only in „turbo switch mode”. This means you can use CPU speeder by pressing turbo switch. There are only three settings, slow, medium and fast. You can change speed only by turn off C64 , move jumper to correct position and turn power on. After this you can change CPU speed where ever you want by pressing turbo switch to toggle on or off.
On TDC board you can find two sockets for SID. Second SID is in area of $d500.
There is also COVOX on board which means digital to analogue converter with precision of 8 bits. It's connected to SIDs inputs and working with SID filters.
Here 8-bit you can find TDC covox test at 2Mhz speed (code Reiter/Apydia).
In this mode, CPU can run all instructions twice faster than in normal mode with exeptions:
- access to VIC/SID registers.
- cpu is caught in reading or writing to SID or VIC during BA low (bad line).
How to calculate speed?
For example STA $d020 takes 4 cycles in 1MHz=4us, in 2Mhz mode it takes 2us or 3us (and more).
3us or more happens when „write cycle” is trying to write to VIC and VIC takes bus control. Because of this it's „not possible” to write to VIC registers. I've checked not possible and it's possible but you have artefacts on a screen so I've desided to turned it off (read more here csdb ;)
Command NOP takes 1us and cycle exact routines are easer now.
In this mode CPU can do all instructions four times faster with the same exceptions as above.
Command STA $d020 takes from 1,25us to 3us (or more during BA catch CPU) and in view of CPU from 4 cycles to 8 cycles.
Warnings in this mode:
* when you turn off screen the refresh of DRAM depend on you.
* you can't change $01, this register is too slow in CPU, you should set it before e.g. in 1Mhz or 2Mhz mode
Timing example for coder is here VIC&SID
Tools you need: driller + 7-8mm drill, solder + paste, smart tool for removing IC from socket or simply flat (thin) screw driver.
1. Turn OFF C64 power. Disconnect power cable.
2. Remove VIC and SID from socket.
3. Solder one wire as is shown on picture.
4. Drill hole (size 7mm) for turbo switch.
5. Put turbo switch inside hole and screw it.
6. Put VIC and SID into socket in TDC.
7. Put TDC into C64 board.
8. Put Turbo Switch connector in TDC.
9. Check everything once more !!!
10. Connect power cable.
11. Turn ON c64 power.
Q: Is it necessary to use 2 SIDS or can this be disabled?
A: It's not necessary. Only you should move jumper to „SINGLE SID”.
Q: Will it improve performance of GEOS,ACE,WINGS… my own system?
A: Yes, but if software not use 2Mhz, you can only use Turbo Switch Mode.
Q: CPU temperature is rising?
A: I don't feel the difference after hours of testing.
A: 2Mhz mode is compatible only with software made for C128 (in c64 mode).
All software made for c64 should work in Turbo Switch Mode but it depends on speed settings.
Q:i think you mentioned somewhere that the card is compatible with c128 (not the D) ?
if so, i assume i can use it on my c128 (i suppose on c64 mode?)
A: I've made TDC(L) for C64 only. This means C64 works like C128 in C64 mode. I've made only GeoCard for C128.
Q: Hardware compatibility with old/new cards?
A: New 1541U doesn't work in 2Mhz mode at all, Old ActionReplay+clones, Final Cartridge III works only in 1Mhz mode and hangs in 2Mhz. Black Box, FinalCartridge II works with TDC in 1/2Mhz mode. GeoAction works with 1/2/4 Mhz FSB.
„I would recommend to use RAM heatsinks for the chips, specially for the ones that go on the TDC. Radiator ”
Yes it's good idea for all C64 users to keep old chips running as long as possible.