Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!gatech!newsfeed.internetmci.com!EU.net!Germany.EU.net!informatik.tu-muenchen.de!kellerer
From: [email protected] (Ignaz Kellerer)
Newsgroups: de.comp.sys.amiga.misc,z-netz.rechner.amiga.allgemein,de.answers,news.answers
Subject: German Amiga-FAQ (Haeufig gestellte Fragen) (Part 2 of 4)
Supersedes: <[email protected]>
Followup-To: de.comp.sys.amiga.misc
Date: 9 Apr 1996 16:00:36 GMT
Organization: InternetNews at TUM, Technical University of Munich, Germany
Lines: 1219
Approved: [email protected]
Distribution: world
Expires: Sunday, 12 May 96 18:00:33 MESZ
Message-ID: <[email protected]>
References: <[email protected]>
Reply-To: [email protected] (Ignaz Kellerer)
NNTP-Posting-Host: hphalle3g.informatik.tu-muenchen.de
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Summary: German language Amiga-FAQ:
        Haeufig gestellte Fragen und Antworten zum Amiga.
        Neue Anwender sollten dies lesen!
Originator: [email protected]
Xref: senator-bedfellow.mit.edu de.comp.sys.amiga.misc:45077 de.answers:587 news.answers:69085

Posted-By: auto-faq 2.4
Archive-name: de-amiga-faq/part2
Last-modified: Dienstag, den 9. M�rz 1996
Posting-Frequency: ever fourth week
Posting-Frequency: Alle vier Wochen


           H�ufig gestellte Fragen (FAQ) zum Amiga [2/4]
           ----------------------------------------------

Dies ist der zweite Teil der Amiga-FAQ. (FAQ = Frequently asked questions)
Die Liste ist in Ascii-Format, damit sie von jedem gelesen werden kann.
Sie ist auch in AmigaGuide-, Dvi- und html-Format (f�r WWW-Server) erh�ltlich
als Teil des Amiga-FAQ-Archivs. (Datei docs/misc/AmigaFAQg.lha auf dem Aminet)

Bitte beachten Sie das Folgende:

 - �nderungen der letzten zwei Wochen sind markiert.
       !       diese Zeile bzw. dieser Abschnitt wurden ge�ndert
       +       diese Zeile ist neu
       <       vor dieser Zeile wurde etwas gel�scht

 - Ein Index ist am Ende dieses Teils. Wenn auch dies nicht
   weiterhilft: Bitte schicken Sie mir eine E-Mail. Vielleicht kann
   ich eine Antwort in die FAQ aufnehmen.

 - Vorschl�ge, Beitr�ge, Kritik und Bierflaschen sind sehr
   willkommen. :-)

           Ignaz Kellerer
           Georg-Habel-Str. 11
     81241 M�nchen (Germany)
           Tel. (+49) 089 / 885147

           Internet: [email protected]

==========================(Schnipp-Schnapp)===================================


 Disclaimer

 1 Hardware
   1 Was sind 68EC020, 68EC030 und 68LC040?
   2 Was ist ein mathematischer Coprozessor (FPU) ?
   3 Kann ich eine 3.5'-Festplatte im A1200 verwenden?

 2 Das Betriebssystem
   1 Kann ich eine andere als die eingebaute Kickstart benutzen?
   2 Die grafische Oberfl�che des Amiga
     1 Was ist MUI?
     2 Iconsammlungen und Hintergr�nde
   3 Was entspricht unter AmigaDOS dem . (Aktuelles Directory)?
   4 Der Queue-Handler PIPE:
     1 Verwendung von PIPE: in einer AmigaShell
     2 Das Pipe-Kommando
     3 Das Pipe-Kommando in der AmigaShell
     4 Die _mchar-Variable
     5 Bekannte Probleme
   5 ARexx, die Programm-Steuerungs-Sprache

 3 Grafik
   1 Was hei�t Chunky- und Planar-Display?
   2 Was ist Doublebuffering?
   3 Was f�r Monitore arbeiten am Amiga 1200 oder 4000?

 4 Programmierung
   1 Was ist die beste Dokumentation f�r Programmierer?
   2 Was ist CATS?
   3 Wo bekomme ich die Amiga-Include-Dateien?
   4 Wie werde ich Developer?
   5 Was f�r Compiler (und Assembler) gibt es?
   6 Warum funktioniert keine Esc-Sequenz?
   7 Kann ich AmigaBasic auf dem A1200 verwenden?
   8 Wie lokalisiere ich mein Programm?
   9 Wie erh�lt man einen Zeiger auf das Fenster einer Konsole?
   10 Was sind Pragmas?
   11 Mein Compiler/Linker vermi�t Symbole.
   12 Wie erfahre ich, was f�r Funktionen es gibt?
   13 Der GNU C Compiler: Allgemeine Informationen und Installation
     1 Aktuelle Version
     2 Hardwareanforderungen
     3 Wer hat es gemacht?
     4 Wo finde ich die gcc-Quelltexte?
     5 Inline-Dateien
     6 Wie konvertiere ich die Amiga-Libraries f�r den gcc?
     7 Wie installiere ich den gcc?
     8 Kompilieren
     9 Wichtige Informationsquellen

 5 Anwendungen
   1 Text-Editoren
   2 Was f�r Textverarbeitungsprogramme gibt es?
   3 Desktop Publishing
   4 Was ist TeX und wo bekomme ich es?
   5 Gibt es PostScript-Interpreter auf dem Amiga?
   6 Font Konzepte
     1 Die Amiga Font Formate
     2 Wo gibt es Amiga Fonts
     3 Kommerzielle Font Hersteller
     4 Nicht-Lateinische Zeichensaetze auf dem Amiga
     5 Amiga Font Installation
     6 Amiga Font Utilities
     7 Das Erzeugen von Vektor-Fonts
     8 Probleme und moegliche Loesungen
   7 Wie bearbeite ich Nicht-Latin-Texte?
     1 Japanische Editoren und Anzeigeprogramme
     2 Chinesische Anzeigeprogramme

 6 Online sein mit dem Amiga

 7 Emulationen
   1 Kann ich meinen Amiga unter Unix benutzen?
   2 Ist es m�glich, den Amiga als X11-Terminal zu benutzen?
   3 Wie kann ich MS-Dos-Programme starten?
   4 MsDos-formatierte Wechselplatten am Amiga verwenden

 8 Verschiedenes
   1 Gibt es eine Unix-Version von LhA?
   2 Was sind Dateien, die mit ... enden?
   3 Gibt es ein Programm wie Stacker, um die Hard-Disk zu packen?
   4 Wo bekomme ich Fish-Disk xxx?
   5 Wie f�llt man die Tintenkartuschen der HPDeskjet-Drucker nach?

 9 Software-Quellen und andere Informationen?
   1 Dateien und Datenbanken zur frei kopierbaren Software
   2 Eine Sammlung von Testberichten
   3 Empfangen von Dateien von einem FTP-Server
   4 Empfangen von Dateien von einem Mail-Server
   5 Empfangen von Dateien von einer Mailbox
   6 Die Fish-PD-Serie
     1 Die Amiga-Library-Disks
     2 Die Fresh-Fish-Serie
   7 Wie kann ich MS-Dos-Disketten lesen und schreiben?
   8 Wie transportiere ich sehr gro�e Dateien
   9 Diskussionen �ber Mail
   10 Andere FAQ's

 Das Amiga-FAQ-Archiv

 Beitr�ge zur Amiga-FAQ

 Danksagungen

 Index



 4 Programmierung
 ****************

    In diesem Kapitel finden vermutlich nur Programmierer Interessantes.

 4.1 Was ist die beste Dokumentation f�r Programmierer?
 ======================================================

    Die beste verf�gbare Dokumentation sind sicherlich die RKM's (ROM
 Kernel Manuals, die schwarzen) von Commodore. Sie werden von
 Addison-Wesley ver�ffentlicht.
      The Amiga ROM Kernel Manual:  Libraries, ISBN 0-201-56774-1
      The Amiga ROM Kernel Manual:  Devices, ISBN 0-201-56775-X
      The Amiga ROM Kernel Manual:  Includes and Autodocs, ISBN
                                                           0-201-56773-3
      The Amiga Hardware Manual, ISBN 0-201-56776-8
      The Amiga User Interface Style Guide, ISBN 0-201-57757-7

 Vor allem die Libraries sind ein Mu�. Weniger n�tzlich sind die
 Includes und Autodocs: Sie sind auf Diskette als Online-Hilfe sicher
 n�tzlicher.  Siehe Include-Dateien.

    AmigaDOS wird in diesen B�chern kaum behandelt. Die Autodocs geben
 einige Informationen, aber um tiefer einzusteigen braucht man das
      The AmigaDOS Manual, 3rd Edition, ISBN 0-553-35403-5

 ebenfalls von Commodore, das von Bantam Books herausgegeben wird.

    Eine gute Wahl ist auch
      The Amiga Guru Book

 von Ralph Babel. Das Buch beginnt mit einem ca. 250-seitigen
 allgemeinen �berblick �ber verschiedenste Aspekte der Programmierung
 des Amiga. F�r Anf�nger d�rften vor allem die Abschnitte �ber die
 Amiga-Datentypen sowie die Amiga-Includes und die amiga.lib interessant
 sein, aber auch Erfahrene finden hier mit Sicherheit noch Neues, was
 zum Teil nicht einmal in den RKM's enthalten ist. Den gr��ten Teil
 des Buches nehmen aber 500 Seiten nur zu AmigaDOS ein. Dieser Teil ist
 meines Erachtens der wichtigste, weil das AmigaDOS-Manual der
 schlechteste Teil der offiziellen Dokumentation ist. Das Buch ist sehr
 dicht geschrieben und deshalb weniger leicht lesbar als die RKM's, aber
 ich empfehle es als Zusatz und vor allem anstelle des AmigaDOS-Manuals.
 (Allerdings ist das Guru-Buch kein Ersatz f�r die Libraries & Devices,
 die hier nicht behandelt werden.) Ungl�cklicherweise hat das Buch
 keine ISBN-Nummer und ist deshalb nur bei den folgenden Adressen
 erh�ltlich:

                                  Almathera Systems Limited
                                  Southerton House
      NBG USA, Inc.               Boundary Business Court
      482 Holly Avenue            92-94 Church Road
      St. Paul, MN 55102          Mitcham, Surrey CR4 3TD
      USA                         England
      Voice: +1 (612) 290 9447    Voice: +44 181 687 0040
      Fax:   +1 (612) 290 9449    Fax:   +44 181 687 0490
                                  E-Mail: <[email protected]>

                                  Stefan Ossowskis Schatztruhe
      Hirsch & Wolf OHG           Gesellschaft f�r Software mbH
      Mittelstra�e 33             Veronikastra�e 33
      D-56564 Neuwied             D-45131 Essen
      Germany                     Germany
      Voice: +49 (2631) 8399-0    Voice: +49 (201) 788778
      Fax:   +49 (2631) 8399-31   Fax:   +49 (201) 798447
                                  E-Mail: <[email protected]>

      Someware
      27 rue Gabriel P�ri
      59186 Anor
      France
      Voice: +33 27596000
      Fax:   +33 27595206
      E-Mail: <[email protected]>

    F�r weitere Informationen empfehle ich auch die FAQ von Marc Atkins
 �ber B�cher zum Thema Amiga, die alle 4 Wochen in
 `comp.sys.amiga.misc' erscheint.

 4.2 Was ist CATS?
 =================

    Dies ist eine Abteilung von Commodore West Chester, die fr�her
 `Commodore Amiga Technical Support' hie� und sp�ter in `Commodore
 Application and Technical Support' umbenannt wurde. Die Mitglieder
 arbeiten unabh�ngig von der Entwicklungsabteilung, aber eng mit ihr
 zusammen, und versuchen, Entwicklern au�erhalb von Commodore beim
 Erstellen guter Amiga-Anwendungen zu helfen, sei das eine Hard- oder
 Software. Dazu hat CATS eine Menge an Informationen und Tools
 gesammelt, auf Floppy, CD oder Papier. Ein gro�er Teil dieses
 Materials ist auch der Allgemeinheit, d. h. f�r Nicht-Developer
 zug�nglich. Aber bitte CATS nicht mit einer Hotline verwechseln!

    Amerikaner k�nnen das Material von
          CATS
          Commodore Electronics Limited
          950 Rittenhouse Road
          Norristown, PA 19403

 bekommen, der Distributor f�r ganz Europa ist die
          Fa. Hirsch & Wolf
          Mittelstr. 33
          56564 Neuwied
          Tel. 02631/83990

    Dr. Peter Kittel, [email protected]

 4.3 Wo bekomme ich die Amiga-Include-Dateien?
 =============================================

    Der einzige legale Weg, die Include-Dateien und die AutoDocs zu
 bekommen (und Sie sollten sie bekommen, sie sind *sehr* n�tzlich!),
 ist, Developer zu werden (siehe siehe Developer) oder das sogenannte
 `NDU' (Native developers update kit, auch als `NDUK', `NDK' bekannt oder
 `ADU' f�r Amiga Developer Update) bei CATS zu kaufen. Siehe CATS. Es
 kostet etwa 50DM, was sicher ein fairer Preis ist. Dabei handelt es
 sich um ein 5-Disketten-Set, das neben den aktuellen Includes und
 AutoDocs auch Tools f�r Programmierer, z.B. Enforcer, Mungwall, Sushi
 und die debug.libg (zum Debuggen) sowie anderes, z.B. CatComp (siehe
 Lokalisierung) oder Report (f�r Bug-Reports oder Vorschl�ge an
 Commodore) enth�lt. Die aktuelle Version ist 3.1 und f�r
 Programmierer beinahe obligatorisch.

    Wem die Includes gen�gen, der kann diese �ber ein Update seines
 Compilers (nur kommerzielle Compiler) oder von den Fish-CDs bekommen.
 Siehe Fish-CD.

 4.4 Wie werde ich Developer?
 ============================

    Um Developer zu werden, braucht man die `ADSP'-Antragsformulare
 (Amiga developer support program). Um diese zu bekommen, sollte man
 einen Brief an die lokale Commodore-Niederlassung schreiben und nach
 diesen Papieren fragen, in denen das weitere erkl�rt wird. In
 Deutschland ist die Adresse folgende:
          Commodore
          Lyoner Stra�e 38
          60528 Frankfurt
    Es gibt drei verschiedene Arten von Developern:
 *Registered*
      Hier bekommt man vor allem Zugang zum CBMNET (eine Art
      Commodore-internes Usenet), �ber das man direkt mit anderen
      Entwicklern auch von Commodore selber �ber seine Probleme
      diskutieren kann. Die Jahresgeb�hr betr�gt 150 DM, die einmalige
      Aufnahmegeb�hr 50 DM.

 *Certified*
      Dies ist die interessanteste Klasse: Man bekommt von der meisten
      Systemsoftware die aktuellen Beta-Versionen (z. B. Kickstart und
      Workbench) sowie die dazugeh�rigen Includes und AutoDocs.
      Certifieds bekommen aber nicht jede Beta und in der Regel auch
      keine Hardware-Beta. Man bezahlt 400 DM pro Jahr daf�r und eine
      einmalige Aufnahmegeb�hr von 100 DM.

 *Commercial*
      Kommerzielle Entwickler bekommen im wesentlichen dieselben
      Informationen wie die "Zertifizierten", allerdings kompletter,
      sprich auch Beta-Hardware, und etwas fr�her. Dies hat auch seinen
      Preis: 700DM pro Jahr plus einmalige Aufnahmegeb�hr von 100DM.

 Die Preise und die angebotenen M�glichkeiten k�nnen von Land zu Land
 verschieden sein, auch gibt es meines Wissens nicht in allen L�ndern
 den "Registered". Ein guter Tip ist es, eine Gruppe zu bilden und damit
 die Kosten zu reduzieren.

    Alle Entwickler m�ssen Non-disclosure agreements (`NDA')
 unterzeichnen.  Diese besagen, da� sie �ber die erhaltenen
 Informationen au�erhalb von speziell dazu freigegebenen Orten oder
 Kan�len nicht einmal zu anderen Entwicklern sprechen d�rfen, so lange
 sie nicht die explizite Erlaubnis dazu von Commodore haben.

 4.5 Was f�r Compiler (und Assembler) gibt es?
 =============================================

    Es gibt viele Programmiersprachen auf dem Amiga, kommerzielle
 Compiler ebenso wie frei kopierbare. Ich m�chte nur diejenigen
 aufz�hlen, die mir bekannt sind oder die ich aus einem anderem Grund
 f�r erw�hnenswert halte.

 *Assembler*
      Alle C-Compiler beinhalten einen Assembler. Frei kopierbar und
      zuverl�ssig sind A68K und PhxAss. (Aminet, Directory `dev/asm'
      oder Fish-Disks 521 bzw. 906)

      Kommerzielle Assembler sind MaxonASM, OMA3.0 und DevPack3.14.

 *Basic*
      Derzeit sind folgende kommerzielle Basic-Compiler/Interpreter
      verf�gbar: BlitzBasic2, Amos und MaxonBasic3.

 *C*
 *C++*
      Frei kopierbare C-Compiler sind der `gcc' (der sein eigenes
      Directory `dev/gcc' auf dem Aminet hat) und die Probeversion (mit
      der man aber schon eine ganze Menge anfangen kann) von `Dice' (per
      FTP von `ftp.uni-paderborn.de', Directory
      `/news/comp.binaries.amiga/volume91/languages' oder auf Fish disk
      491).  Der gro�e Vorteil von gcc ist, da� man ihn auf der ganzen
      Welt und auf nahezu jedem Computer findet. Ein weiterer Vorteil
      ist, da� er sogar einen C++-Compiler enth�lt! Aber er ist
      langsam und ben�tigt 4MB RAM oder mehr. Siehe Der GNU C Compiler.
      Siehe Mail-Listen.

      Kommerzielle C-Compiler sind `Aztec-C', `Dice', `SAS-C' und
      `MaxonC++'.  `Aztec-C' wird jedoch leider nicht mehr
      weiterentwickelt.  Was die kommerziellen Compiler auszeichnet,
      sind ihre hervorragenden Source-Level-Debugger, die den anderen
      fehlen.

      SAS hat leider angek�ndigt, den Amiga-Compiler nicht weiter zu
      unterst�tzen. Verkauft wird er aber noch, und da er gegenw�rtig
      noch voll aktuell ist und sogar einen Crosscompiler von C++ in C
      enth�lt (der vom Debugger unterst�tzt wird), ist er meines
      Erachtens derzeit das beste Angebot, insbesondere zu dem �u�erst
      g�nstigen Preis von 184.-DM f�r Studenten und Besitzer anderer
      Compiler. In Deutschland erh�lt man SAS/C bei
               SAS Institute, Inc.         SAS Institute GmbH
               Book Sales                  Postfach 10 53 40
               SAS Campus Drive            69043 Heidelberg
               Cary, NC 27513              Deutschland
               USA

               Phone: (919)677-8000        Telefon: 06221/4160
               EMail: [email protected]    EMail: [email protected]

      Dice bietet wie SAS einen Sonderpreis f�r Sch�ler und Studenten
      von ca. 130.-DM. Der Compiler ist stabil und vor allem sehr
      schnell.  Der gr��te Nachteil von Dice ist (verglichen mit den
      anderen kommerziellen Compilern) der Debugger, ein sogenannter
      Source-Line-Debugger: Dies bedeutet, da� man den Quelltext sieht
      und das Programm Schritt f�r Schritt abarbeiten kann, aber leider
      nur Speicher und nicht etwa bestimmte Variablen anzeigen kann.
      Informationen �ber Dice: [email protected].

      Comeau C++ ist ebenfalls ein Crosscompiler, was an und f�r sich
      kein Problem w�re. Aber Comeau C++ hat keinen integrierten
      C-Compiler, man braucht also zus�tzlich SAS-C, Aztec-C oder Dice.
      Daf�r ist er kompatibel zu AT&T cfront 3.0, unterst�tzt
      Exceptions und l�uft wie `gcc' auf vielen verschiedenen Systemen.
      In Deutschland wird auch Maxxon C++ angeboten, �ber das ich
      nichts sagen kann. Beide Compiler sind kommerziell. Comeau's
      Adresse ist:
               Comeau computing
               91-34, 120th Street
               Richmond Hill, NY, 11418-3214
               USA

               EMail: Greg Comeau, [email protected]

      MaxonC++ ist sowohl ein C++ als auch ein C Compiler. Es gibt eine
      Light-Version f�r ca. 190 DM und eine Developer-Version f�r ca.
      450 DM.  Die Developer-Version entspricht dem AT&T-Standard 3.0.
      Maxon-Light enth�lt einen Compiler und einen Editor.  Developer
      umfa�t einen Source-Level-Debugger, eine Amiga-Klassenbibliothek
      und Hot Help mit Dokumenten zu den Amiga-Libs.  Da es ein
      deutsches Produkt ist, sind Compiler und Dokumentation in Deutsch
      gehalten. Der Compiler besitzt einige kleinere Fehler, trotzdem
      kann man mit ihm gut arbeiten.

 *Forth*
      JForth soll eine exzellente Forth-Version sein. Unter anderem
      enth�lt es objektorientierte Erweiterungen, ein volles
      Amiga-Interface und einen Anwendungsgenerator. Es ist erh�ltlich
      von:
               Delta Research
               P.O. Box 151051
               San Rafael, CA   94915-1051

               Phone: (415) 453-4320
               EMail: Phil Burk, [email protected]
                      Mike Haas, [email protected]

 *Fortran*
      (Seufz! Es gibt immer noch Leute, die es brauchen :-<) Frei
      kopierbar sind BCF (Fish disk 470) und f2c, der Fortran in
      C-Quelltext umwandelt.  (Aminet, Directory `/dev/lang'). Ein
      kommerzieller Compiler ist von ABSoft erh�ltlich. Allerdings sind
      dies alles nur Fortran-77-Compiler, es gibt keine
      Fortran-90-Compiler auf dem Amiga.

 *Lisp*
      Frei kopierbare Lisp-Interpreter sind XLisp (Fish-Disk 181) und
      OakLisp (Fish-Disks 519 und 520) und CLISP
      (`/pub/lisp/clisp/binaries/amiga' at
      `ma2s2.mathematik.uni-karlsruhe.de'). Auch Compiler gibt es: Gambit
      (Fish-Disks 764 und 765) sowie Scheme-to-C (Fish-Disks 556-558).
      Von Interesse ist vielleicht eine Mail-Liste: Senden Sie dazu eine
      Mail mit dem Wort `Subscribe' an `[email protected]'.

 *Prolog*
      `/dev/lang/UNSWProlog.lha' und `dev/lang/sbp3_1e' auf dem Aminet
      sowie `SBProlog' auf der Fish-Disk 141 und `SBProlog' auf der
      Fish-Disk 145 sind frei kopierbare Prolog-Interpreter.

 *Modula-2*
      M2Amiga wird in Europa und Benchmark Modula-2 in den USA
      angeboten. Beide sollen sehr gut sein und sowohl �ber gute
      Source-Level-Debugger als auch eine umfangreiche Bibliothek
      verf�gen. Besonders M2Amiga wird sehr gut unterst�tzt durch eine
      deutsche Benutzergruppe (AMOK), die z.B. eine eigene PD-Serie
      anbieten. Siehe Mail-Listen.

      M2Amiga bekommt man bei
               A+L AG
               Daderiz 61
               2540 Grenchen
               Schweiz

               Tel.: +41/65/52 03-11
               Fax:              -79

      und Benchmark Modula-2 ist erh�ltlich von:
               Armadillo Computing
               5225 Marymount Drive
               Austin, Texas 78723
               USA

               Phone/FAX: 512/926-0360.
               EMail: Jim Olinger, [email protected]

 *Oberon*
 *Oberon-2*
      Es gibt zwei Oberon-2-Compiler f�r den Amiga: AmigaOberon ist wie
      M2Amiga von A+L und kommerziell. Der Compiler kommt mit einer
      integrierten Entwicklungsumgebung (incl. freikonfigurierbarem
      Editor) und umfangreicher Modulbibliothek. Library Linker zum
      einfachen Erzeugen von AmigaOS Shared Libraries sowie Run-time
      Source-Level-Debugger sind ebenfalls erh�ltlich.

      Oberon-A ist ein Freeware-Compiler, allerdings erst in einer
      Beta-Version, insbesondere sind die Modulbibliotheken
      unvollst�ndig. (Quelle: Aminet, Directory `dev/obero'). Siehe
      Mail-Listen.

      F�r beide Compiler gibt es Unmengen von Modulen und Bsp.-Sourcen
      auf AMOK-Disks.

      Zus�tzlich zu den beiden Standalone-Compilern, die vor allem zum
      Entwickeln von AmigaOS-Applikationen geeignet sind, existiert noch
      eine Portierung des Oberon System V4, das ebenfalls einen Oberon-2
      Compiler beinhaltet. Das Oberon System l�uft auf dem Amiga als ein
      AmigaOS-Task auf einem eigenen Screen. Hiermit kann man Software
      entwickeln, die auch auf allen anderen Implementierungen des Oberon
      System V4 (z.B. f�r Macintosh, Windows oder Sparc) nahezu ohne
      jede �nderung lauff�hig ist.

 *Pascal*
      Es gibt einen PD-Compiler namens PCQ (Aminet, Directory `dev/lang'
      oder Fish-Disk 511), der allerdings kein voller Pascal-Compiler
      ist und dem sehr wesentliche Dinge fehlen. P2C konvertiert Pascal
      in C und ist auf der Fish-Disk 341 zu finden. (Aminet:
      `/dev/misc/p2c120.lha') Ferner gibt es zwei kommerzielle Compiler
      namens HiSoft-Pascal (von der gleichnamigen Firma) und KickPascal
      von Maxxon. HiSoft und P2c behaupten, kompatibel zu Turbo-Pascal
      5.0 zu sein. HiSoft hat au�erdem einen guten
      Source-Level-Debugger.

 4.6 Warum funktioniert keine Esc-Sequenz?
 =========================================

    Viele Drucker kommen mit einem Handbuch, das erkl�rt, welche
 Esc-Sequenzen welche Funktion ausl�sen. Aber wenn man diese Sequenzen
 dann einmal ausprobiert, passieren oft merkw�rdige Sachen, n�mlich
 entweder gar nichts oder etwas ganz anderes, als geplant war. Und das
 hat auch einen Grund, n�mlich die Amiga-Druckertreiber. Diese Treiber
 sind so gebaut, da� sie nur einen bestimmten Satz `ANSI-Esc-Sequenzen'
 verstehen, nicht die (verschiedenen) druckereigenen, von den
 verschiedenen Druckerherstellern definierten. Der Sinn dabei ist, da�
 jede Anwendung auf dem Amiga nur diesen einen Standardsatz an Sequenzen
 verwendet und so nicht zu wissen braucht, welcher Drucker tats�chlich
 angeschlo�en ist. Der Druckertreiber �bersetzt dann diese
 Standardsequenzen in die druckereigenen. Eine Liste der verf�gbaren
 ANSI-Esc-Sequenzen findet sich im aktuellen Workbench-Handbuch (oder in
 �lteren AmigaDOS-Handb�chern). Wenn Du nun eine Steuersequenz an den
 Drucker schicken willst, die es nicht als ANSI-Sequenz gibt, so hast Du
 zwei M�glichkeiten, dies doch zu erreichen:
   1. Umgeh den Druckertreiber (der erfolglos versuchen w�rde, die
      Sequenz zu interpretieren oder zu �bersetzen) und sende die
      Ausgabe *nur* f�r die L�nge dieser Sequenz an `PAR:' (bzw.
      `SER:'). Dabei mu� man die Druckerausgabekan�le umst�ndlich oft
      umschalten, und man mu� wissen, wo der Drucker angeschlossen ist
      (`PAR:' oder `SER:').

   2. Benutze eine spezielle ANSI-Sequenz, genau f�r diesen Fall
      gedacht:
               `Esc[<n>"<x>'
      wobei `<n>' die dezimal geschriebene Anzahl an Bytes in der Sequenz
      `<x>' ist, die gerade die spezielle Drucker-Sequenz enth�lt. Diese
      ANSI-Sequenz sagt dem Druckertreiber, da� er die n�chsten `<n>'
      Bytes nicht interpretieren oder �bersetzen soll.
         Aber beide Methoden haben einen grossen Nachteil, wenn sie in
 einem Anwendungsprogramm verwendet werden: Man verliert die
 Druckerunabh�ngigkeit! Solange man sich an die ANSI-Sequenzen h�lt,
 kann man jeden Drucker der Welt ansteuern, solange es einen
 Amiga-Druckertreiber f�r ihn gibt.  Wenn man anf�ngt, druckereigene
 Sequenzen zu verwenden, ist das Programm an diesen einen Druckertyp
 gebunden und mit keinem anderen benutzbar (oder man m��te einige
 dutzend neue Druckertreiber f�r dieses Programm erstellen).

    Dr. Peter Kittel, [email protected]

 4.7 Kann ich AmigaBasic auf dem A1200 verwenden?
 ================================================

    AmigaBasic wurde (als einziges Amiga-Programm) von Microsoft
 entwickelt und ist entsprechend fehlerhaft.

    Man kann es auf dem A1200 trotzdem zum Laufen bringen, wenn man
 folgendes beachtet:

   1. NoFastMem starten (also FastMem ausschalten).

   2. Im Audio Prefs den Ton abstellen.

   3. M�glichst SUBs vermeiden und stattdessen GOSUBs verwenden, dann
      ist die Kompatibilit�t zu neuen Prozessoren h�her.

   4. Es gibt einen Patch, den man zu Beginn von AmigaBasic starten
      sollte:
             ---------------------------------- CUT HERE -------------------------------
              `" AmigaBASIC patch to let AmigaBASIC work on A1200 and other newer machines.
              `" Start at the beginning of AmigaBASIC or invoke AmigaBASIC with this program

              OPEN "AMIGABasic" AS 1 LEN=1
              FIELD #1,1 AS d$
              i&=&HF3*256+&H87 : PRINT i&
              GET #1,i& : a$=HEX$(ASC(d$))
              PRINT a$
              IF a$="79" THEN
                  LSET d$=CHR$(&H78)
                  PUT #1,i&
              END IF
              CLOSE 1
             ---------------------------------- CUT HERE -------------------------------

    Andreas Mixich, [email protected]

 4.8 Wie lokalisiere ich mein Programm?
 ======================================

    Nehmen wir an, wir wollen ein `HelloLocalWorld.c' schreiben. Das
 letztendliche Programm sieht dann ungef�hr so aus:

          #include "HelloLocalWorld_Cat.h"
          #include <clib/exec_protos.h>

          struct Library *LocaleBase;

          void main(int argc, char *argv[])

          {
              /* �ffne die locale.library. (Kein Abbruch, wenn sie nicht
                 da ist, weil dann einfach die eingebauten Strings verwendet
                 werden. Aus diesem Grund auch keine Verwendung des
                 AutoOpening, auch wenn es der Compiler beherrscht.)
              */
              LocaleBase = OpenLibrary("locale.library", 38);
              OpenHelloLocalWorldCatalogs(NULL, NULL);

              printf(GetString(MSG_Hello));

              CloseHelloLocalWorldCatalog();
              if (LocaleBase) CloseLibrary(LocaleBase);
          }

    Die Funktion GetString pr�ft, ob die gew�nschten Kataloge
 vorhanden sind und liefert einen Zeiger auf einen String, entweder den
 eingebauten oder den Katalogstring. (In unserem Fall den deutschen
 String.)

    Der Hauptunterschied zum gewohnten HelloWorld.c ist also (abgesehen
 von der minimalen Initialisierung und dem Gegenst�ck am Programmende,
 das bei den meisten modernen Programmiersprachen oder unter C mit Hilfe
 des FlexCat-Paketes sogar auch noch entf�llt), Strings durch einen
 Funktionsaufruf zu ersetzen. Man braucht also eine Datei
 `HelloLocalWorld_Cat.c', die die Funktionen OpenHelloLocalWorld,
 GetString, CloseHelloLocalWorld_Cat.h und die eingebauten Strings
 enth�lt (dies k�nnte ein Array sein, das unter anderem
              array[MSG_Hello] = "Hello, local world.\n";

 enth�lt) und ein Includefile `HelloLocalWorld_Cat.h', das die ID's wie
 MSG_Hello definiert. Es ist nicht n�tig zu wissen, wie diese Dateien
 intern arbeiten, insbesondere ben�tigt man auch keine Kenntnis der
 `locale.library'!

    Dazu gibt es verschiedene Kataloggeneratoren (im Folgenden KG),
 n�mlich `CatComp' (nur f�r Developer), `KitCat' (nur deutsche
 Dokumentation, was hierzulande kein Problem ist), `MakeCat' (das ich
 nicht kenne) und `FlexCat' (das ich empfehle, einerseits, weil es sehr
 flexibel im erzeugten Source ist und z.B. Lokalisierung unter 2.0 sowie
 beliebige Programmiersprachen unterst�tzt, selbst Amiga-E, Cluster,
 Pascal, ... und andererseits, weil es von mir ist ;-) ), die diese
 Dateien sowie die Kataloge erzeugen. (Der obige Quelltext k�nnte je
 nach KG leicht unterschiedlich aussehen.) Siehe Aminet, directory
 `dev/misc'.

    Wie funktionieren diese KGs? Zun�chst erzeugt man eine sogenannte
 `Katalogbeschreibung' (`Catalog description'), die so aussehen k�nnte:
          ; Mit einem Semikolon beginnende Zeilen sind Kommentare
          # language english
          ; die Sprache der eingebauten Strings
          # version 0
          ; die Katalogversion (0 = beliebig)
          MSG_Hello (1/15/30)
          Hello, local world

 Jeder String wird durch zwei Zeilen wie die letzten beiden definiert:
 MSG_Hello ist die String-ID, (1/15/30) gibt den Wert der ID sowie die
 minimale und maximale L�nge an. (Diese Argumente k�nnen auch
 weggelassen werden, in welchem Fall einfach die n�chste freie ID
 verwendet wird.)

    Nun schreiben wir das Programm. Sobald es fertig ist, wird mit dem
 KG eine sogenannte Katalog�bersetzung (eine f�r jede andere Sprache
 als die eingebaute) erzeugt, die so aussehen k�nnte:
          ; Mit einem Semikolon beginnende Zeilen sind Kommentare
          ## language deutsch
          ; the catalog language
          ## version $VER: Deutsch.catalog 1.0 (22.12.93)
          ; the catalog files version string
          MSG_Hello

          ; Hello, local world

 Beachten Sie die leere Zeile nach der String-ID! (Die Argumente von ##
 language und ## version w�ren vielleicht leer.) Hier m�ssten jetzt
 die deutschen Strings eingesetzt werden. Mit dem KG wird daraus dann
 der eigentliche `Katalog' erzeugt. (Beachten Sie auch, da� hier die
 Angaben �ber String-ID und Stringl�nge fehlen: Sie werden aus der
 Katalogbeschreibung �bernommen.

    Wenn das Programm ver�ndert wird (neue Strings, andere L�ngen) und
 die Katalogbeschreibung sich damit ebenfalls �ndert, dann kann der KG
 analog benutzt werden, um auch die Katalog�bersetzung und damit den
 Katalog auf den neuesten Stand zu bringen.

 4.9 Wie erh�lt man einen Zeiger auf das Fenster einer Konsole?
 ==============================================================

    Die folgende Funktion liefert den Window-Zeiger eines CON-Fensters.
 Sie kann unter allen Versionen des Amiga-OS ausgef�hrt werden.

        struct Window *getConWindowPtr(BPTR fh)
        {
          struct Window *w;
          struct FileHandle *cfh;
          struct StandardPacket *sp;
          struct InfoData *id;
          struct MsgPort *mp;

          w = NULL;

          if ((cfh = BADDR(fh))->fh_Type != NULL) {
            if (sp = AllocMem(sizeof (struct StandardPacket),
                             MEMF_PUBLIC | MEMF_CLEAR)) {
              if (id = AllocMem(sizeof (struct InfoData),
                               MEMF_PUBLIC | MEMF_CLEAR)) {
                if (mp = CreatePort(NULL, 0)) {
                  sp->sp_Msg.mn_Node.ln_Name = (char *) &sp->sp_Pkt;
                  sp->sp_Pkt.dp_Link         = &sp->sp_Msg;
                  sp->sp_Pkt.dp_Port         = mp;
                  sp->sp_Pkt.dp_Type         = ACTION_DISK_INFO;
                  sp->sp_Pkt.dp_Arg1         = MKBADDR(id);

                  PutMsg(cfh->fh_Type, &sp->sp_Msg);
                  (void) WaitPort(mp);
                  (void) GetMsg(mp);

                  if (sp->sp_Pkt.dp_Res1)
                    w = (struct Window *) id->id_VolumeNode;

                  DeletePort(mp);
                }
                FreeMem(id, sizeof (struct InfoData));
              }
              FreeMem(sp, sizeof (struct StandardPacket));
            }
          }

          return w;
        }

    Anmerkungen:
    * Auf ein CON-Fenster direkt zuzugreifen kann Konflikte mit Aktionen
      des CON-Handlers hervorrufen. Seien Sie vorsichtig!

    * Um den Window-Zeiger einer CLI-Konsole zu erhalten, �bergibt man
      ein durch Open("*", MODE_OLDFILE) gewonnenes FileHandle an obige
      Funktion.

    * Das Ergebnis der obigen Funktion kann sehr wohl NULL sein, etwa im
      Falle eines AUX-Handlers oder falls ein AUTO-CON-Handler sein
      Fenster nicht �ffnen kann.

    * Schickt man ein ACTION_DISK_INFO-Paket an einen AUTO-CON-Handler
      (2.0+), so verliert dessen Fenster seine speziellen
      AUTO-Eigenschaften (es kann also nicht mehr durch das Bet�tigen
      des Close-Gadgets geschlossen werden), weil der in id_VolumeNode
      gelieferte Window-Zeiger g�ltig bleiben mu�.

    * Alles in allem: Verwenden Sie diese Funktion nicht. :-)

    Weitere Informationen finden Sie auf den Seiten 273, 276, 435, 463,
 485 und 629 im "Amiga Guru Book" (siehe Dokumentation).

    Ralph Babel, [email protected]

 4.10 Was sind Pragmas?
 ======================

    Pragmas sind spezielle Anweisungen an den C-Compiler.  Zwei Probleme
 entstehen bei der Verwendung von Pragmas:
   1. Pragmas sind hochgradig compilerspezifisch. Nicht einmal die
      Amiga-Compiler haben dieselben Pragmas, selbst wenn damit das
      gleiche bewirkt wird.

   2. Man kann sich nicht darauf verlassen, da� ein Compiler Pragmas
      ignoriert, die er nicht versteht. Dies gilt selbst dann, wenn man
      einen Ausdruck wie den folgenden verwendet:
               #ifndef MY_COMPILER
               #pragma DoAnything
               #endif

 Das letztere Problem l��t sich umgehen, indem man Pragmas wie folgt
 in eigene Include-Files setzt. (Das gleiche gilt �brigens auch f�r
 Pr�prozessor-Kommandos wie #asm (Aztec-C) oder #extern (C++).)
          #ifndef MY_COMPILER
          #include <mypragmas.h>
          #endif

    Aber was machen Pragmas auf dem Amiga? Meistens werden sie verwendet,
 um dem Compiler mitzuteilen, wie gewisse Library-Funktionen aufgerufen
 werden. (Tats�chlich wird fast immer diese Verwendung gemeint, wenn
 Amiga-Besitzer �ber Pragmas sprechen.) Gew�hnliche C-Funktionen
 erwarten ihre Argumente auf dem Stack, Library-Funktionen dagegen in
 bestimmten Registern. Ferner erwarten sie den `Library-Base-Pointer' in
 Register a6.  Betrachten wir eine Pragma-Anweisung von Aztec-C:
          #pragma amicall(SysBase,0xd2,FreeMem(a1,d0))

 Dies weist den Compiler an, das erste Argument in Register a1 und das
 zweite in d0 zu laden. Ferner wird der Inhalt der Variablen SysBase in
 Register a6 geladen. Maxon-Pragmas sehen genauso aus, Dice- und
 SAS-Pragmas sind allerdings etwas komplizierter:
          #pragma libcall SysBase FreeMem d2 0902

 Hier ist d2 (wie 0xd2 oben) der `Library-Vektor-Offset' (siehe
 n�chstes Beispiel). Die letzte Ziffer ist die Zahl der Argumente, die
 davorstehende 0 ein Code f�r das Register mit dem Ergebnis und die
 davor stehenden Ziffern sind Codes f�r die Register mit den Argumenten
 in verkehrter Reihenfolge. (Die Codes bedeuten 0=d0, 1=d1, .., 8=a0,
 9=a1, a=a2, ..)

    Ein Kommando wie `FreeMem(fib,sizeof(*fib);' w�rde ein Compiler nun
 in folgenden Code �bersetzen:
          move.l  _fib,a1
          move.l  260,d1           ; sizeof(struct FileInfoBlock)
          move.l  _SysBase,a6
          jsr     -0xd2(a6)       ; 0xd2 = _LVOFreeMem

 FreeMem in dieser Art aufzurufen ist k�rzer und schneller als
 zun�chst die Argumente auf den Stack zu legen und dann eine Funktion
 _FreeMem aufzurufen, die letzten Endes doch nur dasselbe tun und die
 Argumente vom Stack in dieselben Register laden w�rde.

    Das Portierungsproblem der Pragmas umgeht man, indem man sie
 folgenderma�en in den eigenen Quelltext einbindet:
          /*  SAS/C, Dice und GNU-c (ab Version 2.6.1) machen es       */
          /*  ganz einfach:                                            */
          #if defined(__SASC)  ||  defined(_DCC)  ||  defined(__GNUC__)
            #include <proto/exec.h>
          #else

            /*  Lade den Funktionsprototyp. Dieser ist nicht vom       */
            /*  verwendeten Compiler abh�ngig.                 */
            #include <clib/exec_protos.h>

            /*  Pragmas sind vom Compiler abh�ngig, aber wenigstens    */
            /*  die Namen der Dateien mit Pragmas sind relativ */
            /*  einheitlich.                                           */
            #ifdef AZTEC_C
              #include <pragmas/exec_lib.h>
            #elif defined(__MAXON__)
              #include <pragmas/exec_pragmas.h>
            #endif

            /*  Deklariere SysBase-Variable                            */
            extern struct ExecBase *SysBase;
          #endif

 Das obige Beispiel kann problemlos mit allen angegebenen Compilern
 verwendet werden und produziert optimalen Code. (Die proto/*.h-Files
 machen �brigens auch nichts anderes als clib/*_protos.h und
 pragmas/*_pragmas.h mit #include einzulesen und dann die
 SysBase-Variable zu deklarieren.)

    Eine abschlie�ende Frage bleibt allerdings: Wie bekommt man die
 Pragmas?  Die meisten Compiler haben bereits fertige Pragmas im
 Lieferumfang.  Allerdings hilft das nicht, wenn man z.B. eine neue
 Library benutzen m�chte oder nur die Pragmas einer veralteten Version
 hat. In diesem Fall kann man die Pragmas selbst aus den sogenannten
 `FD'-Files erzeugen.  Dazu haben die meisten Compiler ein Utility
 namens `fd2pragma'.  (Das NDU hat z.B. ein Directory namens FD, in dem
 die FD-Files aller Libraries und Devices des OS enthalten sind. siehe
 Include-Dateien) Es gibt auch ein frei kopierbares fd2pragma, das
 Pragmas f�r Aztec, Dice, SAS und Maxon sowie LVO-Files f�r den
 Aztec-Assembler und eventuelle Tag-Versionen produziert. (Aminet,
 `dev/misc/fd2pragma2_0.lha' oder auf den Fish-CDs)

    F�r Pragmas unter dem gcc siehe Inline-Dateien.

 4.11 Mein Compiler/Linker vermi�t Symbole.
 ==========================================

    Zun�chst sollte man sich versichern, da� die Funktion tats�chlich
 fehlt: Z.B. Floating-Point-Funktionen befinden sich in einer speziellen
 Link-Library, die erst mit der Option `-lm' eingebunden wird.  Ferner
 kann es eine fehlende Variable sein: Wenn man z.B. ohne es zu bemerken
 eine Intuition-Funktion benutzt, dann wird der Linker �ber das Fehlen
 eines Symbols `IntuitionBase' klagen. In diesem Fall mu� man also
 lediglich das Folgende irgendwo im globalen Teil seines Quelltextes
 einbauen:
          struct Library *IntuitionBase;

 (Und vergessen Sie nicht, die Library mit OpenLibrary() zu er�ffnen und
 mit CloseLibrary() zu schlie�en!) :-)

    Allerdings k�nnte die Funktion nat�rlich tats�chlich fehlen. Wenn
 man zum Beispiel nur die Version 2.0 der amiga.lib hat, dann fehlen
 etwa die Locale-Funktionen oder die Memory-Pool-Funktionen, obwohl sie
 prinzipiell verwendbar sind. (1) Die einfachste (und beste) L�sung
 ist, das sogenannte NDU zu kaufen.  Siehe Include-Dateien. Wer nicht
 solange warten m�chte, f�r den ist die Frage, welche Art von Funktion
 in seiner Link-Library fehlt:
    * Einfache Amiga-Library-Funktionen (z.B. `exec/AllocPooled' oder
      `locale/OpenCatalogA') kann man mit Pragmas aufrufen und braucht
      dann lediglich Informationen �ber die Aufrufkonventionen
      (Library-Base, Library-Vektor-Offset und Argumentregister)

    * Tag-Funktionen sind meistens einfach Zwischenfunktionen, die ihre
      Argumente auf dem Stack erwarten und dann die eigentliche
      Library-Funktion aufrufen. Wenn man z.B. die Funktion
      `dos/AllocDosObject', die eine Konstante und einen Zeiger auf ein
      Array als Argumente erwartet, nach der obigen Methode konstruiert
      hat, dann hat man damit auch ihre Stack-Variante! Dazu erzeugt man
      einfach die folgende Funktion:
               #include <clib/dos_protos.h>
               #include <pragmas/dos_pragmas.h>        /*  Evtl. anderer Name  */

               void *AllocDosObjectTags(ULONG objtype, Tag tag1, ...)
               { return(AllocDosObject(objtype, (struct TagItem *) &tag1);
               }

      Mit fd2pragma kann das auch automatisch geschehen. Siehe Pragmas.

    * Einige Funktionen bleiben aber noch �brig: Amiga.lib enth�lt
      n�mlich auch Funktionen, die f�r sich selbst interessant sind,
      z.B. die BOOPSI-Funktionen (`DoMethod', `DoSuperMethod'), die
      Memory-Pool-Funktionen (`LibAllocPooled', `LibCreatePool', die
      Ersatz f�r entsprechende 3.0-Funktionen sind) oder `HookEntry',
      das sehr hilfreich bei der Programmierung von Hooks ist. Diese
      kann man nur durch entsprechende, disassemblierte und neu
      assemblierte oder compilierter Versionen ersetzen. Im
      AmigaFAQ-Archiv sind einige dieser Funktionen bereits enthalten.

    ---------- Footnotes ----------

    (1)  Dieses Problem  betrifft vor allem Besitzer von Aztec-C, das
 seither nicht weiter unterst�tzt wird und von Dice, der manchmal etwas
 unvollst�ndig ist. Ich besitze beide ..

 4.12 Wie erfahre ich, was f�r Funktionen es gibt?
 =================================================

    Wenn Sie sich �ber den Namen einer f�r einen bestimmten Zweck
 geeigneten Funktion im Unklaren sind, dann gibt es folgende
 M�glichkeiten:
    * In den Autodocs der verschiedenen Libraries findet man am Anfang
      eine alphabetisch sortierte Tabelle aller Funktionen, die die
      betreffende Library bietet. Im Hauptteil findet man dann eine
      detaillierte Spezifikation aller Funktionen. Siehe Include-Dateien.

    * Die `.FD'-Dateien bieten eine sehr kompakte �bersicht �ber die
      Funktionen der diversen Libraries, sogar mit einer kurzen Angabe
      der Funktionsargumente. Wenn man schon grob wei�, wonach man
      sucht (z.B. nur die grobe Angabe der Argumente ben�tigt), dann
      findet man hier alle gew�nschten Informationen. Siehe Pragmas.

    Dr. Peter Kittel, [email protected]

 4.13 Der GNU C Compiler: Allgemeine Informationen und Installation
 ==================================================================

    Dieser Abschnitt enth�lt Informationen �ber den Amiga-Port des GNU
 C Compilers generell und die Installation insbesondere.

 4.13.1 Aktuelle Version
 -----------------------

    Die aktuelle gcc-Version ist 2.6.0 und an 2.6.1 wird gearbeitet.
 Sie enth�lt eine neue Version der ixemul.library (v40.3), aber man
 sollte sich wegen Fehlern, die sich auf 68000-Systemen bemerkbar
 machen, ixemul404.lha vom Aminet oder von meiner FTP-Site holen.
 Au�erdem gibt es eine neue library, libnix, die das Ben�tzen der
 ixemul.library verhindert.  2.6.1 wird Protos (wie bei SAS-C)
 enthalten, um das Kompilieren von SASC-Code unter gcc leichter zu
 machen.  Ein neuer Assembler, gas-2.5, ist enthalten, ein Paket namens
 q_anote erm�glicht die Ausgabe von gemischtem C/Asm-Code zu
 Debugging-Zwecken.  In Arbeit ist die F�higkeit des Compilers, den
 Stack wachsen zu lassen, damit man vor dem Starten von gcc nicht mehr
 den Stack setzen mu�.

 4.13.2 Hardwareanforderungen
 ----------------------------

    Jeder Amiga (vom A1000 bis zum A4000/40) ist prinzipiell in der
 Lage, die GNU-Utilities f�r AmigaDOS zu benutzen. Allerdings braucht
 man wenigstens 4MB RAM, um kleinere oder mittlere Projekte zu
 �bersetzen, f�r gr��ere (z.B. f�r gcc selbst) entsprechend mehr.
 Gigamem und VMM arbeiten mit gcc zusammen, es *k�nnte* also evtl.
 auch mit weniger gehen. Dazu braucht man aber eine MMU.  Siehe 68EC0xx.

    Eine volle Installation mitsamt C++ und Objective-C, inline-Dateien
 und Commodore Includes (siehe Include-Dateien) ben�tigt ca. 20 MB
 Platz auf der Festplatte.

    Kickstart 1.2/1.3 wird nicht mehr unterst�tzt. Wer KS 1.2/1.3 hat,
 sollte sich eine bessere Kickstart-Version kaufen.  Gcc arbeitet auch
 unter Kickstart 1.2/1.3, die volle Funktionalit�t ist aber erst ab
 Kickstart 2.x+ vorhanden. Eine schnelle CPU (z.B. 68030@25MHz oder
 besser) ist ebenfalls sinnvoll.

 4.13.3 Wer hat es gemacht?
 --------------------------

    Gcc und damit zusammenh�ngende Software wurde von den folgenden
 Personen auf den Amiga portiert (siehe Hilfe):
       Gcc v2.2.2:   Markus Wild
       Gcc v2.3.3:   Markus Wild
       Gcc v2.4.5:   Philippe Brand, Lars Hecking, Fred Fish
       Gcc v2.5.0 und sp�ter: Philippe Brand, Fred Fish, Leonard Norrgard

       Ixemul.library:    Markus Wild, Leonard Norrgard, R. Luebbert
       Libnix:            Matthias Fleischer, Gunther Nikl
              Gerlib:            Gerhard M�ller

 4.13.4 Wo finde ich die gcc-Quelltexte?
 ---------------------------------------

    Alle gcc-Quelltexte und alle Bin�rdateien findet man auf:

   1. Aminet (wuarchive.wustl.edu und Mirror wie ftp.luth.se) in
      /pub/aminet/dev/gcc (siehe FTP)

   2. Ramses The Amiga Flying BBS:
               +33-1-60037015  HST Dual v32 terbo 4800-21600
                   +33-1-60037713  SupraFax v32bis    4800-14400
                   +33-1-60037716  Tornado v22bis     1200-2400
      in Topic `Development', Area `Gcc' (are 156).

    Den originalen GNU-Quelltext bekommt man

   1. von denselben FTP-Servern wie die Binaries

   2. gnu.prep.ai.mit.edu (18.71.0.38) in `/pub/gnu'

   3. Ramses The Amiga Flying BBS in Topic
      `AmigaUnix/Unix/Linux/NetBSD', Area `Gnu Source Code'

    Diese Archive sollten alles N�tige enthalten, mit Ausnahme der
 Quelltexte der ixemul.library. Diese erh�lt man ebenfalls auf dem
 Aminet, Directory `dev/gcc'. (Zur Zeit ist die Version 40 der
 ixemul.library in Arbeit. Die Quelltexte werden am gleichen Ort sein.)

    Durch Richard Stallman, Free Software Foundation, ist festgelegt:

    "The GPL says that any distribution of binaries must contain either
 the source code or a written offer to supply source code (see the GPL
 for details of what is required)."

    �bersetzt: Die GPL (GNU General Public License) legt fest, da� jede
 Distribution entweder den Quelltext oder das schriftliche (oder
 geschriebene?) Angebot, diese zu liefern, enthalten mu�. (N�heres
 siehe in der GPL.)

 4.13.5 Inline-Dateien
 ---------------------

    Die Inline-Dateien f�r den gcc kann man aus den originalen
 FD-Dateien von Commodore wie folgt erzeugen (Siehe Include-Dateien,
 siehe Pragmas):

      CLI> Assign INCLUDE: GCC:os-include
      CLI> Assign FD: INCLUDE:fd
      CLI> Makedir INCLUDE:inline
      CLI> cd USR:bin/geninline
      CLI> gen31

    Dies sollte alle Inline-Dateien in `GCC:os-include/inline' erzeugen.
 Falls man die 2.0- bzw. 3.0-Includes besitzt, sollte man gen20 bzw.
 gen30 benutzen. Inline-Dateien f�r OS3.1 (rev 40.13) sind in
 <gcc-aktuell> enthalten. Siehe Aktuelle Version.  (1)

    Auch mit dem Programm fd2inline kann man Inline-Dateien erzeugen:

      CLI> fd2inline <fd_file> <proto_file>

    ---------- Footnotes ----------

    (1)  Perl Skripte haben Schwierigkeiten, die Include-Dateien von
 AmigaDOS korrekt zu behandeln. Hier w�re etwas freiwillige Arbeit
 n�tig ...

 4.13.6 Wie konvertiere ich die Amiga-Libraries f�r den gcc?
 -----------------------------------------------------------

    Ab gcc Version 2.6.0 werden dank den libnix-Autoren (Matthias
 Fleischer und Gunther Nikl) AmigaDOS Linklibraries unterst�tzt.

    Wenn man trotzdem eine gcc-Linklibrary generieren will, gibt es zwei
 Methoden:

    1. Mit hunk2gcc, dem AmigaDOS-Object-Konvertierer von Markus Wild.
 Dazu braucht man zun�chst eine aktuelle Kopie der amiga.lib (aus dem
 NDU, siehe Include-Dateien). Nachdem man sich ein Directory f�r die
 konvertierten Dateien erstellt hat, wechselt man mit cd in dieses
 Directory und gibt das Folgende ein:
       hunk2gcc amiga.lib [..further libs if you like..]

 Dies erzeugt ein Objektfile wie a.out f�r jedes einzelne Modul, das
 die Library enth�lt. Diese Module mu� man anschlie�end in einer
 gcc-Library zusammenfassen:
       ar qc libamiga.a obj.*
       ranlib libamiga.a

 Das Programm ranlib f�gt eine Symboltabelle in die Library ein.
 (Dadurch wird der Zugriff auf die Library sehr viel schneller.)

    2. Eine libamiga.a mit libnix zu generieren ist recht leicht, braucht
 aber einige Zeit. Man dekomprimiere sources.lha aus dem libnix-Archiv
 und starte ein 'make libamiga.a'.

    *Beachte:* Solange man keine reinen AmigaDOS-Funktionen verwendet,
 kann man auch eine Pseudo-Library erzeugen:
        cat "int dummy;" >dummy.c
        gcc -c dummy.c
        ar crv libamiga.a dummy.o
        mv libamiga.a gcc:lib

 4.13.7 Wie installiere ich den gcc?
 -----------------------------------

   1. Falls dies die erste Installation von gcc ist:

      Mache das Folgende:

           cd ort_mit_sehr_viel_platz      ; �NDERN! Gib eine Schublade an
           makedir gnu
           lha x gcc260-base.lha           ; Der erste Teil, du brauchst ihn

      Jetzt mu�t du `gnu/s/user-startup' an dein `S:User-Startup'
      anh�ngen (Ersetze Devel:GNU durch deinen eigenen Gnu Pfad).

      Weiter:

           execute gnu/s/user-startup     ; setzt wichtige Assigns
           copy gnu/envarc/#? ENVARC:

      *�ndere* die folgenden Zeilen!  Wenn du einen 68000- oder
      68010-Amiga hast, entferne das "-020" aus allen folgenden Zeilen!

           lha x gcc260-c-020.lha      ; Der C-compiler; du brauchst ihn
           lha x gcc260-doc.lha        ; Wenn du die Dokumentation zu gcc willst
           lha x gcc260-c++-020.lha    ; Wenn du C++ haben willst
           lha x gcc260-objc-020.lha   ; Wenn du Objective-C haben willst
           lha x gcc260-utils.lha      ; Wenn du zus�tzliche Utilities haben willst
                                       ; (empfohlen zur Kompatibilit�t mit Unix)
           lha x gcc260-utilsdoc.lha   ; Wenn du Dokumentation zu allen Utilities willst

      Mit dem Script `restorelinks' mu�t du Links generieren:

           sh /gnu/s/restorelinks      ; �NDERN! F�ge " copy" an diese Zeile an,
                                       ; wenn du MakeLink nicht ben�tzen willst,
                                       ; sondern Files lieber kopieren willst

      Schlie�lich:

           lha x gcc260-diffs.lha      ; Wenn du gcc neu kompilieren willst
           lha x gcc260-texi.lha       ; Wenn du Postscript-Doku generieren willst

      Auf zum n�chsten Punkt und fr�hliches Kompilieren!

   2. Wenn du ein Upgrade deiner gcc-Umgebung von v2.5.x machen willst,
      dearchiviere einfach gcc260-base.lha und gcc260-c-020.lha. Gehe
      sicher, da� du deine fr�here ixemul.library l�schst, wo sie
      sich auch befindet.  (�blicherweise in `LIBS:')


    *Beachte*: Eine neue Version der ixemul.library wird verwendet, gehe
 bitte sicher, da� nirgends eine andere Kopie ist, die in Konflikt mit
 der neuen Version geraten kann.

 4.13.8 Kompilieren
 ------------------

    Wie w�r's mit einem netten `Hello world'?

      #include <stdio.h>

      main()
      {
        printf("Hello World!\n");
      }

    Das war recht einfach ;-) Jetzt m�ssen wir es kompilieren.  Es gibt
 eine Menge Optionen in gcc, aber die einfachste M�glichkeit zu
 kompilieren ist:

      CLI> gcc -o hello hello.c

    Einfach?  Hier sind mehr Optionen:

    Ziel-Prozessoren von Motorola: Man kann reinen 68000 code, 68020,
 68030, 68040 und/oder 68881 kompilieren.  (Siehe Gcc-Dokumentation,
 Kapitel `Invoking Gcc/SubModel Options/M680X0 Options for Motorola
 specific compilation flags'.

      CLI> gcc -m68020 -m68881 -o hello hello.c

    Dies kompiliert Programme mit 68020 Code und direkten FPU-Befehlen
 und bindet mit den beschleunigten Libraries aus `GCC:lib/lib020'.

    Optimierung: Entweder du willst keine Optimierung oder du gibst `-O'
 an, das den Code optimiert, oder `-O2' f�r bessere Optimierung (Siehe
 die Dokumentation im Kapitel `Invoking Gcc/Optimize Options').
 Inzwischen gibt es auch eine `-O3' Option, die noch weiter geht.

      CLI> gcc -O2 -o hello hello.c

    Ein schnelles "Hello World" ;-)

    Codegenerierung: Vielleicht willst du residente Programme haben.
 Die Option dazu hei�t `-resident'.

      CLI> gcc -resident -o hello hello.c

    Nat�rlich kannst du alle Optionen mischen, so etwa:

      CLI> gcc -O2 -m68020 -m68881 -resident -o hello hello.c

    Dies wird ein hoch optimiertes residentes Programm f�r 68020 und
 68881 ergeben.

    *Wichtig:* Wenn du nur AmigaOS-Funktionen verwendest oder aus
 irgendwelchen philosophischen Gr�nden keine ixemul.library verwenden
 willst, dann kannst du diese loswerden durch:

      CLI> gcc -noixemul -o foobar foobar.c

    nat�rlich nur, wenn du libnix hast (enthalten in gcc 2.6.0).

 4.13.9 Wichtige Informationsquellen
 -----------------------------------

    Der aktuelle Betreuer des Amiga-Ports von gcc ist:
          Philippe BRAND
          Fidonet: Ramses The Amiga Flying BBS 2:320/104.21
          Email:   [email protected] (ONLY for personnal email).
          Ftp:     colombo.telesys-innov.fr:/pub/amigados-gnu
                   or /pub/incoming/uploads for uploads.

    Es gibt auch eine Mail-Liste in Finnland. Siehe Mail-Listen.
 Philippe Brand wird im Normalfall Fragen an diese Liste weiterleiten.