Level up: C64-Assembler nach c't-Art

October 24, 2018 — Mischka

Der Artikel in der c't retro legt nahe, den Cross-Compiler acme für die C64 Assemblerprogrammierung zu verwenden. Leider gibts dafür kein Binary in den Ubuntu-Quellen - und auch keins auf der Sourceforge-Website. Aber kein Problem. Linux-User können sich das C64-Devkit von cliffordcarnmo aus dem Github laden. Das enthält den ACME Compiler, sowie diverse Hilfsprogramme zum kompilieren. Zunächst gilt es das Devkit runterzuladen. Dies geht ganz einfach mit dem Befehl

git clone https://github.com/cliffordcarnmo/c64-devkit

mit cd c64-devkit

wechselt man nun in das Verzeichnis.

Um loszulegen löscht man erstmal sämtliche Inhalte der Verzeichnisse source, sprites, tables, graphics, music, charset mit dem Befehl

rm source/*
rm sprites/*
rm tables/*
...

Damit hat man nun ein leeres Projekt, in das die entsprechenden Dateien eingefügt werden können. Sämtlicher Sourcecode gehört in das Verzeichnis

source/

Da das Projekt nur aus einer Quelltext-Datei besteht, wird in diesem Verzeichnis die Datei 'main.asm' angelegt in die die Assembler-Befehle kommen.

Soviel zur Vorbereitung.... Jetzt gehts ans eingemachte. Und da beginnt bereits die Geschichte voller Widersprüche. In der c't retro ist ein Listing abgedruckt, welches weder ich, noch der Compiler verstehen:

merkwürdiges Listing

Die Bedeutung dieser Zeilen erschließt sich mir weder mit Logik noch aus dem Text. Viel eher erschließt sich die Bedeutung aus dem Quellcode von der c't-Website, welcher andere Zeilen an dieser Stelle enthält:

; BASIC-Header
    *= $0801; Ladeadresse = BASIC
    !by $0b,$08,10,0,$9e,'2'
    !by '0','6','1',$00,$00,$00

Der Reihe nach: *= $0801 ist die Startadresse für dieses Programm $0801 ist der Anfang des Basic-Speichers, hierhin wird also das Programm zunächst geladen. danach folgen eine Reihe von Bytes die übersetzt die Basic-Zeilen

10 SYS 2061

ergeben. Ein Basic-Befehl an die Speicherstelle (dezimal) 2061 zu springen und den Code dort auszuführen. Diese Zeile ist nötig, um das Programm später mit dem BASIC-Befehl run zu starten.

[Fortsetzung folgt]

Tags: assemblerkurs, retro, vintagecomputing, assembler, c64, commodore, coding, level-up

c't retro

October 24, 2018 — Mischka

Jetzt hat auch heise das Retrofieber erfasst und Vintage Computing ist Mainstream. Das sollte aber niemanden davon abhalten, sich dem Hobby intensiver zu widmen. Ich bin seit einiger Zeit dabei, meinen alten Brotkasten wieder zum Laufen zu bringen. Den Fehler habe ich leider noch nicht gefunden.

Die retro-c't ergänzt meine Sammlung an Assembler-Tutorials um ein weiteres. Ich freue mich darauf, endlich ein Spiel nachzubauen und sicher wieder etwas zu lernen. Aus dem Retro-Gamedev konnte ich leider noch nichts ausprobieren, da ein Framework für Windows-Computer genutzt wird und das Übertragen auf die C64-Assembler Linux-Tools für mich noch ein Hindernis darstellt.

Vielleicht bringt aber das c't Tutorial die nötige klarheit...

Tags: retro, vintagecomputing, retro, c64, assembler, commodore64, level-up