SimulationsRaum Rotating Header Image

Porgrammiersprachen

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.

The Ace of Jupiter

Einer der frühen Mikrocomputer, die ich schon seit langem auf meinem Wunschzettel habe, ist mir jetzt bei ebay in die Fänge gegangen: Der Jupiter Ace von der Firma Jupiter Cantab. Der Rechner, der nicht ohne Grund vom Aussehen an Sinclairs ZX-80 und ZX-81 erinnert, ist spartanisch ausgestattet: Z80A mit 3,25 MHz, 3 Kilobyte RAM, Gummitastatur und 8 KB ROM. Diese haben es allerdings in sich: Ein komplettes Forth-System. Der Jupiter Ace war einer der wenigen Homecomputer, die nicht mit BASIC ausgestattet waren.

Forth, ebenfalls eine imperative Sprache, ist konkatentativ: Man programmiert sie, indem man den Grundwortschatz erweitert. Erfunden wurde sie 1970 von Charles H. Moore (ursprünglich zur Steuerung eines Teleskops.) Mit Forth verband sich die Hoffnung, eine schnelle, sehr kompakte und sichere Programmiersprache für kleine Systeme (insbesondere Microcontroller) zur Verfügung zu haben. Heute wird Forth immer noch gepflegt und implementiert … allerdings nicht mehr in dem Maße, wie in den 1970er- und -80er-Jahren.

$_57

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 …)

Jupiter Ace

Nach vielen gescheiterten Versuchen ist es mir vor 3 Wochen endlich geglückt, einen der selteneren und exotischeren Homecomputer der 1980er-Jahre bei ebay zu ersteigern: den Jupiter Ace.

Die Besonderheit dieses spartanisch ausgestatteten, mäßig gut designten und billig verarbeiteten Rechners ist, dass seine Erfinder die Vision hatten, der seinerzeit allgegenwärtigen Programmiersprache BASIC etwas entgegen zu stellen – nämlich ein FORTH-System.

(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.

»Wir waren Lehrer, keine Unternehmer«

Ein Interview mit dem Erfinder von BASIC*

Thomas E. Kurtz und sein 1992 verstorbener Kollege John G. Kemeny haben 1964 die Programmiersprache BASIC am US­-amerikanischen Dartmouth­-College aus der Taufe gehoben. Ziel war es, auch Nicht-Informatikern den Zugang zum Computer als Programmierwerkzeug zu ermöglichen. Über Jahre hinweg entwickelten sie ihre Sprache wei­ter, lehrten Generationen von Studenten Programmieren. Seine wah­re Breitenwirksamkeit bekam BASIC jedoch erst mit dem Auftauchen der Mikrocomputer Mitte der 1970er-­Jahre. Stefan Höltgen sprach mit Thomas E. Kurtz anlässlich des anstehenden 50. Geburtstags sei­ner Erfindung über die Anfänge, die Besonderheiten und seine Sicht auf das Homecomputerzeitalter sowie die Zukunft von BASIC.

(mehr …)

Time Invaders – mitgeschnitten

Ich hatte ja schon befürchtet, mein Vortrag auf dem letzten VCFB zu „Space Invaders“ sei im Digitalfilm-Nirvana verschwunden. Es hat ihn wohl aber doch jemand gefilmt:

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

Open (the) Architectures!

In letzter Sekunde wurde ich dankenswerterweise von meinem Kollegen Nikita Braguinski auf einen Call for Applications für die Konferenz „Object Lessons and Nature Tables: Research Collaborations Between Historians of Science and University Museums“ am 23.09.2016 an der University of Reading (England) hingewiesen. Kurzerhand habe ich mich mit einem Hands-on-Vortrag beworben, der angenommen wurde.

Das Abstract:

(mehr …)

Schiffe (ver)raten

Im November 2011 entstand im Rahmen meines BA-Seminars „It’s more fun to compute!“ neben dem hier bereits mehrfach erwähnten „Tennis für Drei“ auch ein Spiel für Digitalcomputer: Eine einfache Schiffe-Versenken-Variante, die ich zusammen mit den Studierenden des Kurses sukzessive aus einem Algorithmus für „Zahlenraten“ entwickelt habe. Die Idee dahinter war, das Raten eines Punktes (einer Zahl) auf einer Linie (dem eindimensionalen Zahlenstrahl der natürlichen Zahlen im Intervall N[0,100]) auf eine zweidimensionale Fläche auszudehnen. Der Punkt wird darauf mit zwei Koordinaten lokalisiert.

schiffe-versenken.bas

Der unten aufgeführte Codes ist in der Sprache Chipmunk-BASIC formuliert. Eine Erweiterung hätte noch den Gegenzug des Computers, weitere zu treffende Objekte usw. berücksichtigen sollen. Insbesondere für den ersten Punkt wurde im Kurs bereits der Algorithmus für eine Heuristik des Zahlenratens (eine Rate-KI) formuliert, der auf sukzessive Neueingrenzung des Rate-Intervalls mittels divide and conquer basiert.

(mehr …)

Keyboards

Gestern habe ich RESUME im OCM vorgestellt und dabei einen computerarchäologischen Rundgang durch das Museum geleitet. Das Thema waren Tastaturen.

Typing tokens @ VIC-20 (Foto: Thiemo Eddiks)

Typing tokens @ VIC-20 (Foto: Thiemo Eddiks)

 

Terminal an der PDP-8 (Foto: Thiemo Eddiks)

Terminal an der PDP-8 (Foto: Thiemo Eddiks)

END:?

Morgen um 13:05 Uhr strahlt Deutschlandradio Kultur im Rahmen der Sendung „Breitband“ ein Interview mit mir aus. Darin geht es um die Frage, ob wir in einer Zeit angelangt sind, in der angesichts evolutionärer Algorithmen, neuronaler Netze und maschinellen Lernens der Computercode sein Ende gefunden hat.

Die Sendung ist live oder über das Audio-Archiv (auch als Einzelbeitrag) zu hören.

EDIT: Das Interview ist nun über das Audio-Archiv verfügbar:

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 …)

BASIC-Programm-Gewinnspiel

Zur Veröffentlichung unseres ersten Bandes RESUME der Reihe „Computerarchäologie“ veranstalten wir, die Herausgeber, ein Gewinnspiel und suchen BASIC-Programme für Homecomputer. Verlost werden drei Exemplare des Buches. Außerdem erhält jeder, der ein (eigenes) Listing zur Veröffentlichung einreicht, eine Freikarte für das Oldenburger Computermuseum, dessen Katalog das Buch ja gleichzeitig darstellt.

Gewinnspiel

How to do things with keys

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

Tiefe Anblicke

Vor 2 Wochen habe ich das Oldenburger Computer-Museum besucht, um einem Vortrag und Workshop über die Geschichte des maschinellen Rechnens beizuwohnen und letzte Absprache vor der Drucklegung des Katalogs zu treffen.

Die Nordwest-Zeitung hat einen Pressevertreter geschickt, der thematisch zwar nachlesbar etwas überfordert war, mich zusammen mit dem Workshop-Leiter und seiner Freundin aber immerhin vor einem dysfunktionalen, nicht angeschlossenen aber zugegeben sehr fotogenen DEC-VT-100-Terminal abgelichtet hat.

RESUME

resumeIn Kürze geht mein neues Buch „RESUME – Hands-on Retrocomputing“ in Druck. Darin werden die wichtigsten klassischen 8- und 16-Bit-Computer historisch, technisch und in ihrer Programmierung vorgestellt. Das Buch wird zugleich der Katalog zum Oldenburger Computermuseum sein; die darin abgedruckten BASIC-Programme sollen die Museumsbesucher zum Experimentieren mit den Rechnern einladen. In Zwischenkapiteln wird über die Geschichte einzelner Firmen, maßgeblicher Technologien und Definitionen informiert.

Das Buch wird als Paperback im Bochumer Projektverlag erscheinen und zugleich die von Sebastian Bach und mir dort neu gegründete Reihe „Computerarchäologie“ einleiten. (In dieser Reihe sollen künftig jährlich zwei Bücher zum Thema Computergeschichte, Retrocomputing und ähnliches verschiedener deutscher und internationaler Autoren publiziert werden.)

Aufmachung, Umfang, Erscheinungsdatum und Preis sind noch nicht gänzlich geklärt. In Kürze informiere ich aber hier im Blog, auf der Projektseite und der Fachebook-Seite von „Computerarchäologie“ darüber.

Game Circuit #14: Sprach(-)Spiele

Gegenstand der Sitzung ist das vielfältige Verhältnis von gesprochenen und geschriebenen, natürlichen und formalen Sprachen zu Computern und ihrer Geschichte – natürlich unter besonderer Berücksichtigung des Computerspiels. Mit zahlreichen, spielbaren Implementierungen auf 8- und 16-Bit-Systemen.

Epistemologisch steht folgendes auf dem Spiel(plan):

1. Katetorie „Speak & Spike“:
Intellivision: Intellivoice-Spiele
TI 99/4a: Parsec
Vectrex: Spike
Fundus-Schachcomputer: Schach
Commodore Amiga: Chessmaster 2000
Texas Instruments: Speak & Spell

2. Katetorie „Chomsky-Hierarchie 0“:
TRS-80 Model 1: Eliza
Commodore C64: Little Computer People
IBM 5155: Collossal Cave Adventure
Exidy Sorcerer: Hang Man in BASIC zum Abtippen

3. Katetorie „Take-off der Signifikanten“:
Sol-20: Target
Commodore PET 2001: Artiellery (PETSCII Game)
Atari XL: Blue Max (mit Blockgrafik-Bug)
Power-Mac: VVVVVV

Wir stellen hier erstmals unsere jüngst restaurierten und reparierten Hardware-Klassiker operativ aus!

Vorab gibt es einen Vortrag von Christoph Borbach und mir.

gamecircuits14

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