Neue Programmiersprachen sind ein Abenteuer, die zum Experimentieren herausfordern. Zum Ausprobieren aber lohnt sich keine teure Software. Deshalb stellen wir Public Domain° Sprachen vor, die es fast kostenlos gibt.
Public Domain heißen Programme, bei denen die Autoren auf ihr Vermarktungsrecht verzichten. Diese Programme dürfen deshalb frei kopiert und an andere Computerfreaks weitergegeben werden, Neben allen möglichen Programmen - angefangen von Spielen bis hin zu sehr speziellen Utilities - gibt es auch Programmiersprachen als Public Domain.
Warum verzichten manche Programmierer auf das Geld? Die meisten dieser Programme stammen aus den USA. Dort haben Computerbesitzer eine etwas andere »Mentalität« als hier in Europa. Dort steht häufig nicht der »schnöde Kommerz« im Vordergrund, sondern Idealismus und das Gefühl, einer »Freakemeinde« anzugehören. Andere Programme wurden für staatliche Behörden entwickelt - etwa ein Lisp-Interpreter für das amerikanische Energieministerium - und sind nun für den Hobbyeinsatz freigeben.
Eine besondere Spielart der Pulio Domain ist die »Shareware« oder »Freeware«. Darunter versteht man Programme, die beliebig weiterverbreitet werden dürfen. Will aber ein Computeranwender ein Programm einsetzen, so wird er im Titelbild gebeten, dem Programmierer ein Anerkennungshonorar zu schicken oder zu überweisen. Als »Belohnung« erhält der »Kunde« dafür oft verbesserte Versionen, eine detaillierte Anleitung zum Programm, telefonische Unterstützung bei Problemen mit der Software oder auch den Quellcode von compilierten Programmen.
Einige hundert Disketten voll freier Software - darunter natürlich auch viele mit Programmiersprachen - sind schon einen näheren Blick wert. Public Domain-Software unter CP/M wurde und wird meistens von User-Groups zusammengestellt. Die aktivste von ihnen ist die SIG/M-User-Group mit weit über zweihundert Disketten. Daneben gibt es noch die CP/M-User-Group (etwa 90 Disketten) und kleinere Vereinigungen von Hobbyfreunden wie beispielsweise Pico-Net und die Pascal-User-Group. Aus dem riesigen Angebot haben wir einige wirklich interessante Programme für Sie herausgesucht. Dabei handelt es sich ausschließlich um CP/M-Programme. Besitzer der SchneiderComputer und des Commodore 128 sind somit besonders angesprochen. In Amerika gibt es natürlich auch massenhaft Public DomainSoftware für MS-DOS-Geräte. Da diese im Heimbereich in Deutschland - zumindest heute - keine Rolle spielen, haben wir uns auf CP/M beschränkt. Im ,folgenden geben wir Ihnen einen Überblick über einige Public Domain-Disketten und geben Tips, welche Programme angepaßt oder neu compiliert werden müssen. Die erste Diskette, die ein Public Domain-Fan ins Auge fassen soll, ist die SIG/M Diskette 067.
»SMFORTH1.ASM« ist ein extrem kurzer Forth-Interpreter, dessen Objektcode nur 2 KByte lang ist. Dementsprechend kann man nicht allzu viel von ihm erwarten. Die grundlegenden Elemente von Forth sind aber implementiert. Das Programm muß vor dem ersten Start assembliert werden. Dazu benötigen Sie »MAC.COM« und »HEXCOM. COM« oder ähnliche Assembler. Wer nur CP/M 2.2 benutzen will, kann aber auch dort Mac und Hexcom verwenden. Diese nutzen nämlich keine spezifischen Eigenschaften des Betriebssystems aus. Mit
A> MAC SMFORTHl
A> HEXCOM SMFORTHl
assemblieren Sie Small-Forth.
»REZ7/31.ASM« ist eine Fortentwicklung des berühmten 8080-Disassemblers »Resource«. Er ist eines der Glanzstücke der Public Domain und wurde immer wieder verbessert. In der Urform stammt das Programm von Ward Christensen. Im Gegensatz zu den eher rudimentären Fähigkeiten der Systemdebugger »SID.COM« und »DDT.COM« ist »Resource« ein echtes Superprogramm, So erkennt es automatisch Texte im Speicher, wenn diese länger als acht Byte sind. Mit wirklich erstaunlicher Treffsicherheit unterscheidet er Programmcode und Datenbereiche. Daneben setzt er automatisch Labels und schreibt eine voll assemblierfähige Quellcode-Datei. In der Datei »REZ7/31.DOC« finden Sie eine genaue Bedienungsanleitung. »REZ7/31.ASM« muß vor dem ersten Start mit Mac assembliert werden.
A> MAC REZ7/31
A> HEXCOM REZ7/31
Sie dürfen aber auch die CP/M 2.2-Programme »ASM.COM« und »LOAD.COM« benutzen, wenn Sie die TITLE-Zeile im Quellcode ersatzlos streichen. Einen kompletten Pascal-Compiler finden Sie auf SIG/M Diskette 082. Dabei handelt es sich um JRT Pascal, dessen Nachfolger unter dem Namen NevadaPascal professionell vertrieben wird. Die Diskette kann auf dem Schneider ohne jede Anpassung benutzt werden. Das Programm »JRTPAS2.COM« stellt den eigentlichen Pascal-Compiler dar, der eine ».INT«-Datei erzeugt. Mit »EXEC.COM« werden compilierte Programme aufgerufen. Funktionen wie EXP, SIN, COS und TAN stehen in einer Bibliothek auf der Diskette und werden bei Bedarf nachgeladen. Durch den sehr intelligenten Algorithmus stehen nur die am häufigsten benötigten Funktionen und Prozeduren im Speicher. Dabei dürfen die Programme nahezu unendlich groß werden - so groß wie die Kapazität aller angeschlossenen Diskettenstationen.
Besitzer des Mikrosoft-Makroassemblers MACRO-80 (»M80.COM« und »L80.COM«) finden auf den drei SIG/M Disketten 088, 089 und 090 mit » SYSLIB« (»System Library«) eine der vollständigsten Makrosammlungen, die es überhaupt gibt. Alles was man jemals zur Programmierung in Maschinensprache benötigt, findet man. Von verschiedenen Sortieralgorithmen, Rechenroutinen, Zufallszahlen, Dateizugriffen, bis zum Einlesen des Directory - einhundertdreißig hochgradig optimierte Maschinenroutinen stehen auf den drei Disketten, Zusätzlich wurde das komplette Handbuch als Wordstar-Dateien (etwa 250 KByte) abgelegt. Bei vielen Routinen fällt das Umschreiben auf den Assembler »MAC.COM« und »ASM.COM« nicht schwer. »DASM.COM« auf SIG/M Diskette 091 ist eine assemblierte und weiterentwickelte Version des Ressource-Disassemblers. Allerdings fehlt hier die Dokumentation, so daß man sich trotzdem die Diskette 67 zusätzlich besorgen muß. Als eines der wenigen CP/M-Programme ist »DASM.COM« nicht auf den 8080-Code, sondern auf Z80-Mnemonics ausgerichtet. Der Quellcode wird mitgeliefert. Des weiteren enthält die Diskette 91 einen der besten Diskettenmonitore, der je geschrieben wurde.
»DUTIL.COM« (ein Nachfolger von »DU.COM«) ist eine richtige kleine Programmiersprache samt Makrobefehlen und Wiederholungsschleifen. Das erlaubt die komfortable Manipulation jedes einzelnen Sektors auf der Diskette.
»DUTIL.COM« arbeitet allerdings nicht unter CP/M-Plus. Für Besitzer des Schneider CPC 6128 kein Problem, denn dieser arbeitet auch unter CP/M 2.2 (Seite 4 der Systemdisketten). »XLATE2.COM« ist ein sehr nützliches Programm, das Quellcode-Dateien aus dem 8080- Assembler in Z80-Code übersetzt. Die Diskette 91 ist übrigens von den besprochenen Disketten am umkompliziertesten zu handhaben - »Load and Run« heißt das Motto. »PISTOL« (»Portably Implemented Stack-Orientated Language«) auf SIG/M Diskette 114 ist eine Forthähnliche Sprache, die aber einige Vorteile gegenüber Forth besitzt. So ist die Fehlerkontrolle wesentlich ausgeprägter als in Forth. Pistol liegt sowohl in C-Quellcode als auch in lauffähiger Form vor. Zu Pistol gehört eine ausführliche Einführung in diese hochinteressante Programmiersprache. Fasziniert Sie die Künstliche Intelligenz? Falls Sie bisher vor der Anschaffung eines Lisp-Interpreters wegen der damit verbundenen hohen Kosten zurückgeschreckt sind, hilft Ihnen SIG/M Diskette 118. »XLISPCOM« ist ein leistungsfähiger Interpreter für die Sprache, in der viele Anwendungen der »Artificial Intelligence« programmiert sind. XLisp ist sowohl als Quellcode in C sowie auch als direkt startbare COM-Datei vorhanden. Testen können Sie die Rechenfähigkeiten von LISP bei der »Polnischen Notation«. Forth verwendet ja bekanntlich die »Umgekehrte Polnische Notation«.
Die Theorie des Compilerbaus ist eine Domäne des Züricher Professors Niklaus Wirth. Zwei Beispiele für tatsächliche lauffähige Compiler finden Sie auf SIG/M Diskette 162. PL/0 (»PLO.COM«) ist eine abgemagerte Version der Programmiersprache PL/1. Bei Concurrent Pascal-S handelt es sich um einen Pascal-Compiler, der Multitasking kennt. Das bedeutet, daß gleichzeitig mehrere Pascal-Prozeduren bearbeitet werden können. Zum realen Programmieren eignen sich beide Compiler weniger. Sie sind aber ausgezeichnete Demonstrationsprogramme für alle, die wissen wollen, wie ein Compiler funktioniert oder gar mit dem Gedanken spielten, selbst einen zu schreiben. Die Quellcodes sind - wie könnte es bei Niklaus Wirth anders sein - in Pascal geschrieben.
Es gibt aber noch weitere UserGroups, die Public Domain-Software zur Verfügung stellen. Wenn Sie auch unter CP/M in Basic programmieren wollen, finden Sie unter Public Domain mehrere Basic-Interpreter und -Compiler. Das Lawrence Livermore-Basic auf CP/M UG Diskette 2 hat die stattliche Länge von 38 KByte im Objektcode. Das ist allerdings übertrieben. Der Interpreter ist nämlich nur 8 KByte lang, wird aber unsinnigerweise an die Adresse 32768 geladen. Der BasicInterpreter wird mit »LLLBASIC. COM« gestartet. Er verarbeitet auch Fließkommazahlen. Beachten müssen Sie, daß in LliBasic alle Befehle in Großbuchstaben eingegeben werden müssen. Leider fehlen bei L11Basic sowohl Dokumentation als auch Beispielprogramme. Einen anderen Weg als das interaktive L11Basic geht der Basic-Compiler Basic-E auf CP/M UG Diskette 5. Dieser übersetzt die Programme zuerst mit einem Compiler in eine INT Datei. Diese wird dann mit einer Laufzeitroutine ausgeführt. So gibt es dann auch zwei Compiler (»BAS2-0.COM« und »BAS2-1.COM«) und drei Interpreter (»RUN2-2COM«, »RUN2-3. COM«und » RUNK2-0.COM«) auf der Diskette. Das Basic ist im Prinzip genauso leistungsfähig wie MicrosoftBasic, kennt aber einige Befehle mehr. Einige Erweiterungen erinnern an CBasic. Beispiele für BasicEFähigkeiten sind der wahlweise Verzicht auf Zeilennummern und die Fähigkeit, mehrdimensionale Datenarrays und Dateizugriffe, Zufallszahlen, lange Variablennamen, Strings mit LEFT$, RIGHT$ und MID$, IFTHEN-ELSE, mehrere Befehle in einer Programmzeile, Unterprogramme und so weiter zu verwenden. Erklärt wird alles am Beispielprogramm »OTHELLO.BAS«. Sie können es compilieren und dann starten.
A> BAS2-0 OTHELLO $B
BASIC-E COMPILER VER 2.0
0 ERRORS DETECTED
A>RUNK2-0 OTHELLO BASIC-E INTERPRETER: VER K2.0
Is this a new game or old?
Des weiteren findet man auf der Diskette die Quellcodes der CP/M-Teile »LOADPLM«, »CCPPLM« und »BDOS.PLM«. Dabei handelt es sich allerdings um die uralte Version von CP/M aus dem Jahr 1975. Man nimmt aber mit Erstaunen_zur Kenntnis, daß das CP/M-Betriebssystem gar nicht in Maschinensprache codiert wurde, sondern in PL/M. CP/M UG Diskette 10 enthält eine verbesserte Version des Lawrence Livermore-Basic. Es belegt in dieser Version auch auf der Diskette nur noch 7 KByte. Und Sie erhalten einige Tips zur Bedienung des Interpreters. Um ihn zu starten, muß nach seinem Namen ein Dateiname stehen. Das gilt auch, wenn Sie diese Datei gar nicht bearbeiten wollen.
Sobald der Interpreter seine Eingabebereitschaft signalisiert,, geben Sie den Befehl »PTAPE« an. Dann wird das Programm »TEST. FIL« in den Speicher geladen und kann gelistet (LIST) oder gestartet (RUN) werden. Der Befehl NEW existiert beim L11Basic unter dem Namen SCR (Scratch).
Allgemein gilt, daß Sie Eingabefehler nicht mit DEL korrigieren können, sondern mit CTRL-H. Das bezieht sich übrigens auch auf die anderen erwähnten Basic-Interpreter wie beispielsweise das Basic/5. Basic/5 auf CP/M UG Diskette 11 ist ein Interpreter. Er belegt nur 5 KByte im Speicher. Die Dokumentation für das Programm ist erstaunlich umfangreich und steht in der Datei »BASIC/5.DOC«. Basic/5 kennt neben den üblichen Befehlen auch Zugriffsmöglichkeiten auf die Diskettenstation, PEEK, POKE, INP und OUT sowie eine Fehlerbehandlungsroutine mit TRAP. Diskettendateien werden mit UNSAVE gelöscht. Fließkommazahlen sind mit einer Nachkommastelle erlaubt.
Zum Schluß deshalb nur noch ein paar Hinweise auf weitere interessante Programme. Es gibt mehrere Versionen eines Small-C-Compilers (nicht identisch mit dem kommerziell vertriebenen Produkt aus Dr. Dobbs), verschiedene Forth-Interpreter, die Unterrichtssprache Pilot (»Programmed Inquiry, Learning or Teaching«) oder auch Stoic (»Stack Orientated Interactive Compiler). Quellen für Public Domain-Software finden Sie regelmäßig auf unserer Public Domain-Seite.
Elisabeth Stenzel/hg