Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
SCHWERPUNKT<br />
<strong>Crosscompiling</strong><br />
Das erste Helloworld-Programm<br />
in C<br />
auf dem (virtuellen)<br />
Commodore 64.<br />
GLOSSAR<br />
Hardware-Sprites: Die<br />
Sprites waren kleine<br />
Grafiken im Format 24 x<br />
21 Pixel. Die Hardware<br />
unterstützte wichtige<br />
Features wie das Positionieren<br />
auf dem Bildschirm<br />
und die Kollisionserkennung<br />
direkt.<br />
Das vereinfachte insbesondere<br />
die Spieleprogrammierung<br />
enorm,<br />
bei der die Sprites etwa<br />
als Spielfigur oder Opponent<br />
Verwendung<br />
fanden.<br />
INSTALLATIONSPAKETE FÜR WINDOWS<br />
Ein mit freier Software erzeugtes meinprogramm.exe ist ja ganz<br />
nett, und jeder Linux-User weiß auch, wie er so etwas startet –<br />
Windows-User dagegen tun sich damit oft schwer. Sie suchen<br />
nach einem Installer namens setup.exe, der auf dem Desktop<br />
noch ein Icon und zusätzlich einen Eintrag im Startmenü erzeugt.<br />
Auch so etwas lässt sich unter Linux realisieren: Beim Nullsoft<br />
Scriptable Install System (NSIS, [4]) handelt es sich um freie<br />
Software, die auch nativ unter Linux läuft.<br />
DER BROTKORB<br />
Viele Leser dürften ihre ersten Erfahrungen mit Rechnern in den<br />
1980ern mit einem der damals verbreiteten sogenannten Heimcomputer<br />
gemacht haben. Das erfolgreichste Modell dieser Gattung<br />
war der Commodore 64 (Abbildung , vorige Seite), der von<br />
1982 bis 1994 gebaut wurde. Seine 8-Bit-CPU des Typs MOS<br />
Technology 6510 war mit 1 MHz getaktet, als Arbeitsspeicher<br />
brachte er 64 KByte RAM mit. Daneben gab es 20 KByte ROM, in<br />
denen unter anderem das Betriebssystem und der eingebaute<br />
Basic-Interpreter lagerten. Der Grafikchip VIC-II brachte es auf<br />
eine Auflösung von 320 x 200 Pixeln bei 16 Farben und steuerte<br />
bis zu acht Hardware-Sprites an. Als Soundchip kam ein 3-stimmiger<br />
SID 6581 zum Einsatz. Die Daten speicherte man auf externen<br />
Massenspeichern. Dazu fand zunächst die „Datasette“<br />
Verwendung, ein Bandlaufwerk mit Musikkassetten. Diese löste<br />
später eine 5¼-Zoll-Floppydisk ab, die 170 KByte Kapazität bot.<br />
Spielen), müssen Sie von der SDL-<br />
Homepage [2] erst die entsprechenden<br />
Windows-Pakete herunterladen<br />
und unter /opt/cross einrichten<br />
(Listing 4, vorige Seite).<br />
Erst dann klappt das Kompilieren<br />
eines SDL-Programms.<br />
Der Aufruf von /opt/cross/bin/<br />
sdl-config am Ende der Compiler-<br />
Zeile von Listing 4 liefert Pfade<br />
und Libraries für die Windows-<br />
Umgebung – für ein Linux-Programm<br />
würde man stattdessen<br />
sdl-config heranziehen.<br />
Um das Programm unter Linux<br />
(Wine) oder Windows zu testen,<br />
benötigen Sie dann noch die Datei<br />
SDL.dll aus SDL-1.2.14-win32.<br />
zip. Auch andere Bibliotheken gilt<br />
es gegebenenfalls für Windows<br />
nachzuinstallieren. Hier verwenden<br />
Sie, sofern vorhanden, die<br />
Entwicklerpakete für Windows<br />
oder müssen anderenfalls die Bibliotheken<br />
selbst crosskompilieren.<br />
LISTING 5<br />
$ make -f make/gcc.mak<br />
$ su -c "make -f make/gcc.mak<br />
install"<br />
LISTING 6<br />
#include <br />
int main()<br />
{<br />
VIC.bordercolor = COLOR_GREEN;<br />
VIC.bgcolor0 = COLOR_BLACK;<br />
return(0);<br />
}<br />
Spezial-Crosscompiler<br />
Der bislang in diesem Artikel verwendete<br />
GCC unterstützt als<br />
Crosscompiler zwar eine beeindruckende<br />
Menge an Targets,<br />
doch gibt es auch viele mehr oder<br />
weniger exotische Plattformen,<br />
die er nicht ansteuert. Für diese<br />
existieren oft Spezial-Crosscompiler,<br />
die meist ausschließlich Code<br />
für die Zielplattform erzeugen.<br />
Ein typisches Beispiel für eine<br />
solche exotische Plattform ist der<br />
Commodore 64 (C64) aus den<br />
80er-Jahren des letzten Jahrhunderts<br />
(siehe Kasten Der Brotkorb).<br />
Solche Heimcomputer wurden<br />
entweder in Basic (eingebaut,<br />
langsam) oder in Assembler programmiert.<br />
Sprachen wie Logo,<br />
Forth oder Pascal standen zwar<br />
auch zur Auswahl, wurden aber<br />
selten benutzt. Ein Compiler für<br />
C – heute die führende Programmiersprache<br />
– existierte 1982<br />
noch nicht. Heute gibt es ihn.<br />
6502-Crosscompiler<br />
Das freie Softwareprojekt CC65<br />
[3] stellt einen C-Crosscompiler<br />
für die MOS-6502-CPU-Familie<br />
zur Verfügung, wie sie nicht nur<br />
im Commodore 64, sondern auch<br />
in Heimcomputern wie dem<br />
VC20, C16, Apple II oder Atari<br />
verwendet wurde. Damit lassen<br />
sich C64-Programme auch in C<br />
programmieren.<br />
Mit den Befehlen aus Listing 5<br />
übersetzen Sie den Compiler<br />
recht einfach aus dem Quellcode<br />
selbst und installieren ihn nach<br />
/ usr/local. Alternativ finden Sie<br />
auf der Homepage auch RPM-Pakete<br />
sowie ein Debian-Repository.<br />
Nach der Installation stehen neben<br />
dem C-Compiler cc65 unter<br />
anderem ein Assembler (ca65), ein<br />
Disassembler (da65) und ein Linker<br />
(cl65) zur Verfügung. Als besonders<br />
praktisch erweist sich<br />
das Compile-and-Link-Dienstprogramm<br />
cl65: Es erkennt die Inputfiles<br />
(Assembler, Object-File, C-<br />
File) automatisch anhand der Endung<br />
und generiert ein ausführbares<br />
Programm. Das Kompilieren<br />
und Ausführen unseres kleinen<br />
Helloworld-Programms aus<br />
Listing 1 klappt daher ohne großen<br />
Aufwand:<br />
$ cl65 helloworld.c<br />
$ x64 -autoload helloworld<br />
In der zweiten Zeile lädt und startet<br />
der C64-Emulator x64 (siehe<br />
Kasten Commodore 64 emulieren)<br />
das Programm helloworld von<br />
der virtuellen Floppy. Mit dem<br />
Basic-Befehl LIST lassen Sie sich<br />
das Programm anzeigen – ein Basic-Programm,<br />
das nur aus einem<br />
Befehl besteht: SYS 2061. Das bedeutet:<br />
Rufe das Assemblerprogramm<br />
an der Speicherstelle 2061<br />
40 02 | 11<br />
www.linux-user.de