SimulationsRaum Rotating Header Image

6502

MoreHuhn

Heute war die letzte Sitzung meines Seminars „Assemblerprogrammierung für Medienwissenschaftler“, das ich an der Uni Paderborn gegeben habe. Im Laufe des Semesters haben die Studenten den MOS 6502 kennen und programmieren gelernt. Ab der zweite Kurshälfte haben wir uns auf ein gemeinsames Programmierprojekt geeinigt, bei dem induktiv aus verschiedenen Algorithmen zur Grafikprogrammierung und Steuerung ein Abschießspiel entstanden ist. Maßgeblich für das Coding war dabei einer der Studenten, dessen Entwürfe wir Sitzung für Sitzung analysiert, erweitert und debuggt (häufiger aber mit neuen Bugs ausgestattet) haben. Am Ende steht nun ein fast komplettes Shooterspiel, bei dem man eine Kanone auf dem unteren Bildschirmrand steuert, um Vögel, die über einen hinweg fliegen, abzuschießen. In der finalen Version sollten die Vögel selbst auch noch zurückschießen und versuchen alle drei Kanonen, die der Spieler hat, nacheinander zu treffen; leider sind wegen Krankheit zwei Sitzungen ausgefallen, so dass das Spiel vorerst ein Stump ist, der allerdings funktioniert.

Davon kann man sich auf dieser Webseite überzeugen:

https://homepages.uni-paderborn.de/cgeppert/6502asm/index.html

Dort wählt man im Pulldown-Menü das Programm „chickshoot.asm“ aus, klickt auf „Compile“ und dann auf „Run“.

Mit den Tasten „A“ und „D“ kann man die Kanone steuern, mit „M“ einen Schuss abgeben. (Derzeit noch als Easter Eggs implementiert ist die Taste „Z“, mit der die Zufallsgeschwindigkeiten der Vögel geändert werden können und die Taste Shift-M, mit der ein Laserstrahl abgefeuert werden kann.)

Abermals hat sich der 6502-Assembler als ideale didaktische Programmiersprache erwiesen. Die Entwicklungsumgebung ist ein auf JavaScript basierender Emulator, der zwar noch einige Fehler enthält, aber ein für Lehrzwecke ideal reduzierte Plattform darstellt. (Interrputs sind nicht möglich, Ausgaben erfolgen ausschließlich auf dem 32×32 Pixel großen Bildschirm, Eingaben sind nur über die Tastatur vornehmbar). Der Emulator ist Freeware und kann bei GitHub abgerufen und auf eigenen Webseiten implementiert werden.

P.S. Der Student, der den JavaScript-Emulator auf seine Webseite implementiert hat, hat dabei gleich zwei ihm bekannte Fehler aus dem JavaScript-Code korrigiert.

Playing with assembly

Unter der Adresse 8bitworkshop.com kann der geneigte User den 6502-Assembler für Ataris VCS lernen. Die Seite führt Schritt für Schritt in die Hardware und die Programmiertechniken ein. Das Tool werde ich sicherlich in einem meiner künftigen Programmierseminare einmal einsetzen.

Ein anderes „Assembler-Programmier-Projekt“ ist schon etwas älter aber trotzdem noch einmal der Erwähnung wert: Der Autor des Blogs „Coding Horror“ (neu in meiner Blogroll rechts!) stellt TIS-100 vor – ein Spiel von zachtronics, bei dem es darum geht, einen fiktiven alten Computer in Assembler zu programmieren. Grandios!

Historische CPUs (aktuell)

Heute habe ich gleich drei interessante Nachrichten zu (teilweise) aktuellen Projekten mit historischen CPUs auf den Schirm bekommen:

Auf Basis der Software-Simulation der MOS-6502, die im Rahmen des Projektes visual6502.org vorgenommen wurde, hat Eric Schlaepfer einen Nachbau mit diskreter Transistor-Logik gewagt, den er auf der nächsten Makerfaire vorstellen wird. Das ist nicht allein eine medienepistemologisch interessante Neuigkeit, sondern auch ein großer Schritt in Sachen hardware preservation! Über das Projekt kann man auf evilmadscientist, tubetime (dem Blog Schaepfers) und der Projektseite MOnSter 6502 etwas lesen.

Mit dem Z80 beschäftigen sich gleich zwei Projekte:

Jesse Maroquin hat bereits 2008 „CP/M 50“, einen Computer für das CP/M-Betriebssystem, auf Basis der 50-Megahertz-CPU eZ80L92 konstruiert. Über das Projekt berichtet er auf der Projektseite nopLabs.

Das „ZAViouR Board“ ist ein Hybrid mit Z80- und AVR-CPU:

Der Entwickler Steve Smith hat es dediziert als Experimentier-Baord entwickelt, um zugleich historische und moderne Programmiermöglichkeiten zu verwirklichen. Bilder und Informationen zum „ZAViouR Board“ gibt es auf hackaday.io.

Pac-Man-Studies

In der vergangenen Woche habe ich Besuch von Volker Hann, einem Sammler und Restaurator originaler Arcade-Automaten, bekommen. „Volle“ hatte ein voll funktionstüchtiges „Pac-Man“-Board dabei, über das wir kürzlich auf der Retro-Börse gesprochen hatten und das er mir bis zum Ende des Semesters ausleiht. Zusammen mit einem angepassten Netzteil und einem Anschluss für einen Atari-kompatiblen Mikroschalter-Joystick ist das Board nun im Signallabor aufgestellt, wo es während meines feitäglichen Seminars „Pac-Man als epistemisches Spiel(-Zeug)“ von den Studierenden analysiert und bespielt werden darf.

Pac-Man-Board

Eine andere thematisch relevante Entdeckung habe ich bei der Suche nach dem Disassemblat der Atari-VCS-Version des Spiels gemacht. Der Informatiker Ben Fry, der im Rahmen seiner Dissertation bereits einige Retro-Projekte durchgeführt hat, hat auf seiner Internetseite eine Sammlung so genannter „Distellamap“ angelegt: Grafiken mit den kompletten Assembler-Codes einiger Spiele, auf denen die Verzweigungsstrukturen in Form von Verbindungslinien zwischen den Adressen angezeigt sind. Die scheinbare Linearität eines Maschinenprogramms wird so überaus deutlich denkonstruiert und in ihrer Zeitabhängigkeit vorgeführt. Die sechs Programm-Grafiken, unter denen sich auch der Code von „Pac-Man“ befindet, können dort auch als Ausdrucke bestellt werden.

Distellmap von "Pac-Man"

Mikroprofessioneller Clone

Heute hat mich ein großes Paket aus dem Hause Bryx erreicht, in welchem nicht nur die endlich reparierte Magnavox Odyssey (gleich mit Falschpolungsschutz versehen) und eine Philips G7400 (mit Video- und RGB-Mod) enthalten war, sondern auch ein original verpackter „Microprofessor II“-Computer:

IMG_2982

Der MPF-II ist der Nachfolger des legendären „Microprofessor“-Einplatinencomputers. Er hat allerdings nicht den Z80A, sondern einen MOS 6502-Mikroprozessor eingebaut – und das nicht ohne Grund: der MPF-II ist ein beinahe lupenreiner Apple-II-Clone, was man vor allem am BASIC merkt. Bis auf ein paar Betriebssystem-Adressen und eine softwaregenerierte Textdarstellung unterscheidet er sich nicht vom Apple-Vorbild. Interessant sind auch die Beigaben. Neben dem Netzteil und einem HF-Signalteiler (der Computer hat allerdings auch einen FBAS-Ausgang … wie der Apple II) gibt es parallele und serielle Schnittstellen und Anschlüsse für einen Datenrekorder.

Das wirklich umfangreiche Begleitmaterial besteht aus einem dicken BASIC-Handbuch, einem Hardware-Handbuch (in dem auch die Kommandos des Monitor-Programms erklärt sind, denn der MPF-II lässt sich natürlich auch in 6502-Assembler programmieren). Nett ist das mitgelieferte Diagnose-System „Micro-Nurse“, das auf Audiokassette vorliegt und sein eigenes Manual hat.

JMP $6502

In den vergangenen zwei Semestern haben wir den meistverbauten Mikroprozessor der Vergangenheit, Zilogs Z80, in Assembler programmieren gelernt. Zur Zeit des Z80 wurde der Markt allerdings von einem anderen Chip dominiert, den bereits 1975 von der Firma MOS Technology Inc. veröffentlichten MOS-6502. Er fand sich in den ersten und meistverkauften Computerplattformen der 1970er- und frühen -80er-Jahre: Apple I, II, Commodore PET, VC20, C64 sowie allen Atari-Computern und -Konsolen. Wie der Z80 entstand auch der 6502 als abwärtskompatibler Nachfolger eines Konkurrenten – in diesem Fall des Motorola 6800. Welche Residuen von 6800-Funktionalitäten im 6502 und seinen Nachfolgern (6507, 6510, 8500, …) zu finden sind, wäre eine mögliche, technikhistorische Ausgangsfrage unseres Kurses, in dessen Zentrum jedoch die hardwarenahe Programmierung des sehr orthogonal angelegten 6502 steht. In diesem Semester lernen wir alle Opcodes des Prozessors sowie einige plattformspezifische Funktionen kennen. Programmiert wird auf dem Commodore C64 sowie einer Emulationsumgebung. Laptops mit Emulatoren können vom Institut gestellt werden. Der Kursus versteht sich als Anfängerkurs und setzt keine Programmierkenntnisse voraus!

Der Kurs findet jeden Donnerstag von 18-20 Uhr (ct.) statt. Um vorherige Anmeldung wird gebeten. Die benötigte Literatur stellen wir als Scans in einem Moodle-Kurs zur Verfügung.

Literatur:

  • Rodnay Zaks: Programmierung des 6502. Düsseldorf u. a.: Sybex 1980.
  • C. Lorenz: Programmieren in Maschinensprache mit dem C64. Eine Einführung mit vielen Beispielen. Holzkirchen: Hofacker 1984
  • Angerhausen/Brückmann/Englisch/Gerits: 64 intern. Das große Buch zum Commodore 64 mit dokumentiertem Schaltplan. Düsseldorf: Data Becker 1984.
  • Winfired Kassera/Frank Kassera: C64 Programmieren in Maschinensprache. München: Markt&Technik 1983.
  • M. B. Immerzeel: Mikrocomputer ohne Ballast. Ein Mikrocomputer-Anleitungsbuch für Anfänger mit Assemblerprogrammen für die CPU 6502.

6502 Block-Diagramm

Es ist schon interessant, wie sich nicht nur die 8-Bit-Prozessoren und ihre Programmierung voneinander unterscheiden, sondern auch die jeweils dazugehörigen Didaktiken. Bislang habe ich mich ja ausschließlich mit der Programmierung des Z80 beschäftigt und zu dessen didaktischem Material gehört so gut wie immer und überall ein schematisches Blockdiagramm des Prozessors, das man in allen Handbüchern und auch auf zahlreichen Webseiten findet. Jetzt fange ich gerade an, mich in die Programmierung der MOS 65XX-Prozessoren einzuarbeiten und dachte, dass mir ein Blockdiagramm dort auch behilflich sein könnte. Allerdings gibt es für diese Prozessoren so gut wie nichts vergleichbares und übersichtliches. Das, was ich gefunden habe, erscheint mir für meine Zwecke wenig brauchbar und auch gar nicht als Programmierhilfe konzipiert.

Rodnay Zaks, der sich ja ausführlich mit dem Z80 und seiner Peripherie beschäftigt hat, hat die dazu entwickelte Didaktik auch in seinem später erschienenen Buch zur „Programmierung des 6502“ (das ich heute bekommen habe) übernommen. Und dort findet sich dann auch (auf S. 47) ein Block-Diagramm, das meine Zwecke erfüllt:

Quelle: Rodnay Zaks: Programmierung des 6502. Düsseldorf: Sybex 1985, S. 47.

Ich bin schon gespannt, welche Unterschiede sich in der Programmier-Didaktik zwischen Z80 und 6502(ff.) noch zeigen werden …

System Description: Apple II

In der Mai-Ausgabe des Byte-Magazins aus dem Jahr 1977 erklärt Steve Wozniak, wie der Apple II funktioniert – und zwar sehr detailliert. Das kann man jetzt online nachlesen (und ein PDF des Originalartikels laden). (via Retro Zock)

AppleWorlds on 6502

Gestern hatte ich nach dem Analogcomputer-Workshop erstmals wieder etwas Zeit für die digitale Welt und habe für den Apple IIe das ADTPro in Gang gebracht. Nach einiger Anwendungssoftware (DOS, Grafikprogramme, …) waren die Spiele dran und ein mir ganz wichtiges war das erste in der Reihe:

Rescue on Fractalus

Eine tolle Adaption in Monochrom-Grafik, steuerbar mit der Tastatur und meinem ebenfalls neuen Analog-Stick.

Daneben wurde ich – als Dankeschön für meine Beiträge hier im Blog – noch mit einem Buch-Geschenk beehrt:

Mein Dank dafür geht zurück an den Spender und SimulationsRaum-Leser Markus Ackermann!

Two and a half new computers

Heute sind drei meiner letzten Auktionsgewinne im Institut eingetrudelt. Ich lasse mal das Foto der Geräte sprechen:

Vorne links sieht man eine MB Vectrex-Spielkonsole von 1982; die einzige Spielkonsole mit eingebautem Vektormonitor. Dementsprechend wirken auch die 10 mitgelieferten (und das 11. eingebaute) Spiel. Das ist schon eine ganz andere Art Computerspiel. In der Vectrex tickt ein „sexy“ Motorola 6809A-Prozessor; die Grafik wird im Handumdrehen von diesem berechnet und der Sound kommt aus dem hinlänglich bekannten AY-3-8912 von General Instruments. Ein Spiel „Spike“ bringt den Soundchip sogar zur Sprachausgabe!

Vorne rechts ist eine Ergänzung zur Atari VCS-Spielkonsole der Firma Spectravideo: Der Compumate. Ich habe das Gerät, das hierzulande recht stolze Preise erlangt, bei ebay.com von einer Frau aus Venezuela ersteigert. Es kam – wie die Vectrex – in Originalverpackung und mit einem Handbuch. Der Compumate ist eine Programmiererweiterung für die Atari-Konsole. Auf die alte 2600er kann man ihn vor passgenau aufsetzen, ein Modul, das mit Kabeln verbunden ist, in den Modulport und zwei Sub-9-Stecker in die Joystick-Port stecken und dann geht es los: Ein Musik-Synthesizer, ein Grafikprogramm – alles über die Tastatur programmierbar – und ein etwas ungewöhnlicher BASIC-Interpreter. Alles zusammen auf 32 KB ROM. Der Compumate kam 1983 und damit leider viel zu spät und wurde – wie Ataris eigenes BASIC-Modul – ein Flop.

Im Hintergrund zeigt sich der wertvollste Neuzugang: Ein Apple //e von 1983 mit Drucker, Doppelfloppy, Grünmonitor und Touch-Tablet. Der Computer funktioniert einwandfrei, auch wenn der Drucker den Versand nicht ganz unbeschadet überstanden hat. Die inneren Werte des Apple überzeugen fast noch mehr als sein leicht vergilbtes Äußeres: Eine Z80-Karte, eine 80-Zeichen-Karte (damit steht mir die CP/M-Welt offen), natürlich eine Karte für die Floppy, den Drucker und das Touch-Tablet. Offenbar verfügt der Rechner auch über eine Speichererweitertung. Alle Chips im Inneren sind gesockelt und der Prozessor ist noch ein original MOS 6502. Zwar sind alle deutschen und ein paar englische Handbücher, Prospekte und Preislisten mit dabei, aber leider keine Software. Mein Kollege Brian Toussant hier am Institut hat Anfang der 80er-Jahre selbst einen solchen Apple //e besessen und noch einiges an Software bei sich zu Hause … und die bringt er mir mit.

6502 Archäologie

Auf der Webseite der Zeitschrift Archäologie (!) des Archaeological Institute of America findet sich ein Artikel über den 8-Bit-Prozessor 6502 der Firma MOS Technology, welcher ab Mitte der 1970er-Jahre in zahlreichen Homecomputern verbaut wurde. (via Shintaro Miyazaki@Facebook)