KCS Power Cartridge

Over de cartridge

De beroemde KCS Power Cartridge is in de 80'er jaren
gemaakt voor de Commodore 64, door het bedrijf
K.C.S. (Kolff Computer Supplies).
Mijn dank is groot aan Dhr. K. Kolff van K.C.S., voor toestemming van het reverse-engineeren van de cartridge.

C64 wordt opgestart met de KCS cartridge

Na indrukken van cartridge Freeze knop

Velen hebben mooie herinneringen aan deze cartridge, en diverse hobbyisten gebruiken deze cartridge nog hedendaags.
Ik gebruikte in de eind jaren-80 t/m begin jaren-90 deze cartridge vooral om machinetaal te programmeren. (kleine testprogramma's, demo's en intro's)

Sinds enkele jaren ben ik geïnteresseerd geraakt naar de interne werking van de Power Cartridge, om met die kennis een ondersteuning te kunnen
maken voor mijn eigen C64 emulator, "C64EMU". Deze C64 emulator is nog steeds in ontwikkeling, alleen niet in een hoog tempo.
Af en toe een paar uurtjes in de week zijn de momenten waar ik gebruik van maak om verder te gaan met programmeren aan de C64EMU.
Geïnteresseerd? Klik hier voor de pagina over mijn C64 Emulator !.

Reverse engineering, hoe het begon...

Ik ben begonnen met het inscannen van de componentzijde en de printzijde van de cartridge.
Om het herleiden van de verbindingen tussen componenten een stuk eenvoudiger te maken, heb ik de onderzijder gespiegeld over de X-as.
Hierdoor komen de posities van soldeer eilandjes exact overeen in beide scans. Klik op een afbeelding om een grotere versie te bekijken:

30 januari 2010 ben ik begonnen met de uitdaging om de cartridge eens nader te onderzoeken, en een hardware schema te tekenen.
Het resultaat is hier te zien; klik op onderstaande afbeelding voor de PDF versie.
(Rechtsklik op onderstaande afbeelding, kies "Afbeelding opslaan als..." om de PDF op te slaan, 22 KB groot).

Dit is mijn eerste versie van het hardware schema van de KCS Power Cartridge (PDF, 22 KB). Ik heb het schema getekend met Orcad Capture versie 9.2.
Ik weet nog niet 100% zeker of ik werkelijk alle verbindingen gecontroleerd heb, en of alles klopt.
Mogelijk komen er later nog kleine wijzigingen in het schema. Ondanks dat het gaat om een printje uit de jaren-80, is het al met al best complex om uit te zoeken hoe alles op elkaar is aangesloten.
Ik vond het zonde om de IC's uit de print te solderen. Sommige printspoortjes lopen namelijk onder IC's door, of gaan onder een IC door naar de andere zijde van de print.
Ik heb een aantal van deze cartridges thuis liggen, waarvan twee exemplaren waarbij alle IC-typenummers leesbaar zijn.
KCS heeft toentertijd in de meeste cartridges de typenummers weggekrast/weggeschuurd om zodoende reverse engineering erg lastig zo niet onmogelijk te maken.

Van de gebruikte IC's in deze cartridge kun je hieronder de datasheets vinden:

Omdat ik geen datasheet kon vinden van dit custom IC, heb ik een link geplaats naar een datasheet van een gangbaar 27(c)128 ROM type.

Werking van de KCS Power Cartridge en overige details

De beschrijving hieronder is mogelijk nog niet compleet; als ik meer te weten ben gekomen wordt dat op deze pagina bijgewerkt.

Hier volgt een technische beschrijving:

Component: 27128 16K ROM. In het geheugen is de cartridge aanwezig op de volgende adressen:
$8000-$9fff 8K ("zichtbaar" als !EXROM signaal laag is)
$a000-$bfff 8K ("zichtbaar" als !GAME signaal laag is)
PHI2 is een kloksignaal. Deze is op een fractie van enkele nanoseconden na, gelijk aan de systeemklok van de c64.
De 74LS175 bevat 4 flip-floppen. De algemene functie van dit IC is het inschakelen van de hele rom, of een helft ervan.
De signalen !EXROM en !GAME die van dit IC afkomen zijn sowieso vertraagt met 1 klokpuls.
De 74LS175 flipflops worden geklokt middels een signaal die van de 74LS00 afkomt, pin 8.
Dit signaal van de 74LS00 is afgeleid van PHI2 klok, !I/O1 en pin 8 van de 74LS90 (counter, 2-deler en 5-deler).
De outputs op pin2 en pin10 van de 74LS175 gaan naar twee databuslijnen, D6 en D7. Het is mij nog niet duidelijk wat er precies met de databusbits D7 en D6 gebeurd. Het is wel zo aangesloten. Hier moet ik nog verder naar kijken.

De 74LS90 wordt op pin 1 geklokt door een samengesteld signaal, afkomstig van PHI2 en de R/!W lijn van de 6510 CPU.
De drukknop op de cartridge zorgt voor een reset van de 74LS90. Dat zorgt ervoor dat de flip-flops van deze counter in een bepaalde beginstand worden gezet.
Pin 11 van de 74LS90 is teruggekoppeld naar een ingang, pin 6. Hierdoor wordt de counterwaarde van de 5-deler begrenst, en wordt interne reset in dit IC bewerkstelligt zodat de 5-deler flip-flops weer een beginstand krijgen.

Output enable ROM = (!IO1 = 0) | !(!ROMH & !ROML)

Waarheidstabel voor !OE van 27128 ROM:
!ROMH!ROML!IO1!OE
0000
0010
0100
0110
1000
1010
1100
1111

Component: 6810 128 bytes static RAM
Chip select = PHI2 & (!A4) & (!IO2)
Waarheidstabel:
PHI2A4!IO2Chip select (true/false)
000F
001F
010F
011F
100T
101F
110F
111F