MAMOS - Ein neuer Modula-Konkurrent

Bild 1: Eine spezielle Installationsdatei setzt die Parameter, die das System und die Shell steuern.

Mammuts sind laut Fremdwörter-DUDEN eine “ausgestorbene Elefantenart mit langhaarigem Pelz der Eiszeit mit 5m langen Stoßzähnen". Ob das Mammut Modula-2 System MAMOS aus der Schweiz eine Totgeburt aus vergangenen Zeiten oder ein Programmierpaket mit neuer Stoßkraft ist, soll dieser Test überprüfen.

MAMOS wird auf zwei Disketten und mit einem 250-seitigen Handbuch geliefert. Momentan muß das Paket noch direkt bei Mammut-Software in der Schweiz für DM 249.- bestellt werden.

Installation

Zur Installation brauchen lediglich alle Dateien auf die Festplatte kopiert zu werden. Bei Verwendung eines Diskettensystems reicht eine Kopie der Systemdiskette, die als Arbeitsdiskette weiterverwendet wird.

Eine spezielle Installationsdatei (Bild 1) setzt die Parameter, die das System und die Shell steuern. Diese Installationsdateien können übrigens geschachtelt werden, so daß man eine Datei mit speziellen Parametern für ein Projekt halten kann, das eine weitere mit allgemeinen Einstellungen nachlädt.

Wie andere Modula-Implementierungen stützt sich diese Konfigurierung auf eine Reihe von Variablen, die das System erkennt. Neben der Einstellung der Suchpfade für Dateien in PATH können z.B. in COMPOPT die Compiler-Optionen vor eingestellt werden.

Der Shell lassen sich über TOOL weitere Hilfsprogramms ins Menu schreiben; die in KEEP verzeichneten Systemprogramme hält die Shell resident, so daß das Compiler Modul nur einmalig vom Massenspeicher geladen werden muß.

Die Installation ist einfach und birgt keinerlei Fallstricke. Die Variable TOOL wird in der vorliegenden Version leider noch nicht beachtet.

Die Shell

Die Shell ist recht einfach gehalten und erinnert stark an LPR Modula (Bild 2). Die Menüs “Arbeit" und “Wahl" rufen die einzelnen Systemprogramme auf, entweder auf die Hauptdatei bezogen oder nach Auswahl per Fileselector.

Unter “Werkzeug" können weitere Objektmodule in die Shell eingebunden werden. Bei einer Neukonfiguration kann automatisch der Editor mit der Installationsdatei aufgerufen werden. Die Shell führt nach Verlassen des Editors erneut einen Installationsdurchgang aus, so daß sie nicht neu gestartet werden muß, wenn z.B. die Suchpfade zu ändern sind.

Insgesamt ist die Shell recht simpel und entspricht eher der Minimal-Shell von LPR, als daß sie mit den komplexeren Oberflächen von SPC oder Megamax mithalten könnte.

Editor

Als Editor verwendet MAMOS eine speziell angepaßte Lizenzversion von TEMPUS 1.1. Die Anpassungen sind in Bild 3 sichtbar: Die Funktionstasten sind mit Modula-Schlüsselwörtern belegt, und auch die Dateiauswahl verwendet die bei MAMOS vorkommenden Datei-Extensionen. (Übrigens sieht man hier auch, daß TEMPUS nur bis Laufwerk G: per Maus gesteuert werden kann.)

TEMPUS ist für seine Geschwindigkeit bekannt und für viele Anwender der Traum-Editor für Programme. Im Vergleich mit der Konkurrenz bietet MAMOS damit einen Editor, der den Neuentwicklungen der anderen Systeme mindestens ebenbürtig ist. Mich persönlich stört, daß TEMPUS nicht in der Lage ist, zwei Zeilen zu verbinden. Ein versehentliches Drücken von Return verlangt somit die Benutzung der Blockoperationen. MAMOS-Anwender erhalten übrigens beim Kauf von TEMPUS 2.0 bei CCD einen Preisnachlaß von 35 Prozent.

Bild 2: Die Shell von MAMOS-Modula 2

Compiler

Der 1-Pass-Compiler ist eine Portierung des bekannten ETH-Systems. Damit ist er sehr wahrscheinlich fehlerarm und implementiert den vollen Sprachumfang. Die Compileroptionen umfassen die üblichen Schalter z.B. für die Bereichs- und Überlauf Überprüfung. Den Fließkommaroutinen kann per Schalter eine Überprüfung auf NANs (Not A Number) nach IEEE-Spezifikation hinzugefügt werden.

SETs werden mit 16 Bits implementiert, Funktionen müssen Basistypen als Ergebnis haben. Die Daten- und Codegröße ist jeweils auf 32 Kilobyte pro Modul beschränkt, für das gesamte Programm gibt es keine Beschränkungen. Der Compiler arbeitet mit ausreichender Geschwindigkeit und entspricht somit den übrigen ETH Portierungen.

Benchmarks

Als siebtes Modula-System stellt sich MAMOS den von anderen Tests in der ST-Computer her bekannten Benchmarks. Dazu aber eine Vorbemerkung: Das mitgelieferte sogenannte “maximale” Laufzeitsystem ermöglicht das Arbeiten mit dem Debugger. Ein so gebundenes Programm versucht beim Programmstart, die entsprechenden Module des Debuggers automatisch nachzuladen. Damit eigneten sich die erzeugten Programme nicht mehr zur Zeitmessung unter Guläm.

Ich mußte daher auf ein Benchmark-Set zurückgreifen, das für die erste Version von SPC (damals noch ohne Linker) geschrieben wurde.

Die Zeiten sind mit dem 200Hz-Zähler des ST gemessen, indem vor und nach den eigentlichen Bench-Routinen jeweils dessen Stand gelesen und die Differenz als Laufzeit angezeigt wird. Damit hat MAMOS allerdings einen Vorteil, da sämtliche Statements zur Initialisierung des Laufzeitsystems nicht gemessen werden. Die Benchmarktabelle wird sobald wie möglich entsprechend korrigiert, bis dahin muß den MAMOS-Werten eine gewisse Zeitspanne hinzuaddiert werden. Ein Wert von 3 bis 5 Sekunden (wahrscheinlich verursacht z.B. durch die Speicheranforderungen bei GEMDOS) ergab sich bei SPC nach dem Umstieg auf die Guläm-Messungen: ein Wert, der sicher auch in etwa für MAMOS gelten wird. Die Ergebnisse sehen Sie in Bild 4. Es zeigt sich deutlich, daß MAMOS wie SPC und LPR vom Züricher ETH-Compiler von Nikolaus Wirth abstammen. Mit der oben angedeuteten Initialisierungszeit im Hinterkopf liegt die Geschwindigkeit der Compilate im üblichen Rahmen.

Auffällig sind die Zeiten der Tests 27a und 28, die beide auf Library-Module zugreifen. Es scheint, daß hier noch keine Optimierungen vorgenommen wurden und sie noch in reiner Hochsprache formuliert sind.

Benchmark 27 konnte nicht durchgeführt werden, da ein Fehler in der MathLibO auftrat: Der Versuch, exp(4.2) zu errechnen, endete mit einem arithmetischen Überlauf. Daraus läßt sich auf einen Fehler in der Routine schließen, denn die Konkurrenzsysteme liefern - auch bei unterschiedlich langen REALs - das korrekte Ergebnis 66.686 ohne Klagen ab.

Insgesamt liegt der Compiler also im Standard: unter den Systemen, die vom ETH-Compiler abstammen, lassen sich kaum noch gravierende Unterschiede feststellen.

Bibliotheken

In den Bibliotheken bemüht sich MAMOS um eine möglichst große Kompatibilität zum unter MS-DOS recht verbreiteten Logitech Modula-2 in der Version 3.0. Damit ergeben sich einige Anpassungen, insbesondere bei Filesystems, die teilweise auf spezielle MS-DOS-Features abstellen. Gegenüber Logitech sind die Bibliotheken auch teilweise wiederum an den ST angepaßt, z.B. bei der Behandlung der 68000-Interrupts.

Wieweit die Kompatibilität reicht, konnte leider nicht getestet werden. Der Versuch, sich bei den Bibliotheken an einen existierenden Marktstandard zu halten, ist jedoch erfreulich. Es scheint möglich. Programme mit Textfenstern einfach auf den ST zu portieren. Bei der anstehenden allgemeinen Normierung der Bibliotheken durch ISO und DIN wird MAMOS sich allerdings neu für eine Bibliotheksstruktur entscheiden müssen.

Die Standardbibliothek umfaßt zusätzliche Module für dynamische Zeichenketten, schnelle Byte-orientierte Operationen und lange SETs. Neben den bekannten AES- und VDI-Modulen sind “höhere” zur Event und Fensterverwaltung vorhanden. GraphicsWindows und Text-Windows lehnen sich an die Vorschläge von Wirth und die Logitech-Routinen an. Bei Textfenstern ist die Verwendung von Texteffekten einschließlich Invertierung möglich.

Die Bibliotheken sind in jeder Hinsicht ausreichend und komplett. Durch die Kompatibilität zum Logitech MS-DOS-System ist eine hohe Portabilität gegeben. Der bei den Benchmarks aufgetretene Fehler läßt allerdings vermuten, daß sich noch kleinere Bugs in den Modulen verstecken.

Bild 3: Eine angepaßte TEMPUS-Version ist als Editor beinhaltet.

Linker

Der Linker arbeitet im Moment noch nicht optimierend, eine Erweiterung, die allerdings geplant ist. Sehr komfortabel ist die Auswahl des gewünschten Laufzeitsystems. Man hat die Auswahl zwischen “Maximal" und “Minimal", was den Debugger-Aufruf an- und abschaltet. Für die Behandlung von Fließkommazahlen gibt es drei Möglichkeiten: normale Software-Routinen für die Arithmetik, Einsatz des Coprozessors 68881 oder Weglassen der Fließkommaroutinen. Überhaupt wird der Coprozessor intelligent unterstützt. Beim Erstellen eines Stand-Alone-Programms mit gewählter 68881-Option sucht der Linker zunächst nach einem Modul mit der Endung .FPU, das gegebenenfalls auch Coprozessor-Opcodes enthält. Ist ein solches nicht vorhanden, wird das übliche .OBM Modul gelinkt. Damit lassen sich sehr einfach spezielle Programm Versionen für Systeme mit 68881 erstellen, ohne am Quelltext zu manipulieren.

Allerdings haben die geschilderten Möglichkeiten im vorliegenden Paket, Ver sion 1.3, noch einen großen Haken: Sie sind noch nicht vollständig implementiert. Konkret heißt das. daß lediglich die maximalen Laufzeitsysteme mit und ohne 68881-Unterstützung vorhanden sind Es fehlen alle minimalen Laufzeitsysteme und das Rumpfsystem ohne Fließkommazahlenunterstützung.

Die geplante Realisierung des Linkers ist - insbesondere, was die Coprozessorunterstützung angeht - recht leistungsfähig. Ohne Optimierung und angesichts der unvollständigen Implementierung kann er gegenüber den Konkurrenzprodukten jedoch noch nicht überzeugen.

Handbuch

Das 250seitige deutschsprachige Handbuch ist bei MAMOS leider nicht besonders gut geraten. Es macht den Eindruck, mit heißer Nadel gestrickt zu sein, mal werden Umlaute benutzt, mal steht ein simples “Oeffnen". Einige Rechtschreibfehler lassen darauf schließen, daß keine Korrektur erfolgte; an einer Stelle sind Werte sogar handschriftlich nachgetragen worden.

Doch der wichtigste Nachteil ist, daß das Handbuch nicht komplett ist. Nach einer bestimmten Einarbeitungszeit benötigt man beim Programmieren übersichtliche und einfach zugängliche Listings der mitgelieferten externen Module. Ein solcher Anhang macht bei anderen Modula-Systemen oftmals den Großteil des Handbuchs aus. Nicht so bei MAMOS: Im Handbuch findet sich nur eine kurze Beschreibung der Funktionalität der Module, die praktisch wertlos ist (Beispiel zum Modul ResourceHandler: “Operationen, um Resourcen zu laden.").

Vor der wirklichen Arbeit mit MAMOS muß man also zum Druckerschalter greifen und dann mühselig die fast 160 Seiten der Definitionsmodule von Diskette ausdrucken. Als Ergebnis hat man einen Stapel im DIN A4-Format, der umständlich zu handhaben ist. Unbedingt muß ein Anhang mit einem Abdruck der Definitionsmodule in das Handbuch, sein momentanes Fehlen schränkt die Brauchbarkeit extrem ein.

RT Modula-2 Benchmarks

Nr. Jefferson Softwave LPR MAMOS V1.3 TDI V3.0 Megamax SPC V1.41 testet ..
1 0:07 0:07 0:07 0:04 0:05 0:05 0:02 Prozeduraufruf
2 1:42 1:33 2:59 1:35 1:31 1:31 1:27 Addition
3 1:21 1:18 1:58 1:20 1:16 1:16 1:12 Increment
4 1:47 1:38 2:59 1:40 1:36 1:36 1:32 Additionsoptimierung
5 1:27 1:23 2:08 1:25 1:21 1:22 1:17 Increment als Vergleich
6 2:09 1:57 3:48 2:01 1:55 1:55 1:52 INTEGER-Addition
7 2:09 1:57 3:48 2:01 1:55 1:55 1:52 CARDINAL-Addition
8 1:11 1:18 1:42 1:05 1:15 1:16 1:12 FOR-Schleife
9 1:21 1:02 1:42 1:05 1:00 1:00 0:56 REPEAT-Schleife
10 1:21 1:18 1:57 1:20 1:15 1:15 1:12 WHILE-Schleife
11 1:04 0:54 1:15 0:38 051 0:53 0:48 INTEGER-Parameter
12 1:04 0:54 1:17 0:38 0:51 0:53 0:48 INTEGER VAR-Parameter
13 1:06 0:59 2:19 0:33 0:57 0:57 0:53 RECORD-Parameter
14 0:34 0:30 0:41 0:20 0:28 0:28 0:24 RECORD VAR-Parameter
15 0:49 0:49 1:33 0:42 0:46 0:47 0:43 Konstanten-Optimierung
16 0:51 0:51 1:33 0:44 0:49 0:49 0:45 Konstanten-Optimierung
17 1:28 1:26 2:06 1:19 1:23 1:24 1:20 Expression- Optimierung
18 1:42 1:22 1:59 1:15 1:19 1:20 1:16 Expression-Optimierung
19 0:37 0:36 0:55 0:30 0:33 0:34 0:29 Zwischenergebnis-Optimierung
20 0:37 0:35 0:55 0:30 0:33 0:34 0:29 Zwischenergebnis-Optimierung
21 0:09 0:11 0:13 0:09 0:08 0:09 0:05 IF-Statement
22 0:13 0:13 0:16 0:11 0:11 0:12 0:07 IF durch CASE ausgedrückt
23 0:38 0:33 0:41 0:28 0:30 0:31 0:27 CASE-Statement
24 0:40 0:39 1:03 0:38 0:36 0:36 0:33 CASE durch IF ausgedrückt
25 0:47 1:03 2:09 0:49 0:48 0:42 REAL-Arithmetik
26 2:05 1:32 2:18 2:07 2:00 1:58 LONG REAL-Arithmetik
27 1:52 5:42 3:51 3:16 REAL-Library
27a 539 2:35 35:40 3:33 16:13 LONGREAL-Library
28 1:21 1:21 0:40 0:30 0:51 2:20 String-Library
29 2:10 2:07 2:13 1:48 1:44 2:04 2:01 ARRAY-Zugriffe
30 0:09 0:10 0:17 0:19 0:08 0:08 0:04 RECORD-Zugriffe

Alle Zeiten mit time-Kommando von Guläm gemessen
MAMOS 1.3 mit 200Hz System-Timer gemessen Meßgenauigkeit bis zu ±0.5 Sekunden
Angabe "-": Sinnlos bzw. keine Bibliotheken

Bild 4: Die Benchmarks
Bild 5: Ebenfalls mitgeliefert wird das RCS 2.1 von Digital Research

Besonderheiten

Dem Paket liegt erfreulicherweise ein Resource-Construction-Set bei; es handelt sich um das RCS von Digital Research in der Version 2.1 (Bild 5). Gegenüber der berüchtigten, bombenträchtigen ersten Version dieses Programms sind die Fehler beseitigt worden, und man hat ein leistungsstarkes RCS vorliegen, das im Komfort allerdings vom Kuma-RCS übertroffen wird.

Weiterhin sind ein Decoder zum Disassemblieren von Modulen und ein Inliner zum Einbinden von vorgefertigten Assembler-Routinen vorhanden. Ein Ordner enthält ein paar Public-Domain-Quellen mit eher informatikträchtigen Themen wie Balanced-Trees oder Fibonacci-Zahlen.

Ein Make-Programm ist zwar angekündigt und auch im Handbuch schon beschrieben, fehlte in dem Testexemplar aber noch. In der nächsten Version soll es nachgeliefert werden.

Fazit

MAMOS ist in der vorliegenden Version 1.3 noch nicht komplett. Es fehlen einige der beworbenen Features, das Handbuch muß dringend den angesprochenen Anhang erhalten, und auch die Libraries scheinen noch einige Optimierungen nötig zu haben. Wer das spezielle Problem der Übertragung von Quellen unter MS-DOS mit Logitech Modula hat, ist mit MAMOS gut bedient.

Dennoch: Auch wenn das mitgelieferte DR-RCS und TEMPUS das Paket aufwerten, kann es die Konkurrenz in der jetzigen Form nicht ausstechen. Wahrscheinlich wird sich in den nächsten Versionen noch einiges ändern, momentan aber gibt es bessere Modula-Systeme.

RT

Bezugsadresse:

Mammut Software Condrau & Brunner
Pfruendhofstr 23
CH-8910 Assoltern/Albis



Aus: ST-Computer 07 / 1989, Seite 67

Links

Copyright-Bestimmungen: siehe Über diese Seite