Huhu,
ich hänge leider noch immer an diesem Problem, dass ich kein Charset vernünftig angezeigt bekomme. Irgendwas scheine ich zu übersehen, denn ich sehe zwar ein paar Zeichen, die sind aber alle falsch. Wie macht man's denn nun richtig?
Das ist jetzt erstmal der Teil, von dem ich denke, dass er funzt. Die Speicherbank ist Nr.3, also c000
Zu 99% habe ich das von Jörn:
https://www.retro-programming.…eicherbereiche-festlegen/
- lda #%00000011 //Datenrichtung für Bit 0 & 1 des Port-A
- sta $dd02 //zum Schreiben freigeben
- lda $dd00 // Bank 3 aktivieren
- and #%11111100
- ora #%00000000
- sta $dd00
- // Bildschirm = c000
- lda $d018 //VIC-II Register 24 in den Akku holen
- and #%00001111 //Über Bits 7-4
- ora #%00000000 //den Beginn des
- sta $d018 //Bildschirmspeichers festlegen
- // Character = d000
- lda $d018 //VIC-II Register 24 in den Akku holen
- and #%11110001 //Über Bits 3-1
- ora #%00000100 //den Beginn des
- sta $d018 //Zeichensatzes festlegen
- sei //IRQs sperren
- // Char ROM kopieren
- lda $01 //ROM-'Konfig' in den Akku
- pha //auf dem Stack merken
- and #%11111011 //BIT-2 (E/A-Bereich) ausblenden
- sta $01 //und zurückschreiben
- jsr copyCharROM //Zeichensatz kopieren
- pla //ROM-Einstellung vom Stack holen
- sta $01 //wiederherstellen
- cli //Interrupts freigeben
- rts
Ohne copyCharROM sieht es so aus:
Das dürfte an sich ja richtig sein, auch wenn ich irgendetwas tun muss, was ich noch nicht herausgefunden habe. Muss ich da das Color-RAM noch irgendwie ordnen?
Viel spannender ist auch die Frage:
Funktionieren die Kernal-Funktionen noch richtig? Ich benutze fast immer $FFD2 zur Zeichenausgabe und $e544 zum Löschen des Bildschirmes.
Irgendwas wird von $ffd2 ja auch erzeugt, nur leider Grütze
Mit copyCharROM sieht es dann so aus:
Irgendein Schritt scheint noch zu fehlen.