====================================================================
Dokumentation zu "M2Maker" Version 2.5
Autor: Thomas Stolze, Goslarsche Str. 32 , 3000 Hannover 21, Germany
       Tel.: (0)511 / 75 10 77
====================================================================



Kopierrecht
­­­­­­­­­­­
Das komplette Packet (Quelltext, Dokumentation) ist Shareware.
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.
* Außerdem bitte ich um 20 DM.- (oder ...) für meine
  geopferte Zeit bei Gefallen und Verwendung.

  Da die Praxis zeigt, daß ja doch niemand zahlt ein anderer Vorschlag
  an arme Leute: Schickt mir doch eine Disk (oder zwei...) mit PD
  (neue Amok oder Fred Fish), die kostet fast nichts und man braucht sich
  keine Gedanken zu machen, wie man das Geld an mich schicken könnte.

  Ahnentafel der registrierten Benutzer:


  ...

  Jaja doch so viele (00 und in Bad ...).

Die Kommerzielle Nutzung ohne meine ausdrückliche, schriftliche
Genehmigung ist untersagt. Falls Sie dies beabsichtigen, nehmen Sie
bitte unter oben genannter Adresse Kontakt mit mir auf.

(c) 1990/91 by Thomas Stolze. Alle Rechte vorbehalten.



Übersicht
­­­­­­­­­
Umfang des Packets
Einleitung
Installation
Kompilieren und Linken des Programms
Starten des Programms
Bedienung des Programms
Bemerkungen
History



Umfang des Packets
­­­­­­­­­­­­­­­­­­
Das komplette Packet "M2Maker" beinhaltet folgendes:

GadgetImage.def    --|
GadgetImage.mod      |
InitIntuition.def    |
InitIntuition.mod    |
InputHandler.def     |
InputHandler.mod     |
TimerSupport.def     |
TimerSupport.mod     |
RequesterWindow.def  |- Quelltexte des Programms, im 'txt'-Ordner
RequesterWindow.mod  |
XCopy.def            |
XCopy.mod            |
Routines.def         |
Routines.mod         |
LSOptions.def        |
LSOptions.mod        |
Project.def          |
Project.mod          |
M2Maker.mod        --|

M2Maker.mke           - enthält Reihenfolge zum Kompilieren
M2Maker.dpd           - enthält Abhängigkeiten für M2Make
M2Maker.cfg           - enthält Daten zum aktuellen Projekt
M2Maker.poo           - enthält die Namen der Symboldateien, die m2Pool cached
M2Maker.dok           - diese Dokumentation
Install_M2Maker       - installiert das Programm auf Ihre Harddisk
Start_m2              - startet das Programm von der Workbench aus
Install               - nötig für WB-Start
M2Maker               - das ausführbare Programm

Alle weiteren Module sind Bestandteile des Modules "FileRequester",
welches als eigenes Programmpaket von mir erstellt wurde.

Einleitung:
­­­­­­­­­­­

Der M2Maker ist ein in Modula-2 geschriebenes Utility,
welches besonders auf den Compiler der A&L Meier-Vogt AG
zugeschnitten ist.

Die Programme Fastlister und MODULETool sind Bestandteile des
M2Maker. (AMOK#30, AMOK#40);

Der M2Maker unterstützt ab der Version 2.5 die neue Compilerversion 4.0
und alle mitgelieferten Hilfsprogramme einschließlich Debugger und M2Ohm.


Die Installation
­­­­­­­­­­­­­­­­

Der M2Maker muß im "m2:-Verzeichnis" liegen wie Compiler,
Linker, Editor und das m2Project-Programm (siehe Handbuch!).
Außerdem müssen sich folgende Programme auf der Systemdiskette im
C-Verzeichnis oder sonstig zugänglichem Verzeichnis befinden:

- Run
- NewShell
- EndCli
- Delete
- Setenv

Kompilieren und Linken des Programms:
­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Entweder mit dem M2Maker oder

1.> m2c <M2Maker.mke
1.> m2l M2Maker.obj
.


Starten des Programms:
­­­­­­­­­­­­­­­­­­­­­­

Der M2Maker arbeitet nur im CLI und muß deshalb mit Hilfe von IconX
von der Workbench gestartet werden. (Einfach Start_m2 anklicken).


1.> run M2Maker

Nachdem der "M2Maker" ordnungsgemäß vom CLI mit "Run M2Maker"
gestartet worden ist, werden die Parameter aus der Datei
"M2Maker.cfg" gelesen, sofern diese vorhanden ist.

In der vorliegenden Version wurde die Möglichkeit des Aufrufs
einer Batchdatei mit Namen M2Maker.exec entfernt.
(War mal in einer Urversion enthalten)

Bedienung des Programms
­­­­­­­­­­­­­­­­­­­­­­­

Die Funktionen im einzelnen:

Die Gadgets:

Editor    - Ruft den Editor auf.
Compiler  - Ruft den Compiler auf.
            Wenn ein Fehler gefunden wurde, wird automatisch
            der Editor aufgerufen.
Linker    - Ruft den Linker auf.
Run       - Startet ein fertig kompiliertes und gelinktes File.
Make      - Ruft Compiler,Linker und Run auf.
            Tritt nach dem Kompilieren ein Fehler auf, so wird
            der Editor aufgerufen.

Projekt   - Wenn man ein Projekt definiert hat (s.u.), wird
            dieses initialisiert. Jetzt werden alle Dateien,
            die Editor,Compiler,Linker und Debugger erzeugen
            in entsprechende Unterverzeichnisse geschrieben.
            Dies hilft die Übersichtlichkeit zu erhöhen.
            (Detailierte Informationen stehen im M2-Handbuch)

            Durch erneutes Anklicken wird das Projekt beendet.
            Man kann ein Projekt wechseln, indem man eine
            SHIFT-Taste hält und ein Verzeichnis auswählt.
            (* Ab der Version 1.6 kann ein Projektverzeichnis
               beliebige Namen haben. *)

Optionen  - Hier werden die Pfade zu den einzelnen Programmen
            eingegeben. Dort wo "#?" steht wird die aktuelle
            Datei mit Pfad eingesetzt. Wo "*" steht wird nur
            die aktuelle Datei ohne Pfad eingesetzt.
            Man kann also beliebige Programme starten.
            Auch können Optionen nach #? stehen, was den M2Maker
            nun auch für andere Compiler (C-Compiler) tauglich macht.


Print     - Ruft ein Druckprogramm auf (z.B. OnLine).
            (* Die Druckroutine wurde in der Version 2.0 entfernt *)

Save      - Kopiert die aktuelle Datei auf das Backupmedium.
            Befindet man sich im Projektmodus, so wird auch
            auf dem Backupmedium ein Projektverzeichnis erzeugt
            wenn dort kein entsprechenes existiert.

Load Opt
Save Opt  - Lädt oder speichert die aktuellen Parameter in der
            Datei M2Maker.cfg.
New       - Löscht die aktuelle Datei aus dem Filename-Gadget.
            Jetzt kann ein neuer Dateiname eingesetzt werden.
            Dieser wird auch in das Gadget des Requesters übertragen.
Link      - Die Datei die in dem Gadget links daneben steht wird immer
            anstatt der aktuellen Datei gelinkt oder gestartet.
Module    - Ruft das MODULETool auf.
Delete    - Löscht die aktuelle Datei nach einer Sicherheitsab-
            frage.(auch die .info Datei).
Rename    - Benennt eine Datei um. (auch die .info Datei)
M2Make    - Ruft M2Make auf, zur Beseitigung von Schlüsselproblemen.
Debug End - Entfernt den Debugger.

Die Textgadgets lassen sich durch Anklicken beliebig verändern.

Inhaltsverzeichnis:

Das Inhaltsverzeichnis ist ein FileRequester,
der mit dem Programmpacket FileRequester erstellt wurde.
(Beschreibung siehe dort, oder probieren!);
( Cursortasten werden unterstützt, und "O","D","P","C";
  Auswahl durch Doppelklick. );

Das Menü:

- Projekt
        - Requester mit Copyright Vermerk.
        - Startet den FastLister.
        - Ruft ein neues CLI auf.
        - Beendet das Programm.

- M2Maker
        - Ruft den Editor auf.
        - Ruft den Compiler auf.
        - Ruft den Linker auf.
        - Startet das fertige Programm.
        - Startet die M2Make-Funktion.
        - Entfernt den Debugger.
        - Ruft beliebiges Programm auf.
        - Ruft beliebiges Programm auf.
        - Die Touch-Funktion berührt im aktuellen Projekt alle Textdateien,
          die auf ".mod" oder ".def" enden. Auf diese Art übersetzt M2Make das
          gesamte Projekt neu. Wenn man also eine spezielle Compileroption
          verwenden will, zwingt man hiermit M2Make das gesamte Projekt neu zu
          übersetzen.
           - Ruft den Editor auf um die M2Maker.mke Datei
             zuerstellen. Hier können alle Dateien des aktuellen
             Projekts eingetragen werden.
           - Compiliert alle Dateien die in der M2Maker.mke Datei
             enthalten sind.
           - Compiliert alle Dateien ab der aktuellen.

- Optionen
        - AutoSave      Speichert vor jedem "Run" die aktuelle Datei.
        - Editor Task   Startet den Editor als eigenen Task.
        - interactive   Startet eine eigene Shell und den Compiler
                        interaktive.
        - m2c  Resident
        - m2l  Resident
        - m2Ed Resident
        - m2Pool        Installiert/ entfert den Pool.
        - m2Debug       Installiert/ entfernt den Debugger.
        - m2Ohm         Installiert das Ohm.

          Anmerkung:
          M2Pool arbeitet immer nur mit einem Compiler zusammen.
          Es ist deshalb nicht ratsam, gleichzeitig einen residenten
          Compiler und einen interaktiven im System zu haben, da sonst
          M2Make oder oder Shift+Ctrl+F2 nicht auf den Pool zugreifen können.
          Findet M2Maker eine Datei mit Namen M2Maker.poo, so lädt er alle
          darin befindlichen Dateien in den Pool. Man achte auf die maximale
          Länge von 256 Bytes, da zur Zeit noch mit Hilfe von Setenv
          gearbeitet wird und der ARexxport noch nicht unterstützt wird.

- Project
        - Save Project
          - all            Speichert gesamtes Projekt.
          - txt            Speichert nur txt-Verzeichnis
        - Load Project     Lädt Project in das angegebene Verzeichnis !
                          (* Früher mußte nur ein Name eingegeben werden,
                             jetzt der komplette Pfad !!
                           *)

        - Delete Project   Löscht aktuelles Projekt.

Neben den Menucodes existieren eine Reihe von Control Sequenzen:

   ^Q   - Beendet den M2Maker.
            Zuvor wird alles wieder freigegeben:
            * FastLister
            * interaktiver Compiler etc.
   ^C   - Startet eine neue Shell.
   ^P   - Projektmodus ein- ausschalten.
   ^L   - Liest das Inhaltsverzeichnis neu ein.

****************************************************************************

Die folgenden Funktionen können auch dann aufgerufen werden,
wenn der M2Maker nicht aktiviert ist, d.h. sie können auch aus dem
Editor heraus aufgerufen werden!!!
======

(Wenn dieser als eigener Task läuft !!!)


leftShift + CTRL +

    F1    - Aktiviert den Editor. Ist dieser bereits gestartet,
            so wird er in den Vordergrund gebracht.

    F2    - Aktiviert den Compiler. Ist der Editor aktiv, so wird
            dieser zunächst veranlaßt die aktuelle Datei abzuspeichern.
            Auftretende Fehler werden im Editor angezeigt.

    F3    - Linkt Datei.
    F4    - Startet aktuelle Datei.
    F5    - Ruft Make-Funktion auf.

    F6    - M2Make
    F7    - Debug End
    F8    - ModuleTOOL
    F9    - Printutility
    F10   - Lädt das Verzeichnis erneut.
    Help  - kurze Beschreibung einiger Funktionen.

    Space  - Aktiviert den M2Maker und bringt ihn in den Vordergrund.

*****************************************************************************

Diese Funktionen stehen also alternativ zur Editorfunktion "CTRL\"
zur Verfügung.

Natürlich kann man sie auch bei aktivem M2Maker nur durch Druck auf
die Funktionstasten aktivieren.

Bemerkungen:
­­­­­­­­­­­­

Wird der Compiler vom Editor aus aufgerufen, so wird kontrolliert, ob die
aktuelle  Datei mit der aktuellen M2Maker-Datei übereinstimmt.
Dazu wird ein CTRL-\ an den Editor gesendet der darauf eine Nachricht
an einen Msg-Port "m2c" schickt. Diese Nachricht wird abgefangen
und analysiert.
Es wird nun die aktulle Editordatei zur aktuellen M2Maker-Datei gemacht.
(* Erweiterung ab V2.0 *)

Tip: Wenn man eine Datei neukompiliert und den Editor während des
     Aufstarten verläßt, kann es passieren, daß der M2Maker nicht
     mitbekommt, daß der Editor weg ist und vergeblich bis in alle
     Ewigkeit auf ein CTRL-\ wartet. In diesem Fall hilft nur zurück
     in den Editor und ein CRTL-\ senden. Dieser Fall ist aber äußerst
     unwahrscheinlich.

Der Quellcode wurde in der Version 2.0 völlig überarbeitet und hat
keinerlei Ähnlichkeit mehr mit dem alten Spaghetti-Code. (* Najaaaaaa *)

Durch die Pfaddateien können beliebige Programme aufgerufen werden,
und mit Hilfe von vorangestelltem Run als eigene Tasks gestartet werden.

M2Pool und der Debugger werden in eigenen CLI's gestartet, die nach
Beendigung der Programme automatisch beendet werden.
Außerdem werden einige temporäre Dateien im T: Verzeichnis angelegt,
die beim Beenden vom M2Maker gelöscht werden.

Als Erweiterung ist im Augenblick eine ARexx Schnittstelle geplant,
die dann hoffentlich auch das komfortable Arbeiten mit anderen Editoren
erlauben wird.


History:
­­­­­­­­

Version 1.52:  06-Sep-90

- unterstützt jetzt Optimizer und Debugger.
- Das Projektverzeichnis kann jetzt einen beliebigen Namen haben und muß
  nicht mehr auf ".Projekt" enden.
- ein Fehler im Input-Handler, der manchmal zu einem Guru führte wurde
  behoben ( und alle anderen >hoffentlich< auch).
- Scrollroutinen des Inhaltsverzeichnisses wurden überarbeitet
- Das Format der M2Maker.par Datei wurde überarbeitet und ist zu älteren
  Versionen inkompatibel. Am Besten alte vor dem Starten vom M2Maker löschen
  und durch neue ersetzen.
- Formatierung in der Druckroutine arbeitet jetzt korrekt, wenn man nur Teile
  des Listings ausdruckt.
- In der M2Maker.mke Datei dürfen jetzt nach einem Semikolon beliebige
  Kommentare bis zum Zeilenende folgen.

Version 1.6:  07-Sep-90

- Optimizer und Debugger Funktion laufen jetzt auch bei
  residentem Linker fehlerfrei.
- noch'n paar Bugs gefunden !?

Version 2.0:  16-Nov-90

- Der Quellcode wurde völlig überarbeitet.
- Alle bekannten Fehler wurden beseitigt.
- Neue Funktionen hinzugefügt und alte, unnütze entfernt.
  (Dies war hauptsächlich durch den neuen Compiler 3.32d bedingt, der leider
  nicht mehr residentfähig ist.)
- Die M2Maker.par Datei wurde in M2Maker.cfg umbenannt und ist inkompatible
  mit den alten M2Maker.par Dateien.
- Unterstützt nun m2Make von [bene]

Version 2.1:  21-Feb-91

- Die Verwendung von XCopy ist jetzt nicht mehr nötig, da eigene Kopierroutinen
  verwendet werden. Die DOS-Zeit wird korrekt übertragen. Außerdem wird ein
  Updatecheck durchgeführt, so daß nur garantiert geänderte Dateien kopiert
  werden. Sind noch keine Dateien auf dem Zielmedium vorhanden, so werden
  die Dateien ganz normal kopiert.
  Die Zeitkorrekturen sind notwendig, damit M2Make fehlerfrei arbeiten kann.
  Wer ständig mit der Harddisk arbeitet braucht normalerweise nicht auf die
  Zeiten zu achten, weil das DOS es von selbst erledigt. Die Routinen sind
  aber trotdem für diejenigen ganz brauchbar, die ab und zu eine
  Sicherheitskopie auf Diskette ziehen.
- ^L liest das Inhaltsverzeichnis neu ein.
- Die "New"-Funktion wurde überarbeitet und arbeitet jetzt korrekt.
- Wenn man jetzt zwischen Projekten wechselt, die auf verschiedenen Ebenen
  oder auf verschiedenen Speichermedien sind, so werden die alten M2Maker.cfg
  Dateien sinnvoll geändert, so daß ein flüssigeres weiterarbeiten möglich
  ist.

Version 2.5: 08-Jul-91

- Jetzt mit 4.0d Features programmiert.
- Unterstüzt jetzt Compilerversion 4.0
- Touch-Funktion
- Compiler, Linker und Editor resident
- Unterstützt M2Pool, M2Ohm und M2Debug
- Jetzt muß für eine Auswahl doppelt geklickt werden.
- Projektwechsel Shift-Taste festhalten.
- Erkennt, ob das Linken erfolgreich war.
- Erkennt, ob im M2Emacs die richtige Datei bearbeitet wird, falls ein
  Fehler während des compilierens auftritt. Dann erscheint ein Requester
  im Editor und fordert zum Wechsel auf.
- Requester können jetzt von der Tastatur aus beantwortet werden.
  Ja,Ok       : Return,j,J,y,Y,o,O
  nein,Cancel : n,N,c,C
- paar Bug's behoben.
- Hoffe jetzt hängt sich der M2Maker endgültig nicht mehr auf, wenn
  man Funktionen mit LShift+Ctrl+F1..F10,Help,Space startet.
  Dieses Phänomen trat manchmal bei Kick1.3 auf ?!
- PS.: Läuft das Programm eigentlich unter Kick2.0 ?
       (Wüßte das gerne.)
*****************************************************************************

Viel Spaß beim Arbeiten mit dem M2Maker.

                                         (C) Thomas Stolze 1991.

- Ende
