von Christoph Bach Für die 8-Bit Ataris sind zur Zeit zwei Compiler für die Sprache C als PD erhältlich. Der eine nennt sich DVC-C, der andere ACE-C. Was unterscheidet nun die beiden? Zuerst muß man sagen, daß beide nicht den Sprachumfang beherrschen, der in C Standart ist. Die Sprache C wurde von Kernighan und Ritchie erfunden (1). Der Kern der Sprache C umfasst nur die folgenden Worte: auto break case char continue default do double else entry enum extern float for goto if int long register return short sizeof static struct switch typedef union unsigned void while Von diesen resevierten Worten beherr- schen DVC-C und ACE-C genau die glei- chen. Was sie nicht verstehen ist auto, goto, entry. Diese Worte kommen in ei- nem normalen C-Programm sowieso nicht vor. Fließkommazahlen können nur einge- schränkt verarbeitet werden. Float und Double sind unbekannt. Eine Fließkomma- zahl muß man wie in Quick (int Name (6)) deklarieren. Für die Fließkomma- berechnungen muß man spezielle UP (fmul(a,b,c)) benutzen. Daß das Wort register fehlt (es empfiehlt die Ver- wendung der Prozessorregister für oft benötigte Variablen), ist auch nicht tragisch, da der 6502 Mikorprozessor außer dem Akkumulator nur ein x- und ein y-Register hat. Man könnte allen- falls eine Schleifenvariable darin ablegen. Das Wort sizeof fehlt eben- falls. Es würde den Speicherbedarf ei- ner Variablen in Bytes ermitteln. Nun, damit könnte man leben. Was aber eine wesentlich schlimmere Beschneidung der Sprache C ist, ist das Fehlen von enum, long, short, static, struct, typedef, union und unsigned. Long und short sind Spezialfälle des Datentyps int (Doppelte und halbe Länge, also 4 bzw 1 Byte lang). Mit unsigned könnte man angeben, daß eine Variable als vorzeichenlos betrachtet werden soll. Short würde also einen Bereich von -128 bis +127 abdecken, unsigned short den Bereich von 0 bis 255. Mit enum könnte man Aufzählungs- variablen definieren. Typedef arbeitet ähnlich wie #define, nur daß es in manchen Fällen zuverlässiger ist. Mit struct und union fehlen die Worte für Verbundvariablen. Static hätte bewirkt, daß eine so deklarierte lokale Variable nicht automatisch beim verlassen des Unterprogramms gelöscht wird. Ein wichtiger Teil der Sprache C ist der Präprozessor. Hinter diesem Wort verbirgt sich ein einfacher Mecha- nismus, der ähnlich arbeitet wie das suchen und ersetzen in einer Textver- arbeitung. Zu diesem Zweck schreibt man an den Programmanfang #define Formel y=x*x/z Wenn der Compiler im Programm auf das Wort Formel stößt, ersetzt er es durch y=x*x/z. Es gibt auch die Möglichkeit noch andere Programmtexte mit #include hinzuzuladen. Die bedingten Anweisungen #if, #else, #endif, #ifdef, #ifndef und #line, #undef werden nicht verstanden. Nun zu den Unterschieden. Der DVC-C Compiler beherrscht sämtliche Funktionen die der ACE-C Compiler be- herrscht, und noch etliche mehr. Der ACE-C Compiler versteht: abs, alpha, asm, atof, val, bgets, bputs, cgetc, cgets, ciov, clear, clog, close, closeall, color, copen, cputc, cputs, dpeek, dpoke, drawto, exit, exp, fadd, fast, fdiv, find, fmul, fsub, ftoi, getchar, getkey, gets, graphics, gtime, itof, locate, log, match, move, normalize, open, peek, plot, poke, position, printf, putchar, rnd, sfind, slow, sound, stick, strcat, strcmp, strcpy, strig, strlen, tolower, toupper, usr. Das ist schon recht ansehnlich. Der DVC-C Compiler versteht zusätzlich: atn, brkey, calloc, chain, circle, clrtime, console, cos, deg, dfast, ferase, flock, free, frename, funlock, getdos, getsec, getw, highmem, index, inkey, isalnum, isascii, isnumeric, isspace, lowmem, malloc, note, point, putsec, putw, rad, rindex, scanf, setblock, setcolor, sin, sprintf, sqr, status, strchr, toascii, ungetc. Manche Funktionen haben bei DVC-C einen anderen Namen: ACE-C DVC-C alpha isalpha val atoi match smatch usr jsr Was will man mehr? Wozu dann noch ein Vergleich, wenn der eine alles kann was der andere kann, und noch einiges zusätzlich? Der ACE-C Compiler wird mit einer knappen englischen Dokumentation gelie- fert. Alle Funktionen und Hilfspro- gramme werden beschrieben. Ein Editor zum Erstellen der Quelltexte ist nicht dabei. Man kann dafür z.B. den CSM- Editor verwenden, der im USER-MAG in der Ausgabe vom September 1990 enthalten war. Der DVC-C Compiler kommt praktisch nackt daher. Die Parameter, die seinen zusätzlichen Funktionen übergeben werden müssen, kann man nur erraten. Angeblich gibt es eine Vollversion mit Dokumentation. Wenn jemand diese besitzt, so möge er sich doch beim Autor oder beim USER-MAG melden. Beim DVC-Compiler wird ein Editor mitge- liefert. Er läuft, wie alle Programme des DVC-Compilers, nur mit dem mitge- lieferten DOS. Dieses ist kommando- orientiert. Tippt man DIR, gefolgt von , so wird ein Programm mit dem Namen DIR.COM geladen, das das In- haltsverzeichnis der Diskette anzeigt. Die Geschwindigkeit der DVC-Programme soll aber höher liegen, als die der ACE-C Programme. Der ACE-C Compiler produziert Pro- gramme, die direkt unter DOS 2.5 lauf- fähig sind. Dazu wird das Runtime-Paket nachgeladen, oder beim Linken einge- bunden. Der DVC-C Compiler benötigt auch ein Runtime-Paket, daß aber in einem besonderen DOS eingebunden ist. Dieses DOS belegt 133 Sektoren, ist also nicht gerade kompakt. Es wird, ähnlich wie das TURBO-DOS-XL von Reitershan über Kommandos gesteuert. Auch zu diesem DOS gibt es keine Anleitung. Die Programme die vom DVC-C Compiler produziert werden laufen logischerweise nicht mit einem normalen DOS. Der Linker des ACE-C Compilers verträgt sich nicht mit dem TURBO-DOS-XL von Reitershan. Unter DOS 2.5 klappt alles. Die fertigen Programme laufen dann wieder unter dem TURBO-DOS-XL. Da der ATARI keine geschweiften Klam- mern darstellen kann, wurde die öffnende geschweifte Klammer ersetzt durch $( und die schliesende durch $). Der ACE-C Compiler ist für kleinere Programme geeignet, die vom normalen DOS aus gestartet werden sollen. Für abgeschlossene Programmprojekte kann auch der DVC-C Compiler benutzt werden, da die DOS-kompatibilität z.B. für ein Spiel nicht notwendig ist. Wenn man in die Welt von C hineinschnuppern will, so sind beide Compiler geeignet. Die fehlenden Sprachelemente braucht man zum Kennenlernen von C nicht unbedingt. Der fortgeschrittene C-Programmierer wird sie allerdings schmerzlich vermissen. Literatur: (1) Kernighan, Ritchie Programmieren in C 1983 Carl Hanser Verlag München Wien ISBN 3-446-13878-1