Inhaltsverzeichnis
MICRO C
Einleitung
Ein vernünftiges Programmierwerkzeug für den Atari Portfolio Handheld-Computer (im folgenden mit PF abgekürzt) zu finden, war eine längere Geschichte für mich. Seit 1989 habe ich das versucht, aber um ehrlich zu sein, nicht mit allzuviel Energie, da es sich schnell herausstellte, das die eingebaute Software für meinen Bedarf im allgemeinen ausreichte. Aber ich gab nicht auf. Ein perfekter Computer ist irgendwie langweilig.
Andere Lösungen
Zuerst habe ich den A86 Assembler ausprobiert. Aber die erste Version, die ich bekommen konnte, lief nicht auf dem PF. Das nächste war ein PROMAL-Compiler (eine Sprache sehr ähnlich zu C, entworfen für Apple-II und C64), aber er war ein wenig zu groß für 128 kB RAM und 128 kB RAM-Karte. Was gut läuft auf dieser Konfiguration ist der AWK-Interpreter aus den Unix-Tools von Mortice-Kern-Systems (MKS). Ich habe den noch in Gebrauch. Er ist sehr nützlich, besonders weil er 100% Posix-kompatibel ist. Aber AWK ist nicht besonders geeignet für Systemprogrammierung. Ein weiterer Schritt war der Small-C-Compiler, von J. E. Hendrix, zusammen mit einer neueren Version von A86 (Small-C erzeugt A86-compatiblen Assember-Code). Small-C läuft ganz gut, aber der Linker war auf dem PF nicht in der Lage, Programme (.exe) größer als etwa 8 kB zu generieren.
Micro-C, die endgültige (?) Lösung
Vor ungefähr einem Jahr bekam ich das Micro-C Paket, geschrieben von Dunfield Development Systems (DDS), von der C-Users-Group (CUG). Es sah vielversprechend aus, da der Compiler für Einplatinen-Computer entworfen wurde, in 32 kB RAM laufen und außerdem sehr portabel sein sollte. Die Software wird inclusive Quellcode geliefert.
Aber da war ein großes Handikap. Der Compiler produziert Assembler Code, der allerdings, im Gegensatz zu Small-C, nicht A86-kompatibel ist. Der Code kann nur von Microsofts MASM- oder Borlands TASM-Assembler übersetzt werden. Ich hatte beides nicht. Au×erdem hatte ich keine Idee, wo ich MASM bekommen könnte. Die Zeiten, da Microsoft DOS-2.11 (vielleicht das beste Betriebssystem, das sie je vertrieben haben) und damit verbundene Software, unterstützt hat, sind lange vorbei.
Dann änderten 2 Ereignisse die Situation zu besseren. Zunächst kam ich zu einem MASM-5-Assembler, 103 kB groß. Und zweitens konnte ich meinen PF auf 512 kB System-RAM upgraden und mit einer Optrol 1 MB Flash-RAM-Karte ausstatten (speziellen Dank an Jan Sedlak in Prag, der solche Sachen noch verkauft!).
Das Micro-C Paket wird auf vier 3-1/2-Zoll Disketten ausgeliefert, inclusive Unterstützung für verschiedene Mikroprozessoren, Quellcode und ausführlichen Manuals. Aber alles paßt auch auf eine 1.4 MB Diskette (die vier Disketten sind wohl Kopien von alten 360 kB Disketten). Mit den mitgelieferten Manuals war die Installation nicht schwierig.
So sieht meine Micro-C Arbeitsdirectory im Augenblick aus:
cc.com 4071 14.07.97 10.49 mcc.com 24456 14.07.97 10.49 mco.com 13810 14.07.97 10.49 mcp.com 12410 14.07.97 10.49 masm.exe 103175 31.07.87 0.00 link.exe 50531 14.02.89 15.32 lc.bat 836 14.07.97 10.49 exe2bin.com 1476 14.07.97 10.49 stdio.h 466 14.07.97 10.49 comm.h 2215 15.07.97 8.05 console.h 1050 15.07.97 8.05 ctype.h 1587 15.07.97 8.05 file.h 1678 15.07.97 8.05 tsr.h 439 15.07.97 8.05 video.h 2236 15.07.97 8.05 window.h 3279 15.07.97 8.05 pc86rl_s.obj 866 14.07.97 10.49 pc86rl_t.obj 816 14.07.97 10.49 mclib.lib 39424 14.07.97 10.49
- cc ist ein Koordinator-Programm, mcp der Preprozessor, mcc der Compiler und mco der Optimierer.
- Masm und link sind Versionen von Microsoft. lc ist ein Batch-Script zum linken von separat kompilierten oder assembelten (?, vom Assembler übersetzten) Modulen.
- Exe2bin konvertiert .exe- in .com-Files, wird automatisch von cc aufgerufen, wenn nicht das Small-Memory-Modell (an Stelle von Tiny) eingestellt ist.
- pc86rl_s.obj und pc86rl_t.obj sind der Startcode für das Small- bzw. Tiny-Memory-Modell.
Der Compiler arbeitet wirklich schnell und erzeugt kompakten Code. Einige Testprogramme, die ich übersetzt habe, hatten eine Länge zwischen 1 und 3 kB (.com-Files).
Manchmal bewirkte ein Fehler im Quellprogramm, das nicht nur vom Compiler oder Linker eine Fehlermeldung erzeugt wurde, sondern auch der PF in einen Zustand ging, in dem vernünftiges Kompilieren nicht mehr möglich war und aus dem nur ein „harter“ Hardware-Reset (entfernen der Batterien und eine Viertelstunde warten) heraushalf. Aber ich denke das ist nur in der Testphase passiert und lag daran, daß die Entwicklungsumgebung noch nicht richtig konfiguriert war.
Dies ist meine erste Erfahrung mit Micro-C und Micro-C auf dem PF. Ich denke, die Konfiguration kann noch verbessert werden
Rolf Henze. 25.07.97