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

letzter Beitrag von Mac Bacon am

Daten in andere PRG-Files auslagern

  • Muss man fürs Nachladen von einem laufenden Programm aus nicht noch eine POKE-Zeile vor dem LOAD-Befehl setzen?


    Ich kann mich daran erinnern, dass man, wenn man ohne diesen Poke einfach den Load-Befehl eingesetzt hat, das nachgeladene Programm fehlerhaft dargestellt oder gänzlich ruiniert wurde.


    Nur, kann ich mich an die vollständige POKE-Anweisung (mit den genauen Daten und Werten) nicht mehr erinnern. Hatte den auch mal in irgendeinem Handbuch gefunden.


    Aber irgendjemand von Euch kennt den doch bestimmt. ;)

  • Muss man fürs Nachladen von einem laufenden Programm aus nicht noch eine POKE-Zeile vor dem LOAD-Befehl setzen?


    Ich kann mich daran erinnern, dass man, wenn man ohne diesen Poke einfach den Load-Befehl eingesetzt hat, das nachgeladene Programm fehlerhaft dargestellt oder gänzlich ruiniert wurde.

    Wenn man aus einem Basic-Programm heraus ein Basic-Programm nachlädt, so wird nur soviel vom neuen Programm geladen, bis die Länge des alten Programms erreicht ist, der Rest wird verworfen. Das geschieht, weil sonst die hinter dem Programmtext abgelegten Variablen überschrieben werden. Per POKE könnte man nun dafür sorgen, dass
    a) die Variablen weiter oben im Speicher abgelegt werden, so dass man längere Programme nachladen kann, oder
    b) direkt vor dem Nachladen das alte Programm künstlich verlängert wird, so dass das neue Programm komplett geladen wird (wenn es nicht stört, dass man dabei die Variablen verliert)


    Ist das nachgeladene Programm eh kürzer, oder lädt man etwas anderes als Basic-Programme, braucht man keinerlei POKEs.

  • Zitat von Mac Bacon

    Wenn man aus einem Basic-Programm heraus ein Basic-Programm nachlädt, so wird nur soviel vom neuen Programm geladen, bis die Länge des alten Programms erreicht ist, der Rest wird verworfen.


    Äh, nein. Die Variablen *werden* bei einem überlangen Programm überschrieben. Die KERNAL LOAD Routine prüft das nicht ab.


    In der Folge liegt der Start der Variablen dann mitten im nachgeladenen Programm, was einem spätestens beim ersten Variablenzugriff den Variablenscanner durcheinanderbringt. Mit der Folge eines zerschossenen Programms im Speicher und einer bunten Mixtur aus ?FORMULA TOO COMPLEX, ?OUT OF MEMORY oder sonstigen Fehlermeldungen.