Speicherbelegungsplan

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Die im folgenden Artikel Speicherbelegungsplan (englisch: memory map) aufgeführte Tabelle zeigt eine kurze Übersicht der Speicherbereiche und -adressen des C64 aus Sicht seiner CPU.
Hinweis: Diese Auflistung bezieht sich auf den Zustand nach dem Einschalten in der Standard-Ausgangskonfiguration ($37/55 in Speicherstelle $01, kein Steckmodul).

Die Details und Kurzbeschreibungen der einzelnen Speicherbereiche und -adressen sind in den entsprechenden Artikeln zu finden.

Die PLA regelt die Speicherverwaltung des C64, steuert also, wann welche Speicherbereiche/Register wo eingeblendet werden.

Überblick[Bearbeiten | Quelltext bearbeiten]

Die Speicheraufteilung des C64 im Normalzustand - für genauere Informationen siehe PLA.

$FFFF = 65535 ┌───────────────┬───────────────┐
              │---------------│|||||||||||||||│     ||| = wird z.B. bei PEEK gelesen
              │---------------│|||||||||||||||│     --- = wird z.B. bei POKE geschrieben
              │---------------│|||||||||||||||│     +++ = lesend + schreibend
              │---------------│||| KERNAL ||||│     sonst = von BASIC aus nicht erreichbar 
              │---------------│|||||||||||||||│
              │---------------│|||||||||||||||│
              │---------------│|||||||||||||||│
$E000 = 57344 ├───────────────┼───────────────┼───────────────┐
              │               │               │+++++++++++++++│
              │               │     CHAR      │+++++ I/O +++++│
              │               │               │+++++++++++++++│
$D000 = 53248 ├───────────────┼───────────────┴───────────────┘
              │+++++++++++++++│
              │+++++++++++++++│
              │+++++++++++++++│
$C000 = 49152 ├───────────────┼───────────────┐
              │---------------│|||||||||||||||│
              │---------------│|||||||||||||||│
              │---------------│||| BASIC- ||||│
              │---------------│|||  ROM   ||||│
              │---------------│|||||||||||||||│
              │---------------│|||||||||||||||│
              │---------------│|||||||||||||||│
$A000 = 40960 ├───────────────┼───────────────┘
              │+++++++++++++++│
              │+++ BASIC- ++++│
              │+++  RAM   ++++│ \
              .               .  - Details in Speicherbelegung (BASIC)            
              .               . /            
              .               .             
              │+++ BASIC- ++++│           
              │+++  RAM   ++++│
$0800 = 2048  │+++++++++++++++│-┐ 
$0400 = 1024  │+++++++++++++++│-┘Bildschirmspeicher
$0000         └───────────────┘-┘Zeropage und Erweiterte Zeropage
Hex-Adresse Dez-Adresse Beschreibung
$0000-$00FF 00000-00255 Zeropage - Speicherstelle $01 (der Prozessorport) steuert die Speicheraufteilung
$0100-$01FF 00256-00511 Prozessorstapelspeicherbereich
1. Teil der Erweiterten Zeropage
$0200-$03FF 00512-01023 Systemvariablen von BASIC-Interpreter und KERNAL
2. Teil der Erweiterten Zeropage
$0400-$07FF 01024-02047 Bildschirmspeicher (Details)
$0800-$9FFF 02048-40959 BASIC-RAM: BASIC-Benutzerspeicher (in diesem Bereich werden die BASIC-Programme nach dem Laden abgearbeitet, hier befinden sich auch alle Daten von Variablen und Feldvariablen). Dieser Speicher ist 38911 Bytes lang, wenn noch kein Programm geladen wurde.
$8000-$9FFF 32768-40959 Bei Steckmodul-Nutzung wird hier typischerweise das Steckmodul-ROM (Details) eingeblendet
$A000-$BFFF 40960-49151 8 KByte BASIC-ROM - u.a. hier ist der BASIC-Interpreter abgelegt
$C000-$CFFF 49152-53247 4 KByte freies RAM (z.B. zum Ablegen von Assembler- bzw. Maschinenspracheprogrammen)
$D000-$DFFF 53248-57343 Zeichensatz-ROM (falls über $01 eingeblendet, normalerweise aus).
$D000-$D7FF: Großschrift / Grafikzeichen (Zeichensatz 1)
$D800-$DFFF: Groß-/Kleinschrift (Zeichensatz 2)
$D000-$D02E 53248-53294 Register des VIC (Video Interface Chip) - Details
$D400-$D7FF 54272-55295 Register des SID (Sound Interface Device) - Details
$D800-$DBFF 55296-56319 1 KByte Farbspeicher (Farbwerte 0-15, wobei die oberen Nibbles undefiniert sind und (pseudo)zufällige Werte annehmen). Nur die ersten 1000 Bytes davon werden vom VIC genutzt. Dieses 1 KByte RAM existiert zusätzlich zu den normalen 64 KByte RAM
$DC00-$DDFF 56320-56831 Register der beiden CIAs (Complex Interface Adapter) - Details
$DE00-$DFFF 56832-57343 Reserviert für Schnittstellen-Erweiterungen
$DE00-$DE01: Retro Replay
$DE20-$DE37,$DE5F-$DEFF: IDE64
$DExx die meisten MIDI-Interfaces
$DF00-$DF0A: CBM RAM Expansion Unit (REU)
$DF40, $DF50, $DF60: Sound Expander
$DF80-$DF87: Magic Voice Speech Modul
$E000-$FFFF 57344-65535 8 KByte KERNAL-ROM (Details)

Die PLA erlaubt auch eine Vielzahl von abweichenden Konfigurationen.

Weblinks[Bearbeiten | Quelltext bearbeiten]