Hallo Besucher, der Thread wurde 1,4k mal aufgerufen und enthält 11 Antworten

letzter Beitrag von BIF am

Neustart verhindern

  • Hallo, hier kommt ein neues Thema:


    Manche Befehle oder Systemprogramme führen nach dem Ausführen einen Neustart durch.
    z.B. der LOAD-Befehl im Programmmodus.
    Mit Tricks kann man das aber natürlich auch verhindern.
    Und zwar, indem der Basic-Anfang auf die nächste Zeile gesetzt wird.
    Dazu bestimmt man in Zeile.15 mit dem CONT-Vektor die Zeilenadresse und pokt dann die Adresse der Folgezeile nach 43/44.
    In 16 wird der Basic-Anfang wieder auf die Orginalwerte zurückgesetzt.



    QUELLCODE:
    10 :rem--go. start(sys42638)
    11 :rem--set.start(sys58370)
    12 :
    13 :print"[clr]go.start/folge-zeile:"
    14 :
    15 a=peek(61)+peek(62)*256:poke43,peek(a+1):poke44,peek(a+2):sys42638:;
    16 :poke43,1:poke44,8:print"****":list



    Schönen Gruß.

  • Deine Beispiele und Hilfen in allen Ehren, aber kannst du nicht auch sinnvolle Optimierungen fürs BASIC machen? Das würde uns BASIC Programmierer mehr weiterhelfen, als solche unsauberen Tricks. Wieso beschäftigst du dich nicht mal mit der Optimierung bzw. Geschwindigkeit von BASIC Abläufen? Schließlich ist dies das größte Manko am Commodore BASIC.


    Dennoch danke, daß du dich für BASIC interessierst. Bin ich wenigstens nicht allein hier. ;)

  • Genau das ist ja die Optimierung des Ablaufes von Basic-Programmen, da man dann genau in der nächsten Zeile weiterprogrammieren kann, trotz Neustart.


    Außerdem lernt der Basic-Programmierer dabei noch, wie er die Zeilenadresse und die Adresse der Folgezeile bestimmt . Und dazu noch wie man mit sys-Befehl zum Programmanfang springt.


    Schönen Gruß.

  • Natürlich muß man, wenn man Speicherprobleme hat so etwas auch bedenken.


    Ansonsten hat man natürlich meist genügend RAM zur Verfügung.
    Soviel mehr ist das in Bytes natürlich auch nicht, da man ja dann auch das if ..then und die Verzweigungen wieder einspart.
    Der Trick kann in zwei Zeilen realisiert werden. Die benötigt man sonst wahrscheinlich auch.


    SPIELEPROGRAMMIERUNG:
    Für Spieleprogrammierer sollte der Trick auch interessant sein, da man damit dann ein Basic-Programm, z.B. einen neuen Level genau an die Folgezeilen-Adresse laden kann, mit


    :load"level 2",8:


    Man kann damit also auch jede Menge an Speicherplatzt sparen, den man sonst für zusätzlichen Diskettenspeicher benötigen würde.


    Schönen Gruß.

  • Das kann vermutlich sogar Strom sparen und die Wale retten!


    kannst du nicht auch sinnvolle Optimierungen


    Im Ernst, komplett sinnlos ist das nicht, vorausgesetzt man findet BASIC an sich sinnvoll.

    solche unsauberen Tricks


    Unsauber? Wegen des 1 "dreckigen" direkten SYS-Sprungs ins KERNAL in Zeile10? Oder wegen des Fliegendrecks der Doppelpunkte?

  • @Ryk:
    Also, man spart Zeit, also Lade-Zeit, Disketten-Speicherplatz und damit natürlich auch Geld für Disketten oder Kassetten.
    Und wegen der Zeitersparnis beim Laden spart man natürlich Strom und man kann sich vielleicht auch noch um die Wale kümmern, wofür man dann theoretisch auch noch Geld übrig hätte.


    Zum Code:
    Der Sprung in die nächste Zeile kann bei dem Code natürlich auch schon der Sprung ins nächste Programm sein, wenn man es in der Zeile davor mit :load"name",8: nachgeladen hat.


    Schönen Gruß.

  • ... das muß echt ein trocken Brot sein: Problemlösungen feilbieten für Probleme, die keiner hat.


    Man kann natürlich auch eine andere Methode des Nachladens verwenden, so daß sich die Prämisse dieses Threads hier, "Neustart verhindern", erst gar nicht stellt. :D


    Auf etwas anderes als eben jenen Beitrag hier hattest Du es ohnehin nicht abgesehen, aber das ist dann auch schon mein letzter Beitrag dazu hier in diesem Thread.


    Kartoffeln! Bringt mehr Kartoffeln!


    Husch... und weg ...

  • Ich nenn es mal Handwerkszeug.
    Und damit kann man wie gesagt schon einiges erreichen.


    Wie z.B. Feststellen der Zeilenadresse, setzen des PGR-Anfangszeiger.
    Oder natürlich kann man modifiziert auch den Programm-Ende Zeiger setzen.
    Oder das Programmende berechnen. z.B. um die Adresse des ANhangs festzustellen, durch den man dann natürlich noch mehr an Speicherplatz sparen kann.


    Und wie gesagt Nachladen eines Programmes ab einer Zeilenadresse.
    Und natürlich noch andere Tricks, wie Selbstmodifikation, usw.


    Also auf den zweiten Blick bietet der Trick jede Menge zur Saftgewinnung
    und bietet den Einstieg in viele Programmierbereiche.



    Schönen Gruß.