Hallo liebe Community!
Ich suche händeringend einen Programmcode-Compressor für ein großes Basic-Listing (6128), damit ich, sobald ich dieses laufen lasse (6128-Emulator), keine Speicherprobleme bekomme (memory full). Hatte hier im Forum schon mal den Tipp erhalten bezgl. des Programmcodecompressors aus einem CPC-Sonderheft (der heißt "bpc"). Habe mir diesen besorgt, doch der verschluckt mir hier und da einfach mal so einige Datazeilen. Könnte mir jemand dankenswerterweise eine Alternative zur Verfügung stellen?
Tausend Dank,
RhB
-
-
Hallo RhB,
Ein Basic-Kompressor ist mir leider nicht bekannt...Hast du das Programm abgetippt oder selbst geschrieben? Abtipp-Porgramme sollten ja eigentlich schonmal getestet worden sein und auf einem Standard-CPC laufen.
Hast du mal versucht, das Programm im 464-Modus (bzw. ohne Floppy-ROM, falls du Basic 1.1 brauchst) auszuführen? Dann hast du zumindest ein paar KB mehr zur Verfügung. Alle anderen Zusatz-ROMs solltest du auch nach Möglichkeit deaktivieren.
Wenn das nichts hilft, bleibt dir nur noch die Möglichkeit, selbst ein wenig zu optimieren. Wenn dein Programm viele DATA-Zeilen enthält, die sowieso in Arrays eingelesen werden, könntest du darüber nachdenken, diese direkt aus einer separaten Datendatei beim Programmstart von Disk zu laden. Dann stehen die Daten während der Laufzeit nicht doppelt im Speicher.
Viele Grüße
Nilquader -
Mailzeit, RhB!
Der BPC enstellt das BASIC-Listing derart, dass es anschliessend weder lesbar ist noch abgeändert werden kann.
Wie werden die DATA-Zeilen verschluckt? Werden sie von READ-Befehl nicht mehr gefunden oder werden sie bei einem LIST schlichtweg nicht mehr angezeigt?
Wie Nilquader schon geschrieben hat sollte die erste Massnahme sein, die Daten aus den DATAs in eine Datei auszulagern, denn nachdem Du sie aus den DATA-Zeilen in Variablen eingelesen hast stehen diese zweimal im Speicher.
Was meinst Du mit 6128-Emulator?
Viel Erfolg,
AlMaSys -
Hi Nilquader,
danke für die Tipps! Das Programm ist ein Listing, das ich selbst mit Zusatzfunktionen erweitert habe (ein Bundesligamanagerspiel). Das mit dem Einlesen von Daten für Arrays probierte ich bereits, das komische war nur, dass mir beim externen Einlesen ziemlich bald "string space full" mitgeteilt wurde, während das nicht der Fall ist, wenn ich die Daten in Datazeilen im eigentlichen Listing stehe lasse. Wirklich komisch.
Gruß, RhB -
Quote from "Nilquader"
Ein Basic-Kompressor ist mir leider nicht bekannt...Hast du das Programm abgetippt oder selbst geschrieben? Abtipp-Porgramme sollten ja eigentlich schonmal getestet worden sein und auf einem Standard-CPC laufen.
Der BPC hat auf meinem CPC6128 wunderbar funktioniert.
Schönes Wochenende,
AMSi -
Hi almasys!
Auch Dir vielen Dank! Mit 6128-Emulator meinte ich den Emulator "Win CPC", den BPC nutzte ich demzufolge auch in der Version für den 6128. Bei dem Compressor ist es so, dass danach während des Programmablaufs manche Variablenbelegungen nicht mehr stimmen. Variablen haben dann plötzlich den Wert 0, obwohl sie den niemals haben dürften und in der "nicht-compressten" Version auch alles okay ist. Ich vermute, dass da beim Komprimieren leider etwas schief läuft. Das externe Einlesen von Daten führte bei mir leider zur raschen Meldung "string space full", was seltsamerweise nicht der Fall ist, wenn ich die Daten ganz gewöhnlich in Datazeilen belasse.
Grüßle, RhB -
Mailzeit, RhB!
Du könntest das Listing zweiteilen, im ersten Teil liest Du die DATAs ein, dann startest Du mit CHAIN-Befehl das Hauptprogramm.
Schönes Wochenende,
AMSi[/code] -
Hi,
vielen Dank für diesen Tipp. Soweit hatte ich wirklich noch nicht gedacht, ich werde es ausprobieren!
Viele Grüße, RhB