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.