Der Adressraum unseres 8-Bit Computer
Nachdem im vorherigen Artikel Speicherarten die verschiedenen Speichertypen umrissen wurden, kommt hier nun die Einbindung von RAM, ROM und "anderen Dingen".
Wie in der Einleitung beschrieben, hat unserer Computer einen 16-Bit Adress-Bus. Das bedeutet, 16 Steuerleitungen um jeweils ein Byte auszuwählen.
Das macht 65535 mögliche Adressen oder 64k Adressraum.
In diesen 64k müssen wir einen gewissen Platz für unser ROM (unser Programm) haben, sowie ein wenig Platz für Variablen.
Theoretisch können wir auch den kompletten Bereich für RAM verwenden, aber irgendwie müssen wir unser Programm ja hinterlegen.
Ebenso brauchen wir noch ein wenig Raum für Ein- und Ausgaben.
Am Ende der ganzen Planerei möchte ich wenigsten ein klein wenig Grafik haben, d.H. wir brauchen Platz für den Inhalt des Bildschirm (und eine sehr primitive Grafikkarte).
Und nur mal als Beispiel: die heutzutage lächerliche Auflösung von 320x200 Pixeln mit 256 Farben braucht alleine schon für die Bildinfo 320x200 = 64000 = 64kb Speicher.
Blieben noch 1525 Bytes für Programm und Variablen. Oops.
Aber hier werden wir tricksen und sogenanntes Paging verwenden. D.H. von den 64KB (auf der Grafikkarte) sind nur jeweils ein kleiner Teil für den Prozessor sichtbar, z.B. 16kB.
Über den Inhalt in bestimmten Speicheradressen wird jeweils ein anderer Teil für den Prozessor sichtbar gemacht. Aber dazu dann (viel) später mehr.
Für den Anfang beschränken wir die Ausgabe auf ein einfaches Textdisplay mit den klassischen Dimensionen 80x60 Zeichen mit nur einer Farbe, aber 128 frei definierbaren (8x8 Pixel) Zeichen (zusätzlich zu den ASCII Zeichen).
Meine bisherige Idee ist das folgende Speicherlayout:
Anfangsadresse | Endadresse | Größe | Verwendung |
0x0000 | 0x3fff | 16kB | ROM |
0x4000 | 0x7fff | 16kB | RAM |
0x8000 | 0x8fff | 4kB | Steuerleitungen für IO/Grafik |
0x9000 | 0xbfff | 12kB | undefiniert |
0xc000 | 0xffff | 16kB |
Reserviert für Grafik |
Im nächsten Artikel werden wir uns dann mal die Verschaltung von RAM und ROM und die Adressleitungen ansehen.
Danach können wir dann tatsächlich anfangen, die CPU-Logik zu bauen und werden die Schalter los.