Bank

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Eine Bank (im Sinne des engl. Ausdrucks bank) ist ein Begriff der besonders bei 8-Bit-Rechnern geläufig ist, wo Speicheradressraum häufig auf 64-KByte begrenzt ist. Eine Bank ist dann häufig ein Speicherbereich von 64 KByte, von diesen es mehrere in einem System geben kann und zwischen denen hin und hergeschaltet werden kann oder aber Abschnitte davon an gewissen Adressen eingeblendet werden können (Banking).
Speziell Speichererweiterungen wie eine REU erlauben Daten in MByte-Umfang im Zugriff zu haben, was wesentlich schneller als entsprechende Massenspeicher ist. Von solchen Erweiterungen profitieren nicht zuletzt auch speicherintensive Anwendungen (Grafik) und Betriebssysteme (GEOS).

Bei der nachfolgenden Generation der 6502-CPU, insbesondere beim 16-bittigen 65C816 ist der Adressraum nicht linear nutzbar, sondern in Bänke zu 64 KByte aufgeteilt, die zum Teil auch spezielle Einschränkungen und Aufgaben haben. Hier ist jedoch eine Bank integraler Bestandteil der CPU-Architektur. Bei der SuperCPU-Erweiterung ist ergänzend zur schnellen 16-Bit-CPU auch eine zusätzliche Speicherausstattung auf bis zu 16 MByte möglich, die sowohl der CPU als auch der Nutzung als RAM-Disk dient (ähnlich einer REU).

Banking[Bearbeiten]

Das Banking oder auch Bankswitching ist jener Vorgang, um auf einer gegebenen Hardware den Speicherbelegungsplan so umzugestalten, dass entsprechende Speicherareale zugänglich gemacht (eingeblendet) werden.

Verschiedene BASIC-Varianten von Commodore unterstützen eine Bank-Struktur unterschiedlich. Während der C64 unter BASIC V2 hier überhaupt keine Unterstützung anbietet, ist bei gewissen Varianten der PET-Rechner, die meist an eine 32-KByte-Struktur gebunden waren, mit überarbeiteten BASIC-Varianten (wie LOS-96 oder BSOS-8296) der zusätzliche Speicher zugänglich gemacht worden.
Aber auch in solchen Fällen, wo der Adressraum von unterschiedlichen Speichertypen und -bereichen überlagert wird (RAM, ROM, I/O-Bereich, Steckmodul), spricht man von Banking, wo ein Mechanismus (eine Memory Managment Unit, kurz MMU) dafür sorgt, dass der jeweilige Speicher aus der entsprechenden Quelle an der selben Adressen eingeblendet werden können. Dies kommt auch massiv im C64 zum Einsatz, wobei hier der PLA das zentrale Element ist, das die Speicherverwaltung kontrolliert. Beim C128 sorgt ein expliziter MMU-Baustein für die Verwaltung komplexer Speicherkonstellationen.
Während beim C64 das vom ROM überdeckte RAM aus BASIC-Sicht überhaupt nicht genutzt wird, ist seit BASIC 3.5 in den Commodore 264-Modellen mittels Banking auch BASIC faktisch der gesamte maximal zugängliche RAM-Speicher von 64 KByte zugänglich.

64K-Bank-Syteme[Bearbeiten]

Typische Vertreter von Systemen mit einer Struktur aus mehreren 64-KByte-Bänken sind

  • der C128 mit zwei RAM-Bänken zu je 64 KByte in der Grundausstattung. Er integriert die Bank-Nutzung vollständig in BASIC, sodass ein BASIC-Programm getrennt von Variablen, Arrays samt String-Heap ist. Bei entsprechenden Kommandos, wie z.B. BLOAD, BSAVE und BOOT für den Massenspeicherzugriff, kann eine Adresse und dessen Bank per Parameter ausgewählt werden.
    Bei einer angeschlossenen REU-Speichererweiterung lassen sich mit den Befehlen STASH, FETCH und SWAP der Zugriff auf die Bänke der REU organisieren.
  • die CBM-II-Reihe, die je nach Grundausstattung einen Speicheraufbau 1 (64 KByte), 2 (128 KByte) oder 4 (256 KByte) Bänke aufweist. Die Speicherverwaltung sieht bis zu 16 Bänken vor (also bis zu 1 MByte). Auch hier ermöglicht ein BANK-Befehl die Auswahl der für gewissen Befehle aktiven Bank oder über Parameter bestimmter Massenbspeicherbefehle (BSAVE, BLOAD) eine Bank-Auswahl.

Die dort eingesetzten BASIC-Varianten beinhalten den Befehlt BANK, um eine Bank oder entsprechende Speicherkonstellation auszuwählen. Befehle mit Bezug auf Speicheradressen (wie z.B. POKE, PEEK, SYS, WAIT) beziehen sich dann auf die jeweils gewählte Bank des BANK-Befehls.