
Hinweise zum Anpassen von Programmen, die mit dem System der Version 1
(Compiler Version 3) erstellt wurden.


Hier erfahren Sie, wie Sie Ihre alten Modula-Programme auf das neue System
der Version 2 (Compiler Version 4) bertragen.

Sie sind leider gezwungen, alle ihre alten Module neu zu bersetzen.
Machen Sie sich zuvor mit der Bedienung von 'ModRef' (Kap. 2.7) vertraut,
das Programm kann Ihnen dabei eine groe Hilfe sein.

Auf die meisten notwendigen nderungen wird Sie der Compiler selbst hinweisen.
Sie mssen dann nur die entsprechenden Korrekturen vornehmen. Meist mssen
Sie eine Funktion nun aus einem anderen Modul importieren oder einen
Parameter ergnzen.

Schwierig wird es, wenn Sie Funktionen der Megamax-Bibliothek in Assembler
aufgerufen haben und sich dort nun Parameter gendert haben. In diesem
Fall kann Ihnen der Compiler nicht helfen - Sie mssen die betroffenen
Stellen selbst finden und anpassen.


1. nderungen am Compiler von Version 3 auf Version 4.


Folgende nderungen werden vom Compiler nicht als Fehler angezeigt, mssen
aber angepat werden, damit die Programme wie bisher laufen:

Bei eingeschaltetem Range-Check ($R+) wird nun nein Laufzeitfehler angezeigt,
wenn bei einer CASE-Anweisung keine der Selektionen zutrifft und auch kein
ELSE-Zweig besteht. Abhilfe: Entweder die Module mit $R- bersetzen
("-R" in der Direktiven-Zeile der Compiler-Box) oder leere ELSE-Zweige
einfgen.

Ebenso werden nun ber-/Unterlufe bei INC und DEC bei $R+ erkannt.
Normalerweise ist das sicher auch erwnscht, soda hierauf kaum geachtet
werden mu.

Die Compiler der Version 3 kannten nur einen Real-Typ (64 Bit) namens REAL.
Dieser heit nun LONGREAL. Bei alten Programmen sollten Sie deshalb alle
Vorkommen von REAL durch LONGREAL ersetzen. Analog mu auch FLOAT nach
LFLOAT umbenannt werden!

SETs mit mehr als 8 Elementen werden nun anders angeordnet. Fr Zugriffe auf
externe Sets (Hardware-Bits, GEM-Sets) mssen die Set-Definitionen entweder
angepat oder mit der Option $U- (s. Compiler-Direktiven) bersetzt
werden. Vorsicht auch mit dem Operieren auf diesen Sets in Assembler!

Die Elemente von RECORDs werden nun immer in ihrer Deklarationsfolge
abgelegt, auch wenn sie mit Kommata aufgezhlt werden. Die alte,
umgekehrte Reihenfolge knnen Sie mit der Direktive $T- wiedererlangen.


Die weiteren Flle werden vom Compiler erkannt, soda nach ihnen nicht
extra gesucht werden braucht:

Was frher VAL war, heit nun CAST. Wurde VAL benutzt, mute es aus SYSTEM
importiert werden. Da VAL nun nicht mehr in SYSTEM ist, wird der Compiler
den Import sofort bemkeln. Ersetzen Sie dann einfach alle Vorkommen
von VAL durch CAST. In wenigen Fllen kann es vorkommen, da auch CAST
nicht mehr erlaubt ist - informieren Sie sich dann im Kapitel des Compiler
ber CAST.

Strings ungleicher Lnge sind nicht mehr zuweisungskompatibel. Benutzen Sie
Assign aus dem Strings-Modul!

Laufvariablen fr FOR unterliegen nun einigen Einschrnkungen. Mehr dazu
im Kapitel zum Compiler. Abhilfe lt sich meist durch Einfhren einer
neuen lokalen Variable leisten.

ASSEMBLER mu nun aus SYSTEM importiert werden.


2. nderungen in der Bibliothek von Systemversion 1 auf Version 2.

Betrifft nur diejenigen, die das M2Init-Modul (fr die Grundinitiali-
sierung eines gelinkten Programms) selbst ersetzen: In Version 1 wurde
in A0 ein Zeiger auf die base page bergeben - nun geschieht dies
nur noch bei Accessories; ist der Wert Null, ist es kein Accessory-Start
und man erhlt den Zeiger auf die base page ber die Adressierung 4(A7).
Auerdem wird nun in A2 der Zeiger auf den PDB bergeben, dieser lag
bisher immer bei einem konstanten Abstand vom Codebeginn aus.


Modul Directory

Der Eintrag path bei DirQueryProc ist nun ein REF-Parameter. Wenn Sie
DirQuery benutzen, mu demnach die angegebene Prozedur das Schlsselwort
"REF" beim path-Parameter erhalten.

Das Aufzhlungselement writtenAndClosedAttr wurde in archiveAttr umbenannt.

Die Typen Drive und DriveSet befinden sich nun im Modul MOSGlobals.

Die Funktionen SplitPath und SplitName sind nun im Modul FileNames.


Modul Loader

CallModule wurde um zwei Parameter erweitert: In env kann ein Zeiger auf
ein selbstdefiniertes "Environment" bergeben werden; hier braucht
dazu einfach NIL bergeben werden.

Der Parameter driver hat noch keine Funktion; fr ihn ist NoDrivers
aus dem Loader-Modul zu bergeben.


Modul Clock

Die Typen Time und Date befinden sich nun im Modul MOSGlobals.


Modul Paths

Die Definitionen von PathList und PathEntry stehen nun im Modul MOSGlobals.

Die Funktionen StdPaths, SetPaths, New- und PrevStdPaths wurden entfernt,
stattdessen mu nun eine eigene Variable fr die entsprechende Liste
deklariert werden.

Der FileSelector fr SearchFile wird nun im Modul PathEnv definiert.


Modul KbdCtrl

Das Conterm-Bit mu nun von auen gesetzt
werden, z.B. mit der dortigen Funktion ExtendedMode (TRUE).


Modul XBIOS

SuperExec hat nun einen PROC- statt ADDRESS-Parameter. Damit entfllt
das lstige Typwandeln, wenn eine Modula-Prozedur darber aufgerufen
werden soll.


Modul GemEnv

Die Funktion SuspendedProcess wurde entfernt, da sie unbrauchbar war.

Die FileSelect-Routine befindet sich nun im Modul PathEnv.


Modul Timeconvert

Die Funktion TimeToString hat nun einen optionalen Format-Parameter.
Zur Anpassung ist hier ein Leerstring anzugeben.


Modul VT52

Die Sequenzen sind nun Konstanten.


Modul Calls

CallSystem und CallExternal wurden entfernt, stattdessen knnen nun
CALLSYS und CALLEXT aus SYSTEM verwendet werden.


Diverse Module

FileBase.ErrMsgField heit nun MOSConfig.FileErrMsg;
ErrBase.MsgField heit nun MOSConfig.RuntimeErrMsg.

Die Funktionen WriteNum, ConvNum und NumToStr erlauben nun am Ende die
Angabe des Fll-Zeichens. Zur Anpassung ist hier "0" anzugeben.

ReadReal liest nun den 4-Byte Datentyp REAL, fr LONGREAL mu ReadLReal
verwendet werden.

Ende.
