Kopieren mit Komfort: Super Copy
Bereits im ersten 64’er wurde Ihnen mit »Disk Copy« ein Kopierprogramm für Disketten vorgestellt. Wir möchten Ihnen heute eine völlig revidierte Fassung vorstellen, die erheblich leistungsfähiger und komfortabler ist.
Was soll ein gutes Kopierprogramm leisten? Nun, zunächst einmal soll es kopieren. Dazu muß man auswählen können, was kopiert werden soll. Dieser Vorgang dauert beim »Disk Copy« sehr lange, vor allem, wenn auf der Quelldiskette viele Programme sind. Bei »Super Copy« geht es genauso schnell wie das Einlesen eines Directory. Fehler beim Kopieren sollen möglichst ohne Programmabsturz und völligen Neubeginn behebbar sein. Gerade hier liegt eine Stärke von »Super Copy«. Alle Funktionen, die man sonst noch beim Kopieren braucht (Formatieren, Gültigkeitskontrolle (Vality check) etc.), sollen integriert sein. Dazu gehört auch eine komfortable Löschmöglichkeit, um Disketten »aufzuräumen«. Schließlich soll das Programm möglichst wenig Speicherplatz belegen, damit zum Kopieren genug zur Verfügung steht.
Aus all dem ergibt sich eine Konsequenz: Ein solches Programm läßt sich nur in Maschinensprache schreiben, da Basic einfach zu langsam ist und zuviel Speicherplatz belegt. Trotzdem habe ich einige Einschränkungen gemacht:
Relative Files können nicht kopiert werden. Dies verlangt eine zu aufwendige Verwaltung und kommt auch zu selten vor, um es ins Programm zu integrieren. In einem Programmdurchlauf können höchstens 32 Files kopiert werden. Mehr Filenamen kann das Programm nicht speichern.
Ansonsten aber läßt »Super Copy« kaum noch Wünsche offen, höchstens den nach einem schnelleren Laufwerk. Aber auch da läßt sich wohl noch etwas machen.
Wie arbeitet »Super Copy«?
Nach dem Programmstart meldet sich das Programm mit einem Menü:
- Directory
- Kopieren
- Formatieren
- Scratchen
- Validieren
- Ende
Durch Druck auf eine Ziffer wählen Sie die entsprechende Funktion aus. Übrigens können Sie im Programm immer dann, wenn Sie irgendeine Taste drücken müssen, mit »←« in dieses Menü zurückkehren. Gehen wir nun die einzelnen Funktionen einmal durch.
Zur Funktion »Directory« ist nicht viel zu sagen. Es erscheint das Verzeichnis aller Files auf der Diskette.
Beim »Formatieren« müssen Sie den Diskettennamen und die ID — wie üblich durch ein Komma getrennt — angeben. Eine ID ist nur bei einer neuen Diskette wichtig. Verzichten Sie darauf, werden zwar alle Einträge im Directory gelöscht, aber es entfällt das Neuformatieren der einzelnen Spuren. »Validieren« (Gültigkeitskontrolle) entspricht dem Basic-Befehl OPEN 1,8,15,”V”:CLOSE 1.
Entscheiden Sie sich für »Kopieren«, werden Sie aufgefordert, die Quelldiskette einzulegen. Nach Tastendruck erscheinen nun die Namen der Programme. Files, die kopiert werden sollen, kennzeichnen Sie mit der »J«-Taste, die anderen mit »N«. Relative Files können nicht kopiert werden, daher erscheint eine Fehlermeldung, wenn Sie versuchen, solche Files mit »J« zu markieren. Das Programm kann maximal 32 Namen speichern. Wenn Sie mehr als 32 Files kopieren wollen, erscheint die Fehlermeldung »Kopierliste voll«. Sie können nun die bisher markierten Programme kopieren und nach Abschluß einen neuen Programmdurchlauf starten. Haben Sie Ihre Auswahl beendet, gibt das Programm an, wieviele Blöcke insgesamt zu kopieren sind, damit Sie genügend Platz auf der Zieldiskette bereitstellen können. Ein neues Menü erscheint:
- Directory
- Formatieren
- Validieren
* * * Space * * *
für weiter
Sie können nun in aller Ruhe eine Zieldiskette aussuchen, eventuell noch formatieren etc. Sie kommen in jedem Fall in dieses Menü zurück. Sind alle Vorbereitungen abgeschlossen, drücken Sie »Space«, um mit dem Kopieren fortzufahren. Das Programm fordert nun auf, die Quelldiskette einzulegen, und liest die vorher markierten Programme ein. Sollte dabei ein Fehler auftreten, weil Sie zum Beispiel aus Versehen die falsche Diskette eingelegt haben, wird eine entsprechende Meldung ausgegeben und gefragt, ob dieses File übersprungen oder ein neuer Versuch unternommen werden soll. Auch Lesefehler des Laufwerks werden in dieser Weise gehandhabt. In einem Durchgang können maximal 234 Blöcke eingelesen werden. Ist noch mehr zu kopieren wird das Einlesen abgebrochen.
Jetzt müssen Sie angeben, ob Sie fortlaufend oder einzeln kopieren möchten. Fortlaufend bedeutet, daß die Files der Reihe nach auf dieselbe Diskette geschrieben werden. Beim Einzelkopieren dagegen springt das Programm nach jedem Schreibvorgang wieder in ein Menü, und Sie haben die Möglichkeit, die Diskette zu wechseln, ein Directory anzusehen, zu formatieren oder zu validieren. Außerdem können Sie auch das zuletzt kopierte Programm noch einmal auf eine andere Diskette kopieren. Das jeweils nächste File wird vor dem Schreiben angezeigt, damit Sie die richtige Zieldiskette einlegen können.
Haben Sie Ihre Wahl getroffen, läuft der Schreibvorgang in der oben beschriebenen Art und Weise ab. Schreibfehler werden wie Lesefehler behandelt, das heißt es wird gefragt, ob ein neuer Versuch gestartet oder das File übersprungen werden soll.
Sind alle Programme kopiert, erscheint die Meldung »KOPIE FERTIG«. Sind aber nach dem ersten Lese/Schreib-Durchgang noch weitere Programme zu kopieren, fährt das Programm mit der Aufforderung zum Einlegen der Quelldiskette fort.
»Scratchen«, also das Löschen von Programmen, gehört zu den angenehmsten Funktionen, die »Super Copy« zu bieten hat. Seien Sie aber vorsichtig, sonst haben Sie bald überhaupt keine Programme mehr. Der Ablauf ist ähnlich wie beim Kopieren. Doch anstatt die Files zum Kopieren zu kennzeichnen, werden sie nun zum Löschen markiert. Sollten Sie einen Fehler gemacht haben, ist allerdings noch nichts verloren, denn am Ende des Markiervorgangs müssen Sie noch einmal ausdrücklich durch Drücken der »Space«-Taste bestätigen, daß es Ihnen ernst ist.
Zum Programmaufbau:
Ausführliche Erläuterungen des Assemblerquelltextes möchte ich Ihnen und mir ersparen. Nur soviel: Das Programm ist im wesentlichen modular aufgebaut, das heißt es besteht aus einzelnen Blöcken, die von den verschiedenen Menüs aus angesprungen werden. Daher ist es nicht nötig, häufig vorkommende Programmteile wie Tasten- oder Fehlerabfragen ständig neu zu schreiben. Auch der Teil zum Markieren der Programme ist beim »Scratchen« und beim Kopieren identisch. Ein Flag, also eine Speicherstelle, deren Inhalt etwas »signalisieren« soll, entscheidet darüber, welche Texte ausgegeben und wohin zurückgesprungen werden soll.
Eine solche Programmiertechnik trägt dazu bei, die Programme ebenso kurz wie übersichtlich zu halten.
Hinweise zum Abtippen:
Bevor Sie sich ans Eintippen des Ladeprogramms machen, müssen Sie unbedingt folgende Befehle im Direktmodus eingeben:
POKE 43,1: POKE 44,32: POKE 8192,0: NEW (RETURN)
Damit wird der Start des Basic-Speichers nach oben verlegt. Tun Sie das nicht, steht Ihr Basic-Ladeprogramm dort, wo nachher das fertige Kopierprogramm hin' gePOKEt' wird.
Ich weiß, daß es eine Zumutung ist, eine derartige Menge von Zahlen abzutippen, und kein Mensch wird dies auf Anhieb fehlerfrei bewerkstelligen können. Um Ihnen aber die Fehlersuche so leicht wie möglich zu machen, habe ich den ’DATA-Zeilenberg’ in 11 Blöcke eingeteilt. Zu jedem dieser Blöcke gehört eine Prüfsumme. Stimmt etwas nicht, gibt das Ladeprogramm an, in welchem Block der Fehler steckt. Achten Sie aber vor allem darauf, daß Sie am Zeilenende kein Komma mehr schreiben, denn das interpretiert der Computer als Null!
Nach dem Abtippen sollten Sie vor dem ersten Programmlauf dieses unbedingt abspeichern, denn sonst könnte es passieren, daß sich das Programm durch eine fehlerhafte Eingabe selbst löscht, und die ganze Mühe war umsonst. Vor dem Laden des Programms müssen Sie die obengenannte Zeile eintippen, um die Basic-Startadresse wieder hochzulegen.
Starten Sie dann das Programm mit »RUN«. Erscheint während des Programmablaufs die Fehlermeldung »TYPE MISMATCH ERROR«, dann haben Sie bestimmt ein »I« statt einer »1« eingetippt oder ein »O« statt einer »0«. Ansonsten müssen Sie alle Fehler in den DATA-Blöcken korrigieren. Wenn alles richtig ist, meldet sich das Ladeprogramm nach einiger Zeit mit »READY«. Nun steht das Programm fertig im Speicher. Um es auf Diskette abzuspeichern, müssen jetzt folgende Befehle eingetippt werden:
SYS64738(RETURN)
Keine Angst! Das ist zwar ein Befehl, der den Computer in den Zustand direkt nach dem Einschalten zurückversetzt, aber unser Programm ist nach wie vor im Speicher vorhanden. Nun noch folgende Zeilen:
10 SYS 2064 (RETURN)
Das ist der Startbefehl für »Super Copy«
POKE 45, 251 : POKE 46, 18
Damit wird das Basic-Ende auf das Programmende gesetzt. Jetzt können Sie mit
SAVE »Super Copy«, 8
das fertige Programm auf Diskette abspeichern.
1 rem ************************** 2 rem * * 3 rem * super copy 1541 * 4 rem * von n.mann & d.weineck * 5 rem * fleetrade 40 * 6 rem * 2800 bremen * 7 rem * tel. 0421 / 493090 * 8 rem * * 9 rem ************************** 10 fori=0to10:reada:pr(i)=a:next 20 sa=2064:i=0 30 pa=sa+256*i:ch=0 40 forj=0to255:reada:pokepa+j,a:ch=ch+a:next 50 ifch<>pr(i)then90 55 i=i+1:ifi<10then30 60 pa=pa+256:ch=0 70 forj=0to234:reada:pokepa+j,a:ch=ch+a:next 80 ifch=pr(i)thenend 90 print"fehler in block"i+1:end 100 data28785,26329,30148,25856,28858,29119,27622,19508,15126,14152,13792 110 rem 120 rem *** block 1 *** 130 rem 140 data169,11,141,32,208,141,33,208,169,1,141,134,2,169,139,160,15,32,11,15 150 data32,231,14,201,49,144,249,201,55,176,245,32,210,255,201,49,208,6,32 160 data97,8,76,16,8,201,50,208,3,76,194,8,201,51,208,6,32,230,8,76,16,8,201 170 data52,208,3,76,78,9,201,53,208,6,32,185,9,76,16,8,76,116,164,32,68,229 180 data169,8,170,160,0,32,186,255,169,1,162,237,160,18,32,189,255,32,192,255 190 data169,8,32,180,255,169,0,32,150,255,32,165,255,32,165,255,76,166,8,32 200 data165,255,133,251,32,165,255,166,251,32,205,189,32,237,14,32,165,255 210 data240,6,32,210,255,24,144,245,32,240,14,32,165,255,32,165,255,165,144 220 data240,216,32,171,255,169,8,32,195,255,32,136,14,32,245,14,96,32,209,9 230 data169,111,160,18,32,11,15,169,255,141,195,2,32,117,11,32,222,11,32,195 240 data11,32,117,11,32,234,12,32,227,11,76,221,8,169,168,160,17,32,11,15,162 250 data0,32,207,255,157,64,3,232,201,13,208,245,169,0,202,157,64,3,169,78 260 data141,61,3,169,48,141,62,3,169,58,141,63,3,169 270 rem 280 rem *** block 2 *** 290 rem 300 data15,162,8,168,32,186,255,162,3,189,61,3,240,3,232,208,248,138,162,61 310 data160,3,32,189,255,32,192,255,32,163,14,8,169,15,32,195,255,40,176,1 320 data96,169,200,160,17,32,11,15,32,245,14,201,74,240,185,201,78,208,245 330 data76,16,8,32,68,229,169,32,160,18,32,11,15,169,128,141,196,2,32,224,9 340 data169,8,32,195,255,173,193,2,208,3,76,16,8,32,68,11,169,135,160,18,32 350 data11,15,32,222,11,169,83,141,61,3,169,48,141,62,3,169,58,141,63,3,138 360 data24,105,3,162,61,160,3,32,189,255,169,15,162,8,168,32,186,255,32,192 370 data255,169,15,32,195,255,174,192,2,232,236,193,2,176,9,238,192,2,32,18 380 data12,76,122,9,76,16,8,169,86,141,239,18,169,27,160,17,32,11,15,32,75 390 data14,169,73,141,239,18,32,136,14,96,32,68,229,169,0,141,196,2,169,46 400 data160,17,32,11,15,32,245,14,32,240,14,32,240,14,32,75,14,32,136,14,144 410 data5,104,104,76,16,8,169,8,170,160,0,32,186,255,169,1,162,237,160,18,32 420 data189,255,32,192,255,169,8,32,180,255,169 430 rem 440 rem *** block 3 *** 450 rem 460 data0,32,150,255,160,4,32,165,255,136,208,250,32,165,255,133,251,32,165 470 data255,166,251,32,205,189,32,237,14,32,165,255,240,6,32,210,255,24,144 480 data245,32,240,14,32,240,14,32,165,255,32,165,255,160,0,140,193,2,32,165 490 data255,141,192,2,32,165,255,141,194,2,174,192,2,32,205,189,32,237,14,160 500 data0,32,165,255,32,210,255,153,64,3,240,3,200,208,242,32,165,255,32,165 510 data255,165,144,240,9,44,196,2,16,1,96,76,50,11,173,194,2,208,7,173,192 520 data2,201,235,144,10,169,70,160,16,32,11,15,76,44,11,173,193,2,201,32,144 530 data10,169,86,160,16,32,11,15,24,144,214,169,0,133,8,169,32,133,211,169 540 data110,160,16,32,11,15,32,245,14,201,78,240,104,201,74,208,245,169,125 550 data160,16,32,11,15,173,193,2,32,233,13,234,234,162,0,232,189,64,3,201 560 data34,208,248,142,194,2,232,189,64,3,201,34,240,7,145,65,234,232,200,208 570 data242,138,172,193,2,24,237,194,2,153,0,19,173,192,2,153,160,19,189,64 580 data3,208,15,44,196,2,48,21,169,135,160,16,32,11,15,76,44 590 rem 600 rem *** block 4 *** 610 rem 620 data11,201,83,240,7,201,80,240,3,232,208,225,153,32,19,238,193,2,24,144 630 data7,169,170,160,16,32,11,15,32,240,14,76,72,10,32,171,255,169,8,32,195 640 data255,173,193,2,208,5,104,104,76,16,8,162,0,142,198,2,142,197,2,32,240 650 data14,32,240,14,169,18,32,210,255,24,189,160,19,109,197,2,141,197,2,169 660 data0,109,198,2,141,198,2,232,236,193,2,144,233,174,197,2,76,205,189,169 670 data234,160,16,32,11,15,44,195,2,48,7,169,215,160,18,32,11,15,169,160,160 680 data18,32,11,15,32,245,14,201,32,208,1,96,201,50,208,6,32,185,9,76,117 690 data11,201,49,208,6,32,97,8,76,117,11,201,51,208,6,32,230,8,76,117,11,201 700 data52,208,214,44,195,2,48,209,104,104,76,244,12,169,180,160,16,32,11,15 710 data32,245,14,201,49,240,7,201,50,208,245,169,0,44,169,255,141,195,2,96 720 data162,0,142,192,2,169,22,157,64,19,169,0,141,194,2,44,196,2,16,10,169 730 data62,160,18,32,11,15,24,144,10,138,240,29,169,46,160,17,32,11,15,32,245 740 data14,44,196,2,16,14,201,32 750 rem 760 rem *** block 5 *** 770 rem 780 data208,244,169,96,160,18,32,11,15,24,144,7,169,78,160,17,32,11,15,172 790 data192,2,190,0,19,173,192,2,32,233,13,177,65,32,210,255,200,202,208,247 800 data32,28,15,174,192,2,189,0,19,133,251,173,192,2,32,233,13,162,0,177,65 810 data157,64,3,200,232,198,251,208,245,44,196,2,16,1,96,160,0,185,241,18 820 data157,64,3,200,232,192,4,144,244,172,192,2,185,32,19,157,61,3,138,162 830 data64,160,3,32,189,255,169,2,162,8,168,32,186,255,32,192,255,174,192,2 840 data189,64,19,160,0,132,251,133,252,162,2,32,198,255,32,165,255,32,9,14 850 data166,144,240,246,32,136,14,8,32,204,255,169,2,32,195,255,40,144,5,32 860 data209,14,176,44,174,192,2,56,165,251,233,1,157,128,19,165,252,233,0,157 870 data96,19,232,236,193,2,176,28,24,125,160,19,176,22,238,192,2,238,194,2 880 data165,252,24,105,1,157,64,19,169,15,32,195,255,76,28,12,96,173,192,2 890 data56,237,194,2,141,192,2,169,90,160,17,32,11,15,32,245,14,32,75,14,169 900 data121,160,17,32,11,15,172,192,2,190,0,19,173,192 910 rem 920 rem *** block 6 *** 930 rem 940 data2,32,233,13,234,177,65,234,32,210,255,200,202,208,246,32,28,15,174 950 data192,2,189,0,19,133,251,173,192,2,32,233,13,162,0,177,65,157,64,3,232 960 data200,198,251,208,245,160,0,185,246,18,157,64,3,200,232,192,4,144,244 970 data172,192,2,185,32,19,157,61,3,138,162,64,160,3,32,189,255,169,2,162 980 data8,168,32,186,255,32,192,255,174,192,2,160,0,189,64,19,132,251,133,252 990 data189,128,19,133,253,189,96,19,133,254,162,2,32,201,255,32,26,14,32,168 1000 data255,165,253,197,251,165,254,229,252,176,240,32,204,255,169,2,32,195 1010 data255,32,136,14,144,5,32,209,14,176,16,44,195,2,48,3,76,213,13,206,194 1020 data2,48,6,238,192,2,76,254,12,238,192,2,174,192,2,236,193,2,176,4,32,240 1030 data14,96,169,133,160,17,32,11,15,32,245,14,104,104,76,16,8,32,117,11,206 1040 data194,2,16,3,76,183,13,238,192,2,32,34,14,76,244,12,160,0,10,10,132,66 1050 data10,38,66,10,38,66,133,65,165,66,24,105,20,133,66,160,0,96,120,160,52 1060 data132,1,160,0,96,32,1,14,145,251,230,251 1070 rem 1080 rem *** block 7 *** 1090 rem 1100 data208,2,230,252,160,55,132,1,88,96,32,1,14,177,251,76,14,14,169,12,160 1110 data18,32,11,15,173,192,2,10,10,10,10,8,174,192,2,188,0,19,170,189,0,20 1120 data40,8,144,3,189,0,21,32,210,255,232,136,208,239,40,96,169,15,162,8,168 1130 data32,186,255,169,1,162,239,160,18,32,189,255,32,192,255,169,15,76,195 1140 data255,32,165,255,41,15,10,10,10,10,133,87,32,165,255,41,15,5,87,96,72 1150 data74,74,74,74,32,128,14,104,41,15,24,105,48,76,210,255,169,15,162,8,168 1160 data32,186,255,169,0,32,189,255,32,192,255,32,163,14,8,169,15,32,195,255 1170 data40,96,162,15,32,198,255,32,100,14,201,1,8,144,11,72,32,240,14,32,240 1180 data14,104,32,119,14,32,165,255,201,13,240,10,40,8,144,245,32,210,255,24 1190 data144,239,32,204,255,40,96,169,223,160,17,32,11,15,32,245,14,201,49,208 1200 data2,24,96,201,50,208,243,56,96,32,228,255,240,251,96,169,32,44,169,13 1210 data76,210,255,32,231,14,201,95,240,1,96,169,15,32,195,255,32,231,255,162 1220 data247,154,76,16,8,133,87,132,88,160 1230 rem 1240 rem *** block 8 *** 1250 rem 1260 data0,177,87,240,6,32,210,255,200,208,246,96,162,0,142,64,3,142,65,3,174 1270 data192,2,189,160,19,162,8,72,104,10,72,248,173,65,3,109,65,3,141,65,3 1280 data173,64,3,109,64,3,141,64,3,216,202,208,230,104,173,64,3,9,48,141,64 1290 data3,173,65,3,41,15,9,48,141,66,3,173,65,3,74,74,74,74,9,48,141,65,3,169 1300 data29,133,211,162,0,189,64,3,201,48,208,10,169,32,157,64,3,232,224,3,144 1310 data239,162,0,189,64,3,32,210,255,232,224,3,144,245,96,147,13,13,32,32 1320 data32,32,32,32,32,42,42,42,42,32,83,85,80,69,82,32,67,79,80,89,32,49,53 1330 data52,49,32,42,42,42,42,13,32,32,32,32,32,32,32,40,67,41,32,66,89,32,78 1340 data46,77,65,78,78,32,38,32,68,46,87,69,73,78,69,67,75,13,13,13,13,32,32 1350 data49,46,32,68,73,82,69,67,84,79,82,89,13,32,32,50,46,32,75,79,80,73,69 1360 data82,69,78,13,32,32,51,46,32,70,79,82,77,65,84,73,69,82,69,78,13,32,32 1370 data52,46,32,83,67,82,65,84,67,72,13,32,32 1380 rem 1390 rem *** block 9 *** 1400 rem 1410 data53,46,32,86,65,76,73,68,73,69,82,69,78,13,32,32,54,46,32,69,78,68,69 1420 data13,13,13,13,32,32,18,32,66,73,84,84,69,32,87,65,69,72,76,69,78,32,83 1430 data73,69,32,58,32,146,32,0,13,13,32,70,73,76,69,32,90,85,32,76,65,78,71 1440 data0,13,13,32,18,32,75,79,80,73,69,82,76,73,83,84,69,32,86,79,76,76,32 1450 data146,0,74,65,47,78,69,73,78,157,157,157,157,157,157,157,0,18,32,74,65 1460 data32,146,32,32,32,0,13,32,32,18,32,70,65,76,83,67,72,69,82,32,70,73,76 1470 data69,84,89,80,32,146,32,32,32,32,32,18,94,94,94,146,13,0,18,78,69,73 1480 data78,146,32,32,32,0,13,13,13,13,32,75,79,80,73,69,82,86,79,82,71,65,78 1490 data71,58,13,13,32,32,49,46,32,70,79,82,84,76,65,85,70,69,78,68,13,32,32 1500 data50,46,32,69,73,78,90,69,76,78,13,13,13,0,13,13,13,32,49,46,32,68,73 1510 data82,69,67,84,79,82,89,13,32,50,46,32,86,65,76,73,68,73,69,82,69,78,13 1520 data32,51,46,32,70,79 1530 rem 1540 rem *** block 10 *** 1550 rem 1560 data82,77,65,84,73,69,82,69,78,13,0,13,13,32,86,65,76,73,68,73,69,82,69 1570 data78,32,46,46,46,13,0,13,13,32,18,32,81,85,69,76,76,45,68,73,83,75,69 1580 data84,84,69,32,69,73,78,76,69,71,69,78,32,146,13,0,13,13,32,82,69,65,68 1590 data73,78,71,32,0,13,13,32,18,32,90,73,69,76,45,68,73,83,75,69,84,84,69 1600 data32,69,73,78,76,69,71,69,78,32,146,13,0,13,13,32,87,82,73,84,73,78,71 1610 data32,0,13,13,32,32,18,32,75,32,79,32,80,32,73,32,69,32,32,32,70,32,69 1620 data32,82,32,84,32,73,32,71,32,33,32,146,13,0,13,13,32,32,68,73,83,75,78 1630 data65,77,69,78,32,85,78,68,32,73,68,32,69,73,78,71,69,66,69,78,13,13,0 1640 data13,13,32,78,79,67,72,32,69,73,78,32,86,69,82,83,85,67,72,32,63,13,0 1650 data13,13,32,32,49,46,32,85,69,66,69,82,83,80,82,73,78,71,69,78,32,63,13 1660 data32,32,50,46,32,78,69,85,69,82,32,86,69,82,83,85,67,72,32,63,13,0,13 1670 data13,32,78 1680 rem 1690 rem *** block 11 *** 1700 rem 1710 data65,69,67,72,83,84,69,83,32,70,73,76,69,32,58,0,13,32,32,18,32,83,67 1720 data82,65,84,67,72,45,68,73,83,75,32,69,73,78,76,69,71,69,78,32,146,13 1730 data0,13,13,32,18,32,83,73,67,72,69,82,32,63,32,45,32,83,80,65,67,69,44 1740 data32,83,79,78,83,84,32,95,32,146,13,0,13,13,32,83,67,82,65,84,67,72,73 1750 data78,71,32,0,32,66,76,79,69,67,75,69,32,90,85,32,75,79,80,73,69,82,69 1760 data78,32,146,13,0,32,66,76,79,69,67,75,69,32,90,85,32,83,67,82,65,84,67 1770 data72,69,78,32,146,13,0,13,32,42,42,42,32,83,80,65,67,69,32,42,42,42,13 1780 data32,32,70,85,69,82,32,87,69,73,84,69,82,13,13,32,18,32,66,73,84,84,69 1790 data32,87,65,69,72,76,69,78,32,83,73,69,32,146,13,0,32,52,46,32,78,79,67 1800 data72,77,65,76,32,75,79,80,73,69,82,69,78,13,0,36,0,73,0,44,88,44,82,0 1810 data44,88,44,87,0,169,0,78