BANK
BANK | |
Syntax: | 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 |
Token: | $fe $02 (254 2) |
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.
APPEND | BANK | BEGIN | BEND | BLOAD | BOOT | BSAVE | BUMP | CATALOG | COLLISION | COLOR | CONCAT | DCLEAR | DCLOSE | DOPEN | DVERIFY | ENVELOPE | FAST | FETCH | FILTER | GO64 | MOVSPR | (OFF) | PEN | PLAY | POINTER | POT | (QUIT) | RECORD | RREG | RSPCOLOR | RSPPOS | RSPRITE | RWINDOW | SLEEP | SLOW | SOUND | SPRCOLOR | SPRDEF | SPRITE | SPRSAV | STASH | SWAP | TEMPO | WIDTH | WINDOW | XOR