C64 Assembler Kurs (German)

  • |
  • 25 May 2020
Post image

Assembler? Zeitverschwendung!

Warum sollten Studenten in der heutigen Zeit eine Programmiersprache aus dem letzten Jahrtausend lernen auf einer Maschine, die seit Jahrzehnten nicht mehr existiert mit einer praktischen Anwendbarkeit gegen Null? Lasst sie doch besser KI programmieren!

Dieser Satz fällt regelmäßig und mit Garantie in jeder Diskussion um dieses Thema. Ich fange noch einmal anders an:

Alte Kenntnisse sind gefragt

Warum wird in Frankreich eine Burg aus dem 12. Jahrhundert neu erbaut? (https://www.guedelon.fr/en/introduction_75.html) Es werden keine Bagger oder modernen Kräne verwendet, kein Beton, noch nicht einmal eine einfache Wasserwaage aus Aluminium. Es wäre doch so viel einfacher, wenn es nur darum ginge eine Burg zu bauen. Die Antwort ist allgemein sofort verständlich und zeigt, dass es häufig nicht darum geht ein Ziel in möglichst schneller Zeit zu erreichen, sondern darum auf dem Weg dorthin Erfahrungen zu sammeln.

Der 6502 Prozessor stammt aus dem Jahre 1975( https://web.archive.org/web/20181004202006/https://www.commodore.ca/history/company/mos/mos_technology.htm) und steckt in vielen Geräten der damaligen Zeit, wie zum Beispiel dem Apple II (https://apple2history.org/history/ah03/). Der C64, unsere Zielmaschine, stammt aus dem Jahre 1982 (https://www.theguardian.com/games/2019/dec/19/the-c64-review-precise-replica-80s-gaming) und wird mit einem Emulator simuliert. (https://vice-emu.sourceforge.io/).

The mighty C64

[Bild: Der Brotkasten mit 5 1/4 Zoll Diskettenlaufwerk und Datasette]

38 Jahre später kann man die Aufgabe, mit einer solchen Maschine zu arbeiten, sehr schön als großes Puzzlespiel bezeichnen. Wenige Befehle, wenige Möglichkeiten und mit welchen Verfahren komme ich zum Ziel? Dabei sind die Verfahren dermaßen alt, dass wir schon Stunden mit sieben Zeilen Programmcode zugebracht haben. Das klingt langweilig? War es in der Regel nicht, auch wenn diese Art der Entschleunigung pädagogisch einiges an Geschick abverlangt. Denn es geht, im Gegensatz zu vielen bestehenden C64 Assembler Tutorien, nicht darum schnell schöne Sprites auf den Bildschirm zu zeichnen oder herunter zu beten, welche Adressformen der 6502 (bzw. 6510 im C64) beherrscht.

Das Ziel: Woanders

Aber was lernen Studenten überhaupt? Zuerst einmal wird die Arbeitsweise eines Computers wesentlich klarer, wobei es um das sehr grundlegende Verständnis von Bits, Bytes und Adressen geht. Allerdings garantiert nicht wie man es in fast allen Tutorials so schön und langweilig findet. Nicht jeder (niemand?) gerät in Ekstase bei Erklärung eines Zweierkomplements. Wichtig ist was man damit anfängt, zum Beispiel die Score Anzeige einbauen. Wer das verinnerlicht, hat im späteren Verlauf ein deutlich besseres Verständnis für zum Beispiel Arrays und Datenstrukturen.

Weiterhin werden Algorithmen und die abstrakte Herangehensweise von Dekomposition, Heuristik, Black- Boxing und Reducing Complexity vermittelt. In Assembler ist es notwendig ein großes Problem, und das sind selbst banale Dinge auf einer derart alten Architektur, in viele kleine Einzelteile zerlegen zu können. Analyse und Logik- Skills werden geschärft. Darüber hinaus sind visuelle Testverfahren und automated- testing für Assembler Programmierung auf diesem Level nicht optional sondern überlebenswichtig.

Wie soll man sich das vorstellen? Im Prinzip wie bei der Arbeit an der französischen Burg. Mit modernen Methoden wäre ein Dach mit vorgefertigten Elementen in kurzer Zeit erstellt. Bei den Mitteln, welche 800 Jahre zuvor zur Verfügung standen, ist bereits der Transport eines Balkens in die Höhe ein Problem und man beginnt sich zu überlegen, wie ein Krangerüst aufgebaut und erstellt werden kann, bevor der Balken überhaupt bewegt wird. In Assembler geht es genau darum. Wenn eine farbige Schrift auf dem Bildschirm erscheint obwohl sie mehr als 255 Punkte vom Start entfernt ist (Die maximale Zahl, welche ein 8-Bit Computer verarbeiten kann), empfindet man Stolz. Nicht weil der Balken in die Höhe gebracht wurde, sondern weil man verstanden hat wie man es ohne hydraulischen Kran bewerkstelligt bekommt und auf dem Weg dorthin viele Probleme gelöst hat. Es geht auch um Durchhaltevermögen und das Verlassen der eigenen Komfortzone, das Erlauben von völlig anderen Denkmustern und die Auseinandersetzung mit komplexen, so gänzlich unbekannten, Problemen. Dies sind alles Fähigkeiten, die meiner Ansicht nach einen guten Programmierer auszeichnen. Wer nicht aufgibt, erlebt Erfolgserlebnisse in einem Mikrokosmos.

Nachhaltigkeit anders vermitteln

Noch ein Wort zu sustainable Programming: Auf einem C64 geht es wirklich darum, die spärliche Prozessor- Zeit und den geringen Speicher in seinen Planungen ständig zu berücksichtigen. Auf einem modernen Multi-Core Prozessor fällt dies meistens spät auf, wenn es überhaupt berücksichtigt wird. Aber wieviel Energie eine Software verwendet, um eine Funktion auszuführen ist heute dann entscheidend, wenn die App den Akku des mobile phone in kurzer Zeit leerzieht und der Kunde wenig begeistert ist.

Einen anderen Reiz kann ich aus der Tatsache ableiten, dass ich tatsächlich ein Kind dieser Zeit bin, Assembler programmiert habe und deshalb viele Geschichten und interessante Verfahren daraus erzählen kann. Ein Wissen, dass neuerdings so alt ist, dass es den Zuhörern wieder Spaß macht davon zu hören.

Online course running

Unsere Burg ist ein kleines Computerprogramm in dem ein selbstgezeichnetes Raumschiff durch einen Tunnel fliegt. Das ist nicht unbedingt plakativ in der heutigen Zeit aber es macht Spaß und bringt handfeste Ergebnisse.

Für Interesierte: https://www.retrogamer.net/tag/commodore-64/

Projekt Vier.46

You May Also Like

The Almanac of Sep'22

The Almanac of Sep'22

Welcome to the opening almanac (Issue No. 1) But what is this almanac? It is a kind of magazine and directory which lists all new posts which were …

The story continues

I reorganized my site. For some reasons. First of all I detected especially in the last years that I did so many things, worked on so many different …