Zeichensatz auswechseln mit Cartridge

Es gibt 6 Antworten in diesem Thema, welches 713 mal aufgerufen wurde. Der letzte Beitrag (4. Februar 2009 um 16:13) ist von heptasean.

  • Hallo,

    wie in einem anderen Thread (Bitte melde dich an, um diesen Link zu sehen.) beschrieben, würde ich gerne mit einer Cartridge den Zeichensatz des CeVi auswechseln (soll einen kompletten Latin-9-Satz bekommen, der gute).

    Erstmal reicht natürlich crt-Image im Emulator, aber wie mache ich das am Besten?

    Würde sich ja anbieten, den neuen Zeichensatz im ROM der Cartridge unterzubringen und den VIC dann darauf umzubiegen. Wenn ich aber eine 16K-Cartridge nehme (wenn schon 4K für den Zeichensatz draufgehen, reichen 8K nie, um noch was sinnvolles zu machen), dann ist der gesamte Bereich von $8000 bis $bfff voll. Da der VIC aber nur einen 16K-Block adressieren kann, muss da noch irgendwo das Video-RAM hin.

    Oder vielleicht doch besser woanders im Speicher ablegen? Dann wäre es aber gut, das ROM mit dem Zeichensatz nach der Initialisierung wieder auszublenden und durch echten Code zu ersetzen. Hat vielleicht jemand von Euch ein Beispiel, wie man dieses Hin- und Her-Gebanke mit einem crt-Image macht?

    Danke,
    heptasean

  • Das wird nicht funktionieren. Der VIC liest seine Daten entweder aus dem C64 RAM oder direkt aus dem Zeichensatz ROM. Lediglich im Ultimax Modus gibt es die Möglichkeit, dem VIC Daten aus einem externen ROM darstellen zu lassen, allerdings hat man in dem Modus nur 4k RAM verfügbar und das externe ROM blendet sich auch an anderen Adressen als das Zeichensatz ROM ein.

  • Das wird nicht funktionieren. Der VIC liest seine Daten entweder aus dem C64 RAM oder direkt aus dem Zeichensatz ROM.

    Kann man dann nicht den Zeichensatz aus dem Cartridge-ROM in das darunter liegende RAM kopieren. Dann würde auch das Video-RAM unter dem ROM liegen. Kann man halt nur noch drauf schreiben, aber nicht mehr lesen. Eigentlich doch nicht so schlimm, oder?

  • Das wird den VIC nicht interessieren. Bei $1000-$1FFF and $9000-$9FFF liest der immer Zeichensatz-ROM, und alles andere ist für den immer RAM (vom Ultimax Modus mal abgesehen, aber der ist eh aussen vor).

  • Das wird den VIC nicht interessieren. Bei $1000-$1FFF and $9000-$9FFF liest der immer Zeichensatz-ROM,

    Warum eigentlich nur bei den beiden und nicht auch bei $5000 bis $5fff und bei $d000 bis $dfff?

    und alles andere ist für den immer RAM

    Ja, meine ich doch: Ich lass' den VIC die 16K von $8000 bis $bfff benutzen. Da liegt komplett das Cartridge-ROM drüber, aber das interessiert ihn ja nicht. Vorher kopiere ich den Zeichensatz aus dem ROM ins unterliegende RAM. Das liegt dann beispielsweise im ROM und im unterliegenden RAM jeweils von $b000 bis $bfff. Dann kann ich den Rest von $8000 bis $afff für Code im ROM verwenden, den nur der Prozessor sieht, der VIC aber nicht. Auf der anderen Seite kann der VIC dort sein Video-RAM irgendwo haben, das der Prozessor nur schreiben, aber nicht lesen kann (weil er ja beim Lesen das ROM da drüber sieht).

    Ich muss es, glaube ich, einfach mal ausprobieren. ...

  • Warum eigentlich nur bei den beiden und nicht auch bei $5000 bis $5fff und bei $d000 bis $dfff?


    Das sagt die PLA.

    Zitat

    Ja, meine ich doch: Ich lass' den VIC die 16K von $8000 bis $bfff benutzen. Da liegt komplett das Cartridge-ROM drüber, aber das interessiert ihn ja nicht. Vorher kopiere ich den Zeichensatz aus dem ROM ins unterliegende RAM. Das liegt dann beispielsweise im ROM und im unterliegenden RAM jeweils von $b000 bis $bfff. Dann kann ich den Rest von $8000 bis $afff für Code im ROM verwenden, den nur der Prozessor sieht, der VIC aber nicht. Auf der anderen Seite kann der VIC dort sein Video-RAM irgendwo haben, das der Prozessor nur schreiben, aber nicht lesen kann (weil er ja beim Lesen das ROM da drüber sieht).


    Wie willst du den Bildschirm scrollen, wenn du ihn mit der CPU nicht lesen kannst?

  • Das sagt die PLA.

    OK, dann ist das wohl so. War im "64 intern" irgendwie sehr dürftig beschrieben, wie genau der VIC sich jetzt zwischen RAM und (Character-)ROM entscheidet.

    Also: Wenn ich $0000 bis $3fff bzw. $8000 bis $bfff als VIC-Bank wähle, dann können jeweils die zweiten 4K (ab $1000 bzw. ab $9000) nicht für Zeichensatz im RAM gewählt werden, weil der VIC da Character-ROM "sieht". Wenn ich hingegen $4000 bis $7fff bzw. $c000 bis $ffff wähle kann das Character-ROM nicht verwendet werden, weil der VIC überall nur die entsprechenden RAM-Blöcke sieht. Richtig so?

    Wo ist sowas dann mal ordentlich beschrieben? Habe bei Codebase64 schon ein bisschen gesucht, aber die beschäftigen sich eher ausführlich mit den anderen Grafik-Modi.

    Zitat

    Wie willst du den Bildschirm scrollen, wenn du ihn mit der CPU nicht lesen kannst?

    Öhm, gute Frage. Zum Scrollen die entsprechende Hälfte des ROMs kurz ausblenden (Scroll-Routine muss dann natürlich in der anderen Hälfte sein)? Oder eine Arbeitskopie des Video-RAMs irgendwo anders halten und bei Bedarf komplett ins echte kopieren? Oder doch gleich einen anderen 16K-Bereich verwenden?