Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende Überarbeitung | |||
| book:de:bookde012 [2025/04/14 09:20] – [TOC] admin | book:de:bookde012 [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== C64 & C128 - Profitools ====== | ||
| - | |||
| - | [[http:// | ||
| - | |||
| - | ===== Verlag ===== | ||
| - | Markt& | ||
| - | |||
| - | ===== Autor ===== | ||
| - | Said Baloui | ||
| - | |||
| - | ===== Worum geht's ===== | ||
| - | 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, | ||
| - | »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, | ||
| - | 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, | ||
| - | liegenden 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: | ||
| - | Pull-down-Menüs | ||
| - | 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 Maschinen | ||
| - | sprache geschrieben werden muß. | ||
| - | |||
| - | Sortierroutinen | ||
| - | 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, | ||
| - | 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) = " | ||
| - | | E$(2) = " | ||
| - | | E$(3) = " | ||
| - | | E$(4) = " | ||
| - | ... | ||
| - | ... | ||
| - | |||
| - | Angenommen, Sie wollen die englischen Vokabeln alphabetisch sortieren. Dann darf keinesfalls die Beziehung zwischen den englischen und den deutschen Vokabeln verlorengehen, | ||
| - | Änderung im Array E$() muss im Array D$() nachvollzogen werden. Man sagt, D$(..) wird » mitsortiert«. | ||
| - | |||
| - | ^ ^ ^ | ||
| - | | E$(1) = " | ||
| - | | E$(2) = " | ||
| - | | E$(3) = " | ||
| - | | E$(4) = " | ||
| - | |||
| - | Die QUICKSORT-Routine ist unter anderem in der Lage, ein Array beliebigen Typs zu sortieren (String, Integer, Real) und ein zweites Array mitzusortieren, | ||
| - | |||
| - | Eingaberoutinen | ||
| - | 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, | ||
| - | Name: < | ||
| - | Strasse: < | ||
| - | PIz: < | ||
| - | 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, | ||
| - | |||
| - | ===== Medien ===== | ||
| - | |||
| - | ===== TOC ===== | ||
| - | |||
| - | **Vorwort** | ||
| - | **Teil 1: Benutzung der Utilities** | ||
| - | * 1 Inhalt der Diskette | ||
| - | * 2 Das Initialisierungsprogramm TOOLS.INIT | ||
| - | * 3 Aufruf der Utilities | ||
| - | * 4 Ständig aktive Utilities | ||
| - | **Teil 2: Referenzteil** | ||
| - | * 1 Pull-down-Menüs | ||
| - | * 1.1 BuffersInit - Windowpuffer initialisieren | ||
| - | * 1.2 PaintWindow - Window und Inhalt ausgeben | ||
| - | * 1.3 Windowing - Windowhintergrund retten/ | ||
| - | * 1.4 Invert - Ausschnitt invertieren/ | ||
| - | * 1.5 ControlMenü - Pull-down-Menüs verwalten | ||
| - | * 2 Floppy | ||
| - | * 2.1 FastSave - Array ganz/ | ||
| - | * 2.2 FastLoad - Gespeichertes Array laden | ||
| - | * 2.3 MemorySave - Speicherbereich speichern | ||
| - | * 2.4 MemoryLoad - Gespeicherten Bereich laden | ||
| - | * 2.5 Directory - Directory in Stringarray einlesen | ||
| - | * 3 Variablen | ||
| - | * 3.1 Blättern - Arrays »durchblättern« | ||
| - | * 3.2 FastGarbage - Schnelle Garbage Collection | ||
| - | * 3.3 SearchComand - Benutzerkommando überprüfen | ||
| - | * 3.4 SearchString - Stringarray durchsuchen | ||
| - | * 3.5 QuickSort - Sortierroutine | ||
| - | * 4 Bildschirm/ | ||
| - | * 4.1 Characterslnit - Deutschen Zeichensatz einschalten | ||
| - | * 4.2 FastScreenInit - Bildschirmausgaben beschleunigen | ||
| - | * 4.3 Input - Eingaberoutine | ||
| - | * 4.4 Makroslnit - Tastatur-Makros | ||
| - | * 4.5 Satzinfo - Indexanzeige | ||
| - | * 4.6 SetCursor - Cursor positionieren | ||
| - | * 4.7 Strout - Schnelle Stringausgabe (Masken) | ||
| - | * 5 Drucker | ||
| - | * 5.1 ParallelInit - Centronics-Schnittstelle initialisieren | ||
| - | * 5.2 SeriellInit - Serielle Schnittstelle initialisieren | ||
| - | * 6 Sonstiges | ||
| - | * 6.1 DevicePresent - Prüfen, ob Gerät betriebsbereit ist | ||
| - | * 6.2 Convert - Dateien konvertieren | ||
| - | **Anhang** | ||
| - | * A TOOLS.INIT im Detail | ||
| - | * B Geänderter Zeichensatz und ASCII-Codes | ||
| - | * C Speicherbelegung und die Einbindung von Assembler-Routinen | ||
| - | * D Manipulierte Vektoren | ||