Der fertige Joystick

Der fertige Joystick

Dies ist ein Projekt von 2004, auf der alten Schatenseite war es ausführlich beschrieben. Da gab es noch ein paar Bilder mehr, dazu Schaltpläne und eine Beschreibung wie ich den Tastaturcontroller analysiert habe.

Der PS/2-Anschluss von damals ist heutzutage obsolet. Mittlerweile würde ich so ein Projekt auf Basis von Mikrocontrollern machen, und dann per USB an den Rechner gehen. Deshalb lasse ich die Einzelheiten in der Vergangenheit und stelle das Projekt hier nur kurz vor.

Seinerzeit habe ich mich für MAME interessiert, den Multi Arcade Machine Emulator. Damit konnte man — man kann immer noch — auf einem PC die alten Spielhallenklassiker spielen. Eine Tastatur lässt aber nicht das authentische Feeling aufkommen, und so habe ich mir was gebastelt.

Ein Vogelnest

Ein Vogelnest

Die Joysticks waren eigentlich Zubehör für eine Sega Dreamcast Konsole. Ich habe die originale Elektronik rausgeworfen und stattdessen einen Controller aus einer PC-Tastatur implantiert. Dazu musste ich herausfinden wie die Matrix der Tastatur aufgebaut war, und die nötigen Kontakte dann mit den Mikroschaltern im Joystick verbinden. Gar nicht so kompliziert, eigentlich.

Die Kontakte für den zweiten Spieler habe ich auf einen Stecker gelegt, über ein Kabel das eigentlich für eine serielle Schnittstelle gedacht war konnte ich den zweiten Joystick anschliessen. Zusätzlich habe ich eine Y-Weiche gebastelt, damit ich neben den Joysticks auch noch eine richtige Tastatur anschliessen konnte. Irgendwie will so ein PC ja auch bedient werden.

Das Ergebnis war vom Aufbau her nicht schön, aber es hat funktioniert. :-D

Mittlerweile habe ich keinen PC mehr mit einer PS/2-Schnittstelle. Einen Joystick habe ich schon zerlegt und einer anderen Verwendung zugeführt. Aber das ist eine andere Geschichte, und die soll ein anderes Mal erzählt werden…

Siehe auch…

  • MAME – Die offizielle Seite des Arcade-Emulators
  • xMAME – Die Unix- bzw. Linux-Version
  • ArcadeControls – Tips und Anleitungen zum Selbstbau

Ich habe tatsächlich mehrere Tage mit mir gerungen, aber ich fürchte dass die Vernunft gesiegt hat: ich werde mir wohl keinen PiDP-8/I kaufen. Nicht weil ich keinen haben wollen würde. Einfach weil ich in letzter Zeit eine Menge andere Ideen für Spielzeug habe, und (leider?) sind die meisten anderen sinnvoller… :-(

Was es ist? Nüchtern betrachtet ist PiDP-8/I ein Gehäuse für den Raspberry Pi.

Mit etwas mehr Enthusiasmus ist es die Replik eines Bedienteils einer Digital PDP-8, so wie sie in den sechziger Jahren eingesetzt wurde. Einschliesslich der Kippschalter und der Blinkenlights die seinerzeit für die Inbetriebnahme der PDP gebraucht wurden. Und da es einen offenbar brauchbaren Emulator für den Raspberry gibt kann man mit dem Gehäuse tatsächlich erfahren wie es gewesen ist so einen Rechner zu bedienen — wenn man davon absieht dass Programme vom USB-Stick geladen werden statt von einem Lochstreifenleser… :-)

Ich muss nicht erwähnen dass ich ein Faible für Emulatoren habe. Oder dass ich auch gerne mal auf ungewöhnlicher Hardware programmiere. Wie gesagt: ich habe wirklich mehrere Tage gebraucht um mich von dem Kauf abzuhalten…

Ich habe hier ja schon öfter was über Emulatoren geschrieben. Insbesondere fasziniert mich, was sich mittlerweile mittels JavaScript im Browser nachbauen lässt. Auch wenn das vermutlich nie meine Sprache wird: Hut ab für die Möglichkeiten die man da offenbar hat!

Bislang komplett an mir vorbeigegangen ist das Projekt JSMESS. Das ist ein JavaScript-Port von MESS, man kann damit also ein ganzes Museum von alten Rechnern emulieren. Unter anderem auch einen Schneider CPC 464 — meinen allerersten Computer. :-)

Aber zurück zum Titel: MESS ist eigentlich eine Abwandlung von MAME, dem Multiple Arcade Machine Emulator (der mich seinerzeit zu MAME-Control inspiriert hat). Und mit einer JavaScript-Version von MAME hat das Internet Archive jetzt eine Online-Arcade gebaut: in der Internet Arcade kann man hunderte von alten Automatenspielen im Browser daddeln. Timekiller! :-D

Pinball Dreams

Pinball Dreams

Die Reihe wird fortgesetzt: der Scripted Amiga Emulator tut genau was der Name vermuten lässt. Er emuliert einen Commodore Amiga. Und das im Browser, implementiert in JavaScript.
Technisch sind die Amigas in den 80ern zu Hause, trotzdem beeindruckt mich insbesondere auch dieser Emulator. Bei den Dingern ist nicht nur die CPU sauber nachzubauen, da vieles durch spezialisierte Bausteine realisiert wurde. Paula, Denise und Agnus. Das kostet natürlich Ressourcen… die Emulation läuft bei mir zumindest im Firefox gerade eben erträglich schnell. Angeblich bringt Chrome mehr, aber ich bin ein Gewohnheitstier…
Einen Amiga habe ich nie selbst gehabt, aber ich kann mich lebhaft an die eine oder andere Extreme Violence Session bei einem Freund erinnern… :-D

Ich sehe in Sachen Computer gerne mal über den Tellerrand oder in die Geschichte. Einen PC zu programmieren ist ja schon spannend, eigene Programme auf einem Mikrocontroller oder einem HP-42S laufen zu lassen ist aber ein echtes Abenteuer. Sich da rein zu denken ist wie das Eintauchen in eine andere Welt.
Eine Plattform mit der ich immer schon mal spielen wollte ist die PDP-11. Ein echtes Stück Technikgeschichte. Dementsprechend begeistert sehe ich mir gerade einen Emulator an. Geschrieben in… Javascript! In dem Emulator kann man ein Unix starten und benutzen. Emuliert wird auf Hardware-Ebene, mit dem Ding sollte sich also praktisch alles machen lassen was man auch mit der originalen Maschine machen konnte. Wenn auch die Haptik natürlich fehlt…
Ein paar Widrigkeiten der Emulation klärt die FAQ, leider weiß ich aber noch nicht warum alles elendig langsam ist. Klar fühlt sich Technik aus den 70ern anders an als aktuelle, trotzdem habe ich das Gefühl dass das entweder an meiner Hardware oder — wahrscheinlicher — an meiner dünnen Leitung liegt. Ist das überall so langsam?

HP-42S mit Original-SkinOK, als ‚Fortgeschrittenen‘ würde ich mich im Bereich Mathematik nicht sehen. Absolut nicht. Ich kann nicht mal mehr schriftlich multiplizieren, geschweige denn dividieren. Aber dafür weiß ich wie man einen Taschenrechner bedient. Dachte ich… :-)

Bislang habe ich auf dem Computer immer gcalctool benutzt. Das ist übersichtlich und kann eigentlich alles was man so dauernd braucht. Zufällig habe ich vor ein paar Tagen einen Emulator für einen real existierenden Taschenrechner gefunden. Emulator? Für einen verdammten Taschenrechner?!? Ja, genau. Free42 heißt das dann.

Bei dem Vorbild handelt es sich um das Modell HP-42S, das wurde 1988 von Hewlett Packard vorgestellt und — ich glaube — bis 1994 gebaut. Das Ding findet man natürlich im Taschenrechner-Museum von HP, aber auch in der Wikipedia. Ein programmierbarer Taschenrechner, Umgekehrte polnische Notation, etwa 600 eingebaute Funktionen und 7200 Bytes Platz für eigene Programme. Ich weiß nicht warum, aber das hat mich irgendwie fasziniert. Und nicht nur mich: bei Online-Versteigerungen wird das Ding offenbar teilweise mit über 200 Euro gehandelt. Das ist deutlich mehr als der originale Verkaufspreis vor 15 Jahren, als man das noch im Laden kriegen konnte. Der lag soweit ich weiß bei 130 Dollar.

HP-42S PlatzsparenderWie sieht jetzt so ein Taschenrechner-Programm aus? Was kann man damit machen? Man kann damit eine ganze Menge tun, wie man schnell sieht wenn man sich ansieht was es an Beispielen im Netz gibt. Ich habe mir mal das Alternative Manual durchgelesen und losgespielt. Ein Beispiel muss her…

Das erste was ich benutzt habe ist die Solver-Funktion. Dabei programmiert man eine Funktion mit mehreren Unbekannten (z. B. das Ohmsche Gesetz: U=R*I) die man umgestellt hat so dass 0 rauskommt (also U-R*i=0). Dann kann man die Variablen der Reihe nach mit Werten belegen und den unbekannten berechnen lassen. Man gibt also Spannung und Strom an die für eine LED benötigt werden und kriegt direkt den Widerstand, ohne selbst zu rechnen. Oder Man gibt den gewünschten Strom und den Widerstand an und bekommt die Spannung an der das betrieben werden muss. Nett, aber trivial. Ein komplizierteres Beispiel muss her…

Die Aufgabenstellung habe ich aus einem Podcast ueber Leonhard Euler, allerdings habe ich als Laie wohl was falsch verstanden. Wahrscheinlich ging es um die Euler-Mascheroni-Konstante oder um das Basel-Problem, mein Programm ist vermutlich total uninteressant. Trotzdem taugt es als Beispiel. Die Aufgabe besteht darin, die Kehrwerte von ganzen Zahlen zu addieren. Also 1/1 + 1/2 + 1/3 + 1/4 und so weiter. Mittlerweile weiß ich, dass man das auch mit Logarithmen berechnen kann, aber wie angedeutet würde ich da von alleine nicht drauf kommen.

LBL "EULER"
STO 01
0
STO 02
RCL 01
LBL A
1/x
STO+ 02
RCL 01
1
-
STO 01
x>0?
GTO A
RCL 02

Das Programm arbeitet wie folgt:

  • aktuellen Wert des X-Registers (also die letzte eingegebene Zahl) in Speicher 01 sichern
  • 0 in Speicher 02 schreiben
  • Speicher 01 wieder herstellen
  • Sprungmarke A setzen
  • von der wiederhergestellten Zahl den Kehrwert bilden und zu Speicher 02 addieren
  • Speicher 01 wieder herstellen
  • 1 subtrahieren und den neuen Wert wieder in 01 speichern
  • wenn der Wert groesser 0 ist, nach A springen
  • ansonsten das Ergebnis aus Speicher 02 anzeigen

Also quasi folgendes, nur halt im Taschenrechner (und nicht nur fuer 100):

perl -e "$j=0;for($i=1;$i<=100;$i++){$j+=1/$i};print$j;

In einer Tabellenkalkulation habe ich das auch mal gemacht um die Werte zu kontrollieren, aber da kann man das (ohne wirklich zu programmieren) nur bis knapp ueber 60.000 machen, weil dann die Tabelle am Ende ist. Das Ergebnis fuer 999.999.999 ist 21,3004815013 (da hat der Taschenrechner aber auch eine Weile drauf rumgekaut).

Ich bin einfach mal weiter fasziniert, vielleicht konnte ich ja irgendwen anstecken… ;-)