Als war’s ein Stückchen UNIX: Multitasking auf dem ST mit der MT C-Shell

Michael Bernards, Ulrich Hofner

Nicht ohne Neid schaut so mancher ST-Programmierer auf Computer wie den Amiga oder den Gepard-PC, da diese ohne Probleme verschiedene Programme quasi gleichzeitig bearbeiten und so beispielsweise langwierige Compiler-Läufe während des Editierens eines neuen Programmtextes erledigen. Diese Fähigkeit, die man allgemein als Multitasking bezeichnet, ist bei 16-Bitern häufig anzutreffen, dem ST ist sie aber nur in sehr bescheidenem Maße gegeben. Sie beschränkt sich auf die Accessories, jene kleine Helfer, die immer präsent sind. Um diesem Mißstand abzuhelfen, bietet die amerikanische Firma Beckemeyer Development Tools schon seit längerem unter dem Namen »MICRO-RTX« einen Multitasking-Kernel an, mit dem man in der Lage ist, multitaskingfähige Programme zu schreiben. Später kombinierte man dieses Hilfsprogramm mit der hauseigenen Micro-C-Benutzeroberfläche und brachte die MT C-Shell auf dem Markt, die als herausragendes Merkmal anbietet, alle TOS-Programme im Multitasking-Betrieb laufen zu lassen.

Die MT C-Shell liegt in zwei verschiedenen Versionen auf Diskette vor. Die erste Variante ist für den Single-User-Betrieb gedacht. Nach dem Start landet man sofort im Kommando-Interpreter. Das zweite Programm ist in der Lage, einen zweiten Teilnehmer an der seriellen Schnittstelle arbeiten zu lassen. Wie von Multi-User-Systemen her gewohnt, muß man sich erst einloggen. Sind Benutzername und Passwort nicht bekannt, erhält man keinerlei Zugriff auf den Computer. Nach einem erfolgreichen Login erreicht man wie in der ersten Version den Kommando-Interpreter.

Die Shell verhält sich auf den ersten, zweiten und auch dritten Blick wie das bekannte Multitasking/Multiuser-System UNIX. Der UNIX-erfahrene Anwender benötigt keinerlei Umgewöhnung, um die MT C-Shell zu beherrschen. Der krasseste Unterschied in der Bedienung liegt darin, daß UNIX als Pfad-Separator einen Slash (/) benutzt, und TOS (und damit aus Kompatibilitätsgründen auch die MT C-Shell) einen Backslash ().

Neben dem mächtigen Befehlsumfang sind es hauptsächlich zwei Dinge, die die Arbeit mit der MT C-Shell für Programmierer so interessant machen: das Piping und der Multitaskingbetrieb. Hinter dem Piping verbirgt sich die Funktion, mehrere Befehle in einer Zeile anzugeben und auszuführen. Der Clou an der Sache ist, daß die Ausgabe des einen Kommandos als Eingabe des nächsten Kommandos dient. Ein kleines Beispiel soll den Pipe-Mechanismus verdeutlichen.

Man möchte beispielsweise ein Disketteninhaltverzeichnis, das mehr als 25 Einträge enthält, seitenweise auf den Bildschirm bringen. UNIX und auch die MT C-Shell kennen hierfür den Befehl »MORE«, der eine Datei listet. Nach einer vollen Bildschirmseite wird gestoppt und auf einen Tastendruck gewartet. Das gleiche gilt auch für das Listen eines Directories.

Mit dem VSH-Manager läuft der Dialog in einem GEM-Fenster
Die MT C-Shell läßt sich mit dem VSH-Manager auch aus starten
LS -l | MORE 

erledigt die oben gestellte Aufgabe. Dabei listet »LS« die Einträge des aktuellen Directories und der Schalter -l sorgt dafür, daß auch Datei-Informationen, wie Länge, Datum, Zeit und Attribute, auf dem Bildschirm erscheinen. Unsere Befehlszeile bewirkt aber, daß LS die Ausgabe nicht direkt auf den Bildschirm, sondern in einen Puffer schreibt. Der Befehl MORE greift anschließend auf diesen Puffer zu und listet das Directory wie eine normale Datei.

Selbstverständlich lassen sich wie unter UNIX häufig benötigte Befehlssequenzen in sogenannten Script-Dateien, die mit der Extention ».sh« enden, zusammenfassen. So ist der Anwender in der Lage, regelrechte Programme in der Shell-eigenen Sprache, die sehr an die Sprache C angelehnt ist, zu schreiben. Diese lassen sich mit einem einzigen Befehl starten.

Der interessanteste Aspekt der MT C-Shell ist aber das Multitasking. Grundsätzlich bietet die MT C-Shell zwei Varianten, um mehrere Programme laufen zu lassen. Die eine besteht darin, daß zwei Anwender gleichzeitig am Computer arbeiten. Mindestens »CSH.PRG«, also die C-Shell selbst, ist nun zweimal im Computer resident. Da die C-Shell unter Micro-RTX entwickelt wurde, behindern sie sich nicht.

Die Frage stellt sich, wie TOS-Programme reagieren, wenn man sie als einen eigenen Prozeß startet. Dazu ist erst einmal wichtig zu wissen, wie man in der MT C-Shell Hintergrund-Tasks startet. Beendet man die Kommandozeile mit einem kaufmännischen UND (&), erscheint auf dem Bildschirm nur noch eine Prozeßkennung, und vom Programmlauf ward nichts mehr gesehen.

TOS-Programme behindern den Vordergrundprozeß allerdings sehr stark. Startet man zum Beispiel den C-Compiler aus dem Entwicklungspaket als Hintergrundprozeß, ist es kaum noch möglich, ein Directory zu listen. Um dem Abhilfe zu schaffen, setzt man mit dem Kommando »NICE« die Priorität des Hintergrundprozesses so weit herab, daß man ihn während der Arbeit kaum noch bemerkt. Der im Hintergrund laufende Compiler benötigt dann natürlich erheblich mehr Zeit für seinen Job.

Ein Manko ist, daß sich keine GEM-Programme im Multitasking-Betrieb starten lassen. Auch hierfür gibt es aber mittlerweile eine Lösung: den VSH-Ma-nager. Der VSH-Manager wird mit der MT C-Shell auf einem Laufwerk installiert. Startet man das Programm, erscheint auf dem Bildschirm eine Menüleiste und ein Fenster, in dem wiederum der Login-Prompt zur Eingabe auffordert. Der ganze Shell-Betrieb läuft in einem Fenster ab. Das Besondere ist, daß sich mehrere Fenster öffnen lassen und somit mehrere virtuelle Konsolen zur Verfügung stehen. In jedem der Fenster ist eine C-Shell aktiv. Um die Ausgaben der normalen TOS-Programme ebenfalls in diese Fenster umzuleiten, wird erst alles in eine Datei geschrieben und anschließend der Inhalt der Datei im Fenster gelistet. Die Geschwindigkeit, mit der die Daten im Fenster erscheinen, ist allerdings atemberaubend langsam. Als Begründung für dieses träge Verhalten wird angegeben, daß hier ausschließlich GEM-Routinen zum Einsatz kommen, doch zeigen andere Programme, daß sich mit geringem Aufwand dieser Prozeß erheblich beschleunigen läßt.

Damit dem Anwender auch aus GEM-Programmen heraus die C-Shell zur Verfügung steht, gehört ein Accessory zum Lieferumfang, das dies erledigt. Somit ist sichergestellt, daß man wenigstens ein GEM-Programm im Multitaskingbetrieb laufen lassen kann.

Schnellstens vergessen sollte man das Handbuch, das lediglich die nötigsten Erklärungen enthält. Die Hinweise zu den einzelnen Kommandos sind bestenfalls als Referenz zu gebrauchen. Da ist es besser, man kauft sich das Online-Manual zur MT C-Shell, das zwar auch keine weiterführenden Erklärungen enthält, dafür aber das ewige Blättern erspart. Außerdem bleibt dem gestreßten Programmierer etwas mehr Platz auf seinem Schreibtisch.

Wer ohne ein detailliertes Handbuch nicht auskommt, dem empfiehlt der deutsche Distributor der Beckemeyer-Produkte das Buch »Keine Angst vor UNIX« [1], in dem alles Wissenswerte ausführlich erläutert wird.

Die Micro-C-Tools, das Make-Utility, das Online-Manual und der VSH-Manager sind nicht alle für die MT C-Shell verfügbaren Erweiterungen. Seit Juli ist nun auch ein umfangreiches »Software Development System« und ein »UUCP-Paket« erhältlich.

Das Development System erlaubt es dem Anwender, auf die internen Funktionen und Datenstrukturen der MT C-Shell zuzugreifen und so die Multitasking-Fähigkeiten voll auszuschöpfen. Die C-Bibliothek, die auch als Quelltext im Mark Williams-Format vorliegt, enthält beispielsweise Funktionen für die Prozeß-Kommunikation, für das File-und Record-Locking und eine Terminalunabhängige I/O-Bibliothek. Außerdem enthält die Bibliothek eine Vielzahl von Funktionen, die das Portieren von UNIX-Programmen erleichtern.

Viele UNIX-Computer sind in einem weltweiten Kommunikationsnetz, dem UUCP/Usenet, auf freiwilliger Basis miteinander verbunden. Das UUCP-Paket (Unix-to-Unix-CoPy) von Beckemeyer erlaubt es, den ST in dieses etwa 10000 Computer umfassende Netz einzubinden und so mit über einer Million Teilnehmern zu kommunizieren. Weiter erreicht man über UUCP/Usenet auch andere weltweite Nachrichtennetze wie Bitnet, DAILCOM oder GEONET.

Durch den modularen Aufbau der MT C-Shell ist der Programmierer in der Lage, den ST nach und nach mit einer UNIX-Shell zu versehen. Allerdings erscheinen die 951 Mark, die man für den Maximalausbau zu zahlen hat, doch sehr hoch gegriffen. Außerdem muß man sich noch einen C-Compiler zulegen, bevor man munter drauflosprogrammieren kann. Wer sich aber mit der MT C-Shell alleine begnügt, besitzt für knapp 300 Mark ein Programmierwerkzeug, das den ST in eine Multitasking-fähige UNIX-Maschine verwandelt. (uh)

[I] Christine Wolfinger, Keine Angst vor UNIX, VDI-Verlag, ISBN 3-18-400839-8, 49 Mark

Bezugsquelle: Computerwarc Gerd Sender, Moselstr. 39, 5000 Köln 50

if ($MTDRV == MTDRV) then echo "Install fails: MT C-Shell Version 1.10 required. Press RETURN" set x = $< exit 1 endif echo "MT C-Shell UUCP Installation" set a='n' while ($a != 'y') echo "What is the node name of your computer (6 chars max)?" set x = $< echo echo "You said $x. Is this correct (y/n)?" set a=$< end cp \init?.prg SMTDRV cp \etc\* $MTDRV\etc cp \bin\mail.prg $MTDRV\bin cp \bin\uucico.prg $MTDRV\usr\1ib foreach i (cu uucp uuxqt rmail) cp \bin\$i.prg $MTDRV\usr\bin end mkdir $MTDRV\usr\spool\uucp cp \l.sys $MTDRV\usr\spool\uucp cp \uucp.ctl $MTDRV\usr\spool\uucp echo "nodename $x" >>$MTDRV\usr\spool\uucp\uucp.ctl mkdir $MTDRV\usr\spool\uucp\bdt mkdir $MTDRV\usr\spool\uucp\$x echo "UUCP Instalation complete. Restart MT C-Shell before use."

Diese Script-Datei installiert das UUCP-Paket mit nur einer Befehlseingabe

Wertung

Name: MT C-Shell
Preis:
MT C-Shell 298 Mark
Micro Make 98 Mark
Micro C-Tools 79 Mark
Online Manual 59 Mark
VSH-Manager 119 Mark
UUCP 139 Mark
Software Development System 159 Mark
Hersteller: Beckemeyer Development Tools

Stärken:
□ Multitasking-/Multiuserfähig □ Paßwortschutz □ Befehls-Syntax ist UNIX-kompatibel

Schwächen:
□ unzureichende englische Dokumentation □ Gesamtsystem relativ teuer

Fazit: Mit dieser Shell fühlt sich jeder UNIX-erfahrene Programmierer auf dem ST sofort zu Hause. Die MT C-.Shell bietet außerdem eine relativ günstige Gelegenheit, sich mit UNIX vertraut zu machen.



Aus: ST-Magazin 09 / 1988, Seite 138

Links

Copyright-Bestimmungen: siehe Über diese Seite