Mirage für den Atari ST: Ein Multiuser-/Multitasking-Betriebssystem

Das in England verbreitete Multiuser-/Multitasking-Betriebssystem MIRAGE ist nun auch für den ATARI ST erhältlich. Ursprünglich für Workstations entworfen, soll es nun den Luxus einer solchen auch für den einfachen Feld-, Wald- und Wiesen-Hacker bringen - zu einem Bruchteil der Kosten. Dieser Test zeigt, ob dies gelungen ist.

Geliefert wird MIRAGE in einem ROM-Modul mit dem eigentlichen Betriebssystem und einigen wichtigen Utilities. Eine Systemdiskette, eine Diskette mit Tastaturtreibern (u.a. für deutsche Umlaute) und zwei Handbücher vervollständigen das Ganze. Das dickere Handbuch ist eine allgemeine Einführung in MIRAGE und für die verschiedensten Computermodelle gültig. Am Anfang wird auf die grundlegenden Eigenschaften von MIRAGE eingegangen, im weiteren werden die Systemutilities in alphabetischer Reihenfolge ausführlich dargestellt. Es folgt die Beschreibung des Editors und schließlich werden die Terminalfunktionen aufgelistet. Das zweite, dünne Handbuch gibt spezielle Informationen zur Implementation auf dem ST. Beide Handbücher sind in gutem, verständlichem Englisch geschrieben. übersichtlich gegliedert und erfüllen ihren Zweck. Allerdings fehlt ein Schlagwortregister, somit ist die Einarbeitungsphase mühsam, da man ständig am Blättern ist. Abhilfe ist aber von der deutschen Vertriebsfirma in Aussicht gestellt: Eine deutsche Übersetzung mit Schlagwortregister befindet sich in Arbeit. Einzig der Systemprogrammierer ist enttäuscht darüber, daß die System-Aufrufe fehlen. Diese werden aber im Handbuch zum ALPS (Assembly Language Programming System) nachgeliefert. Da es - wie später noch genauer erläutert wird - sowieso empfehlenswert ist. sich dieses Softwarepaket zuzulegen, sollte dies nicht als allzu großer Nachteil gewertet werden, was die Dokumentation betrifft. Schließlich kann man ohne Assembler nicht so besonders viel mit den System-Aufrufen anfangen.

Booten unter GEM

Das ROM-Modul ist eingesteckt, die Systemdiskette eingelegt und schon kann es losgehen. Als erstes fragt MIRAGE höflich nach Datum und Uhrzeit - sofern man nicht glücklicher Besitzer eines MEGA-STs ist, bei dem beides automatisch von der Echtzeituhr eingelesen wird. Dann beginnt der eigentliche Bootvorgang, der natürlich - ähnlich wie beim TOS - durch eine AUTOBOOT.CMDF-Datei beeinflußt werden kann. Diese ASCII-Datei wird zeilenweise abgearbeitet, und mit ihrer Hilfe läßt sich das System den persönlichen Bedürfnissen anpassen. In Bild 1 sehen Sie zum Beispiel die AUTOBOOT.CMDF-Datei. die ich mir zusammengestellt habe.

Hat man das Booten glücklich hinter sich gebracht, landet man schließlich in der Shell. Mit GEMialitäten ist es nun vorbei, man hat ein schlichtes Textterminal vor sich. Aber auch hier gibt es einen Lichtschimmer am Horizont: Sahara Soft arbeitet bereits an einer Umsetzung von XWINDOWS für Mirage. Wann diese allerdings abgeschlossen ist, läßt sich noch nicht absehen. Vom Speicherplatzbedarf her scheint MIRAGE zunächst ziemlich genügsam zu sein - der vollständig in Assembler geschriebene MIRAGE-Kern belegt nur ca. 38K. Bei meiner Arbeit mit MIRAGE habe ich aber festgestellt, daß ein ST mit 1 MB freiem Speicher und einem doppelseitigen Diskettenlaufwerk wohl als Minimalkonfiguration gelten muß, wenn die ganzen kleinen Annehmlichkeiten wie RAM-Disk, Drucker-Spooler oder Cache-Speicher eingesetzt werden. Da außerdem viele Systemutilities diskresident sind, ist eine Festplatte oder zumindest ein zweites Diskettenlaufwerk erstrebenswert. Mit nur einem Laufwerk geht es auch, doch sollte man sich dann auf jede Arbeitsdiskette den Ordner mit den Systemutilities kopieren. Überhaupt muß ich sagen, daß eine Festplatte nicht allein wegen der größeren Kapazität wünschenswert ist, die Geschwindigkeit der Floppy war - offen gestanden - sehr mäßig. Vielleicht bin ich von Fastload verwöhnt, aber unter TOS kann mit der Diskette wesentlich fixer gearbeitet werden.

Bild 1: Beispiel einer AUTOBOOT.CMDF-Datei

MIRAGE-Utilities

Unter MIRAGE können Programme und Daten mit dem Kommando ‘SHARE’ dauerhaft in einem ‘shareable memorx' untergebracht werden. Der Zugriff auf solche im Hauptspeicher gehaltenen Programme oder Daten wird natürlich enorm beschleunigt. Ein weiterer Vorteil dieser Maßnahme ist, daß im Multiuserbetrieb solche Programme - sofern sie reentrant (=wiedereintrittsfähig) sind - von mehreren Usern oder Tasks gleichzeitig verwendet werden können, obwohl sie nur einmal im Speicher stehen. Nachteilig an dieser Vorgehensweise ist nur, daß einmal im Speicher verankerte Programme oder Daten dort bis zum nächsten System-Start bleiben. Eine Möglichkeit, sie mal eben so rauszuwerfen, wenn der Platz eng wird, gibt es nicht. Man sollte sich also gut überlegen, was man wirklich ständig braucht. Besitzer eines MEGA ST können da natürlich nur müde lächeln. Sinnvoll ist es zum Beispiel, den Editor, den | Pascal-Compiler und den Macro-Assembler im Hauptspeicher unterzubringen.

Von den über 100 Systemutilities sind 44 in der Shell fest eingebaut. Weitere 20 werden beim Booten aus dem ROM-Modul in das ‘shareable memory’ transferiert, so daß ungefähr 40 bis 50 von der Diskette oder Harddisk bei Bedarf nachgeladen werden müssen. Von der großen Anzahl an Systemutilities möchte ich nur einige wenige vorstellen: Besondere Bedeutung kommt natürlich dem mitgelieferten Editor zu, stellt er doch quasi das Herz eines jeden Programmentwicklungssystems dar. Zu MIRAGE wird ein Bildschirmeditor mitgeliefert (Bild 2), der in puncto Geschwindigkeit und Funktionsumfang eigentlich keine Wünsche offen läßt. Natürlich darf man keine Tempus-Umgebung mit Fenstern und Maus erwarten, denn, wie schon gesagt, sitzt man vor einem reinen Textterminal.

Bild 2: Menü des Editors

Aber der erfahrene Programmentwickler benutzt sowieso meistens CONTROL-Sequenzen. so daß man mit diesem Editor nach einer kurzen Einarbeitungsphase gut zurechtkommen dürfte. Vorteilhaft in diesem Sinne ist auch, daß man die Tastenbelegung beliebig ändern kann, zum Beispiel in Richtung Wordstar.

Mit FILECOMP und SEARCH existieren Mini-Textfilter, die es ermöglichen, zwei Dateien zu vergleichen oder eine bestimmte Zeichenkombination zu suchen. Mit LINES läßt sich die Zeilenanzahl einerText-Datei feststellen. Anzumerken ist noch, daß die Programmiersprachen Pascal, Fortran. Macro-Assembler und Basic ebenfalls wie Systemutilities behandelt werden. Man ruft sie also einfach mit dem Namen auf (Bild 3).

Bild 3: Aufruf des PASCAL-Compilers
# Benchmarks

Die im folgenden vorgestellten Benchmarks habe ich dem c't-Computermagazin 10/1987 entnommen. Damit wollte ich mir keineswegs nur Arbeit ersparen - eine Schleife, in der 1000mal irgendwas berechnet wird, könnte ich zur Not auch noch selber fabrizieren. Für den Leser bringt es aber einen großen Vorteil, wenn verschiedene Computer-Blätter dieselben Benchmarks verwenden. So kann man ohne weiteres die Leistung verschiedener Computer miteinander vergleichen, die in den unterschiedlichen Publikationen getestet wurden.

Die Benchmarks sind in PASCAL geschrieben, lassen sich aber leicht in gängige Sprachen (Fortran. Basic. C. Pearl....) übertragen. Es muß nur ein Timer vorhanden sein, um die Laufzeit messen zu können.

program HLbenchmark (input,output);
	var	h,m,s,ms,hold,mold,sold,msold: integer;
procedure inthmath; 
		var
		i,x,y: integer; 
	begin
		time (hold,mold,sold,msold); * spezifischer Befehl um die Zeit abzufragen * 
		x: = 0;
		y:= 3;
		writeln ('start'); 
		for i := 1 to 10000 do 
		begin
			x:= x+(y*y-y)div y
		end;
		writeln ( 'finish',x); 
		time (h,m,s,ms); 
		writeln (hold,mold,sold,msold); 
		writeln (h,m,s,ms); 
	end;
procedure realmath; 
	var
		i:	integer;
		x,y: single;	* Fließkomma - einfache Genauigkeit *
	begin
		time (hold, mold, sold, msold); 
		x:= 0.0; 
		y:= 9.9;
		writeln ('start'); 
		for i:= 1 to 10000 do 
		begin
			x:= x+(y*y-y)/y;
		end;
		writeln ('finish',x);
		time (h,m,s,ms);	writeln	(hold,mold,sold,msold);
		writeln (h,m, s,ms);
	end;
procedure triglog; 
	var
		i:	integer;
		x,y: single;
	begin
		time (hold,mold,sold,msold); 
		x:= 0.0; 
		y:= 9.9;
		writeln ('start'); 
		for i:= 1 to 1000 do 
		begin
			x:= x+sin(arctan(cos(ln(y)))); 
		end;
		writeln ('finish',x); 
		time (h,m,s,ms); 
		writeln (hold,mold,sold,msold); 
		writeln (h,m,s,ms); 
	end;
procedure store; 
	var
		i:	integer;
		y:	string[20];
		testfile:	text;
	begin
		time (hold,mold,sold,msold); 
		writeln ('start'); 
		y:= '1234567890qwertyuiop'; 
		assign (testfile, 'hltest.test'); 
		rewrite (testfile); 
		for i:= 1 to 1000 do
		begin
			write (testfile,y); 
		end;
		close (testfile); 
		erase (testfile); 
		writeln ('finish); 
		time (h,m,s,ms); 
		writeln (hold,mold,sold,msold); 
		writeln (h,m,s,ms); 
	end;
procedure textscreen; 
	var
		i:	integer;
	begin
		time (hold,mold, sold,msold); 
		writeln ('Start'); 
		for i:= 1 to 1000 do 
		begin
			writeln ('1234567890qwertyuiop',i); 
		end;
		writeln ('finish'); 
		time (h,m,s,ms); 
		writeln (hold,mold,sold,msold); 
		writeln (h,m,s,ms); 
	end;
procedure graphscreen;	*	nur	auf	Grafik-Terminals sinnvoll *
	var
		x,y: integer; 
	begin
		time (hold,mold,sold,msold); 
		for x:= 1 to 100 do 
			for y:= 1 to 100 do
				plot (x,y);	* spezieller	Befehl zum Punktsetzen *
			end; 
		end;
		writeln ('finish'); 
		time (h,m,s,ms); 
		writeln (hold,mold,sold,msold); 
		writeln (h,m,s,ms); 
	end;
begin
	textscreen; 
	intmath; 
	realmath; 
	triglog;
	store;	*	eine freie, frisch	formatierte	Diskette sollte *
			*	eingelegt sein	*
	graphscreen; * nur möglich, wenn Betriebssyste Grafik unterstützt *
end.

Boltons

Boltons sind sozusagen Kernel-Erweiterungen, die es dem Systemprogrammierer erlauben, das System um eigene System-Aufrufe zu erweitern. Einige Teile der MIRAGE-Software sind als Boltons ausgelegt. um nicht unnötig Speicher zu verschwenden. So gibt es zum Beispiel ein Bolton für die Fließkomma-Routinen nach IEEE 754. die von allen Swifte-Compilern (Pascal. Fortran. Basic und Lisp) genutzt werden. Das hat den Vorteil. daß beim Einsatz eines Arithmetik-Chips (MC68881 oder NS 16081) die Programme nicht mehr neu kompiliert werden müssen. Man lädt einfach das entsprechende Bolton und los geht's. Weiter gibt es Boltons für einen Druckerspooler und zwei verschiedene Cache-Programme.

Der Druckerspooler ist in der Lage, bis zu 50 Dateien in eine Warteschlange einzureihen und auf 30 verschiedene Drucker zu verteilen. Diese Fähigkeit wird man zwar auf einem ATARI ST nicht so ganz ausschöpfen können, doch kann man bereits ohne große Probleme drei verschiedene Drucker anschließen (einen Laser am DMA-Port. einen Drucker an der seriellen und einen an der parallelen Schnittstelle), die dann bequem mit Arbeit versorgt werden können.

Die beiden Cache-Programme verfolgen zwei verschiedene Philosophien. DIS-CACFIE versucht, die am häufigsten gebrauchten Sektoren zu puffern, und arbeitet bereits bei einer Puffergröße von 32K.

TRACACHE dagegen puffert immer einen ganzen Track, denn es geht davon aus, daß der nächste benötigte Sektor sich uuf demselben Track befindet, und die Einlesezeiten für einen ganzen Track nicht viel größer sind als für einen speziellen Sektor. Allerdings benötigt TRACACHE als Minimum 256K, schluckt also einen ganz schönen Brocken von meinem kärglichen Megabyte. Am besten ist es. wenn Sie durch Probieren das für Ihre Anwendungen am besten geeignete Cache-Programm herausfinden.

Nieder mit der Hierarchie

Gewöhnungsbedürftig ist das MIRAGE-Dateisystem. Wer sich bei TOS und MS-DOS an das so schön übersichtliche hierarchische System gewöhnt hat. ist erst einmal etwas verwundert: Die Dateien werden von MIRAGE in gleichrangigen Directories verwaltet, es gibt kein Wurzelverzeichnis. Das fehlende Wurzelverzeichnis hat mich besonders gestört, denn formatiert man beispielsweise eine Diskette. so kann man nicht einfach anfangen und seine Dateien darauf abspeichern. Vorher ist es notwendig, ein Verzeichnis anzulegen, in welches dann die Dateien kopiert werden können. Das gilt auch für die RAM-Disk. DasCOPY-Utility nimmt einem aber einen Teil dieser Arbeit ab.

Unter MIRAGE verarbeitet der ST drei verschiedene Diskettenformate: 360 KByte (einseitig). 720 KByte (doppelseitig) und 800 KByte (doppelseitig, zehn Sektoren pro Track). Zuweilen hat man nun das Bedürfnis, die eingelegte Diskette gegen eine andere auszuwechseln. Gewöhnlich drücke ich hierzu den Auswerfknopf an meinem NEC 1036A - mit dem ich übrigens sehr zufrieden bin (gelle, Claus!) -. und wenn nicht gerade der Schutzschieber wie ein Enterhaken verbogen ist (alles schon vorgekommen!), kommt die Diskette auch anstandslos heraus. So einfach ist die Sache bei MIRAGE nun nicht. Als ordentlicher Mensch muß man die eingelegte Diskette erst einmal abmelden (UNMOUNT FLP0). Nun kann man die Diskette ohne Gefahr für Leib und Leben entnehmen und die neue einlegen. Diese muß natürlich wieder angemeldet werden (MOUNT FLP0). Vergißt man diese Prozedur, droht das Handbuch den Verlust von Dateien an.

In der Praxis wird das An- und Abmelden zum Glück nicht so streng ausgelegt, doch wenn Sie - wie ich - mit verschiedenen Diskettenformaten arbeiten wollen, ist ein MOUNT FLP0 nach einem Diskettenwechsel anzura-ten. Arger kann es trotzdem geben. So konnte ich, nachdem ich mit einer auf 800 KByte formatierten Diskette gearbeitet hatte, trotz der ganzen MOUNT-Prozedur einfach nicht auf eine spezielle Diskette - die das ALPS-Pro-grammpaket enthielt - zugreifen.

Nach einem neuen Systemstart ging es dagegen ohne weiteres, doch wehe, ich legte zwischendurch mal wieder eine 800-KByte-Disk ein. Wenn Sie eines der beiden Cache-Programme einsetzen wollen. ist das An- und Abmelden natürlich dringend anzuraten, denn sonst kann es passieren, daß nach einem Wechsel der alte Cache-Inhalt auf die neue Diskette geschrieben wird. MIRAGE bietet zwar einen Schutzmechanismus: Es vergleicht bei jedem Dateizugriff eine Checksumme auf der Diskette mit einer im Speicher. Ist diese nicht identisch, so meldet MIRAGE automatisch die neu eingelegte Diskette an. Doch 100%ig ist dieser Schutz halt doch nicht. Fairerweise muß man zu dieser ganzen An- und Abmelderei sagen, daß es sich bei MIRAGE ja um ein Multi user-/Multitasking-Betriebssystem handelt, und daß man in einem solchen nicht einfach mal eben eine Diskette rausnehmen kann. Haben andere Jobs oder Tasks zum Beispiel noch geöffnete Dateien auf dem Gerät, welches Sie UN-MOUNTEN möchten, so wird dies vom Betriebssystem entrüstet - und das zu Recht - zurückgewiesen.

Im Harddisktreiber meiner Version ist übrigens noch ein Fehler zu finden. Auf Festplatten, die unter TOS bootfähig sind, läßt sich MIRAGE nicht installieren. Das ist weiter nicht tragisch - eher unangenehm und mit Arbeit verbunden, denn es ist nötig, ein Backup von seiner Platte zu machen und sie anschließend neu - aber diesmal ohne Autoboot - zu partitionieren. Nach Rücksprache mit Claus Brod. dem Floppy- und Harddisk-Spezialisten, gibt es allerdings doch ein Mittel namens SED. um eine bootfähige Platte sozusagen zu entmannen. Näheres steht im SCHEIBENKLEISTER, wo derlei Perversitäten ausführlich beschrieben werden.

Ein kurzes GFA-BASIC-Programm sollte obiges Problem ohne viel Pipapo lösen - so dachten wir. Nach einer längeren Sitzung vor dem Rechner mußten wir feststellen, daß MIRAGE sich hartnäckig weigerte, auf eine Platte installiert zu werden, auch wenn sie mit dem erwähnten Programm bearbeitet worden war. Irgendwie muß sich MIRAGE um Bytes auf der Platte kümmern, die es eigentlich gar nichts angehen, denn unter TOS funktionierte das Programm tadellos, die Platte war nicht mehr bootfähig. Schließlich gaben wir auf, machten ein Backup, partitionierten die Platte neu und probierten es dann. So einfach wie im Handbuch beschrieben ließ sich MIRAGE allerdings nicht auf der Platte installieren. Nach mehreren Anläufen haben wir es dann doch noch geschafft. Das Problem war, den TOS-Treiber AHDI.PRG zusammen mit MIRAGE in den Speicher zu kriegen. Wir haben es folgendermaßen gelöst: Auf einer TOS-Diskette einen AUTO-Ordner einrichten, den AHDI zuerst hineinkopieren, dann MIRBOOT.PRG, um MIRAGE zu starten. MIRAGE meldet sich dann nach kurzer Zeit und meckert an, daß keine MIRAGE-Diskette im Laufwerk liegt.

Nichts einfacher als das, man legt halt die MIRAGE-Support-Disk ein, und anschließend wird anstandslos gebootet. Hört sich etwas umständlich an - und ist es auch. Der Versuch, AHDI.PRG vom Desktop aus zu starten und danach MIRBOOT.PRG, ist kläglich gescheitert. Im nächsten Update von MIRAGE sind die Probleme, die bei einer bootfähigen Platte auftreten, behoben.

# Benchmark-Ergebnisse:
MIRAGE/Pascal RTOS/Pearl
Textscreen: 55,080
Intmath: 0,765
Realmath: 5,850
Triglog: 4,735
Store: 21,000

Zeit in Sekunden, Millisekunden

MIRAGE wurde im Single-User-Modus betrieben, das heißt, es war nur ein Job deklariert. Natürlich lief bei beiden Betriebssystemen jeweils nur das Task mit den Benchmarks.

Die Zeiten für MIRAGE sehen bei Textscreen und Store nicht so besonders gut aus. Bei Store liegt MIRAGE im Vergleich zu TOS-Sprachen (GFA-Basic, ST-Pascal-Plus,...) eigentlich gut im Rennen. RTOS verwendet für das Diskettenhandling neue, eigene Routinen, deswegen ist es so schnell. Die Zeiten für Textscreen würde ich dem Pascal-Compiler anlasten, denn der MIRAGE-Editor ist beim Textscrollen doch recht schnell.

Mehr Schein als Sein

Wer kennt nicht das Problem, daß ehemals harmlose Adreßdateien von lieben Freunden, Bekannten und den leidigen Anverwandten plötzlich zu riesigen, grauenvollen Monstern anschwellen, die sich gierig auf jedes hilflose Byte stürzen, um es zu verschlingen? Zaubern kann MIRAGE zwar nicht, doch bietet es eine feine Möglichkeit, obiges Problem hinauszuschieben, nach dem Motto: Was Du heute kannst besorgen - Mensch, das kannst Du auch noch morgen.

Oft kommt es vor, daß der Platz auf der Platte zwar prinzipiell reicht, aber falsch verteilt ist. So möchte man eine 7 MByte große Datei unterbringen, hat aber dummerweise nur zwei Partitionen mit je 5 MByte frei. In diesem speziellen Fall kann man sich mit MIRAGE elegant aus der Affäre ziehen - wie weiland Münchhausen am eigenen Schopfe: Zwei oder mehr physikalische Laufwerke werden zu einem virtuellen Laufwerk zusammengefaßt. Das nennt sich dann SUPERVOLUME und funktioniert auch mit Floppylaufwerken. Ein Programm, welches die Daten verwaltet, merkt von alldem natürlich nichts. Durch diese Möglichkeit erspart man sich unter Umständen zeitraubende Umstrukturierungen seiner Festplatte.

Wanderer zwischen den Welten

MIRAGE erhebt Anspruch darauf, als Entwicklungssystem für TOS eingesetzt zu werden. Eine unabdingbare Voraussetzung hierfür ist, daß Dateien zwischen beiden Betriebssystemen ausgetauscht werden können. Nun existiert MIRAGE schon seit mehr als 6 Jahren und in dieser Zeit hat es seine Flexibilität mehr als einmal unter Beweis stellen müssen. So verwundert es nicht, daß Treiber existieren, um TOS-, MS-DOS- und UCSD-p-Dateien zu lesen. Ein weiteres Programm ermöglicht das Beschreiben von TOS-Disketten. Damit ist die Bahn für MIRAGE frei, um in fremden Betten zu wildern.

1, 2, 3, viele

Im Zuge der MEGA-Euphorie hat sich vielleicht der eine oder andere einen zweiten ST angeschafft und weiß nun nicht so recht, was er Sinnvolles mit seinem altem Gerät anstellen soll. MIRAGE bietet zwei Möglichkeiten, seinen Oldie zu recyclen:

Einmal kann ein zweiter ST als Terminal über die serielle Schnittstelle betrieben werden. Das ist eine feine Sache bei der Programmentwicklung, denn nun kann man sein Programm debuggen, ohne eine eventuell vorhandene Bildschirmmaske zu zerstören.

Da MIRAGE allerdings auch virtuelle Terminals bietet, reicht allein für diesen Zweck auch schon ein ST. Die Möglichkeit, ein zweites physikalisches Terminal anzuschließen, ist aber auch interessant, wenn zum Beispiel die Freundin oder der Freund unter MIRAGE arbeiten wollen, selber aber dasselbe nicht besitzen. Man ist dabei natürlich nicht an einen ST als Terminal gebunden, sondern jeder andere Computer, der über eine Terminalemulation verfügt, kann angeschlossen werden, notfalls sogar über das Telefonnetz.

Die zweite Möglichkeit ist schon etwas aufwendiger. MIRAGE ist netzwerkfähig, das heißt, mehrere MIRAGE-STs können vernetzt werden. Beim ST sind dazu nur die Treibersoftware MICRO-GRID und entsprechende Kabel für die RS-232 oder die MIDl-Schnittstelle notwendig. Benutzt man den seriellen Port, ist man bei der Anzahl der Netzknoten auf zwei beschränkt. Über MIDI lassen sich dagegen Ringe mit vielen STs aufbauen. MICROGRID benutzt dazu bei der Datenübertragung ein umfangreiches Protokoll.

Das setzt natürlich die effektive Datenübertragungsrate erheblich herab, so daß es mir wenig sinnvoll erscheint, dieses Low-Cost-Netz dazu zu benutzen, viele STs ohne Massenspeicher mit einem ST als Datei-Server zu vernetzen. Für diesen Zweck gibt es leistungsfähigere Netze wie Ethernet oder RS-432, wofür dann allerdings auch zusätzliche Hardware nötig wird. Das MIDI-Netz würde ich einsetzen. um mehrere STs mit eigenen Massenspeichern zu koppeln, zum Beispiel für Schulungszwecke an Schulen oder Unis. Interessant ist diese Möglichkeit auch für die Programmentwicklung in Teamarbeit, wo dann das lästige Diskettenaustauschen entfällt. Da MIRAGE umfangreiche File-Security-Möglichkeiten bereithält, ist sichergestellt, daß jeder ungestört arbeiten kann. Bei diesen beiden Anwendungen kommt es nicht so sehr auf die Datenübertragungsrate an. da ein Austausch von langen Dateien nicht allzu häufig vorkommt. Dank Multitasking muß sowieso nur der Empfänger auf seine Daten warten. Wichtiger sind hier Zuverlässigkeit und Unkompliziertheit.

Technische Daten

Beim Autokauf sind sie für viele das Wichtigste, und auch bei einem Betriebssystem geben sie Anhaltspunkte, die kaufentscheidend sein können. Nachdem ich die Benchmarks unter MIRAGE habe laufen lassen, war ich doch etwas enttäuscht darüber, daß es im Vergleich zu RTOS immer mehr oder weniger langsamer war. Die Werbung verspricht aber ein besonders schnelles Multitasking-/Multiuser-Betriebssystem. Eine Rücksprache mit gdat hat ergeben, daß es von SAHARA SOFTWARE ein Informationsblatt mit den Laufzeiten für Systemaufrufe gibt. In diesem ist zwar ein 68000-Rechner mit 12 MHz getestet worden, aber da dieser Rechner - wie der ATARI ST - mit 0 Waitstates beim Zugriff auf den Speicher betrieben wird, lassen sich diese Zeiten doch ganz gut auf einen ST übertragen. Man muß nur die angegeben Zeiten mit 1.5 multiplizieren, um die Werte für einen X MHz-Rechner zu bekommen. Ob diese errechneten Werte nun hundertprozentig mit auf einem ST gemessenen übereinstimmen, läßt sich natürlich nicht mit absoluter Sicherheit sagen. Von den über 60 Zeitangaben habe ich mir einige wenige herausgegriffen, die mir besonders interessant erschienen. Wer die restlichen wissen möchte, kann sich an gdat wenden.

Im folgenden sind die angegeben Zeiten schon mit 1.3 multipliziert, um einen Eindruck von der Leistungsfähigkeit von MIRAGE auf einem ATARI ST zu bekommen.

Taskwechselzeit: 217.3 µs
(Diese Zeit kann sich noch erheblich verkürzen, zum Beispiel wenn eine Task freiwillig einen Wechsel herbeiführt, dauert es nur 149 µs)

Semaphorzyklus:
P + V Operation auf Semaphore: 30.3 µs
(entspricht RTOS Request und Release)

Reaktionszeit auf Interrupt: 63.5 µs
(klinkt man sich direkt in die Interrupt Vektoren ein. dann verkürzt sich diese Zeit auf 20.5 us!)

Block-Kopier-Befehle:
BLKMOVE( 10 KBytes): 6843.2 µs (dieser Wert ist sehr gut!)
Um einen 10KByte großen Speicherbereich mit Nullen zu füllen braucht MIRAGE nur 4403.3 µs

Alle Zeilen sind in Mikrosekundn angegeben.

Vergleicht man nun RTOS und MIRAGE, dann stellt man fest, daß MIRAGE verdammt schnell ist - und das. obwohl es nicht speziell für Echzeitbetrieb ausgelegt ist. Die Taskwechselzeit bei RTOS beträgt 200 ps. ist also nicht viel schneller, als die von MIRAGE. Der Semaphorzyklus ist bei beiden Betriebssystemen gleich schnell. Andere Zeiten konnte ich leider nicht vergleichen. Interessant wären noch die Fließkomma-Routinen gewesen, die bei MIRAGE besonders schnell sein sollen.

Das schlechtere Abschneiden von MIRAGE gegenüber RTOS bei den Benchmarks muß also an den Compilern liegen. Auf Betriebssystemebene sind beide einander ebenbürtig.

Secret Service

Was Du nicht willst, das man Dir tu', dem schiebe einen Riegel vor. In diesem Sinne verfährt MIRAGE, wenn mehrere Nutzer an einem Rechner oder an einem Netz arbeiten. So gibt es das gute alte Paßwort beim Einloggen in das System, verschiedene Privilegien für einzelne Benutzer, und schließlich kann jeder Eigentümer von ‘Resourcen’ (z.B. Floppies. Verzeichnissen. Dateien oder Terminals) diese gegen den Zugriff anderer Benutzer schützen. Einzig der 'Superuser' schert sich einen feuchten Kehricht um all das -aber wer glaubt schon an die User?

MIRAGE - oder eigentlich der System-Manager - trägt nun jeden Benutzer mit folgenden Attributen im 'User Authorisation File' ein:

  1. Benutzername zum Einloggen (1 bis 6 Zeichen)
  2. User-Identification-Code (UIC)
  3. Paßwort zum Einloggen (0 bis 8 Zeichen)
  4. Heimat-Gerät/Directory
  5. Grundeinstellung für die Zugriffserlaubnis (Default-Access-Permission)
  6. Spezielle Benutzer-Privilegien
  7. CPU-Zeit (Scheduling-Priorität)
  8. Speicherplatz, der dem Benutzer beim Einloggen fest zugewiesen wird

Punkt 1 braucht wohl keine nähere Erläuterung. Punkt 2 dagegen ist schon interessanter: Der User-Identification-Code (UIC) besteht aus zwei Teilen, jeweils einer Zahl zwischen 0 und 255. Der erste Teil des UICs ist die Gruppen-Nummer und weist den Benutzer einer der 256 möglichen Gruppen zu. Der zweite Teil des UICs ist die Mitglieds-Nummer.

Sie unterscheidet die einzelnen Mitglieder einer Gruppe voneinander. Der UIC ist - zusammen mit einer Zugriffserlaubnis - Bestandteil jeder 'Resource' (Gerät, File, Directory. ...) und ermöglicht es so, daß jeder Benutzer seine Resourcen für andere beliebig sperren oder öffnen kann.

Bei Punkt 3 ist lediglich zu erwähnen, daß ein Paßwort kein Zwang ist, sondern optional. Der Benutzer kann sein Paßwort jederzeit mit dem PASSWORD-Utility ändern.

Im Punkt 4 wird festgelegt, wo sich der Benutzer nach dem erfolgreichen Einloggen wiederfindet. Enthält das Directory ein Kommando-File namens SIGNON.CMDF. so wird dies ausgeführt. Es kann zum Beispiel automatisch ein bestimmtes Programm starten.

Die Zugriffserlaubnis für seine Resourcen kann der Benutzer explizit angeben, oder es wird die Grundeinstellung aus Punkt 5 übernommen. Die Zugriffs-Regelung geschieht mit Hilfe eines Access-Permission-Codes (kurz APC). der folgendermaßen aufgebaut ist:

<NSGO>

N - Netzwerk-Zugriff
S - System-Zugriff
G - Gruppen-Zugriff
O - Eigentümer-Zugriff

Jedes dieser vier Zugriffsfelder kann nun wiederum vier verschiedene Werte annehmen:

W - schreiben/löschen/lesen/ausführen
R - lesen/ausführen
E - ausführen
N - kein Zugriff

Einige Beispiele:

Alle Benutzer können schreiben. löschen, lesen und ausführen

Gruppenmitglieder können lesen. Eigentümer kann schreiben und lesen

Kein Zugriff für Benutzer, die über ein Netzwerk angeschlossen sind. Alle Benutzer desselben Systems können ausführen, der Eigentümer darf wieder schreiben und lesen.

Niemand hat ein Zugriffsrecht -man kann ein File also auch vor sich selber schützen.

Nun zu den verschiedenen Privilegien, die unter Punkt 6 angesprochen worden sind:

PHR Physikalisches Lesen ist erlaubt

PHW Physikalisches Schreiben ist erlaubt

SUP Wechselt zum Supervisor-Mode der 68000-Familie. Für einige MIRAGE - Systemaufrufe und Utilities nötig.

OPR System - Operator - Privileg: hat Zugriff auf eine Anzahl von Diagnose - und Konfigurations Programmen, aber noch nicht den uneingeschränkten Zugriff eines System-Managers.

MAN System-Manager: hat uneingeschränkten Zugriff auf alle System-Resourcen.

GL Gruppenleiter: hat freien Zugang zu allen Resourcen einer Gruppe

Zu Punkt 7 ist an dieser Stelle nichts weiter zu sagen, auf das Tasking unter MIRAGE wird noch eingegangen.

Punkt 8 ist auch ziemlich klar, dem Benutzer wird beim Einloggen ein fester Speicherumfang zugeordnet, über den er allein verfügen kann. Benötigt er mehr, so wird - sofern noch vorhanden - aus dem freien Speicher-Pool welcher angefordert. Beendet ein Benutzer seine Sitzung, wird der von ihm belegte Speicher an den freien Speicher-Pool zurückgegeben.

Der aufmerksame Leser fragt sich nun: Wie ändert ein nicht privilegierter Benutzer sein Paßwort? Denn um dieses zu ändern, muß die USERS.AUTH-Datei geändert werden, auf die der normale Benutzer aber keinen Zugriff hat. Andererseits habe ich schon gesagt, daß dies mit dem PASSWORD-Utility ohne weiteres möglich ist. Nun. der Eigentümer von PASSWORD ist der System-Manager. welcher uneingeschränkten Zugriff auf das ganze System hat. Mit dem ASSUME-OWNER-I.D.-Attribut überträgt man die Privilegien des Eigentümers auf das Programm. Jetzt ist auch der gemeine Benutzer in der Lage, sein Paßwort jederzeit zu ändern. Um das ASSUME-OWNER-l.D.-Attribut zu setzen, genügt es. die spitzen Klammern um den ACCESS-PERMISSION-CODE umzudrehen: >eeew<

Bild 4: Das Menü des Debuggers

Alles schön und gut. denkt sich da der normale ST-Anwender, aber ich werde bestimmt nicht Dutzende Terminals an meinen Rechner anschließen, was bringt's mir also? Ich sehe da im großen und ganzen zwei Vorteile: Zum einen ist der Paßwort-Mechanismus ganz nützlich, wenn man verhindern will, daß jeder Dahergelaufene mal eben so den Rechner anwerfen kann, zum andern ist das File-Security-System eine feine Sache, wenn mehrere Rechner vernetzt sind. Man bleibt so sein eigener Herr über seinen Rechner. Gerade in letzter Zeit machen Computer-Viren wieder von sich reden. TOS macht es diesen kleinen Krabbeltierchen nicht besonders schwer, sich im System einzunisten. Unter MIRAGE haben es diese Parasiten nicht so einfach, verwendet man konsequent die erwähnten Möglichkeiten um seine Dateien abzuschotten. Nur wenige System-Benutzer haben überhaupt das Privileg physikalisch auf die Datenträger zugreifen zu dürfen, was aber für die heimliche Verbreitung der Viren Voraussetzung ist. Wenn darüberhinaus jeder Benutzer, der ein Programm oder eine Text-Datei fertiggestellt hat. diese - auch für sich selbst - gegen Überschreiben schützt, so wird jeder Änderungsversuch den ein Virus unternimmt, vom Betriebssystem zurückgewiesen.

Wem das aber alles zu umständlich ist, für den gibt es noch den sogenannten 'OPEN’-Modus, in dem keine Einschränkungen irgendwelcher Art bestehen.

Multitasking-/Multiuser

Die Multiuser-Fähigkeiten von MIRAGE sind schon mehrfach angesprochen worden. Voraussetzung hierfür ist natürlich, daß MIRAGE zwischen mehreren Tasks hin- und herschalten kann. Aber auch das allein reicht noch nicht aus. schließlich haben wir in unserem ST nur eine CPU. um die sich mehrere Programme schlagen. Die CPU-Zeit muß also möglichst sinnvoll aufgeteilt werden. Für dieses Problem gibt es mehrere Lösungsmöglichkeiten. Die beiden geläufigsten möchte ich kurz vorstellen:

Zum einen besteht die Möglichkeit, die CPU-Zeit in sogenannten Zeitscheiben zu vergeben. Bei dieser Methode wird ein Programm nicht an einem Stück abgearbeitet, sondern in einen bestimmten Zeitintervall. Ist diese Zeit um, so wird-die Abarbeitung des aktuellen Programmes unterbrochen, und ein anderes aus der Warteschlange kommt an die Reihe. Im Leben eines Programms kann es aber auch Augenblicke geben, wo es freiwillig oder gezwungenermaßen eine Pause einlegt. Es wartet zum Beispiel auf einen Massenspeicher oder auf ein anderes Programm. In diesem Fall sorgt das Betriebssystem dafür, daß die Wartezustände des einen Programms in Rechenzeit für ein anderes umgewandelt werden.

Die Zeitscheiben-Methode hat den Nachteil. daß es bei zeitkritischen Programmteilen. die unbedingt an einem Stück ausgeführt werden müssen (Floppy-, Festplattenzugriffe. Abfragen einer Schnittstelle ...), dazu kommen kann, daß diese unterbrochen werden, was unter Umständen zum Zusammenbruch des Systems führen kann.

Damit es zu einem solchen Desaster nicht kommen kann, gibt man jedem Task eine Priorität. Dasjenige mit der höchsten Priorität erhält die CPU, solange keine Wartezustände hat oder freiwillig eine Pause einlegt. Ein 'Dauerrenner' - also ein Task ohne Wartezustände - läßt folglich für andere nichts mehr übrig. Für ein Multiuser-System ist dieser Ansatz also unbrauchbar.

MIRAGE bietet beide Möglichkeiten und vermischt sie teilweise. Es kennt den 'normalen' Task, der eine Zeitscheibe zugeteilt bekommt und eine Priorität hat. Außerdem bietet MIRAGE noch Echtzeittasks in zwei Varianten an. Darunter versteht MIRAGE ein Task, das nur von einem höher priorisierten Echtzeittask, von Wartezuständen oder durch freiwilligen Verzicht unterbrochen werden kann, auf das also die Zeitscheiben keinen Einfluß haben.

Nun gibt sich MIRAGE mit einfachen Tasks aber nicht zufrieden. Vor das Task haben die User nämlich noch die Jobs gesetzt. Jobs sind unabhängige Funktionseinheiten, die in den Weiten der MIRAGE-Welt ihr Dasein fristen. Der Unterschied zu den Tasks ist nur der, daß ein Task immer einen Vater hat, der es ins Leben gerufen hat. ein Job dagegen sozusagen à la Klapperstorch vom Himmel gefallen ist. Ein Job kann bis zu 128 Tasks im Vater-Sohn-Prozeß erzeugen, ein Task kann das seinerseits nun auch, und schon haben wir wieder die schönsten Baumstrukturen, wie sie ja in der ST-Computer schon des öfteren behandelt wurden.

Jeder Job verwaltet seinen eigenen Speicherbereich und sein eigenes - auch virtuelles - Terminal. Ein Task wird mit oder ohne virtuellen Bildschirm erzeugt. Mit dem FAKIR-Programm kann man bei der ST-Version mittels Tastenkombination oder mit der rechten Maustaste zwischen den virtuellen Bildschirmen zyklisch Umschalter!. Dieses FAKIR-Programm schränkt allerdings den ATARI-ST-Anwender auf 7 Jobs ein. Prinzipiell ist die Zahl der Jobs nur durch den Speicherplatz beschränkt.

Das ganze Konzept von MIRAGE ist auf Multiuserbetrieb ausgelegt, weniger auf Echtzeitbetrieb. Dafür gibt es spezielle Betriebssysteme und Sprachen, die für diesen Zweck entwickelt worden sind. Ich denke da besonders an die Kombination RTOS/PEARL. Hier wurde für die Echtzeitsprache PEARL ein passendes Betriebssystem geschrieben. Mit MIRAGE an sich ließen sich Echtzeitprobleme durchaus lösen - allerdings auf Assemblerebene und nicht in einer Hochsprache. Es wäre vermutlich möglich, einen PEARL-Compiler für MIRAGE zu entwickeln oder PASCAL und FORTRAN um Echtzeiteigenschaften zu erweitern, doch bis jetzt ist von alledem nichts in Sicht.

Interrupts

Beim 68000 kann es in Multitasking-/ Multiuser-Systemen Probleme geben. Alle Interrupts müssen beendet sein, bevor ein Task-Wechsel stattfindet. Datei werden der User- und Supervisor-Stackpointer gerettet und jeweils ein neuer eingerichtet. Da die Interruptroutinen aber ihrerseits den Supervisor-Stack benutzen und ebenfalls Daten auf diesem ablegen, werden diese bei einem Task-Wechsel mit ausgetauscht. Die Interruptroutine hängt dann quasi in der Luft, allerdings ohne Netz und doppelten Boden -ein System-Crash ist die Folge. Beim 68020 hat man dieses Problem durch einen eigenen Interrupt-Stack gelöst. Für den 68000 haben sich die Entwickler von MIRAGE eine Softwarelösung einfallen lassen.'Alle Interruptanforderungen werden an einen Interrupt-Manager übergeben. Dieser unterdrückt einen Task-Wechsel. solange noch ein Interrupt bei der Arbeit ist.

Für den normalen Anwender hat das weiter keine Bedeutung, nur der Systemprogrammierer muß sich halt an die System-Aufrufe halten und darf die Interrupt-Vektoren nicht direkt setzen.

Grafik?

Für viele eine besonders leckere Mischung ist die Kombination von Grafik und Multitasking. Wäre es nicht herrlich, vor Ist Word zu sitzen, einen Text zu schreiben und gleichzeitig im Hintergrund ein Apfelmännchen zu berechnen? MIRAGE kann das! Natürlich nicht mit Ist Word, wohl aber mit dem integrierten Text- und Kalkulationspaket OxSys-Suite. Moment. Moment - ich denke. MIRAGE kennt nur reine Textterminals?

Richtig, aber es lassen sich die LINE-A-Routinen des TOS aufrufen!

Sogar mit virtuellen Bildschirmen, womit gewährleistet ist, daß der Grafikaufbau auch wirklich im Hintergrund stattfindet. Für diesen Grafikzauber sind allerdings 164 deutsche Mark zu berappen. Dafür erhält man dann aber eine vollständige LINE-A-Bibliothek. die sowohl unter der TOS-APL-Version wie auch unter MIRAGE nutzbar ist und umfangreiche Makros enthält. So ist es möglich, eine Liste mit den Koordinaten aller für die Grafik nötigen Vektoren zu erstellen und diese Liste dann mit einem einzigen Aufruf einer Routine aus dieser Bibliothek abzuarbeiten. Das kommt APL besonders entgegen, denn in dieser Sprache werden Schleifenkonstrukte vergleichsweise langsam abgearbeitet, dagegen sind Operationen auf Strukturen sehr schnell, da die sequentielle Abarbeitung in Assembler kontrolliert wird. Dieses Tool ist von gdat in Bielefeld entwickelt worden und wird mit einem deutschen Handbuch geliefert.das sich angenehm vom Durchschnitt abhebt. Unverkrampft wird der Leser mit den Möglichkeiten seiner neuen Errungenschaft vertraut gemacht, immer wieder aufgelockert durch gelungene Gags - es macht einfach Spaß, diese Anleitung zu lesen.

Drum und Dran

Fassen wir kurz zusammen: Da haben wir ein Multitasking-/Multiuser-Betriebssystem. das ordentlich aufgebaut ist. seit mehreren Jahren auf Workstations läuft und nun auch relativ preisgünstig für den ATARI-ST verfügbar ist. Doch was gibt es außer dem splitterfasernackten Betriebssystem mit seinen - zugegeben umfangreichen - Utilities?

Antwort: Leider nicht viel. Es gibt nur ein einziges Anwendungspaket, ein integriertes Software-Paket, das aus einer Textverarbeitung, einer Tabellenkalkulation, einem speziellem Druckprogramm und einem Programm zur automatischen Generierung eines Inhaltsverzeichnisses besteht. Neuerdings ist für dieses Paket noch ein objektorientiertes Zeichenprogramm - ähnlich EASYDRAW - erhältlich. Dieses Paket macht einen professionellen Eindruck, doch lag es zum Test leider nicht vor. Erwähnenswert ist. daß Wordstar-Files von allen Programmteilen akzeptiert werden.

Wer dagegen Software unter MIRAGE entwickeln möchte, kann sich die Sprache aussuchen:

ALPS (Assembler-Language Programming System)

Als Assembler-Freak kommt man hier soll auf seine Kosten. Ein Makro-Assembler, der wirklich (fast) keine Wünsche mehr offen läßt (sehr schnell. 68000er, 68020er und 68881 Code). Ein komfortabler Debugger (Bild 4) gehört ebenso zu diesem Paket wie ein Programm namens PROFILE. Mit diesem Tool kann man die Aktivitäten von Hochsprachen-Programmen (nur von den Swifte-Sprachen PASCAL, FORTRAN und BASIC) genau verfolgen. So wird die Anzahl der Aufrufe und die verbrauchte Zeit jeder Prozedur aufgelistet (Bild 5). Diese Information ist nützlich, wenn man Fehler suchen oder sein Programm optimieren muß. Ein Linker rundet dieses Paket ab. Bei der Profiversion kommen noch verschiedene Bibliotheken und Beispiele dazu.

Verschiedene Softwarehäuser in England nutzen das ALPS-Paket schon als Entwicklungssystem für TOS-Programme. So wurde zum Beispiel ARMAGEDDON-MAN von Electric Pencil unter MIRAGE geschrieben.

Swifte-BASIC

Umfangreicher BASIC-Compiler mit einigen Extras wie Subroutinen-Aufruf mit Parametern oder einer Redimensionierungsmöglichkeit von Feldern. Ansonsten halt doch eben BASIC.

Swifte-FORTRAN-77

Vollständiger ANSI X3.9-1978-Compiler mit NCC ERROR-FREE-Zertifikat, was immer das auch heißen mag. Schön ist, daß der Compiler auch 68020- und 08881 - Inlinecode erzeugen kann, was für PAK-68-Besitzer interessant sein dürfte. Mit verschiedenen Optionen kann man den Compiler beeinflussen, zum Beispiel läßt sich der ANSI-66-Standard einstellen oder die Bereichsüberprüfung von Feldern ausschalten.

Ein besonderer Leckerbissen sind die verfügbaren NAG-Libraries. um die sich angeblich die FORTRAN-Leute schlagen. Ich muß gestehen, daß ich zu FORTRAN kein enges Verhältnis habe, mehr FORT als RAN, aber viele Programme sind in dieser Sprache geschrieben, und - ie ist in der Wirtschaft und an Universitäten weit verbreitet. Fortran-Anwender haben hier ein zuverlässiges System in der Hand, um zum Beispiel Programme vom Großrechner zu übernehmen und damit diesen zu entlasten.

Swifte-PASCAL

Zuverlässiger Compiler mit vielen Erweiterungen - zum Beispiel dynamische Strings. Es besteht die Möglichkeit zur Laufzeit Sub-Tasks zu generieren und FORTRAN-Programme einzubinden. Verschiedene Compiler-Optionen ermöglichen es. wie bei FORTRAN die verschiedenen Überprüfungen zur Laufzeit auszuschalten. Ebenso kann man auf reinen ISO-Standard schalten, bei dem sämtliche Erweiterungen wegfallen. Im Handbuch wird unter ‘Program Optimisation' übrigens darauf hingewiesen, daß man rechenaufwendige Programmteile doch möglichst in FORTRAN schreiben soll, denn PASCAL ist mehr eine Sprache für allgemeine Anwendungen und kann bei Fließkomma-Berechnungen niemals so schnell sein wie FORTRAN - angeblich. Das möchte ich lieber nicht kommentieren. ich überlasse das den PASCAL- Anwendern...

C (Lattice)

Ist nach Aussagen von gdat nicht optimal an MIRAGE angepaßt (Originalton: ‘Kröte’), aber immerhin gibt es C.

APL/68000

Spezielle Version für MIRAGE, d.h. für Multitasking-Betrieb ausgelegt. Für den Multiuser-Betrieb mit mehreren Terminals nur eingeschränkt zu verwenden -aber wer hat schon mehrere Terminals an seinem ST? Die TOS-Version von APL ist allerdings komfortabler.

Swifte-Lisp

Ich hatte es zwar zum Test, doch muß ich zugeben, daß ich von dieser Sprache überhaupt keine Ahnung habe. Deshalb kann ich nur sagen: Es gibt Lisp unter MIRAGE.

See you later, alligator

Viel gäbe es noch zu sagen, manches ist nur oberflächlich gestreift worden, doch irgendwo muß ich einen Schlußstrich ziehen, sei es, weil MIRAGE einfach zu komplex ist, oder weil ich auf manchen Gebieten nicht genug Ahnung habe. Bei meiner Arbeit mit MIRAGE habe ich festgestellt, daß es keinesweges leicht ist, ein Betriebsystem zu bewerten. Während meines Test gab es keine Abstürze, nur einmal muß ich das System etwas arg gebeutelt haben, als ich in FORTRAN einen Benchmark schreiben wollte und ein falsches Format für die Ausgabe von ganzen Zahlen verwendet habe. Seine Herkunft aus Großbritannien kann MIRAGE nicht verleugnen: So leistungsfähig es auf der einen Seite ist - so hat es auf der anderen Seite eine ganze Menge Eigenheiten. an die es sich zu gewöhnen gilt. Ich denke da zum Beispiel an das Diskettenhandling. Sein Geld ist es auf jeden Fall wert, obwohl es nicht ganz billig ist, denn für MIRAGE, den Macro-Assembler und eine Hochsprache muß man schon 800-900 DM anlegen (siehe Kasten). Rechnet man allerdings den Service der deutschen Vertriebsfirma hinzu, die viele Hilfestellungen und regelmäßige Updates gibt, so ist diese Summe sicher nicht zuviel.

Für wen?

Eine schwierige Frage. Ich könnte es mir leicht machen und sagen: Für den, der’s brauchen kann. Doch das wäre etwas zu einfach. MIRAGE ist sicher nichts für denjenigen, der mit BASIC wunderbar zurechtkommt und nur mal eben seine BASIC-Programme im Multitasking-Betrieb laufen lassen will. Solche ST-Benutzer sind mit TOS besser bedient. Im Laufe des Tests habe ich an verschiedenen Stellen Personengruppen genannt, für die MIRAGE interessant ist. Ich möchte sie noch einmal kurz nennen:

Programmentwickler, die einen Profi-Makro-Assembler suchen und/oder im Team zusammen an einem Rechnernetz arbeiten wollen.

Studenten, Professoren und andere an der Uni Beschäftigte, die unabhängig vom Großrechner ihre FORTRAN-Program-me entwickeln wollen.

Universitäten und andere Schulungseinrichtungen. die einen preiswerten Rechner wie den ATARI-ST unkompliziert und mit wenig Aufwand zu einem Netz zusammenschließen möchten.

C.D.Ziegler

Bezugsadresse:
gdat
Stapelbrede 39
4800 Bielefeld 1

# Bezugsnachweis

MIRAGE wurde und wird von SAHARA-SOFTWARE-LIMITED in London entwickelt. In Deutschland wird MIRAGE von gdat in Bielefeld vertrieben. Die deutsche Firma bietet einen umfangreichen Update-Service; dank der guten Beziehung zu SAHARA-SOFT werden spezielle Anpassungsprobleme sofort weitergeleitet und dann auch wirklich behoben. In meinem Rechner habe ich seit kurzem eine PAK-68 (68020-Karte mit 68881) eingebaut, die leider unter MIRAGE nicht funktioniert. Ein Anruf bei gdat ergab, daß definitiv mit dem nächsten Update die PAK unterstützt wird. Ich möchte an dieser Stelle die PAK-Anwender dazu auffordern. bei den Softwareherstellern Druck zu machen, denn so schwierig kann es nicht sein, die rechenintensiven Programme wie zum Beispiel CAD- oder Grafikprogramme auf 68020 und Coprozessor umzustellen. Doch nun zu den lästigen Kleinigkeiten. die der Erwerb von MIRAGE mit sich bringt - ein größeres Loch im Geldbeutel nämlich.

Programm Preis
MIRAGE-ST Betriebssystem 348.-
MicroGrid MIDI- und RS232-Netzwerksoftware 98.-
ALPS Compilerversion 100.-
Profiversion 185.-
Update von Compiler- auf Profiversion 85.-
Swifte-Basic Basic-Compiler 248.-
Swifte-Fortran-77 Error-Free-Zertifikat 398.- *)
Swifte-Pascal ISO/BSI-Standard 248.- *)
Lattice C mit Erweiterungen für MIRAGE 386.- *)
APL unterstützt Multitasking 498.-
Swifte-Lisp Interpreter 348.-
OxSys Suite Integriertes Text- Kalkulationspaket 798.-
Forth ???

Die mit *) gekennzeichneten Sprachen Fortran-77, Pascal und Lattice C benötigen noch die Compilerversion des ALPS, da die Compiler Assemblercode erzeugen, der mit dem Makro-Assembler noch übersetzt werden muß. Es kommen für diese Sprachen also noch einmal zusätzlich 100 DM dazu. Natürlich nur einmal. wenn man in zwei oder allen drei Sprachen programmieren möchte.

Bild 5: Das Programm beuch.pas wurde mit PROFILE untersucht


Aus: ST-Computer 08 / 1988, Seite 118

Links

Copyright-Bestimmungen: siehe Über diese Seite