

	Release Notes zu Version 2.0 des PTOC
	-------------------------------------

	Im folgenden wird auf die einzelnen Punkte aus dem Schreiben
	vom 22.02.94 bezug genommen.

	1) Der PTOC-Absturz fuer Punkt a) konnte nicht reproduziert werden
	   die anderen beiden von Punkt b) und c) konnten mit den neuen
	   Testbeispielen reproduziert werden und  die Fehler im Compiler
	   wurden behoben.

	2) Ich glaube dieses Problem behoben zu haben, allerdings konnte
	   ich es hier nicht testen da wir keinen HP-Rechner haben. Bitte
	   testen Sie es auf einem HP-Rechner und teilen Sie mir mit
	   falls es noch irgendwelche Probleme gibt.

	3) Ein CASE-Konstrukt ohne OTHERWISE liefert jetzt einen Laufzeit-
	   fehler wenn keine Alternative angesteuert wurde, allerdings
	   wird dies nicht gemacht wenn dass Programm mit der Option
	   "-ypc" uebersetzt wurde (eine Option die beim Erzeugen des
	   PTOC verwendet wird), da im PTOC selbst noch viele solche
	   CASE-Konstrukte existieren.

	4) Bei Verwendung der Option "-Xa" werden jetzt ANSI-C Prototypen
	   fuer Funktionen erzeugt.

	5) Bei Verwendung der Option "-Xp" ist es erlaubt folgende Pointer-
	   arithmetik zu benutzen:

	   <ptr> := <ptr> + <const>
	   <ptr> := <ptr> - <const>
	   <intvar> := <ptr> - <ptr>

	   Die Semantik dieser Operationen ist analog zu der in C, wobei die
	   Pointer jeweils auf denselben Typ Zeigen muessen.

	6) Die Vorbelegung von lokalen Variablen (die auf dem Stack oder in
	   Register liegen) kann mit der Option "-fxx" erzielt werden, wobei
	   "xx" eine Hexzahl aus 2 Ziffern ist, die den Wert des Bytemusters
	   zur Vorbelegung der Variablen darstellt.

	7) Stringkonstanten werden bei einer Zuweisung ueberprueft ob sie
	   die entsprechende Laenge haben, falls nicht wird eine Compiler-
	   fehlermeldung erzeugt. Dies geschieht allerdings nicht bei
	   Verwendung der Option "-ypc" aus demselben Grund wie bei Punkt 3).

	8) Pascal-Aufzaehlungstypen mit hoechstens 256 Elementen werden jetzt
	   auf ein Byte abgebildet, solche mit hoechstens 65536 Elementen
	   werden auf 2 Bytes abgebildet, wenn die Option "-qn" verwendet wird.
	   Der Fehler im angegebenen Testprogramm ist auf einen Fehler in
	   einem C-Compiler ("rcc"?) zurueckzufuehren, mit den C-Compilern
	   die wir hier zur Verfuegung haben trat er nicht auf.

	9) Dieser Fehler wurde behoben, wobei ein ganzes Modul
	   (pascl/convert.c) weggelassen wurde, das den Fehler verursachte.
	   Dieses Modul ist nicht notwendig fuer den PTOC.

	10) Dieser Fehler konnte nur bei Verwendung der Option "-C"
	    reproduziert werden und wurde fuer diesen Fall behoben.

	11) Das setzen einer Environment-Variablen wie "LANG" fuer gewisse
	    Programme ist keine Aufgabe des Compilers sondern des Anwendungs-
	    programmierers, der in seiner Anwendung entscheiden muss welche
	    Environment-Variablen auf welchen Wert gesetzt sein muessen.

	12) Die Strukturnamen "ptoc_Elem<x>", die bei Verwendung von 
	    "variant records" erzeugt wurden, wurden ersetzt durch ent-
	    sprechende Typ- und Konstantennamen.

	13) Die Performanceoptimierung fuer den "IN" Operator wurde durch-
	    gefuehrt, die anderen fuer "DIV", "*" und "MOD" allerdings
	    nicht, da diese sowieso von den meisten C-Compilern gemacht 
	    werden und ausserdem auch maschinenabhaengig sind (z.B. bei
	    Multiplikation mit 2,4 oder 8 ist nicht das shiften am 
	    schnellsten sondern das Laden einer Adresse mit Indexregister
	    und entsprechendem Skalierungsfaktor, insofern diese Adressierung
	    auf dem entsprechenden Rechner unterstuetzt wird.)

	14) Das Dereferenzieren von Pointern, deren Wert Null ist erzeugt
	    jetzt einen Laufzeitfehler falls das Programm mit der
	    Option "-C" (range check) uebersetzt wurde.

	15) Dieser Fehler wurde behoben.

	20) Dieser Fehler wurde behoben.

	21) "ptoc" gibt jetzt eine Warnung aus fuer jede Option die er nicht
	    kennt.

	22) Bei Auftreten von Uebersetzungsfehlern wird das generierte 
	    C-File vom "ptoc" wieder geloescht und der Exit-Code vom
	    "ptoc" wird verschieden von Null sein.

	27) Das Umsetzen von Pascal "FOR" Schleifen in C-Code scheint auf
	    den ersten Blick umstaendlich zu sein, aber durch die Definition
	    dieser Schleifen und die Verwendung von Unterbereichstypen als
	    Laufvariablen ist der umstaendliche C-Code meistens notwendig.
	    Ich konnte nur das "if (1)", das im C-Code manchmal erzeugt 
	    wird, wegoptimieren.


