Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03588.jsonl.gz/466

Das Modul dient zur Steuerung des Verhaltens einer FPU 68881/882 bezüglich Fehlern und Rundung von Zahlen. Es kann auch ohne vorhandene FPU problemlos importiert und benutzt werden. Darum sollte es auch dann importiert werden, wenn nicht speziell Code fuer eine FPU generiert wird. Es erlaubt die Einstellung, welche Fehler zu einer Exception, also zu einem Laufzeitfehler -- in der Amiga-Terminologie ein Trap -- führen.
Normalerweise ist die FPU vom Betriebssystem so eingestellt, dass nicht korrekte Berechnungen, beispielsweise Überlauf oder Wurzel aus einer negativen Zahl, keine Auswirkungen auf den Programmablauf haben. Das Programm arbeitet danach einfach mit nicht vorhersehbaren und im allgemeinen unsinnigen Werten weiter. Durch den Import dieses Moduls wird die FPU so initialisiert, dass inkorrekte Resultate solcher Berechnungen zu einem Laufzeitfehler führen.
Zusätzlich zu diesem rein passiven Verhalten bietet das Modul eine Reihe von Prozeduren, die es dem Kenner der Materie erlauben, das Verhalten der FPU seinen Wünschen entsprechend einzustellen. Dazu empfiehlt aber unbedingt das Studium der Fachliteratur von Motorola.
EnableExc behandelt die durch die Konstante stdExc definierten Exceptions.
DisableExc schaltet die Behandlung aller Exceptions ab.
Die Prozeduren SetExc und ClearExc erlauben das Setzen oder Löschen einzelner Exceptions.
Sollen gleich mehrere Exceptions behandelt beziehungsweise ignoriert werden, kann dies mit der Prozedure SetExcSet geschehen. Damit werden genau die im SET fpuExcSet enthaltenen Exceptions behandelt.
Die behandelten Exceptions liefert die Funktion GetExcSet zurück.
Der Rundungsmodus der FPU kann ebenfalls geändert werden. Der aktuelle Rundungsmodus kann mit GetRounding festgestellt werden, während SetRounding den in roundingMode angegebenen Modus setzt.