Meine aktuellen Projekte

von Olaf Zimmermann

6502-Selbstbauprojekt und Z80-Projekt auf Basis des NKC

6502-Selbstbauprojekt

Rechts im Bild ist der aktuelle Stand meines 6502-Selbstbauprojekts zu sehen. Der Aufbau ist bewusst offen gehalten: CPU, Speicher, Ein-/Ausgabe und Buslogik sitzen auf steckbaren Platinen, so dass die Signale nicht verborgen bleiben, sondern direkt verfolgt und gemessen werden können. Ziel ist nicht nur ein funktionierender Rechner, sondern ein nachvollziehbarer Aufbau, an dem sich die Arbeitsweise eines klassischen 8-Bit-Mikroprozessors Schritt für Schritt untersuchen lässt.

Die Grundlage bildet ein 6502-System mit gemeinsamem Adressbus, Datenbus und den zentralen Steuersignalen. Zum Aufbau gehören unter anderem RAM, EEPROM und ein VIA-Baustein W65C22 für Ein- und Ausgabe. Die Busleitungen sind auf der Front sichtbar gemacht. Die LED-Reihen zeigen Adressleitungen, Datenleitungen und wichtige Steuersignale wie Takt, Reset, R/W, Chip-Select und Enable an. Dadurch lässt sich bereits mit bloßem Auge erkennen, ob der Prozessor läuft, ob Speicher angesprochen wird und ob Lese- oder Schreibzugriffe stattfinden.

Ein wichtiger Punkt des Projekts ist die korrekte Einbindung des Speichers. Der 62256-RAM und das EEPROM werden über eine eigene Adressdekodierung angesprochen. Die Lese- und Schreibsignale werden so geführt, dass Speicherzugriffe nur im passenden Taktabschnitt erfolgen. Damit ist der Aufbau zugleich ein praktisches Experiment zur Speicherorganisation: Reset-Vektor, ROM-Bereich, RAM-Bereich und I/O-Bereich lassen sich nicht nur theoretisch beschreiben, sondern am realen Bus beobachten.

Der VIA W65C22 ist für die weitere Ausbaustufe besonders wichtig. Über ihn sollen Ein- und Ausgänge gezielt angesprochen werden, etwa zur Ansteuerung von LEDs, zur Abfrage von Tastern oder für weitere Peripherie. Der Aufbau macht damit den Übergang vom reinen Prozessor- und Speicherexperiment zu einem vollständigen kleinen Mikrocomputersystem sichtbar.

Das auf der letzten Steckkarte zu erkennende kleine Display gehört zu einer auf Basis eines RPI entwickelten Diagnosehilfe für den 6502-Bus. Es liest ausgewählte Signale des Rechners aus und stellt sie übersichtlich dar. Damit ergänzt es die LED-Anzeigen um eine genauere Beobachtungsmöglichkeit.

Das Auslesegerät kann anzeigen, welche Adresse gerade anliegt, welche Daten auf dem Bus stehen und in welchem Zustand sich wichtige Steuersignale befinden. Auf diese Weise lassen sich Verdrahtungsfehler, falsche Dekodierung oder unerwartete Buszustände schneller eingrenzen.

Z80-Projekt auf Basis des NKC

Links im Bild ist mein Z80-Projekt auf Basis des NKC, des NDR-Kleincomputers, zu sehen. Im Unterschied zum 6502-Selbstbauprojekt handelt es sich hier um ein modulares Rechnersystem. Der NKC besteht aus einzelnen Baugruppen für CPU, Speicher, ROM, Ein-/Ausgabe, serielle Schnittstelle, Grafik, Tastatur und Massenspeicher. Diese Modularität macht den NKC besonders interessant, verlangt aber auch eine genaue Abstimmung der Karten, Adressen und Monitorprogramme.

In meinem Aufbau spielt die Bank-Boot-Karte eine zentrale Rolle. Über sie können unterschiedliche ROM- und Monitorprogramme verwendet werden. Das ist wichtig, weil der praktische Betrieb des NKC stark davon abhängt, welches Grundprogramm, welches BASIC und welche Ein-/Ausgabekarten eingesetzt werden. Fragen wie Startadresse, ROM-Bank, I/O-Adresse, serielle Schnittstelle und Speicherkonfiguration gehören deshalb unmittelbar zum Projekt.

Auch beim NKC wird der Bus sichtbar gemacht. Die Anzeigeplatine zeigt typische Z80-Signale wie MREQ, IORQ, RD, WR, M1, Reset, Interrupt und weitere Buszustände. Damit lässt sich erkennen, ob der Prozessor auf Speicher oder auf Ein-/Ausgabe zugreift und ob ein Programm überhaupt sauber startet. Gerade beim NKC ist diese Beobachtung wichtig, weil Fehler oft nicht an einem einzelnen Bauteil liegen, sondern an der Kombination von ROM, Speicherkarte, I/O-Adresse und verwendeter Software.

Der aktuelle Schwerpunkt liegt darauf, den NKC praktisch nutzbar zu machen: Monitorprogramm starten, BASIC verwenden, Programme speichern und laden, serielle Kommunikation mit dem PC herstellen und moderne Speichermöglichkeiten wie USB- oder Diskettenersatzlösungen einbinden. Dazu gehören auch Experimente mit seriellen Schnittstellen, VDIP-/USB-Modulen, Floppy- beziehungsweise Floppy-Ersatzlösungen und passenden Monitorprogrammen wie Grundprogramm oder Flomon.

Gemeinsamer Ansatz

Beide Projekte verfolgen denselben technischen Ansatz, aber auf unterschiedliche Weise. Das 6502-Projekt zeigt den Aufbau eines Mikrocomputers von der Grundschaltung her: CPU, RAM, ROM, VIA, Takt, Reset, Bus und Dekodierung. Der NKC zeigt dagegen ein historisch gewachsenes, modulares Z80-System, bei dem mehrere Karten, ROM-Versionen und Erweiterungen zusammenspielen müssen.

Gemeinsam ist beiden Projekten der Wunsch, 8-Bit-Computer nicht nur zu sammeln oder zu betreiben, sondern ihre innere Arbeitsweise sichtbar zu machen. Die offenen Aufbauten, die LED-Anzeigen und das RPI-Auslesegerät dienen genau diesem Zweck: Sie machen die Vorgänge auf dem Bus verständlich und zeigen, wie aus einzelnen Signalen ein funktionierendes Computersystem entsteht.

Glossar

BASIC: Programmiersprache, die auf vielen 8-Bit-Computern als leicht zugängliche Sprache für eigene Programme verwendet wurde.

CPU: Central Processing Unit; der eigentliche Prozessor des Computers. Er führt Befehle aus und steuert Speicher- und Ein-/Ausgabezugriffe.

EEPROM: Electrically Erasable Programmable Read-Only Memory; elektrisch löschbarer und wiederbeschreibbarer Festwertspeicher, oft für Monitorprogramme oder Betriebssystemteile genutzt.

I/O: Input/Output; Ein- und Ausgabe eines Computers, zum Beispiel Tastatur, serielle Schnittstelle, LEDs, Taster oder andere Peripherie.

IORQ: Input/Output Request; Z80-Steuersignal, das einen Zugriff auf den Ein-/Ausgabebereich kennzeichnet.

LED: Light Emitting Diode; Leuchtdiode. In den Projekten werden LEDs zur Anzeige von Busleitungen und Signalzuständen verwendet.

M1: Z80-Steuersignal für den Maschinenzyklus 1. Es zeigt insbesondere an, dass der Prozessor einen Befehlscode aus dem Speicher holt.

MREQ: Memory Request; Z80-Steuersignal, das einen Speicherzugriff kennzeichnet.

NDR: Norddeutscher Rundfunk. Der NDR-Kleincomputer wurde im Umfeld der NDR-Computerprojekte bekannt.

NKC: NDR-Kleincomputer; modularer Computerbaukasten mit getrennten Karten für Prozessor, Speicher, Ein-/Ausgabe, Grafik und weitere Erweiterungen.

PC: Personal Computer. In diesem Zusammenhang meist der moderne Rechner, der zur seriellen Kommunikation, zum Speichern von Programmen oder zur Diagnose verwendet wird.

RAM: Random Access Memory; Arbeitsspeicher. Der Inhalt kann gelesen und geschrieben werden, geht aber normalerweise beim Ausschalten verloren.

RD: Read; Z80-Steuersignal für einen Lesezugriff.

ROM: Read-Only Memory; Festwertspeicher. Er enthält dauerhaft gespeicherte Programme, zum Beispiel Monitorprogramme oder Startcode.

RPI: Raspberry Pi; kleiner Einplatinencomputer. Im Projekt wird er als Grundlage für ein Auslese- und Diagnosegerät verwendet.

R/W: Read/Write; Steuersignal, das zwischen Lesen und Schreiben unterscheidet. Beim 6502 ist es ein zentrales Signal zur Steuerung von Speicher- und I/O-Zugriffen.

USB: Universal Serial Bus; moderner Anschlussstandard. Im NKC-Projekt relevant für Versuche mit USB-Speichermedien und VDIP-Modulen.

VDIP: USB-Host-Modul von FTDI. Es kann in Retrocomputer-Projekten genutzt werden, um USB-Speichermedien über eine einfache Schnittstelle anzusprechen.

VIA: Versatile Interface Adapter; Ein-/Ausgabe-Baustein der 6522-Familie. Er stellt parallele Ports, Steuerleitungen und Timer bereit.

WR: Write; Z80-Steuersignal für einen Schreibzugriff.

 

Zur Startseite     © Olaf Zimmermann, Berlin