|
|
|
|
|
|
|
|
Eine der beiden CPUs im C-128 heißt 8502 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. Damit scheint er mit dem 6510 aus dem C-64 identisch zu sein. |
|
|
Der Prozessor übernimmt im C-128 die Abarbeitung der Programme im C-128- und im C-64-Modus. Dazu muss 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 eine Aktion auf dem Chip auslösen. |
|
|
Um eine Speicherstelle zu lesen, legt der Prozessor die gewünschte Adresse am Adressbus an und signalisiert über die Leitung "R/W", dass er Daten lesen möchte. Nach einer kurzen Wartezeit liest er den Inhalt des Datenbus aus. Dass 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 Adressbus, die Daten auf den Datenbus, signalisiert per "R/W"-Leitung, dass er schreiben will und wartet dann einen Moment. Danach geht er davon aus, dass 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. |
|
|
Die zweite CPU im C-128 ist ein Z80A der Firma Zilog. Sie wird benötigt, um CP/M-Programme abarbeiten zu können. Da sich beide Prozessoren den Daten- und Adressbus teilen, kann immer nur einer der beiden aktiv sein, der andere wird solange abgeschaltet. Die Steuerung, welcher Prozessor aktiv ist, erledigt die MMU. |
|
|
|
|
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 Adressraum, sondern erwarten ein Signal an ihrem so genannten "Chip Select"-Eingang, wenn der Prozessor auf sie zugreifen will. |
|
|
Der C-128 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. Diese Aufgabe erledigt die MMU. |
|
|
Da beide Prozessoren nur 64 Kilobyte adressieren können, im C-128 aber allein schon 128 Kilobyte RAM eingebaut sind, wird die Sache kompliziert. Dazu kommen noch 84 KB ROM, 1 KB Farb-RAM, 4 KB für die Register der Ein-Ausgabe-Chips und das Ganze im Verbund mit zwei Prozessoren. Die MMU muss also noch eine ganze Menge mehr leisten, als die PLA im C-64. Es genügt auch nicht mehr, die Speicherkonfiguration über ein paar Statusleitungen einzustellen. Die MMU ist ein vollwertiger Peripheriechip mit eigenen Konfigurationsregistern. Um zum C-64 kompatibel zu bleiben, gibt es allerdings nach wie vor zusätzlich die Steuerung über 3 der Ein-/Ausgabeleitungen des 8502-Prozessors. |
|
|
Zwei weitere Steuerleitungen führen vom Erweiterungssteckplatz auf der Geräterückseite zur MMU. Darüber können extern angeschlossene ROM-Module die eingebauten ROMs deaktivieren und selbst deren Funktion übernehmen. |
|
|
|
|
Im C-128 sind - je nach Modell - bis zu sechs ROM-Bausteine eingebaut. Alle bis auf eines enthalten Betriebssystem und Basic-Interpreter. |
|
|
Das letzte ROM heißt Zeichensatz-ROM und 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 Adressraum 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. |
|
|
Für den Betrieb im 80-Zeichen-Modus wird der Inhalt des Zeichensatz-ROMs in den Videospeicher des VDC kopiert. 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-128 enthält sechzehn RAM-Chips. Jeder umfasst dabei einen Adressraum von 65536 Speicherstellen, enthält aber zu jeder dieser Speicherstellen nur ein Bit. Jedes im Arbeitsspeicher abgelegte Byte ist also bitweise auf 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, dass die Kondensatoren sich in relativ kurzer Zeit selbst entleeren und die gespeicherte Information dabei verloren geht. Deswegen benötigen die RAM-Chips regelmäßig so genannte "Refreshs". Dabei werden die Speicherstellen ausgelesen und damit automatisch auch neu beschrieben. |
|
|
Da der Videobaustein ohnehin regelmäßig den Bildschirminhalt aus dem Arbeitsspeicher auslesen muss, ist er dafür prädestiniert, auch beim übrigen Speicher für den Refresh zu sorgen. Daher ist der VIC im C-128 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 |
|
|
|
|
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. Im C-128 spielt dieser Baustein nur noch die zweite Geige - für professionelle Anwendungen sind 80 Zeichen/Zeile Pflicht und da kann der VIC nicht mehr mithalten. Für den C-64-Modus wird er jedoch weiterhin benötigt und deswegen ist der C-128 mit zwei Videochips ausgestattet. |
|
|
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-128 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 zusammengefasst, 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 so genannte "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. |
|
|
|
|
Der VDC ist das Herzstück einer kompletten zweiten Video-Einheit im C-128. Er hat erstaunliche Fähigkeiten, kann z.B. hochauflösende Grafik in 640 x 200 Punkten darstellen. Leider wird dies vom Basic des C-128 nicht unterstützt. |
|
|
Der größte Nachteil ist die umständliche Anbindung ans System: Der Videospeicher des VDC ist vom Bus des C-128 komplett getrennt und kann nur über zwei Register des VDC angesprochen werden. Das ist um ein vielfaches langsamer als ein direkter Speicherzugriff, was sich vor allem beim Scrollen oder beim Neuaufbau des gesamten Bildes bemerkbar macht. Vielleicht hat Commodore deshalb auf die Unterstützung der Grafikfähigkeiten des VDC verzichtet... |
|
|
|
|
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-, Bandpass) 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 Messzyklus kann beginnen. Die gemessene Zeit ist dann als Paddlewert abrufbar. Da der zeitliche Verlauf einer Kondensatorladung exponentiell ist, muss der Potentiometer im Paddle eine logarithmische Kennlinie besitzen, damit die vom SID gelieferten Paddlewerte einigermaßen linear werden. |
|
|
|
|
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 fragt 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, dass 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. |
|
|
|