Ich hatte heute ein paar freie Stunden und habe diese dem BASIC 65 gewidmet. Mir kam die Idee, einen sogenannten "Compactor" zu versuchen, also ein Programm, das ein vorhandenes BASIC 65-Programm "verdichtet".
In diesem konkreten Fall ging es mir in einer ersten Version 0.1 (also so ungefähr "kann eh noch fast nix") erst einmal darum, die Leerzeichen in einem BASIC 65-Programm zu entfernen, sofern sie nicht in einem REM-Kommentar oder innerhalb eines Stringquotes (") stehen. Der BASIC 65-Interpreter benötigt diese nicht, im Gegenteil, diese kosten ihm "unnötig" Zeit, da er sie erkennen und überspringen muss.
Also, in der ersten Version 0.1 kann der "Cactus 65-Compactor" ein BASIC 65-Programm, dessen Dateinamen man am Anfang angibt, so modifizieren, dass alle "unnötigen" Leerzeichen entfernt werden und das modifizierte Programm mit dem Namensanhängsel "-cp" auf die Diskette geschrieben wird. Falls der Dateiname länger als 13 Zeichen ist, werden davon nur die ersten 13 Zeichen verwendet, damit das Kürzel noch in die maximal 16 Zeichen für einen Dateinamen passt.
forum64.de/wcf/index.php?attachment/338743/
forum64.de/wcf/index.php?attachment/338744/
forum64.de/wcf/index.php?attachment/338745/
Sonst macht das Programm nichts.
Falls irgendwas schief läuft, egal was, dann wird "error in line <xy>" ausgegeben. Komfort ist was für Weicheier, hier geht es erstmal nur darum, dass es funktioniert!
Ach so: Die Bildschirmfotos habe ich aus Bequemlichkeit mit dem BASIC 65.EX gemacht, weil ich überwiegend damit arbeite. Das Programm funktioniert aber natürlich auch mit dem Standard-ROM 920376.
Der Geschwindigkeitsvorteil hält sich hier in geringen Grenzen, er ist aber definitiv spür- und messbar. Zum Beispiel bei den beiden Testprogrammen, die mit auf der Diskette sind, waren die "verdichteten" Versionen so 5% bis 6% als die jeweiligen Originalversionen. Das hängt natürlich auch davon ab, wie großzügig man in seinem Programm die Leerzeichen verwendet hat.
forum64.de/wcf/index.php?attachment/338746/
Mal schauen, es gibt natürlich noch weiteres Optimierungspotential (z.B. Zeilennummer ab 1 in 1er-Schritten oder REM-Kommentare entfernen), was aber dann etwas mehr Arbeit benötigt, weil man dann Zeilensprünge usw. anpassen muss. Vielleicht habe ich dafür ja auch mal Zeit und Lust ... dann gibt es ein Update des Cactus 65-Compactors.
Die Diskette hängt hier als D81-Image mit an.