Hallo Besucher, der Thread wurde 1,6k mal aufgerufen und enthält 8 Antworten

letzter Beitrag von hoogo am

Gutes Tut zu Charsetmanipulation?

  • Suche ein gutes Tut zur Charsetmanipulation.
    Ich werd weder aus dem Gelben, dem Blauen noch aus dem Cevihandbuch schlau :-(
    Am besten Kochrezept, daraus lerne ich am besten und wandle es nach meinen bedürfnissen um. ;)

  • Pages? Hm, was auch immer Du damit meinst...
    1) Wenn das Charrom eingeschaltet wird, werden die IO's dafür ausgeschaltet. Somit musst Du erstmal dafür sorgen, daß die Interruptroutine mit IRQ's klarkommt, auch wenn die IO's abgeschaltet sind. Oder einfach der CIA sagen, daß sie keine IRQ's mehr auslösen soll oder ein SEI in Assembler.
    2) Nun mit Poke1,51/$33 o.Ä. auf Zeichensatz umschalten.
    3) Den Bereich von $d000-$d800 oder $d800-$e000 auslesen und woanders hinkopieren. Traditionell nach $2000.
    4) Jetzt kannst Du IO's wieder einschalten und Interrupte wieder erlauben. Ab $2000 hast Du nun eine Kopie eines der Zeichensatz-ROMs.

  • Hmm, dann hab ich wohl die ganze Zeit das IO und nicht den Charset kopiert.
    Erklärs mir am besten nachher im Bunker nochmal Haarklein wie das geht ;)
    EDIT: Hmm, vielleicht geh ich auch einfach hin und lad nen komplett eigenes Charset in mein Programm, bleibt eh nur die ersten beiden Zeilen mit den Buchstaben und den Zahlen übrig ;)
    Der rest wird als Tileset fürn Spiel gebraucht.

  • was hast du vor? den ROM charset in den RAM kopieren?


    geht in etwa so:



    der char liegt dann bei $2000



    T.

  • "ES GEHT! SCHEISSE NE ES GEEEHT! PRIMA! SUPER!" (Frei nach dem MediaMarkt Leipzig Telefonschreck anruf ;) )


    Jetzt muss ich nur noch herrausfinden wieso die Drawingroutine zwar ihr 5x5 Gezumpel anzeigt, das aber falsch.
    Am besten wohl den Teil löschen und in aller Ruhe nochmal ansetzen
    Achja, nach dem RUN und der einsamen SYS-BasicZeile, wieviel Stackspeicher hat man noch?


    EDIT:
    Ich dachte nämlich daran den Stack zu PLAen bis er wieder auf Null sitzt.
    Kann man dann zwar das Spiel nicht beenden, aber ich hab dann mehr Spielraum ;)

  • Ich meine, irgendwo im Basic-Warmstart wird auch nochmal der Stack initialisiert, statt mit RTS an letzter stelle sollte man also auch mit einem Jmp ins Rom ins Basic zurückkommen. Falls der Stackpointer mal überläuft, dann fängt der Stack halt wieder von Vorne an, darum kannst Du's Dir wohl schenken, den Stapel erst leerzuräumen, das könnte man aber auch mit ldx#255:TXS machen. Aber ich denke, daß auch meine kompizierteren Programme kaum mehr als 50 Byte Stapel gebraucht haben werden.