Hallo,
CHDKLover hat geschrieben:Sollte man nicht vielleicht generell erst ein Script in den Hauptspeicher laden,
wenn es ausgeführt werden soll?
Ja, das ist eine gute Idee.
Also nun ein neuer Ansatz bei dem nur während der Scriptausführung dieses auch im Speicher geladen ist.
Bei Lua geht das leicht, da Lua ein Script direkt aus einer Datei laden und ausführen kann. Ein vorhergehendes reduzieren der Scriptgröße ist nicht erforderlich und sinnvoll.
UBasic-Scripte werden beim Laden direkt vor der Ausführung wie weiter oben erfolgreich getestet von für uBasic nicht benötigten Inhalten (Parameter, REM- und Leerzeilen, Leerzeichen am Zeilenbegin und -ende) befreit. Die Zeilenanzahl bleibt in jeden Fall erhalten. Das ist wichtig für die Fehlersuche.
Bei der Scriptauswahl im Auswahlmenü werden die Parameter direkt aus der Script-Datei gelesen und in den vorhandenen Parameterspeicher übertragen. Die Parameterzeilen des Scriptes belegen ebenfalls keinen zusätzlichen Speicherplatz (entgegen der vorherigen Version).
Das im Quelltext eingebettete default-Script wurde entfernt. Diese Aufgabe muss jetzt die default-Script-Datei erledigen. Diese ist bereits in der "script.h" mit "A/SCRIPT.BAS" definiert. Ein anderen Speicherort ist sicher sinnvoll.
Einen Nachteil hat dieser Verfahrensweise wenn die PTP-Schnittstelle allgemein nutzbar wird. Da die Parameter bei der Scriptauswahl verarbeitet werden und das Script erst direkt vor der Ausführung geladen wird, kann es während dieser Zeit verändert wurden sein. Die bereits verarbeiteten Parameter müssen dann nicht mehr zum aktuellen Script passen. Eine einfache Prüfvariante mittels Dateigröße ist implementiert, aber das ist eben keine Prüfsumme. Die Scriptausführung wird bei Ungleichheit nicht gestartet.
Ein Bug ist beim Testen noch aufgetreten den die A590 auch mit der Trunk-Version aufweist. Führt man ein fehlerhaftes-uBasic-Script aus erscheint die Fehlermeldung im Display links oben. Führt man jetzt ein Lua-Script aus, dann bleibt die uBasic-Fehlermeldung weiterhin erhalten. Betrifft das auch andere Kameras?
Als Grundlage zur Diskussion anbei die Patch-Datei für die beschrieben Anpassungen.
Gruß rudi