|
|
29.03.2024 | Archiv # Recherche # Links # Kontakt # Gästebuch # Impressum |
Index Login Die Anzeige des Archivs erfolgt grafisch. Ändern |
Kurs: Programmieren (Teil 1)Endlich! Ein Assemblerkurs unter GEOS in der GUC!
Mit diesem Kurs wollen wir erreichen, daß der GEOS-Anwender seine Ideen in vernünftige GEOS-Programme umsetzen kann. Voraussetzung für diesen Kurs sind grundlegende Kenntnisse in Assembler, so daß nur noch in Ausnahmefällen spezielle Maschinensprachebefehle erklärt werden müssen. Sofern Sie noch keine Kenntnisse im Umgang mit Assemblern haben, können wir Ihnen aus dem Markt & Technik Verlag die Bücher
(1) GEOS-Programmierung mit dem MegaAssembler empfehlen, wobei allerdings nur (1) speziell auf GEOS eingeht. Zudem ist (1) sowohl für den Neuling, den Fortgeschrittenen und den GEOS-Profi einsetztbar, da dieses auch die Assemblerprogrammierung und die Programmierung von GEOS-Programmen ausführlich erklärt. Weiterhin dient es als Nachschlagewerk, da alle GEOS-Routinen und Systemadressen darin beschrieben werden. Als reines Nachschlagewerk kann auch Als Assembler für diesen Kurs werden wir ausschließlich den MegaAssembler benutzen, diesen erwerben Sie beim Kauf von (1) gleich mit. Sofern Sie den GeoProgrammer besitzen, können Sie diesen natürlich auch verwenden, jedoch müssen hier die Label etwas anders definiert werden. Mit großen Einschränkungen ist es auch möglich, mit dem Hypra-Ass aus (3) kleinere GEOS-Programme zu erstellen. Der Hypra-Ass läuft jedoch nur unter dem alten Betriebssystem, so daß zum Testen GEOS ständig neu gebootet werden muß! Der GeoProgrammer hat den Nachteil, daß mit ihm nur Programmblöcke mit einer maximalen Länge von ca. 6 KByte erzeugt werden können. Zudem ist seine Handhabung sehr umständlich, jede mit dem Assembler erstellte Datei muß nochmals gelinkt werden, damit daraus ein fertiges Programm entsteht. Der GeoProgrammer hat aber den Vorteil, daß ihm ein Debugger beiliegt, mit dem man seine Programme schrittweise austesten kann. Die Debuggerdateien sind aber so umfangreich, daß man nur schwerlich mit nur einem Diskettenlaufwerk auskommen wird. Der MegaAssembler kann theoretisch Programmblöcke von über 63 KByte erzeugen; für die Praxis bedeutet dies, daß der gesamte von GEOS zur Verfügung gestellte Bereich genutzt werden kann. Der MegaAssembler erstellt sofort lauffähige Programme, die vom MegaAssembler oder DeskTop aus direkt aufgerufen werden können. Den V-Link benötigen Sie nur, wenn Sie sogenannte Overlay-Programme (VLIR-Files) erstellen müssen, dazu in einem späteren Kursteil mehr. Der MegaAssembler enthält keinen Debugger, jedoch wird es mit einem in der GUP vorgestellten Programm möglich sein, eine für den GeoDebugger des GeoProgrammers lesbare Datei zu erzeugen. Sofern ein Programm nicht läuft, gibt es auch andere Testmöglichkeiten, die wir Ihnen ebenfalls innerhalb dieses Kurses zeigen werden. Jeder Kursteil wird nach Möglichkeit (Umfang) aus einem abgeschlossen Teilgebiet bestehen. Als Kursteile sind u.a. gedacht: Programmierung von: Sie sollten sich eine Arbeitsdiskette erstellen, die folgende Dateien bzw. Programme enthält: Bevor wir mit der eigentlichen Programmierung beginnen, sollten wir kurz einmal darauf eingehen, warum GEOS so attraktiv ist. Aus Sicht eines Anwenders ist diese Frage leicht zu beantworten: Zum einen deckt die GEOS-Produktreihe eine Vielzahl von Anwendungen ab, die man für seine tägliche Arbeit benötigt, zum anderen sind sich alle Anwendungen von der Bedienung her ähnlich! Auf diese Ähnlichkeit sollten wir besonders bei unseren selbstentwickelten Programmen auch achten (vgl. entsprechende Artikel bzgt. einer GEOS-Norm in der GUP). Der Großteil aller Anwendungen enthält z. B. ein Menü, in dem man sich fast immer ohne Anleitung zurechtfindet, da meist die ersten drei Menüpunkte gleiche Namen (geos, Datei, Edit) tragen und auch die Untermenüs alle ähnlich sind. Wählt man einen Menüpunkt an, wird entweder ein Untermenü darstellt oder eine Aktion hervorgerufen. Was aber macht nun ein GEOS-Programm, wenn kein Menüpunkt angewählt wird? Nichts!! Besser gesagt wartet es darauf, daß der Anwender etwas macht, z.B. die Tastatur bedient, einen Menüpunkt anwählt, etc. Diese Wartephilosophie sollten ebenfalls alle GEOS-Programme benutzen (Ausnahme: rechenintensive Programme wie z. B Assembler). Aus diesem Grund existiert im GEOS-Kernal die MainLoop. Im Normalfall sind alle Programme in die MainLoop (deutsch: Hauptschleife) eingebunden. Wird von DeskTop ein Programm gestartet, so sollte es so schnell wie möglich zur MainLoop zurückkehren und auf eine Anwenderaktion warten! In der MainLoop wird solange gewartet, bis der Anwender bspw. einen Menüpunkt anklickt. MainLoop ruft dann die zu diesem Menüpunkt entsprechende Routine direkt auf. Man braucht also keine Menüauswahlroutine zu schreiben, GEOS erledigt dies von alleine! Der erste Kursteil (in der folgenden GUP) wird Sie nun mit dem Starten eines Programms und dessen Rückkehr zur MainLoop vertraut machen. Im allgemeinen besteht ein Listing, wie wir es dann schreiben werden, aus:
Label stehen immer am Anfang einer Zeile und beginnen in der Regel mit einem Doppelpunkt ':' (Ausnahmen vgl. Buch (1)). Label sind entweder - Sprungmarken, die mittels jmp, jsr bzw. Branchbefehlen angesprungen werden können. Der MegaAssembler weist diesen Labeln den korrekten Wert zu. Label brauchen nicht gesetzt zu werden, sie können lokal, global oder extern definiert werden, näheres siehe Buch (1). "TopSym" sowie "MegaSym" sind komplette Dateien mit Label (Variablen mit festen Wertzuweisungen). Durch ein Leerzeichen oder Tabulator (<ctrl> + <i>) vom Anfang einer Zeile bzw. Label getrennt, folgt dann die Assembleranweisung. Eine Assembleranweisung kann ein direkt in Maschinensprache zu übersetzender Befehl (z. B. lda) oder ein Makro sein. Ein Makro ist eine Folge eines oder mehrerer Assembleranweisungen, so können mit einer Anweisung gleich mehrere Befehle ausgeführt werden. Beispielsweise benötigt man oft das Laden des Akkus mit einer Zahl und Abspeichern der Zahl in einer Adresse. Normalerweise müßte man dann jedesmal schreiben: Diese Kombination (lda; sta) läßt sich durch ein in der "TopMac" bzw. "MegaMac" definiertes Makro ersetzen. Dieses Makro heißt "LoadB". Anstelle der oberen beiden Zeilen schreibt man nun einfach: LoadB $6000,$20 ; Adresse $6000 mit dem Wert $20 laden Der MegaAssembler übersetzt dieses dann in die entsprechende lda-sta-Kombination. Die Verwendung von Makros machen den Quellcode einfacher lesbar und übersichtlicher.
H. J. Ciprina / R. Bonse
Kurzlink hierhin: http://geos-printarchiv.de/1109 |
Letzte Änderung am 01.11.2019 |