home *** CD-ROM | disk | FTP | other *** search
- Willkommen zum Amiga Modula-2 System! © 1.11.88
-
- Sie befinden sich nun direkt im Modula-2 Editor. Um sich in diesem Text herum-
- zubewegen, genügt es, wenn Sie mit der Maus auf die gestrichelte Zeile (unten)
- fahren und links oder rechts klicken, um vor- bzw. rückwärts zu blättern. Pro-
- bieren Sie es gleich mal aus! Mit der rechten Maustaste können Sie den Menu-
- balken erscheinen lassen, über welchen Sie m2emacs auch wieder verlassen
- können.
-
- Bevor Sie die beileigenden Demos ausprobieren, sollten sie M2Amiga auf
- Ihrem System installieren (siehe Kapitel 2 im Handbuch). Auf diese Weise
- können sie den m2emacs Editor verwenden um die Dokumentationstexte zu
- den Demos durchzulesen. Bitte lesen Sie die Dokumentationstexte durch,
- bevor sie die Demoprogramme aufstarten.
-
- Änderungen gegenüber dem Handbuch
- _________________________________
-
- Die Diskette enthält zwei Varianten des Compilers. M2:m2c wurde mit aus-
- geschalteten Bereichs-, Überlauf- und Stapelüberlaufoptionen kompiliert.
- Der Compiler ist deshalb nur 128kByte gross, aber sollten sie den Stapel-
- bereich nicht genügend gross gewählt haben, dann wird es während der
- Compilation zu einem Systemabsturz kommen.
- In der Archivdatei sicheres-m2c.zoo befindet sich eine Variante die mit
- eingeschalteten Optionen kompiliert wurde. Dieser Compiler ist 165kByte
- gross. Falls Sie über mehr als 512kByte Hauptspeicher verfügen, sollten
- Sie diesen Compiler verwenden. Sie können ihn mit dem auf der Demo-Diskette
- mitgeleiferten zoo Befehl aus dem Archiv extrahieren:
-
- zoo -extract sicheres-m2c
-
-
-
- Das Modul Windows wurde um zwei Prozeduren erweitert:
-
- ClearEOL(u:Window);
-
- Löscht alle Zeichen von der aktuellen Cursorposition bis ans Ende der Zeile.
-
- ModifyWindow(VAR u:Window; newX,newY,newW,newH:INTEGER);
-
- Mit dieser Prozedur kann die Position und Grösse des Fenster verändert
- werden. Für jeden der Parameter kann auch -1 eingesetzt werden, dann
- bleibt der entsprechende Wert erhalten.
-
- Bsp: ModifyWindow(w,-1,-1,200,-1);
-
- Die Breite des Fensters wird auf 200 gesetzt, Höhe und Position des Fensters
- bleiben unverändert.
-
- Das Modul Workbench ist WBArg.lock vom Typ FileLockPtr und nicht vom Typ
- ADDRESS (Seite 13-101, Zeile 32).
-
- Der M2Amiga Compiler ist in der Lage, Prozeduren aus den Amiga-Libraries
- (z.B. Exec, Intuition) direkt aufzurufen, wobei die Parameter direkt in
- den Registern üebergeben werden. Manchmal muss der Compiler trotzdem einen
- Umweg über den Stack eingehen, nämlich wenn Parameter in Register liegen,
- die vom Compiler speziell behandelt werden. Dies betrifft insbesondere
- die Register D0 und D1.
-
- Bsp: PROCEDURE P(data1{0B}:LONGINT; data2{2B}:LONGINT);
- i,j:LONGINT;
- PROCEDURE f(x:LONGINT):LONGINT;
-
- Wird nun P(i,j) aufgerufen, dann könnte der Wert der Variablen i direkt
- in das Register D0 abgelegt werden. Wird aber P(i,f(j)) aufgerufen, dann
- geht das nicht, denn f(j) würde sein Resultat auch im D0 Register ablegen,
- und somit den ersten Parameter überschreiben. Um sicher zu gehen, dass
- solches nicht passieren kann, wird der erste Parameter zuerst auf den
- Stack geladen und nach dem Auswerten aller Parameter vom Stack ins D0
- Register gebracht. Mit der Compileroption Z kann man den Compiler dazu
- bewegen, die Register direkt zu laden, ohne den Umweg über den Stack:
-
- (*$Z-*) P(i,j); (*$Z=*)
-
- Diese Option sollte man nur verwenden wenn die Parameter einfache
- Variablen oder Konstanten sind, und nicht wenn Ausdrücke vorkommen,
- also z.B. nicht für P(i,f(j)) oder P(i,i*j).
-
-
- Bekannte aber (leider) noch nicht behobene Fehler
- _________________________________________________
-
- Es ist zwar nicht gut für's Image Fehler zuzugeben, doch wir sind der
- Meinung, dass wir Ihnen damit einen Dienst erweisen. Sie ersparen sich
- stundenlanges Fehlersuchen, wenn Sie die Fallen kennen und umgehen können.
-
- - Wird der Compiler aufgestartet, wenn nur ca. 150-200 KByte Speicherplatz
- vorhanden sind, dann wird er zwar vom Amiga Betriebssystem geladen, er hat
- aber zuwenig Platz für seine Variablen und bleibt hängen und es gibt keine
- Möglichkeit den Compiler aus dieser Situation heraus zu bringen.
-
- - Es ist nicht möglich, einer Prozedurvariablen eine Codeprozedur zuzuweisen.
- Es ist ebenfalls nicht möglich, SYSTEM.ADR auf eine Codeprozedur anzuwenden.
-
- - Das verwenden von REsultaten einer Funktion im Index einer Feldvariable
- kann zu Fehlern führen, z.B. wird a[f(i)]:=g(j); falsch ausgewertet.
-
- - Das Amiga-Betriebssystem weist offensichtlich einen Fehler auf. Es ist uns
- schon mehrmals aufgefallen, dass, wenn wir globale Variablen im Umfang von
- insgesamt mehr als 262 kByte definieren, unerklärliche und nicht wiederhol-
- bare Dinge passieren. Wir konnten der Sache jeweils abhelfen, wenn wir die
- grössten Variablen in den Heap legten und nur die Zeiger darauf exportierten.
- Der Fehler haben wir schon an Commodore weitergeleitet und hoffen, dass er
- in der nächsten Version der Workbench behoben sein wird.
-