![]() |
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 |
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 !.
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:
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.
!ROMH | !ROML | !IO1 | !OE |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 |
Component: 6810 128 bytes static RAM
Chip select = PHI2 & (!A4) & (!IO2)
Waarheidstabel:
PHI2 | A4 | !IO2 | Chip select (true/false) |
---|---|---|---|
0 | 0 | 0 | F |
0 | 0 | 1 | F |
0 | 1 | 0 | F |
0 | 1 | 1 | F |
1 | 0 | 0 | T |
1 | 0 | 1 | F |
1 | 1 | 0 | F |
1 | 1 | 1 | F |