Jedes Jahr auf der Jahreshauptversammlung des Atari Bit Byter User Club e.V. wird mir deutlich, wie wenig ich eigentlich die Atari 8 Bit Rechner, ihre Architektur und ihr Ökosystem kenne. Um diesem Manko nun endlich Abhilfe zu schaffen, habe ich begonnen, mich in die Programmierung dieser kleinen Kisten einzuarbeiten. Maschinensprache bzw. Assembler dürfte kaum wie eine andere Programmiersprache hierzu bestens geeignet sein.
Darf ich vorstellen? Sally
Atari verwendete damals in seinen 8 Bit Systemen angepasste 6502 Mikroprozessoren, die „Sally“ getauft wurde. Die MOS 6502 CPU und seine Nachfolger, wie die 6510 waren zur damaligen Zeit unter den Herstellern weit verbreitet und finden sich in zahlreichen Homecomputern wieder, u.a. auch dem Commodore 64.
Neben Sally arbeiten in den Atari 8 Bitern weitere „Custom Chips“, die z.B. für Bild- und Tonausgabe zuständigen sind und sich mit der CPU den Speicher teilen:
- ANTIC – Alpha-Numeric Television Interface Circuit
- GTIA – Graphics Television Interface Adapter
- POKEY – Potentiometer and Keyboard
Der Maschine ganz nahe
Bei der Assembler Programmierung geht es im Wesentlichen um die Manipulation des Speichers bzw. der Speicherinhalte. Die Befehle hierzu, in Assembler Mnemonics genannt, sind bei der 6502 CPU mit 56 recht überschaubar.
Die Grundlagen des 6502 Assemblers sind bei den verschiedenen Systemen sehr ähnlich. Wer sich hierfür interessiert, kann sich ein beliebiges Buch über 6502 Assembler schnappen (z.B. „Programming the 6502“ von Rodnay Zaks) und gleich loslegen. Ich war durch meine C64'er Zeit hier etwas vorbelastet. Die Webseite Easy 6502 ermöglicht ebenfalls einen schnellen Einstieg und das direkte Ausprobieren des Codes in einem Simulator.
Wie bereits erwähnt, teilt sich die CPU den Speicher mit den Custom Chips. Um hierbei den Überblick zu behalten oder ihn überhaupt erst einmal zu bekommen, ist „Das Atari Profibuch“ die ideale Lektüre. Das Buch ist aber natürlich nicht mehr über den normalen Buchhandel zu bekommen und auch bei eBay taucht es nur gelegentlich auf oder wird zu illusorischen Preisen angeboten. Glücklicherweise hat der ABBUC e.V. die Rechte an dem Buch erhalten und darf es kostenlos allen Atari Freunden als digitalen Download zur Verfügung stellen.
Moderne Welten
Auch an den Atari 8 Bit Systemen sind die letzten 30 Jahre nicht spurlos vorüber gegangen und viele moderne Entwicklungen haben Einzug gehalten. Cross-Compiler, bei denen der Code auf modernen Systemen, in aktuellen Entwicklungsumgebungen geschrieben und übersetzt wird, haben die Entwicklungszeiten deutlich verkürzt. Dauerte ein Assembler Durchlauf, d.h. das Übersetzen des Quelltextes in Maschinensprache, auf echter Hardware noch bis zu mehrere Minuten, ist der Vorgang auf aktuellen PCs innerhalb von wenigen Sekunden erledigt.
Ich selbst verwende derzeit die Eclipse Erweiterung WUDSN IDE von ABBUC Mitglied Peter Dell und den Open Source Cross-Compiler MADS. Beide Programme sind sowohl unter Linux, als auch Windows und Mac OSX verfügbar.
Motivation
Wie eingangs erwähnt, geht es mir beim Lernen von Assembler auf den Atari 8 Bit Systemen weniger darum, ein spezielles Problem zu lösen oder eine Anwendung zu entwickeln. Um produktiven Code zu schreiben, sind meiner Ansicht nach Hochsprachen wie C, Pascal oder BASIC auch auf den alten 8 Bit Maschinen besser geeignet.
ABBUC Mitglied 8bitjunkie hat in einem Vortrag auf dem Vintage Computer Festival Berlin, den ich jedem nur ans Herz legen kann, die Frage nach der Motivation treffend beantwortet: „Weil es unheimlich Spaß macht“.