Beiträge von RKSoft im Thema „Laden eines externen PRG Zeichensatzes“

    Prinzipiell ist es nicht so eine gute Idee, den Zeichensatz so zu platzieren, dass das zur Verfügung stehende RAM für ein BASIC-Programm stark eingeschränkt wird. Besser wäre, den Zeichensatz an die BASIC-Startadresse 2048 zu legen und den Start für BASIC-Programme entsprechend nach "oben" zu verschieben. Dazu müsste etwas hier im Forum zu finden sein.

    Stimmt schon, aber das gute beim C64er ist ja, daß das BASIC nur 38911 Bytes zur Verfügung stellt. Den restlichen Speicher kann man für Zeichensatz nutzen. ;)

    Vorerst Danke an alle hier fürs helfen, muss erstmal das alles ausprobieren und den melde ich mich wieder !!!

    Bezüglich deiner Email:
    Erstmal musst du den Zeichensatz in den Speicher packen. Dafür kannst du dieses BASIC Programm nutzen

    Code
    10 rem ...charset to 57344($e000) & screen to 52224($cc00)
    20 poke56576,peek(56576)and252:rem vic-ii to bank 3
    30 poke53272,56:rem switch to new charset & screen
    40 poke648,204:printchr$(147):rem kernel to new screen (204=$cc)
    50 rem fora=57344to57344+751:readb:pokea,b:next...
    60 rem data ...deine definierten zeichen...
    70 rem data ...beginnend beim  @ zeichen...

    Wenn du deine Zeichen in den Speicher gepackt hast, speicher den Bereich $e000 bis $e7fff normal ab (als PRG Datei).
    Ich benutz dafür entweder VICE (am PC) oder via Final Cartridge 3 den Monitor.
    Die Zeilen 20 bis 40 musst du anschließend noch in deinem BASIC Hauptprogramm einfügen. Dort wird nämlich der Zeichensatz auf deinen umgestellt. Da der neue Zeichensatz nicht mehr in einem für den VIC-II lesbaren Bereich ist, musst du dem Videochip natürlich mitteilen, in welche BANK er schauen soll. Standard ist nämlich BANK 0. Beim Umstellen teilst du dem VIC-II mit, daß er in BANK 3 schauen soll. Dabei verändert sich auch der Bildschirmspeicher!!!

    Die Adresse, um Zeichen aus dem Bildschirmspeicher lesen zu können, ist nach dem umstellen dann bei $cc00 bzw. 52224.


    Du kannst jetzt ganz normal dein BASIC Programm erstellen und beim Start des Programms

    Code
    1000 ifpeek(57344)<>60thenload"zeichensatz",8,1

    diese Zeile einfügen. Beachte dabei, daß die Zahl (in dem Beispiel 60) nach dem PEEK der erste Wert deines Zeichensatzes sein muss!