Hello World,
Peripherie für den C64 wird rar, das ist kein Geheimnis. Alles, was wir uns heute noch an Originalzubehör und Ersatzteilen kaufen, sind Restposten und Gebrauchtartikel. Nur wenige Firmen existieren noch, die neue Hardware für den C64 entwickeln - aber auch deren Zahl schrumpft zusehends: Umso erschreckender sind dann die Gerüchte wie das folgende: CMD, bekannt als die letzte professionelle Hardwareschmiede für C64 und C128, will keine neue Hardware mehr auf den Markt bringen will. Und wer kann es ihnen verdenken? Nur wenige Enthusiasten sind bereit, noch Geld in ihren alten Commodore zu investieren. Doch gute Hardware zu entwickeln braucht Zeit und kostet Geld. Geld, das auch wieder hereinkommen muß, ganz davon abgesehen, daß die Entwickler auch über ein Einkommen verfügen wollen.
Alles wäre indes so viel einfacher, würde der C64 über einen standardisierten Bus verfügen. Somit wäre es nicht nötig, speziell für den C64 zu entwickeln, denn dieser könnte ohne Probleme auf einen Pool von für diesen Bus entwickelte Peripherie zurückgreifen. Daß dies kein Problem darstellt, zeigt z.B. der PCI-Bus, welcher auf verschiedensten Architekturen (Intel, Sparc, Alpha, PPC) vertreten ist. Schade nur, daß der C64 für diesen Bus viel zu langsam ist, er könnte die bei PCI üblichen Taktraten weder liefern geschweige denn verarbeiten.
Doch es gibt einen anderen, weit verbreiteten Bus, der sich für den C64 adaptieren ließe: den ISA-Bus. Dieser Bus wurde ursprünglich für die sogenannten PC/XT entwickelt und somit ähnlich alt wie der C64. Dies zeigt sich auch in der Taktrate, denn der ISA-Bus kennt hier als Basistaktfrequenz die 4.77MHz, in der Turboversion 14,31818MHz (für eine davon muß man sich entscheiden). Diese schauen zunächst nicht danach aus, als könnte man dies irgendwie mit dem C64 in Verbindung bringen, denn hier haben wir 0,985 (1,0228) MHz Prozessortakt bzw. 7,88 (8,18) MHz Pixeltakt (die Zahlen in Klammern geben die Taktraten für NTSC-Rechner an). Hinzu kommt, daß der 4.77MHz-Takt ein Tastverhältnis (Verhältnis von Low- zu High-Phase der Taktperiode) von 33% aufweist, der C64 kennt jedoch nur eine symmetrische Taktung, d.h. das Tastverhältnis beträgt 50%. Glücklicherweise ist jedoch das Tastverhältnis des ISA-Turbotaktes ebenfalls 50%. Schaut man sich nun nochmals diese 14.31818MHz an, so fällt auf, daß dies ziemlich genau 14x der NTSC-Prozessortakt ist, eine etwas größere Abweichung ergibt sich beim PAL-Prozessortakt - an den ISA-Bus angeschlossener Hardware ist das nun relativ egal (einzig Karten, die versuchen, aufgrund dieses Taktes ein FBAS oder Y/C Videosignal zu erzeugen, kämen aus dem Tritt). Ebenfalls denkbar wäre auch die Generierung des asymmetrischen 4,77MHz-Takt, die allerdings etwas aufwendiger wäre - synchronisieren können wir den C64 also mit dem ISA-Bus, wenn wir auch etwas Logik dazwischen brauchen, um die Busgeschwindigkeiten anzupassen. "Waitstate" heißt hier das Zauberwort - sprich, das schnellere Gerät (in dem Falle der Bus bzw. die Busbridge, also das Verbindungsglied zwischen C64 und ISA-Bus) muß auf das langsamere Gerät (den C64) warten.
Nun hat der ISA-Bus allerdings sehr viele DMA- und Interruptleitungen, der C64 nur jeweils eine. Um diese zu verarbeiten, gibt es aber zum Glück Spezialbausteine, den 8259 (Interruptcontroller) sowie den 8237 (DMA-Controller). Aus technischen Gründen braucht letzterer noch Hilfe von einem Adreßpuffer, dem 8212. Diese Bausteine sind glücklicherweise noch alle erhältlich und sogar verhältnismäßig preiswert (unter DM10 pro Stück). Zum reibungslosen Zusammenspiel all dieser Bausteine fehlt allerdings noch ein weiterer: der Buscontroller (8284).
Soweit, so gut. Allerdings wurde dieser Buscontroller für die 8088-Prozessoren von Intel entworfen und weist somit ein paar prozessortypische Eigenheiten auf, die wir noch in den Griff bekommen müssen: Um korrekt funktionieren zu können, braucht er nämlich vom Prozessor bestimmte Informationen über seinen aktuellen Arbeitszustand und welche Speicherbereiche adressiert werden (der 8088 kennt nämlich eigene Speicherbereiche für Ein-/Ausgabe und RAM). Dies läßt sich ebenfalls über eine Hilfsschaltung regeln, die man am besten gleich in die Busbridge (s.o.) integriert.
Prinzipiell ist es somit möglich, dem C64 zu einem ISA-Bus zu verhelfen, wodurch eine Vielzahl gängiger Einsteckkarten genutzt werden kann. Aufgrund der höheren Taktrate auf dem ISA-Bus werden DMA-Zugriffe allerdings stark ausgebremst. Hier muß die Busbridge dafür sorgen, daß der C64 nicht "überfahren" wird. Immerhin will der VIC auch alle paar Takte auf das RAM zugreifen, das darüberhinaus mit einer Datenrate von 14MHz mehr als überfordert wäre.
Gefragt sind hier findige Hardwarebastler, eine sinnvolle Lösung zu erarbeiten - denn so könnte man auf eine Vielzahl vorhandener PC-Hardware zugreifen. Sicherlich ist solch ein Busadapter alles andere als trivial und nur etwas für erfahrene Hardwarefreaks und auch jeder noch so gute Adapter kann nicht darüber hinwegtäuschen, daß der ISA-Bus eigentlich ein PC-Bus ist: Dies merkt man spätestens dann, wenn Geräte über ein eigenes BIOS verfügen. Dies bedeutet, daß sie Ergänzungen zum PC-Betriebssystem mitbringen und in dieses direkt eingebunden werden - beim C64 natürlich unmöglich.
Um die Software kommt man allerdings ohnehin nicht herum, denn wie für jedes Peripheriegerät müssen natürlich auch für ISA-Bus-Geräte Treiber geschrieben werden, um diese nutzen zu können. Immerhin spart man sich mit einem solchen Busadapter jedoch die aufwendige und teure Hardwareentwicklung, da man auf einen großen Pool bereits existierender Geräte zugreifen kann. Hinzu kommt, daß durch die industrielle Massenfertigung von PC-Hardware diese ungleich billiger als ähnlich leistungsfähige Kleinserienhardware ist. Den Benutzer freut's, bekommt er doch mehr für's Geld.
Klingt gut, findet Ihr? Dann nichts wie ran. Eigeninitiative ist heute mehr denn je gefragt. Und wer weiß, vielleicht hat ja jemand solch eine Elektronik bereits als Entwurf oder gar fertig in der Bastelkiste - ich würde mich freuen, an dieser Stelle darüber berichten zu können.
Euer Rainer