File-Compactor
Wozu unnötigen Ballast auf Diskette speichern und laden? Der File-Compactor kürzt fast jedes Programm — bis zu 50 Prozent. Einzige Voraussetzung: mindestens eine Basic-Zeile.
Fast alle Programme, egal ob Basic oder Assembler, weisen Folgen von gleichen Zeichen auf. Denken Sie nur an Grafikbilder, die in einem Programm enthalten sein könnten. Diese Zeichenfolgen lassen sich kürzen.
Man geht dazu folgendermaßen vor: Man durchsucht das ganze Programm nach Folgen von gleichen Bytes. Wurde eine Folge gefunden, wird ein Merkzeichen (in diesem Fall $bf oder $cf) an die momentane Stelle geschrieben. Danach der Zeichencode und die Anzahl der Zeichen. Verwechslungen mit eventuell vorkommenden $bf- oder $cf-Codes können dadurch ausgeschlossen werden, indem man vor diese Codes noch mal den Code und für die Anzahl eine »1« schreibt.
Damit die gekürzte Version lauffähig ist, wird vor das eigentliche Programm noch ein »Entpacker« gesetzt, der auch mit abgespeichert werden muß. Von jedem Programm bleibt nach dem Komprimieren nur noch eine Zeile mit einem SYS-Befehl (zum Start des Entpackers) übrig.
Tippen Sie RUN ein, wird vor dem eigentlichen Programmstart das ursprüngliche Programm aus den komprimierten Daten wieder zusammengesetzt; erkenntlich an der dunkelblauen Rahmenfarbe. Das komprimierte Programm wird dazu an das Speicherende verschoben und dann Byte für Byte wieder an die Stelle gesetzt, wo es vor der Behandlung mit dem File-Compactor stand. Stoppen Sie das Basic-Programm nach dem Entpacken mit STOP oder STOP/RESTORE, sehen Sie wieder das normale Basic-Programm in seiner vollen Länge.
Spart Platz auf Disketten
Ein Beispiel: Bestimmte Versionen des Spiels »Apocalypse« sind 153 Blocks lang. Nach der Behandlung mit dem File-Compactor aber nur noch 83 Blocks, also um 46 Prozent kürzer.
Tips zur Benutzung
- File-Compactor mit dem MSE eingeben und abspeichern.
- Das so gespeicherte Programm mit LOAD"FILE-COMPACTOR",8 laden und mit RUN starten.
- Diskette mit dem zu kürzenden Programm einlegen.
- Namen des Programms eingeben und RETURN drücken. Das Programm wird geladen.
- Diskette mit genügend freiem Platz einlegen.
- Namen des gekürzten Programmes eingeben und RETURN drücken. Die gekürzte Version wird gespeichert.
Wollen Sie ein Maschinenprogramm kürzen, das mit LOAD "name",8,1 geladen und mit SYS gestartet wird, müssen Sie das Programm erst mit dem Basic-Start-Generator auf Seite 74 »vorbehandeln«.
(Marcus Breiing/hm)PROGRAMM : FILE-COMPACTOR 0801 0A9A ----------------------------------- 0801 : 24 08 C1 07 9E 32 30 38 27 0809 : 38 20 20 46 49 4C 45 20 6F 0811 : 43 4F 4D 50 41 43 A4 52 BF 0819 : 20 4D 2E 42 52 45 49 49 BB 0821 : 4E 47 00 00 00 00 00 A9 66 0829 : 0B 8D 20 D0 8D 21 D0 A9 95 0831 : 36 85 01 A9 51 A2 09 20 2E 0839 : AF 08 20 C0 08 A9 01 A2 24 0841 : 08 A0 00 20 BA FF A9 00 F0 0849 : A2 9A A0 0A 20 D5 FF B0 B4 0851 : E2 86 FD 84 FE A9 92 A2 53 0859 : 09 20 AF 08 20 C0 08 A9 DB 0861 : 01 A2 08 A0 01 20 BA FF C5 0869 : 20 C0 FF B0 E8 A2 01 20 E7 0871 : C9 FF A9 A7 A2 09 A0 00 8E 0879 : 85 FB 86 FC B1 FB 20 D2 5E 0881 : FF E6 FB D0 02 E6 FC A9 AB 0889 : 9A A2 0A E4 FC D0 02 C5 7D 0891 : FB D0 E9 A9 9A A2 0A 85 96 0899 : FB 86 FC 20 DA 08 20 CC 22 08A1 : FF A9 01 20 C3 FF A9 37 0A 08A9 : 85 01 18 4C 34 A8 85 FB D5 08B1 : 86 FC A0 00 B1 FB F0 06 A8 08B9 : 20 D2 FF C8 D0 F6 60 A2 E7 08C1 : 00 20 CF FF C9 0D F0 09 A0 08C9 : 9D 3C 03 E8 E0 10 D0 F1 18 08D1 : CA 8A A2 3C A0 03 4C BD DF 08D9 : FF 20 35 09 AA 20 46 09 2E 08E1 : 84 02 C0 03 90 2A 98 18 E4 08E9 : 65 FB 85 FB 90 02 E6 FC DB 08F1 : E0 00 F0 10 A9 BF 20 40 A9 08F9 : 09 A5 02 20 40 09 8A 20 10 0901 : 40 09 D0 23 A9 CF 20 40 78 0909 : 09 A5 02 20 40 09 D0 17 27 0911 : E0 BF F0 04 E0 CF D0 0B 73 0919 : 8A 20 40 09 A9 00 20 40 80 0921 : 09 D0 04 8A 20 40 09 A5 58 0929 : FB A6 FC E4 FE D0 02 C5 5D 0931 : FD 90 A6 60 A0 00 B1 FB F5 0939 : E6 FB D0 02 E6 FC 60 20 A9 0941 : D2 FF A9 FF 60 A0 00 D1 2C 0949 : FB D0 04 C8 D0 F9 88 60 86 0951 : 9B 93 0E 08 12 C6 49 4C 50 0959 : 45 20 C3 4F 4D 50 41 43 6C 0961 : 54 4F 52 20 31 20 20 20 CA 0969 : 20 20 20 31 39 38 35 20 32 0971 : 42 59 20 CD 2E C2 52 45 EE 0979 : 49 49 4E 47 0D 11 11 D0 23 0981 : 52 4F 47 52 41 4D 4D 2D A5 0989 : CE 41 4D 45 20 20 3E 20 30 0991 : 00 0D 11 11 D3 50 45 49 E6 0999 : 43 48 45 52 4E 20 41 4C 1F 09A1 : 53 20 20 3E 20 00 01 08 EA 09A9 : 1E 08 C1 07 9E 20 28 32 0D 09B1 : 30 38 35 29 20 43 4F 4D 64 09B9 : 50 41 43 54 20 46 43 31 A9 09C1 : AD 4D 54 42 00 00 00 00 72 09C9 : 00 00 00 00 20 53 E4 A2 3F 09D1 : 00 BD 7E 08 9D 3C 03 E8 EA 09D9 : E0 C0 D0 F5 A9 36 85 01 70 09E1 : 8D 20 D0 A9 00 A2 D0 85 4B 09E9 : FB 86 FC A5 2D A6 2E 85 E7 09F1 : FD 86 FE A0 00 F0 04 B1 00 09F9 : FD 91 FB A9 F2 A2 08 E4 21 0A01 : FE D0 02 C5 FD F0 13 A5 A0 0A09 : FD D0 02 C6 FE C6 FD A5 31 0A11 : FB D0 02 C6 FC C6 FB 4C 5C 0A19 : 50 08 A9 01 A2 08 85 2D D3 0A21 : 86 2E 4C 3C 03 20 9A 03 FB 0A29 : C9 CF D0 11 20 9A 03 C9 A7 0A31 : 00 D0 04 A9 CF D0 1C AA 19 0A39 : A9 00 4C 83 03 C9 BF D0 85 0A41 : 12 20 9A 03 C9 00 D0 04 52 0A49 : A9 BF D0 07 AA 20 9A 03 03 0A51 : 4C 83 03 20 A5 03 A9 00 3D 0A59 : A2 D0 E4 FC D0 02 C5 FB 68 0A61 : D0 C3 A9 37 85 01 20 59 F8 0A69 : A6 4C AE A7 E8 A0 00 91 8D 0A71 : 2D C8 CA D0 FA 88 98 38 96 0A79 : 65 2D 85 2D 90 02 E6 2E 8D 0A81 : 4C 6D 03 A0 00 B1 FB E6 A4 0A89 : FB D0 02 E6 FC 60 A0 00 9F 0A91 : 91 2D E6 2D D0 02 E6 2E 2D 0A99 : 60 F4