Disk-Basic 64
Disk-Basic 64 ist eine besonders leistungsfähige diskettenorientierte Basic-Erweiterung, die mit fast 50 neuen Befehlen das Arbeiten mit dem Diskettenlaufwerk enorm erleichtert.
Wer kennt sie nicht, die unzähligen OPENs und PRINTs, die notwendig sind, wenn man Befehle an das 1541-Laufwerk senden will. Auch beim Laden und Speichern ist das normale Commodore-Basic nicht gerade komfortabel. Abhilfe schafft die Basic-Erweiterung »Disk-Basic 64«. Sie enthält unteranderem fast alle diskettenorientierten Befehle des Basic 4.0 von Commodore, das der C 128 ebenfalls kennt. Viele Funktionen die sich bisher nur mit Spezialprogrammen oder einem Diskmonitor realisieren ließen, werden nun auf einen Basic-Befehl hin ausgeführt und sind somit auch programmierbar.
Zur Eingabe von »Disk-Basic 64« verwenden Sie bitte den MSE. Nach dem Speichern kann die Basic-Erweiterung dann jederzeit mit »LOAD " DISK-BASIC ",8« geladen und mit »RUN« gestartet werden. Danach steht »Disk-Basic 64« im Speicherbereich von $9200 bis $9DFF. Dieser Bereich wird für Basic automatisch gesperrt, so daß nur noch 35327 Bytes, also 3584 Bytes weniger, für Basic-Programme zurVerfügung stehen. Der $C-Bereich bleibt für eigene Maschinenprogramme oder einen Monitor frei.
Doch jetzt zur Beschreibung der neuen Befehle:
DLOAD"name"
Das Programm »name« wird von der Diskette an den Basic-Anfang geladen. Entspricht»LOAD"name",8«.
DSAVE"name"
Das momentan im Speicher befindliche Basic-Programm wird auf der Diskette gespeichert. Entspricht »SAVE" name ",8«.
DVERFIY"name"
Das momentan im Speicher befindliche Basic-Programm wird mit dem auf Diskette gespeicherten Programm »name« verglichen. Entspricht »VERIFY "name ",8«.
REPLACE"name"
Ersetzt das Programm »name« auf der Diskette durch das im Speicher befindliche. Entspricht dem Basic-Befehl »SAVE" @:name",8«
SCRATCH"name"
Das File »name« wird gelöscht. Im Namen dürfen auch die Jokerzeichen »?« und »*« verwendet werden. Es werden dann sämtliche Files, die dem Namen entsprechen, gelöscht. Entspricht dem Floppy-Befehl »S:«.
RENAME "altname" TO "neuname"
Das File mit dem Namen »altname« wird in »neuname« umbenannt. Entspricht dem Floppy-Befehl »R:«.
COPY"altfile"TO"neufile"
Das File »altfile« wird auf dieselbe Diskette als »neufile« kopiert. So können Sicherheitskopien von Files hergestellt werden. Mit diesem Befehl kann nicht von einer Diskette auf eine andere kopiert werden. Entspricht dem Floppy-Befehl »C:«.
HEADER"name,id"
Die im Laufwerk befindliche Diskette wird mit dem Namen »name« und der ID »id« formatiert. Wird »,id« weggelassen, so wird die Diskette nur gelöscht. Entspricht dem Floppy-Befehl »N:«
COLLECT
Die Diskette wird aufgeräumt, das heißt, daß alle Blöcke, die nicht von Files belegt sind, freigegeben werden und sämtliche nicht ordnungsgemäß geschlossenen Files gelöscht werden. Entspricht dem Floppy-Befehl »V«.
INIT
Die Diskette wird initialisiert. Entspricht dem Floppy-Befehl »I«.
CHECK
Der Fehlerkanal des Laufwerks wird auf dem Bildschirm ausgegeben (siehe auch DS$).
CATALOG
Das vollständige Directory wird auf dem Bildschirm ausgegeben. Dabei verlangsamt die CTRL-Taste den Ausdruck, die Commodore-Taste hält die Ausgabe an und die Stop-Taste beendet den Befehl.
DIR"$:auswahl"
Die dem Ausdruck entsprechenden Teile des Directory werden auf dem Bildschirm ausgegeben. »DIR"$:*=P"« druckt beispielsweise nur die Programme, »DIR"$:?=R"« alle einbuchstabigen, relativen Files. Ansonsten gelten die Kontrollmöglichkeiten von CATALOG.
BSAVE"name",start,ende+l
Mit diesem Befehl kann der Speicherbereich von start bis ende auf Diskette gespeichert werden. Dies können Maschinenprogramme, Grafikbilder oder sonstiges sein.
BLOAD"name" \<,adr >
Das File »name« wird an die angegebene Speicheradresse geladen. Wird keine Adresse angegeben, so wird das File an die Adresse geladen, an der es beim Speichern stand. Da keine Basic-Vektoren verändert werden, tritt kein »OUT OF MEMORY ERROR« mehr auf, wenn in den $C-Bereich geladen wurde. Ebenso wird bei einem BLOAD in einem Basic-Programm das Programm nicht neu gestartet, wie bei LOAD, sondern direkt hinter dem BLOAD fortgesetzt.
CHAIN"name" \<,zn >
Das Basic-Programm »name« wird geladen und bei der Zeilennummer zn gestartet. Fehlt die Zeilennummer, so wird bei der ersten Zeile gestartet. Wird eine nicht existierende Zeilennummer angegeben, so gibt der Computer einen »UNDEF’D STATEMENT ERROR«aus. Achtung! Bei CHAIN gehen die Inhalte der Variablen wie bei LOAD verloren! Dies muß man beachten, wenn man CHAIN zum Nachladen von Programmteilen in Basic-Programmen einsetzen will.
PASS"kommando"
Mit diesem Befehl lassen sich Kommandos an das Laufwerk senden, die nicht direkt von Disk-Basic unterstützt werden, so zum Beispiel die »U«- oder »B«-Kommandos.
DPOKE adresse,wert
Dieser Befehl entspricht dem normalen POKE mit der Ausnahme, daß der Wert in der Adresse des Laufwerk-RAMs gespeichert wird. Er ist nur im Adressenbereich von 0 bis 2047 sinnvoll.
DPEEK(adresse)
Diese Funktion entspricht dem PEEK. Der Inhalt einer Speicherstelle des Laufwerkes kann mit »?DPEEK(adresse)« ausgedruckt oder mit »variable = DPEEK(adresse)« in eine Variable übergeben werden.
DSYS(adresse)
Mit diesem Befehl können Maschinenprogramme im Laufwerk gestartet werden. Entspricht dem Basic-Befehl SYS. Ein Beispiel: DSYS (60064) löst in dem angeschlossenen Floppy-Laufwerk einen Reset aus.
NAME"nome"
Der 16 Zeichen lange Name einer Diskette wird umgeändert Hat der Stringname mehr als 16 Zeichen, wird ein »STRING TOO LONG ERROR« ausgegeben.
ID"id"
Mit diesem Befehl kann die ld sowie das Formatkennzeichen in der ersten Zeile des Directory geändert werden. Der String »id« kann maximal 5 Buchstaben haben und überschreibt dann die ID, das Fbrmatkennzeichen (normalerweise »2A«) und das Leerzeichen zwischen den beiden. Achtung! Diese Änderungen beziehen sich nur auf das Directory. Die tatsächliche ID und Fbrmatkennzeichen werden nicht verändert.
PROTECT < "name" >
Mit dem Befehl PROTECT wird eine ganze Diskette schreibgeschützt, indem das echte Fbrmatkennzeichen von »A« auf »X« geändert wird. Es sind dann keinerlei Schreibzugriffe mehr auf diese Diskette möglich.
Wird beim PROTECT-Befehl ein Name angegeben, so wird nur das File mit diesem Namen gegen Löschen und Überschreiben geschützt. Der Schreibschutz ist am Kleinerzeichen hinter dem Filetyp im Directory erkennbar. Es dürfen keine Joker im Namen angegeben werden.
REPROTECT\<"name">
Mit diesem Befehl lassen sich der Disketten- und File-Schreibschutz wieder rückgängig machen. Siehe PROTECT.
CHANGE dev.alt TO dev.neu
Hiermit lassen sich softwaremäßig die Gerätenummern des 1541-Laufwerks verändern. So ändert »CHANGE 8 TO 9« die Gerätenummer des gerade eingeschalteten Laufwerkes auf 9. So lassen sich mehrere Laufwerke gleichzeitig betreiben.
DEVICE dev
Mit diesem Befehl läßt sich einstellen, auf welche Gerätenummer sich die Befehle des Disk-Basics beziehen. Nach »DEVICE 9« werden sämtliche Befehle am Laufwerk unter der Gerätenummer 9 ausgeführt. Dieser Wert wird in der Speicherstelle 2 gespeichert.
RESET d
Das Laufwerk mit der Gerätenummer d wird in den Einschaltzustand versetzt. Aus Sicherheitsgründen muß immer die Gerätenummer angegeben werden. Bitte warten Sie einige Sekunden bevor Sie dieses Laufwerk wieder ansprechen.
MERGE"name"
Das Programm »name« wird von der Diskette geladen und an das im Speicher befindliche angehängt. Achten Sie darauf, daß das zweite Programm höhere Zeilennummern als das erste hat.
CONCAT "altfilel" & "aMile2" TO "neufile"
Mit diesem Befehl können zwei sequentielle Files zu einem verkettet werden. Dies funktioniert nicht mit Programmen!
DS$ und DS
In diesen beiden Variablen ist stets die aktuelle Fehlermeldung (DS$) beziehungsweise die aktuelle Fehlernummer (DS) des Laufwerkes. Sie dürfen deswegen nicht in Zuweisungen wie »DS$= "HALLO"« verwendet werden.
DOPEN# lfn,"name",p1,p2
Mit DOPEN lassen sich alle Arten von Files auf dem Laufwerk eröffnen. Die Filenummer darf von 2 bis 255 gehen. Empfehlenswert sind Nummern von 2 bis 14, da die Sekundäradresse des Files immer gleich der Filenummer logisch »UND«-verknüpft mit 15 ist, also immer im Bereich von 0 bis 15 liegt. Für den Fileparameter p1 sind die Buchstaben »S«, »U«, »P« und »L« erlaubt. Die ersten drei stehen für sequentielle, User- und Programm-Files. Der Parameter p2 ist dann entweder »W« oder »R« für Schreiben oder Lesen.
Lautet der erste Parameter »L« so wird ein relatives File zum Schreib/Lese-Zugriff eröffnet. Die Länge eines Datensatzes (Record) wird direkt an das »L« angehängt. Der zweite Parameter entfällt. Ein Beispiel: »DOPEN 2, "name",L40« eröffnet ein relatives File mit der Record-Länge 40.
DCLOSE\<#lfn>
Dieser Befehl schließt das File mit der Nummer lfn. Wird keine Filenummer angegeben, werden alle geöffneten Files ordnungsgemäß geschlossen.
APPEND#lfn/"name"
Ein sequentielles File wird zum Erweitern (Anhängen von Datensätzen) geöffnet. Die Sekundäradresse errechnet sich wie bei DOPEN.
FETCH#lfn,len,xx$
Mit diesem Befehl werden aus dem File mit der Nummer lfn eine festgelegte Anzahl (len) von Zeichen in eine beliebige Stringvariable (xx$) übertragen. Die Vorteile gegenüber dem INPUT #-Befehl sind: Datensätze sind nicht mehr auf 88 Zeichen beschränkt, sondern dürfen bis zu 255 Zeichen haben. Es werden auch Kommata und Doppelpunkte übernommen. Der Befehl kann auch im Direktmodus eingesetzt werden.
RECORD # lfn,rec < ,pos >
Mit diesem Befehl wird die Bearbeitung von relativen Dateien zum Kinderspiel. Der Zeiger auf die Datei mit der Filenummer lfn wird auf den Datensatz mit der Nummer rec positioniert. Zusätzlich kann noch die Position des Datei-Zeigers innerhalb dieses Datensatzes angegeben werden. Wird dieser Parameter weggelassen, wird immerauf das erste Zeichen positioniert. Dies entspricht der Befehlsfolge: »PRINT#15,"P";CHR$(lfn);CHR$(reclo);CHR$(rechi); CHR$(pos)«.
LIST"name" \<,start-ende >
Der LIST-Befehl wurde erweitert, so daß bei Angabe eines Namens das Listing im ASCII-Code als sequentielles File auf der Diskette abgelegt wird. Sollen nur Teile abgespeichert werden, so kann die normale LIST-Syntax für Bereichsmarkierungen angehängt werden. Basic-Programme können somit in Textverarbeitungsprogramme übernommen werden.
ENTER"name"
Mit ENTER kann ein auf Diskette gelistetes Programm wieder in den Speicher übernommen werden. Die Zeichen, die gerade gelesen werden, werden zusätzlich auf dem Bildschirm ausgegeben. Eine Anwendungsmöglichkeit ist ein »echtes« MERGE, bei dem das zweite Programm nicht einfach angehängt, sondern die beiden entsprechend der Zeilennummern zusammengemischt werden. Achtung! Es dürfen keine doppelten Zeilennummern vorkommen!
BLOCKS
Dies ist eine weitere Basic-Funktion. Mit ihr erhält man die Anzahl der freien Blöcke einer Diskette. Diese Funktion kann wahlweise in PRINT-Befehlen oder Wertzuweisungen verwendet werden.
START("name")
Mit dieser Funktion läßt sich die Startadresse des Programms »name« ermitteln. Auch diese Funktion kann in PRINT-Befehlen und Wertzuweisungen verwendet werden. Ist dieses Programm nicht vorhanden, wird als Startadresse der Wert 51143 ermittelt.
SIZE("name")
Mit dieser Funktion läßt sich die Länge eines Files in Blocks ermitteln. Hier gilt dasselbe wie bei den beiden anderen beschriebenen Funktionen.
RESCUE"name",ft
Mit diesem Befehl kann ein soeben gelöschtes File wieder gerettet werden beziehungsweise der Filetyp eines Files geändert werden. Für den Parameter ft sind die Zahlen 1 bis 4 erlaubt. Sie bedeuten:
0 = DELeted
1 = SEQuential
2 = PRoGram
3 = USeR
4 = RELative
Der Filetyp im Directory wird angepaßt und anschließend ein VALIDATE ausgeführt, um die Blöcke dieses Files wieder zu belegen. Achtung! Wurde zwischen dem Löschen und dem Rettungsversuch auf die Diskette geschrieben (SAVE oder ähnliches), dann läßt sich mit hoher Wahrscheinlichkeit das gelöschte Programm nicht mehr retten!
ENTRY$("name")
Mit dieser Funktion lassen sich die kompletten 30 Bytes eines Directory-Eintrags in einen String ablegen: »xx$= ENTRY$("name")«. Die Verwendung im PRINT-Befehl ist zwar möglich aber sinnlos. Achtung! An den 30 Byte langen Fileeintrag werden drei Bytes angehängt, die Spur, Sektor und Position des gelesenen Eintrages darstellen. Diese drei Bytes dürfen nicht verändert werden, da sonst beim Zurückschreiben mit WRITE das Directory zerstört wird!
WRITE xx$
Mit diesem Befehl kann ein manipulierter Directory-Eintrag zurückgeschrieben werden. Zusammen mit der ENTRY$-Funktion läßt sich beispielsweise ein Directory-Sortierprogramm aufbauen. Siehe ENTRY$.
DESTROY n
Der Track mit der Nummer n wird endgültig zerstört. Beim Zugriff auf diesen Track erhält man nur den 21 READ ERROR. Die Diskette kann nur noch durch komplettes Neuformatieren normalisiert werden. Nach der Ausführung dieses Befehls muß das Laufwerk kurz ausgeschaltet werden.
QUIT
Mit QUIT wird Disk-Basic verlassen, ohne daß das im Speicher befindliche Basic-Programm gelöscht wird. Allerdings gehen die Variablen-Inhalte verloren.
COMMANDS
Auf dieses Kommando hin werden alle zusätzlichen Befehle von Disk-Basic auf dem Bildschirm ausgegeben.
Noch einige kleine Anmerkungen: Anders als bei vielen Basic-Erweiterungen muß zwischen dem THEN-Befehl und einem Disk-Basic-Kommandp kein Doppelpunkt stehen! Bei allen Befehlen wird, ist das durch DEVICE festgelegte Laufwerk nicht angeschlossen, ein »DEVICE NOT PRESENT ERROR« gemeldet. Bei fehlendem Filenamen gibt es einen »MISSING FILENAME ERROR«.
(Alexander Frink/bs)PROGRAMM : DISK BASIC S.32 0801 1642 ----------------------------------- 0801 : 17 08 C1 07 9E 20 32 30 82 0809 : 37 33 20 44 49 53 4B 2D 21 0811 : 42 41 53 49 43 00 00 00 26 0819 : A9 41 85 FB A9 08 85 FC 2E 0821 : A9 00 85 FD A9 92 85 FE 2F 0829 : A0 00 A2 0E B1 FB 91 FD 71 0831 : 88 D0 F9 E6 FC E6 FE CA 15 0839 : D0 F2 4C 00 92 EA EA EA 97 0841 : 4C FF 9D 4C 06 9E A6 7A 63 0849 : A0 04 84 0F BD 00 02 10 F2 0851 : 07 C9 FF F0 3E E8 D0 F4 B3 0859 : C9 20 F0 37 85 08 C9 22 59 0861 : F0 56 24 0F 70 2D C9 3F 7D 0869 : D0 04 A9 99 D0 25 C9 30 97 0871 : 90 04 C9 3C 90 1D 84 71 E4 0879 : A0 00 84 0B 88 86 7A CA D8 0881 : C8 E8 BD 00 02 38 F9 9E 34 0889 : A0 F0 F5 C9 80 D0 30 05 B1 0891 : 0B A4 71 E8 C8 99 FB 01 B3 0899 : B9 FB 01 F0 5A 38 E9 3A 32 08A1 : F0 04 C9 49 D0 02 85 0F 80 08A9 : 38 E9 55 D0 9F 85 08 BD 07 08B1 : 00 02 F0 DF C5 08 F0 DB 02 08B9 : C8 99 FB 01 E8 D0 F0 A6 93 08C1 : 7A E6 0B C8 B9 9D A0 10 B5 08C9 : FA B9 9E A0 D0 B4 A0 00 91 08D1 : F0 02 C8 E8 BD 00 02 38 66 08D9 : F9 92 9E F0 F5 C9 80 D0 32 08E1 : 02 F0 AC A6 7A E6 0B C8 F8 08E9 : B9 91 9E 10 FA B9 92 9E 19 08F1 : D0 E2 BD 00 02 10 9A 99 E0 08F9 : FD 01 C6 7B A9 FF 85 7A 3D 0901 : 60 10 12 C9 FF F0 0E 24 2F 0909 : 0F 30 0A 38 E9 7F C9 4D 16 0911 : B0 06 4C 27 A7 4C F3 A6 B6 0919 : 84 49 E9 4C AA A0 FF CA 8B 0921 : F0 08 C8 B9 92 9E 10 FA D3 0929 : 30 F5 C8 B9 92 9E 30 06 A8 0931 : 20 47 AB 4C EA 92 4C EF BD 0939 : A6 20 73 00 20 02 93 4C C5 0941 : AE A7 F0 3D C9 8B F0 3A D8 0949 : C9 9B F0 6A 20 79 00 E9 0B 0951 : 80 90 07 C9 23 B0 0D 4C 99 0959 : F7 A7 4C A5 A9 C9 3A F0 9F 0961 : D8 4C 08 AF C9 4C B0 03 1F 0969 : 4C 0E A8 C9 73 90 03 4C 80 0971 : 0E A8 E9 4B 0A A8 B9 8D 9F 0979 : 9F 48 B9 8C 9F 48 4C 73 91 0981 : 00 60 20 73 00 20 9E AD FF 0989 : 20 79 00 C9 89 F0 05 A9 27 0991 : A7 20 FF AE A5 61 D0 05 D1 0999 : 20 09 A9 F0 0D 68 68 20 BC 09A1 : 79 00 B0 03 4C A0 A8 4C AC 09A9 : FC 92 4C FB A8 20 79 00 F2 09B1 : 4C 9C A6 4C 08 99 20 73 33 09B9 : 00 F0 F2 90 F0 20 57 E2 33 09C1 : 85 24 A5 24 F0 ED A2 F2 35 09C9 : 20 54 94 A5 BB 85 22 A5 A9 09D1 : BC 85 23 20 45 94 A9 2C 15 09D9 : 20 DD ED A9 53 20 DD ED 22 09E1 : A9 2C 20 DD ED A9 57 20 2E 09E9 : DD ED 20 54 F6 A2 62 20 9E 09F1 : 54 94 A9 D1 8D 00 03 A9 6C 09F9 : 93 8D 01 03 A5 9A 48 A5 8F 0A01 : 02 85 9A 20 19 95 D0 03 F8 0A09 : 20 73 00 20 79 00 20 9C 38 0A11 : A6 A9 76 A0 A3 20 1E AB 48 0A19 : A9 8B 8D 00 03 A9 E3 8D 13 0A21 : 01 03 68 85 9A 20 54 F6 58 0A29 : A2 E2 20 54 94 4C 54 F6 BA 0A31 : A9 00 85 0D 20 73 00 C9 0F 0A39 : F3 90 21 C9 FA B0 1D 48 30 0A41 : 20 73 00 68 C9 F6 48 90 BF 0A49 : 03 20 F1 AE 68 38 E9 F3 86 0A51 : A8 B9 E1 9F 85 55 B9 DA E2 0A59 : 9F 4C DE AF 20 79 00 4C 32 0A61 : 8D AE 20 57 E2 A9 00 85 BF 0A69 : B9 A5 02 85 BA 4C 59 E1 5D 0A71 : A9 01 2C A9 00 85 0A 20 70 0A79 : 57 E2 A9 00 85 B9 A5 02 6C 0A81 : 85 BA 4C 6F E1 A0 00 B1 EB 0A89 : 22 20 DD ED C8 C4 24 D0 D5 0A91 : F6 60 A2 FF A5 02 2C A2 C0 0A99 : FF 48 A9 00 85 90 68 20 E5 0AA1 : 0C ED 8A 20 B9 ED A5 90 0D 0AA9 : 10 E7 20 07 F7 AA 4C 37 0A 0AB1 : A4 20 52 94 20 54 F6 A5 58 0AB9 : 02 20 09 ED A9 6F 20 C7 F1 0AC1 : ED 4C 66 94 20 0E 99 20 1A 0AC9 : 52 94 A9 53 20 DD ED A9 36 0AD1 : 3A 20 DD ED 20 45 94 4C 67 0AD9 : 54 F6 A0 52 2C A0 43 84 F9 0AE1 : 92 20 0E 99 20 CA 94 A9 38 0AE9 : A4 20 FF AE 20 0E 99 20 8C 0AF1 : 52 94 A5 92 20 DD ED A9 45 0AF9 : 3A 20 DD ED 20 45 94 A9 4A 0B01 : 3D 20 DD ED 20 DA 94 4C 47 0B09 : 54 F6 8D A7 02 A0 00 B1 B9 0B11 : 22 99 A8 02 C8 C4 24 D0 4F 0B19 : F6 60 AD A7 02 85 24 A9 D0 0B21 : 02 85 23 A9 A8 85 22 4C BC 0B29 : 45 94 20 0E 99 20 52 94 8F 0B31 : A9 4E 20 DD ED A9 3A 20 1A 0B39 : DD ED 20 45 94 20 19 95 97 0B41 : D0 13 20 73 00 20 9E AD E8 0B49 : 20 A6 B6 F0 08 A9 2C 20 47 0B51 : DD ED 20 45 94 4C 54 F6 C0 0B59 : 60 A0 00 B1 7A C9 2C 60 A7 0B61 : A0 56 2C A0 49 20 52 94 54 0B69 : 98 20 DD ED 4C 54 F6 20 CA 0B71 : 71 94 20 13 EE 48 20 D2 EE 0B79 : FF 68 C9 0D D0 F4 4C EF 86 0B81 : ED A2 F0 20 54 94 A9 24 D8 0B89 : 20 A8 FF 20 AE FF A5 02 87 0B91 : 20 B4 FF A9 60 20 96 FF A2 0B99 : A2 05 2C A2 03 20 87 95 98 0BA1 : CA D0 FA AA AD 8D 02 C9 CA 0BA9 : 02 F0 F9 20 E1 FF D0 03 0D 0BB1 : 4C 91 95 20 D7 AA 20 87 92 0BB9 : 95 20 CD BD 20 87 95 AA 73 0BC1 : F0 D9 20 D2 FF D0 F5 20 9F 0BC9 : A5 FF A4 90 D0 01 60 68 10 0BD1 : 68 20 AB FF A2 E0 20 54 8E 0BD9 : 94 4C AE FF A2 F0 20 54 1A 0BE1 : 94 20 9E AD 20 A6 B6 85 00 0BE9 : 24 A0 00 B1 22 C9 24 D0 36 0BF1 : 06 20 45 94 4C 4B 95 4C F9 0BF9 : 08 AF 20 57 E2 A5 02 85 3A 0C01 : BA 20 D8 95 A5 14 85 C1 49 0C09 : A5 15 85 C2 20 D8 95 A6 5F 0C11 : 14 A4 15 A9 C1 4C 5F E1 B2 0C19 : 20 FD AE 20 8A AD 4C F7 1F 0C21 : B7 20 52 94 A5 9A 48 A5 AB 0C29 : 02 85 9A 20 A0 AA 68 85 A4 0C31 : 9A 4C 54 F6 20 57 E2 A5 79 0C39 : 02 85 BA A9 00 85 B9 A9 48 0C41 : 00 A6 2B A4 2C 20 D5 FF 0F 0C49 : B0 25 20 B7 FF 29 BF F0 B5 0C51 : 05 A2 1D 4C 37 A4 86 2D 85 0C59 : 84 2E 20 33 A5 20 79 00 A4 0C61 : C9 2C D0 06 20 73 00 4C 6B 0C69 : 71 A8 A9 00 4C 71 A8 4C 24 0C71 : D1 E1 20 57 E2 A5 02 85 94 0C79 : BA A9 01 85 B9 20 19 95 25 0C81 : D0 0B 20 D8 95 A9 00 85 AC 0C89 : B9 A6 14 A4 15 A9 00 20 0E 0C91 : D5 FF B0 DB 20 B7 FF 29 1F 0C99 : BF F0 05 A2 1D 4C 37 A4 C0 0CA1 : 60 20 EB B7 86 92 20 52 25 0CA9 : 94 20 15 9B A9 57 20 DD 98 0CB1 : ED A5 14 20 DD ED A5 15 88 0CB9 : 20 DD ED A9 01 20 DD ED DD 0CC1 : A5 92 20 DD ED 4C 54 F6 F4 0CC9 : 20 52 94 A5 15 48 A5 14 3E 0CD1 : 48 20 F7 B7 20 03 9B A5 F2 0CD9 : 14 20 DD ED A5 15 20 DD 72 0CE1 : ED 20 54 F6 20 71 94 20 F2 0CE9 : 13 EE A8 20 EF ED 68 85 BD 0CF1 : 14 68 85 15 4C A2 B3 20 26 0CF9 : 9E B7 20 0F F3 20 1F F3 01 0D01 : 20 52 94 A9 50 20 DD ED FE 0D09 : A5 B9 20 DD ED 20 FD AE 84 0D11 : 20 8A AD 20 F7 B7 A2 01 AF 0D19 : 20 19 95 D0 03 20 9B B7 54 0D21 : A5 14 20 DD ED A5 15 20 35 0D29 : DD ED 8A 20 DD ED 4C 54 CB 0D31 : F6 20 71 94 A0 00 C8 20 94 0D39 : 13 EE 99 A6 02 C9 0D D0 43 0D41 : F5 88 98 85 92 20 7D B4 DB 0D49 : A0 00 B9 A7 02 91 62 C8 14 0D51 : C4 92 D0 F6 20 EF ED 68 7B 0D59 : 68 4C CA B4 20 71 94 A0 52 0D61 : 00 C8 20 13 EE 99 A6 02 8A 0D69 : C9 0D D0 F5 A5 7B 48 A5 4E 0D71 : 7A 48 A9 02 85 7B A9 A6 E2 0D79 : 85 7A 20 73 00 20 F3 BC FC 0D81 : 68 85 7A 68 85 7B 4C EF 9D 0D89 : ED 20 9E B7 20 1E E1 20 E0 0D91 : FD AE 20 9E B7 8A 48 20 F2 0D99 : FD AE 20 8B B0 85 49 84 CC 0DA1 : 4A 20 A3 B6 68 20 75 B4 82 0DA9 : A0 02 B9 61 00 91 49 88 A8 0DB1 : 10 F8 C8 20 12 E1 91 62 AF 0DB9 : C8 C4 61 D0 F6 20 CC FF F9 0DC1 : 60 A9 90 85 A7 A9 11 D0 78 0DC9 : 06 A9 A2 85 A7 A9 06 85 E8 0DD1 : A8 4C 3A 9A F0 03 4C D0 7B 0DD9 : 9C 20 23 95 A9 58 85 92 99 0DE1 : 4C D6 97 20 8A AD 20 F7 09 0DE9 : B7 20 52 94 20 15 9B A9 44 0DF1 : 45 20 DD ED A5 14 20 DD B3 0DF9 : ED A5 15 20 DD ED 4C 54 29 0E01 : F6 F0 03 4C CD 9C 20 23 42 0E09 : 95 A9 41 85 92 A9 01 85 F9 0E11 : 15 85 14 20 66 96 A9 02 B8 0E19 : 85 14 A9 07 85 15 20 66 42 0E21 : 96 A9 07 85 14 A9 EF 85 58 0E29 : 15 20 A9 97 4C 23 95 20 20 0E31 : 9E B7 86 93 A9 A4 20 FF FF 0E39 : AE 20 9E B7 8A 18 09 40 A4 0E41 : 85 92 A9 00 85 15 A9 78 12 0E49 : 85 14 A5 93 20 57 94 20 03 0E51 : 69 96 A9 77 85 14 A5 93 15 0E59 : 20 57 94 A5 92 29 BF 09 82 0E61 : 20 85 92 4C 69 96 20 57 EC 0E69 : E2 A4 2E 38 A5 2D E9 02 9F 0E71 : B0 01 88 AA A5 02 85 BA 0F 0E79 : A9 00 85 B9 4C 75 E1 20 F3 0E81 : 9E B7 8A 20 57 94 A9 55 0D 0E89 : 20 DD ED A9 3A 4C 5C 9C F9 0E91 : 20 9E B7 8A 48 20 57 94 4C 0E99 : 68 85 02 4C 54 F6 A2 F2 3B 0EA1 : 20 54 94 A9 23 20 DD ED CC 0EA9 : 20 54 F6 20 9E B7 A0 00 DF 0EB1 : 20 9C 9C 20 52 94 A9 4D 55 0EB9 : 20 DD ED A9 2D 20 DD ED 9F 0EC1 : A9 45 20 DD ED A9 A3 20 CC 0EC9 : DD ED A9 FD 20 DD ED 4C 08 0ED1 : 54 F6 A2 30 38 E9 0A 90 6B 0ED9 : 03 E8 B0 F9 69 3A 60 20 E6 0EE1 : 9E B7 86 B8 20 FD AE 20 00 0EE9 : 57 E2 20 0F F3 D0 03 4C 06 0EF1 : FE F6 A6 98 E0 0A 90 03 CE 0EF9 : 4C FB F6 E6 98 A5 B8 9D B2 0F01 : 59 02 29 0F 09 60 9D 6D 6C 0F09 : 02 A5 02 9D 63 02 A5 B7 5E 0F11 : F0 36 A9 00 85 90 A5 B8 6C 0F19 : 09 F0 AA 20 54 94 A5 90 EB 0F21 : 10 03 4C 07 F7 A0 00 B1 8F 0F29 : BB 20 DD ED C8 C4 B7 D0 5C 0F31 : F6 A9 2C 20 DD ED A9 53 A6 0F39 : 20 DD ED A9 2C 20 DD ED 0F 0F41 : A9 41 20 DD ED 4C 54 F6 CF 0F49 : 20 10 F7 4C 6D 94 20 9E 32 0F51 : AD 20 A6 B6 F0 F2 85 24 94 0F59 : 60 20 9E B7 86 B8 8A 29 12 0F61 : 0F 85 B9 A5 02 85 BA 20 CD 0F69 : FD AE 20 57 E2 20 19 95 6F 0F71 : D0 4F A0 00 B1 BB 99 A7 C0 0F79 : 02 C8 C4 B7 D0 F6 A9 A7 C2 0F81 : 85 BB A9 02 85 BC 20 79 40 0F89 : 00 99 A7 02 C8 20 73 00 DB 0F91 : C9 4C F0 12 C9 57 F0 2C 72 0F99 : 99 A7 02 99 A7 02 C8 20 A8 0FA1 : 73 00 F0 1B D0 F5 99 A7 26 0FA9 : 02 C8 A9 2C 99 A7 02 C8 70 0FB1 : 84 92 20 9B B7 8A A4 92 81 0FB9 : 99 A7 02 C8 4C 7F 99 84 F0 0FC1 : B7 4C C1 E1 A9 53 99 A7 36 0FC9 : 02 C8 A9 2C 99 A7 02 C8 90 0FD1 : A9 57 99 A7 02 C8 20 73 4F 0FD9 : 00 4C 7F 99 D0 1E A0 7F 92 0FE1 : 98 84 92 20 14 F3 D0 0D A2 0FE9 : 20 1F F3 A5 BA C5 02 D0 CE 0FF1 : 04 8A 20 9C F2 A4 92 88 86 0FF9 : D0 E6 18 60 A9 23 20 FF 83 1001 : AE 4C C7 E1 A0 00 B9 92 19 1009 : 9E 30 09 F0 14 20 D2 FF AD 1011 : C8 4C C6 99 29 7F 20 D2 99 1019 : FF A9 0D 20 D2 FF C8 D0 26 1021 : E5 A9 0D 4C D2 FF 20 0E 71 1029 : 99 20 CA 94 A9 26 20 FF 64 1031 : AE AC A7 02 A9 2C C8 99 B2 1039 : A7 02 8C A7 02 20 0E 99 86 1041 : AE A7 02 A0 00 18 6D A7 1D 1049 : 02 8D A7 02 B1 22 9D A8 30 1051 : 02 C8 E8 C4 24 D0 F5 A9 7E 1059 : A4 20 FF AE 20 0E 99 20 FC 1061 : 52 94 A9 43 20 DD ED A9 CC 1069 : 3A 20 DD ED 20 45 94 A9 BA 1071 : 3D 20 DD ED 20 DA 94 4C B7 1079 : 54 F6 A0 10 A9 20 99 A6 C2 1081 : 02 88 D0 FA 20 9E AD 20 49 1089 : A6 B6 F0 4E C5 A8 B0 45 7F 1091 : 85 24 A0 00 B1 22 99 A7 32 1099 : 02 C8 C4 24 D0 F6 20 52 9F 10A1 : 94 20 15 9B A9 57 20 DD 90 10A9 : ED A5 A7 20 DD ED A9 07 59 10B1 : 20 DD ED C6 A8 A5 A8 20 AF 10B9 : DD ED A0 00 B9 A7 02 20 D6 10C1 : DD ED C8 C4 A8 D0 F5 20 89 10C9 : 54 F6 A9 07 85 14 A9 EF 63 10D1 : 85 15 4C A9 97 A2 17 4C AD 10D9 : 37 A4 4C 08 99 20 53 E4 28 10E1 : A9 A0 85 38 20 60 A6 4C 7B 10E9 : 74 A4 A9 40 8D A7 02 A9 93 10F1 : 3A 8D A8 02 20 0E 99 A0 76 10F9 : 00 B1 22 99 A9 02 C8 C4 E5 1101 : 24 D0 F6 C8 C8 84 B7 A9 47 1109 : A7 85 BB A9 02 85 BC 4C 6F 1111 : 25 94 20 23 95 A0 FC 20 7F 1119 : F1 9A 20 0B 9B 84 62 A0 69 1121 : FA 20 F1 9A 20 0B 9B 84 CD 1129 : 63 A5 62 A2 90 38 4C 49 DA 1131 : BC 20 52 94 20 03 9B 98 DE 1139 : 20 DD ED A9 02 20 DD ED 6D 1141 : 4C 54 F6 20 15 9B A9 52 F2 1149 : 4C DD ED 20 71 94 20 13 66 1151 : EE A8 4C EF ED A9 4D 20 46 1159 : DD ED A9 2D 4C DD ED 20 E8 1161 : 82 B7 D0 08 20 10 F7 A2 9C 1169 : 08 4C 37 A4 A6 22 A4 23 4E 1171 : 20 F9 FD A0 00 20 60 9B DB 1179 : 20 52 94 20 54 F6 A5 02 83 1181 : 20 09 ED A9 60 20 C7 ED D8 1189 : 20 13 EE 85 63 20 13 EE 00 1191 : 85 62 20 EF ED A9 7F 20 B8 1199 : C3 FF A2 90 38 4C 49 BC 9B 11A1 : A9 7F A6 02 20 00 FE 4C 8A 11A9 : C0 FF 20 57 E2 A0 0E 20 07 11B1 : 60 9B A9 2E 8D 2C 03 A9 A9 11B9 : 93 8D 00 03 A9 9B 8D 01 23 11C1 : 03 A9 B7 8D 24 03 A9 9B 71 11C9 : 8D 25 03 A2 7F 20 C6 FF 12 11D1 : 4C 7B A4 A9 8B 8D 00 03 64 11D9 : A9 E3 8D 01 03 A9 57 8D ED 11E1 : 24 03 A9 F1 8D 25 03 A9 91 11E9 : 2F 8D 2C 03 A9 7F 20 C3 E9 11F1 : FF 20 E7 FF 4C 74 A4 A5 40 11F9 : 90 F0 04 A9 0D 18 60 20 8B 1201 : 13 EE 4C D2 FF 20 0E 99 65 1209 : A0 00 B1 22 99 A7 02 C8 CA 1211 : C4 24 D0 F6 A9 A0 99 A7 50 1219 : 02 C8 C0 10 90 F8 20 55 AD 1221 : 9C A9 12 85 A7 85 AB A9 70 1229 : 01 85 A8 85 AA A6 A7 A4 8F 1231 : A8 20 9C 9C A5 A8 85 AA AF 1239 : A5 AB 85 A7 A9 00 20 74 0E 1241 : 9C 20 6A 9C 20 13 EE 85 7D 1249 : AB 20 13 EE 85 A8 20 EF A5 1251 : ED A9 07 85 92 A5 92 0A 3A 1259 : 0A 0A 0A 0A 18 69 05 20 4D 1261 : 74 9C 20 6A 9C A0 00 20 88 1269 : 13 EE 99 B7 02 C8 C0 10 DA 1271 : D0 F5 20 EF ED A0 00 B9 99 1279 : B7 02 D9 A7 02 D0 06 C8 ED 1281 : C0 10 D0 F3 60 C6 92 10 A2 1289 : CC A5 AB D0 A0 20 62 9C FB 1291 : A2 04 4C 37 A4 A2 F2 20 9B 1299 : 54 94 A9 23 20 DD ED 4C 47 12A1 : 54 F6 20 AB FF A2 E2 4C 27 12A9 : 96 95 A5 02 20 09 ED A9 09 12B1 : 62 4C C7 ED 20 92 98 8D FD 12B9 : FC 9F 8A 38 E9 30 20 92 F4 12C1 : 98 8E FA 9F 8D FB 9F A9 DD 12C9 : F4 85 22 A9 9F 85 23 A9 44 12D1 : 09 85 24 20 52 94 20 45 7F 12D9 : 94 4C 54 F6 A9 31 2C A9 AF 12E1 : 32 8D E9 9F 8A 20 92 98 6D 12E9 : 8E EF 9F 8D F0 9F 98 20 B7 12F1 : 92 98 8E F2 9F 8D F3 9F 47 12F9 : 20 52 94 A9 E8 85 22 A9 33 1301 : 9F 85 23 A9 0C 85 24 20 1F 1309 : 45 94 4C 54 F6 A9 01 2C 4F 1311 : A9 00 85 93 20 C5 9B A5 78 1319 : 92 0A 0A 0A 0A 0A 18 69 98 1321 : 02 48 20 74 9C 20 6A 9C 8C 1329 : 20 13 EE 48 20 EF ED 68 A1 1331 : 29 BF A4 93 D0 02 09 40 97 1339 : 85 A9 68 20 74 9C A2 62 2C 1341 : 20 54 94 A5 A9 20 DD ED 54 1349 : 20 54 F6 A6 A7 A4 AA 20 B0 1351 : 9F 9C 4C 62 9C 20 C5 9B B7 1359 : 20 FD AE 20 9E B7 8A 18 29 1361 : 69 80 85 A9 A5 92 0A 0A CC 1369 : 0A 0A 0A 18 69 02 20 FB 1D 1371 : 9C 4C 20 95 20 82 B7 D0 85 1379 : 03 4C 9A 9A 85 24 20 C8 28 1381 : 9B A5 92 0A 0A 0A 0A 0A 02 1389 : 18 69 1E 20 74 9C 20 6A 63 1391 : 9C 20 13 EE 85 63 20 13 FA 1399 : EE 85 62 20 EF ED 20 62 9A 13A1 : 9C 4C 5A 9B 20 A6 B6 85 8A 13A9 : 24 A8 D0 03 4C 9A 9A 85 C5 13B1 : 24 20 C8 9B A5 92 0A 0A B6 13B9 : 0A 0A 0A 18 69 02 8D C7 BA 13C1 : 02 20 74 9C 20 6A 9C A2 91 13C9 : 00 20 13 EE 9D A7 02 E8 6D 13D1 : E0 1E D0 F5 20 EF ED 20 2D 13D9 : 62 9C A5 A7 8D C5 02 A5 42 13E1 : AA 8D C6 02 A9 21 20 7D 63 13E9 : B4 A0 20 B9 A7 02 91 62 C2 13F1 : 88 10 F8 68 68 4C CA B4 4A 13F9 : 20 0E 99 C9 21 F0 03 4C FE 1401 : 08 AF A5 22 85 A7 A5 23 01 1409 : 85 A8 20 55 9C A0 1E B1 40 1411 : A7 AA C8 B1 A7 A8 20 9C EF 1419 : 9C A0 20 B1 A7 20 74 9C CA 1421 : A2 62 20 54 94 A0 00 B1 39 1429 : A7 20 DD ED C8 C0 1E D0 C2 1431 : F6 20 54 F6 A9 32 8D E9 61 1439 : 9F 20 B8 9C 4C 62 9C A0 36 1441 : 92 84 38 20 44 A6 20 18 52 1449 : E5 A2 00 A0 00 BD 3E 9E B8 1451 : 20 D2 FF 98 5D 3E 9E A8 81 1459 : E8 E0 54 D0 F0 C0 71 D0 5D 1461 : 12 A0 07 B9 36 9E 99 04 83 1469 : 03 88 10 F7 A9 08 85 02 A8 1471 : 4C 74 A4 6C FC FF 06 92 BB 1479 : C1 92 F9 92 F0 93 93 8E 6B 1481 : 0D 20 2A 2A 2A 2A 20 43 69 1489 : 4F 4D 4D 4F 44 4F 52 45 4F 1491 : 20 36 34 20 44 49 53 4B 50 1499 : 2D 42 41 53 49 43 20 56 7E 14A1 : 33 2E 32 20 2A 2A 2A 2A 6D 14A9 : 0D 0D 20 33 35 33 32 37 CF 14B1 : 20 42 59 54 45 53 20 46 CF 14B9 : 52 45 45 20 28 43 29 20 85 14C1 : 33 2F 31 39 38 35 20 42 32 14C9 : 59 20 41 2E 46 52 49 4E 01 14D1 : 4B 0D 44 53 41 56 C5 44 85 14D9 : 56 45 52 49 46 D9 44 4C 6C 14E1 : 4F 41 C4 53 43 52 41 54 E1 14E9 : 43 C8 52 45 4E 41 4D C5 7D 14F1 : 43 4F 50 D9 48 45 41 44 67 14F9 : 45 D2 43 4F 4C 4C 45 43 25 1501 : D4 49 4E 49 D4 43 48 45 4A 1509 : 43 CB 43 41 54 41 4C 4F 4A 1511 : C7 44 49 D2 42 53 41 56 17 1519 : C5 50 41 53 D3 43 48 41 BC 1521 : 49 CE 42 4C 4F 41 C4 44 86 1529 : 53 59 D3 44 50 4F 4B C5 DE 1531 : 52 45 43 4F 52 44 A3 46 43 1539 : 45 54 43 48 A3 4E 41 4D CE 1541 : C5 49 C4 50 52 4F 54 45 61 1549 : 43 D4 52 45 50 52 4F 54 B1 1551 : 45 43 D4 43 48 41 4E 47 2C 1559 : C5 4D 45 52 47 C5 52 45 D7 1561 : 53 45 D4 44 45 56 49 43 C7 1569 : C5 44 45 53 54 52 4F D9 D5 1571 : 41 50 50 45 4E 44 A3 44 B5 1579 : 4F 50 45 4E A3 51 55 49 B8 1581 : D4 44 43 4C 4F 53 C5 43 FF 1589 : 4F 4D 4D 41 4E 44 D3 43 D7 1591 : 4F 4E 43 41 D4 52 45 50 96 1599 : 4C 41 43 C5 45 4E 54 45 B2 15A1 : D2 52 45 53 43 55 C5 57 FD 15A9 : 52 49 54 C5 44 53 A4 44 68 15B1 : D3 42 4C 4F 43 4B D3 44 09 15B9 : 50 45 45 CB 53 49 5A C5 EB 15C1 : 45 4E 54 52 59 A4 53 54 3D 15C9 : 41 52 D4 00 21 94 2F 94 05 15D1 : 32 94 83 94 99 94 9C 94 9B 15D9 : E9 94 1F 95 22 95 2E 95 3A 15E1 : 40 95 9B 95 B9 95 E0 95 7C 15E9 : F3 95 31 96 A2 97 60 96 5C 15F1 : B6 96 48 97 80 97 88 97 0D 15F9 : 93 97 C0 97 EE 97 25 98 EC 1601 : 3E 98 4F 98 5D 98 9E 98 B8 1609 : 18 99 9C 9A 9B 99 C3 99 31 1611 : E5 99 A9 9A 69 9B 14 9D 7F 1619 : B7 9D 96 97 9A 96 9D 9D 47 1621 : 9B F1 1C D2 88 34 64 1F 10 1629 : 55 31 20 32 20 30 20 00 69 1631 : 00 20 00 00 42 2D 50 3A 85 1639 : 32 20 00 53 41 56 45 45 4C 1641 : 2D DD