Agnus 1.14, eine C++-Entwicklungsumgebung

C++ ist heute zum Standard auf allen Computern geworden. Auf ATARI-Computern derzeit einzig verfügbar ist GNU-C++. AGNUS, von Volker Hemsen, ist das dazu noch benötigte Entwicklungssystem.

GNU-C++ wird von Universitäten und Hochschulen der ganzen Welt kostenlos entwickelt. Es ist Public Domain, dessen ungeachtet aber von vorzüglicher Qualität. Was fehlt, ist eine Shell oder gar eine Entwicklungsumgebung.

Denn um GNU-C++ auf alle erdenklichen Computer portieren zu können, ließ man die graphische Oberfläche weg. So muß sich auf jedem Computer ein Entwickler finden, der die zur Handhabung erforderliche Shell oder Entwicklungsumgebung erstellt. Eine derartige Shell ist z. B. die GNU-Shell von Roland Schäuble. Sie verwendet Projekte im Stile von Pure-C und erleichtert von daher den Einstieg ganz erheblich. Aber einen integrierten Editor enthält nur AGNUS. Dank ebenfalls integrierter Fehlerbehandlung, sowohl in einem eigenen Ausgabefenster als auch in den Textfenstern des integrierten Editors, kann man hier wirklich von einer Entwicklungsumgebung sprechen. Sollten noch weitergehende Wünsche nach Tools wie Debuggern, Syntax-Checkern oder dergleichen bestehen, so können diese über eine leistungsfähige Schnittstelle als externe Programme aufgerufen werden.

Lauffähigkeit

AGNUS ist sauber und resourcenschonend programmiert und dürfte wohl auch auf altgedienten ATARIs klaglos zurechtkommen. Privat läuft AGNUS bei mir auf einem gut ausgerüsteten Falcon mit PowerUP bei 32 MHz, der MAGNUM-FastRAM-Card mit 8 MB, BlowUP mit 1000* 800 Pixel und 16 Farben auf einem 17"-Monitor unter MagiC, wobei auch 2 oder 256 Farben möglich sind. An der FH-München ist AGNUS auf einem TT mit 19"-s/w-Monitor installiert und dient dort der Demonstration der Portabilität von C++. Auf zwei nebeneinanderstehenden Monitoren werden die Beispiele meiner C++-Vorlesung unter VisualC++ auf einem PC und GNU-C++ auf einem TT vorgeführt. Vergangenes Jahr konnte ich AGNUS auf einem Hades060 testen, der dankenswerterweise von der Firma MW-Electronic zur Präsentation auf dem „2. Internationalen Forschungs-Forum Bayern 97“ zur Verfügung gestellt wurde. Auf diesem System lief AGNUS unter Geneva. „ST-Computer & ATARI-Inside“ berichtete in Ausgabe 7/97 darüber. Nach Auskunft des Autors von AGNUS ist die Lauffähigkeit unter N.AES gegeben. Tests unter N.AES werden in Kürze auf einem Milan040 folgen. Ihn konnte ich übrigens bereits auf der diesjährigen Musikmesse in Frankfurt mit meinem Musikprogramm Music-Edit erfolgreich antesten. Er machte dabei einen so stabilen und kompatiblen Eindruck, dass auch bezüglich AGNUS Zuversicht angebracht ist.

Installation

Sie geht gewohnt einfach vonstatten. Auf einer HD-Diskette befindet sich ein Ordner, den man einfach auf die Festplatte kopieren kann. In ihm befinden sich noch weitere Ordner, die man nicht unbedingt braucht. Einer dieser Ordner heißt SRC und enthält diverse weitere Ordner mit interessante Quellcodes. Einer dieser Ordner heißt TEST und enthält einen einfachen Quelltext mit dazugehörigen Projektdateien mit der Endung *.APJ für die ersten Tests mit AGNUS.

Pfade und Environment

AGNUS enthält einen komfortablen Dialog, um die sogenannten Umgebungsvariablen einzustellen. Dadurch wird es möglich, die gesamte Entwicklungsumgebung gemäß der eigenen Arbeitsweise oder nach den Platzverhältnissen seines Systems einzustellen.

Auf den meisten GNU-CDs befindet sich ein Ordner USR und in diesem ein weiterer namens LOCAL. Dies ist eine für UNIX bzw. LINUX oder MINT gedachte Anordnung. Unter MagiC braucht man sich daran nicht zu halten. Vorteilhaft ist auf jeden Fall ein Betriebssystem, das lange Dateinamen unterstützt. AGNUS tut dies ebenfalls, und so hat man keine Probleme mit den langen Dateinamen, die in GNU-C++ vorkommen. Auf der CD "SDK Upgrade 97" von Softwareservice Seidel wurde einfach ein Ordner GCC272ST für alle ATARIs mit 68000er Prozessor und GCC272TT für alle ATARIs und ATARI-Kompatiblen mit Prozessoren ab 68030 und höher angeordnet. Für meinen Falcon habe ich letzteren Ordner einfach samt Inhalt auf die Festplatte kopiert. Die darin enthaltenen Ordner BIN, INCLUDE und LIB können beibehalten werden. Nun müssen die Pfade entsprechend eingestellt werden, damit GCC auch alle darin enthaltenen Dateien findet.

Dialog für Pfade und Environment

Dies geschieht in AGNUS sehr komfortabel in dem Dialog "Pfade & Environment", den man im Menü System aufrufen kann. Die Zeile "temporäre Dateien" ermöglicht die Eingabe des Pfades für einen Ordner, in dem GCC Dateien nur zeitweise ablegt, die bei erfolgreicher Compilation gleich wieder gelöscht werden. Dazu wurde im Ordner GCC272TT auf dem Laufwerk E ein eigener Ordner TMP eingerichtet. Klickt man den Pfeil neben der Eingabezeile an (ein Doppelklick auf die Eingabezeile bewirkt dasselbe, auch Handeingabe wäre möglich), so erscheint die Dateiauswahlbox, in welcher man sich bis in den betreffenden Ordner klickt. Verlässt man die Dateiauswahlbox mit OK, so wird der bis dahin angeklickte Pfad in die obige Eingabezeile übernommen.

So verfährt man mit allen folgenden Eingabezeilen. In der Zeile "GNU-C-Pre-fix" wird der Pfad zum Ordner BIN angegeben, in dem sich die sog. Binaries, also die Binärdateien der verschiedenen Teil- und Hilfsprogramme von GCC befinden. Die Zeile "C-Includes" muß den Pfad zum Ordner INCLUDE enthalten, in dem sich die C-Header-Dateien befinden, die durch die Extension *.h gekennzeichnet sind. In der folgenden Zeile "C++lnclu-des" müßte die entsprechende Pfadangabe für einen Ordner erfolgen, der die C++Header-Da-teien enthält. Bei älteren Versionen war dies auch tatsächlich der Fall. Ab der aktuellen Version 2.7.2 müssen alle Header-Dateien in einem gemeinsamen INCLU-DE-Ordner untergebracht werden, weil sonst Aufrufe aus diesen heraus ihr Ziel nicht finden. Die oben beschriebenen Ordner GCC272ST und GCC272TT enthalten aus diesem Grunde jeweils nur einen INCLU DE-Ordner. In der Zeile "Bibliotheken" wird dann der Pfad zum Ordner LIB angegeben, in dem sich die Libraries, also die diversen Bibliotheken befinden. In der Zeile "Unixmode" lässt man die Angabe unverändert, so wie dies von UNIX her vorgegeben ist. In der Zeile "Environment" kann man Umgebungsvariablen angeben. Dies ist aber nicht unbedingt erforderlich. Auch die Zeile "Quellpfad" kann vorerst leer bleiben. Dies gilt auch für die Zeile "Ext. Editor", denn AGNUS enthält ja einen internen Editor, der durch seine Integration in die Entwicklungsumgebung so große Vorteile bietet, dass es sich kaum lohnt, einen externen zu benützen, selbst wenn dieser in seinem Funktionsumfang überlegen sein sollte. Die Zeile „HTML-Browser“ muß den Pfad, hier zu CAB, enthalten, wenn man mit AGNUS InterNet-Seiten erstellen möchte. Für mein Musikprogramm Music-Edit habe ich z. B. die Bedienungsanleitung komplett in HTML geschrieben. Die letzte Zeile „CPX-Server“ enthält den Pfad zum Control-Accessory, hier das neuere COPS.ACC.

Am rechten Dialogrand befinden sich je zwei Einstellknöpfe für die Compilerversion. Bei der aktuellen Version 2.7.2 muß auch PL38 angeklickt werden. Darunter befinden sich Einstellknöpfe für die gebräuchlichen Übergabeprotokolle. All diese Einstellungen können gesichert werden. Sie werden beim Programmstart automatisch geladen. In der Zeile „Einstellung“ kann man über ein kleines PopUp-Menu drei derartige Einstellungen anlegen und zwischen ihnen umschalten.

Parameter für GNU und Shell

Den Dialog „Parameter für GNU & Shell“ kann man im Menü System aufrufen. In seiner obersten Zeile lässt sich angeben, ob die Projektdatei immer gesichert wird, gemeint ist beim Verlassen von AGNUS. Diese Zeile sollte deaktiviert werden, wenn man zwischenzeitlich etwas ausprobieren möchte. In den meisten Fällen aber ist ihre Aktivierung durchaus nützlich. Mit der Zeile „am GEMDOS lauschen“ kann AGNUS auf ATARI-typische Weise den Zustand der Quelltextdateien eines Projektes ermitteln. Auf meinen Wunsch hin wurde dankenswerterweise die hier übliche Abfrage der Dateizeit eingebaut. Sofern AGNUS alle Abhängigkeiten bekannt sind, dazu gibt es eigene Abfragemöglichkeiten, werden mit großer Sicherheit nur die geänderten Module neu compiliert. Dies ist bei dem enormen Rechenleistungsbedarf von GCC eine sehr wichtige Funktion. So dauert die vollständige Neucompilation des Quellcodes meines Musikprogrammes MusicEdit, von derzeit fast l MB, auf meinem gut ausgerüsteten Falcon ziemlich genau eine Stunde. Da ist man schon froh, wenn nur die geänderten Module neu compiliert werden und dies dann in einigen Minuten erledigt ist.

In der folgenden Zeile kann angegeben werden, dass die Extensionen der Quelltextdateien von Groß- in Kleinbuchstaben gewandelt werden. Dies benötigt GCC so und deshalb sollte diese Option immer aktiviert sein. Die Einstellung von „GNUs MiNT-Priorität“ bringt natürlich nur unter MiNT etwas. Die Zeile „GNU immer im Vordergrund“ sollte immer aktiviert sein. In Multitasking-Umgebungen bewirkt sie, dass der Großteil der Rechenleistung GCC zugewiesen wird. In MagiC ist beispielsweise der Vordergrund-Task etwa 70% der Rechenleistung zugewiesen, sofern man diese Einstellung nicht selbst verändert hat.

Die folgenden drei Einstellungen für die „TOS-Console im Multitasking“ sind für diejenigen, die sich erst in C++ einarbeiten wollen von erheblicher Bedeutung. Man tut gut daran, erst einmal die graphische Oberfläche wegzulassen und sich ausschließlich mit der C++Syntax zu beschäftigen. Auf den ATARIs und dazu Kompatiblen sind dies TOS-Programme. Unter ATARI-TOS wird dazu der Bildschirm automatisch gelöscht, und auf diesem blanken Bildschirm dann die Ausgaben derartiger Programme dargestellt. Unter Multitasking-Systemen wird die Ausgabe von TOS-Programmen in ein eigenes Fenster geleitet. Dazu ist ursprünglich die Zeile „AES-Schnittstelle“ eingerichtet worden. Leider war unter MagiC der dafür zuständige VT52-Emulator nicht zum Öffnen seines Fensters zu bewegen. Ich habe daher dem Autor von AGNUS vorgeschlagen, eine Lösung mit einem unsichtbaren Fenster hinzuzufügen, um einen blanken und dennoch Multitasking-konformen Bildschirm zu erhalten. In den Entwicklungsversionen meines Musikprogrammes MusicEdit verwende ich diese Lösung seit langem und weiß daher, dass sie auch unter MagiC problemlos funktioniert. Dieser Vorschlag ist in der Zeile „Vollbildschirm“ realisiert. Wird die Zeile „AV-Server“ aktiviert, so wird z. B. MAGXDESK als Server erkannt und dann tatsächlich der VT52-Emulator dazu gebracht, sein Fenster zu öffnen. Daß dabei die Ausgabe von C++Funktionen erst nach Drücken der Leertaste erscheint, liegt nicht an AGNUS, sondern an MagiC. Mehrfache Bitten um Abhilfe an Application Systems Heidelberg wurden bisher leider nicht erhört.

Parameter für Editor und Ausgabe

Diesen Dialog „Parameter für Editor & Ausgabe“ kann man ebenfalls im Menü System aufrufen. Darin ist sicher sinnvoll, die Zeile „Klammerabgleich zeigen“ zu aktivieren. Wenn ein Farbmonitor zur Verfügung steht, ist es sehr zu empfehlen, die Zeile „farbige Syntaxmarkierungen“ zu aktivieren. In der Zeile Farbe kann man dann in je einem Pop-Up-Menu den einzelnen Syntaxelementen jeweils eine Farbe seiner Wahl zuordnen. Sicher konnte man bisher auch ohne ein derartiges Feature gute Programme entwickeln. Aber aktuelle Editoren bieten dies nun einmal, und bald möchte man diese Annehmlichkeit nicht mehr missen. Auf jeden Fall lässt sich damit vortrefflich demonstrieren, dass AGNUS die aktuellen Standards bieten kann.

Die nächste Zeile "bevorzugte Zeilenenden" ist natürlich für TOS einzustellen. Leider bleiben die Bildschirmausgaben dennoch UNIX-like, d. h. es wird eine neue Zeile nur mit einem vertikalen Tabulator eröffnet. Ich be-helfe mir mit folgender bedingten Compiler-Anweisung:

#ifdef _GNUC_
#define endl "\v\r"
#endif

Diese Eigenart tritt erst ab der aktuellen GNU-Version 2.7.2 auf. Da bei Anfängern hierdurch sehr leicht der Eindruck entstehen kann, als ob das mühsam erstellte Programm nicht richtig funktionieren würde, sollte dies verbessert werden. Desweiteren können noch verschiedene Cursorarten und ASCII-Tabellen ausgewählt werden.

Arbeitsumgebung nach persönlichen Vorstellungen

Alle bisher beschriebenen Einstellungen können mit „Parameter sichern“ im Menü System gesichert werden. Aber es gibt noch mehr. Man kann in demselben Menü mit „Projekte“ einen gleichnamigen Dialog öffnen. Er ist in dem Screen-Shot am Anfang dieses Artikels am rechten Rand zu sehen. In ihm kann man durch Anklicken des Icons mit dem Plus das gewünschte Projekt laden. Das Symbol mit dem Minus ermöglicht das Gegenteil, nämlich nicht mehr benötigte Projekte aus dem Dialog zu entfernen.

Im Menü Projekt findet sich ein Eintrag Module zum Öffnen eines gleichnamigen Dialogs, in welchem sich alle Dateien eines Projekts mit der Endung *.c, *.cpp usw. darstellen lassen. Er ist ebenfalls im Screen-Shot am Anfang dieses Artikels in der rechten unteren Ecke zu sehen. Wurde ein schon geladenes Projekt markiert, so werden durch Anklicken des Schatztruhen-Icons alle Module dieses Projekts im Dialog aufgelistet. Wird ein Projekt neu erstellt, kann man im Module-Dialog über das Icon mit dem Plus alle zugehörigen Module dort eintragen. Das Icon mit dem Minus ermöglicht das Gegenteil, nämlich vorhandene, nicht zugehörige Einträge zu entfernen. Alle weiteren Einträge dieser beiden Dialoge sind vor allem für das Erstellen eines neuen Projekts von Bedeutung. Um den Rahmen dieses Artikels nicht zu sprengen, kann auf diese hier nicht näher eingegangen werden.

Erforderlich ist ferner ein Fenster für Ausgaben aller Art, die während eines Compilerlaufs anfallen. Dieses sog. „Ausgabefenster“ lässt sich im Menü System über den Eintrag Ausgabefenster aufrufen. Es ist ebenfalls im Screen-Shot »am Anfang dieses Artikels links unten zu erkennen. Auch diese weitergehenden Einstellungen lassen sich dauerhaft festhalten, und zwar entweder mit „Parameter sichern“ und teilweise auch mit „GUI-Einstellungen“ im Menü Diverses.

Generell lässt sich sagen, dass es mit AGNUS möglich ist, eine Arbeitsumgebung einzurichten, wie dies heute bei führenden C++Entwicklungsumgebungen der Fall ist. Dies ist ein erheblicher Vorteil für Programmierer, die ihre Brötchen nicht ausschließlich auf ihrem Lieblingscomputer verdienen können.

Ein fertiges Projekt testen

Im Ordner SRC auf der Lieferdisk befinden sich einige fertige Projekte. Im darin enthaltenen Ordner TEST sind je ein einfaches Testprogramm für C und C++ enthalten. Wie oben beschrieben werden die Projekte im Projekte-Dialog und die Quelltextdateien im Module-Dialog eingetragen. Markiert man einen der Dateinamen und klickt dann auf das Icon mit Papierstapel und Bleistift, so wird diese Datei in einem Editorfenster dargestellt. Ändert man nun etwas in diesem Textfenster, so wird umgehend dieser Dateiname im Module-Fenster gekennzeichnet. Klickt man anschließend auf das Icon mit dem Häkchen, wird die geänderte Quelltextdatei neu compiliert. Mit Hilfe des Startflaggen-lcons können Module auch dann neu compiliert werden, wenn sie nicht geändert wurden. Ist die Compilation zu Ende, kann man durch Anklicken des Programm-lcons, ganz rechts, das übersetzte Programm starten. Dieses Icon enthält übrigens bei GEM-Programmen einen „gem“, also einen Edelstein, bei TOS-Programmen bleibt es leer.

Eine Funktion, die ebenfalls auf meinen Wunsch hin implementiert wurde, findet sich im Menü Sprünge im Menüeintrag „suchen/ersetzen“. Im sich öffnenden Dialog kann „in allen Modulen suchen“ gewählt werden. Sucht man z. B. eine Variable, die in mehreren Modulen vorkommt, so wird die Datei des ersten Vorkommens genau an dieser Stelle in einem Editorfenster dargestellt. Sucht man weiter, folgt das nächste Vorkommen im nächsten Fenster usw. So kann man schließlich in den Fenstern von Vorkommen zu Vorkommen komfortabel blättern. Eine sehr originelle Realisierung dieser wichtigen Suchfunktion, insbesondere für große Projekte.

Ausgabefenster mit provozierter Fehlermeldung

Ebenfalls sehr gelungen ist die Art und Weise der Fehleranzeige, vor allem in Farbe. In dem dargestellten Hello-Beispiel wurde am Ende der cout-Zeile der Strichpunkt auskommentiert und dadurch ein Fehler provoziert. Versucht man nun, dieses Beispiel zu compilieren, so wird der Fehler im Ausgabefenster angezeigt, ggf. ein Textfenster geöffnet und in seiner Infozeile der Fehler ebenfalls angegeben. Der Cursor wird in der Zeile positioniert, in welcher der Fehler sich auswirkt und gleichzeitig auf dieser Höhe ein farbiger Punkt am linken Rand gezeichnet, dessen Farbe, wie schon beschrieben, einstellbar ist. Zwischen mehreren Fehlern kann sogar mit Tastenkombinationen hin und her gesprungen werden.

Es gäbe noch viele interessante und leistungsfähige Funktionen von AGNUS zu erwähnen. Darauf soll jedoch an dieser Stelle verzichtet werden, da viele Anwender jetzt schon in der Lage sein werden, allein weiterzumachen. Es bleibt festzuhalten, dass es erfreulicherweise in unserem Lande Entwickler gibt, die in der Lage und willens sind, ein derart mächtiges und gut bedienbares Entwicklungswerkzeug für GNU-C++ zu erstellen.

Übrigens: Wie aus sicherer Quelle zu erfahren war, wurde das TOS des neuen Milan mit GNU-C++ neu compiliert. Dann müßten sich ja GNU-C++ Programme auf dem Milan besonders wohl fühlen. Es tut sich was. Man darf gespannt sein.

Preis: DM 30,-

Bezugsquelle:
Dipl. Ing. (FH) Volker Hemsen
Gremskampstr. 3
D-23714 Bad Malente-Gremsmühlen


Herbert Walz
Aus: ST-Computer 05 / 1998, Seite 9

Links

Copyright-Bestimmungen: siehe Über diese Seite