                                  Highlights des Upgrades

Der Compiler

Einer der Grnde fr die Verzgerung des Upgrades lag darin, da wir uns entschlossen
hatten, den Compiler in groen Stcken neu zu implementieren. Und wie heit es so schn?
Beim zweiten Mal wird alles besser! Hier sind die Resultate.

Die wesentlichen nderungen des Compilers betreffen die Codeerzeugung. Er erzeugt jetzt
einen schnellen kompakten Code:
 * Konstante Teilausdrcke werden erkannt und zur Laufzeit berechnet (constant folding).
 * Unntiges Umkopieren der aktuellen Parameter unterbleibt (Prozeduraufrufe sind schneller).
 * Funktionswerte bis 32 Bit Gre knnen im Register statt auf dem Stack zurckgegeben
   werden.
 * Bei der Berechnung von  Ausdrcken  werden  die  Register  des  68000  zur  Zwischen~
   speicherung benutzt (bisher wurde auch hier der Stack verwendet).
 * Laufvariablen von FOR-Schleifen werden in einem Register gehalten.
 * Die Record-Adresse bei WITH-Anweisungen wird im Register abgelegt.
 * Bereichs- und berlauf-Prfungen werden effizienter codiert.
 * Feld- und Record-Zugriffe werden deutlich besser bersetzt.
 * Aufeinander folgende Konstanten als aktuelle  Parameter  bei  Prozeduraufrufen  werden
   zusammengefat (Beispiel: GotoXY (2,2) erzeugt eine einzige MOVE.L-Instruktion!).
 * Viele  weitere  Feinheiten,  die  wir  schon  immer  als  selbstverstndlich  fr  eine  gute
   Code-Erzeugung bei einem Ein-Pass-Compiler ansahen.

Der  Compiler  erfllt  jetzt  vollstndig  die  Sprachdefinition  von  PIM3  ("Programming  in
Modula-2" von Prof. Wirth, 3. Auflage); beispielsweise knnen nun alle Standardfunktionen,
wie MAX, SIZE, CHR usw. in CONST-Ausdrcken verwendet werden.

Wuten Sie schon, da seit mehreren Jahren an einem internationalen Standard fr Modula-2
gearbeitet wird? Dieser hat zum Ziel, da sowohl die Ungenauigkeiten in Wirths Sprach~
definition als auch die Probleme mit verschiedenen Rechnerarchitekturen gelst werden, so
da Modula nun auch in der Praxis portabler als C wird. Die Normierung, die in ca. einem
Jahr  feststehen  drfte,  wird  durch  das  ISO,  eine  weltweite  Vereinigung  von  Landes~
organisationen wie BSI, IEEE und DIN, vorgenommen.

Im deutschen DIN-Arbeitskreis fr Modula-2 sind wir selbst aktives Mitglied und konnten
auch schon eigene Erfahrungen mit unserem Modula mit in den Standard einflieen lassen. So
knnen wir auch gut beurteilen, welche Spezifikationen der ISO-Norm so sicher sind, da wir
sie schon jetzt implementieren knnen. Solange die Normierung noch nicht abgeschlossen ist,
hat es wenig Sinn, unseren Compiler so weit wie mglich anzupassen, denn einige Dinge der
ISO-Norm erfordern nicht unerhebliche  Anpassungen  bestehender  Modula-Programme.  Wir
haben uns deshalb erst einmal darauf beschrnkt, die interessanten Erweiterungen der Norm
zu  implementieren,  soweit  sie  keine  Beeintrchtigungen  gegenber  PIM3  bzw.  unseren
bisherigen Programmen bedeuten.

Die bedeutendsten ISO-Erweiterungen:
 * Aggregate (damit knnen nun beispielsweise bequem ganze Felder und Records initialisiert
   werden).
 * Der Typ BITNUM, mit dem definiert einzelne Bits angesprochen werden knnen, sowie die
   Funktionen SHIFT und ROTATE zum Verschieben/Rotieren.
 * Typen REAL und LONGREAL. LONG ist der bisherige REAL-Typ, REAL ist ein neuer
   4 Byte-Real, der natrlich wieder konkurrenzlos schnell ist.
 * String-Konstanten knnen verkettet werden, so da es kein Problem mehr ist, Control-
   Zeichen einzufgen oder einen String ber mehrere Zeilen zu schreiben.
 * Mehrdimensionale offene Felder sind mglich.
Weitere Korrekturen und Erweiterungen beim Compiler:
 * Der Mathe-Koprozessor (FPU 68881/2) kann bei ST und TT eingesetzt werden (s.u.).
 * Long-Konstanten brauchen nicht mehr mit der Kennunng 'D' oder 'L' versehen werden.
 * Wir haben nun einen echten 32 Bit-Compiler, das heit: keine Einschrnkungen mehr bei
   lokalen Daten, Records, Arrays usw.
 * Zeitintensive  Routinen  knnen  durch  die  Deklaration  von  Register-Variablen  wie  in
   C optimiert werden. Dies kann u.U. Funktionen um das Zweifache beschleunigen.
 * Zur besseren Kompatibilitt mit anderen Modula-Compilern werden aufgezhlte Record-
   Felder  nun  in  der  "richtigen"  Reihenfolge  abgelegt  (natrlich  per  Compiler-Option
   abschaltbar), ebenso SETs bis 32 Bit (auch BITSET). Per Option kann erreicht werden,
   da LONG-Variable (z.B. LONGCARD) auf SHORT-Variable (z.B. CARDINAL)  ohne
   Zuhilfenahme der SHORT-Funktion zugewiesen werden knnen. FORWARD kann auch in
   der blichen Pascal-Syntax verwendet werden.
 * Alle  Fehler  in  bezug  auf  Import/Export  sowie  opaque  und  Aufzhlungs-Typen  sind
   behoben.  Bei  POINTER-  und  Prozedurtyp-Deklarationen  brauchen  die  Referenz-  bzw.
   Parametertypen nicht  mehr  im  selben  TYPE-Bereich  nachdeklariert  zu  werden  sondern
   sondern sie lassen sich nun irgendwo im Block nachdeklarieren - so wie es Wirth & ISO
   verlangen.

Summa summarum: Wir sind nun auch in punkto Code-Erzeugung stolz auf unseren Compiler.
Und was das bei uns Perfektionisten heit, knnen wir hier leider aus wettbewerbsrechtlichen
Grnden nicht weiter ausfhren.

Die Shell

Die Shell bietet nun noch mehr Komfort. Es ist mglich, beliebig viele Dateien zu selektieren,
zu kopieren und zu  lschen.  Disketten  knnen  formatiert  werden.  Insgesamt  wurde  die
Bedienung weitgehend den Fhigkeiten des Desktops angeglichen. Es knnen bis zu zehn
Arbeitsdateien simultan installiert werden, zudem erkennt die Shell automatisch, wenn zu
einem auszufhrenden Quelltext ein aktueller, d.h. jngerer Code existiert und fhrt diesen
dann ohne ein erneutes Compilieren aus. Die gesamte Arbeitsumgebung, also die Position
aller Icons und Fenster sowie alle Einstellungen in den  Dialogboxen,  kann  abgespeichert
werden. Damit ist nun eine bequeme Verwaltung verschiedener Projekte mglich, dies wird
noch  durch  die  Mglichkeit  der  Benutzung  von  beliebigen  Batch-Dateien  (in  etwa  die
bisherigen SHELL.INF-Dateien) untersttzt. Das Konfigurieren und Bedienen der Umgebung ist
einfacher  und  zugleich  komfortabler  geworden,  dazu  gehrt  auch  die  Mglichkeit,  alle
Funktionen der Shell wahlweise ber die Tastatur oder mit der Maus bedienen zu knnen,
auerdem das leichtere Einbinden beliebiger Editoren.

Das Make

Das  Megamax  Modula-2  System  verfgt  nun  ber  ein  Make-Utility.  Dieses  einfach  zu
bedienende Programm bernimmt die automatische Compilierung aller Dateien eines Projektes,
dabei wird aufgrund der Modulabhngigkeiten und der  Zeitstempel  der  einzelnen  Quell~
texte und  schon  vorhandenen  Codedateien  bestimmt,  welche  Quellen  compiliert  werden
mssen. Nach Ermittlung der zu bersetzenden Module wird der Compiler dazu automatisch
aufgerufen. So werden nur genau die Module neu bersetzt, bei denen das notwendig ist.
Auch die Erstellung der Datei,  die  die  Modulabhngigkeiten  enthlt  (Make-Datei),  kann
bequem von einem mitgelieferten Programm durchgefhrt werden; dieses erledigt seine Arbeit
unter Auswertung der einzelnen Importlisten.

Die Benutzung des Make kann in gewohnt bequemer Weise von der Shell, vom Editor oder
gar aus den Batch-Dateien heraus geschehen.
Die Editoren

Da Editoren Geschmackssache sind, liefern wir gleich zwei davon. Der eine Editor arbeitet
unter Verwendung des GEM und vereinigt mchtige Befehle mit einer einfachen Bedienung.
Der zweite Editor, der Gepard-Editor, der bereits auf den MeMoX-Disketten zu erhalten
war, arbeitet ohne GEM, belegt dafr aber wenig Speicher und ist sehr schnell, zudem
bietet  er  nun  eine  trickreiche  Hilfe-Funktion:  Er  kann  automatisch  nach  exportierten
Bezeichnern der vorhandenen Definitionsmodule suchen und die dazu gehrige Beschreibung
anzeigen. Beide Editoren knnen mehrere Texte gleichzeitig bearbeiten und erlauben ein
schnelles bersetzen der Module, ohne den Text zu speichern und den Editor zu verlassen.
Der Toolbox-Editor wird nicht mehr mitgeliefert, Sie knnen aber den alten weiterverwenden.

Die Bibliothek

Selbst unsere Bibliothek konnte noch verbessert werden und enthlt nun ber 220 Module.
Viele der alten Module wurden erweitert und auch  ausfhrlicher  dokumentiert.  Natrlich
untersttzen wir die im TOS 1.4 und TT-TOS hinzugekommenen Routinen, und die Speicher~
verwaltung ist nun unabhngig von der TOS-Version und dabei auch noch kompakter und
schneller geworden, bietet aber weiterhin den gewohnten Megamax-Komfort. Das System
wurde auch schon erfolgreich auf dem Atari TT eingesetzt.

Es  ist  nun  mglich,  alle  oder  einzelne  Definitionsmodule  in  einer  Library-Datei  zusam~
menzufassen, aus der sie vom Compiler whrend des Compilierens gelesen werden, was einen
deutlichen Geschwindigkeitsgewinn bringt. Um Speicherplatz auf der Disk zu sparen, ist es
mglich,  die  Dateien  zu  komprimieren.  Getreu  unserem  modularen  Motto,  alle  System~
funktionen auch dem Benutzer zugnglich zu machen, ist es selbstverstndlich, da sowohl
die Prozeduren zum Komprimieren und Dekomprimieren einzelner Speicherbereiche als auch
die Routinen zur Verwaltung von Library-Dateien in dem Benutzer  zugnglichen  Modulen
stehen.

Des  weiteren  wurde  die  Bibliothek  um  Module  zur  einfachen  Verwaltung  von  Fenstern
beliebigen Inhalts und Fenstern, die komplette Listen in Textform und gewohntem Komfort
darstellen, erweitert. Es gibt neue Module, die die meistgebrauchten Routinen zur GEM-
Programmierung und schnelle Prozeduren zum Lschen und Verschieben von Speicherbereichen
enthalten. Der direkte Zugriff auf alle AES- und VDI-Daten ist nun mglich. So knnen Sie
sowohl neue Funktion selbst aufrufen als auch beispielsweise mehrere Resource-Dateien laden
und verwalten. Ein zu Terminal kompatibles Modul 'Console' benutzt die GEMDOS- statt
der BIOS-Routinen, so da Ein-/Ausgabeumleitungen, z.B. in sogenannten Command-Line-
Shells,  mglich  sind.  Eine  neue,  noch  viel  bequemere  Fehlerbehandlung  fr  die  eigenen
Programme ist hinzugekommen, die sogar Accessories absturzsicher machen kann.

Die bisherigen Module sind berarbeitet und teilweise stark erweitert worden, wobei darauf
Rcksicht genommen wurde, alte Programme mglichst ohne nderungen, also durch einfaches
Neubersetzen, weiterverwenden zu knnen.

Die Coprozessoruntersttzung

Optional kann nun der Fliekomma-Coprozessor (68881/2), wie er z.B. von Atari vertrieben
(SFP  004)  und  auch  von  Fremdherstellern  fr  die  ST  Computer  angeboten  wird,  fr
REAL/LONGREAL-Operationen eingesetzt werden. Ebenso wird der im Atari TT serienmig
vorhandene Coprozessor 68882 optimal ausgenutzt.

Dazu gehrt nicht nur die Verwendung des IEEE-Formates fr Fliekommazahlen und das
Benutzen  des  Coprozessors  bei  den  einzelnen  Bibliotheksfunktionen  fr  die  Fliekomma~
arithmetik, sondern auch das geschickte Ausnutzen der Register des 68882 durch die neue
Codeerzeugung  des  Compilers.  Dadurch  wird  sogar  ohne  das  manuelle  Einsetzen  von
Register-Variablen  schon  eine  Steigerung  der  Ausfhrungszeiten  von  rechenintensiven
Programmen um bis zu 50% gegenber den sonst blichen Einbindungen des Coprozessors
erzielt.  Das  liegt  daran,  da  der  Megamax-Compiler  fr  die  Coprozessor-Untersttzung
besonderen  Code  erzeugt,  whrend  andere  Systeme,  die  keine  spezielle  Option  hierfr
vorsehen, erst zu spt in der Laufzeitbibliothek die Coprozessor-Erkennung durchfhren. Durch
Verwendung  von  Register-Variablen  knnen  Sie  sogar  weit  an  Assembler-Optimierungen
herankommen.

Das Drumherum

Es  sind  jetzt  40  verschiedene  Demo-  und  Hilfsprogramme  vorhanden.  Diese  Programme
werden im Quelltext mitgeliefert und fhren Ihnen nun noch mehr der teilweise neuen, sehr
vielfltigen Mglichkeiten des Entwicklungssystems vor Augen und geben Ihnen Beispiele fr
die eigene Programmierung.
Eine neue Version des Resource-Construction-Programms fhrt bei mehr als sieben Laufwerken
nicht mehr zu Fehlern.

Das Handbuch

Selbstverstndlich sind alle neuen Module, die Editoren, das Make, die Verbesserungen in
Shell,  Compiler  und  Linker  im  neuen  Handbuch  dokumentiert.  Aber  auch  die  brigen
Informationen  wurden  berarbeitet  und  ausfhrlicher  beschrieben.  Im  Kapitel  ber  den
Compiler sind die Erweiterungen nun deutlich markiert - unterschieden nach ISO- und eigenen
Erweiterungen.  Zur  Optimierung  Ihrer  Systemumgebung  und  Ihrer  Programme  finden  Sie
genauso Hinweise wie zur Anpassung Ihrer alten Module auf das neue System. Damit Sie
nicht nur Bahnhof verstehen, wenn wir von der Base Page sprechen oder Sie zum Booten
auffordern, haben wir ein neues Kapitel mit Begriffserluterungen angefgt. Auch Interna
wie der Vorgang des Linkens und des Make sowie der Aufbau des Bezeichnerbaums in
Definitionsmodulen und die Formate von Strukturen im Speicher sind keine Geheimnisse mehr.

Zur besseren bersichtlichkeit wurden Inhaltsbersicht und Index  nochmals  vergrert,  die
Bedienungsanleitungen  zu  den  Programmen  mit  Grafiken  (Hardcopies)  verdeutlicht.  Alles
zusammen hebt den Umfang des Handbuchs um 300 auf nun ca. 700 Seiten!

Der Service

Sollte das Handbuch immer noch Fragen offen lassen, so bieten wir Ihnen nun in schwierigen
Fllen eine Hotline zu den Programmierern; zudem knnen Sie die Quelltexte der Bibliotheken
erhalten.

Wo ist der Haken?

Alle diese Verbesserungen haben auch ihren Preis: Die Bibliothek, die Shell und der Compiler
sind gewachsen und belegen damit mehr Speicher - trotz der besseren Codeerzeugung. Shell
und Compiler bentigen nun ca. 170 KB mehr RAM. Das fhrt bei Rechnern mit (nur) einem
Megabyte Speicher zu Problemen. Deswegen liefern wir eine zweite Shell mit, die mehr als
100 KB weniger Speicher bentigt: Bei ihr fehlen die  Desktop-Symbole  -  Verzeichnisse
knnen mit dieser Shell nicht mehr angesehen werden. Statt dessen werden die Funktionen
zum Lschen, Umbenennen, Arbeitsdatei auswhlen usw. in der Menleiste und ber den
File-Selector zur Verfgung gestellt. Ein Programm, der "Filer", dient als Tool, mit dem Sie
dann wie bei der groen Shell die Verzeichnisse in Fenstern sehen und bearbeiten knnen.
Da  andere  Komponenten,  besonders  die  Definitionsmodule,  kompakter  wurden,  ist  das
bequeme Arbeiten mit einem Megabyte weiterhin mglich.

brigens: Haben Sie schon die Testberichte zu Vorab-Versionen des neuen Megamax-Systems
gelesen? Beide Berichte geben uns fast durchweg die besten Noten: ST-Magazin 4/90 und
TOS 7/90. Die wenigen dort angebrachten Mngel wurden bereits behoben.
Sie wollen mehr?

Knnen Sie haben. Beispielsweise:

 * Die Quelltexte der MOS-Bibliothek (alle Implementationsmodule).

 * Die  Magic-Library  von  Peter  Hellinger.  Das  ist  eine  vereinfachte  GEM-  und  TOS-
   Bibliothek, die fr alle Modula-Compiler auf dem Atari ST verfgbar ist und die damit
   portabel in GEM programmieren knnen. Die Namensgebung der Bezeichner richtet sich
   i.a.  nach  den  ausgeschriebenen  Namen  im  Profibuch.  Auerdem  umfat  sie  einige
   High-Level-GEM-Module: Sie haben alle  Features,  die  die  C-Library  zum  Buch  "Vom
   Anfnger zum GEM-Profi" (Hthig Verlag 1990) der Gei-Brder (Adimens) bietet und
   den modernen GEM-Richtlinien entsprechen: Popup-Mens, Menzeilen im Fenster, Tasten~
   bedienung bei Buttons in Dialogen, "fliegende Dialoge" (nach den Flydials  von  Julian
   Reschke), VT52-Emulation im Fenster und vieles mehr.

 * Eine ADT-Bibliothek, die keine Wnsche mehr offen lassen kann: Bume (auch  AVL),
   Listen (mit Marken), Hash-Tabellen, Stacks und Queues. Die Daten werden nicht, wie
   beim Megamax-Modul Lists, ber Zeiger verwaltet, sondern knnen komplett bergeben
   werden. Die Strukturen knnen in einem Stck  kopiert  (zugewiesen)  oder  in  Dateien
   geschrieben/gelesen  werden.  Und  so  weiter.  Die  Quelltexte  in  Modula-2  werden
   mitgeliefert.

 * Die neue MeMoX-Disk Nr. 3. Sie enthlt u.a. Module fr beliebig groe Integer-Zahlen
   (in Assembler optimiert), Joystickabfragen incl. "Tetrax", einer Nachahmung des bekannten
   Spiels "Tetris", eine Matrizenbibliothek, eine Funktion zum Erkennen von Tastenkrzeln in
   Menleisten (so da das Programm eine nderung der Tastenkommandos in der RSC-Datei
   automatisch bernimmt), ein kleines Terminal-Programm incl. XModem-Routinen, ein Modul
   zur Mausbeschleunigung, ein alternatives "InOut", das die Ausgaben zustzlich in einer
   Datei protokolliert, gepufferte Dateilesefunktionen und noch mehr. Die MeMoX 1 wurde
   brigens aufgelst und die nicht ins Modula-System bernommenen Module auf die dritte
   Disk bertragen, die dafr nun doppelseitig ist.

 * Oder fehlt Ihnen noch die MeMoX 2? Dann  haben  sie  u.a.  versumt:  Ein  richtiges
   Real-Time Multitasking-Modul, das auf ganz normale Modula-Prozeduren ohne Assembler
   angewendet werden kann,  einen  Formel-Parser,  eine  Stoppuhr  (Auflsung  5ms),  AVL-
   Bume und ein Modul, das in mehreren Textfenster gleichzeitig Eingaben zult: Einfach
   das gewnschte Fenster anklicken und drauflosschreiben.
                              Ihre Wnsche? Unsere Fragen!

Bevor Sie den Bestellschein an uns zurcksenden, beantworten Sie bitte noch die folgenden
Fragen. Wir wollen uns damit in Zukunft  besser  auf  Ihre  Bedrfnisse  einstellen  und  so
schneller zu interessanten Updates kommen.

Auf den vorigen Seiten haben Sie erfahren, was Sie beim neuen System erwartet. Wir
stellen Ihnen gleich die Frage, welche Punkte Sie verbessert sehen wollen. Bewerten Sie
jede Frage mit einem Wert von 0 bis 2 und schreiben Sie die Zahl an den Anfang jeder
Zeile.

  0 bei keinem Interesse ("Nein, mu nicht sein"),
  1 bei bedingtem Interesse ("wre nicht bel"),
  2 bei groen Interesse ("Ja, unbedingt").

Also los! Wie wichtig ist es Ihnen...
      da der Compiler bestmglichen Code erzeugt (z.B. wie Turbo-C)?
      da der Compiler optimalen Code fr den 68030 im Atari TT erzeugt?
      da der Compiler dem ISO-Standard vollstndig entspricht?
      da der Compiler objekt-orientierte Erweiterungen (OOP) bietet?
      da der Compiler noch schneller bersetzt?
      da der Compiler Fehler sammelt statt immer beim ersten Fehler zu stoppen?
      ein richtiger Runtime-Debugger (Variable ansehen, Breakpoints usw.)?
      eine ISO-Standard-Bibliothek?
      eine einfachere bertragung von C-Programmen und -Beispielen?
      eine GEM-/TOS-Bibliothek mit den Original C-Bezeichnernamen?
      eine Einbindung von Funktionen aus Turbo-C-Objekt-Modulen/-Bibliotheken?
      ein integriertes System (Editor fest in Shell, Shell einfacher)?
      mehr komfortable GEM-Module (Resource-, Dialog- und Fensterverwaltung)?
      eine spezielle Grafikbibliothek (freie, einfache Grafiken in GEM-Fenstern)?
      eine grere mathematische Bibliothek?
      eine grere Modulsammlung fr allgemeine Zwecke (abstrakte Datentypen usw.)?
      ein einfacher zu bedienendes System/Shell (z.B. fr Schulungen, Gelegenheitsbenutzer)?
      eine bessere Dokumentation der Shell, um selbst nderungen vornehmen zu knnen?
      ein GEM-Editor mit Wordstar-/Tempus-artiger Bedienung?
      ein GEM-Editor mit Mac-artiger Bedienung (Cut/Copy/Paste, z.B. Script, 1st Word)?
      da der MeMoX fr eine grere Modulauswahl intensiviert wird?
      da das Handbuch bersichtlicherer wird?

Wenn Sie weitere Wnsche oder Anmerkungen haben, verwenden Sie dafr bitte ein anderes
Blatt, da dieser Zettel anonym und tabellarisch ausgewertet werden soll!

Und zuletzt verraten Sie uns bitte noch Ihre Systemkonfiguration:

Diskettenlaufwerke:          einseitig(e)                   (Anzahl eintragen)
                             doppelseitig(e)

Festplatte                                                 (ankreuzen, wenn vorhanden)

Festspeicher                  Mega Byte
                         __

Rechner                      ST (520, 1040, Mega)
                             STE
                             TT

TOS-Version                 (1.0, 1.2, 1.4, 1.6 oder 3.0)
                         __

Monitor                      monochrom (SM 124, auch Atari TT)
                             farbe (SC 1224, auch Atari TT)
                             Grobildschirm/Grafikkarte
