Section 1 of 2 - Prev - Next
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:
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:
Someware
27 rue Gabriel Péri
59186 Anor
France
Voice: +33 27596000
Fax: +33 27595206
E-Mail:
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["'
wobei `' die dezimal geschriebene Anzahl an Bytes in der Sequenz
`' ist, die gerade die spezielle Drucker-Sequenz enthält. Diese
ANSI-Sequenz sagt dem Druckertreiber, daß er die nächsten `'
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
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)) {
Section 1 of 2 - Prev - Next
© allanswers.org | Terms of use