Willkommen zur StormC-Demoversion 1.0 Bereits zur Computer 95 im letzten November war eine Vorversion unseres neuen Compilersystems erhältlich. Die verwirklichten Konzepte und eingeflossenen neuen Innovationen haben auch die Presse überzeugt, wie Sie in einigen Berichten in den Januar- und Februar-Ausgaben der gängigen Amiga-Zeitschriften nachlesen können. Hier nur einige Auszüge: Amiga Plus 1/96 Neue Konzepte bei Entwicklung und Qualitätssicherung... Die erste Besonderheit ist die Projektverwaltung, die zum ersten Mal bei einem solchen Paket nicht aufgesetzt wirkt... Amiga Magazin 1/96 Die Projektverwaltung: Endlich einmal ein Tool, das nicht wie ein Klotz am Bein wirkt, sondern wirklich nützlich ist. Amiga Special 2/96 Ein schneller Compiler, der leistungsstarke Debugger und die komfortable Entwicklungsumgebung sind eine interessante Mischung, wenn es sich um professionelle Softwareentwicklung handelt... Mit der beiliegenden Demoversion können Sie sich selbst davon überzeugen. Einschränkungen der Demoversion: ================================ Der beiliegende Compiler wird Ihnen zwar große Sourcen durchkompilieren aber lediglich maximal 10 KByte große Objektcodes schreiben. Sie haben damit zumindest die Gewißheit, daß Ihre großen Projekte auch kompiliert werden können. Der Linker linkt aus den erzeugten Objekten ein Programm mit maximal 20 KByte Größe. Alle Programmteile von StormC lassen sich NICHT über das CLI starten sondern sind lediglich in der integrierten Umgebung nutzbar. Wichtiges zur Installation: =========================== Die vorliegenden Dateien sind dafür vorgesehen, von CD installiert zu werden. Wenn Sie die Dateien bereits auf Ihre Festplatte kopiert haben ist eine Installation nicht notwendig. Sie müssen dann lediglich einen StormC-Assign in die Datei "user-startup" eintragen, damit die Demo- Sourcen und StormC-Voreinstellungen unverändert genutzt werden können. Include-Lizenzen: ================= Wenn Sie die Demoversion von einer Mailbox oder vom Aminet geladen haben, liegen nur die Includes und Bibliotheken bei, deren Urheber- rechte bei uns liegen. Es fehlen die Systemincludes zu Kickstart/Work- bench 3.1. Woher bekommt man die Includes? ------------------------------- Wenn Sie die Demoversion direkt bei uns anfordern, werden selbstver- ständlich alle Includes und Bibliotheken mitgeliefert. Wir müssen allerdings eine Schutzgebühr von 20,- DM berechnen, die Ihnen jedoch beim Kauf einer Vollversion von StormC angerechnet wird. Bei einer Bestellung per Nachnahme erhöht sich der Preis um die Nachnahmegebühren von 13,- DM. Desweiteren finden Sie die kompletten Includes und Bibliotheken auf der CD 1/96 des Amiga-Magazins. Vielleicht haben Sie aber auch bereits die Preview-Version unseres StormC-Compilers. Dann haben Sie ebenfalls bereits die Includes erhalten und müssen in der Demoversion lediglich folgende Dateien ergänzen: In den Includes die kompletten Verzeichnisse: datatypes devices diskfont dos exec gadgets graphics hardware intuition libraries prefs resources rexx utility workbench In den Libs die Bibliothek: amiga.lib small.lib debug.lib ddebug.lib Bitte verwenden Sie nicht einfach die Includes im Verzeichnis eines anderen Compilers oder direkt von unserer Preview-Version. Es wurden einige Änderungen an den, der aktuellen Demoversion mitgelieferten Dateien vorgenommen, so daß nur die beschriebene Vorgehensweise zum Erfolg führt. Änderungen und Erweiterungen gegenüber der Preview-Version: =========================================================== Allgemeine ---------- Die komplette Umgebung ist nun lokalisiert. Die voreingestellte Sprache ist Englisch. Bei der Installation wird automatisch der deutschsprachige Catalog kopiert und auch genutzt, wenn Sie Workbenck-Lokalisierung deutschsprachig eingestellt haben. Möchten Sie trotz deutschsprachiger Workbench, mit StormC englisch- sprachig arbeiten, genügt es die Locale-Datei im Verzeichnis "StormC:StormSYS/CATALOGE/Deutsch/StormCPP.catalog" umzubenennen. Programmstart: -------------- Entgegen der Beschreibung im Handbuch auf der Seite 12 wird das Start- bild nicht angezeigt, wenn für Ihren Workbench-Screen weniger als 64 Farben eingestellt sind. In diesem Fall erscheint ein kleines Fenster, das Sie darauf hinweist, daß das System noch geladen wird. Nach dem Laden erscheint ein weiteres Fenster, das Sie darüber informiert, welche Version Sie benutzen. Projektverwaltung (StromShell): ------------------------------- Bei "Datei(en) hinzufügen" ist eine mehrfache Selektion in der Dateiauswahl möglich. In die Projektfenster können Workbench-Piktogramme (Appwindow) abgelegt werden. Ist ein Sektionstitel markiert, wenn der Menüpunkt "Löschen" angewählt wird, erfolgt die Rückfrage, ob der Inhalt der ganzen Sektion gelöscht werden soll. Beantworten Sie die Rückfrage mit "JA", wird die komplette Sektion entfernt. Die jeweiligen Dateien bleiben selbstverständlich unberührt. Wird das Debug-Piktogramm oder der Menüpunkt "Debug..." angewählt, obwohl die Option zum Erzeugen von Debugger-Dateien im Projekt nicht angewählt sind, erfolgt eine Rückfrage, ob große oder kleine Debug-Dateien angelegt werden sollen. Die Projekt-Einstellungen bleiben allerdings unbeeinflußt. Bei Klick auf die Knöpfe "Start..." und "Debug..." aus dem Fehlerfenster, wird das Fehlerfenster zuerst geschlossen und dann die entsprechende Programm- funktion ausgeführt. Beim "Make" bereits übersetzter Projekte wird jetzt zurückgefragt, ob nur gelinkt oder das ganze Projekt neu kompiliert werden soll. Der neue Menüpunkt "Bibliothek(en) hinzufügen..." entspricht dem Menüpunkt "Datei(en) hinzufügen...", setzt aber den Bibliothekssuchpfad des Projekts als Verzeichnis im ASL-Filerequester und das Pattern "#?.lib". Dadurch lassen sich deutlich schneller Bibliotheken zum Projekt hinzunehmen. Einziges Problem: Mehrfachselektionen werden immer alphabetisch sortiert vom ASL-Requester zurückgegeben, die relevante Reihenfolge von Bibliotheken kann man also nur erhalten, wenn man jeweils eine Bibliothek nach der anderen zum Projekt hinzufügt. Werden Dateien hinzugefügt, die noch nicht existieren, so wird auf Wunsch die Datei "leer" erzeugt. Als Icon wird jeweils versucht das Icon "ENV:STORMCPP/def_text.suffix" zu übernehmen, wobei für ".suffix" das Suffix des Dateinamens eingesetzt wird (z.B. .c oder .h). Dadurch lassen sich für verschiedene Textarten verschiedene Piktogramme und Texteinstellungen verwenden. Die Einstellungen können nun auch von der StormShell gesichert und geladen werden. Für den Linker wurden zwei neue Seiten in den Projekteinsteller eingefügt. Eine weitere erhielt der Optimizer des Compilers. Beim Programmstart kann so ziemlich jeder Parameter der Shell-Umgebung eingestellt werden. Die Codegröße des Executables wird nun nach jedem Compilerlauf neu angezeigt. Die Codegröße von Bibliotheken wird nun auch angezeigt, wenn die Bibliothek aus dem Suchpfad der Bibliotheken stammt. Die Einstellung für 32-bit-korrekte-Multiplikation ist entfallen. Der Compiler entscheidet selbständig wann welche Multiplikation benötigt wird. Bei den Einstellern zum C/C+-Compiler ist die Möglichkeit hinzugekommen, das kleine oder große Code-Modell zu wählen. Der Compiler und der Linker generieren dann kurze Sprünge (bsr). Hinweis: Zur aktuellen Demoversion werden allerdings keine Bibliotheken geliefert, die ein kleines Code-Modell unterstützen. Bei eingeschalteter Option werden Ihre Programm demnach nicht lauffähig sein. Bei "Make" und "Compile" werden nun alle Quelltexte automatisch gesichert. Die Funktionen der Iconleiste sind nun mit den Funktionstasten F1 bis F6 und F7 bis F10 erreichbar. Das About-Fenster und das Einstellungsfenster kann auch mit ESC geschlossen werden. Weitere Shortcuts für About sind "o" und . Der Use- und der Cancel-Knopf des Einstellungsfensters sind auch über ihre Shortcuts bedienbar. Das Fehlerfenster ist nun tastatursteuerbar: Die Shortcuts für "Run", "Debug" und "Cancel" sind implementiert. Wenn gerade ein "Make" läuft, kann man es auch mit abbrechen, danach, bzw. wenn kein "Make" läuft, wird das Fenster durch geschlossen. Mit "w" kann man die Warnungen an- und ausschalten. Per Cursor läuft man durch die Fehlerliste, per -Cursor erreicht man die erste oder letzte Fehlermeldung. zeigt die Fehlermeldung im Editor an. Das Projektfenster ist komplett tastatursteuerbar. Alle 4 Cursortasten bewegen den Cursor und den Inhalt entsprechend, / ermöglicht den Sprung an den Anfang/Ende der Einträge, / an den rechten oder linken Rand. führt die Aktion entsprechend eines Doppelklicks aus, die jeweilige Alternative (bisher nur beim Executable belegt). Backspace bzw. Delete löschen den Eintrag des Cursor aus dem Projekt und setzen den Cursor auf den nachfolgenden Eintrag. Debugger (StormRUN): -------------------- Das im Handbuch beschriebene Debugger-Demo ist leider nur ab Betriebssystem V39 lauffähig. Wenn Sie V37/38 installiert haben, sollten Sie mit dem Gadtools-Demo probieren. Der Menüeintrag "Programm sichern als..." (Seite 42) ist in der aktuellen Version nicht enthalten, da eine Änderung am Linker eine entsprechende Funktionalität verhindert hat. Variablenwerte einfacher Zahl-Typen (char bis long) können in allen Variablen- und Inspektionsfenstern geändert werden. Die Wertausgabe ist deutlich schneller, da nur noch die Werte konvertiert werden, die sich geändert haben. Die möglichen Breakpoints werden jetzt gefiltert, so daß pro Quelltext- zeile nur noch max. ein Breakpoint steht, d.h. jeder Schritt führt auf eine nächste Zeile. In einem Fall des Breakpoint-Löschens wurde der Cache nicht gelöscht, was Probleme auf 68040-Rechner zur Folge hatte. Ein Hexeditor ist eingebaut. Es kann zwischen Byte-, Word- und Longanzeige hin- und hergeschaltet werden. Die Eingabe von Adressen (sowohl im Gadget wie auch direkt im Text), Hexdaten und ASCII Daten ist möglich. Wie im restlichen Debugger wird nur dort etwas angezeigt, bzw geändert werden, wo gültiges RAM vorhanden ist. Das verhindert Enforcerhits, aber verbietet auch den Zugriff auf I/O-Bausteine. Mit der TAB-Taste kann der Cursor von der Adresspalte auf die Hex- und ASCII-Daten-Spalte und wieder zurück gesetzt werden. Wird in der Adresspalte die dort angegebene Adresse überschrieben, springt der Hexeditor automatisch zu der Adresse. Bei "Save Settings" ("Einstellungen Speichern") werden die Fensterposition und -größe des Hexeditors auch gespeichert. Das "Casting" funktioniert. Dazu wurde das Cycle-Gadget in den Variablen- fenstern gegen ein Stringgadget ausgetauscht (in einer Objektdatei können schnell mal > 100 Typen auftauchen - mit einem Cyclegadget ist das nicht handhabbar). Bislang muß in dieses Stringgadget der Typ exakt so eingetippt werden, wie er ausgegeben würde. Wenn eine Adresse illegal ist, wird jetzt die betroffene Adresse ausgegeben (statt "--"). Die Typ-Ausgabe kann bekanntlich in zwei Modi erfolgen: ANSI-C oder AMIGA-C (mit ULONG, BYTE etc). Diese Unterscheidung kann der Compiler leider nicht in den Debuginfos ablegen. Derzeit wird die AMIGA-C- Schreibweise verwendet (kompakter). Der Start des Programms ist jetzt systemkonformer und -kompatibler. Auch Aufrufe von Execute() oder SystemTagList() funktionieren jetzt und, wenn als Ausgabe die Console gewählt wird, kommen Ausgaben der Befehle auch auf die Console. Das Programm erscheint jetzt auch in der Liste der CLIs, einen Kommandonamen in den Projekteinstellungen anzugeben ist also sinnvoll. Das Resource-Tracking ist nun implementiert. Am Ende des Programms oder nach einem Kill werden bisher Screens, Windows, Memory, Libraries, Locks und Files angezeigt, die nicht geschlossen oder freigegeben wurden. Ein Doppelklick in die Liste führt an die Stelle des Funktionsaufruf. Das neue Menü "Debug" enthält einen Menüpunkt "Flush Resources" ("Ressourcen freigeben") zur Freigabe dieser Ressourcen. In manchen Programmen werden sehr viele Ressourcen alloziert, insbesondere natürlich Speicher. Solche Ressourcen, die also keinen direkten Funktionsaufruf im Programm besitzen werden nicht angezeigt, aber dennoch freigegeben. Ein schönes Beispiel hierfür kann mit der ASL-Library verdeutlicht werden. Wenn Sie ein Programm "killen", währen ein ASL-Requester offen ist, wird das ASL-Fenster geschlossen, obwohl der OpenWindow-Aufruf nicht aus Ihrem Programm sondern aus der ASL-Library gemacht wurde. Das Ressource-Tracking kann nur den unmittelbare "Caller" ermitteln. D.h. die Funktion, die den jsr d(a6) enthält. Schon eine Stub-Funktion für Library-Aufrufe verhindert deshalb die korrekte Anzeige des Aufrufs. Deshalb ist es angeraten Stub-Funktionen zu vermeiden und "pragma amicall"- und "tagcall"-Aufrufe zu verwenden. Editor: ======= Help-Funktion ------------- Mit drücken der Help Taste kann man das Wort unter dem Cursor an die HotHelp-Library (Version 3) übergeben. HotHelp wird dann veranlaßt, das Schlüsselwort zu suchen und den Hilfetext anzuzeigen! Lexikon-Dateien und manuelle Farbänderungen / Aufbau der Lexikon-Dateien ------------------------------------------------------------------------ Lexikon (0001) Amiga Typen 0x00ff0000 0xffffffff 2 0 0 0 VOID LONG... Zeile 1: Diese Zeile identifiziert die Datei als Lexikon und trägt die Versionsnummer der Lexikon-Datei. Zeile 2: Kommentarzeile Zeile 3: RGB-Farbe-Vordergrund RGB-Farbe-Hintergrund (ab V39) Vordergrund-Stiftnummer Hintergrund-Stiftnummer (für V37 und V38 erforderlich) Stilnummer Zeile 4: Groß-/Kleinschreibung beachten ein/aus Zeile 5-...: Inhalte Ab Betriebssystem-V39 können RGB Farben für die Lexika eingesetzt werden. Die ersten beiden Zahlen geben in 24 Bit die RGB Farbe für Schrift- und Hintergrundfarbe an. Dazu können auch Hexadezimalzahlen mit "0x" am Anfang benutzt werden. Unter Kickstart V37/V38 werden feste Stiftnummern für die Farbangaben verwendet. Sie sollten das Compiler-System auf einem Screen mit mindestens 8 Farben betreiben, da die Farbunterschiede andernfalls zu gering sind. Für den Editor wurden zwei neue Menüpunkte eingeführt: 1. Einstellungen für den Editor allgemein... 2. ...und für jeden Text im besonderen. Folgende Editoreinstellungen werden, wie im Fenster zu sehen, bereits unterstützt: Autosave, Backups, Strip EOL Blanks und Textfontwahl. Autosave kennt zwei Algorithmen: Entweder wird alle "n" Minuten ein normales Save durchgeführt, oder es wird der Text in eine Extradatei gesichert. Der Name dieser Extradatei wird automatisch durch dem Namen des Dokuments mit einem angehängten ";0" erzeugt. Das Sichern in diese Extradatei verändert natürlich nicht den Textnamen und setzt auch nicht das Modify-Flag "M" zurück. Zusätzlich kann man beim automatischen Sichern nachfragen lassen, ob gesichert werden soll. Hat der Text keinen Namen, wird der Benutzer aufgefordert, den Text zu sichern, ein Autosave wird dann nicht mehr durchgeführt. Beim Laden eines Textes wird überprüft, ob eine Autosave-Datei jüngeren Datums existiert, in diesem Fall bekommt der Benutzer die Wahl welche Datei er laden will, als Textname wird in beiden Fällen der Originaldateiname gewählt. Man kann bis zu 9 Backup-Dateien anlegen. Bei jedem Sichern des Textes (auch bei Autosave auf die Originaldatei) werden die Backup-dateinamen hochgezählt (die älteste Datei geht dabei eventuell verloren). Die Namen der Backup- Dateien ergeben sich aus dem Namen der Originaldatei mit angehängtem ";N", wobei "N" eine Ziffer zwischen 1 und 9 ist. Die älteste Datei ist die Datei mit der höchsten Nummer, die jüngste mit der Nummer 1. Beim Sichern kann man alle "white spaces", d.h. insb. Spaces und Tabs am Ende der Textzeilen entfernen lassen. Als Zeichensatz kann jeder nicht-proportionale Zeichensatz angegeben werden. Achtung: Momentan wird noch keine Fehlermeldung ausgegeben, wenn ein ungültiger (d.h. nicht existierender oder proportionaler) Zeichensatz angegeben wird. Es ist empfehlenswert wirklich Zeichensätze auszuwählen, deren Zeichen alle gleich breit sind. Dies gilt z.B. nicht für den Courier- Zeichensatz, manche Zeichen sind breiter als die im Font angegebene Breite. Dadurch kann es zu leichten Darstellungsfehlern am Rand des Texts kommen. Die Tabulatorweite kann eingestellt werden und wird mit dem Tooltype TABWIDTH gespeichert. Automatische Einrückungen können durch "{" und "}" ausgelöst werden. Bislang wird nur eingerückt (d.h. nur auf das Zeichen "{" reagiert). Man kann wählen, ob Spaces oder Tabs eingefügt werden, und wieviel jeweils. Dabei werden 2 Methoden und ihre Kombinationen unterstützt: 1. Vor der Klammer eingerückt bedeutet, daß beim Eingeben der Klammer diese eingerückt wird, wenn vor der Klammer nur Spaces oder Tabs in der Zeile stehen. Nach der Klammer wird nach dem nächsten Zeilenum- bruch eingerückt, wenn die Klammer das letzte Zeichen der vorherigen Zeile ist. Man kann auswählen, welche Lexika eingefärbt werden und die Syntaxein- färbungen für C/C++ Kommentare, Strings, Char-Konstanten und Zahl-Konstanten. Die Einfärbung von C-Kommentaren (/* Test */) funktioniert mit Einschränkungen: geschachtelte Kommentare sind nicht möglich (werdem allerdings vom Compiler auch nicht unterstützt, #if 0 ... #endif macht das auch besser). Die gesamte Einfärberei hat einige Einschränkungen, die jetzt erst mit den C-Kommentaren wirklich zum Vorschein kommen: Verschachtelte Einfärbungen, z.B. C++-Kommentare, die in einem C-Kommentar stehen, können die Einfärbung durcheinander bringen. Werden die einzelnen Einfärbungen ausgeschaltet, so wird nur die Farbe ausgeschaltet, die Farbmarkierungen werden dennoch gesetzt. Also werden z.B. in einem C-Kommentar stehende Strings oder Lexika- wörter nicht eingefärbt, egal ob die Einfärbung von C-Kommentaren an oder aus ist. Genauso bringt das Ausschalten der Einfärbungen zur Zeit keinen Geschwindigkeitszuwachs. Die Editoreinstellungen werden unter dem Namen "StormSettings.ED" gespeichert. In dieser ASCII Datei stehen in den letzten Zeilen die Farben und Register dieser Syntaxeinfärbungen entsprechend der Reihenfolge im Texteinstellungsfenster und der Syntax, wie sie auch in den Lexikadateien verwendet wird. Die Gadgets im Editorfenster sind auch über Tastatur steuerbar. Der Shortcut ist natürlich von der Lokalisierung abhängig, sollte aber immer den Qualifier "ctrl" enthalten, um Konflikte mit anderen Shortcuts zu vermeiden. Der Qualifier "ctrl" wird auch extra behandelt um Konflikte mit Texteingaben zu vermeiden (was insbesondere CTRL-I und CTRL-M betrifft, die jetzt nicht mehr äquivalent zu TAB und RETURN sind). Zwischen der Modified-Anzeige und der Cursorspalten-Anzeige befindet sich jetzt eine Hilfezeile für alle Gadgets. Um wirklich von einer 100%igen Tastaursteuerbarkeit zu reden fehlt noch die Möglichkeit, zwischen den Textfenstern zu springen (bzw. auch die Projektfenster aktivieren zu können). Das Find&Replace-Fenster ist nun auch vollständig tastatursteuerbar. Beim Öffnen des Fensters ist immer das Find-Stringgadget aktiv. Mit oder wird der String gesucht und das Replace-Gadget aktiviert. Dort wird mit oder wieder das Findgadget aktiviert. Aus diesen Stringgadgets heraus kann man alle anderen Gadgets dennoch durch die Shortcuts bedienen, wahlweise mit der rechten oder auch linken Amiga-Taste (die linke Amiga-Taste wird erlaubt um Konflikte mit Shortcuts von Programmen wie NewEdit zu vermeiden, die einen Großteil aller Shortcuts für sich belegen). Die Shortcuts der Cycle- und Checkboxgadgets reaktivieren das Stringgadget wieder, die Shortcuts der Buttons aktivieren das Texteditorfenster. Will man also einen Text suchen und danach in das Textfenster zurückkehren, so sollte man die Suche mit dem Shortcut von "Find" (rcommand f) auslösen. schließt das Find&Replace-Fenster und aktiviert das Textfenster. Die Funktionen aus der StormShell-Toolbar können auch aus dem Editor mit den Funktionstasten aufgerufen werden. Eine einfache Print-Funktion ist eingebaut: der ganze Text kann ausgedruckt werden, dabei wird ein Progress-Fenster angezeigt, in dem der Druck auch abgebrochen werden kann. Tastaturbelegung: ----------------- Shift-Cursor Up/Down Bewegt den Cursor auf die erste/letzte Zeile, die im Fenster angezeigt ist. Shift-Cursor Left/Right Bewegt den Cursor auf die erste/letzte Spalte in der aktuellen Zeile. Alt-Cursor Up/Down Springt an den Anfang/ans Ende des Textes. Alt-Cursor Left/Right Bewegt den Cursor auf das nächste Wort vor oder auf das letzte hinter dem Cursor. Shift-Delete oder Shift-Backspace Löscht die Zeile, auf der der Cursor steht. Die Zeile wird in die Zwischen- ablage gespeichert. Alt-Delete Löscht die Zeile ab der Cursor-Position bis zum Ende der Zeile. Alt-Backspace Löscht den Text zwischen der ersten Spalte bis zur Cursorposition. Help Schickt das Wort unter dem Cursor an die Hothelp-Library V3.0 (14. Feb 94). Compiler: --------- Im Folgenden werden die Compileränderungen seit der Veröffentlichung der Preview-Version aufgelistet. Im ASM-Source wurde bei DS.B o.ä. die allokierte Speichergröße nur als 16-Bit-Zahl ausgegeben. Ab 68020 wird der Befehl EXTB.L unterstützt. Durch Probleme bei Fließkomma-Konstanten mit angehängtem "f" (z.B. "0.5f") kam es gelegentlich zur Ausgabe von unsinnigen Werten. Konstrukt "#if defined (xxx)" (die Variante mit Klammern hinter dem define) führte zu einer Compiler-Panik. Konvertierung von "unsigned short"/"unsigned byte" auf einen längeren Typ geschah mittels AND und falscher Bitmaske (genau invers). Konvertierung von "unsigned byte" auf einen vorzeichenbehafteten Ganzzahltypen geschah fälschlich mittels EXT. Aufruf virtueller Funktionen bei Mehrfachvererbung: der "this"-Pointer der aufgerufenen Funktion wurde in der Variablen korrigiert, in der er gerade steht - auch wenn es sich dabei um eine noch benötigte Variable handelt. "Rundungsfehler" bei Anordnung lokaler Variablen auf dem Stack führte u.U. zu Variablen an ungeraden Adressen und Stack Frames ungerader Größe. "Geschmissene" Exceptions konnten im optimierten Modus meist nicht mehr aufgefangen werden. Variable "sym_handlers" (wichtig fürs Exception Handling!) wird jetzt im Small-Data-Model auch A4-relativ adressiert (endlich eine sinnvolle Verbindung von Small Data Model und OO-Programmierung). Wurde in einem Destruktor einer Klasse, die einen Member oder eine Basisklasse mit Destruktor besitzt, eine Inline-Funktion aufgerufen, so wurde vom Ende der Inline-Funktion direkt an das Ende des Destruktors (zur Destruierung von Membern und Basen) gesprungen. Beim Abtesten einzelner Bits in Bitfeldern wurde auf das falsche Bit zugegriffen, was sich auf Umwegen auch beim Konstruieren und Destruieren virtueller Basisklassen bemerkbar machte. Als Basiszeiger für die double-Mathe-Lib wird jetzt "_MathIeeDoubBasBase" statt "lib_MathBase" verwendet. Die Bibliotheksroutinen "lib_int2double" und "lib_double2int" wurden durch direkte Aufrufe von IEEEDPFix/IEEEDPFlt ersetzt. Die Repräsentierung von "long long" wurde compilerseitig auf eine einleuchtendere Form umgestellt (normales Big Endian). Außerdem werden für entsprechende Operationen die Bibliotheksfunktionen Add64, Sub64, Neg64, Cmp64, UMult64, UDiv64, UMod64, SMult64, SDiv64, SMod64 aufgerufen. Leere "_INIT_"-Funktionen werden nicht mehr erzeugt. Bei numerischer Auswertung der Ausdrücke "i != 0" und "!i" wurde das Ergebnis fälschlich mit AND.W statt AND.L ausmaskiert. Ein recht globaler Fehler in der Speicherverwaltung verursachte Adreßfehler auf 68000ern (und ungünstig align'te Daten auf allen anderen Amigas). Innerhalb von Konstruktoren wurden generell keine virtuellen Funktionen aufgerufen, selbst wenn diese eindeutig nicht über "this" bezogen waren. Fehler beim Zugriff auf Strukturen von mehr als 32 KByte Größe: Adreßoffsets >32767 wurden falsch codiert und führten zu einem Assemblerfehler. Fehler im Zusammenhang mit MagicMenu und möglicherweise mit SUN-Mouse-Utilities ------------------------------------------------------------------------------- Bei installiertem MagicMenu friert der Bildschirm ein, wenn bei aktivem Piktogramm-Fenster die rechte Maustaste gedrückt wird und sich der Mauszeiger über einem Piktogramm befindet. Durch eine Inkonformität von MagicMenu werden Mousemove-Nachrichten geschickt, obwohl die rechte Maustaste gedrückt ist. In diesem Fall versucht dann die StormShell die Hilfezeile im Fenster auszugeben und erzeugt dadurch das Einfrieren des Bildschirms. Im Falle von MagicMenu dauert es ca. 10 Sekunden und man kann normal weiterarbeiten. Zu ähnlichen Problemen kann es auch mit verschiedenen SUN-Mouse Utilities kommen. Bei Fragen wenden Sie sich bitte an: HAAGE & PARTNER Computer GmbH Mainzer Straße 10A 61191 Rosbach v.d.H. Tel: 06007/930050 Fax: 06007/7543 Compuserve: 100654,3133 Internet: 100654.3133@compuserve.com Web Page: http://home.pages.de/~haage Zum Schluß möchten wir uns bei unseren aktiven Betatestern bedanken. Vielen Dank an: Dietmar Augustin Olaf Barthel Michael Bergmann Holger Burkarth Thomas Bayen Bernhard Büchter Michael Donner Torsten Ebeling David Göhler Clemens Marschner Alexander Pratsch Andreas Pfohl Constantin Rack Michael Rock Jürgen Schildmann Carsten Schlote Stephan Schüerholz Thomas Wilhelmi (c) 1995/1996 HAAGE & PARTNER Computer GmbH