Magic 4.0

Shared library für Atari ST/STE/TT, Falcon, Medusa & Eagle. Zu diesem Programm bieten wir Ihnen eine Sonderdisk, die Sie für DM 10.- beim Verlag (siehe Impressum) bestellen können.

Einführung

Gleich zu Beginn möchte ich einige Begriffe exakt erklären um Verwechslungen zu vermeiden. Die getestete Shared Library heißt MAGIC 4.0 und wurde von Peter Hellinger programmiert, sie für die folgenden Compiler verfügbar:

und für Lattice C und ST Oberon befinden sich in der Entwicklung.

Mit dem Betriebssystem MagiC, welches zuvor Mag!X hieß, hat es überhaupt nichts zu tun. MAGIC 4.0 ist problemlos unter MultiTOS, MiNT & MagiC lauffähig.

Positiver Trend für Atari

Atari-Besitzer finden endlich wieder mehr Beachtung. Deutliches Zeichen dieser Trendwende sind die zwei "proTOS" Messen in Ulm und erst vor kurzem in Bonn/Hennef (26.-27.Nov. 1994). Außerdem wurden die ADATs (Atari DTP Anwender Treffen) sehr erfolgreich ins Leben gerufen und schließlich sah man Atari sogar neulich im WDR Computerclub. Nachdem bisher die Medusa der einzige bisher lieferbare Clone war, wurde von GE-Soft endlich der Eagle auf der proTOS in Bonn/Hennef präsentiert und ausgeliefert. Durch den deutlich niedrigeren Preis, dem exzellenten 32 Bit-Eagle-Channel mit 8 bis 12 Slots, ist es das Gerät der Wahl für jeden professionellen Atari-Anwender.

Der positive allgemeine Trend wirkt sich auch auf Softwareneuerscheinungen aus. Obwohl die Atari Rechner eine Menge innovative Konzepte haben: z.B.: lineares Speichermodell ohne 640 KB-Grenze, Programm- und Datei-Manager in einem, eine intuitive Benutzeroberfläche und einiges mehr, so muss man fairerweise auch zugeben, dass manches beim Blick über den "Atari-Tellerrand" erspäht wurde: bunte Icons, 3D Look-and-Feel, verrückte Soundeinlagen und optisch ansprechende Bildschirmschoner. Vieles wurde auf den Atari umgesetzt, weil es auf Mac & Dos verfügbar war und man nicht darauf verzichten wollte.

Iconify

Skalieren von Fenstern wie unter XWindow (Unix).
Eines dieser Features ist das Iconify. Bisher gab es drei Gadgets: eines zum Schließen, eines für maximale Fenstergröße und eines um die Fenstergröße zu ändern. Seit MultiTOS mit MiNT >= 1.08 wurde das Iconify-Gadget eingeführt, welches es erlaubt Fenster zu kleinen Icons zu "schrumpfen" und bei Bedarf wieder auf die ursprüngliche Größe zu bringen. Mit der Shared Library MAGIC 4.0 (Shared library bedeutet eine Sammlung von Systemaufrufen die von mehreren Programmen benutzt werden können) hält nun auch ein weiteres Feature aus der X Window (Unix) & Windows-Welt Einzug in die Atari-Programme: Man kann Fenster von allen Seiten in der Größe verändern. Der normale Mauszeiger verwandelt sich beim Erreichen der Fensterränder in einen Pfeil mit einem vertikalen Balken und an den vier Ecken in eine Ecke. Dies funktioniert auch bei Fenstern im Hintergrund.

Installation von MAGIC 4.08

Den Anwender interessiert erst einmal die Installation. Nun die ist erfreulich einfach:

Zuerst kopiert man MAGICOOK.PRG in den Autoordner. Dieses Programm installiert einen Cookie mit Kennung MPRO im Cookie-jar. Über diesen Cookie kommunizieren MAGIC und die jeweiligen Applikationen. Außerdem enthält er die Konfigurationsdaten, die somit für alle MAGIC-Programme gleich sind. Befindet sich die Datei MAGICOOK.INF im Autoordner, so wird diese vom Cookie-Programm eingelesen. MAGICCOOK.INF enthält diverse Konfigurationsdaten für Magic in kompakter Form, so unter anderem Angaben über die Farben, die Magic bei der Darstellung diverser Objekte verwendet, oder welche Tastencodes den internen Magic-Funktionen zugeordnet sind.

Zum Erstellen oder Ändern einer solchen INF-Datei kann das Programm MAGICONF.PRG oder die CPX-Datei benutzt werden, welches zum Lieferumfang von Magic gehört. Nun muss man noch das Programm MAGIC.PRG in einen frei wählbaren Pfad kopieren. Der Pfad sollte unter Option 'Diverses' eingestellt werden. Man benötigt lediglich das modulare Kontrollfeld (XCONTROL.ACC) und kopiert die CPX Dateien in den CPX Ordner. Nun bootet man den Rechner neu und ruft das Kontrollfeld auf. Jetzt wählt man das Magic 4.0 CPX aus und wählt die Seite 'Diverses'. Hier kann man den Pfad für das Magic 4.0 Kernel (Magic.PRG) einstellen. Das war's...

MultiTOS, MiNT 1.12 & "MagiC"...

Jetzt wird es ein bisschen technischer: MAGIC hängt in keinen Betriebssystemvektoren oder -Variablen, ausgenommen dem Cookie-Jar. Alle Kommunikation zwischen den Anwendungsprogrammen und MAGIC.PRG erfolgt über den Cookie MPRO. Ist dieser nicht vorhanden, oder wird MAGIC.PRG nicht gefunden, terminieren MAGIC-Programme mit einem Fehler.

Unter MultiTOS bzw. MiNT arbeitet MAGIC als Dämonprozess, und entfernt sich selbst wieder aus dem Speicher, sobald die letzte MAGIC-Anwendung terminiert. MAGIC.PRG muss immer das Flag GLOBAL im Programmheader gesetzt haben, da sonst die MAGIC-Anwendungen nicht auf MAGIC zugreifen können (Speicherschutzverletzung). Für den "Nur"-Anwender ist dies aber nicht weiter tragisch, da MAGIC.PRG standardmäßig mit dem Flag GLOBAL im Programmheader ausgeliefert wird.

Zu "MagiC" (von ASH) sei noch gesagt: Auch als "MagiC"-Anwender kann man MAGIC 4.08 problemlos benutzen. Unter "MagiC" wird MAGIC als Parallelprogramm gestartet und bleibt solange in einer Endlosschleife, bis die letzte MAGIC- Applikation beendet wurde. Leider besitzt "MagiC" nicht die ausgefeilte Prozeßsteuerung von MiNT 1.12, so dass hier eine gewisse Grundaktivität von MAGIC unabdingbar ist. Das neue MiNT 1.12 ist, seit MiNT 0.95 wieder eine frei verfügbare kompilierte MiNT-Version. Die Distribution von MiNT 1.12 umfasst drei Archive. Einer mit Sourcen, der enthält ein fertig kompiliertes MiNT 1.12 und das dritte Archiv enthält eine ausführliche Dokumentation, die Eric R. Smith zusammengestellt hat.

Durchdachtes MAGIC 4.08 Gesamtkonzept

Was MAGIC 4.08 auszeichnet ist nicht nur das Iconify & das Verändern der Fenstergröße von allen Seiten wie unter X11 R5/6 oder MS Windows, sondern es ist das durchdachte Gesamtkonzept. Gute Konzepte gibt es in der Atari-Welt ganz viele, aber die meisten lassen immer etwas weg. Hier hat sich ein Team die Mühe gemacht alles, was das Herz eines Programmierers begehrt und was den User erfreut, vollständig zu implementieren und für verschiedene Sprachen verfügbar zu machen.

Es sind Buttons, Strings, Frameobjekts, Listboxen, Editfelder, Slider, Boxobjekte, Alerts, Popups, Farbicons, auch Iconbuttons (wie sie z.B.: in Phoenix 3.x (von ASH) existieren), außerdem sind Pulldownmenüleisten im Fenster, die zudem scrollbar sind, vorhanden.

Dank Speedo GDOS5 (Compo) & NVDI 3.0 (ASH) sind GDOS-, Speedo GDOS 5-, True Type & Type 1 Fonts auf dem Atari verfügbar.

Mit MAGIC 4.0 ist die Einbindung in eigene Programme recht einfach. So kann man sich als Programmierer auf das eigentliche Programm konzentrieren ohne die Anwender zu enttäuschen. Denn die erwarten, dass nun, da Speedo, True Type & Type 1 verfügbar sind, die Programmierer dies auch gefälligst unterstützen.

Welchen Aufwand man treiben muss, interessiert den Anwender fertiger Programme eigentlich weniger. Mit MAGIC 4.0 vermeidet es der Programmierer "das Rad neu zu erfinden" und kann bereits bewährte Routinen benutzen. Da an alles gedacht wurde ist eine Freude mit MAGIC 4.0 geschriebene Programme zu benutzen.

Magic 4.0 Release 8 (13.12.1994) ist für normale User Freeware. Fairerweise müssen Programmierer 100 DM zahlen für eine Lizenz. Es wurde auch an Studenten gedacht und für diese wird 20 Rabatt geboten. Da viele Programmierer Informatik-Studenten oder sonstige Studenten sind, ist dies wirklich fair. Ganz wichtig ist es ein Tool zu haben, welches auch kontinuierlich weiterentwickelt wird, damit man als Programmierer nicht plötzlich auf sich selbst gestellt ist. Die MAGIC Library hat sich von der Version 3.0 zur 4.0 deutlich verbessert und ist erheblich erweitert worden.

Ein weiterer Vorteil ist, dass man nicht an eine Sprache gebunden ist. So gibt es, das an sich gute "ObjectGEM", nur für Pure Pascal 1.1, da Pure Pascal 1.1 aber keine GEM-Fenster hat und auch sonst nicht sauber in GEM konzipiert wurde, kann man im Multitasking unter MultiTOS/MiNT nicht debuggen. Und müsste daher Programme im "Blindflug" entwickeln (ohne Debugger).

MAGIC 4.0 und GNU C

Als Alternative bietet sich GNU C bzw. GNU C++ an, welches aus der Unix-Welt kommt und im Multitasking perfekt läuft. Hier gibt es Debugger und Profiler die im Multitasking laufen.

Wer mit Makefiles überfordert ist kann ja eine GNU Shell mit Projektfiles benutzen. Roland Schäuble hat z.B eine GNU Shell (Shareware, 20,- DM) geschrieben.

Bezugsquelle:
Roland Schäuble, Dattikon Str.2, CH8730 Uznach
E-Mail: czsro@zcvx00.decnet.ascom.ch

Obwohl mit Gemini 1.999a (von Stefan Eissing, Julian Reschke und Arnd Beissner) kann man unter Verwendung der integrierten Mupfel (!) durchaus angenehm entwickeln. Und die meisten Sourcen haben ein fertiges Makefile dabei, welches man lediglich ein bißchen anpassen muss. Zwar muss man zuerst das GNU Environment korrekt einstellen, aber das macht man nur einmal. Für diejenigen die so etwas noch nie gemacht haben möchte ich ein Profile.mup-File für Gemini 1.999a mal zeigen:

Das "Profile.mup"-File

#!mupfe  
[..]  
# Verzeichnis für temporäre Dateien   
setenv TMPDIR "$GEMINIHOME\tmp\"   
setenv TRASHDIR $TMPDIR [..]   
# GEM-Clipboard   
setenv SCRAPDIR "c:\clipbrd\"   
# Begin des GCC-Environments:  
export GNUPATH="d:\GNU258"   
export GNUBIN="$GNUPATH\BIN"  
export GNULIB="$GNUPATH\LIB"   
export GNULIB++="$GNUPATH\LIB++"   
export GNUINC="$GNUPATH\INC"   
export GNUINC++="$GNUPATH\INC++"   
export GPLUSEXEC="$GNUBIN\gcc-"   
export GCCEXEC="$GNUBIN\gcc-"   
export GCC_EXEC_PREFIX="$GNUBIN\gcc-"   
export PATH="$PATH;$GNUSIN"  
export TEMP="$TMPDIR"   
alias gcc="$GNUBIN\gcc"   
export gcc="$GNUBIN\gcc.ttp"   
alias cc="$GNUBIN\gcc" export CC="$GNUBIN\gcc.ttp"   
alias ar="$GNUBIN\gcc-ar"   
export AR="$GNUBIN\gcc-ar.ttp"  
# Ende der GCC Environments #   
# andere Dinge für Tools wie nroff und more, cookie   
export ARCHIV=c:\datas\archiv\   
export TMACDIR=c:\usr\lib\tmac  
[..]

Ende der Datei PROFILE.MUP

Die Profile.mup Datei ist nicht vollständig abgedruckt, sondern lediglich die Teile die ich eingefügt habe. An welcher Stelle man es einfügt ist im Prinzip gleichgültig.

Zu jedem Source z.B.: GNUlib PL98, MiNTlib PL44... etc. gibt es eine Datei mit dem Namen: "Makefile" welches von make.ttp aufgerufen wird. Es sieht oft wie folgt aus:

[..]   
ifdef CROSSDIR  
[..]  
else  
# Set up to run native...   
# Man sollte die Zeilen mit SHELL und MAKE einfügen und zwar hier...  
SHELL := c:\gemini2\mupfel.ttp  
MAKE := d:\gnu258\bin\make.ttp  
AR := gcc-ar  
AS := gcc $(MINTOPT)   
CC := gcc $(MINTOPT)   
LIB :=d:\gcc258\lib   
[..]   
endif 

Jetzt wechselt man in den Pfad in dem sich die zu kompilierenden Sourcen und das "Makefile" befinden, und tippt z.B.: cd d:\gnu258\gnulib98\libsrc make ein und das make.ttp wird aufgerufen und die Sourcen werden kompiliert.

Unter GNU C gibt es zu jedem Source ein Makefile, so dass die Arbeit mit GNU C und Gemini sich wirklich komfortabel gestaltet.

Jetzt geht es in "medias res":

Als Anwender möchte man Programme nutzen die MAGIC 4.0 verwenden. Nun, was gibt für Programme, die die Magic Library verwenden:

Stella 1.0 (von Thomas Künneth; Version 1.0/14.12.1994; Grafikprogramm)

Stella ist ein wirklich erstaunliches, kleines Grafikprogramm, welches vom Ansatz her wirklich gut ist. Es ist sauber programmiert und verwendet die MAGIC 4.08 Library, besitzt eine Modulschnittstelle und es sind bereits einige Module vorhanden. Wichtige Funktionen wie Farbdithering, von Farbe nach Monochrom wandeln, Skalieren, Farbpalette editieren, Invertieren, Duplizieren, Größe minimieren, Verzerren, VDI-konformes & hardwarekonformes Wandeln von Bildern und Zoomen sind schon implementiert. Natürlich würden mir auf Anhieb eine Menge Funktionen einfallen die sicher noch wünschenswert wären, aber warten wir einmal ab wie es sich entwickelt. Sicher werden noch eine Menge an Fähigkeiten hinzukommen. Für ein Programm, das gerade erst erschienen ist (vom 14.12.1994 !), sind es schon sehr viele gute Features. Es kann z.B.: für jedes Fenster eine eigene Farbpalette verwalten. Und man kann es so konfigurieren, das wenn man mit der Maus ein anderes Fenster überstreicht, dort die passende Farbpalette eingestellt wird. Dies würde einer Menge DTP & EBV Programmen sehr gut zu Gesicht stehen. Außerdem werden Dank Magic 4.08 - GDOS, Speedo GDOS, True Type & Type 1 Fonts unterstützt.
Fazit: Die Benutzeroberfläche ist so, dass man sich auf Anhieb zurechtfindet. Das Programm ist als rundum gelungen zu bezeichnen.

Gnuplot 3.5

Gnuplot 3.5 ist ein Funkionsplotter der von Dirk Stadler auf MultiTOS portiert wurde. Es ist ein flexibles Programm und in der Unix-Welt und an Universitäten der Standard schlechthin, weil GNUplot im Quelltext vorliegt und es damit an alle möglichen Rechner angepasst werden kann.

GNUplot 3.5 existiert unter Unix (z.B.: SunOS), OS/2, MS Windows und vielen anderen Plattformen. Die Atari-Version krankte bisher an der fehlenden GEM-Einbindung. Dirk Stadler ist unter Verwendung von MAGIC 4.0, GNU C und unter Ausnutzung der vielen MultiTOS-Funktionen ist eine GNUplot 3.5 Version zu entwickeln, die sich nicht vor Portierungen auf anderen Rechner verstecken muss, sondern wirklich sehr gut gelungen ist. Das Programm kann kann seine Ausgabe in Fenstern machen oder auch in ein Postscriptfile umlenken. Die zuvor gezeigte Grafik wurde mit dem Befehl:
splot(-1/(XX+YY))
gezeichnet und mit:
set terminal postscript
set output "atari.ps"

in ein Postscriptfile umgelenkt. Dieses kann man dann z.B.: in ein TeX-File einbinden oder auf einem postcriptfähigen Drucker ausdrucken.

Hier noch ein Hinweis zu den Archiven auf der ATARI-Inside Sonder-Diskette:

Alle Files wurden mit ST ZIP 2.6 gepackt!

GPLT35TT.ZIP ist ein GNUplot 3.5 (für 68020/68881)
MAGIC4_8.ZIP ist ein MAGIC 4.8 Kernel, Dokumentation & ein Config.
M4_GCC.ZIP ist eine MAGIC 4.08 lib für GCC ! (*.olb Files in den LIB-Ordner)
STELLA.ZIP ist ein Grafik-Utility (Shareware/Release vom 14.12.1994!)


Filipe P. Martins
Aus: Atari Inside 02 / 1995, Seite 18

Links

Copyright-Bestimmungen: siehe Über diese Seite