Hallo Besucher, der Thread wurde 615 mal aufgerufen und enthält 4 Antworten

letzter Beitrag von Korodny am

Mehrfache Belegung von Speicher

  • Hallo,


    Irgendwie ist mir nicht ganz klar wie das mit der Mehrfachbelegung von diversen Abschnitten im RAM funktioniert, z.b. daß da ein Speicherbereich gleichzeitig für das Charakter ROM, Basic RAM und Ein- Ausgabe Bausteine gedacht ist. Kann mir das jemand näher erklären? Ich hab natürlich zuerst gegoogelt und diverse andere Seiten besucht, aber der Aha-Effekt wollte sich noch nicht einstellen. Vor allem wann was eingeblendet wird und wie man das steuern kann (wenn das überhaupt geht)


    Lg, Markus

  • Die Mehrfachbelegung wird mit der Adresse $01 und den Bits 0...2 gesteuert.

    Dort wird festgelegt, was der Prozessor gerade sieht von den "Schichten".


    Es gibt viele Ressourcen für das Thema, in Englisch wird typischerweise von der "Memory Map" gesprochen.

    Hier mal ein paar Web Links zum Thema:

    https://sta.c64.org/cbm64mem.html

    https://www.c64-wiki.com/wiki/Memory_Map

    https://codebase64.org/doku.php?id=base:memory_management


    In Deutsch wird z.B. von der "Speicherorganisation" gesprochen. Stellvertretend für viele Bücher, im Buch "C64: Wunderland der Grafik" von Markt & Technik wird das ab Seite 15 detailliert erklärt.


    Wenn man in BASIC etwas in den mehrfachbelegten Adressbereich schreibt, landet das immer im darunterliegenden RAM Bereich, auch wenn gerade z.B. Zeichen ROM aktiv ist.


    "Gleichzeitig" sind die verschiedenen Schichten nicht aktiv, aber in BASIC scheint das so. Das wird mit sog. "Interrupts" bewerkstelligt, was ein Thema für sich ist.


    Ich weiss nicht wie tief Du in der Materie bist und ob Du genauere Erklärungen brauchst, aber frag einfach. Es hat viele hilfreiche User hier.

  • Hier ...


    https://www.c64-wiki.de/wiki/PLA_(C64-Chip))


    ... ist eine vollständige Auflistung aller möglichen RAM-ROM-I/O-Kombinationen, die man beim C64 erreichen kann. Neben den erwähnten Bits 0..2 des CPU-Ports sind auch noch /EXROM und /GAME maßgebend.


    [EDIT]

    z.b. daß da ein Speicherbereich gleichzeitig für das Charakter ROM, Basic RAM und Ein- Ausgabe Bausteine gedacht ist.

    "Gleichzeitig" geht das auch nicht, nur durch "Bankswitching".


    [/EDIT]

    "Wenn du überredet, ermahnt, unter Druck gesetzt, belogen, durch Anreize gelockt, gezwungen, gemobbt, bloßgestellt, beschuldigt, bedroht, bestraft und kriminalisiert werden musst. Wenn all dies als notwendig erachtet wird, um deine Zustimmung zu erlangen, dann kannst du absolut sicher sein, dass das, was angepriesen wird, nicht zu deinem Besten ist." - Quelle unbekannt.


    "Steve Jobs hat User hervorgebracht, Jack Tramiel Experten." - Quelle unbekannt.

    "Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür einsetzen, dass Sie sie äußern dürfen." - Voltaire.

    "Diskutiere nie mit einem Idioten - er zieht dich auf sein Niveau hinunter und schlägt dich dort mit seiner Erfahrung!" - Volksweisheit.


  • In älteren CBM-Rechnern sind maximal 32 KB RAM möglich - schlicht weil danach ROM u.ä. kommt und der 6502-Prozessor keine Möglichkeit hatte, zwischen ROM und RAM an derselben Adresse zu wählen. Deswegen hat man den 6510 entwickelt, der im C64 eingesetzt wird - der hat ein paar zusätzliche Pins um genau so etwas steuern zu können.


    Ist gar nicht kompliziert: Normalerweise sind immer die ROMs und die I/O-Register der Chips eingeblendet. Man kann dann zwar in das "unter" den ROMs liegende RAM schreiben, gelesen wird aber immer aus den ROMs. Wenn du BASIC, das Betriebssystem oder die I/O-Register aber gerade nicht brauchst, kannst du sie einzeln ausblenden und das darunter liegende RAM normal nutzen. Vorher dem Abschalten des Kernal-ROMs muss aber der Interrupt abgeschaltet bzw. auf eine eigene Routine umgebogen werden, da die Standard-Interrupt-Routine ja auch im ROM liegt.