|
|
 |
 |
Commodore C-64 Familie - Blockschaltbild
|
 |
|
 |
Commodore
Beschreibung
in der Sammlung...
C-64
C-64C
C-64G
C-64 "Aldi"
|
CPU (Prozessor)
Die CPU im C-64 heißt 6510 und wurde von der Commodore-Tochterfirma MOS entwickelt und hergestellt. Im wesentlichen handelt es sich um den bekannten 6502-Prozessor des gleichen Herstellers, allerdings um sechs frei programmierbare Ein-Ausgabeleitungen erweitert.
Der Prozessor übernimmt im C-64 - wie in jedem anderen Computer auch - die Abarbeitung der Programme. Dazu muß er auf den Speicher (ROM und RAM) sowie auf die Ein-Ausgabechips zugreifen können. Beim 6502 spricht man bei letzterem von "Memory Mapped I/O", d.h. die Ein-Ausgabechips werden über Register gesteuert, die für den Prozessor als normale Speicherstellen erscheinen. Bei Registern handelt es sich um Speicherzellen auf den Chips, die beim Auslesen Zustandsinformationen enthalten und beim Beschreiben ein Aktion auf dem Chip auslösen.
Um eine Speicherstelle zu lesen, legt der Prozessor die gewünschte Adresse am Adreßbus an und signalisiert über die Leitung "R/W", daß er Daten lesen möchte. Nach einer kurzen Wartezeit liest er den Inhalt des Datenbus aus. Daß zu diesem Zeitpunkt tatsächlich die gewünschten Daten auf dem Datenbus liegen, ist Sache des jeweils abgefragten Bausteins.
Genauso funktioniert das Schreiben von Daten: Der Prozessor legt die Adresse auf den Adreßbus, die Daten auf den Datenbus, signalisiert per "R/W"-Leitung, daß er schreiben will und wartet dann einen Moment. Danach geht er davon aus, daß die Informationen nun geschrieben sind.
Der Zugriff auf die dynamischen RAM-Bausteine funktioniert nicht so einfach, weshalb im C-64 der Videochip "VIC" dem Prozessor dabei unter die Arme greift. Doch dazu mehr im Artikel über den VIC.
PLA (Programmable Logic Array)
Wenn der Prozessor auf eine bestimmte Speicherstelle zugreift, ist es ihm gleichgültig, ob sich dahinter ein ROM- oder RAM-Baustein oder gar ein Ein-Ausgabe-Chip verbirgt. Umgekehrt wissen die verschiedenen Chips nichts über ihre Lage im Adreßraum, sondern erwarten ein Signal an ihrem sogenannten "Chip Select"-Eingang, wenn der Prozessor auf sie zugreifen will.
Der C-64 benötigt also einen Baustein, der am Adressbus lauscht und aufgrund der anliegenden Adresse blitzschnell entscheidet, welcher Baustein gemeint ist und diesem dann ein Chip-Select-Signal liefert. Eigentlich sind es sogar zwei Chips, die dies machen: die Hauptarbeit erledigt die "PLA", die Aufteilung zwischen den Ein-Ausgabe-Chips erledigt ein einfacher Logikchip (74LS139).
Die Aufgabe wird vor allem dadurch verkompliziert, daß der Prozessor nur 64 Kilobyte adressieren kann, im C-64 aber allein schon 64 Kilobyte RAM eingebaut sind. Dazu kommen noch 20 KB ROM, 1 KB Farb-RAM und 4 KB für die Register der Ein-Ausgabe-Chips. Das Problem wird dadurch gelöst, das 3 der Ein-/Ausgabeleitungen des 6510-Prozessors verwendet werden, um die Speicherkonfiguration einzustellen. Die Leitungen sind dazu mit der PLA verbunden und ermöglichen so wahlweise Zugriff auf die ROMs, RAMs oder Register.
Zwei weitere Steuerleitungen führen vom Erweiterungssteckplatz auf der Geräterückseite zur PLA. Darüber können extern angeschlossene ROM-Module die eingebauten ROMs deaktivieren und selbst deren Funktion übernehmen.
ROMs (Read only Memory)
Im C-64 sind gleich drei ROM-Bausteine eingebaut. Zwei davon enthalten das Betriebssystem und den Basic-Interpreter. Die Untergliederung ist jedoch eher theoretischer Natur, im Gegensatz z.B. zu den Atari-Homecomputern ist bei Commodore Basic und Betriebssystem untrennbar miteinander verwoben.
Das Basic-ROM belegt den Adreßraum von hexadezimal A000-BFFF (8 KB), das Kernal-ROM von E000-FFFF (ebenfalls 8KB).
Das Zeichensatz-ROM enthält das Aussehen der Bildschirmzeichen. Normalerweise ist es für den Prozessor unsichtbar, da die darin enthaltenen Informationen nur den Videochip (VIC) interessieren. Man kann es jedoch in den Adreßraum des Prozessors einblenden, z.B. um seinen Inhalt ins Ram zu kopieren und dort zu modifizieren. Der VIC kann daraufhin auch mit der geänderten Kopie des Zeichensatzes arbeiten.
Das Zeichensatz-ROM ist 4 KB groß (2 KB für Großbuchstaben mit Grafikzeichen und 2 KB für Groß-/Kleinbuchstaben) und liegt (wenn es für den Prozessor eingeblendet wird) von D000-DFFF.
RAM (Random Access Memory)
Der C-64 wurde in verschiedenen Varianten gebaut. Die ältesten enthielten acht RAM-Chips. Jeder umfaßt dabei den gesamten Adreßraum von 65536 Speicherstellen, enthält aber zu jeder dieser Speicherstellen nur ein Bit. Jedes im Arbeitsspeicher abgelegte Byte ist also bitweise auf alle acht Speicherchips verteilt.
Der Arbeitsspeicher besteht aus dynamischen RAMs, d.h. die Speicherstellen im Chip sind winzig kleine Kondensatoren. Jeder dieser Kondensatoren kann mit Ladung gefüllt (der Speicherinhalt ist "1") oder geleert (Speicherinhalt "0") werden. Das Problem dabei ist, daß die Kondensatoren sich in relativ kurzer Zeit selbst entleeren und die gespeicherte Information dabei verloren geht. Deswegen benötigen die RAM-Chips regelmäßig sogenannte "Refreshs". Dabei werden die Speicherstellen ausgelesen und damit automatisch auch neu beschrieben.
Da der Videobaustein ohnehin regelmäßig den Bildschirminhalt aus dem Arbeitsspeicher auslesen muß, ist er dafür prädestiniert, auch beim übrigen Speicher für den Refresh zu sorgen. Daher ist der VIC im C-64 mit der Verwaltung des Speichers betraut. Dabei übernimmt er auch die korrekte Adressierung der Speicherstellen. Die RAMs sind nämlich als Matrix aufgebaut und verlangen die Adressierung getrennt in Spalten und Zeilen.
Color-RAM
Im Kapitel über den VIC wurde es bereits angesprochen: Jedes Zeichen im Textmodus kann eine eigene Vordergrundfarbe haben, die aus sechzehn Farben gewählt werden kann. Dasselbe gilt für die Grafikmodi, wobei hier Blöcke von 8x8 Pixeln (Hires) bzw. 4x8 Pixeln (Lores) dieselbe Farbe erhalten. Daraus resultiert dieselbe Anzahl nötiger Speicherplätze für die Farbinformationen, nämlich 40x25 = 1000.
Da nur sechzehn Farben möglich sind, genügen für diesen Speicher vier Bit Datenbusbreite. Damit die Farbinformationen parallel zu den zugehörigen Zeichen gelesen werden können, besitzt der VIC vier zusätzliche Datenleitungen (D8-D11). Als Speicherchip wird ein 2114 verwendet, der als statisches RAM keinen Refresh benötigt und genau 1K x 4Bit groß ist.
VIC (Video Interface Controller)
Was den C-64 zu seiner Zeit so einzigartig machte, beruht hauptsächlich auf den Fähigkeiten des VIC-2. Es gab auch einen VIC-1 - der war im VC-20 für die Bildschirmausgabe zuständig.
Der VIC-2 beherrscht die Darstellung von Text mit 40 Zeichen in 25 Zeilen. Für den gesamten Text kann eine Hintergrundfarbe und eine Rahmenfarbe festgelegt werden, zudem kann jedes Zeichen individuell eingefärbt werden. 16 Farben stehen für HIntergrund, Rahmen und Zeichenfarben zur Verfügung. Der Zeichenvorrat beträgt 256 Zeichen, wobei im C-64 128 davon invertierte Abbilder der übrigen 128 sind.
Im hochauflösenden Grafikmodus sind 320 x 200 Bildpunkte einzeln ansteuerbar. Für Hintergrund und Rahmen gilt dasselbe wie beim Textmodus. Die Bildpunkte können in Blöcken von 8x8 Pixeln eingefärbt werden.
In der Lores-Grafik werden jeweils zwei horizontale Bildpunkte zusammengafaßt, was eine Auflösung von 160 x 200 ergibt. Jeder Punkt kann nun eine von vier Farben haben: Die Hintergrundfarbe, die für den aktuellen Pixelblock festgelegte Vordergrundfarbe oder eine von zwei für das ganze Bild festgelegten Farben.
In allen Modi kann der VIC zusätzlich sogenannte "Sprites" darstellen. Das sind bis zu acht kleine Grafikobjekte, die pixelgenau positioniert werden können. Sprites können sich überlagern und wahlweise vor oder hinter dem übrigen Bildschirminhalt erscheinen. Zudem kann der VIC Kollisionen von Sprites untereinander oder von Sprites mit dem Bildinhalt melden. Wie bei der Grafik gibt es auch bei den Sprites zwei Varianten: Hires-Sprites sind 24x21 Bildpunkte groß, werden jedoch nur einfarbig angezeigt. Lores-Sprites fassen je zwei horizontale Bildpunkte zusammen, haben also nur eine Auflösung von 12x21 Bildpunkten, können jedoch neben dem transparenten Hintergrund noch drei weitere Farben verwenden.
TV-Modulator
Der VIC liefert das Bild aufgeteilt in ein BAS-Signal (Synchronisations und Helligkeitsinformationen, ausreichend für einen Monochrommonitor) und ein separates Farbsignal. Viele Monitore und auch Fernsehgeräte mit Videoeingang benötigen jedoch ein kombiniertes Signal, das "FBAS" genannt wird.
Um Fernsehgeräte anzusteuern, die nur einen Antenneneingang haben, muß der C-64 ein Signal liefern, das auf eine Trägerfrequenz aufmoduliert ist. Sowohl das FBAS-Signal als auch das Antennensignal erzeugt der TV-Modulator. Es handelt sich dabei nicht um einen Chip, sondern um einen kleinen Blechkäfig, der mit allerhand Kleinkram (Widerstände, Kondensatoren, Transistoren) aufgefüllt ist.
SID (Sound Interface Device)
Der SID ist ein echter kleiner Synthesizer. Er hat drei Stimmen, die wahlweise ein Dreiecks-, ein Sägezahn-, ein Rechteck- oder ein Rauschsignal erzeugen können. Zudem kann für jede Stimme die Hüllkurve, also der Lautstärkeverlauf, mit vier Parametern angegeben werden: Die Anschwellzeit (attack), die Zeit (decay), bis der Ton auf den Dauerpegel (sustain) abgefallen ist und die Zeit (release), bis der Ton nach dem Abschalten ganz verklungen ist.
Darüber hinaus kann das Ausgangssignal gefiltert (Hoch-, Tief-, Bandpaß) werden, wobei der SID auch ein extern eingespeistes Audiosignal manipulieren kann. Verschiedene Möglichkeiten der Verknüpfung der Stimmen untereinander und der Modulation erzeugen interessante, meist jedoch wenig ästhetische Geräusche.
Neben der Sounderzeugung enthält der SID noch zwei A/D-Wandler, die für die Abfrage der Paddleeingänge genutzt werden. Das Wandlerverfahren ist allerdings etwas unkonventionell und dadurch leider ziemlich ungenau: Ein Kondensator wird über den Potentiometer im Paddle aufgeladen und die Zeit bis zum Erreichen eines bestimmten Spannungspegels gemessen. Daraufhin wird der Kondensator wieder geleert und der nächste Meßzyklus kann beginnen. Die gemessene Zeit ist dann als Paddlewert abrufbar. Da der zeitliche Verlauf einer Kondensatorladung exponentiell ist, muß der Potentiometer im Paddle eine logarithmische Kennlinie besitzen, damit die vom SID gelieferten Paddlewerte einigermaßen linear werden.
CIAs (Complex Interface Adaptor)
Die CIA ist im C-64 zweimal vertreten. Sie enthält 16 frei programmierbare Ein-/Ausgabeleitungen mit Handshake, ein Schieberegister für serielle Ein-/Ausgabe, zwei Timer und eine Echtzeituhr mit Alarm.
Die erste CIA ist vorwiegend für die Tastatur und die Abfrage der Joysticks zuständig. Die Tastatur ist hierzu als Matrix mit acht Zeilen und acht Spalten verschaltet. Die mit den acht Spaltenleitungen verbundenen Anschlüsse der CIA sind als Eingänge geschaltet, die mit den Zeilenleitungen verbundenen ebenso. Fünfzig mal pro Sekunde frägt der C-64 die Tastatur ab. Dazu wird eine der Zeilenleitungen als Ausgang mit dem Pegel "0" geschaltet und geprüft, ob einer der Spalteneingänge ebenfalls den Pegel "0" annimmt. Das würde bedeuten, daß die Taste am Kreuzungspunkt der Zeilen- mit der Spaltenleitung gedrückt ist. Genauso wird anschließend mit den übrigen sieben Zeilenleitungen verfahren.
Jeweils fünf der Zeilen- bzw. Spaltenleitungen werden zudem für die beiden Joystickports benötigt: Vier für die vier Richtungen und eine für die Feuertaste. An einem der Handshake-Eingänge der ersten CIA kommen die Lesedaten der Datasette an.
Die zweite CIA steuert den seriellen IEC-Bus. Dafür werden normale Ein-/ Ausgabeleitungen verwendet, der gesamte Handshake ist per Software realisiert.
Alle übrigen Leitungen der zweiten CIA sowie der serielle Ein-/Ausgang und die zugehörige Taktleitung der ersten CIA sind am Userport aufgelegt. Dieser ist für Basteleien verwendbar, es gab aber auch fertige Geräte dafür zu kaufen, z.B. EPROM-Brenner, serielle RS232- oder Midi-Schnittstellen. |
|
|