home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
languages
/
oberon
/
liesmich
< prev
next >
Wrap
Text File
|
1990-10-11
|
19KB
|
533 lines
12. August '90
OBERON V1.16 (eingeschränkte Version)
Vorwort:
Vor Ihnen liegt eine frei kopierbare Demo-Version eines leistungsfähigen
Compilers für eine der modernsten objektorientierten Sprachen. Oberon ist
die neuste Entwicklung von Prof. Dr. Niklaus Wirth an der ETH Zürich. Diese
Sprache entstand dort innerhalb eines Projekts, das sich das Ziel setzte,
die Leistungsfähigkeit der Sprache Modula-II zu vergrößern und gleichzeitig
ihre Komplexität zu verringern. Dazu wurde Oberon um das Konzept der
Typerweiterung ergänzt, wodurch objektorientiertes Programmieren ähnlich
wie in Smalltalk oder C++ möglich wird, während jedoch die gewohnte
Notation aus Modula-II und Pascal größtenteils beibehalten wird.
Dieser Compiler hat einige herausragende Fähigkeiten, die von anderen
Compilern kaum erreicht werden:
- Der Compiler ist durch das Single-Pass Konzept sehr schnell. Dennoch
erzeugt er durch eine sorgfältige Auswahl an Optimierungen kurzen und
schnellen Code.
- Die Objektdateien sind ALink- bzw. BLink- kompatibel. Dadurch sind sie
sehr flexibel einsetzbar und die Einbindung von Routinen aus anderen
Sprachen, wie Assembler und C, wird leicht möglich.
- Oberonprogramme werden optimierend gelinkt. Es kommen also keine
Prozeduren, die niemals aufgerufen werden, in das ausführbare Programm,
so daß dieses meist recht kurz wird. Ein 'leeres' Oberonprogramm ist
zum Beispiel weniger als ein halbes Kilobyte lang.
- Programme, die mit diesem Compiler entwickelt wurden, sind sehr sicher
im Laufzeitverhalten, da der Compiler massiv Überprüfungscode einsetzt,
um möglichst alle Fehler abzufangen. Fehler führen in den meisten
Fällen nicht zur Guru-Meditation, sondern werden durch das
Laufzeitsystem abgefangen.
- Um problemlos auf das Amiga-Betriebssystem und alle Resourcen zugreifen
zu können, wurde die Sprache um Amiga-spezifische Typen ergänzt.
- Es stehen viele Bibliotheksmodulen zur Verfügung und es werden ständig
neue Module geschrieben, die dann als Zusatzpakete erhältlich sein
werden, oder auf Public Domain Disktten erscheinen.
- Alle Oberonprogramme können resident geladen werden.
- Dieser Compiler erzeugt voll reentrante (pure) Programme durch das Setzen
einer einzigen Compileroption. Die einzige Einschränkung dabei ist,
dastheksmodulen zur Verfügung und es werden ständig
neue Module geschrieben, die dann als Zusatzpakete erhältlich sein
werden, oder auf Public Domain Disktten erscheinen.
- Alle Oberonprogramme können resident geladen werden.
- Dieser Compiler erzeugt voll reentrante (pure) Programme durch das Setzen
einer einzigen Compileroption. Die einzige Einschränkung dabei ist,
das der Bereich der globalen Variablen kleiner als 32K sein muß.
Dieser Compiler ist also ein ideales Werkzeug, um effektiv kleine und große
Programme zu entwickeln. Durch die objektorientierten Eigenschaften kann
eine einmal aufgebaute Modulbibliothek leicht für neue Projekte verwendet
und die früher definierten Objekte können leicht an die neuen Aufgaben
angepasst werden.
Einschränkungen der Demo-Version:
Diese Version des Compilers soll Sie in die Lage versetzen, ein paar kleine
Programme in Oberon zu schreiben und etwas in den Compiler und seine
Fähigkeiten hineinuzuschnuppern. Ich muß jedoch auch von irgend etwas Leben
und kann den Compiler daher nicht voll der Öffentlichkeit zur Verfügung
stellen. Daher wurden in dieser Version ein paar Einschränkungen eingebaut,
die ein sinnvolles Arbeiten über längere Zeit unmöglich machen sollen und
Sie damit zwingen, sich die vollständige Version zu kaufen. Die
Einschränkungen im einzelnen:
- Es wird nur ein kleiner Teil der Modulbibliothek und der Amiga
Interface-Module mitgeliefert
- Die Anleitung ist knapp und wenigsagend gehalten und zudem nicht
gedruckt.
- Der Compiler läuft Montags nicht
- Der Quelltext je Modul darf höchstens 10K lang sein
- Der erzeugte Programmcode je Modul darf höchstens 5K lang werden
- Der Bereich der globalen Variablen je Modul ist auf 3K beschränkt
- Der Bereich der Stringkonstanten je Modul ist auf 1K beschränkt
- Ein Modul kann maximal 6 andere Module importieren
- Der Editor kann höchsten 200 Zeilen Text bearbeiten
Es ist sicher für Hacker kein Problem, diese Einschränkungen
herauszupatchen. Jede Änderung an den Programmen, Texten und sonstigen
mitgelieferten Datein ist jedoch untersagt, sowie der Besitz, die
Verwendung oder Verbreitung von veränderten Versionen der Programme und
Dateien. Es ist sicher einfacher, sich eine Raubkopie des Compilers zu
besorgen, als die Einschränkungen herauszupatchen. Strafbar macht man sich
dabei gleichermaßen.
Die Diskette enthält folgende Dateien:
LiesMich
: Diese Datei
ReadMe
: Englische Dokumentation
Oberon-Report
: Der Revised-Oberon-Report, direkt von der ETH Zürich
ModulaToOberon
: Der Text "From Modula To Oberon", auch von der ETH.
Install
: Script-File zur einfachen Installation des Compilers
Oberon
: Der Compiler
OLink
: Utility zum Linken von Oberon-Programen, ohne alle
Modulnamen in BLink eintippen zu müssen.
OEd
: Der Editor zum Compiler
OErr
: Sind während der Compilation eines Programms Fehler auf-
getreten, können sie mit diesem Programm angesehen werden.
ExeIcon
: IconX-Ähnliches Programm
BLink
: Der Linker
BLink.doc
: Englische Dokumentation zum Linker
Path:
Pfaddatei für Compiler und OLink
Fehler-Meldungen:
Die Fehlermeldungen. Wird von OEd und OErr beim Anzeigen
von Fehlern gebraucht.
Demos (dir)
: Demoprogramme:
Pute
: CLI-Taschenrechner, berechnet INTEGER-Ausdrücke wie
103 MOD 32 * (98 DIV 3) DIV 2 - 7
Cube
: 3D-Demo: Würfel
Amok
: 3D-Demo: AMOK-Schriftzug
Sparks
: Liniendemo
Hello
: Einfaches Hello-World Demo
Icons (dir)
: Dieses Directory enthält die Icons der Oberondateien.
Diese werden vom Compiler, Linker etc. bei bedarf
kopiert.
c (dir)
: Commando-Directory, enthält nur MuchMore
libs (dir)
: Zusätzlich benötigte Library: arp.library
sym, obj (dir)
: Symbol- und Objektdateien der mitgelieferten Module.
Außer den Amiga-Interfacemodulen sind folgende Module
enthalten:
- OberonLib: Oberon Basismodul, wird automatisch in
alle Programme eingebunden
- io: Standard Ein-/Ausgabe Modul
- NoGuru: Wird dieses Modul importiert, werden
Laufzeitfehler im Klartext ausgegeben.
obj (dir)
: Objektdateien der mitgelieferten Module
Modules (dir)
: Quelltexte der Oberon-Module Intuition.mod, Graphics.mod,
Dos.mod und Exec.mod und die automatisch erzeugte Defini-
tionsdatei io.def.
Alle Programm dieser Diskette, mit der Ausnahme von BLink, wurden in
Oberon geschrieben und mit diesem Compiler entwickelt.
Verwendete Dateinamen:
Die OBERON-Dateien haben folgende Endungen:
Module / Programme: '.mod'
Symboldatei: '.sym'
Objektdatei: '.obj'
Objektdatei, bei kleinem Datenmodell: '.objs'
Linkdatei (ruft BLink auf): '.lnk'
Withdatei für BLink: '.wth'
Executeable: ''
Installation des Compilers:
Der Compiler kann einfach durch Doppelklicken des 'Install'-Icons
installiert werden. Dabei wird die arp.library (von OEd benötigt) in das
LIBS:-Verzeichnis kopiert und das logische Device OBERON: auf die
Oberon-Diskette gesetzt.
Wer vom CLI arbeitet, sollte zudem noch "PATH OBERON: ADD" eingeben.
Der Editor OEd:
Dieser Editor unterstützt besonders die Entwicklung von Oberonprogrammen.
Er kann leicht mit der Maus bedient werden, erlaubt das gleichzeitige
Bearbeiten mehrere Texte, enthält einen Oberon-Syntaxchecker, erlaubt das
Starten von Compiler, Linker und compiliertem Programm und kann die
Fehlermeldungen des Compilers anzeigen.
Starten von OEd:
Aufruf:
OEd {-{i|t#|x#|y#|w#|h#|d#|s|l}} {<Text>}
Gestartet wird OEd einfach durch Doppelklick auf sein Icon oder durch
Eingabe von "OEd" im CLI. Werden Argumente übergeben, oder wurden von der
Workbench zuvor Texte angeklickt und OEd mit gedrückter Shift-Taste
doppelgeklickt, dann werden die angewählten Texte automatisch in jeweils
ein Fenster geladen. Beim WB-Start können die Optionen mit Hilfe von
Tool-Types eingestellt werden (Icon anklicken und Info im Menü wählen).
Beim Start vom CLI können noch weiter Optionen angegeben werden. '-i'
erzwingt, das Icons erzeugt werden. '-t#' setzt die Tabulatorweite auf '#'.
'-x#', '-y#', '-w#' und '-h#' legen die Größe des OEd-Fensters fest. Ist '-s'
gesetzt, öffnet OEd einen eigenen Screen. '-d#' setzt die Tiefe dieses
Screens und '-l' sorgt dafür, das ein Interlace-Screen geöffnet wird.
Die Titelzeile des Textfenster dient als Statuszeile. Sie zeigt wichtige
Informationen, wie Fehlermeldungen, Cursorposition, Textlänge und den
Dateinamen an.
Die Tastenbelegung:
Cursortasten (die Tasten mit den Pfeilen):
Wie Sie sich vielliecht schon gedacht haben, kann man mit diesen Tasten
den Cursor im Text bewegen.
mit Alt: wort / seitenweises Springen
mit Shift: An Text- bzw. Zeilen-Anfang bzw. -Ende.
Backspace (die Taste rechts oben mit dem Pfeil nach links):
löscht Zeichen links vom Cursor.
Del:
löscht Zeichen unter Cursor. Mit Shift: löscht Zeile. Mit
Control: löscht alles rechts vom Cursor.
Return:
Neue Zeile unterhalb Cursor einfügen.
TAB:
Springt zur nächsten, mit Shift zur vorigen, Tabulatormarke.
Control+'S':
Zerteilt (splittet) Zeile an Cursorposition in 2 Zeilen.
Control+'J':
Vereinigt (joint) 2 Zeilen.
Die Maus:
Linke Taste Kurz drücken: Cursor setzten.
Linke Taste länger drücken und Maus bewegen: Block markieren.
Die Menüs:
Das Projekt Menu:
Load (Amiga + 'L'): Text Laden
New Window (Amiga + 'W'): Neues Textfenster öffnen
Save (Amiga + 'S'): Text unter altem Namen speichern
Save As (Amiga + 'V'): Text unter neuem Namen speichern
Save block (Amiga + 'O'): Block speichern
Insert File (Amiga + 'I'): Textdatei einfügen
Quit (Amiga + 'Q'): Editor verlassen
About (Amiga + 'J'): Infos zum Editor ausgeben
Das Search Menu:
Find (Amiga + 'F'): String einlesen und danach suchen
Next (Amiga + 'N'): Zum nächsten Vorkommen des Suchstrings
Previous (Amiga + 'P'): Zum vorigen Vorkommen des Suchstrings
FindRep (Amiga + 'G'): 2 Strings einlesen: Danach 1. durch 2.
String ersetzen
NextRep (Amiga + 'R'): Nächstes Vorkommen von String 1 durch
String 2 ersetzen
PrevRep (Amiga + 'H'): Voriges Vorkommen von String 1 druch String
2 ersetzen
Das Block Menu:
Begin (Amiga + 'B'): Block-Anfang-Marke setzen
End (Amiga + 'E'): Block-Ende-Marke setzen
Copy (Amiag + 'Y'): Block kopieren
Move (Amiga + 'M'): Block verschieben
Delete (Amiga + 'D'): Block löschen
TAB right (Ctrl + 'R'): Block um TAB nach rechts
TAB left (Ctrl + 'L'): Block um TAB nach links
Unmark (Amiga + 'U'): Blockmarkierung löschen
Das Oberon Menu:
Parse (Amiga + 'A'): Oberonsyntax überprüfen. Evt. zur
fehlerhaften Stelle springen. Mit Parse
können Syntaxfehler schnell gefunden
werden, bevor ein Text compiliert wird.
Compile (Amiga + 'C'): Compiliert den Text. Dieser muß zuvor
abgespeichert werden.
Link (Amiga + 'K'): Linkt den compilierten Text mit OLink
Execute (Amiga + 'X'): Führt das gelinkte Programm aus.
Next Error (Amiga + 'T'): Traten bei Compilation Fehler auf, springt
'Next Error' zum nächsten Fehler hinter der
Cursorposition. Fehler wird in Statuszeile
angezeigt.
First Error (Amiga + 'Z'): Springt zum ersten Fehler
Der Compiler Oberon:
Start des Compilers:
Aufruf aus dem Editor:
Im Editor kann der Compiler einfach durch Anwahl des Menüpunktes
'Compile' gestartet werden.
Aufruf vom CLI:
Wer mit dem CLI arbeitet, sollte das aktive Verzeichnis mit dem
CLI-Befehl 'CD' zunächst auf das Verzeichnis setzen, das die Quelltexte
oder das 'txt'-Unterverzeichnis enthält.
Der Compiler benötigt normalerweise mehr als 4 KByte Stapelspeicher. Der
Stapel sollte daher mit dem CLI-Commando 'stack' auf 10000 bis 20000
Bytes gesetzt werden.
Nun kann der Compiler mit folgender Syntax gestartet werden:
Oberon { [-dmsvbcrnti] <Quelltext> }
<Quelltext> ist der Text, der compiliert werden soll. Dabei kann die
Endung '.mod' weggelassen werden. Befindet sich der Quelltext in dem
Unterverzeichnis mit dem Namen 'txt', wird er automatisch von dort
geholt.
Die Optionen ('[-dmsvbcrnti]') beziehen sich auf alle Quelltexte, die
rechts von ihnen stehen. Sie haben folgende Wirkung:
Option Wirkung
'-d' Kleines Daten-Modell, erzeugt reentrante (pure) Programme
maximal 32K globale Variablen
'-m' Kleines Code-Modell, maximal 32K Code.
'-s' Stackkontrolle ausschalten
'-v' Überlaufskontrolle ausschalten
'-b' Bereichskontrolle ausschalten
'-c' Caseindex-kontrolle ausschalten
'-r' Returnkontrolle ausschalten
'-n' Nil-Zeiger-Kontrolle ausschalten
'-t' Typkontrolle ausschalten
'-i' Icons erzeugen
Wurde der Compiler ohne Parameter gestartet, gibt er den Prompt 'in>' aus
und wartet auf die Eingabe des Quelltextnamens. Verlassen wird der
Compiler dann einfach durch Drücken von <Return>.
Aufruf von der Workbench:
Wird der Compiler von der Workbench gestartet, müssen die Quelltext bei
gedrückter Shift-Taste angeklickt und danach der Compiler doppelgeklickt
werden.
Von der Workbench sollte der Compiler nicht ohne Parameter aufgerufen
werden, da er dann die Objekt- und Symboldatein nicht in das Verzeichnis
schreibt, in dem sich die Quelltexte befinden, sondern in das
Verzeichnis, in dem sich der Compiler selbst befindet. Dies ist meist
nicht erwünscht.
OLink:
OLink vereinfacht den Aufruf von BLink. Wer mit der Workbench arbeitet
kann OLink starten, indem er einfach das Icon der vom Compiler erzeugten
Objektdatei doppelklickt.
Vom CLI ist der Aufruf folgendermaßen:
OLink [-bsmdi] <Objektdatei>
Objektdatei ist die vom Compiler erzeugte Objektdatei des Hauptmoduls.
Die Optionen haben folgende Funktion:
-b BLink nicht starten
-s BLINK mit Optionen SMALLCODE und SMALLDATA aufrufen.
-m sollte gesetzt werden, wenn mit kleinem Code-Modell compiliert wurde
-d muß gesetzt werden, wenn mit kleinem Daten-Modell compiliert wurde
-i Icons erzeugen
OErr:
OErr zeigt die Fehler an, beim Compilieren aufgetreten sind.
Aufruf: OErr {Quelltext}.
Abweichungen vom OBERON-Report:
- Speicher wird wie in Pascal mit NEW() und DISPOSE() verwaltet und nicht
mit Garbagecollections. Ich denke, daß eine Implementierung des
Garbage-Collection System auf dem Amiga kaum möglich und wenig sinnvoll
ist.
- Die Typeguards werden während der Compilationszeit und nicht, wie auf
der CERES (Oberon-Rechner der ETH Zürich) Maschine, während des Ladens
eines Programms festgelegt.
Copyright:
Diese Diskette darf frei kopiert werden. Sie darf unverändert
weitergegeben werden, solange dafür keine Gebühren verlangt werden.
Es dürfen keine Änderungen an den Programmen und den Dateien dieser
Diskette vorgenommen werden. Veränderte Versionen dieser Programme dürfen
weder verwendet noch weiter verbreitet werden.
Die Programme dürfen nur zusammen mit der gesamten Diskette weitergegeben
werden. So ist es z.B. untersagt, den Editor herunterzunehmen und allein
weiterzugeben, obwohl der Editor auch ohne den Compiler funktionsfähig
ist.
Die Texte von Niklaus Wirth dürfen auch allein verbreitet und z.B. in
Mailboxen hochgeladen werden. Dabei dürfen sie jedoch nicht verändert
werden und es sollte sichergestellt werden, daß sie nicht verändert
werden (durch eine entsprechende Notiz).
BLink und BLink.doc stammen von der Software Distillery. Sie dürfen auch
ohne diese Diskette, jedoch nur zusammen und unverändert, vertrieben
werden.
Alle anderen Dateien sind © 1989/1990 by Fridtjof Siebert
Nobileweg 67
D-7000 Stuttgart 40.
Deutschland
Unrechtmäßige Verwendungen der Dateien werde ich strafrechtlich verfolgen
lassen.
Für Hinweise auf Fehler in meinen Programmen bin ich jederzeit dankbar.
Ich kann nicht garantieren, daß ich genügend Zeit finde, mich mit allen
Zuschriften zu befassen. Daher bitte ich darum, Anfragen an die A+L AG zu
richten, und mich nicht unnötig vom Programmieren abzuhalten. Ich nehme
keine telofonischen Anfragen entgegen.
Der Autor übernimmt keinerlei juristische Verantwortung oder Haftung
jeglicher Art für die Korrektheit und Tauglichkeit der Programme und
Dateien. Für Schäden, die auf die Verwendung der Programme oder Dateien
zurückzuführen sind, kann der Autor nicht haftbar gemacht werden.
Voll funktionsfähige Compilerversion:
Der voll funktionsfähige Compiler wird vorraussichtlich im September 1990
erscheinen. Er kann dann bei der
A+L AG
Im Däderiz 61
CH-2540 Grenchen
bestellt werden. Diese Version wird mit einer ausführlichen gedruckten
Dokumentation, weiteren Hilfsprogrammen, vielen Bibliotheksmodulen und
einem kompletten Interface zu den Amiga Betriebssystemroutinen (inklusive
ARP) ausgeliefert.
--- Fridtjof