Der Commodore 64 ist ein 8-Bit-Heimcomputer mit 64 KiB Arbeitsspeicher.Äußerst populär war der von Commodore gebaute C64 Mitte bis Ende der 1980er Jahre sowohl als Spielkonsole als auch zur Softwareentwicklung. Er gilt mit über 17 Mio. verkauften Geräten als der meistverkaufte Heimcomputer weltweit und erfreut sich auch heute noch großer Beliebtheit. Der C64 ermöglichte mit seiner umfangreichen Hardwareausstattung zu einem erschwinglichen Preis einer ganzen Generation von Jugendlichen in den 1980er Jahren erstmals einen Zugang zu einem für diese Zeit leistungsstarken Computer.
Im Gegensatz zu modernen PCs verfügte der C64 über keine internen Massenspeichergeräte. Alle Programme mussten von einem Steckmodul (Cartridge) oder externen Laufwerken, wie dem Kassettenlaufwerk Datasette oder dem 5¼-Diskettenlaufwerk VC1541, geladen werden. Lediglich Grundfunktionen wie der Kernal, der BASIC-Interpreter und zwei Bildschirmzeichensätze waren in drei 8, 8 und 4 KiB großen ROM-Chips gespeichert.
Hardware
Prozessor
Der Prozessor ist ein 6510 (8500 beim C64C/II), eine Variante des 6502 von MOS Technology. Diese Firma wurde von Commodore Mitte der 1970er Jahre aufgekauft, um eine eigene Chip-Fabrik zu haben. Der 6510 hat im Gegensatz zum 6502 einen 6 Bit breiten bidirektionalen I/O-Port, der sich über die Speicheradressen 0 und 1 ansprechen lässt und beim C64 unter anderem dazu genutzt wird, um in einzelnen Speicherbereichen zwischen RAM, ROM und dem I/O-Bereich durch Bank Switching umzuschalten.
Der Prozessor arbeitet mit einer Taktfrequenz von 0,985248 MHz in der PAL-Version und 1,022727 MHz in der NTSC-Version. Der Unterschied ergibt sich daraus, dass im C64 aus der Schwingungsfrequenz nur eines Quarz-Oszillators alle benötigten Frequenzen einfach abgeleitet werden und dass die Farbträgerfrequenzen der beiden Farbübertragungssysteme unterschiedliche Werte haben, die eingehalten werden müssen. In der NTSC-Version stehen so mehr Taktzyklen pro Rasterzeile in der Grafikausgabe zur Verfügung, und auch insgesamt ist die CPU etwas schneller. Deswegen müssen Programme, die besondere grafische Effekte beinhalten, für jede dieser beiden Versionen angepasst werden.
RAM
Der C64 verfügt über 65536 Byte (64 KiB) RAM. Davon sind 38911 Bytes für BASIC-Programme nutzbar. Die Größe des Speichers war für die damalige Zeit sehr üppig (der zwei Jahre ältere Vorgänger VC 20 hat nur 5 KiB Arbeitsspeicher, wovon für die Programmiersprache BASIC lediglich 3,5 KiB nutzbar sind). Zwei Bytes (0 und 1) sind nicht für das RAM nutzbar, hier befindet sich der Prozessorport des 6510.
ROM
Der C64 verfügt über 20 KiB ROM. Etwa 9 KiB davon enthalten in nahezu unveränderter Form den BASIC-V2-Interpreter des älteren Commodore VC 20 (erschienen 1980), der ursprünglich von der Firma Microsoft stammt. In weiteren knapp 7 KiB ist ein Betriebssystem, der sogenannte KERNAL, untergebracht, welcher die Tastatur, den Bildschirm, das Kassetteninterface, die RS-232-Schnittstelle sowie eine serielle IEC-Schnittstelle (den CBM-Bus) zur Ansteuerung von Druckern, Diskettenlaufwerken usw. verwaltet. Auch dieses stammt ursprünglich von älteren Commodore-Maschinen, wurde aber an die veränderte Hardware des C64 angepasst. Die restlichen 4 KiB enthalten zwei Zeichensätze à 256 Zeichen in 8×8-Matrixdarstellung für den Bildschirm. Die Zeichensätze entsprechen dem Commodore-eigenen PETSCII-Standard und enthalten deshalb keine deutschen Umlaute.
Um über verschiedene Versionen hinweg auf Maschinensprachenebene kompatibel zu bleiben, war ganz am Ende des ROM-Bereichs (also kurz vor $FFFF) eine Sprungtabelle angelegt, über die man die wichtigsten Betriebssystemroutinen aufrufen konnte. Commodore hat diese Sprungtabelle vom PET 2001 bis über den C64 hinaus beibehalten. Die Kompatibilität von Anwendungssoftware hat sich allerdings dadurch nicht besonders gesteigert, weil viele Programmierer diese kompatible Methode des Aufrufs schlichtweg ignoriert haben und sie ohnehin nur für rein textbasierte Programme brauchbar war. - Beispiel: Der Aufruf JSR $FFD2 gibt auf jedem Commodore-8-Bit-Rechner den Inhalt des Akkumulators als Zeichen auf den Bildschirm aus.
Grafik
Der Grafikchip des C64 ist ein MOS 6569/8565 (PAL) bzw. MOS 6567 (NTSC). Er bietet:
16 Farben
Durch Ausnutzung einer Besonderheit des PAL-Fernsehstandards (Farbinformationen, Chroma, werden nur jede zweite Zeile aktualisiert) lassen sich durch vertikale Anordnung von verschiedenen Farben neue Farbmischungen erzeugen.
40×25 Zeichen Textmodus (Standard)
8×8 Pixel pro Zeichen, benutzerdefinierte Zeichensätze möglich. Bildschirmweit einheitliche Hintergrundfarbe, je Zeichen wählbare Vordergrundfarbe; bis zu 256 verschiedene Zeichen können gleichzeitig verwendet werden.
40×25 Zeichen Textmodus (Multicolor)
4×8 doppelt breite Pixel pro Zeichen, benutzerdefinierte Zeichensätze möglich. Je Zeichen bis zu vier Farben: drei bildschirmweit einheitliche, eine je Zeichen wählbar; bis zu 256 verschiedene Zeichen können gleichzeitig verwendet werden.
40×25 Zeichen Textmodus (Erweiterte Hintergrundfarben)
Wie Standard-Textmodus, aber nur 64 verschiedene Zeichen, dafür je Zeichen eine von bis zu vier bildschirmweiten Hintergrundfarben wählbar.
160×200 doppelt breite Pixel
im niedrig auflösenden Bitmapmodus (Multicolor). Alle 16 Farben sind mit Einschränkungen verwendbar (drei individuelle Farben je 4×8-Pixel-Block plus eine bildschirmweite Farbe). [1]
320×200 Pixel
im hoch auflösenden Bitmapmodus (Hi-Res). Alle 16 Farben sind mit starken Einschränkungen verwendbar (zwei individuelle Farben je 8×8-Pixel-Block).
Hardware-Scrolling
ein Verschieben des Gesamtbilds um vertikal und/oder horizontal 0 bis 7 Pixel ermöglicht zusammen mit weiterer Verschiebung durch Software ein weiches pixelgenaues Scrolling.
Acht Sprites
mit jeweils 24×21 Pixeln Größe für einfarbige Sprites (12×21 doppelt breite Pixel für Multicolor-Sprites; beide Sprite-Typen können gleichzeitig und in allen Bildschirmmodi verwendet werden). Durch sogenanntes Sprite-Multiplexing war es möglich, die Anzahl der darstellbaren Sprites zu vervielfachen. Bei Kollision von Sprites miteinander oder mit der Hintergrundgrafik kann ein Interrupt ausgelöst werden.
Rasterzeileninterrupts
Interruptanforderung an den Hauptprozessor beim Erreichen einer zuvor durch die Software festgelegten Bildzeile.
Da der VIC nur 14 Adressleitungen besitzt, kann er nur 16 KiB des zur Verfügung stehenden Speichers auf einmal ansprechen. Die zwei fehlenden Adressbits steuert der zweite im C64 verbaute CIA6526-Chip bei. Diese vier Speicherseiten zu 16 KiB verhalten sich nicht gleich -- im Speicherbereich $1000 bis $1fff (bzw. $9000 bis $9fff) wird vom VIC stets das Zeichengenerator-ROM ausgelesen. In diesen Bereichen können daher auch kein Bildschirmspeicher (Text oder Bitmap) und keine Spritedaten abgelegt werden. Umgekehrt muss in den beiden anderen Speicherseiten im Textmodus ein Zeichengenerator im RAM abgelegt werden.
Das Farb-RAM, das aus Sicht des Hauptprozessors an den Adressen $d800 bis $dbff eingeblendet werden kann, ist aus Geschwindigkeitsgründen ein einzelner 1024x4-Bit-SRAM-Chip (µPD2114), der 4 eigene Dateneingänge in den VIC besitzt. Das Farb-RAM muss daher auch nicht in den normalen VIC-Adressraum eingeblendet werden. Genaugenommen besitzt der C64 damit 66048 Byte RAM. Da die letzten 24 Adressen nicht für die Farbdarstellung gebraucht werden, kann man die dahinterliegenden Speicherzellen für Sonderzwecke nutzen.
Der VIC sorgt ebenfalls, wie damals für die Grafikhardware üblich, durch das regelmäßige Auslesen aller Speicherseiten für den nötigen Refresh der DRAM-Chips des C64.
Der C64 ist dank der Rasterzeileninterrupts und des Grafikchipdesigns recht flexibel im Bildaufbau. Viele der hardwaretechnischen Einschränkungen können durch kreative Programmierung und Ausnutzung von vom Hersteller nicht explizit implementierten Nebeneffekten umgangen werden. So lassen sich beispielsweise verschiedene Darstellungsmodi mischen (z. B. obere Bildschirmhälfte Textdarstellung mit Scrolling, untere Bildschirmhälfte Grafik) und auch die acht Sprites mehrfach in verschiedenen Bildbereichen verwenden, so dass viele Spiele weitaus mehr als acht Sprites darstellen können. Durch Ausnutzung von undokumentierten Videochip-Eigenschaften ist auch die Verwendung von zusätzlichen Videomodi möglich, die die Beschränkungen in der Farbwahl und Auflösung teilweise aufheben. Auch der Bildschirmrahmen kann mit einigen Tricks zur Darstellung von Grafik benutzt werden.
Ton
Klänge werden über den dreistimmig polyphonen Soundchip MOS Technology SID 6581 (buskompatibel mit der Prozessorfamilie 65xx) erzeugt, welcher dem C64 damals revolutionäre, weit über andere Heimcomputer hinausgehende Möglichkeiten zur Klangerzeugung verlieh. Spätere C64-Varianten enthielten den 8580. Eigenschaften des SID:
- drei monophone Stimmen
- vier Wellenformen (Subtraktive Synthese) (Dreieck, Sägezahn, Rauschen und Rechteck mit 12bit variabler Pulsbreite)
- drei Amplitudenmodulatoren, jeweils 48 dB
- drei Hüllkurvengeneratoren
+exponentieller Kurvenverlauf
+Anstiegszeit: 2 ms bis 8 sec.
+Abfallzeit: 6 ms bis 24 sec.
+Sustain-(Halte-) Pegel: 0 bis max. Lautstärke
+Ausklingzeit: 6 ms bis 24 sec.
- Synchronisierung der Oszillatoren
- Audioeingang
- Gesamtlautstärkeeinstellung
- 16 Bit Auflösung der Grundfrequenz für jeden der drei Oszillatoren
- 0 Hz bis 4000 Hz Grundfrequenz für die Oszillatoren
- Ringmodulation
- Programmierbare ADSR-Hüllkurven
- Subtraktives Multimode-Filter (Tiefpass, Hochpass, Bandpass oder Notch Filter)
- Programmierbare Filter-Grenzfrequenz
- Programmierbare Filter-Resonanz, steuerbar in 16 Stufen
- 4-Bit-Wiedergabe von Samples durch Ausnutzung einer undokumentierten Eigenschaft; durch entsprechende Programmierung ist auch die Wiedergabe von 12-Bit-Samples unter Verwendung der Pulsbreitenmodulation möglich
- zwei A/D-Wandler, um Paddles oder eine Maus anzuschließen
Vielen Programmierern ist es gelungen, die Drei-Stimmen-Grenze des C64 zu überwinden, indem sie die Akkorde durch sogenannte Arpeggios, d. h. rasches Wechseln von Tönen, bilden, wobei jeweils nur eine Stimme belegt wird. Unter Miteinbeziehung der vierten Stimme des C64 war außerdem die Sample-Wiedergabe möglich. Durch geschicktes Mischen unterschiedlicher Samples war auf Softwareebene außerdem die Wiedergabe mehrerer Samples möglich; dies bedingte jedoch zwangsläufig eine Einschränkung der Wiedergabegenauigkeit (resolution) bzw. der Abspielrate (sample/playback rate), das heißt, die so erzeugten Töne waren weniger gut aufgelöst und ungenauer.
Eine Reihe von bekannten Spielemusikprogrammierern bediente sich dieser Technik. Der Soundmagier Chris Hülsbeck beispielsweise benutzte im Spiel Turrican durch trickreiche Programmierung eine fünfstimmige Soundausgabe.
Zurück
Lizenz / Copyright
Diese Hardware-Artikel stehen alle unter der GNU FDL (GNU Freie Dokumentationslizenz).
Wikipedia ist eine mehrsprachige Enzyklopädie, deren Inhalte frei nutzbar sind und es für immer bleiben werden.



