Wie Kann man Mehr dann 64k RAM an den 6502 Prozessor anschließen?

3 Antworten

Das bedeutet natürlich eine Änderung der Konstruktion aber warum benutzt du keinen WDC 65816 der kann immerhin ein MB adressieren. Bei 65.02 Derivaten muss man immer Bank switchen was ja auch C64 und c128 gemacht haben und viele andere Rechner ebenfalls.

Das geht per Bankswitching oder DMA.

Wenn man sich den C128 anschaut sieht man, dass die 128kB niemals gleichzeitig ansprechbar sind. Hier sind 2x64k verbaut die umgeschaltet werden können. Das Betriebssystem muss also immer passend umschalten je nach dem was gemacht wird. Das ist natürlich sehr ineffizient da so sehr oft umgeschaltet werden muss, hier kann bis zu 2/3 der Zeit nur durch umschalten verplempert werden.

Die REU, also die "Ram Expansion Unit" geht einen anderen Weg. Die hat einen DMA. Hier kann man Daten auslagern. Mit einem einfachen Befehl (wenige Taktzyklen) übernimmt die REU (Prozessor wird angehalten) und kopiert mit etwa 1MB/s Daten zwischen ihrem internen Speicher und dem C64/C128. Dabei kann man Daten auf die REU schreiben, Daten von der REU holen und sogar Daten vertauschen. Das kann dann dazu dienen zischen verschiedenen Leveln in einem Spiel umzuschalten. Auch kann man Vorgefertigte grafikdaten direkt in den Grafikspeicher holen für schnellen Bildaufbau ohne Platzverbrauch im RAM des Computers.

Auch der PC benutzt Bankswitching. Das RAM der Grafikkarte ist nur durch ein kleines Fensterchen im Adressbereich des PC erreichbar. Hier werden dann die Grafikdaten "Häppchenweise" in die Grafikkarte befördert. Man kann also immer nur einen kleinen Teil des Grafik-RAM zugreifen und muss das Fensterchen immer passend verschieben. Das wird natürlich durch einen DMA stark automatisiert und beschleunigt.

Das einfachste ist, einen I/O Baustein zu verwenden der die höheren Adressleitungen des Grafik-RAM steuert und nur die unteren Adressen, z.B. 8-Bit für ein 265 Byte Fenster an den Prozessor zu hängen. Dazu ein Adressdecoder für die höheren Leitungen des Prozessors. So hat man dann ein 256Byte Fenster dass man über den I/O Baustein verschieben kann. Hier wäre es vielleicht Sinnvol einen modernen Mikrocontroller einzusetzen der die Grafikdaten vom Prozessor annimmt und dann in der Austastlücke in das Grafikram einblendet. Hier macht es sogar Sinn, die ganze Grafikkarte als µC aufzubauen, also der µC hat seinen Speicher und erzeugt die Videosignale und hat ein einfaches Interface zum 6502.

Woher ich das weiß:Berufserfahrung

Nur über Bank-Switching

Ein paar Adressen wie beim Apple ][ dafür verwenden, einige Bits für die Speicheradressen aufzunehmen und dann Bänke à 16 kB oder andere Werte auf bestimmte Adressen mappen.

Wenn du beispielsweise 512 kB haben willst und du eine Adresse mit einem Byte, also 8 Bit dazu verwendest, eine Speicherbank zu adressieren, dann könntest du Bänke bis zu 2 kB klein machen. Beispielsweise mappst du auf f800 ... fbff eine Bank von 2 kB Größe.