
        Fehler- und nderungsreport
        ---------------------------

Der Report wird chronologisch von hier an bis unten gelesen. Die
Zeilen "*** [...] Fertigstellung [...] ***" stehen unter den bis
dahin gemachten nderungen.


Bibliothek
----------
- WindowLists und TextWindows benutzen nicht mehr FastGEM0, da angeblich
  noch Fehler bei Benutzung von Bigscreen auftreten.

*** 17.12.90  Fertigstellung der Version 2.2, Compiler 4.0 ***

Bibliothek
----------
- Der Gepard-Editor sttzt nicht mehr dauernd beim Verlassen ab (trat nicht
  bei jedem Anwender auf, aber wenn, dann massiv). Das KbdEvents-Modul
  wurde entsprechend korrigiert und kann nun wieder benutzt werden.
- Modula-System funktioniert nun auch mit dem 68030er Board "hyperCACHE 030".
- Strings.Compare arbeitet wieder richtig mit Umlauten.
- Directory: SetCurrentDir/SetDefaultPath rufen GEMDOS nicht mehr auf, wenn
  der Pfad leer ist, weil das bei TOS 1.0/1.2 zu Fehlern fhrt (es erfolgt
  sonst Zugriff auf das Laufwerk A: und Dsetpath() liefert einen Fehlercode).
- Bei TOS 1.2 tritt kein Fehler mehr auf, wenn in der Shell das Sternchen
  ("*") im Pfadnamen der Parameterdatei eingegeben wird.
- Text.ReadToken funktioniert nun auch bei Disk-Files (las bisher immer nur
  ein Zeichen ein).
- Files.Open/Create, Directory.MakeFullPath und FileNames.ValidatePath
  funktionieren nun auch mit Umlauten im Namen, da die Umlaute intern nun
  nicht mehr von Klein nach Gro gewandelt werden.
- EasyGEM0/AESForms.FormAlert optimiert: brauchen nun weniger Stack.
- EasyGEM1.SelectFile korrigiert (vernderte den GemHandle, was dann zu GEM-
  Laufzeitfehlern fhren konnte).
- Convert.ConvReal (auch StrToReal, WriteReal, ...) lst bei Verwendung der
  TT-FPU keine Laufzeitfehler mehr aus, wenn der Eingabestring keine gltige
  Real-Zahl darstellt, sondern setzt - wie dokumentiert - 'valid' auf FALSE.
- Die 68030-Erkennung (Modul SysInfo) funktioniert nun.
- TimeConv.DateToText zerstrt nicht mehr die geschtzten Register (D3-D6).
  Dieser Fehler fhrte u.A. zu Range-Errors und Fehlern in FOR-Schleifen.
- TextWindows: Die VT52-Codes 'moveUp', 'insertLine' und 'deleteLine' funktio-
  nieren wieder korrekt, der Cursor ist wieder sichtbar.
- TEMPUS und andere gelinkte Programme lassen sich (wieder) resident laden,
  ohne da bei wiederholtem Aufruf der geladenen Programme Fehler auftreten.
- Bisher konnten GDOS-Fonts zwar geladen, aber nicht ber die verfgbaren
  Funktionen der GEM-Bibliothek benutzt werden, da "GetFaceName" dazu ein
  Rckgabeparameter fehlt.
  Die Lsung ist im neuen Definitionstext von 'VDIInquires' (Ordner "SRC\D")
  beschrieben; eine neue Version von 'TextDemo' (DEMO-Ordner) zeigt auch
  die Anwendung der Benutzung der GDOS-Fonts.
- VDIAttributs.SetAbsTHeight/SetPtsTHeight waren die RckgabeWerte fr Zellen-
  und Zeichengre vertauscht. Sie werden nun in der korrekten Reihenfolge
  geliefert.
- Wird nach "LoadFonts" der UnloadFonts-Aufruf am Ende vergessen, sorgt
  das MM2-Laufzeitsystem dafr beim ExitGem oder Programmende.
- Die Loader-Funktion 'CallModule' erlaubt nun auch die ARGV-Methode zur
  bergabe von Argumentzeilen > 125 Zeichen. Wie's geht, steht im Loader-
  Definitionstext.
- Loader.CallModule sollte nun auch mit Dateinamen > 40 Zeichen klarkommen.
- Wird eine offene Datei "CON:" vom System geschlossen, tritt kein Laufzeit-
  fehler (Uninitialisierte Pointer-Variable) im TextWindows-Modul mehr auf.
- AESEvents.ButtonEvent erzeugt nun keine Abstrze mehr, wie z.B. "Fehler in
  der Heap-Verwaltung".
- FileManagement.FileInformation bercksichtigt Ordner und kann auch
  Datum/Zeit verndern.
- StrConv.StrTo(L)Num/Convert.ConvTo(L)Num liefern wieder korrekte Ergebnisse
  bei Werten > 256.
- VDIOutputs.PolyMarker funktioniert nun korrekt und hinterlt keine Daten
  mehr auf dem A3-Stack.
- In MOSConfig knnen nun _alle_ abzufangenden Exceptions bestimmt werden;
  Der Vektor fr "Division durch Null" wird nicht mehr verndert, damit
  unter dem Modula-System laufende Programme (z.B. bestimmte GDOS-Treiber)
  keine solche Fehlermeldung mehr unntigerweise hervorrufen. Der Compiler
  prft Divisionen durch Null nun auf andere Weise.
- TextWindows.Open liefert nun FALSE im success-Parameter, wenn sich das
  Fenster nicht mehr ffnen lt, weil schon zu viele GEM-Fenster sichtbar
  sind. Bisher trat dann ein Laufzeitfehler auf.
- XBIOS.SetKeyTable funktioniert nun.
- AESForms.FormKeyboard: Die Parameter 'ch' und 'nextObj' waren flschlicher-
  weise intern vertauscht.
- WindowLists.ViewLineWL arbeitet nun definitionsgem.
- ObjHandler.CreateSpecification funktioniert nun auch, wenn der Parameter
  'spec' nicht NIL ist.

ModRef
------
- ModRef (Version 1.4) erlaubt die Angabe zweier Direktiven in der Argument-
  zeile: "-C" unterdrckt das Warten auf eine Taste, wenn Source-Dateien nicht
  gefunden werden, "-Q" unterdrckt alle Ein-/Ausgaben (schliet "-C" ein).

LibManager
----------
- Kein String-berlauf mehr im LibManager beim Kopieren einzelner Dateien.

GME
---
- Keine Abstrze mehr, nachdem ein Block markiert und mit ^X ausgeschnitten
  wird.
- Wird "KonfigSpeichern" in GMEConfig.InitConfig nicht aktiviert, wird auch
  nicht nach der Datei "GME.GME" gesucht.
- Abspeichermglichkeiten bei Programmabsturz verbessert: Nun erscheint eine
  Dateiauswahlbox und es besteht die Mglichkeit, ein Backup zu erzeugen.

Compiler
--------
- Die mehrdimensionalen offenen Felder sind benutzbar.
- LENGTH liefert keine falschen Werte mehr bei Array- und Record-Zugriffen.
- Es kommt nun die richtige Fehlermeldung, wenn beim Array-Zugriff mehr
  Indices verwendet werden, als erlaubt sind.
- Die Direktiven $A und $W verhalten sich nun wie im Handbuch beschrieben.
- "VAL (Real-Typ, Ganzzahl-Ausdruck)" fhrt bei TT-FPU nicht mehr zu
  fatalen Laufzeitfehlern, wie Bus-/Address Error oder Illegal Instruction.
- Mehrere Fehler beim Vergleich von Variablen vom Prozedur-Typ behoben.
- Bei umfangreichen Importen tritt nicht mehr die Fehlermeldung "Typ mu
  identisch mit VAR-Parameter sein" auf.
- Importierte externe Variablen (Vars mit fester Adrebestimmung) haben
  nun die korrekte Adresse.
- INC (x, 0) erzeugt keinen Mist mehr.
- ABS (regVar/forVar) verndert die Register-Variable nicht mehr.
- Compiler erkennt nun Fehler, wenn unter bestimmten Umstnden (z.B. EXPORT
  aus lokalem Modul) die Prozedur-Implementation mehr Parameter als ihre
  Definition hat.
- Kein Programmabsturz mehr bei Short-REAL-Ausdrcken (ohne FPU) als
  aktuelle Parameter, wie z.B. bei "WriteReal ( f(a) / f(b) )".
- Ein Ausdruck "0 - x" wird nun korrekt erzeugt - vorher wurde der Wert
  nicht negiert.
- Conversion von REAL/LONGREAL nach SHORTINT/SHORTCARD erkennt nun alle
  berlufe.
- Mehrere Fehler mit lokalen Modulen behoben, u.A. kein interner Fehler mehr
  bei FORWARD-Dekl. Prozeduren, die in einem lokalen Modul implementiert werden
  und die Register A5/A6 werden nicht mehr von Modulen lokal zu Prozeduren
  zerstrt.
- Vor einer Division wird der Divisor (bei aktiviertem Range-Check) nun auf
  Null geprft, damit der eigentlich zustndige Exception-Vektor nicht mehr
  bentigt wird.
- Kein Programmabsturz mehr bei Aufruf von Prozeduren ber Prozedurvariablen,
  wenn die Proz. Open Array-Parameter hat.
- SHIFT/ROTATE erlauben nun variable Schiebewerte (s. LIESMICH.TXT).

Linker
------
- Es konnte vorkommen, da der Linker die Fehlermeldung "out of memory"
  bei groen Modulen anzeigte und sich auch durch Vergrerung des freien
  Speichers nicht davon abbringen lies: Es war noch eine invariable Gre
  im Programm versteckt. Sie bestimmt die Anzahl der relozierbaren Adressen
  pro Modul (s. Aufbau der Codemodule) und hatte eine Maximalgre von 1000.
  Dieser Wert kann nun ggf. von auen bestimmt werden. Dazu ist beim Aufruf
  des Linkers, zum Beispiel von einer Batch-Datei aus, in der Argumentzeile
  die Option "-R" mit dem neuen Wert anzugeben, also im Batch z.B.
  "LINK <name> -R2000".
- Vom C-Linker "MM2CLink" erzeugte Module knnen nun uneingeschrnkt
  optimiert gelinkt werden.

Shell
-----
- Die Menzeile hat nun die korrekte Hhe und bildet keinen falschen Strich
  mehr am unteren Rand.
- Vor Start und nach Rckkehr von Programmen schliet die Shell auch die
  noch offenen Fenster von Accessories.
- Das Starten von Programmen, deren Lnge von Pfad + Name mehr als 40 Zeichen
  umfat, ist nun wieder mglich.
- Die MM2Shell installiert die Icons der vorhandenen Laufwerke jetzt erst
  _nach_ dem Ausfhren der Shell-Batch-Datei. Weiterhin bieten beide Shell
  die zustzlichen Batch-Anweisungen POSTAMBLE1 und POSTAMBLE2, mit denen
  das Starten von zwei Programmen vor Verlassen der Shell gestartet werden
  knnen. Mehr dazu im LIESMICH.TXT, "Erweiterungen in der Shell".
- Die Datei-Information ist nun auch bei Ordnern mglich, allerdings hat sie
  nur ab TOS 1.4 Sinn, um den Ordnernamen zu verndern.
- Die "bye bye"-Meldung beim Programmende wurde entfernt.
- Durch eine Korrektur im Loader knnen nun auch gelinkte (!) Programme
  gestartet werden, wenn ein gleichnamiges Modul in der Shell resident ist.
  Beispiel: Ein Programm "SYSINFO.PRG" fhrt nicht mehr zur Verwechselung mit
  dem residenten Modul "SysInfo".
- Die Formatier-Funktion kann nun wieder beide Laufwerke ansprechen.

*** 17.4.91  Stand: Shell 2.2b, Compiler 4.1, GME 1.1, Linker 2.15 ***

Bibliothek
----------
- Loader.CallModule: Module, die das Bit 7 im Kennungsbyte des Modul-Headers
  gesetzt haben (zeigt 68020-Code an, s. Handbuch A.9), rufen keine Fehler-
  meldung (FPU nicht vorhanden) mehr hervor.
- MathLib0.exp/pwrOfTen/pwrOfTwo melden keinen berlauf-Fehler mehr bei
  bestimmten negativen Argumenten (ca. -1000 bis -5000) sondern liefern
  anstandslos Null.
- Mit MM2 erzeugte Programme laufen nun auch auf dem Mega STE und mit
  PAMs Net problemlos.
- Dokumentation im Def-Text von VDIInputs zu RequestLoc/TestLoc sowie
  Show-/HideMouse erweitert.
- VDIInquires.GetLineStyle funktioniert nun, allerdings liefert das VDI
  bei derzeitigen TOS-Versionen keine Werte zu den LineEnding-Parametern,
  weshalb die Prozedur dann immer 'edgedLn' liefert. Sollte das VDI jedoch
  die Werte liefern, werden automatisch die richtigen Werte weitergegeben.
- Das Runtime-Modul fr die TT-FPU verwendet nun auch die schnelleren 32 Bit-
  Operationen der 68020/30 f. Multiplikation und Division. Das wirkt sich
  praktisch auf alle solchen LONGCARD/LONGINT-Operationen aus, da der Compiler
  hierzu immer die Runtime-Funktionen verwendet.
- Multiplikationen von negativen Werten mit Konstanten haben u.U. falsche
  Werte erzeugt, auch wurden bei Integer-Multiplikationen keine berlufe
  trotz $R+ gemeldet. Ist behoben (Runtime-Modul).

*** 1.5.91  Stand: Shell 2.2c ***

Bibliothek
----------
- Die RandomGen-Funktionen zerstren nicht mehr das reservierte Register D3.
- VDIControls.LoadFonts/UnloadFonts wurden nochmal korrigiert.

Shell
-----
- Bei manueller Eingabe einer Arbeitsdatei wird diese auf den angegebenen
  Source-Pfaden gleich gesucht und der vollstndige Pfad mit eingetragen.

GME
---
- GMEConfig: Definitionstexte aktualisiert, so da kein Versionskonflikt
  mehr bei Neubersetzung auftritt.

*** 21.5.91  Stand: Shell 2.2d ***

Bibliothek
----------
- Storage/StorBase.Enlarge() liefern endlich korrekten 'ok'-Wert.
- Bei Verwendung alternativer Betriebssysteme, wie z.B. "KAOS", werden
  keine falschen ExitCodes (s. PrgCtrl.TermProcess) mehr zurckgegeben.
- EasyGEM0.DoSimpleBox strzt nicht mehr ab, wenn man Dialog mit Doppelklick
  verlt.
- InOut.ReadReal/ReadLReal funktionieren wieder, wenn Eingabe von Datei
  kommt (durch Aufruf von Redirect-/OpenInput).
- FPUSupport.Save/RestoreContext funktionieren nun bei ST-FPU korrekt.
- Debug/TOSDebug: Erzeugen keine falschen Ergebnisse mehr bei Real-Ausrcken.
- VDIAttributes.DefUserFill ist nun benutzbar.
- Files.GetFileName liefert den _Rest_ des Dateinamens, wenn die String-
  Variable nicht fr den ganzen Namen reicht.

Compiler
--------
- Tritt der Fehler 807 (berlauf des Bezeichner-Stacks) auf, kann der Stack
  ber die Direktive "/I" vergrert werden. Die Normalgre ist 2000 Byte,
  um ihn zu verdoppeln, ist beispielsweise "/I4000" in der Direktivenzeile
  einzugeben.
- Bei Zugriff auf Record-Elemente knnen nun Leerzeichen auch hinter dem
  Punkt stehen.
- Kein interner Fehler mehr, wenn bei $D+ Felder aus Konstant-Strukturen
  selektiert/indiziert werden (z.B. "VT52.Seq[VT52.clearEOS]").
- In FOR-Schleifen werden die evtl. verwendeten Register (D3-D7) nun immer
  als Longword gesichert. Vorher wurde ggf. nur das Low-Word gerettet aber
  dann durch eine MOVEQ-Instruktion das obere Word doch zerstrt.

Shell
-----
- MM2SHELL.RSC: Lsch-/Kopier-Dialogox kommt auch mit mehr als 999 Dateien
  klar.

Linker
------
- Drfte nun fehlerfrei mit dem Turbo-C Linker "MM2CLink" zu verwenden sein.

GME
---
- Wird der Editor mit ALT-X (Beenden) verlassen und auf die Frage, ob
  ein genderter Text gespeichert werden soll, mit Nein geantwortet, fragt
  er nun trotzdem auch bei weiteren evtl. nicht gesicherten Texten nach.

*** 9.8.91  Stand: Shell 2.2e, Compiler 4.1b, Linker 2.18, GME 1.2 ***

Bibliothek
----------
- Debug (GEMDebug) rettet ggf. den Fehlerstatus des letzten GEM-Aufrufs,
  so da auch bei $D+ immer noch nach einem GEM-Aufruf der Fehler im
  Programm mit "GEMEnv.GemError()" abgefragt werden kann und nicht sofort
  ein GEM-Fehler gemeldet wird.
- Loader: CallModule/LoadModule zerstren nicht mehr die Register D3/A4.
- TextWindows.Open: Im Fehlerfall bleiben keine Speicherleichen zurck.
- VDIInputs.KeyboardState drfte nun funktionieren.
- VDIEscapes.WriteToMetafile korrigiert.

Compiler
--------
- "CAST (SHORTCARD, -1) DIV 2" liefert nun korrektes Ergebnis (=$7FFF).
- TC-Parameterbergabe benutzt A0/A1 auch bei PROCEDURE-Types.
- TC-Parameterbergabe kommt auch mit mehreren ADDRESS-Parametern klar.

*** 15.9.91  Stand: Shell 2.2f, Compiler 4.1c, Linker 2.18, GME 1.2 ***

Shell
-----
- Die Box fr die Linker-Optionen wurde erweitert. Entsprechend ist auch
  die Projekt-/Parameterdatei erweitert worden, weshalb die bisherigen
  M2P-Dateien nicht mehr von der neuen Shell akzeptiert werden. Wollen Sie
  Ihre alten M2P-Dateien weiterverwenden, knnen Sie sie mit dem Programm
  CONV_M2P.M aus dem UTILITY-Ordner konvertieren. Nheres im Quelltext.
- Beide Shells laufen unter MultiGEM. Ist allerdings das GDOS "AMCLIGHT"
  installiert, darf die Shell dann nicht mehr verlassen werden, weil sonst
  das System abstrzt!
- Die Shell sollte nun auch unter der Multitask-Erweiterung "MiNT" laufen.

Bibliothek
----------
- MathLib0: Die Funktionen ld, ln, log, logar, power, lnP1 und artanh liefern
  beim Megamax-Format (also ohne FPU) nun auch korrekte Werte bei vollstndiger
  Optimierung.
- ShellMsg: Der Def-Text wurde verndert, d.h., da fremde bersetzte Module,
  die ShellMsg importieren, nun Versionskonflikte hervorrufen werden.
  Das drfte z.B. beim Turbo C-Linker MM2CLink der Fall sein, der dann ggf.
  beim Autor upzudaten ist.
- Files: SetDateTime setzt nun wirklich 'state' auf Null und verndert nicht
  mehr ein Word irgendwo im Speicher.
- ObjHandler kommt nun mit erweiterten Objekttypen zurecht.
- Strings: Append schreibt nicht mehr hinter Ziel-String weiter, falls der
  Ziel-String dabei vollstndig gefllt wird und der Source-String mit 0C endet.
- Das System sollte nun auch unter der Multitask-Erweiterung "MiNT" laufen.
  Ein Hinweis dazu: Die Benutzung der XBIOS-Funktion "Supexec()" whrend der
  Prozeterminierungsphase fhrt zum sofortigen Ende des Programms. D.h,
  Prozeduren, die ber "CatchProcessTerm" bei Programmende aufgerufen werden,
  drfen Supexec nicht aufrufen, sondern sollten stattdessen die MM2-Funktion
  "Calls.CallSupervisor" oder die GEMDOS- Funktion "Super" bentzen.

Compiler
--------
- Die Code-Adressen in der Protokoll-Datei stimmen nun wieder mit den Angaben
  bei einem Laufzeitfehler und beim Scanner berein.
- Werden Strings-Literale (Zeichenketten) an offene Felder bergeben,
  z.B. "WriteString ('abc')", wird dem String nun immer ein Null-Byte (0C)
  angefgt und auch der HIGH-Wert ist entsprechend um Eins hher.
  Aber Vorsicht: Werden String-Variable bergeben, knnen die immer noch
  bis zum letzten Zeichen gefllt sein, so da nicht sicher ist, da jeder
  String immer mit einem Null-Byte abgeschlossen ist. Diese nderung wurde
  v.A. zur Erleichterung im Umgang mit der Magic GEM Bibliothek von Peter
  Hellinger eingefhrt, wo es nun nicht mehr ntig ist, ein extra 0C-Zeichen
  an Zeichenketten bei der bergabe an die TOS-Funktionen anzufgen.
- Keine Fehler oder Datenmll mehr beim bersetzen im GME mit Debug-Modus ($D+).
- "Konstante IN Set-Konstante" liefert nun richtige Ergebnisse.
- Der Set-Operator fr symmetrische Differenz "/" bercksichtigt nun nicht
  mehr nur die ersten 8 Elemente bei Sets bis 32 Elemente (z.B. BITSET).
- Kein interner Fehler mehr bei vergessenen Klammern von Funktionsaufrufen.
- Kein interner Fehler mehr bei $D+ und LONGREAL-Funktionsergebnissen.
- Kein Fehler mehr bei LONGINT-Division, wenn durch eine Konst >= 2^16 geteilt
  wird.
- Kein Arithmetischer berlauf mehr bei Indizierung mit LONGCARD-Variablen auf
  Arrays mit Feldgre > 1 Byte (z.B. bei 'LONGARRAY OF CARDINAL').

Linker
------
- Erzeugt nun optional eine Symboldatei, in der alle Module und Prozeduren
  samt ihren Adressen im erzeugten Programm aufgefhrt werden.
  Mehr dazu im LIESMICH, Kapitel 9. (Linker).

*** 03.04.92  Fertigstellung der Version 2.3, Compiler 4.2, Linker 2.19 ***

- Achtung: Die beim vorigen System 2.3 mitgelieferte Datei MM2DEF.M2L ist
  defekt! Sie mu mit dem Programm RepairLIB korrigiert werden!

Compiler V4.2c
--------------
- Coroutinen funktionieren wieder (kein Stackberlauf mehr). Der Fehler
  lag im Runtime-Modul.
- Vergit man ein RETURN in einer Prozedur, die ein Ergebnis liefern soll,
  wird dies nun auch zur Laufzeit wieder erkannt (V4.2b tat dies nicht).

Linker V2.20
------------
- Erzeugt nun optional eine Datei, die die Module in der Reihenfolge
  auflistet, in der sie initialisiert werden. Dazu ist beim MM2Link-Aufruf
  die Option "-I" zu verwenden. Es wird dann eine Datei mit dem Namen
  des gelinkten Programms und der Endung "M2I" erzeugt. S.a. LIESMICH.TXT

Bibliothek
----------
- GEM (EventHandler): Watchdog auf "timer" kann nicht mehr zu Stackberlauf
  fhren (kein rekursiver ShareTime-Aufruf mehr).
- TextWindows: Der Zeichensatz (Font) kann nun gewhlt werden. Dazu ist die
  Funktion "ReSpecify" erweitert worden. Nheres im Def-Text.
- WindowLists: Der Zeichensatz (Font) kann nun gewhlt werden. Dazu ist die
  Funktion "SetListWL" erweitert worden. Nheres im Def-Text.
- WindowLists.AddEntryWL/AppendEntryWL/RemoveEntryWL funktionieren nun
  korrekt.
- Das InOut-Fenster hat keinen "force"-Modus mehr, d.h, es wird nicht mehr
  automatisch nach vorne geholt, wenn Ausgaben darauf geschehen. Wen das
  strt, soll einfach "noForce" durch "forceCursor" im Modul "GEMIO.I"
  ersetzen und nach Neubersetzung die Shell neu linken.
- TextWindows: Auch, wenn Force-Modus = "noForce", wird Fenster nach vorn
  geholt, wenn eine Eingabe erwartet wird.
- VDIInputs: Die Funktionen 'InstallTimerProc', 'RemoveCurChgProc',
  'InstallMsMoveProc' und 'InstallButChgProc' funktionieren (wieder).
- GEMEnv: Trat beim letzten GEM-Aufruf ein Fehler auf, wird er nicht mehr
  automatisch mit einer Fehlermeldung angezeigt sondern ignoriert. Soll
  wie gewohnt ein Fehler gemeldet werden, ist GEMEnv.ErrorProc einer Prozedur
  zuzuweisen, die den Fehler meldet - die bisher dafr benutzte Routine sah
  so aus:
        (*$L-*)
        PROCEDURE GemErrorHandler;
          BEGIN
            ASSEMBLER
                TRAP    #6
                DC.W    MOSGlobals.GemErr
            END
          END GemErrorHandler;
        (*$L=*)
  Die GemError()-Abfrage funktioniert weiterhin.
- Files.Create: Nun geht der Modus 'appendSeqTxt' auch unter MiNT/MTOS.
- GrafBase.LFramePoints funktioniert nun korrekt.
- Start unter Mag!X-Versionen ber V2.0 funktioniert nun (Modul 'MOSCtrl').
- Der Loader kann nun die Module auch ins TT-RAM laden.
- Definition des internen Moduls 'ModBase' wurde verndert.
- TimeConvert.DateToText/TimeToText korrigiert (D.Steins)
- Loader: Wenn sowohl eine ST- als auch eine TT-FPU im Rechner vorhanden war,
  wurden Module fr die ST-FPU unter der passend gelinkten Shell mit einer
  Fehlermeldung abgewiesen. Das ist behoben.
- AESMisc: FindApplication funktioniert nun.
- GEMError: LoaderMsg[17] verbessert.
- PrgCtrl/MOSCtrl/M2Init: Der Deinitialisierungsvorgang wurde gendert: Nun
  werden die (ber CatchProcessTerm/CatchRemoval) angemeldeten Abmeldfunktionen
  sofort bei Beendigung des Programms (per TermProcess) aufgerufen. Bisher
  passierte dies erst in einer Routine, die im vom TOS bereitsgestellten
  etv_term-Vektor eingeklinkt ist. Das bereitete teilweise aber Probleme mit
  Betriebssystemen, wie MiNT oder Mag!X. Nur fr den Fall, da das Programm
  nun auf eine "unsaubere" Art ber einen direkten Aufruf von GEMDOS.Pterm()
  abgebrochen wird (passiert z.B., wenn man im Templemon das "Q"-Kommando
  benutzt und wenn man Ctrl-C whrend einer Ein-/Ausgabe ber GEMDOS, z.B.
  durch Einbinden des GEMDOSIO-InOut-Treibers, drckt), wird die Abmeldephase,
  wie frher, ber die im etv_term-Vektor installierte Routine durchgefhrt.
  Allerdings wird dann u.U. ein falscher Exitcode an das aufrufende Programm
  zurckgegeben (dafr gibt es dann aber auch keine Probleme mehr mit MiNT
  oder Mag!x). Da dies aber die Ausnahme ist, sollte es nicht weiter stren.
  Unterm Strich bedeutet das: Man sollte das Programm nie mit einem direkten
  Aufruf der GEMDOS-Funktion Pterm() sondern ber PrgCtrl.TermProcess beenden.
- Das Granule-Modul hatte noch einige bse Fehler, bei denen es Speicher
  berschrieb, der ihm nicht gehrte. Das machte offenbar meist keine Probleme
  auf den alten TOS-Versionen, whrend es unter Mag!X schnell zu Abstrzen
  fhrte. So lief der GME-Editor z.B. berhaupt nicht unter Mag!X (er benutzt
  Granule als einziges MM2-Programm).

Compiler V4.3
-------------
- Konstanten werden nicht mehr mitten im Code sondern dahinter abgelegt.
  Solche, die mit der CONST-Anweisung deklariert sind, werden nur noch
  einmal abgelegt, egal, wie oft sie benutzt werden (bisher wurden solche
  Konstanten pro Zugriff jeweils separat im Code abgelegt).
- Damit der Loader die Module im TT-RAM ablegt, legt der Compiler im Modul-
  Header bei Offset 58 ein Long ab, das wie beim Header in gelinkten Programmen
  die Flags fr Verwendung des TT-RAM usw. enthlt. Der Wert ist immer 7.L,
  d.h, jedes mit diesem Compiler erzeugte Modul landet im TT-RAM, wenn vor-
  handen.

Compiler V4.3b
--------------
- Sollte Code fr die "ST-FPU" unter der entsprechend gelinkten Shell erzeugt
  werden, klappte es nicht ohne die Direktive "+F", wenn zustzlich eine
  TT-FPU im Rechner vorhanden war. Dies ist korrigiert.

Linker V2.31
------------
- Konstanten werden wie Prozeduren beim optimierten Linken ggf. wegoptimiert.
  Die Konstanten werden allerdings noch nicht im DATA-Segment abgelegt sondern
  gehren weiterhin zum CODE-Segment, d.h., sie drfen nicht verndert werden
  (was ja z.B. durch SYSTEM.CADR mglich wre)!
- Ein echtes DATA-Segment kann nun erzeugt werden. Mehr dazu im LIESMICH.TXT.

*** 15.01.94  Fertigstellung der Version 2.3e, Compiler 4.3b, Linker 2.31 ***

Bibliothek
----------
- Die Routinen fr die ST-FPU liefen nicht auf Mega STEs. Das lag daran, da
  entgegen der blichen Praxis, die Low-Bytes der FPU-Register nicht auf
  ihren ungeraden Adressen angesprochen werden drfen, sondern nur wortweise,
  sonst tritt ein Address-Error auf. Die Module Convert, Runtime, MathLib0
  (alle im ST_FPU-Ordner) sowie FPUSupport und SFP004 wurden dahingehend
  angepat.
- Startete man in der Shell V2.3e ein gelinktes Programm, das keine eigene
  Error-Behandlung hat und trat dann z.B. ein Bus-Error auf, meldete sich,
  wie blich, die GEMError-Box der Shell. Allerdings fhrte die Beendigung
  des Programms auch zur Fehlern und Abbruch der Shell. Dies ist nun wieder
  behoben (lag an Fehler in MOSCtrl).
- Das Feature der vorigen Version, da der Loader die Module im TT-RAM ablegt,
  falls mglich, fhrte nun beim Granule-Modul zu Fehlern, weshalb u.a. der
  GME nicht mehr auf TT-Rechnern richtig lief. Der Fehler ist nun im Granule-
  Modul so korriert, da es wieder nur den Speicher das ST-RAM benutzt, auch
  wenn TT-RAM verfgbar wre. Wer das Granule-Modul so einsetzen mchte, da
  auch das TT-RAM benutzt wird, soll sich an T.Tempelmann wenden. Es ist eine
  einfache Lsung dafr mglich, die allerdings ca. 100 KB bei TT-Rechnern
  zustzlich verschwendet.
  Nebenbei wurde die Dokumentation im Definitionstext v. Granule ein wenig
  erweitert.
- Storage-/StorBase.AllAvail fhrt nicht mehr zu Abstrzen, wenn der
  verbleibende Stack zu klein ist (passierte v.A. bei Verwendung unter Mag!X).

Compiler V4.3c
--------------
- Kein "Stackberlauf" (Fehler #852) mehr bei komplizierteren Ausdrcken.
- Der Fehler "BOOLEAN-Ausdruck zu komplex" kommt nun auch erst bei mehr als
  256 zu erzeugenden Sprungbefehlen innerhalb eines Ausdrucks. Bisher lag
  die Schranke bei 20 (so waren z.B. nur 20 OR-Verknpfungen innerhalb einer
  IF-Anweisung mglich).
- Mittels "CONST Wr = InOut.WriteString" kann "Wr" benutzt werden, um auf
  WriteString zuzugreifen.
- Definitionsmodule erhalten nun die Kennung 6.
- Kein interner Fehler mehr bei CONST-Anweisungen, bei denen Konstanten mit
  jeweils weniger als 16 Bytes zu einer Konstante mit mind. 16 zusammengesetzt
  werden.

GME
---
- Wie oben beschrieben, funktioniert der GME nun auch wieder bei TT-Rechnern,
  allerdings nutzt er nur ST-RAM.

*** 16.03.94  Fertigstellung der Version 2.3f, Compiler 4.3c ***

Compiler V4.3d
--------------
- Die Verwendung des freien Speichers (MiNT, Magix) sowie die
  Aufteilung des verwendeten Speichers (insbes. Fehler 807 und
  823) kann nun konfiguriert werden (Optionen /<, />, /A, /I).
  Siehe dazu Kap. 8 in LIESMICH.TXT.
- Bei Verwendung von "Value Constructors" konnte es in der V4.3c
  passieren, da ein interner Fehler am Ende des bersetzens
  auftrat, mitunter auch ein Totalabsturz des Rechners, weil dabei
  der gesamte obere Speicher berschrieben wurde.

Bibliothek
----------
- StorBase.MemSize zerstrte das Register D6, was sich auch auf
  Storage.DEALLOCATE auswirkte. Ein zerstrtes D6-Register fhrt
  z.B. zu falscher Ausfhrung von FOR-Schleifen.
- MOSCtrl: Der Deinitialisierungsvorgang wurde nochmal korrigiert,
  so da es nun nach ausfhrlichen Tests zu keinen Inkompatibilitten
  mehr kommt (bisher gab es noch Probleme mit MetaDOS, Quantos und
  einigen anderen Programmen, die sich im TRAP#1 installierten).

Utilities
---------
- Im UTILITY-Ordner befindet sich nun "StorUtils" von Gerd
  Castan. Sie bieten Funktionen zum berprfen von allozierten
  Speicherbereichen und damit verbundenen Pointern. Sehr hilfreich
  zum Debuggen komplexer Programme mit dynamischen Datenstrukturen.

*** 08.06.94  Release der Version 2.3g, Compiler 4.3d ***

Compiler V4.3e
--------------
- In V4.3c hatte sich durch die nderung fr BOOLEAN-Ausdrcke ein neuer
  Fehler eingeschlichen, der bei einigen Ausdrcken zur Meldung "interner
  Fehler" fhrte. Ist behoben.

Linker V2.33
------------
- Es konnte vorkommen, da sich der Linker beim Optimieren aufhngte.
  Dies kommt offenbar davon, da der Compiler Referenzen auf leere oder
  unbenutzte Konstanten ins das Modul einfgt und der Linker damit nicht
  umgehen konnte. Der "Fehler" ist im Compiler noch drin, aber drfte
  sich nicht weiter schdlich auswirken.

*** 02.02.95 ***

GEP_ED V2.U
-----------
- Anpassung an MagiCMac. Sollte nebenbei nun auch mit anderen Auflsungen
  bei Ataris klarkommen, wurde aber noch nicht getestet.

*** 11.04.95 ***

Bibliothek
----------
- SysInfo.CPU() erkennt nun auch die 68040-CPU
- Loader/ModBase.ExecProcess: Nach dem Laden & Relozieren von Modulen wird
  der Cache, insbes. bei einer 68040, gelscht. Dies ist ntig, weil sonst
  gelegentlich Abstrze mit einer 68040-CPU beim Laden von Modulen auftreten.
  (Leider half das nix - es gibt immer noch sporadisch Fehler beim Laden
  der Module unter MagiCMac mit 68040-CPU).

- 29.10.95, M2INIT.M:
  Auf dem Stack werden 32 Byte Platz gelassen, damit es keine
  "Memory Violation" unter MiNT mit aktivem Speicherschutz gibt.

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

brigens, vielen Dank an diejenigen, die uns die Fehler - teils sehr
ausfhrlich (auf Disk usw.) - mitgeteilt haben!

Thomas Tempelmann
