Bank

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Eine Bank (im Sinne des engl. Ausdrucks bank) bzw. Speicherbank bezeichnet einen zusammenhängenden Speicherbereich.

Bei 8-Bit-Rechnern wird der Begriff meist im Zusammenhang mit Bankswitching benutzt; damit wird bezeichnet, dass einer von mehreren gleichgroßen Speicherabschnitten (den Bänken) z.B. für den Prozessor in einem bestimmten Adressraum eingeblendet werden kann.
Z.B. kann beim C64 die für den VIC-II sichtbare 16 KByte-Bank per CIA2 (Register $DD00) ausgewählt werden, wobei das RAM des C64 aus Sicht des VIC aus vier 16 KByte-Bänken besteht.

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 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).

Auch abseits von Bankswitching wird ab und zu von Bänken gesprochen; so wird in diverser Dokumentation der REU von 64 KByte-Bänken geredet. Allerdings verwaltet die REU ihr RAM zusammenhängend, umschaltbare Bänke oder ähnlich gibt es bei ihr nicht, auch die DMA-Transfers der REU können über 64 KByte-Grenzen hinweg erfolgen.
Ähnliches gilt im Zusammenhang mit einigen BASIC-Befehlen wie STASH oder MEMPOS (TSB); vermutlich wurden dort 64 KByte-Einheiten primär benutzt, um sich diverse Berechnungen zu ersparen.

Technisch werden Bänke auch an anderen Stellen benutzt, z.B. bieten diverse Prozessorarchitekturen umschaltbare Registerbänke an, wodurch sich schnelles Taskswitching umsetzen lässt. Beim MOS 6502/6510 ist das jedoch nicht realisiert.

64K-Bank-Systeme[Bearbeiten | Quelltext bearbeiten]

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

  • diverse interne Speichererweiterungen für den C64
  • 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.
  • 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.