home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-04-12 | 53.4 KB | 1,244 lines |
- Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!gatech!newsfeed.internetmci.com!EU.net!Germany.EU.net!informatik.tu-muenchen.de!kellerer
- From: kellerer@informatik.tu-muenchen.de (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: <AmigaFAQg-2-824230830@informatik.tu-muenchen.de>
- 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: news-answers-request@MIT.EDU
- Distribution: world
- Expires: Sunday, 12 May 96 18:00:33 MESZ
- Message-ID: <AmigaFAQg-2-829065633@informatik.tu-muenchen.de>
- References: <AmigaFAQg-1-829065633@informatik.tu-muenchen.de>
- Reply-To: kellerer@informatik.tu-muenchen.de (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: kellerer@hphalle3g.informatik.tu-muenchen.de
- 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: kellerer@informatik.tu-muenchen.de
-
- ==========================(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: <almathera@cix.compulink.co.uk>
-
- 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: <stefano@tchest.e.eunet.de>
-
- Someware
- 27 rue Gabriel PΘri
- 59186 Anor
- France
- Voice: +33 27596000
- Fax: +33 27595206
- E-Mail: <didierj@swad.someware.com>
-
- 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, peterk@cbmger.de.so.commodore.com
-
- 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: sasdsb@vm.sas.com EMail: eurdoc2@vm.sas.com
-
- 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: info@oic.COM.
-
- 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, comeau@bix.com
-
- 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, phil@ntg.com
- Mike Haas, haas@starnine.com
-
- *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 `amigalisp@contessa.phone.net'.
-
- *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, jolinger@bix.com
-
- *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, peterk@cbmger.de.so.commodore.com
-
- 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, humpty@tomate.tng.oche.de
-
- 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, rbabel@babylon.pfm-mainz.de
-
- 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, peterk@cbmger.de.so.commodore.com
-
- 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: phb@colombo.telesys-innov.fr (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.
-
-