SimulationsRaum Rotating Header Image

Assembler

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!

Lehrveranstaltungen im Wintersemester

Zu meiner freudigen Überraschung bin ich im August eingeladen worden am Institut für Medienwissenschaften der Universität Paderborn die Professur für Medien, Algorithmen und Gesellschaft im Wintersemester 2016/17 zu vertreten.

Zu meinem dortigen Deputat gehören 4 Seminare, die ich zwischen Bachelor- und Master- im Medienwissenschaften- und Informatik-Studium gebe:

(mehr …)

Flappy Bird @ VC-4000 @ Classic Computing

Zwischen 2013 und 2015 habe ich mich in 4 Seminaren zum Signetics-2650-Assembler mit der Programmierung der frühen Computerspielkonsole VC-4000 von Interton befasst. In einer Gruppenarbeit sollte für diese Konsole ein neues Spiel entstehen – das erste seit 1982 – nämlich „Flappy Birds“. Nachdem wir die Charakter-Animation, die Steuerung und sogar die Hintergrundmusik bereits fertig hatten, wollten wir uns an die Programmierung der Röhren-Animation machen, die aus der für den Video-Chip typischen „Gittergrafik“ bestehen sollte. Hierbei haben wir dann festgestellt, dass es erhebliche Unterschiede zwischen dem von uns verwendeten VC-4000-Emulator und der Original-Hardware gibt, die dazu führten, dass Algorithmen, die im Emulator fehlerlos liefen, auf der Konsole nicht funktionierten. Um uns den zeitaufwändigen und sich ständig wiederholenden Prozess von „Programmieren – Assemblieren – EPROM-Brennen – Testen – EPROM löschen – …“ zu ersparen, sollte zunächst ein Multi-ROM-Modul, konstruiert werden, auf dem man Programm-Binaries einfach auf einer SD-Karte speichern kann, um sie von dort in die Konsole zu laden.

Dieses Modul ist nun seit einiger Zeit fertig und gerade wird eine professionelle Platine dafür konstruiert, die dann zum Selbstkostenpreis erworben werden kann. Alle notwendigen Teile lassen sich im Elektronik-Einzelhandel besorgen; die Software, alle Schaltpläne und Informationen befinden sich auf GitHub. Dort ist auch der Stub unseres „Flappy Birds“-Versuchs zu finden.

Gestern habe ich nun erfahren, dass sich ein anderer deutscher Hobbyist ebenfalls an die Programmierung des Spiels gemacht hat und dabei Erfolg hatte. (Er hat den oben geschilderten, zeitaufwändigen Entwicklungsprozess nicht gescheut). Anstatt der Gitter-Grafik bentutz er für die Hindernisse Sprites. Davon kann er zwar nur zwei gleichzeitig auf den Bildschirm bringen; diese Entscheidung liefert ihm aber 50 Byte mehr RAM-Speicher und zudem eine weniger „ruckartige“ Bewegung der Röhren. Elegant ist der „Durchlass“ zwischen dem oberen und unteren Rohr gelöst: Ein Sprite-Flag erlaubt die vertikale Spiegelung eines Sprites, so dass nur eine Hälfte gezeichnet werden muss. Das Ergebnis hat er für YouTube gefilmt:

Außerdem bietet er den Sourcecode, der Teile unseres unvollständigen Spielcodes enthält, sowie ein ROM-Image des Spiels zum Download über seine Homepage an.

Wer sowohl das fertige Multi-ROM-Modul als auch das spielbare Spiel sehen möchte, kann am übernächsten Wochenende nach Nordhorn zur „Classic Computing“ kommen – dem Jahres-Event des „Vereins zum Erhalt klassischer Computer e.V.“ Dort habe ich einen Stand (auf dem ich unseren restaurierten Sol-20 vorführe) und Mario Keller, einer der Mitentwickler des Moduls sowie der Spiel- Entwickler „Senildata“ werden ebenfalls dort sein.

Return to Fractalus

Nächstes (oder übernächstes) Semester gebe ich ein Seminar zur Geschichte, Theorie und Implementierung von Fraktalen auf Computern. In diesem Zusammenhang wurde ich heute auf eine Sammlung extrem kleiner Mandelbrot-Fraktal-Programme aufmerksam gemacht. Darunter befindet sich nicht nur ein 64 Byte großer Algorithmus in Assembler, sondern auch ein Apfelmännchen-förmiges Fraktal-Programm in C.

FraCtal

Tennis 2650

In seinem Essay Children of the Revolution. Video-Spiel-Computer als Kreuzungen der Informationsgesellschaft (print|online) berichtet Claus Pias von frühen Tennis-Computerspielen. Neben einer apokryphen Whirlwind-Demo und dem berüchtigten „Tennis for Two“ schildert er eine experimentelle Implementierung aus dem Jahr 1960, die auf einer IBM 704 vorgenommen wurde:

Weitere zwei Jahre 1960, war eine dritte Art von Ballspiel zu sehen, das Studenten des MIT für den IBM 704 geschrieben hatten. Dieser besaß eine Kette von Kontrollämpchen, über die die Funktionsfähigkeit einzelner Bauteile getestet werden konnte. Das Programm bestand nun darin, die einzelnen Teile des Rechners in einer bestimmten Reihenfolge zu testen, um so die Lämpchen nacheinander aufleuchten zu lassen und einen wandernden Lichtpunkt zu erzeugen, der rechts verschwand um links sofort wieder zu erscheinen. Drückte man dann pünktlich beim Aufleuchten des letzten Lämpchens eine Taste, so kehrte der Lichtpunkt seine Laufrichtung um, schien abzuprallen und zurückzuwandern. Die Kontrolltafel des 1BM704 war zu einer Art eindimensionalem Tennisspiel geworden. (S. 218f. der Printversion)

Wenn Computerarchäologie nicht bloße Archivarbeit sein will (über weitere Hinweise zum IBM-704-Tennisspiel würde ich mich übrigens sehr freuen!), die solche Fundstücke als Historeme birgt, sondern ihre Monumente in Vollzug setzt, um deren informatische Aspekte kennenzulernen, scheint es angebracht, dieses Experiment nachzuvollziehen. Dies habe ich in einem Assembler-Brückenkurs im Frühjahr 2014 gemacht. In 14 Tagen sollten Programmieranfänger den Signetics-2650-Assembler für den Lehrcomputer Instructor 50 erlernen, um sich im darauf folgenden Sommersemester in den laufenden Assemblerkurs einschreiben zu können. Der von Pias entdeckte „frühe[] und reine[] Hack“ (Die Pflichten des Spielers, S. 323, print|online) schien mir – gerade, weil der Instructor 50 neben seiner 7-Segment-Anzeige lediglich noch über eine binäre LED-Ausgabe verfügt, ideal, um das historische Vorbild nachzuprogrammieren.

Im Folgenden der Signetics-2650-Assembler-Sourcecode für ein Leuchtdioden-Tennisspiel für den Instructor 50:

(mehr …)

How to do things with keys

Nun ist auch die englische Version meines Vortrags zum „Programmieren als Geste“ erschienen und kann hier abgerufen werden.

Game of Memories 1.0

Das hier, hier und hier bereits vorgestellte Programm „Game of Memories“, das ich im Zuge meines Signetics-2650-Assemblerkurses geschrieben habe (und das von Thomas Nückel debugged und erweitert wurde) ist nun in der finalen Version 1.0 von der Webseite des Signallabors zu laden. In der ZIP befindet sich neben dem Sourcecode (als .asm-Textdatei) auch eine .COS-Datei, die ein Binary für den 2650-Emulator „WinArcadia“ darstellt. Nur in diesem Emulator kann das Programm auch „zeigen“, was es tut, denn der kleine „Game of Life“-Klon operiert ausschließlich in einer 256 Byte großen RAM-Bank des „Instructor 50“, die er als Monitor „missbraucht“. Damit wird zum einen auf den epistemologischen Unterschied der Emulation gegenüber einer Originalhardware hingewiesen; zum anderen ruft das Programm als computerarchäologisches Re-Release die Geschichte des CRT-Computermonitors in Form einer Williams-Tube-Inszenierung auf.

gom

Lehre im Sommersemester 2016

Meine Lehrveranstaltungen im Sommersemester 2016

  • Hands on Commodore 64! Archäologie einer Computer-Plattform (BA Modul 1)
  • Artefakte des Medienarchäologischen Fundus (BA Modul IX)
  • Grafik- und Soundprogrammierung in Assembler (BA/MA Projektmodul)

(mehr …)

Erfahrung seit 1981

Interview mit Thomas Landgraf über »Sex Games« am C64*

Eines der bekanntesten Sex-Spiele für den C64 war fraglos »Sex Games«. Eine komplette Generation pubertierender Spieler hat sich durch das Spiel, das nach dem »Decathlon«-Prinzip gespielt werden musste, Handgelenke und Joysticks ruiniert, um von einer Stellung zur nächsten zu kommen. Dass sich die Programmierschmiede Landisoft damals aus zwei ebenfalls recht jungen Männern zusammensetzte, den Brüdern Thomas und Markus Landgraf, ist seit einem Spiegel-Interview auch der breiteren Öffentlichkeit bekannt. Unser Autor Stefan Höltgen hat sich noch einmal mit Thomas Landgraf, der heute in Kassel eine IT-Firma leitet, über die Geschichte des Spiels und seine Anfänge als Programmierer unterhalten.
(mehr …)

Logik-Jumper

Im Rahmen des letztsemestrigen Assembler-Programmierworkshops zum Motorola 6809 ist ein Spiel als Projekt eingereicht worden, das nun der Öffentlichkeit vorgestellt werden kann. Es handelt sich um „The J Game“ von Jan Haasch, einem Master-Studenten der Wirtschaftsinformatik an der HU Berlin. Das kleine Spiel für die MB Vectrex stellt die Rudimentärform eines Jump’n’Run-Games dar, bei dem eine Spielfigur über von der Seite herein scrollende „Mauern“ springen muss. Der Schwierigkeitsgrad (Anzahl und Abstand der Mauern, Scrollgeschwindigkeit) erhöht sich dabei sukzessive innerhalb eines Levels und von Level zu Level.

(mehr …)

Time for Medien ∩ Wissenschaften

In Kürze findet der Workshop „Medien ∩ Wissenschaften“ bei uns im Signallabor statt, bei dem zusammen mit Natur-, Ingenieur- und Geisteswissenschaftlern ein Lehrbuch für Medienwissenschaftler konzipiert werden soll.

Mittlerweile gibt es auch eine Timeline für die Vorträge:

(mehr …)

Lehre im Sommersemester 2015

Im Sommersemester gebe ich zwei Lehrveranstaltungen:

(mehr …)

VC-4000 Flash-ROM

In den vergangenen drei Semestern hat sich der Assembler-Kurs, den ich alldonnerstäglich veranstalten, ausschließlich um den Signetics 2650 gedreht. Zunächst wurde die Maschinensprache auf einem Lehr-Computer (Signetics Instructor 50) kennen gelernt. Im zweiten Semester haben wir die Plattform gewechselt und uns um die einzige deutsche Spielkonsole, die Interton VC-4000, gekümmert. Die Finessen des Grafik/Sound-Chips Signetics 2636 (PVI), der seltsamen Speicherverwaltung und insbesondere des von uns verwendeten Emulators „WinArcadia“ haben ihren ganz eigenen Reiz und ihre Probleme verursacht. Die Idee, zusammen einen „Flappy Birds“-Clon für die VC-4000 zu entwickeln, hat sich bis zum Ende des zweiten Kurses nicht umsetzen lassen.

(mehr …)

Call for PAPER

In der neu gegründeten Buchreihe „Computerarchäologie“ soll 2016 ein Buch mit dem Titel „Papiermaschinen“ erscheinen. Dafür benötige ich Hilfe!

Ich such nämlich handschriftlich notierte Programmcodes aus den 1970er- und -80er-Jahren (Programmiersprache egal). Zu dieser Zeit war für Kinder und Jugendliche der Zugriff auf (Heim)Computer nicht jederzeit möglich, so dass etliche Programme auf Papier „vorgeschrieben“ wurden, bevor sie dann später (in Kaufhäusern, bei Freunden, …) in die Computer abgetippt werden konnten.

In dem Buch möchte ich auf diese vergessene Programmierkultur hinweisen. Dazu sollen solche handschriftlichen Programme faksimiliert abgedruckt werden und mit Kommentaren, Hintergrundinformationen zum Programmierer, System und der „Geschichte“ dazu versehen werden. Besonders interessant sind vollständige Programme, sehr gern kurze Listings und wenn dann auch noch „Denkfehler“ darin enthalten sind, die zeigen, wie sich das Programmieren auf Papier von dem auf dem Computer unterscheidet, wäre das ein besonderer Glücksfall.

Sendet eure Listings bitte im Original an mich (ich scanne sie und ihr erhaltet sie unversehrt zurück). Bitte nehmt vorher Kontakt mit mir auf: email@computerarchaeologie.de

Als Dankeschön erhält jeder, dessen Listing aufgenommen wird, ein Belegexemplar des Buches.

VCFe 2014 & 2015

Im vergangenen Jahr haben mein Kollege Thomas Nückel und ich auf dem 15. Müncher VCFe zum Thema „Exoten“ einen Vortrag über unseren Signetics-2650-Workshop gehalten. Dieser ist jetzt als Podcast nachzuhören. Auf dem diesjährigen VCFe ist das Thema „Computer im Osten“. Ich werde wieder dort sein und die Hard- und Soft- und Paperware von Horst Völz vorstellen.

MUL

6809-Assembler

Die NOPs und HALTs digitaler Medien

Just ist ein Beitrag über meine Programmierlehre erschienen:

Stefan Höltgen:
Die NOPs und HALTs digitaler Medien. Programmierlehre maschinennaher Sprachen für Medienwissenschaftler
In: Grundlagen aus Kybernetik und Geisteswissenschaft. Internationale Zeitschrift für Modellierung und Mathematisierung in den Humanwissenschaften.
Band 55, Heft 4, Dez. 2014, S. 139-153.

Link zur Zeitschrift | PDF der Ausgabe 4/2014

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.