PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:c:c2

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

software/diy/c/c2.txt · Zuletzt geändert: 04/03/2006 00:03 (Externe Bearbeitung)