Retro Games The C64 "Maxi"
Wie früher: In Basic programmieren mit dem C64
Programmieren mit Basic hat mir als Kind Spass gemacht. Mit einem C64-Imitat probiere ich aus, ob das immer noch so ist.
Der Commodore 64: eine Legende aus der PC-Steinzeit, 40 Jahre alt. Er vermag auch heute noch zu faszinieren. Das liegt nicht nur daran, dass er mit Jugenderinnerungen verknüpft ist, sondern auch am Prinzip dieser Maschine. Der Wechsel von einem modernen PC auf die alte Kiste fühlt sich an, wie im Tesla-Zeitalter einen Gokart zu fahren. Null Komfort. Eine simple Funktionsweise, die unmittelbar verständlich ist. Die Direktheit, mit der sich Handlungen auswirken. Das alles ist zu nichts nütze, macht aber eine Menge Spass.
Willst du den C64 wieder aufleben lassen, hast du viele Möglichkeiten. Die einfachste ist, ihn direkt im Webbrowser zu benutzen. Oder du lädst dir den Emulator VICE herunter, der ein paar Features mehr bietet. Ich bin einen Schritt weiter gegangen und habe mir den C64 Maxi gekauft. Das ist im Prinzip auch ein Emulator, aber in einem Gehäuse, das dem Original sehr nahe kommt. Mitgeliefert wird auch ein Joystick. Puristen bevorzugen sicher einen echten C64. Für mich tut es diese Nachbildung, die bequem per HDMI an einen Bildschirm angeschlossen werden kann.
Ich hatte selbst nie einen C64, und er nimmt in meinen Erinnerungen keinen wichtigen Platz ein. Dennoch löst das Gerät bei mir Nostalgie aus, denn der C64 wird mit Basic programmiert. Das ist die Programmiersprache, die ich zwischen 11 und 13 Jahren auf einem sehr merkwürdigen Gerät namens Basictutor lernte.
Ich will mich mit dem C64 in diese Zeiten zurückversetzen und wieder in Basic programmieren. Es nimmt mich wunder, was dabei herauskommt und ob die Magie von damals wieder aufkommt. Ob ich wieder ähnlich übermotiviert bin wie 1988. Mit kindlicher Naivität und jugendlichem Grössenwahn habe ich damals einen Flugsimulator auf einem Gerät programmiert, das nur 15 Zeichen und keine Grafik darstellen konnte.
Es geht schon los, bevor es losgeht
Tatsächlich ist meine Motivation zu Beginn fast zu hoch: Ich kann nicht warten, bis der C64 Maxi geliefert wird. Stattdessen fange ich an, auf meinem Mac zu programmieren. Und ich tue dies nicht auf einem C64-Emulator, was schlauer gewesen wäre, sondern nehme den erstbesten Basic-Interpreter, den ich mit Google finde. Es handelt sich um BBC Basic.
Zwar geht das Programmieren so einfacher als auf einem C64. Denn mit BBC Basic habe ich einige Annehmlichkeiten einer modernen Programmierumgebung: Debugging mit Variablenüberwachung oder automatische Neu-Nummerierung der Zeilen. Das Problem: Basic ist nicht gleich Basic, es gibt zahllose Sprachvarianten. Ein Programm, das mit BBC Basic funktioniert, tut das nicht automatisch auch auf dem C64.
Meine erste Idee ist ein Programm, das dem User Kopfrechenaufgaben stellt. In BBC Basic bekomme ich eine erste funktionierende Version erstaunlich schnell hin.
Übertragung auf den C64 Maxi
Ein paar Tage später ist endlich der C64 Maxi bei mir. Wie bringe ich nun mein Programm auf die Kiste? Einer der Vorteile gegenüber einem Original-C64 ist, dass der C64 Maxi vier USB-Ports hat. Deshalb kann ich einen USB-Stick nutzen, um Daten zu laden und zu speichern.
So einfach, wie sich das anhört, ist es aber nicht. Denn der C64 Maxi kann nicht direkt Dateien auf den Stick schreiben oder sie einlesen. Das funktioniert nur innerhalb einer Disketten-Image-Datei mit der Endung .d64. Auf den Inhalt des Images wiederum kann ich von meinem Mac aus nicht zugreifen.
Die Lösung: Ich installiere den Emulator VICE. Der kann Text aus der Zwischenablage in das C64-Terminal eingeben. Und er verwendet ebenfalls D64-Images. Ich kopiere also den Text aus BBC Basic, setze ihn im Emulator ein und speichere das Programm im D64-Image. Dieses landet auf dem USB-Stick, wo es der C64 Maxi einliest. Etwas umständlich, aber hey, es funktioniert!
Mit «es funktioniert» ist nur der Datentransfer gemeint. Das Programm selbst funktioniert nicht. Meine Motivation erleidet einen leichten Dämpfer; gleichzeitig aber will ich diese Knacknuss unbedingt lösen.
Anpassung an den C64 und weiteres Gebastel
Zuerst muss ich alles in Kleinbuchstaben umwandeln, weil sonst die ASCII-Zuordnung nicht stimmt – Grossbuchstaben werden auf dem C64 zu Grafiksymbolen. Das nächste Problem ist, dass der C64 kein ELSE-Statement kennt. Verwirrenderweise gibt er keine Fehlermeldung aus, sondern macht irgend etwas – aber nicht, was er sollte.
Das dritte Problem: Die Generierung von Zufallszahlen funktioniert anders. Der Befehl RND generiert zwar in beiden Basic-Dialekten eine Zufallszahl. Aber beim C64 ist das eine Zahl zwischen 0 und 1, während es bei BBC eine Ganzzahl mit Obergrenze des in Klammern angegebenen Wertes ist.
Dazu kommen eine Reihe weiterer Optimierungen. Bis ich endlich mit meinem ersten Programm zufrieden bin, ist es auf 139 Zeilen angewachsen. Und damit bereits recht unübersichtlich. Denn Basic hat fast keine Möglichkeiten zur strukturierten Programmierung und eine natürliche Neigung zum Spaghetti-Code.
Aber gerade, weil das Programm recht lang und ausgefeilt geworden ist, bin ich stolz auf das Ergebnis. Genau wie damals vor über 30 Jahren. Ein selbstgemachtes Programm auszuführen, ist einfach sehr befriedigend. Besonders stolz bin ich darauf, dass sich der Schwierigkeitsgrad der Rechenaufgaben automatisch anpasst, je nachdem, wie gut du sie löst.
Probier es aus
Hier kannst du das gezippte Image herunterladen, entpacken und auf das Drag-and-Drop-Feld im Online-Emulator ziehen.
Das Programm funktioniert so:
- Zu Beginn gibst du an, wie viele Rechenaufgaben du lösen willst.
- Dann wählst du die Rechnungsart aus.
- Falls du oft richtig rechnest, werden die Aufgaben schwieriger. Umgekehrt werden sie leichter, wenn du öfters daneben liegst.
- Falls du auf der schwersten Stufe immer noch meist richtig liegst, ist das «Spiel» früher zu Ende – du brauchst kein weiteres Training 🥳
Das war erst der Anfang, ich werde bestimmt weitere Programme aushecken. Wie wärs mit einem textbasierten Flugsimulator?
Durch Interesse an IT und Schreiben bin ich schon früh (2000) im Tech-Journalismus gelandet. Mich interessiert, wie man Technik benutzen kann, ohne selbst benutzt zu werden. Meine Freizeit ver(sch)wende ich am liebsten fürs Musikmachen, wo ich mässiges Talent mit übermässiger Begeisterung kompensiere.