GFA-Assembler: Ein leistungsfähiges Entwicklungssystem?

Ich muß gestehen, ich war etwas aufgeregt, als ich zum ersten Mal den GFA-Assembler ins Laufwerk geschoben habe. Nach vielen Vorschußlorbeeren mußte er jetzt beweisen, was er "drauf’ hat. Die Größe der gelieferten Programme hat mich, als alten Seka-User, doch sehr erstaunt. Wozu einen Assembler mit knapp 150 KB (der Seka hat 20 KB)? Ach, wozu lange grübeln, lassen wir die 150K arbeiten.

Der Editor

Mit dem Editor im Paket ist GFA ein großer Wurf gelungen. Die ersten Gehversuche gestalten sich sehr einfach, da sich die Bedienung an den sonst von mir benutzten Editor anlehnt. Nur vom GEM ist nichts zu sehen (kommt noch). Der Editor ist in eine GFA eigene Pseudo-GEM-Umgebung eingebunden.

Lädt man. wie üblich, den Assembler, ohne zuvor das Handbuch studiert zu haben, wird die Überraschung groß sein. Es stehen alle, ja alle (die GEM-Fileselektorbox ist optional wählbar) Dateien mit der Endung “.is” übersichtlich auf dem Bildschirm. IS ist die Endung für tokenisierten Assemblerquelltext. Wer jetzt denkt, er müsse zu tippen anfangen, um den gewünschten Text laden zu können, der irrt. Fährt man die Maus wie wild über den Bildschirm, drückt dabei wahllos auf die Maustasten, wird man schnell bemerken. daß dem nicht so ist. Hat man also den ersten Schreck überwunden und schaut sich die Umgebung etwas genauer -n. erkennt das “geschulte” Auge Lauf-Merkzeichen und ein Eingabefeld. Hat man nun geschafft, eine Datei einzulesen (Doppelklick auf den betreffenden Namen), möchte man auch durch den Text scrollen. Aber wie? Scrollbalken sind nicht zu sehen. Berührt, bei wiederum wahllosen Mausbewegungen, der Mauszeiger den unteren Bildrand, bewegt sich der Text in atemberaubender Geschwindigkeit nach oben. Spätestens hier möchte

ich zu einem ersten Blick ins Handbuch raten, zumal auch die GEM-Menüleiste vermißt wird. Dort, wo man sie vermuten könnte, ist eine Statuszeile zu sehen, die alle nötigen Textinformationen des gerade aktuellen Textes enthält. Im Handbuch - was heißt Handbuch, es wird ein stabiler Schuber mit Ringbuchordner geliefert - erfährt man, welche Funktionen sich hinter den einzelnen Symbolen verstecken, und zu welchen Tätigkeiten sich der Editor mit Hilfe der Maus überreden läßt.

Hier wird auch die rechte Maustaste massiv unterstützt. Nachdem die ersten Seiten gelesen sind, wissen Sie schon, daß auf geliebte Funktionen anderer Programmeditoren nicht verzichtet werden muß.

Wie die vorhin vermißte Menüzeile doch sichtbar wird, soll hier als Beispiel für komplexe Bedienmöglichkeiten angeführt werden. Um die Menüzeile zu aktivieren, sind im Handbuch vier Möglichkeiten beschrieben.

Wird das automatische Scrollen bei Erreichen der Bildschirmgrenzen abgeschaltet (je nach Gefallen kann der Editor eine persönliche Note des Bedieners erfahren), erscheint, statt der fliegenden Textausgabe, die Menüzeile. Ansonsten genügt ein Druck auf die rechte Maustaste, der Escapetaste oder das Anklicken des Escapepfeiles (er heißt so, weil er dieselbe Funktion wie die Esc-Taste hat) in der Statuszeile mit der Maus.

Bild 1: Es lassen sich zwei verschiedene Texte gleichzeitig darstellen.

Ist nun die Menüleiste aktiv, und werden die einzelnen Drop Down Menüs heruntergeklappt, sind neben altvertrauten, liebgewonnenen Einträgen ganz neue zu sehen, die Sie mit der Zeit aber auch nicht mehr missen wollen. Ein Blick ins Handbuch verrät die Funktion der unbekannten Menüeinträge. Gleich der erste Eintrag in der Menübox, genannt Status, sorgt für freudige Überraschung. Es können beliebig viele Texte im Speicher gehalten werden, wovon allerdings maximal zwei gleichzeitig nebeneinander dargestellt werden können. Alle geladenen Texte werden mit Merkmalen wie “Assemblertext” oder “geändert und noch nicht gesichert” aufgelistet. Da schon gespeichert ist, welcher Text verändert wurde, ist es möglich, alle bzw. nur die veränderten Texte zu sichern. Dabei wird vom System die Diskette verlangt, von der die Datei ursprünglich geladen wurde. Es kommt also unter Umständen vor, daß zu einem Diskettenwechsel aufgefordert wird (geben Sie in Zukunft Ihren Disketten hübsche Namen, die Sie ihnen später auch wieder zuordnen können). Eine Liste aller im Speicher gehaltenen Texte kann ebenfalls abgespeichert werden, wodurch das automatische Laden genau dieser beim nächsten Systemstart möglich ist. Sollten Sie mit Ihrem Assembler nicht nur kleine Routinen programmieren, werden Sie diese Tatsache mit der Zeit bestimmt zu schätzen wissen. Oder wie wäre es mit Makros auf den einzelnen Tasten? Also, eine Taste in Kombination mit einer oder mehreren Sondertasten drücken, und der Bildschirm füllt sich. Wär’ das nichts? Mit diesem Editor kein Problem, nur kann dann nicht mehr auf andere Steuersequenzen, bis auf die des Cursorblocks, zugegriffen werden. Sie sehen, je nach Anwendung ist der Editor dem eigenen Geschmack anzupassen.

Wird ein langes, absturzträchtiges Programm entwickelt, wird man das optional einstellbare, automatische Backup nach kurzer Zeit nicht mehr missen wollen.

Block- und Suchoperationen sind alle von anderen Textsystemen bekannten über die Menüliste zu erreichen,wobei die Dialogboxen bei den Suchfunktionen denen von Tempus weitgehend entsprechen. Die Druckeranpassung, man höre und staune, erfolgt mit Hilfe von .CFG-Dateien. CFG-Dateien sind Druckeranpassungen, die von Ist-Word benutzt werden. Sind also für Ist-Word, in mühseliger Kleinarbeit, alle Sonderzeichen des ST auf Ihren Drucker per Graphik angepaßt, kann der GFA-Assembler diese auch aufs Papier bringen.

Der Druckertreiber beherrscht noch viele brauchbare Sonderfunktionen. So ist der Druck nur der (un)geraden Seiten möglich, die Installation eines Buffers mit veränderlicher Größe stellt keine Schwierigkeit dar, oder die Möglichkeit, mehrere Spalten (ja, Sie haben richtig gehört) auf ein Blatt, mit oder ohne Zeilennummern zu drucken, kann die Arbeit doch sehr erleichtern und Papier sparen. Assemblerprogramme ohne Kommentare können so übersichtlich auf einen 80-Zeichendrucker in zwei Spalten, auf breiteren vielleicht sogar drei- oder vierspaltig ausgedruckt werden.

Bild 2: Die Anzahl der geladenen Texte ist nur durch den Speicher begrenzt.

Der Assembler

Soll ein Quelltext übersetzt werden, stehen fast alle Möglichkeiten zur Verfügung, die auch Hochsprachencompiler bieten. Da wären ein Linker, der verschiedene Optionen kennt, Libraryverwaltung (es werden allerdings keine Module mitgeliefert) und natürlich der Compiler, hier der Assembler.

Der Übersetzungsvorgang, Quelltexte in Maschinensprache, kann einfach aufgerufen werden. Dabei wird ein ausführbares Programm generiert und sofort auf Massenspeicher gesichert. Erzeugung eines linkbaren Objektfiles ist optional möglich, wobei wie auch an erzeugte Programme eine Symboltabelle mit allen oder nur global definierten Symbolen angehängt werden kann (worüber sich der Debugger besonders freut).

Hat man ein Programm erfolgreich ohne Fehlermeldungen übersetzt, startet man den Assembler noch einmal, um den Programmcode zu optimieren. Es ist möglich, lange in kurze Sprünge ändern zu lassen, einen PC-relativen Code zu erzeugen, lange Adressierung in kurze umzuändern, auch “q” wird, wenn möglich und gewünscht, an Mnemonics angehängt. Also, ein durchaus zu gebrauchendes Werkzeug.

Zum Linker ist noch zu erwähnen, daß er DR-Code versteht, womit Libraries von vielen Compilern eingebunden werden können.

Haben Sie bisher, wie ich, mit dem Assembler von Seka gearbeitet, läßt sich einfach im Editor .blk in .ds bzw. .dcb umändem, womit sich diese Quelltexte in ein übliches Objektformat übertragen lassen. Sie brauchen also nicht die langjährig gesammelten Module zu löschen oder in langwieriger Arbeit umzuschreiben, sondern können dort weitermachen, wo mit anderen Assemblern aufgehört wurde.

Der umgekehrte Weg, von GFA zu Seka, ist nicht so einfach. Der Seka ist halt nicht so flexibel wie der hier getestete.

Bild 3: Der GFA-Assembler verfügt über eine Pseuedo-GEM-Menüleiste.

Der Debugger

Der Debugger wird zweimal geliefert. Er kann wie jedes Programm geladen oder resistent im Speicher gehalten werden. Ist er fest im Speicher, kann ihn der Assembler direkt aufrufen. Ansonsten muß er bei Aufruf nachgeladen werden.

Mit ihm sind komfortable Programmtests möglich. Wird ein Programm mit angehängter Symboltabelle geladen, ordnet der Debugger jedem Label den zugehörigen Namen zu. Um sich auch über nicht selbstgeschriebene Programme einen genauen Überblick verschaffen zu können, ist die Ausgabe der reassemblierten Programmtexte auf Bildschirm und Datei möglich. Wenn also in einem gekauften Programm eine bestimmte Prozedur gefällt und man wissen möchte, wie diese programmiert ist, kann gemütlich nach ihr gesucht werden. Um diese Suche zu erleichtern, kann nach bestimmten Mnemonics, Mnemonicteilen, Adressen oder Zeichenketten gesucht werden.

Soll ein Programm ausgetestet werden, stehen verschiedene Einzelschrittmodi mit oder ohne Registerausgabe (wobei auch die letzten Wörter auf dem Stack angezeigt werden), Ausführung von Unterprogrammen sowie das Starten des Programmes an einer angegebenen Adresse mit Unterbrechung bei Erreichen von Breakpoints zur Verfügung. Neben Abbruch am Breakpoint kann ein Programm bei Aufruf einer über einen beliebigen Trap erreichbaren Funktion, gestoppt werden. Damit nicht genug. Es können richtige Abbruchprogramme geschrieben werden. Etwa: Stopp, wenn in Speicherzelle x der Wert y steht; natürlich in einer etwas anderen Form.

Die Speicherdump-, Verschiebe- und Füllfunktionen sollen nicht näher aufgeführt werden.

Als Besonderheiten seien hier noch der bildschirmorientierte Editor, bei Debuggern durchaus nicht üblich, und die Befehle zum Einlesen und Manipulieren von ASCII- oder sonstigen Dateien erwähnt. Sollen es keine Dateien sein, können auch aufeinanderfolgende Sektoren in den Speicher gelesen werden. Möglich ist auch das Verfolgen einer Datei auf Floppy. Bei Eingabe eines Cluster erfolgt die Suche entweder zum Dateianfang oder Ende.

Soweit zu den Ausführungen, die im Handbuch beschrieben sind. Beim Test einiger Kommandos (alle habe ich in der kurzen Zeit nicht geschafft) konnte der Debugger allerdings nicht das Versprochene halten. Manche Befehle funktionieren vom Handbuch abweichend, andere gar nicht. Vor allem, wenn ein Speichermedium angesprochen wird, gerät der Debugger ins Stolpern. Ein Update wird wohl demnächst ausgeliefert.

Um einem Programm bei der Arbeit zuzuschauen, reicht die zur Verfügung stehende Version allemal.

Bild 4: Suchen und Ersetzen ist stark an Tempus angelehnt.

Fazit

Der Assembler mit integriertem Editor, Linker und Archiv Verwaltung konnte voll befriedigen. Wird der Debugger nicht unbedingt sofort gebraucht, kann ich dieses Entwicklungssystem (Preis: DM 149,-) voll empfehlen und versprechen, daß Sie von der Arbeitsgeschwindigkeit von Editor und Assembler und damit von der schnellen Programmentwicklung begeistert sein werden.

ws

Bezugsadresse:
GFA Systemtechnik Heerdter Sandberg 30 4000 Düsseldorf 11



Aus: ST-Computer 11 / 1988, Seite 47

Links

Copyright-Bestimmungen: siehe Über diese Seite