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 an mehreren Stellen:

  • Der MOS 6510 kann per Bankswitching mit seinem auf 64K Adressen beschränkten Adressraum bzw. Programmzähler auf seine 64 KByte RAM, die insgesamt 20 KByte ROM, diverse Ein- und Ausgabe-Peripherie, aber auch Steckmodule zuzugreifen. Das CPU-Bankswitching wird dabei im Wesentlichen über den Prozessorport $01 in der Zeropage gesteuert.
  • Der VIC-II kann durch per CIA2/$DD00 realisiertes Bankswitching trotz seines lediglich 14 Bits breiten Adressbus (16K Adressen) auf Grafikdaten in den kompletten 64k des C64 zugreifen bzw. zwischen vier 16-KByte-Bänken umgeschaltet werden.

Das Bankswitching wird von der PLA umgesetzt.

Ferner erlauben diverse interne Speichererweiterungen für den C64 per Bankswitching den Zugriff auf weiteren Speicher.

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]