BANK

Aus C64-Wiki
Wechseln zu: Navigation, Suche
BANK
Format: BANK <Banknummer>
Parameter
<Banknummer>: numerischer Ausdruck im Wertebereich von 0 bis 15
Einordnung
Typ: Anweisung
Kontext: System
Aufgabe: Speicherkonfiguration für nachfolgende Systemanweisungen festlegen
Abkürzung: bA
Verwandte Befehle

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl BANK ab Commodore BASIC V7.0 oder höher.


Der Befehl BANK bestimmt die Speicherkonfiguration für die Systemanweisungen PEEK, POKE, SYS, WAIT, BLOAD, BSAVE, BOOT, FETCH, STASH und SWAP. Für die Befehle BLOAD, BSAVE und BOOT kann alternativ die Speicherkonfiguration direkt mittels B-Parameter vorübergehend für die Dauer des Befehls vorgegeben werden, wobei danach die zuletzt von BANK gewählte Konfiguration erhalten bleibt.

Der Parameter <Banknummer> ist ein als Ganzzahl interpretierter Wert von 0 bis 15. Werte außerhalb dieses Bereichs verursachen die Fehlermeldung ?ILLEGAL QUANTITY ERROR. Bei mehr oder weniger als einem Parameter wird ein ?SYNTAX ERROR ausgegeben, ist der Parameter keine Zahl kommt es zum ?TYPE MISMATCH ERROR.

Die einzelnen Banknummern stehen für folgende Speicherkonfigurationen:

Nr. RAM-Bank1 Low-ROM
$4000 - $7FFF
Mid-ROM
$8000 - $BFFF
Hi-ROM
$C000 - $FFFF
I/O-Bereich
$D000 - $DFFF
Wert Konfigurations-
register5
0 0 RAM RAM RAM RAM $3F
1 1 RAM RAM RAM RAM $7F
2 2 (=0) RAM RAM RAM RAM $BF
3 3 (=1) RAM RAM RAM RAM $FF
4 0 RAM int. Funktions-ROM2 int. Funktions-ROM I/O $16
5 1 RAM int. Funktions-ROM int. Funktions-ROM I/O $56
6 2 (=0) RAM int. Funktions-ROM int. Funktions-ROM I/O $96
7 3 (=1) RAM int. Funktions-ROM int. Funktions-ROM I/O $D6
8 0 RAM ext. ROM3 ext. ROM I/O $2A
9 1 RAM ext. ROM ext. ROM I/O $6A
10 2 (=0) RAM ext. ROM ext. ROM I/O $AA
11 3 (=1) RAM ext. ROM ext. ROM I/O $EA
12 0 RAM int. Funktions-ROM KERNAL I/O $06
13 0 RAM ext. Funktions-ROM KERNAL I/O $0A
14 0 BASIC BASIC KERNAL Zeichensatz-ROM4 $01
15 0 BASIC BASIC KERNAL I/O $00
  • 1 Die RAM-Bänke 2 und 3 waren vorgesehen für eine C128-Version mit 256 KByte RAM, die Bänke werden auf die realen RAM-Bänke 0 und 1 abgebildet.
  • 2 Das interne Funktions-ROM ist ein optionales ROM das in einen dafür vorgesehenen leeren Sockel gesteckt wird. Ist kein ROM gesteckt, werden beim Lesezugriff zufällige Werte geliefert.
  • 3 Externes ROM bezeichnet das ROM eines Erweiterungsmoduls am Expansionsport. Ohne Modul werden beim Lesezugriff zufällige Werte geliefert.
  • 4 Es wird immer das gerade aktive Zeichensatz-ROM eingeblendet.
  • 5 Wert, der in das Konfigurationsregister der MMU geschrieben wird.

Es gibt keinen Befehl, der die aktuell eingestellte Banknummer zurück gibt, sie lässt sich aber mittels PEEK(981) ermitteln. Da standardmäßig das erste KByte (von 0 bis 1023) als "Shared Memory" eingerichtet ist, funktioniert das auch dann, wenn Bank 1 eingestellt ist.

Nach einem Reset ist Bank 15 voreingestellt. Programme sollten sich aber niemals darauf verlassen, sondern immer (z.B. in der Startphase) explizit die Banknummer einstellen.