SimulationsRaum Rotating Header Image

Assembler

MUL

6809-Assembler

How to do Things with Keys

Gestern habe ich via Skype meinen Vortrag zur Tagung in Brno gehalten. Ich habe den Talk mitgeschnitten und als Film auf YouTube hoch geladen. Die dazugehörigen Slides können hier herunter geladen werden.

Assembler im Browser

Dank schneller Rechner und Betriebssysteme sowie den Interaktionsmöglichkeiten von Java und HTML5 kann man im Browser inzwischen so gut wie alles machen, wofür man noch vor ein paar Jahren spezielle Programme benötigte. Insbesondere die Möglichkeit, Emulatoren und daran angeschlossene Programmbibliotheken nutzen zu können, erleichtert die Arbeit mit alten Systemen (vor allem in der Lehre) sehr.

heise.de berichtet heute von einem Assembler für Browser, der mehrere alte Systeme emuliert: ASM80. Das sind natürlich Z80-Systeme. Der Assembler stellt allerdings eine gute Auswahl davon zusammen.

Unser Kosmos

Vergangene Woche habe ich von einem Freund für kleines Geld einen “KOSMOS CP1“-Lerncomputer erworben. Mein System besteht aus der Grundeinheit, einer Speichererweiterung und einer Ergänzung mit Relais zur Ansteuerung von Motoren etc. Das Kassetten-Interface habe ich leider noch nicht.

IMG_3516

Der Computer ist aus mehrfacher Hinsicht interessant. Zum einen ist darin Intels vergleichsweise schneller 8049 verbaut, ein Mikrocontroller, der alle wesentlichen Elemente eines Mikrocomputers enthält, weshalb auf der Platine des CP1 nur noch ein zusätzliches IC mit dem ROM für das Betriebssystem zu finden ist. Dieses enthält ein Monitorprogramm und eine Programmiersprache, die man als “Lern-Assembler” bezeichnen könnte. Dieser Assembler stellt 21 6-Bit-Opcodes zur Verfügung und bietet eine Adressierungsart: relative Adressierung. Letzteres mag auf das minimale RAM von 128 Byte, das im 8049 integriert ist, zurückzuführen sein, bei dem man die RAM-Bank nicht verlässt und also jedes Ziel (das wie alle Daten in Dezimalzahlen angegeben wird!) relativ anspringen kann.

Es hat allerdings auch didaktische Gründe: Die Komplexitätsreduktion sollte Jugendlichen und Kindern helfen, sich in die Programmierung in Assembler schneller einfinden zu können. Aus eigener Erfahrung weiß ich, dass gerade die Vielfalt an Adressierungsarten zu Beginn immer eine große intellektuelle Hürde darstellt. Auf relative Adressierung reduziert kann man sich schneller auf die Opcodes und ihre Funktion konzentrieren. Diese Opcodes sind im CP1 lediglich Pseudo-Opcodes, weil sie nicht nur einen vergleichsweise kleinen Ausschnitt aus dem ca. 90 Befehle umfassenden Befehlsinventar des 8049 zur Verwendung anbieten, sondern zudem auch noch “auf Deutsch” übersetzt wurden. So heißt “Springe bedingt zu Adresse XXX” hier SPB, aus AND wird UND und ANZ bringt den Inhalt des Akkumulators auf das 7-Segment-Display – gerade hinter diesem Opcode verbirgt sich eine ganze ROM-Routine, wie 8-Bit-Assemblerprogrammierer ahnen.

vorn

hinten

Funktionsübersicht mit Pseudo-Opcodes

Leider lässt der CP1 es nicht zu, direkt auf die Funktionen des 8049 zurückzugreifen. Dazu müsste man das ROM gegen ein eigenes Monitorprogramm austauschen; sieht man diese äußerst eigenwillige Programmierung jedoch aus archäologischer Perspektive, so zeigen sich hier vor allem bereits Makros, die eher zur Benutzung und weniger zur Analyse und zum Experiment mit der Maschine einladen. Man könnte sagen: Vom “CP1-Assembler” ist es also nur noch ein kleiner Schritt hin zu BASIC. (Eine Perspektive, deren Vektor sonst in genau die entgegen gesetzte Richtung verläuft.)

Rechnen & Leben

Am kommenden Mittwoch werden in Wolfgang Ernsts Forschungskolloquium “Medien, die wir meinen” die Projekte meines letztsemestrigen Assembler-Workshops vorgestellt:

Rechnen & Leben – Coding-Performance

Referenten: Dr. Stefan Höltgen, Juliane Schütte, Johannes Maibaum, Thomas Nückel

Aussterbende Computerplattformen werden heutzutage durch Emulationen scheinbar adäquat emuliert und so “am Leben“ erhalten. Doch Emulatoren können gleichzeitig mehr und weniger als die reale Hardware. Die Projekte im Seminar „Signetics 2650 Programmierworkshop“ zeigen dies auf ganz unterschiedliche Weise. Juliane Schütte hat für den „Signetics Instructor 50“, der der Seminargruppe als Referenzplattform für die Programmierung diente, eine Mathematikanwendung programmiert, mit der es möglich ist, dem eigentlich auf Binär- und Hexadezimalarithmetik beschränkten Computer das Rechnen im Dezimalsystem „beizubringen“. Sie stellt ihr Programm vor und erörtert ihre Hex-Dez-Konversionsroutine im Spannungsfeld medienwissenschaftlicher und mathematischer Fragestellungen. Johannes Maibaum hat sich auf eine Metaebene begeben und nicht in Assembler selbst programmiert, sondern einen eigenen Signetics-2650-Emulator in C für Linux programmiert. Welche Besonderheiten zwischen Quell- und Zielplattform es dabei – insbesondere unter Berücksichtigung beider Zeitverhalten und Hardwareabstraktion – zu berücksichtigen gab, diskutiert er in seinem Vortragsteil. Das Projekt von Thomas Nückel ist eine Implementierung eines „Game of Live“: Die beschränkten Ausgabeports des „Instructor 50“ haben hierbei die Nachbarschafts- und Spielregeln definiert: Sein „Game of Death“ ist ein eindimensionaler, deterministischer, binärer zellulärer Automat, auf der Basis von 8 Leuchtdioden. Zusammen mit dem Kursleiter hat er danach eine zweite Variante des „Game of Life“ programmiert: Unter dem Titel „Game of Memories“ wird ein Zellulärer Automat vorgestellt, der so nur auf dem Emulator Sinn ergibt, weil dieser die Grenzen der Darstellungsmöglichkeit des „Instructor 50“ überwindet und Speicher sichtbar machen kann. Wie alle Projekte zeigt auch dieses besonders, worin Emulation stark ist: Die „Versoftung“ von Hardware bietet den Programmentwicklern größere Freiheiten und Möglichkeiten, schränkt sie aber auch ein. An „Game of Memories“ zeigt sich die Einschränkung etwa bei der Generierung von Zufallszahlen, die auf der Originalplattform durch physikalische Ereignisse an den Ports entstehen, im Emulator aber „simuliert“ werden müssen. Nückel und Höltgen binden darüber hinaus die grafische Ausgabe Ihres Systems an die Frage der Sichtbarmachung und Epistemologie von Speicher(n) in Digitalcomputern zurück.

Länge: circa 70 Minuten
Ort: Georgenstraße 47, Raum 0.01 (Medientheater)
Zeit: 18-20 Uhr

 

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"

Zweite Definition

Für einen Beitrag über die “Didaktik maschinennaher Programmierung für Medienwissenschaftler” sichte ich gerade ein paar alte Lehrwerke und bin dabei auf folgendes Deifinitionsdouble gestoßen:

Erste Definition:
Der Mikroprozessor ist eine Schaltung, die einen logischen Prozeßablauf gemäß einem vorgegebenen Programm interaktiv zu steuern vermag. Das Programm kann dabei jederzeit geändert werden. (S. 1)

Zweite Definition:
Der Mikroprozessor ist ein Spielzeug, das von der einfachen Binäraddition bis zum komplizierten Spiel- oder Steuerprogramm im Bereich des Denksports ein fairer, unbestechlicher Partner ist. (S. 2)

In: G. Schnell/K. Hoyer: Mikrocomputerfibel. Braunschweig/Wiesbaden: Vieweg 1981.

Wer zu früh kommt, dem erzähl ich was vom Leben.

Gestern Abend habe ich in Leipzig auf der achten “Langen Nacht der Computerspiele” einen Vortrag über “Game of Life” und den Assembler-Workshop zum Signetics 2650 gehalten. Der halbstündige Auftritt, der um 22:30 beginnen sollte, fand aufgrund von vorangegangenen Überziehungen allerdings erst um kurz nach 23 Uhr statt. Das wusste zwar ich zum Glück aber die große Menge an Zuhörern (schätzungsweise 70 Personen) meines Nachfolgers nicht, die sich vor mir aufschichteten und, wo sie schon mal da waren, eben mir zuhörten, was im Signallabor der HU-Medienwissenschaft so veranstaltet wird.

Foto: René Meyer

Foto: René Meyer

1+1=?

Meine Studentin Juliane Schütte hat für den “Instructor 50″ im Rahmen meines Programmierworkshops zum Signetcis 2650 einen einfachen dezimalen Tischrechner programmiert. Er beherrscht die vier Grundrechenarten, kann negative Zahlen und Divisionen mit ganzzahligem Rest darstellen. Dieses auf den ersten Blick “einfache” Projekt offenbart seine Schwierigkeiten, wenn man sich in der Programmierung des Prozessors und der Plattform auskennt – zumal, wenn man – wie die Studentin – noch nie zuvor programmiert hat.

instr50-calc

Juliane Schütte wird ihr Projekt im Rahmen einer Präsentation am 11.6. im Kolloquium “Medien, die wir meinen” vorstellen. Der Sourcecode und die ausführbare Datei (für den Emulator WinArcadia) kann hier heruntergeladen werden.

CLInstructor

Johannes Maibaum hat im Rahmen des Assembler-Projektes zum Signetics 2650 ein Projekt erstellt, dass den Inhalt der Veranstaltung “übersteigt”, indem es eine Metaebene dazu bildet. Er hat in C einen “Instructor 50″-Emulator für die Command-Line-Ebene von Linux und Mac OS X entwickelt. CLInstructor kann in seiner jeweils aktuellen Version bei bitbucket herunter geladen werden.

Game Circuits #11: Pac-Man-Physik

pac-man-physik

Am kommenden Donnerstag, den 24.04.2014 findet ab 17 Uhr im Signallabor der „Game Circuit“ Nr. 11 zum Thema „Pac-Man-Physik“ statt. Auf historischen Computern der 1970er-90er-Jahre können verschiedene Adaptionen des Spiels „Pac-Man“ miteinander verglichen und in ihren spielphysikalischen Eigenschaften untersucht werden.

pac-man-physik

Einleitend gibt es von mir einen Vortrag zu hören:
(mehr …)

So spielt das Leben …

Das von mir und Thomas Nückel entwickelte »Game of Memories« (eine “Game of Life”-Variante für Signetics-Einplatinencomputer und deren Emulatoren) hat im ersten Halbjahr 2014 eine kleine »Deutschland-Tournee«:

Am 12. April halte ich einen Vortrag (nebst Vorführung) auf dem »Gamefest« darüber. Eine Vortragsankündigung steht schon – Zeit und Ort werden in Kürze ergänzt:

So spielt das Leben
Convays »Game of Life« als Spiel & Ernst

Das berühmte »Game of Life« stellt eine Implementierung der Theorie »zellulärer Automaten« dar, die schon in der Frühgeschichte des Computers aufgestellt wurde. In ihm überschneiden sich mathematische Spieltheorie, Informationstheorie, Speichertheorie und fragen der Künstlichen Intelligenz … aber eben auch des Computerspiels, das in sich all diese Theorien enthält. Deshalb lohnt es sich auch, einen Blick auf die faszinierende Geschichte des »Game of Life« zu werfen, wie es 196X vom britischen »Spaß-Mathematiker« mit seinen einfachen Spielregeln für Computer entworfen wurde. Dieses Spiel ist nun noch einmal im Rahmen eines Programmierkurses an der Humboldt-Universität programmiert worden – wiederum mit einem »Mehrwert« an (Be)Deutungen. Damit sollte unter anderem gezeigt werden, was man mit einfachsten Computern der 1980er-Jahre alles machen kann, obwohl in deren Handbüchern das Gegenteil steht. Hilfreich ist dazu die moderne Technik. Das Spiel wird in seiner Geschichte vorgestellt und in seiner Funktion auf einem emulierten Computer vorgeführt. 45 Minuten mit anschließender Diskussion.

Am ersten Mai-Wochenende (3.-4.5.) findet in München (wie unten geschrieben) das »VCFe« statt. Dort werde ich im Rahmen des »Exoten«-Themas den Signentics 2650 sowie unseren Programmierkurs und das Programm vorstellen. Ausgestellt wird es dort meinen Holz-EPC und meine Interton VC-4000 (mit allen Spielen) zu sehen geben.

Am 10.5. spreche ich vielleicht in Leipzig auf der »Langen Nacht der Computerspiele« noch einmal darüber.

 

Signetics 2650 Assembler – Crashkurs

Das erste Projektmodul zum 2650-Assembler ist nun vorüber und es sind immerhin drei studentische Projekte im Entstehen (die übrigen Studenten haben sich während des Semesters nach und nach verabschiedet; die anwesenden außeruniversitären Hacker haben nach meiner Kenntnis keine eigenen Programmierprojekte angefangen/umgesetzt). Da im Sommersemester die nächste Seminarrunde ansteht, auf der dann die Plattform vom “Signetics Instructor 50″-Lerncomputer auf die “Interton VC-4000″-Spielkonsole gewechselt wird, gebe ich Neueinsteigern und Rekapitulationswilligen die Möglichkeit, quereinzusteigen, indem ich in den Semesterferien einen 2650-Assembler-Crashkurs veranstalte:

Vom 31.03. bis 11.04. findet jeweils von Montag bis Freitag, 10-12 Uhr im Signallabor der Brückenkurs “Assembler für Anfänger” statt. Die Teilnahme ist natürlich kostenlos; Computer und Lehrmaterialien werden vom Fachgebiet Medienwissenschaft zur Verfügung gestellt.

Wer Interesse an der Teilnahme hat, kann sich entweder in der Facebook-Veranstaltung eintragen oder mir eine E-Mail schreiben. Postwendend kommt dann der Zugang zum entsprechenden Moodle-Kurs, in dem weitere Informationen und Materialien zu finden sind.

Plakat_signetics-Assembler

Racing the Beam …

Am Samstag, den 8. Februar findet bei uns im Insitut ein Workshop zur Programmierung für die Atari VCS statt. Geleitet wird der ganztägige Workshop von SvOl.li. Man kann seinen eigenen x86-Rechner mitbringen. Es sind aber auch genug Computer für die max. 18 Teilnehmer vorhanden. Außerdem gibt es natürlich einige VCS-Konsolen mit Harmony-Cartridges, damit die Programme auch auf der Originalplattform getestet werden können.

vcs-ws

Der Workshop ist kostenlos. Aufgrund der begrenzten Platzzahl ist eine vorherige Anmeldung allerdings unbedingt erforderlich. Bitte per E-Mail an mich. Weitere Informationen gibt es auf der Facebook-Seite.

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.

Signetics 2650: Infos and Software:


The Signetics 2650 – The MESSUI Place

Verlaufsformen

Morgen halte ich ab 18 Uhr im Kolloquium “Medien, die wir meinen” einen Vortrag aus meine Forschungsprojekt:

Die Frage, ob und wie Medien die Wirklichkeiten ihrer Nutzer konstruieren ist, betrachtet man sie nicht bloß als soziologisches Problem, eine zentrale Frage jeder Medienepistemologie. Denn in der medialen Konstruktion von Wirklichkeit schreibt sich das Medium immer schon ein, weshalb die Analyse des Konstruktes immer auch eine Analyse des Mediums sein muss. Ausgehend von einer frühen sprachlichen Beschreibung eines physikalischen Vorganges aus der Kinetik (“Der springende Punkt”) durch Aristoteles wird über drei theoretische Scharniere (S. J. Schmidt, F. Kittler, C. Pias) ein Sprung in die zweite Hälfte des 20. Jahrhunderts unternommen, in welchem Analog- und Digitalcomputer mit der “Beschreibung” desselben physikalischen Vorgangs betraut wurden, diesen jedoch nicht mehr nur in (programmier)sprachliche Codes kleiden, sondern ihn ihren technischen Aprioris unterwerfen. Im Vortrag wird die unterschiedliche “Simulationstätigkeit” desselben physikalischen Vorgangs durch fünf Sprachen demonstriert: die menschliche Sprache, die analog-elektronische Schaltung (auf dem Telefunken RA-742), die Implementierungen in 68k-Assembler/C (auf dem Commodore Amiga), Locomotive BASIC (auf dem Amstrad CPC) und 6507-Assembler (auf der Atari VCS). Dabei wird en passant versucht zu zeigen, warum solche Demonstrationen stets in Echtzeit erfolgen müssen (und damit an ein “Medientheater” gebunden sind) und – im Hinblick auf ein laufendes Buchprojekt -, wie die jeweiligen Simulationen das Wissen um die Grenzen und Möglichkeiten des Computers in der “Retrospektive” nutzbar machen.
Dauer ca. 60 Minuten mit vier unterschiedlichen Simulationsdurchläufen in Echtzeit – danach: Diskussion

point

Wie ist der Vektor, Victor?

Gestern trat – als Ersatz für Claus Pias, der wegen universitärer Verpflichtungen leider verhindert war, der Linzer Hobby-Programmierer Norbert Kehrer in der Vortragsreihe auf und sprach dort über die Emulation von Spielautomaten-Spielen für 8-Bit-Homecomputer. Am Beispiel von “Asteroids” zeigte er die Schwierigkeiten, die Automaten-Hardware in Software abzubilden – denn der “Asteroids”-Automat verfügt über einen Vektormonitor, der über eine spezielle Hardware den Kathodenstrahl direkt steuert (anstatt der Rasterzeilen-Steuerung bei “herkömmlichen” Aracade-Automaten). Die Emulation der Vektor-Hardware war daher auch die große Herausfordernung, die Norbert Kehrer auf zwei Homecomputer (Atari 800 und C64) ganz unterschiedlich bewältigen musste – weil deren Rasterbildschirm-RAMs ganz unterschiedlich funktionieren. So war also nachzuvollziehen, wie zwei mathematisch ganz unterschiedliche Episteme ineinander überführt wurden und wie sich die Vektormathematik im diskreten Zahlenraum des Bildschirmspeichers abbilden lässt.

P.S.: Ein Besuch der Webseite von Norbert Kehrer lohnt sich: Dort finden sich eine Menge Emulatoren – für die ausgefallendsten Systeme (etwa den Mailüfterl-Großrechner oder die PDP-8, die auf einem 8-Bit-Atari emuliert wird)!

Display Lists

Der gestrige Vortrag in der Reihe SHIFT – RESTORE – ESC von Berthold Fritz beschäftigte sich mit der Assemblerprogrammierung eines Spiels für Atari-8-Bit-Computer. Die Konzentration lag vor allem auf den Grafikfähigkeiten – aber auch die Frage, welche Faktoren bei der Auswahl der Programmiersprache und des Editors eine Rolle spielen, wurde verhandelt. Der Vortrag ist jetzt bei YouTube einzusehen:

Lehre im kommenden Wintersemester

Im kommenden Wintersemester gebe ich wieder drei Lehrveranstaltungen – mit dem Unterschied, dass eine davon sowohl für Bachelor- als auch Master-Studenten geöffnet sein wird: Der Assemblerkurs.

Master-Studium: Modul II („Mediengeschichte“) – geöffnet für Kulturwissenschaft MA, Mittwochs 10-12 Uhr im Signallabor
Titel: Hacking als Kulturtechnik. Innenperspektiven deutscher und internationaler Hackerszenen der 1970er- und 1980er-Jahre.

Bachelor-Studium: Modul I („Einführung in die Medienwissenschaft“) sowie Modul I Musik & Medien, Donnerstags, 10-12 Uhr im Signallabor
Titel: Spiel, Maschine! Spielkonsolen der ersten vier Generation aus der Sicht der Medienarchäologie.

Master-Studium: Projekt- und Praxismodul sowie Bachelor-Studium: Modul VI („Projektmodul“), Donnerstags, 18:00-20:00 Uhr im Signallabor
Titel: Signetics 2650 Programmier-Workshop (Teil 1/4)
Zu dieser Lehrveranstaltung sind auch externe Gäste herzlich eingeladen!

Plakat_signetics-Assembler

Hier geht es zu den Detailbeschreibungen:

(mehr …)