Beiträge von Hexworx im Thema „Scroll- und Type-Routinen in BASIC V2“

    Für einen Geschwindigkeitsvergleich kann man mal die Variable b in Zeile.5 auf Null setzen.
    Oder die Verögerungsschleife in Zeile.20 durch ein rem ausschalten.


    Warum machst du es dann nicht einfach und hängst auch mal ein .prg ran?

    Abgesehen davon, dass man es ja schon optisch sieht: 'Mike's Routine ist bei 40 Zeichen/Sekunde; deine bei 65 Zeichen/Sekunde. Glückwunsch.

    Als autarke Code-Schnipsel müsste man aber eh' beide runterbremsen. Sagt also nix. Käme auf die Verwendung an.

    Aber wenn ich mir deinen Code angucke und den von Mike, fällt die Entscheidung leicht:

    Pro Mike:

    - die DATAs können liegen wo sie wollen
    - man könnte zudem den Text einmalig in String-Arrays einlesen
    - man könnte problemlos weitere Aktionen einbinden für ein Intro o. ä. (vor dem "-ON"). Praktisch wie in einem IRQ
    - schön lesbarer, verständlicher Code

    Pro BIF:

    - ?

    Wo würdest du weiteren Code einbauen? In die Schleife vor dem NEXT?

    Zudem finde ich das wiederholte A$/GOSUB gruselig.

    Der Kenner hat sicherlich erkannt


    Sischer, sischer... :blah!

    Hier noch einmal die Funktion zur Ermittlung der Stringadresse.


    Zugegebenerweise ein witziges Stück Code.

    Aber um dann statt mit MID$ & Co. (GBC-Vermeidung?) den Kram zu lesen und zu POKEn (und ggf. noch Steuerzeichen zu filtern und umzufriemeln) hilft es nicht wirklich weiter. Jedes Zeichen mit PEEK holen und über CHR$ printen? Hmm... könnte etwas lahm werden... :drunk:

    Mir fällt jetzt jedenfalls keine sinnvolle Verwendung ein... :whistling:

    So geht's scheinbar:

    Die Adressen 65/66 müssen nach dem allerersten READ gespeichert werden (davor geht's noch nicht).

    Am besten als ersten DATA-Wert einen Dummy nehmen. Dann kann man das z. B. vor einer Schleife mit einem einzelnen READ X:Y=PEEK(65):Z=PEEK(66) machen und später damit wieder auf den echten Beginn der DATAs setzen (Dummy wird übersprungen). So könnte man dann auch noch weitere Einsprünge in den DATAs setzen.

    Vielleicht geht's aber ja auch noch anders/besser.

    Jetzt ist mir biffig... :S

    Prima :) .

    Das einzige Manko am V2 Basic ist echt, dass man den Zeiger auf den DATA-Bereich nicht selber setzen kann, sondern nur starten und resetten. Dadurch gibt es keine flüssigen Schleifen wenn man im Data-Bereich z.B. noch Sprites hat, aber gut.


    Verbesserungsvorschlag zu 'val15':

    Du brauchst die DATAs nur einmal am Anfang einlesen und dann als N(I) ablegen. DIM N(23) nicht vergessen. Dann kannst du den ganzen READ/RESTORE-Kram hinten aus dem Code rausnehmen und die zweite DATA-Zeile weglassen (was mit einem zusätzlichen RESTORE ja eh schon ginge).

    Zu 'vintro':

    1) Statt der Leerstellen vorne mal mit TAB oder SPC versuchen.

    2) Statt der DATA-ASCII-Orgien würde ich mal über einen normalen Text-String und MID$(V$,I,40) nachdenken.

    Gruß