======================================================================  Dokumentation zum Modul Menu2Asm 04-Jun-91 Jürgen Zimmermann Autor: Jürgen Zimmermann, Ringstr. 6, W-6719 Altleiningen, Deutschland ====================================================================== Kopierrecht ===========  Das komplette Packet (Quelltext, Dokumentation und Objektcode) ist Freeware. Es darf beliebig kopiert und verbreitet werden solange... * mein Name und dieser Kopierrechtshinweis erhalten bleiben, * die Vollständigkeit des ganzen Packets gewährleistet ist, und * mit dem Vertrieb dieser Software kein Gewinn erwirtschaftet wird. Verbesserungsvorschläge sind stets willkommen. Falls Ihr Veränderungen am Programm vornehmt, dokumentiert diese bitte gut verständlich. Es würde mich freuen, wenn Ihr mich über größere Veränderungen in Kenntnis setzen würden. Weiterhin bitte ich Euch, mir einen ausführlichen Bug-Report zu schreiben, wenn irgenein Fehler auftreten sollte, damit ich mich an die Verbesserung des Moduls machen kann. Umfang des Packets ================== Das komplette Packet "Menu2Asm" beinhaltet folgendes: * Menu2Asm.dok Diese Dokumentation * Menu2Asm.mod Der Quelltexte des Moduls * Menu2Asm.def Die Definition des Moduls * -.obj + -.sym Die Objekt- bzw. Symboldatei des Moduls Zu "Menu2Asm" ==================== Das Modul "Menu2Asm" ermöglicht es, mit dem neuen Modula-2-Compiler M2Amiga V4.0d fertig initialisierte Menüs zu erstellen, die dann in das Endprogramm gelinkt werden, ohne daß man noch zusätzlichen Quelltext für den Aufbau des Menüs benötigt. Die Erstellung eines Menüs ist denkbar einfach: Nachdem man im eigenen Programm ein Menü erzeugt hat und dieses mittels IntuitionL.SetMenuStrip an ein Window installiert hat, ruft man die Prozedur Menu2Asm.MakeMenu2Asm(Zeiger auf das Window) auf. Danach erscheint auf dem Workbench-Screen ein neues Window (bei Workbenchstart des eigenen Programms) oder im CLI/SHELL eine Titelzeile, in der der Name incl. Pfad der Zieldateien erfragt wird. Eine an den Filenamen angehängte Erweiterung (z.B. ".hallo") wird vom Programm ignoriert. Das Modul schreibt nun sowohl ein Definitions- als auch ein Implementations- modul in das gewünschte Verzeichnis. Weiterhin wird noch eine Datei mit dem Namen "PrgName"+"Asm.asm" erzeugt, die den A68k-kompatiblen Quelltext für das Menü in Assembler enthält. Der Quelltext muß mit einem anderen Assembler als dem des M2Amiga assembliert werden, da dieser z.Zt. keine veränderbaren Daten unterstützt. Alles, was man jetzt noch machen muß, ist das Compilieren der -.def bzw. -.mod-Datei sowie das Assemblieren der -.asm-Datei. Zu beachten ist, daß die Objektdatei nach dem Assemblieren den gleichen Namen hat wie die -.asm-Datei, jedoch mit der Erweiterung ".obj" versehen ist und sich vor dem Linken im Verzeichnis "obj/" befindet, sofern ein solches angelegt ist, damit der Linker sie findet. Das Menü wird jetzt einfach so benutzt, indem man den Zeiger auf das Menü aus dem Modul importiert und direkt an "IntuitionL.SetMenuStrip" übergibt. Die zeit- und speicheraufwendige Initialsierung der Menüstruktur kann man nun aus dem eigenen Programm verbannen (aber bitte nicht löschen, für zukünftige Änderungen). Das Menü in Assembler sollte nur am Ende einer Programmierphase stehen, da das Ändern im Modula-2-Quelltext sehr viel bequemer ist (besonders mit Hilfe von m2make!). Für diejenigen unter Euch, die keine Mühe scheuen: Man kann sich die beiden von Menu2Asm erzeugten Modula-2-Module auch schenken, indem man einfach die Variablenzeile aus dem Definitionsmodul in das eigene Modul integriert (auf keinen Fall die Zeile ändern!) und die beiden Module löscht (spart den Code für das leere Implementationsmodul, ca. 80 Bytes). Dies entspricht meiner eigentlichen Absicht, aber für Eilige habe ich die andere Funktion integriert! Viel Spaß noch bei eigenen Menüs Euer Jürgen