Sehr geehrter Leser,
verwechseln Sie die Tools auf der beiliegenden Diskette bitte keinesfalls mit einer der unzähligen Basic-Erweiterungen für den C64.
Diese Befehlserweiterungen bieten »Spielereien« wie COLOR-, INSTR- oder LOCATE-Anweisungen, die zwar oft nützlich sind, Ihnen aber kaum dabei helfen, wirklich professionelle Programme in Basic zu erstellen.
Im Gegensatz dazu wenden sich die vorliegenden Tools und Utilities an den fortgeschrittenen (und entsprechend anspruchsvolleren) Programmierer.
»Tool« oder » Utility« heißt soviel wie »Werkzeug« oder »Hilfsmittel«. Und genau das finden Sie auf der Diskette - Hilfsmittel zur Erstellung wirklich professioneller Basic Programme.
Ein Beleg dafür ist die »Vorgeschichte« der Programme. Alle Tools entstanden bei der Erstellung des Programms MasterBase, einer Dateiverwaltung für den C64 und den Plus4, die von Markt und Technik vertrieben wird.
Diese Dateiverwaltung gehört zu den leistungsfähigsten und benutzerfreundlichsten Programmen, die für diese Rechner angeboten werden.
Die Profi-Tools enthalten alle Routinen, die ich zur Erstellung von MasterBase benötigte!
Was Ihnen hier angeboten wird, ist somit nicht weniger als die Möglichkeit, jene Hilfsmittel in Ihren eigenen Programmen ein zusetzen, die so oder ähnlich nahezu jedes professionelle Programm enthält.
Assembler-Programmierer können zusätzlich durch das Studium der kommentierten Quelltexte profitieren. Mit dieser » Schatzkiste« stehen Ihnen nahezu unbegrenzte Möglichkeiten für Ihre eigenen Programme zur Verfügung.
Bei geschicktem Einsatz der Utilities können Sie Programme schreiben, die ebenso schnell und komfortabel sind wie das genannte MasterBase.
Zum Beispiel wird niemand erkennen können, ob Sie nun eigentlich ein Basic- oder ein Maschinenspracheprogramm geschrieben haben.
Die Utilities stellen Ihnen für alle in der Praxis benötigten zeitkritischen Programmteile reine Maschinenprogramme zur Verfügung. Sogar die gefürchtete Garbage Collection wird durch die Utilities zur Bedeutungslosigkeit verurteilt.
Diese Tools bieten Ihnen weitaus mächtigere Hilfsmittel als einige zusätzliche Anweisungen wie LOCATE (Cursor auf eine angegebene Position setzen) oder INSTR (prüfen, ob ein String in einem anderen enthalten ist).
Basic-Erweiterungen enthalten relativ einfache Anweisungen, die im Grunde bereits »serienmäßig« eingebaut sein sollten (was bei den meisten Rechnern auch der Fall ist, nur nicht beim C64).
Derartige einfache Anweisungen enthalten teilweise auch die vorliegenden Tools - allerdings mehr als »Abfallprodukte«!
Vor allem enthalten die Tools sehr komplexe Routinen, die weit über den Rahmen jeder Basic-Erweiterung hinausgehen. Den Unterschied zwischen einer Befehlserweiterung und den vorliegenden Tools und Utilities zeigen am besten einige Beispiele:
Heutzutage sind professionelle Programme ohne Pull-down-Menüs wie auf dem Atari ST oder dem Amiga nicht mehr vorstellbar.
Im Gegensatz zu Rechnern wie dem ATARI ST oder dem AMIGA ist der C64 jedoch nicht bereits von Haus aus auf die Verwaltung von Pull-down-Menüs eingerichtet.
Diese komplexe Aufgabe sprengt den Rahmen einer Befehlserweiterung bei weitem. Sie ist nicht vergleichbar mit zusätzlichen Befehl(chen) wie LOCATE oder INSTR, sondern erfordert ein hochkomplexes eigenes Programm, das vollständig in Maschinensprache geschrieben werden muß.
In Basic ist es unmöglich, größere Arrays - die zum Beispiel Adressen oder Vokabeln enthalten - in halbwegs zufriedenstellender Zeit zu sortieren. Auch nicht mit schnellen Sortieralgorithmen wie zum Beispiel QUICKSORT.
Die Tools enthalten unter anderem auch eine in Maschinensprache (wie alle Routinen) geschriebene QUICKSORT-Routine, die selbst 1000 Strings in weniger als einer Sekunde sortiert.
Hohe Sortiergeschwindigkeiten allein sind jedoch in der Praxis bei weitem nicht ausreichend. Sortierroutinen müssen flexibel sein. Nehmen Sie einen »Vokabeltrainer«. In einem Stringarray befinden sich die englischen Vokabeln, in einem zweiten die dazugehörigen deutschen Ausdrücke:
| E$(1) = „LIBRARY“ | D$(1) = „BIBLIOTHEK“ |
| E$(2) = „SOURCE“ | D$(2) = „QUELLE“ |
| E$(3) = „DESTINATION“ | D$(3) = „BESTIMMUNG“ |
| E$(4) = „FAME“ | D$(4) = „SCHICKSAL“ |
… …
Angenommen, Sie wollen die englischen Vokabeln alphabetisch sortieren. Dann darf keinesfalls die Beziehung zwischen den englischen und den deutschen Vokabeln verlorengehen, wie es beim einfachen Sortieren des Arrays E$(..) der Fall wäre.
Jede Änderung im Array E$() muss im Array D$() nachvollzogen werden. Man sagt, D$(..) wird » mitsortiert«.
| E$(1) = „DESTINATION“ | D$(1) = „BESTIMMUNG“ |
| E$(2) = „FAME“ | D$(2) = „SCHICKSAL“ |
| E$(3) = „LIBRARY“ | D$(3) = „BIBLIOTHEK“ |
| E$(4) = „SOURCE“ | D$(4) = „QUELLE“ |
Die QUICKSORT-Routine ist unter anderem in der Lage, ein Array beliebigen Typs zu sortieren (String, Integer, Real) und ein zweites Array mitzusortieren, dessen Typ ebenfalls beliebig ist.
Ein weiteres Beispiel für den Einsatz der Tools ist eine Eingaberoutine. Jedes professionelle Programm benötigt eine eigene Eingaberoutine. Denken Sie an eine Dateiverwallung, die mit Masken zur Eingabe von Datensätzen arbeitet.
Name: <…………> Vorname: <…………..> Strasse: <………………………………………..> PIz: <……………> Ort: <……………………………………………….> Telefon: <……………………..>
Jedes Feld besitzt eine bestimmte Länge. Dem Benutzer darf es nicht möglich sein, während der Eingabe den Cursor aus dem Feld herauszubewegen oder gar (siehe INPUT) den Bildschirm zu löschen.
Zusätzlich muß der Programmierer vorgeben können, welche Zeichen in einem bestimmten Feld eingegeben werden dürfen. Zum Beispiel dürfen im Feld »PLZ« nur Zahlen eingegeben werden. Die Eingabe ist somit auf die Zeichen »1234567890«
beschränkt. Vor allem in Masken genügt es keineswegs, daß eine Eingabe bei INPUT nur mit der Taste (Enter) zu beenden ist. In einer Eingabemaske soll zum Beispiel auch die Taste (Pfeil unten) die aktuelle Eingabe beenden (und den Cursor zum nächsten Feld der Maske bewegen).
Eine Eingaberoutine zum Einsatz in professionellen Programmen muß somit mindestens die folgenden Forderungen erfüllen:
+ Eingabe nur in einer definierten Eingabezone + Definition der zulässigen Zeichen + Definition der Zeichen, die die Eingabe abschließen
Kein Basic-Interpreter und auch keine Befehlserweiterung enthält Eingaberoutinen, die diesen Anforderungen voll genügen - im Gegensatz zu den hier vorgestellten Tools! Sie haben nun eine Vorstellung darüber, was die beiliegende Diskette enthält und kennen den Unterschied zwischen einer Befehlserweiterung und komplexen Werkzeugen. Ich wünsche Ihnen nun viel Erfolg beim Einsatz Ihrer neuen Hilfsmittel. Alle dazu nötigen Hinweise finden Sie auf den folgenden Seiten.