(**************************************************************************) (* *) (* OUtil *) (* V2.0 27-Apr-1992 *) (* © 1992 Albert Weinert *) (* *) (* Bedienungsanleitung *) (* *) (**************************************************************************) Allgemeine Bedingungen: ----------------------- Der Autor dieses Programms haftet nicht für Schäden die durch Nutzung des Programms enstehen. Das Programm ist im Praxiseinsatz geprüft so das die Gefahr vernichtender Fehler nicht gegeben sein sollte. OUtil ist ab der Version 2.0 Freeware, d.h: Das Programm darf kopiert werden und benutzt werden sooft man will :). Aber ich möchte gerne wissen wer mein Programm benutzt, also bitte ich hiermit die Benutzter mich schriftlich zu benachrichtigen. Die Benachrichtigung sollte enthalten, die Rechnerkonfiguration, Versions des Programms etc. Dies ist dafür gedacht um evtl. Probleme bei bestimmten Rechnerkonfigurationen zu schnell wie möglich zu beseitigen. Folgendes gehört zum Programm und muss beim kopiern immer mitkopiert werden - OUtil (* Das Programm *) - OUtil.info - OUtil.prefs.info (* Ein Icon für die Konfigurationfiles *) - OUtil.dok (* Die Anleitung *) - OUtil.dok.info - WasIstNeu.txt (* Die Neuerungen am Programm *) - WasIstNeu.txt.info Das Programm kann auch als Archiv weitergegeben werden, wenn o.g. Files enthalten sind. Wenn jemand das Programm in seine PD-Serie aufnehmen möchte, so muss er mich Benachrichtigen. Es ist verboten dieses Programm einzeln auf einer PD-Diskette anzubieten. Ich möchte das wissen damit ich einen Überlick habe auf welchen Serien mein Programm vertreten ist. Das Copyright des Programms liegt beim Autor. Verbesserungvorschläge, Fehlerreports und Benachrichtigungen sind an folgende Adressen zu senden. Postalisch: Albert Weinert Feldblumenweg 2 W-5000 Köln 71 Deutschland EMails: Zerberus : A.WEINERT@DARKNESS.ZER Convoy : A.WEINERT;DARKNESS Fido : Albert Weinert @ 2:241/4033 1) Sinn von OUtil Das OUtil ist ein Programm das geschrieben worden ist, um den Umgang mit dem Amiga Oberon Compiler von der A+L AG zu erleichtern. Die Entwicklungsumgebung von Amiga Oberon ist zwar recht in Ordnung, denn man kann Quelltext Kompilieren, linken, starten und dies alles vom Editor aus. Es ist sogar möglich die Compileroptionen von Editor aus einzustellen. Aber wenn man längere Zeit damit arbeitet werden die Mängel des System sichtbar. - die Compileroptionen können nicht abgespeichert werden, so das sie jedesmal wenn der Editor aufgerufen wird einstellt werden müssen. Es gibt zwar den Weg das über einen Alias zu machen und dem Editor die Optionen bei Aufruf mitzugeben. Aber dieses ist wieder für ein Allgemeingültiger Aufruf, denn man dann wieder an die Individuellen Projekte, an denen man Arbeitet, anpassen müsste. - es können vom Editor aus keine Objektdateien aus anderen Programmiersprachen zu seinem Programm dazugelinkt werden. So das wenn man zum Beispiel einen Assemblerteil in sein Programm einbauen will, jedesmal für das Linken in eine Shell wechseln muss. - um ein Programm zulinken muss sich der Oberquelltext immer im Speicher befinden auch wenn er im Moment nicht gebraucht wird, weil er evtl. schon fertig ist. - man kann ODebug nicht aus dem Editor heraus starten. - man kann OMake nicht mit der Option ALL starten. - man kann nicht mal schnell eine Kopie von seinen Quelltext oder Programm machen, so das man auf eine evtl. Laufähige Version zurückgreifen kann wenn das Programm mal nicht mehr macht was es machen sollte. Diese Mängel werden von OUtil zu gut es geht beseitigt und es gibt noch einige Verbesserungen um die Arbeit noch weiter zu vereinfachen. 2) Das kann OUtil - einstellen von Optionen für den Compiler, Editor und Debugger. - starten von Oberon, OLink, ODebug, ModToDef und das Programms selber. - starten von OMake mit der ALL Optionen - eine Kopie vom Quelltext und dem Programm erstellen. - starten des Programm mit einer Kommandozeile die übergeben werden kann. - verwalten von beliebig vielen Modulen - verwalten von beliebig vielen OLink parametern - verwalten von beliebig vielen Kommandozeilen für den Programmstart - verwalten von beliebig vielen Compileroptionen für die bedingte Kompilierung. - laden eines Quelltextes direkt in den OEd, vom OUtil aus. - alle Einstellungen werden in einem Prefsfile gespeichert so das man später die Einstellungen nicht noch mal vollziehen muss. - starten von OEd beim Start von OUtil wobei die Quelltexte an denen man gerade arbeitet direkt mit eingeladen werden. - starten des Residentmanagers beim Start von OUtil - ARexx Unterstützung 3) Das braucht OUtil - einen Amiga mit AmigaOS 2.04 (V37.175) oder höher - Amiga Oberon Compiler V2.13, wobei erst mit der V2.14 alle Funktionen von OUtil ausgenutzt werden können. - ein bisschen Speicher im RAM und auf Festplatte (oder Diskette) 4) Allgemeines zum Arbeiten mit OUtil - Um mit OUtil zu arbeiten sollte der Stack auf 16384 Bytes gesetzt werden. - Die Modulnamen beginnen immer mit "TXT/" und Enden mit ".mod" wenn dies nicht der Fall ist werden sie von OUtil vor der Benutzung des Namens erzeugt. - Die Stringgadgets die Module, Parameter und Optionen beinhalten sind mit einem EditHook versehen, so das man wenn das Stringgadget aktiv ist mit dem Pfeiltasten die Einträge in der Liste rauf und runter gehen kann um sich die Einträge auszuwählen. Auch ist Rechts neben diesen StringGadgets ein Rechteckiger Button, wenn man diesen anklickt erscheint eine Liste mit den Einträgen die dort vorhanden sind. Dort kann man sich mit der Maus einen Eintrag auswählen. - Die Gadgets haben in ihrem Namen einen unterstrichenen Buchstaben, wenn man diesen auf der Tastatur (ohne jeglichen Qualifier) drückt, hat dies dieselbe Funktion wie wenn man das Gadget mit der Maus anwählen würde. - In den Settings Fenstern gibt es immer das Project Menu dort sind zwei Menüpunkte. Der erste Menüpunkt "Use" bedeutet das die aktuellen eingestellten Settings für den weiteren Programmbetrieb verwendet werden, und das das Settings Fenster geschlossen wird. Der zweite Menüpunkt "Cancel" bedeutet das die aktuellen eingestellten Settings nicht für den weiteren Programmbetrieb übernommen werden, auch hier wird das Settings Fenster geschlossen. - Das Verzeichnis von dem aus OUtil gestartet worden ist muss ein "TXT" Verzeichniss haben, denn dort müssen bzw. werden die Quelltexte stehen. - Desweiteren sollte OUtil wenn es von einer Shell gestartet wird mit run >NIL: OUtil gestartet werden (oder halt mit RunBack). - Wenn man OUtil von der Shell startet kann man ein Konfigurationsfile angeben, dieses wird dann geladen und benutzt. Wenn kein Konfi- gurationsfile angeben worden ist. Wird versucht das File "OUtil.prefs" zuladen, falls diese auch nicht vorhanden sein sollte wird das File "ENV:OUtil/OUtil.prefs" geladen. Da dies unter Umständen auch nicht vorhanden ist, werden dann interne Standardparamter benutzt. - Das Konfigurationsfile kann auch noch ein Icon haben (wenn dies in den General Settings eingestellt). Dann kann man durch einfach Doppelklick auf das Icon OUtil starten und das Konfigurationsfile wird dann geladen. Dieses Icon kann man dann auf die Workbench auslagern, wovon es dann auch gestartet werden kann. - Das File "OUtilPrefs.info" muss in das Verzeichnis "Oberon:Icons" gelegt werden. Sonst kann dem Konfigurationfile kein Icon gegeben werden. - Bei CheckBoxgadgets wird immer die Funktion beschrieben die bewirkt wird wenn das Gadget abgehakt ist. 5) Das MainWindow 1. Die Menus Das erste Menu der vorhanden ist, ist das Project Menu, und die MenuPunkte die dort vorhanden haben folgende Funktion. - Save Settings Speichert die Konfiguration unter dem bei Starten angegebenen Namen ab, wenn kein Namen angegeben worden ist wird als Name "OUtil.prefs" benutzt. Es sei denn ist die Konfiguration aus dem ENV: Verzeichniss gelesen worden oder die internen parameter benutzt worden. Wenn dies der Fall ist, wird verfahren wie mit "Save Settings as..." - Save Settings as... Speichert die Konfiguration ab aber vorher wird nach einen Namen dafür gefragt unter dem gespeichert werden soll, voreingestellt ist "OUtil.prefs" oder der Name den man beim Start von OUtil angegeben hat. - Save as Default Speichert die Konfiguration in zwei Files ab, als "ENV:OUtil/OUtil.prefs" und als "ENVARC:OUtil/OUtil.prefs". Es wird die komplette Konfiguration gespeichert bis auf die Module, die OLinkparameter und die Kommandozeilen für das Programm. - About... Gibt einen Requester aus, indem die Versionnummer und der Copyright Vermerk von OUtil angegeben sind. - Quit Beendet das Programm und entfernt es aus dem Speicher. Es ist möglich das wenn man ARexx kommandos sendet, das diese noch nicht wieder bestätigt worden sind. Falls das so ist erscheint ein Requester und man kann das Programm nicht beenden. In diesem Falle einfach den Requester betätigen, dann ein bisschen warten und dann nochmal quitten. Diesen Requester dürfte man eigentlich nie zu sehen bekommen. Das zweite Menu ist das Settings Menu, von hier aus kann man die verschiedenen Settings Fenster öffnen um dort Parameter einzustellen - Editor... Öffnet ein Fenster auf dem man Parameter für den Editor einstellen kann. - Compiler... Öffnet ein Fenster auf dem man die Compileroptionen einstellen kann. - Debugger... Öffnet ein Fenster auf dem man Parameter für den Debugger einstellen kann. - General... Öffnet ein Fenster auf dem man allgemeingültige Parameter einstellen kann. Das dritte und letzte Menu hier ist das Special Menu, dies beinhaltet ein paar spezielle Funktionen. - Backup Module... Macht ein Backup von dem aktuellen Modul. d.h: OUtil kopiert den Quelltext und hängt ihm ein ".bak" an wobei die Endung ".mod" dann weggelassen wird. - Backup Executable... Macht ein Backup vom dem aktuellen Programm, d.H: Outil kopiert das Programm und hängt dem Programm ein ".bak" an. - Add a Module Hängt einen Eintrag für einen neuen Quellext in der Liste der Quelltext an den aktuellen Eintrag an. - Add a OLinkparameter Hängt einen Paramtereintrag in der Liste der Paramter für OLink an den aktuellen Eintrag an. - Add a Startparameter Hängt einen Parametereintrag in der Liste für den Programmstart an den aktuellen Eintrag an. - Make all... Startet OMake mit der ALL Option so das alle Module die Importiert werden, neu kompiliert werden. 2. Die Stringgadgets Das obere Stringgadget beinhaltet die Module die mit OUtil bearbeitet werden können. Dabei ist das angezeigte Modul das aktuelle Module. Wenn mit dem Modul Funktionen ausgeführt werden wird falls nicht vorhanden, ein "TXT/" vorangestellt und ein ".mod" angehängt. Diese Stringadget kann mit Ctrl-c aktiviert werden. Das mittlere Stringgadget beinhaltet die Paramter die OLink übergeben werden. Der angezeigte Eintrag ist der aktuelle Parameter. Der Eintrag muss genauso aussehen wie als wenn man OLink von der Shell aufrufen würde, nur die Optionen brauchen nicht angeben werden. Ich denke ein Beispiel schafft Klarheit. Rechnung OBJ OBJ/Password.o Hier würde das Programm "Rechnung" gelinkt wobei die Objektdatei "Password.o" da noch zusätzlich mitgelinkt würde. Der OBJ paramter ist optional es MUSS nur der Programmname drinstehen. Die Optionen für SmallCode oder SmallDate werden automatisch OLink übergeben. Dieses Stringadget kamm mit Ctrl-k aktiviert werden. Das untere Stringgadget beinhaltet die Paramter die dem Programm bei start übergeben werden. Diese parameter werden komplett so an den Programmnamen gehangen wie sie eingeben sind. Dieses Stringadget kamm mit Ctrl-s aktiviert werden. Die Stringadgets zeigen immer den aktuellen Eintrag aus einer Liste die wie in "Allgemeines zum Arbeiten mit OUtil" beschrieben ist gewechselt werden können. 3. Die Buttongadgets Das "Compile" Gadget startet "Oberon" mit dem aktuellen Modul. Das "Link" Gadget startet "OLink" mit dem aktuellen Parameter für OLink. Das "Start" Gadget startet das Programm welches im mittleren String- gadget angeben ist. Wobei die Parameter die im unteren Stringgadget dem Programm übergeben werden. Das "Make" Gadget startet "OMake" das Programm worauf sich OMake auf das Programm bezieht welches im mittleren Stringgadget steht. Das "Debug" Gadget startet "ODebug" und anschliessen das Programm, wenn ODebug sich schon im Speicher befindet wird nur noch das Programm gestartet, Das "Load" Gadget veranlasst OEd dazu ein Window zu öffnen und darin das aktuelle Modul zu laden. Das "ModToDef" Gadget startet "ModToDef" mit dem aktuellen Modul und macht daraus eine Definitiondatei. 4. Sonstiges Es ist möglich wenn das Window aktiv ist mit den Pfeiltasten, die Liste der Module und der OLinkparamter rauf und runter zu gehen. Mit den Pfeiltasten rauf/runter ändert man die Modulliste und mit den Pfeiltasten rechts/links ändert man die OLinkparamterliste. Mit der Tab-Taste ist es möglich das aktive Stringgadget zu wechseln und zwar mit "TAB" das nächste Stringgadget und mit "Shift-TAB" das vorherige Stringgadget. Mit der Leertaste wird das mittigliegende Window auf dem Screen aktiviert. Dies kann man dazu benutzen um das Quelltext Window von OEd zu aktivieren so das man wieder am Quelltext arbeiten kann. 6) Das Editor Settings Window 1. Die Menus Die Menus entsprechen der Beschreibung die in "Allgemeines zum Arbeiten mit OUtil" gegeben wurde. 2. Die CheckBoxgadgets Das Screen Gadget gibt an ob beim Start von OEd, OEd einen eigenen Screen öffnet. Das Interlace Gadget besagt das wenn OEd einen Screen öffnet er diesen im Interlace Modus öffnet. Das Interlace wird von OEd ignoriert wenn man vom OEd aus einen Bildschirmmodus eingestellt hat. Das AutoUppercase Gadget schaltet im OEd die automatische Großschreibung von Standardbezeichnern. 3. Die Integergadgets Das XPos und YPos Gadget geben die x,y Position der Windows an, an der sie von OEd geöffnet werden. Das Width und Height Gadget geben die Breite und die Höhe an, mit der sie von OEd geöffnet werden. Das Depth Gadget gibt die Tiefe an mit der ein Screen von OEd geöffnet wird. In dem MaxUndo Gadget steht die Maximale anzahl von Undoschritten die man mit OEd zurücknehmen kann. 7) Das Compiler Settings Window 1. Die Menus Die Menus entsprechen der Beschreibung die in "Allgemeines zum Arbeiten mit OUtil" gegeben wurde. Bis auf das Special Menu der dortige Menupunkt "Add a Compileroption" hängt einen neuen Compileroptions Eintrag an den aktuellen Eintrag an. 2. Die CheckBoxgadgets Die Gadgets StackChk, OvflChk, RangeChk, CaseChk, ReturnChk, NilChk, TypeChk, OddCheck, AutoReqPars, ClearVars, SmallCode, SmallData und Debug entsprechen den Menupunkten im OEd und d. h. wenn sie abgehakt wird das eingeschaltet was die Gadget Bezeichnung aussagt. Also wenn der z.B: TypeChk abgehakt ist wird auch ein TypeChk in das Programm beim Kompilieren mit eingebaut. Das AskSymbol Gadget gibt an das beim Kompilieren wenn eine neue Symboldatei erzeugt wird, vorher gefragt wird ob sie auch wirklich angelegt werden soll. Mit dem 68881 Gadget erwirkt man das beim Kompilieren spezieller Code für den Motorala 68881 bzw. 68882 Mathecoprozessor erzeugt wird. 3. Die Cyclegadgets Es gibt eigentlich nur ein CycleGadget in dem kann man den Prozessor einstellen für den der Compiler das ausführbare Programm erzeugt. 4. Die Stringgadgets Auch hier gibt es nur ein Gadget von, und zwar das Compiler Options Gadgets hier stehen die Optionen für die bedingte Kompilierung diese werden dem Compiler übergeben. Für dieses Stringadget gilt auch das was im "Allgemeines zum Arbeiten mit OUtil" über Stringgadgets gesagt wurde. 5. Sonstige Mit dem Pfeiltasten rauf/runter kann man den aktuellen Eintrag im Compileropionts StringGadte ändern ohne das das Gadget aktiv sein muss. 8) Das Debugger Settings Window 1. Die Menus Die Menus entsprechen der Beschreibung die in "Allgemeines zum Arbeiten mit OUtil" gegeben wurde. 2. Die CheckBoxgadgets Das Screen Gadget gibt an ob beim Start von ODebug, ODebug einen eigenen Screen öffnet. Das Interlace Gadget besagt das wenn ODebug einen Screen öffnet er diesen im Interlace Modus öffnet. Das Interlace wird von ODebug ignoriert wenn man vom OEd aus einen Bildschirmmodus eingestellt hat. Die Gadgets Popup Windows, Sort Records, Close Pointer und Open Sources entsprechen den Menupunkten im ODebug, auch hier heisst es wenn sie abgehakt sind wird das gemacht was ihre namen Aussagen. 3. Die Integergadgets Das XPos und YPos Gadget geben die x,y Position der Windows an, an der sie von ODebug geöffnet werden. Das Width und Height Gadget geben die Breite und die Höhe an, mit der sie von ODebug geöffnet werden. Das Depth Gadget gibt die Tiefe an mit der ein Screen von ODebug geöffnet wird. 9) Das General Settings Window 1. Die Menus Die Menus entsprechen der Beschreibung die in "Allgemeines zum Arbeiten mit OUtil" gegeben wurde. 2. Die CheckBoxgadgets Das Icons Gadget gibt an ob OEd, Oberon, OLink und OUtil beim Speichern ihrer Dateien Icons erstellen soll. Das Start OEd Gadget sagt das OEd beim Aufruf von OUtil gestartet werden soll, wobei dann auch die Module die man angeben hat geladen werden. Das Gadget Resident Man. gibt an ob der ResidentManager bei Aufruf von OUtil gestartet werden soll. Das OEd 2.13d Gadget muss abgehakt sein wenn man keinen OEd besitzt bei dem man sich seine Menu und Tastaturbelegung selber belegen kann. Soviel ich weiss war die letzte offizielle Version die das nicht konnte die Version 2.13d. Denn wenn man so einen OEd hat, kann man nicht die Load Funktion aus dem MainWindow benutzten. 3. Die Integergadgets Das Wait Time Gadget gibt die Zeit an, wie lange OUtil wartet bis es sein Window öffnet. Die Zeit für in "Ticks" angeben also 1/50 Sekunde. Dies ist dafür da damit OUtil sein Window auch auf dem OEd Screen öffnet wenn OEd einen Screen öffnen soll. 10) Der ARexx Unterstützung Eins vorweg der ARexx Port wurde nur dafür geschaffen um OEd aus den OUtil einen Quelltext laden zu lassen. Der ARexx Befehlssatz von OUtil ist somit zur Zeit noch nicht sehr Umfangreich was sich aber sicher in einer der nächsten Versionen ändern wird. Der ARexx Port umfasst zur Zeit 11 (Elf) Befehle. - MainWindow öffnet das MainWindow bzw. holt es nach vorne und aktiviert es wenn es schon offen war. - EditorSettings, CompilerSettings, DebuggerSettings, GeneralSettings Öffnen die jeweiligen Fenster bzw. holen sie nach vorne und aktivieren sie wenn sie schon geöffnet waren. - CloseMainWindow Schliesst das MainWindow, wobei OUtil noch im Speicherbleibt und so auch mit OpenMainWindow wieder nach geöffnet werden kann. - CloseEditor, CloseCompiler, CloseDebugger, CloseGeneral Schliessen die jeweiligen Fenster. - Quit Dieser Befehl beendet OUtil, schliesst alle Fenster und entfernt es aus dem Speicher. Der ARexx Port kann dazu gebraucht werden um das MainWindow auf Tastendruck nachvorne zu holen um dann das Compilieren etc. zu starten. Beim OEd kann man das folgendermassen machen. /* Open OUtil Window */ address 'OUtil' MainWindow Dieses dann als in das Oberon:rexx Verzeichniss als z.b: "cF1.oed" schreiben. Dann kann man mit Ctrl-F1 das MainWindow nach vorne holen. Wenn man einen OEd hat wo man die Tastatur freibelegen kann, kann man auch folgendes machen. Man gibt diese Zeile in dem File "Oberon:OEd_Keys.txt" ein und startet den OEd neu. RETURN AMIGA (execrexx (address 'OUtil';MainWindow)) Dann wird auf Druck auf die rechte Amiga Taste in Verbindung mit der Returntaste das OUtil MainWindow nachvorne geholt. 11) Erweiterung die für die Zukunft vorgesehen sind - Die Compileroptionen von OUtil an OEd über ARexx übermitteln. - Den ARexx Befehlssatz ausbauen - Unterstüzung andere Editorn wie dem Cygnus Ed, oder AmokEd! Dies wird aber nur gemacht wenn die Nachfrage dazu besteht. Denn ich bin mit dem OEd eigentlich zufrieden. Mit freundlichen Grüßen Albert 'Mel' Weinert --------------------------------------------------------------------------