VIC-Bank
Eine VIC-Bank ist eine von vier möglichen 16K-Bereichen für den VIC im 64K RAM des C64
Der VIC-II besitzt nur 14 Adressleitungen, kann also nur 16K addressieren. Deshalb werden zusätzlich die Bits 0 und 1 des CIA 2 Port A Registers 56576 ($DD00) benutzt, um die Lage des VIC-Adressbereiches im 64K-Speicher zu bestimmen. Die für die Addressierung fehlenden Bits 14 und 15 ergeben sich aus diesen durch Invertierung, d.h. aus 0 wird 1 und aus 1 wird 0.
$DD00 Bits 1/0 | Addr.-Bits 15/14 | Video-Bank | Erreichbare Adressen (hex.) |
---|---|---|---|
11 | 00 | 0 | 0-16383 ($0000-$3FFF) |
10 | 01 | 1 | 16384-32767 ($4000-$7FFF) |
01 | 10 | 2 | 32768-49151 ($8000-$BFFF) |
00 | 11 | 3 | 49152-65535 ($C000-$FFFF) |
Nach dem Einschalten des C64 ist die Video-Bank 0 aktiv.
Anwendungen:
Beispiel VIC-Bank ab $8000:
- BASIC:
10 POKE 56576, PEEK(56576) AND 252 OR 1
- Assembler:
LDA $DD00 AND #$FC ;%11111100 OR #$01 ;%00000001 STA $DD00 ;%xxxxxx01
Speicherbelegungsplan des VIC-II[Bearbeiten | Quelltext bearbeiten]
$FFFF ┌─────────────────┐──────── │ │ │ │ │ │ │ RAM │ Bank 3 │ │ │ │ │ │ $C000 ├─────────────────┤──────── │ │ │ RAM │ │ │ $A000 ├─────────────────┤ Bank 2 │ Zeichensatz-ROM │ $9000 ├─────────────────┤ │ RAM │ $8000 ├─────────────────┤──────── │ │ │ │ │ │ │ RAM │ Bank 1 │ │ │ │ │ │ $4000 ├─────────────────┤─────── │ │ │ RAM │ │ │ $2000 ├─────────────────┤ Bank 0 │ Zeichensatz-ROM │ $1000 ├─────────────────┤ │ RAM │ $0000 └─────────────────┘───────
Das Zeichensatz-ROM wird in den Bänken 0 und 2 jeweils an den VIC-Adressen $1000-$1FFF eingeblendet. In Bank 2 z.B. erscheint es daher an Adresse $9000. Die beiden Standard Zeichensätze sind auf diese Weise unmittelbar lesbar für den VIC (nicht für die CPU), so dass der Programmierer sich nicht um die Zuordnung von RAM für sie kümmern muss. Leider wird dabei auch Speicher belegt, der nun für eine Bitmap, Sprites oder Bildschirmspeicher nicht mehr zur Verfügung steht.
Weblinks[Bearbeiten | Quelltext bearbeiten]
- The VIC banks bei codebase64
- Speicherbereiche festlegen bei Retro-Programming (Webarchiv)