Bankswitching

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Bankswitching bedeutet, über einen Umschaltmechanismus unter ein und derselben Adresse mehrere verschiedene Speicherzellen oder Register verfügbar zu machen. Die dabei auftretenden unterschiedlichen Speicherkonstellationen oder einblendbaren Speicherbereiche (oft 64 Kbyte groß), werden als Bank bezeichnet.


Der C64 benutzt Bankswitching, um mit dem auf 64K Adressen beschränkten Adressraum auf seine 64 KByte RAM, die insgesamt 20 KByte ROM, diverse Ein- und Ausgabe-Peripherie, aber auch Steckmodule zuzugreifen. Der Program Counter ist ein 16 Bit breites Register und kann ohne Bankswitching oder ähnliche Verfahren 65.536 Speicherzellen ansprechen.

Das Bankswitching wird von der PLA umgesetzt und über den Prozessorport $01 in der Zeropage gesteuert.


Andere Commodore-Plattformen nutzen ebenfalls Bankswitching:

  • Bei der Commodore-264-Serie ist die gemeinschaftliche Nutzung des 64-KByte-Adressraums mit seinen ROM-, RAM- und I/O-Bereichen derart gegeben, dass dabei u.a. BASIC 3.5 das RAM vollständig für den Programmtext und Variablen nutzen kann.
  • Beim C128 ermöglicht eine sogenannte MMU (Memory Management Unit) unterschiedliche Speicherkonfigurationen aus ROMs und den 128 KByte RAM (2 RAM-Bänke zu je 64 KByte) zu bilden. Unter BASIC 7.0 lassen sich 16 fest vorgegebene Konfigurationen mit Hilfe des Befehls BANK auswählen, die sich auf Befehle PEEK, POKE, SYS, WAIT auswirken. Zudem erlauben gewisse Kommandos, wie z.B. BLOAD, BSAVE und BOOT für den Massenspeicherzugriff, auch die Möglichkeit, eine Adresse und dessen Bank per Parameter auszuwählen.
    Der BASIC-Interpreter verwendet intern für seine Daten (Programmspeicher, Variablen- und Array-Speicher, sowie den String-Heap) beide RAM-Bänke.
    Völlig getrennt dazu unterstützt das BASIC auch eine REU-Speichererweiterung, die ebenso in Bänke organisiert ist, auf die mit den Befehlen STASH, FETCH, SWAP zugegriffen werden können.
  • Die CBM-II-Linie ist eine Nutzung des Speicherausbaus mit bis zu 16 Bänken zu je 64 KByte vorgesehen. Dabei ist die CPU MOS 6509 besonders dafür anpasst, wobei über Port $01 die entsprechende Bank ausgewählt werden kann, die allerdings dann nur mit der Adressierungsart Indirekte Y-nachindizierte Zeropage-Adressierung angesprochen werden kann.
    Die Variante des BASIC 4.0 hat dazu das Kommando BANK für die Auswahl der Bank, welche dann u.a. für die BASIC-Befehle PEEK, POKE, SYS, WAIT bindet sind.
    Der BASIC-Interpreter verwendet intern je nach Speichergrundausstattung 2 (128 KByte) oder 4 Bänke (256 KByte), um den Programmspeicher, Variablen- und Array-Speicher, sowie den String-Heap darauf zu verteilen.

Weblinks[Bearbeiten | Quelltext bearbeiten]