Hallo Besucher, der Thread wurde 3,8k mal aufgerufen und enthält 22 Antworten

letzter Beitrag von Deus am

Wellen auf dem Bildschirm

  • Wie oben [...] beschrieben, nutze ich genau die Ein-Zeichen-Differenz einer Zeile aus.

    Der Witz ist doch, daß das bei der Fassung in Maschinensprache gar nicht benötigt wird.


    Wie ich schon schrub, kann der einzelne Wellenzug dann auch 10 oder 12 oder 17 Zeichen lang sein und Du bekommst immer noch nach links laufende Wellen aus dem zirkulären Puffer heraus. Es sind jetzt nur halt die Wellen in übereinander liegenden Zeilen stärker gegeneinander versetzt. In BASIC hingegen bricht der Effekt zusammen.


    Alternativ - wenn immer noch der diagonale Versatz erwünscht ist, kann man in jeder neuen Zeile den Zeiger in den Puffer neu initialisieren, mit dem Anfangswert der Vorgängerzeile+1. Das gibt das originale BASIC-Programm wiederum ebenfalls nicht her, da es dazu "Sprünge" in der Zeichenkette machen müßte.


    Im übrigen nimmt sich der Aufwand auch in der Anzahl der Speicherzugriffe nichts. Ob jetzt aus 960 Zeichen für's Scrollen gelesen und geschrieben werden, oder aus einem 13-Zeichen-Puffer 960x gelesen und in den Bildschirm geschrieben wird, ist im wesentlichen egal. (... gut, der KERNAL kopiert auch noch das Farb-RAM, aber das reißt's jetzt auch nicht raus ...)


    Und zum Schluß noch eine Entschuldigung, wollte dir damit nicht auf den Schlips treten. Aus Basic-Sicht ist es ja auch schön simple.

    Kein Streß. ^^
    :bia

  • Der Code würde länger wenn ich nicht linear den kompletten Ram schreiben würde, weil ich die 40 Zeichen Grenze gar nicht beachten muss.
    Den kompletten Screen muss ich so oder so schreiben, das schenkt sich nicht viel, stimmt.
    Wenn ich wirklich noch Zuwachs an der Geschwindigkeit wöllte, würde ich den String in die Zeropage legen.
    Wenn ich es richtig verstehe würde ich dann pro ScreenRam 1000 Zyklen sparen. Wären dann 5000 statt 6000 Zyklen für das reine kopieren, ohne Logik.