17 Super-Utilities für den C64
Wollen Sie Ihre Basic-Programme schneller und kürzer machen? Wollen Sie Betriebssystem oder Zeichensatz Ihres C64 ändern? Dieses Maschinenprogramm löst Ihre Probleme.
Das Programm entstand durch Zusammenfügen der in der praktischen Arbeit am häufigsten gebrauchten Maschinensprache-Routinen zu einem einzigen großen Utility-Paket.
Die beiden Bereiche Optimierung von Basic-Programmen und Zeichen-Definition stehen im Mittelpunkt. Nach ordnungsgemäßem Laden kann man ein Menü mit »sys 49152« aufrufen (Bild 1), in dem alle Unterprogramme mit Namen und SYS-Adresse genannt werden.
Nun zu den Programmen selbst:
Space-Killer (sys 49155): Hinter diesem martialisch anmutenden Aufruf verbirgt sich nichts anderes als eine Maschinen-Routine, welche überflüssige Spaces aus einem Basic-Programm entfernt.
Nach dem »sys 49155«-Aufruf erscheint in der oberen Bildschirmecke ein farbiges Symbol als Versicherung, daß alles in Ordnung ist, denn die Routine kann durchaus bis zu 1/4 Stunde laufen, wenn viele Spaces zu entfernen sind und das Programm entsprechend lang ist.
Space-Expander (sys 49158): Es erscheint auf den ersten Blick befremdend, etwas einzufügen, was man eben erst entfernt hatte. Doch die Aufgabe liegt auf der Hand: zwischen jeden Basic-Befehl ein Space einzufügen, um das Druckbild sauber und ansprechend zu gestalten.
REM-Killer (sys49161): erklärt sich selbst. Erwähnenswert ist die Geschwindigkeit, mit der die Routine läuft. 20 kByte-Programme werden in etwa 10-30 Sekunden »gesäubert«.
Zeilen löschen (sys 49164): Hiermit werden ganze Zeilenbereiche gelöscht. Beispiel: »sys 49164,1000,1999« entfernt alle Basic-Zeilen mit den Nummern von 1000 bis 1999 einschließlich. Mit Druck auf dieRETURN-Taste ist der Befehl schon ausgeführt.
Text suchen (sys 49167,"Suchtext"): Sucht eine Zeichenkette »Suchtext« im Basic-Programm und gibt die gefundenen Zeilennummern aus.
Eine Besonderheit ist das Jokerzeichen »?«: Hier wird jedes Zeichen akzeptiert, es darf allerdings nicht an erster Stelle im Suchtext stehen.
Colon-Maker (sys 49170): Ersetzt jedes Space am Anfang einer Basic-Zeile durch einen Doppelpunkt»:«.
Space-Maker (sys 49173): Ersetzt jeden Doppelpunkt am Anfang einer Basic-Zeile durch ein Space » «. Beide Routinen dienen als Strukturhilfen. Da alle der Zeilennummer unmittelbar folgenden Spaces überlesen werden, muß man erst einen »neutralen« Doppelpunkt setzen, diesen dann später durch ein Space ersetzen.
Package (sys 49179): Hier ist die Notlösung für jeden, der einfach mehr Platz braucht und das Basic-Programm garantiert nicht mehr korrigieren muß. »Package« schmilzt nämlich benachbarte Zeilen zusammen, so daß bei jeder Verschmelzung vier Bytes freiwerden (Ein Null-Byte, Zwei Bytes der Koppeladresse plus Zwei Bytes der Zeilennummer, abzüglich ein Byte für den nun erforderlichen Doppelpunkt als Trennelement). Das braucht seine Zeit, weil einige Aspekte kontrolliert werden müssen, zum Beispiel ob die zu verschmelzende Zeile angesprungen wird, dann muß sie mit ihrer Zeilennummer präsent bleiben, sonst gibt’s Ärger mit dem Interpreter, der sich dann mit »undef’d statement« beschwert. Für die Verschmelzungstiefe gibt es leider eine unnatürliche Grenze: Mehr als 255 Bytes darf eine Zeile nicht lang sein, sonst kann der Interpreter die Zeilen nicht mehr binden und findet hinter einer solchen »Megazeile« keine Zeilennummer mehr.
Um Basic-Programme auf ein Minimum zu komprimieren, empfiehlt sich folgender Weg:
- zuerst »sys 49161« eingeben. Danach sind alle REMarks weg, und die folgenden Routinen haben weniger Prüfarbeit.
— dann »sys 49155« eingeben. Hier werden alle Zeilen gestaucht.
— zuletzt »sys 49179« eingeben, danach ist Ihr PRG redundanzfrei.
Für spätere Änderungsarbeiten wird man sich natürlich ein »augenfreundliches« Original verwahren, am besten benutzt man von allen Basic-Programmen zwei Versionen: Eine originale zur Dokumentation, Korrektur, Ausdruck und eine komprimierte mit minimalen Platzansprüchen und schneller Ausführung.
CPU-Register ein (sys 49182): Zeigt fortwährend die Register des Mikroprozessors in den beiden oberen Bildschirmzeilen an.
Außerdem werden der IRQ-, NMI- und der BRK-Vektor sowie der Programmcounter angezeigt. Im Status-Register bedeutet »*« ein gesetztes Bit, ».« ein gelöschtes.
CPU-Register aus (sys 49185): Schaltet die Anzeige wieder ab.
Basic-Ende setzen (sys 49188): setzt das Basic-Ende genau hinter das im Speicher befindliche Programm. Normalerweise erledigt das der Interpreter; wenn aber absolut geladen wurde, zum Beispiel in den $c-Block hinein, dann steht der Programm-Ende-Zeiger ebenfalls im $c-Block, und Eingabeversuche werden mit »out of memory«-Fehlermeldungen abgewehrt.
Dump (sys 49191): Gibt alle definierten Variablen unter Angabe des Namens und des aktuellen Inhalts aus.
Mit der Shift-Taste kann die Ausgabe angehalten, mit der Commodore-Taste vorzeitig abgebrochen werden.
ROM kopieren (sys 49194): Kopiert Interpreter- und Kernal-ROM in das darunter liegende RAM. Es gibt zwar viele veröffentlichte Programme zu diesem Thema, doch macht die Geschwindigkeit dieser Stilblüten auf Dauer aggressiv.
Zeichensatz RAM Die letzten vier Routinen befassen sich mit dem Zeichensatz:
(sys 49197): Verlegt den Zeichensatz nach $7000 und den Bildschirm nach $6c00. Die Absicht ist klar: im RAM kann der Zeichensatz leicht verändert werden.
Zeichensatz ändern (sys 49200): Setzt voraus, daß vorher durch »sys 49197« der Zeichensatz verlegt wurde, sonst funktioniert’s nicht. Es wird eine Zeichen-Änderungsroutine aktiviert, die einfach zu bedienen ist. Man fährt einfach mit dem Cursor über das zu ändernde Zeichen, drückt RETURN, und schon guckt man wie durch eine Lupe in die Punkte-Matrix des Zeichens hinein. Auch hier kann man sich wieder frei mit dem Cursor bewegen, natürlich nur innerhalb des Zeichens. Will man einen Punkt löschen, drückt man die Space-Taste, zum Setzen gibt man ein Sternchen »*« ein. RETURN führt wieder in das Menü zurück.
Zeichensatz speichern (sys 49203, "filename", gerätenummer)
Speichert den aktuellen Zeichensatz unter Angabe des Filenamens (der wie bei »SAVE« dem SYS-Befehl in Anführungsstrichen folgen muß), eines Kommas und der Gerätenummer entweder auf der Floppy oder dem Kassettenrecorder ab. Damit nicht jedesmal wieder bei Null begonnen werden muß, kann man einen Zeichensatz durch den Basic-Befehl:
»load "filename", gerätenummer,1«
absolut, das heißt von $7000 bis $7fff laden.
Die verbogenen Basic-Zeigerwerden danach mit »sys 49188« wieder gerade gerichtet.
Zeichensatz ROM (sys 49206): Schaltet den Zeichensatz wieder ins ROM $d000 zurück. Der Bildschirm wird wieder nach $400 verlegt.
Grundsätzliches zur Eingabe
Maschinenprogramme sind extrem empfindlich, was Fehler anbetrifft. Einfache Prüfsummen decken sich ausgleichende Fehler nicht auf. Wird beispielsweise eine »1« und eine »2« vertauscht, so stimmt die Prüfsumme zwar, das Programm ist aber wahrscheinlich nicht lauffähig. Aus diesem Grund habe ich die Prüfsummen gespalten, »pg« für gerade Bytes und »pu« für ungerade. Zwar sind auch jetzt noch Fehlermaskierungen möglich, aber extrem unwahrscheinlich.
Noch eine Unart erregt manches Ärgernis:
Viele Autoren veröffentlichen Basic-Lader, und geben dann nach etwa 4000 harten (das heißt unformatierten) Dezimal-Bytes eine (also eine einzige) Prüfsumme an, so ziemlich weit in den Hunderttausendern, die auf Anhieb nur selten übereinstimmt. Es wollen dann 4000 Bytes überprüft werden! Ich halte es für besser, nach einem kleineren Abschnitt, etwa einer »Page« (256 Bytes) eine Zwischenprüfung zu fahren und bei Unstimmigkeiten sofort mit einem Hinweis zu unterbrechen.
In meinem Programm werden den Datenbytes die Angabe der Seite, dann die gerade und letztlich die ungerade Prüfsumme vorangestellt. Wenn Sie das berücksichtigen, können Sie nach Herzenslust ändern und erweitern, ein Maschinensprachemonitor und Assemblerkenntnisse vorausgesetzt.
Probieren Sie mal einige Routinen aus
Wenn Sie das Programm genauso wie abgebildet im Speicher stehen haben, so können Sie durch »sys 49161« die Eliminierung aller REMs erzielen. Die Routine startet mit der Meldung »20779 Bytes PRG-Laenge« und endet nach 22 Sekunden mit »20019 Bytes PRG-Laenge«. 760 Bytes haben Sie gewonnen oder verloren, wie man’s nimmt.
Doch Vorsicht! Wenn Zeilen mit einem REM beginnen, wird die ganze Zeile entfernt. Sprünge zu dieser Zeile werden nicht berücksichtigt. Wenn das Programm mit der Fehlermeldung »undef’d statement« unterbricht, korrigieren Sie einfach den Sprungbefehl durch die Zeile, welcher der entfernten unmittelbar folgt.
Wenn Sie allerdings schon vorher überblicken, welche Zeilen »fällig« sein werden, können Sie durch zum Beispiel »sys 49167,"2000"« alle Zeilen mit dem Wortlaut "2000" ausfindig machen und korrigieren.
»sys 49155« kommt nach etwa 13 Minuten mit »17828 Bytes PRG-Laenge« zurück. Diese lange Zeit rührt davon her, daß nach jedem eliminiertem Space alle Programmzeilen wieder gekoppelt werden müssen, bei einemG ewinn von 2191 Bytes bedeutet das 2191 mal koppeln, und das Verschieben selbst braucht natürlich auch noch ein paar Millisekunden. Dann sind schnell, ehe man sich versieht, einige Minuten verflossen.
»sys 49179« als Package-Befehl bringt Ihnen nach 9 Minuten weitere 2095 Bytes Speicherplatzgewinn. Nach diesem 3-Stufen-Plan haben Sie insgesamt 5046 Bytes, die für die Funktion des Programms entbehrlich sind, entfernt. Durch den Platzgewinn werden Ihre Programme übrigens schneller, da erstens die Strings mehr Platz haben und seltener aufgeräumt werden müssen und zweitens weniger Zeilenübergänge stattfinden.
Ich möchte nochmals betonen, daß sich derartige »Rumpfpakete« ausschließlich für den RUN-Modus eignen. Listen, Korrigieren und so weiter sollte immer an einem »gesunden« Programm stattfinden.
(Johannes Mockenhaupt / ev)sys49155: | Space-Killer |
sys49158: | Space-Expander |
sys49161: | REM-Killer |
sys49164: | Zeilen löschen |
sys49167: | Text suchen |
sys49170: | Colon-Maker |
sys49173: | Space-Maker |
sys49179: | Package |
sys49182: | CPU-Register ein |
sys49185: | CPU-Register aus |
sys49188: | BASIC-Ende setzen |
sys49191: | Variablen dumpen |
sys49194: | ROM=> RAM |
sys49197: | Zeichensatz nach $7000 |
sys49200: | Zeichensatz ändern |
sys49203: | Zeichensatz speichern |
sys49206: | Zeichensatz, alt |
100 rem ************************ 110 rem * * 120 rem " * Johannes Mockenhaupt * 130 rem * * 140 rem " * K\ln, August 1984 * 150 rem * * 160 rem * * 170 rem " * Hilfsroutinen f]r: * 180 rem * * 190 rem " * Commodore C'64 * 200 rem * * 210 rem ************************ 220 : 230 print "{clr}Die Daten werden seitenweise 240 print "{down}gepoked und kontrolliert.{down} 250 n=12*2^12: rem " $c000 260 : for j=0 to 15 270 : read a$,pg,pu:rem " Pr]fsummen 280 : print "Seite "a$":"; 290 : for i=0 to 127 300 : read a,b 310 : pg=pg-a:pu=pu-b 320 : poke n,a:poke n+1,b 330 : n=n+2 340 : next i 350 : if pg=0 and pu=0 then 370 360 : print "{rvon}DATA-Fehler{rvof}!":stop 370 : print "in Ordnung 380 : next j 390 : 400 print "{clr}Alle Pruefsummen stimmen, durch 410 print "{down}Wahl der Geraetenummer (1 oder 8) 420 print "{down}koennen Sie den $c-Block direkt als 430 print "{down}Maschinen-PRG absolut speichern. 440 print "{down}Keine Eingabe: Ende. 450 input "{down}{down}Geraetenummer: ";gn 460 if gn<>1 and gn<>8 then 480 470 sys 53138 "hilfsrout. exe",gn 480 print "{down}Mit 'sys 49152' bekommen Sie ein Menue. 1000 data c0,12017,12700:rem $c000-c0ff 1010 : 1020 data 76, 57,192, 76, 71,194, 76, 14 1030 data195, 76,210,195, 76, 96,196, 76 1040 data232,196, 76, 97,197, 76,101,197 1050 data 76,148,197, 76,192,199, 76, 66 1060 data201, 76, 48,202, 76, 88,194, 76 1070 data 57,202, 76, 22,203, 76,109,203 1080 data 76, 17,204, 76, 90,207, 76, 26 1090 data207, 32, 14,194,160, 0,169, 94 1100 data162,192,133,251,134,252,177,251 1110 data208, 10,169, 14, 32, 22,231,169 1120 data 8, 76, 22,231, 32,210,255,200 1130 data208,236,230,252,208,232, 83, 89 1140 data 83, 52, 57, 49, 53, 53, 58, 32 1150 data211, 80, 65, 67, 69, 45,203, 73 1160 data 76, 76, 69, 82, 13, 83, 89, 83 1170 data 52, 57, 49, 53, 56, 58, 32,211 1180 data 80, 65, 67, 69, 45,197, 88, 80 1190 data 65, 78, 68, 69, 82, 13, 83, 89 1200 data 83, 52, 57, 49, 54, 49, 58, 32 1210 data210,197,205, 45,203, 73, 76, 76 1220 data 69, 82, 13, 83, 89, 83, 52, 57 1230 data 49, 54, 52, 58, 32,218, 69, 73 1240 data 76, 69, 78, 32, 76, 79, 69, 83 1250 data 67, 72, 69, 78, 13, 83, 89, 83 1260 data 52, 57, 49, 54, 55, 58, 32,212 1270 data 69, 88, 84, 32, 83, 85, 67, 72 1280 data 69, 78, 13, 83, 89, 83, 52, 57 1290 data 49, 55, 48, 58, 32,195, 79, 76 1300 data 79, 78, 45,205, 65, 75, 69, 82 1310 data 13, 83, 89, 83, 52, 57, 49, 55 1320 data 51, 58, 32,211, 80, 65, 67, 69 1330 data 45,205, 65, 75, 69, 82, 13, 83 1340 : 1350 : 1360 data c1,9851,9900:rem $c100-c1ff 1370 : 1380 data 89, 83, 52, 57, 49, 55, 57, 58 1390 data 32, 80, 65, 67, 75, 65, 71, 69 1400 data 13, 83, 89, 83, 52, 57, 49, 56 1410 data 50, 58, 32,195,208,213, 45,210 1420 data 69, 71, 73, 83, 84, 69, 82, 32 1430 data 69, 73, 78, 13, 83, 89, 83, 52 1440 data 57, 49, 56, 53, 58, 32,195,208 1450 data213, 45,210, 69, 71, 73, 83, 84 1460 data 69, 82, 32, 65, 85, 83, 13, 83 1470 data 89, 83, 52, 57, 49, 56, 56, 58 1480 data 32,194,193,211,201,195, 45,197 1490 data 78, 68, 69, 32, 83, 69, 84, 90 1500 data 69, 78, 13, 83, 89, 83, 52, 57 1510 data 49, 57, 49, 58, 32,214, 65, 82 1520 data 73, 65, 66, 76, 69, 78, 32, 68 1530 data 85, 77, 80, 69, 78, 13, 83, 89 1540 data 83, 52, 57, 49, 57, 52, 58, 32 1550 data210,207,205, 32, 61, 62, 32,210 1560 data193,205, 13, 83, 89, 83, 52, 57 1570 data 49, 57, 55, 58, 32,218, 69, 73 1580 data 67, 72, 69, 78, 83, 65, 84, 90 1590 data 32, 78, 65, 67, 72, 32, 36, 55 1600 data 48, 48, 48, 13, 83, 89, 83, 52 1610 data 57, 50, 48, 48, 58, 32,218, 69 1620 data 73, 67, 72, 69, 78, 83, 65, 84 1630 data 90, 32, 65, 69, 78, 68, 69, 82 1640 data 78, 13, 83, 89, 83, 52, 57, 50 1650 data 48, 51, 58, 32,218, 69, 73, 67 1660 data 72, 69, 78, 83, 65, 84, 90, 32 1670 data 83, 80, 69, 73, 67, 72, 69, 82 1680 data 78, 13, 83, 89, 83, 52, 57, 50 1690 data 48, 54, 58, 32,218, 69, 73, 67 1700 : 1710 : 1720 data c2,17103,16952:rem $c200-c2ff 1730 : 1740 data 72, 69, 78, 83, 65, 84, 90, 44 1750 data 32, 65, 76, 84, 13, 0,169, 13 1760 data 76,210,255, 32, 14,194,141, 0 1770 data 4, 56,165, 45,229, 43,170,165 1780 data 46,229, 44, 32,205,189,162, 0 1790 data189, 52,194,208, 1, 96, 32,210 1800 data255,232,208,244, 32,194, 89, 84 1810 data 69, 83, 32,208,210,199, 45,204 1820 data 65, 69, 78, 71, 69, 13, 0, 32 1830 data 19,194,166, 43,165, 44,134,251 1840 data133,252,160, 1,177,251,208, 41 1850 data 32, 51,165,166, 43,165, 44,134 1860 data 45,133, 46,160, 0,177, 45,170 1870 data200,177, 45,208,242,165, 45, 24 1880 data105, 2,133, 45,144, 2,230, 46 1890 data 32, 96,166, 32, 19,194, 76,123 1900 data227,160, 3,200,177,251,240, 90 1910 data201, 34,208, 9,200,177,251,240 1920 data 81,201, 34,208,247,201, 32,208 1930 data234,166,251,165,252,134,141,133 1940 data142, 24,152,101,251,133,251,144 1950 data 2,230,252,160, 0,200,177,251 1960 data240, 4,201, 32,240,247, 24,152 1970 data101,251,133,253,165,252,105, 0 1980 data133,254,160, 0,177,253,145,251 1990 data200,208,249,230,252,230,254,165 2000 data 46,197,254,176,239,238, 0,216 2010 data 32, 51,165,166,141,165,142, 76 2020 data 78,194,160, 0,177,251,170,200 2030 data177,251, 76, 78,194,170,192, 5 2040 data176, 3, 76, 36,195,136,169, 32 2050 data209,251,240, 4,200, 76,117,195 2060 : 2070 : 2080 data c3,20694,18471:rem $c300-c3ff 2090 : 2100 data200,138, 76, 88,195,169,199, 72 2110 data169, 60, 72, 76,115, 0, 32, 19 2120 data194,166, 43,165, 44,134,251,133 2130 data252,160, 1,177,251,208, 3, 76 2140 data 88,194,160, 3,200,177,251,208 2150 data 3, 76,199,195,201, 34,208, 9 2160 data200,177,251,240,244,201, 34,208 2170 data247,170, 16,232,201,163,240,228 2180 data201,166,240,224,201,164,240,165 2190 data201,167,240,161,201,169,240,157 2200 data201,175,240,153,201,176,240,149 2210 data201,180,176, 12,201,170,144, 8 2220 data201,175,240, 4,201,176,208,188 2230 data200,177,251,240, 90,201, 58,240 2240 data179,201, 32,240,175,166,251,165 2250 data252,134,141,133,142, 24,136,152 2260 data101,251,133,251,144, 2,230,252 2270 data 24,166, 56,202,202,134,254,134 2280 data 37,165,251,133, 36,105, 1,133 2290 data253,144, 2,230,254,160,255,177 2300 data 36,145,253,136,208,249,177, 36 2310 data145,253,198, 37,198,254,165, 37 2320 data197,252,176,233,160, 1,169, 32 2330 data145,251,238, 0,216, 32, 51,165 2340 data166,141,165,142, 76, 21,195,160 2350 data 0,177,251,170,200,177,251, 76 2360 data 21,195, 32, 19,194, 32, 51,165 2370 data166, 43,165, 44,134,251,133,252 2380 data160, 1,177,251,208, 3, 76, 88 2390 data194,160, 3,200,177,251,240, 54 2400 data201, 34,208, 9,200,177,251,240 2410 data 45,201, 34,208,247,201,143,208 2420 : 2430 : 2440 data c4,20508,20440:rem $c400-c4ff 2450 : 2460 data234,192, 5,176, 44,160, 0,177 2470 data251,133,253,200,177,251,133,254 2480 data160, 0,177,253,145,251,200,208 2490 data249,230,252,230,254,165, 46,197 2500 data254,176,239, 76,213,195,160, 0 2510 data177,251,170,200,177,251, 76,220 2520 data195,132,141,160, 0,177,251,133 2530 data253,200,177,251,133,254,164,141 2540 data192, 5,144,204,136,177,251,201 2550 data 58,240,245,201, 32,240,241,200 2560 data169, 0,145,251, 56,152,101,251 2570 data133,251,144,180,230,252,176,176 2580 data 32,223,196,132,253,133,254, 32 2590 data223,196,132,141,133,142, 32, 19 2600 data194,166, 43,165, 44,134,251,133 2610 data252,160, 0,177,251,170,200,177 2620 data251,240, 89,208, 6,160, 1,177 2630 data251,208,234,160, 3,177,251,197 2640 data254,144,242,208, 7,136,177,251 2650 data197,253,144,233,166,251,165,252 2660 data134,139,133,140,160, 0,177,139 2670 data170,200,177,139,208, 8,240, 25 2680 data160, 1,177,139,208,234,160, 3 2690 data177,139,197,142,144,242,208, 9 2700 data136,177,139,197,141,144,233,240 2710 data231,160, 0,177,139,145,251,200 2720 data208,249,230,252,230,140,165, 46 2730 data197,140,176,239, 76, 88,194, 32 2740 data253,174, 32,138,173, 76,247,183 2750 data 32,253,174,162, 0, 32,115, 0 2760 data240, 10, 72,104,157, 16, 2,232 2770 data224, 48,144,241,169, 0,157, 16 2780 : 2790 : 2800 data c5,17505,17163:rem $c500-c5ff 2810 : 2820 data 2,166, 43,165, 44,134,251,133 2830 data252,160, 1,177,251,208, 13,104 2840 data 72, 96,160, 0,177,251,170,200 2850 data177,251,208,233,160, 3,200,177 2860 data251,240,239,205, 16, 2,208,246 2870 data 24,152,132,141,101,251,133,253 2880 data165,252,105, 0,133,254,160, 0 2890 data200,185, 16, 2,240, 17,201, 63 2900 data240,246,177,253, 72,104,217, 16 2910 data 2,240,237,164,141,208,207,160 2920 data 2,177,251,170,200,177,251, 32 2930 data205,189,169, 13, 32,210,255,208 2940 data177,169, 32,208, 2,169, 58,133 2950 data253,166, 43,165, 44,134,251,133 2960 data252,160, 1,177,251,208, 3, 76 2970 data 88,194,160, 4,177,251,197,253 2980 data208, 4, 73, 26,145,251,160, 0 2990 data177,251,170,200,177,251, 76,109 3000 data197, 76, 88,194, 32, 19,194, 32 3010 data 5,195,134, 65,133, 66, 32,158 3020 data199, 32,147,199,134, 59,133, 60 3030 data228, 65,229, 66,176, 3, 76, 72 3040 data178, 32,147,199,134, 63,133, 64 3050 data160, 1,177, 67,240,211,169,127 3060 data133, 21,133, 20, 32, 5,195, 32 3070 data142,166,176, 47,160, 0,177,139 3080 data170,200,177,251,240,187, 72,200 3090 data165, 59,145, 34,200,165, 60,177 3100 data 36,134, 67,104,133, 68,165, 59 3110 data 24,101, 63,133, 59,165, 60,101 3120 data 64,133, 60,144,215,230,122,208 3130 data 2,230,123,160, 0,177,122,208 3140 : 3150 : 3160 data c6,13653,16163:rem $c600-c6ff 3170 : 3180 data 19,160, 2,177,122,240,197,165 3190 data122, 24,105, 5,133,122,144,235 3200 data230,123,176,231,201, 34,208, 11 3210 data 32,115, 0,201, 0,240,226,201 3220 data 34,208,245,201,137,240, 23,201 3230 data138,240, 19,201,141,240, 15,201 3240 data167,240, 11,201,203,208,190, 32 3250 data115, 0,201,164,208,191,238, 0 3260 data216, 32,115, 0,176,183,132, 20 3270 data132, 21,144, 49,170,165, 21,133 3280 data 34,201, 25,176,168,165, 20, 10 3290 data 69, 34, 10,165, 34,101, 20,133 3300 data 20,165, 34,101, 21,133, 21, 6 3310 data 20,133, 21,138,101, 20,133, 20 3320 data144, 2,230, 21,200,177,122,201 3330 data 32,240,249,201, 58,165, 20,197 3340 data 65,165, 21,229, 66,144, 72,132 3350 data206, 32, 60,199, 56,162,144, 32 3360 data 73,188, 32,221,189,160,255,200 3370 data185, 0, 1,208,250,165,122,166 3380 data123,133, 95,134, 96, 56,152,229 3390 data206, 48, 38,240,106,133,206,165 3400 data 45,133, 90, 24,101,206,133, 88 3410 data165, 46,133, 91,105, 0,133, 89 3420 data197, 56,144, 6,165, 88,197, 55 3430 data176,109, 32,191,163,240, 72,144 3440 data 90, 73,255,168,200,162, 0,165 3450 data 95,197, 45,165, 96,229, 46,176 3460 data 54,147, 17, 17, 17, 17, 33, 33 3470 data203, 80, 73, 66, 79, 79, 70, 84 3480 data 33,206, 80, 68, 76, 70, 79, 73 3490 data 66, 86, 81, 85, 13, 17, 68, 33 3500 : 3510 : 3520 data c7,15307,15592:rem $c700-c7ff 3530 : 3540 data 50, 58, 57, 53, 33,204, 80, 70 3550 data 77, 79, 17, 29, 29, 13, 0,230 3560 data 95,208,196,230, 96,208,192,160 3570 data 0,185, 0, 1,240, 5,145,122 3580 data200,208,246, 32,158,199, 32,115 3590 data 0,144,251,160, 0,201, 44,208 3600 data 2,169,137,170, 76,255,197,162 3610 data 16, 76, 58,164, 2,160, 0,185 3620 data225,198,240, 24, 72, 41,127,201 3630 data 32,144, 6,104,233, 1, 76, 82 3640 data199,104, 32,210,255,200,208,231 3650 data133, 34,134, 35,160, 2,132,211 3660 data 32,123,164,177, 34,197, 20,200 3670 data177, 34,229, 21,176, 81,160, 0 3680 data177, 34,170,200,177, 34,134, 34 3690 data133, 35,177, 34,240, 65,165, 99 3700 data101, 63,133, 99,165, 98,101, 64 3710 data133, 98,176, 4,201,252,144,204 3720 data 76, 72,178, 32,253,174, 32,107 3730 data169,166, 20,165, 21, 96, 32, 51 3740 data165, 24,165, 34,105, 2,133, 45 3750 data165, 35,105, 0,133, 46,165, 65 3760 data166, 66,133, 20,134, 21, 32, 19 3770 data166,165, 95,133, 67,134, 68, 96 3780 data 32, 19,194,166, 43,165, 44,134 3790 data251,133,252,238, 0,216,138, 24 3800 data105, 3,133,247,165,252,105, 0 3810 data133,248,160, 1,177,251,208, 3 3820 data 76, 88,194,160, 0,132, 2,230 3830 data247,208, 2,230,248,177,247,240 3840 data 55,201, 34,208, 29,230, 2,230 3850 data247,208, 2,230,248,177,247,240 3860 : 3870 : 3880 data c8,17613,21819:rem $c800-c8ff 3890 : 3900 data 39,201, 34,240,224,208,240,160 3910 data 0,177,251,170,200,177,251, 76 3920 data199,199,201,137,240,241,201,138 3930 data240,237,201,142,240,233,201,143 3940 data240,229,201,167,208,191,240,223 3950 data160, 0,177,251,133,253,200,177 3960 data251,133,254,200,177,253,133,249 3970 data200,177,253,133,250, 56,160, 0 3980 data177,253,229,251,200,177,253,229 3990 data252,208,188,166, 43,165, 44,134 4000 data247,133,248,160, 1,177,247,208 4010 data 3, 76,183,200, 24,165,247,105 4020 data 3,133,122,165,248,105, 0,133 4030 data123,160, 0,230,122,208, 2,230 4040 data123,177,122,240, 55,201, 34,208 4050 data 14,230,122,208, 2,230,123,177 4060 data122,240, 41,201, 34,208,242,201 4070 data137,240, 12,201,138,240, 8,201 4080 data141,240, 4,201,167,208,212, 32 4090 data115, 0, 32,107,169,165, 21,197 4100 data250,208,198,165, 20,197,249,208 4110 data192, 76, 7,200,160, 0,177,247 4120 data170,200,177,247, 76, 79,200,238 4130 data 0, 4,160, 0, 24,165,253,105 4140 data255,133,139,165,254,105,255,133 4150 data140,165, 2,240, 4,169, 34, 16 4160 data 2,169, 58,145,139,200,201, 34 4170 data240,247, 24,165,253,105, 4,133 4180 data 36,165,254,105, 0,133, 37,230 4190 data139,208, 2,230,140,164, 2,240 4200 data 4,198, 2,240,242,177, 36,145 4210 data139,200,208,249,230,140,230, 37 4220 : 4230 : 4240 data c9,13954,13099:rem $c900-c9ff 4250 : 4260 data165, 46,197, 37,176,239,165,251 4270 data105, 4,133,139,165,252,105, 0 4280 data133,140,177,139,240, 10,230,139 4290 data208,248,230,140,208,244,240,242 4300 data160, 0, 24,165,139,105, 1,145 4310 data251,200,165,140,105, 0,145,251 4320 data200,177,139,208, 3, 76, 88,194 4330 data 32, 51,165,166,251,165,252, 76 4340 data199,199,173, 20, 3,172, 21, 3 4350 data141, 13,202,140, 14,202,169, 91 4360 data160,201,120,141, 20, 3,140, 21 4370 data 3, 88, 96,160, 0,185,123,201 4380 data240, 66, 41, 63,153, 0, 4,169 4390 data 99,153, 80, 4,173,134, 2,153 4400 data 0,216,153, 40,216,153, 80,216 4410 data200,208,226, 73, 82, 81, 32, 32 4420 data 66, 82, 75, 32, 32, 78, 77, 73 4430 data 32, 32, 32, 80, 67, 32, 32, 83 4440 data 86, 32, 66, 68, 73, 90, 67, 32 4450 data 65, 67, 32, 88, 82, 32, 89, 82 4460 data 32, 83, 80, 0,173, 14,202, 32 4470 data 22,202,173, 13,202, 32, 22,202 4480 data173, 23, 3, 32, 15,202,173, 22 4490 data 3, 32, 22,202,173, 25, 3, 32 4500 data 15,202,173, 24, 3, 32, 22,202 4510 data189, 6, 1, 32, 15,202,189, 5 4520 data 1, 32, 22,202,169, 32, 32, 43 4530 data202,169, 8,133,164,189, 4, 1 4540 data133,165, 6,165,144, 4,169, 42 4550 data208, 2,169, 46, 32, 43,202,198 4560 data164,208,239,189, 3, 1, 32, 15 4570 data202,189, 2, 1, 32, 15,202,189 4580 : 4590 : 4600 data ca,16040,17390:rem $ca00-caff 4610 : 4620 data 1, 1, 32, 15,202,138, 24,105 4630 data 6, 32, 15,202, 76, 49,234, 72 4640 data169, 32, 32, 43,202,104, 72, 74 4650 data 74, 74, 74, 32, 31,202,104, 41 4660 data 15,201, 10,144, 4,233, 9,208 4670 data 2, 9, 48,153, 0, 4,200, 96 4680 data173, 13,202,172, 14,202, 76, 82 4690 data201,166, 45,165, 46,134,251,133 4700 data252, 56,165,251,229, 47,165,252 4710 data229, 48,176, 85,160, 0,132,211 4720 data177,251,133,253, 41,127,170,200 4730 data177,251,133,254, 41,127,168, 32 4740 data236,202,165,253, 5,254, 48, 58 4750 data162, 0, 32,246,202, 24,165,251 4760 data105, 2,133, 34,165,252,105, 0 4770 data133, 35, 32,166,187, 32,221,189 4780 data 32, 30,171,169, 13, 32,210,255 4790 data173,141, 2,240, 8,201, 1,240 4800 data247,201, 2,240, 12, 24,165,251 4810 data105, 7,170,165,252,105, 0,144 4820 data156, 96,165,253, 48, 42,162, 36 4830 data160, 61, 32,236,202,169, 34, 32 4840 data210,255,160, 4,177,251,133,254 4850 data136,177,251,133,253,136,177,251 4860 data133,141,160, 0,196,141,176,187 4870 data177,253, 32,210,255,200,208,244 4880 data165,254, 16,180,162, 37, 32,246 4890 data202, 24,165,251,105, 2,133,100 4900 data165,252,105, 0,133,101, 32, 97 4910 data175, 76,125,202,138,240, 3, 32 4920 data210,255,152, 76,210,255,160, 61 4930 data208,242,194,193,211,201,195, 32 4940 : 4950 : 4960 data cb,16618,16505:rem $cb00-cbff 4970 : 4980 data 43, 32,203,197,210,206,193,204 4990 data 32, 74, 69, 84, 90, 84, 32, 73 5000 data 77, 32,210,193,205, 0,160, 0 5010 data169,160,132,251,133,252,169,224 5020 data132,253,133,254,162, 32,177,251 5030 data145,251,177,253,145,253,200,208 5040 data245,230,252,230,254,202,208,238 5050 data185,250,202,240, 6, 32,210,255 5060 data200,208,245, 96,208,210,199, 45 5070 data203, 79, 76, 76, 73, 83, 73, 79 5080 data 78, 44, 32,193, 69, 78, 68, 69 5090 data 82, 85, 78, 71, 32, 78, 73, 67 5100 data 72, 84, 32, 77, 79, 69, 71, 76 5110 data 73, 67, 72, 33, 0,169,108,160 5120 data 0,197, 46,176, 11,185, 68,203 5130 data240,201, 32,210,255,200,208,245 5140 data132, 55,197, 56,176, 2,133, 56 5150 data162, 16,169,208,132,251,133,252 5160 data169,112,132,253,133,254,173, 14 5170 data220, 41,254,141, 14,220,165, 1 5180 data 41,251,133, 1,177,251,145,253 5190 data200,208,249,230,252,230,254,202 5200 data208,242,165, 1, 9, 4,133, 1 5210 data173, 14,220, 9, 1,141, 14,220 5220 data173, 0,221, 41,252, 9, 2,141 5230 data 0,221,169,188,141, 24,208,169 5240 data108,141,136, 2,185,223,203,240 5250 data 53, 32,210,255,200,208,245,147 5260 data 17, 17, 17, 14, 36, 54, 67, 48 5270 data 48, 58,194, 73, 76, 68, 83, 67 5280 data 72, 73, 82, 77, 13, 17, 36, 55 5290 data 48, 48, 48, 58,218, 69, 73, 67 5300 : 5310 : 5320 data cc,12980,12282:rem $cc00-ccff 5330 : 5340 data 72, 69, 78, 71, 69, 78, 69, 82 5350 data 65, 84, 79, 82, 13, 0, 76, 88 5360 data194,169,147, 32,210,255,160, 0 5370 data185, 38,204,208, 3, 76,166,204 5380 data 32,210,255,200,208,242, 19, 17 5390 data 17, 17, 77, 73, 84, 32, 18,195 5400 data213,210,211,207,210,146, 32, 32 5410 data 32,218, 69, 73, 67, 72, 69, 78 5420 data 32, 69, 73, 78, 83, 84, 69, 76 5430 data 76, 69, 78, 44, 13, 77, 73, 84 5440 data 32, 18,210,197,212,213,210,206 5450 data146, 32, 32, 32, 87, 65, 69, 72 5460 data 76, 69, 78, 46, 13, 29, 29, 29 5470 data 29, 18, 70, 55,146, 58, 32, 32 5480 data 32, 32, 32, 32,218, 69, 73, 67 5490 data 72, 69, 78, 83, 65, 84, 90, 13 5500 data 29, 29, 29, 29, 18,210,213,206 5510 data 47,211,212,207,208,146, 58,193 5520 data 66, 66, 82, 85, 67, 72, 46, 17 5530 data 13, 29, 29, 29, 29, 29, 29, 29 5540 data 29, 29, 29, 29, 29, 0,168,132 5550 data141,152,201, 32,176, 4,169, 32 5560 data208, 7,170, 16, 4,201,160,144 5570 data245, 32,210,255,230,141,165,141 5580 data 41, 15,208, 9,169, 13, 32,210 5590 data255,169, 11,133,211,200,208,217 5600 data185,219,204,240, 27, 32,210,255 5610 data200,208,245, 19, 17, 17, 17, 17 5620 data 17, 17, 17, 17, 29, 29, 29, 29 5630 data 29, 29, 29, 29, 29, 29, 29, 0 5640 data133,251,169, 0,133,252, 32, 65 5650 data207,201, 29,208, 37,230,252,230 5660 : 5670 : 5680 data cd,16915,17377:rem $cd00-cdff 5690 : 5700 data211,166,252,224, 16,144,239,198 5710 data211,198,252,164,251,192, 15,176 5720 data229,230,251,169, 13, 32,210,255 5730 data169, 0,133,252, 9, 11,133,211 5740 data208,208,201, 19,208, 4,160, 0 5750 data240,166,201,157,208, 10,166,252 5760 data240,196,198,252,198,211,208,190 5770 data201, 17,208, 13,164,251,192, 15 5780 data176,180, 32,210,255,230,251,208 5790 data173,201,145,208, 11,164,251,240 5800 data165, 32,210,255,198,251,208,158 5810 data201, 3,208, 3, 76, 88,194,201 5820 data 13,240, 15,201,136,208, 8,173 5830 data 24,208, 73, 2,141, 24,208, 76 5840 data246,204,165,252,164,251,240,235 5850 data 24,105, 16,136,208,250, 72, 41 5860 data128,133,253,104, 41,127,201, 32 5870 data144,217,201, 64,144, 2, 41, 63 5880 data164,253,240, 2, 9, 64,133,251 5890 data173, 24,208, 41, 7, 74, 9, 14 5900 data133,252, 6,251, 38,252, 6,251 5910 data 38,252, 6,251, 38,252,169, 7 5920 data133,141,160, 0,185,194,205,208 5930 data 3, 76, 56,206, 32,210,255,200 5940 data208,242, 19, 17, 17, 17, 17, 17 5950 data 17, 17, 17, 17, 17, 17, 17, 29 5960 data 29, 29, 29, 29, 29, 29, 29, 29 5970 data 29, 29, 29, 29, 29,176,192,192 5980 data192,192,192,192,192,192,174, 17 5990 data157,221, 17,157,221, 17,157,221 6000 data 17,157,221, 17,157,221, 17,157 6010 data221, 17,157,221, 17,157,221, 17 6020 : 6030 : 6040 data ce,19121,18216:rem $ce00-ceff 6050 : 6060 data157,221,157,157,157,157,157,157 6070 data157,157,157,157,173,192,192,192 6080 data192,192,192,192,192,189,157,157 6090 data157,157,157,157,157,157,157,145 6100 data157,221,145,157,221,145,157,221 6110 data145,157,221,145,157,221,145,157 6120 data221,145,157,221,145,157,221, 0 6130 data165,141, 73, 7,168,177,251,133 6140 data142,169, 15,133,211,160, 8,169 6150 data 32, 6,142,144, 2, 9, 10, 32 6160 data210,255,136,208,242,169, 13, 32 6170 data210,255,198,141, 16,218,185,105 6180 data206,240, 36, 32,210,255,200,208 6190 data245, 19, 17, 17, 17, 17, 17, 17 6200 data 17, 17, 17, 17, 17, 17, 17, 29 6210 data 29, 29, 29, 29, 29, 29, 29, 29 6220 data 29, 29, 29, 29, 29, 29, 0,133 6230 data248,133,247, 32, 65,207,201, 29 6240 data208, 13,166,247,224, 7,176,243 6250 data230,247, 32,210,255,208,236,201 6260 data157,208, 11,166,247,240,228,198 6270 data247, 32,210,255,208,221,201, 17 6280 data208, 13,164,248,192, 7,176,211 6290 data 32,210,255,230,248,208,204,201 6300 data145,208, 11,164,248,240,196,198 6310 data248, 32,210,255,208,189,201, 32 6320 data240, 11,201, 42,240, 43,201, 13 6330 data208,177, 76, 22,204,166,247,224 6340 data 8,176,243, 32,210,255,169,128 6350 data166,247,240, 2, 74,202,208,252 6360 data 73,255,133,253,164,248,177,251 6370 data 37,253,145,251,230,247, 76,139 6380 : 6390 : 6400 data cf,11190,11261:rem $cf00-cfa6 6410 : 6420 data206,166,247,224, 8,176,214, 32 6430 data210,255,169,128,166,247,240, 2 6440 data 74,202,208,252,164,248, 17,251 6450 data208,224,169, 4,160,151,141,136 6460 data 2,140, 0,221, 32, 91,255,169 6470 data 5, 32,210,255,169, 8, 32,210 6480 data255,169, 14, 32,210,255,169, 11 6490 data141, 32,208,141, 33,208, 76, 88 6500 data194, 70,204, 70,207, 32,228,255 6510 data240,247, 72,230,204,164,211,177 6520 data209, 41,127,145,209,104, 96, 32 6530 data253,174, 32,212,225,162, 1,160 6540 data128,134,185,202,134,141,169,112 6550 data133,142,169,141, 76,216,255, 32 6560 data 32,202, 79, 72, 65, 78, 78, 69 6570 data 83, 32,205, 79, 67, 75, 69, 78 6580 data 72, 65, 85, 80, 84, 32, 32,203 6590 data 79, 69, 76, 78, 67, 32, 49, 57 6600 data 56, 52, 32,212,225,162, 1,134 6610 data185,202,134,142,160,208,169,192 6620 data133,143,169,142, 76,216,255 6630 : 6640 rem " Die folgenden Kommata sind 6650 rem " 'Nullen', welche die Poke- 6660 rem " Schleife auf 256 Bytes er- 6670 rem " gaenzen. 6680 : 6690 data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6700 data,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 6710 data,,,,,,,,,,,,,,,,,,,,,,,,