Mein HP-48G

Mein HP-48G

Aus unerfindlichen Gründen bin ich fasziniert von Taschenrechnern. Also weniger vom guten alten TI-30, mehr von den etwas komplexeren Geräten. Ich habe ein paar nette Emulatoren zum spielen gefunden, und mir sogar zwei ‚große‘ gekauft. Einen HP-48G und einen TI-Nspire.

Heute habe ich mal was zu dem Thema auf der Schatenseite veröffentlicht. Das ist — ähnlich wie Mikrocontroller oder Smartphone — wieder eine komplett neue Plattform zum Programmieren. Andere Sprachen, andere Herangehensweise. Ich bin da alles andere als ein Experte. Bis jetzt zumindest. Aber was ich bislang gesehen habe hat mir schon gefallen. :-)

Während Heute das Netz vermutlich von anderen Apple-Bezogenen Nachrichten überschwemmt wird weise ich mal auf eines der coolsten Bastelprojekte hin die mir in letzter Zeit vor den Mauszeiger gekommen sind: den Macintosh SE/arm. Das ist ein Apple Macintosh SE/30 (gebaut zwischen 1989 und 1991) dessen Innenleben ein talentierter Holländer auf ARM-CPU und Linux umgerüstet hat, so dass er das Gerät als Fileserver nutzen kann.

Kern der Maschine ist jetzt ein Seagate FreeAgent DockStar. Das ist ein kleines Linux-System das man eigentlich als NAS benutzt. Darauf läuft Debian, angeschlossen sind zwei Festplatten. Soweit so gut, aber das Gerät sollte wirklich voll funktional bleiben. Samt Bildschirm und Tastatur…

ADB-Tastatur und -Maus kann man vergleichsweise simpel per USB anschliessen (das war nebenbei bemerkt der Grund weshalb ich bei dem Projekt gelandet bin). Sound ist schon eine größere Herausforderung. Was mich aber schwer beeindruckt hat ist die Video-Karte die der Typ selbst entworfen und entwickelt hat. Basierend auf einem weiteren ARM-Prozessor, und tatsächlich in der Lage die alte Röhre des Macs zu befeuern. Das Ding hängt auch per USB an dem DockStar, und dank eines eigens entwickelten Framebuffer-Treibers für den Linux-Kern kann er sogar X darstellen — oder einen Mac-Emulator… :-)

Ich verneige mein Haupt in Ehrfurcht…

Telehack Startbildschirm

Telehack Startbildschirm

Nachdem ich mich letzte Tage über den Emulator einer PDP-11 gefreut habe kommt dieses Projekt wie gerufen.

Bei Telehack handelt es sich nicht direkt um einen Emulator, es ist mehr ein Simulator:

Telehack is a simulation of a sylized arpanet/usenet, circa 1985-1990. It is a full multi-user simulation, including 25,000 hosts and BBS’s the early net, thousands of files from the ero, a collection of adventure and IF games, a working BASIC interpreter with a library of programs to run, simulated historical users, and more.

Erst dachte ich dass das einfach eine weitere coole Methode ist, mit der Z-Machine-Version des Anhalters zu spielen (über Frotz habe ich ja vor Jahren schon geschrieben). Den kann man hier auch einfach starten indem man an der Kommandozeile „zrun hhgg“ eingibt.

Dass es hier viel (viel!) mehr zu entdecken gibt erfährt man wenn ein freundliches „type telehack.txt“ eingibt. Die gleichen Informationen kriegt man auch auf dieser Seite.

Ich fürchte dass man sich mit dem Ding wirklich Tage beschäftigen könnte. Allein der eingebaute Starwars-Film („starwars“ eingeben) könnte eine Menge Zeit fressen. Oder das Usenet-Archiv. Oder die Möglichkeit, auf andere Rechner zuzugreifen — nachdem man sie ‚gehackt‘ hat — oder mit anderen Usern zu interagieren… ich bin wirklich schwer beeindruckt!

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?

Visual 6502

Visual 6502

Am letzten Donnerstag ist ein Meilenstein der Digitaltechnik 35 geworden. Am 16.09.1975 wurde der 6502-Mikroprozessor von MOS Technology vorgestellt.

Das Ding hat in verschiedenen Varianten seinerzeit Geräte befeuert die allesamt einen Platz in der Hall of Fame der Kleincomputer verdient haben. Um nur einige zu nennen: Commodore PET, VC20 und C64 nebst Diskettenstation VC1541, Apple II, die 8-Bit-Computer von Atari, ebenso die Spielekonsolen Atari 2600, NES und SNES.

Ich habe seinerzeit auf einem Schneider CPC464 angefangen. Der wurde von einem Z80 getrieben, hatte also keine Verwandschaften mit dem Geburtstagskind. Bei mir hat 6502-Hardware erst erstaunlich spät Einzug gehalten. Vor etwa zehn Jahren hat mir jemand eine Kiste Computerkram geschenkt. Darin war ein kaputter C64 (den ich dann als Gehäuse für meinen C64@1GHz benutzt habe, eine 1541 die ich auch noch auf Lager habe, sowie ein Atari 2600 in der Darth-Vader-Edition (also ohne Holzimitatgehäuse). Für letzteren habe ich mir dann auch noch ein paar wichtige Spiele besorgt: Pacman, Asteroids und Space Invaders müssen dann schon sein. :-)

Ach ja, und vor zwei Wochen hat bei uns eine Super Nintendo Konsole Einzug gehalten. Knapp 20 Jahre nach Markteinführung kann meine bessere Hälfte jetzt Super Mario World auf dem grossen TFT-Fernseher spielen… :-D

Ach ja, und wer tapfer bis hierher gelesen hat wird durch einen besonderen Link entlohnt: es ist ein wahrscheinlich ebenso sinnlos wie cool, auf jeden Fall ist es aber beeindruckend. Jemand hat sich die Mühe gemacht, einen Emulator für den 6502 zu schreiben. In JavaScript. Mit einer visuellen Darstellung der internen Zustände, will sagen: mit Leiterbahnen die entsprechend der Arbeit des Prozessors eingefärbt werden. Das ganze nennt sich Visual 6502 und ist… einfach nur irre.

Wenn ich mal irgendwann ein Projekt plane bei dem ein Mikrocontroller Laut geben soll, werde ich mich hoffentlich an atmegaSID erinnern. Das ist eine Art Emulator, damit ersetzt ein ATmega8 den Soundchip eines Commodore C64. Dann muss ich nur noch bei Welle: Erdball in Erfahrung bringen, wie man dem ordentliche Klänge entlockt…

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

Spätestens wenn nicht nur von Verschwörungstheoretikern berichtet wird, dass Handys als Wanzen benutzt werden können ist der Zeitpunkt an dem man mal über ein durchschaubareres Mobiltelefon nachdenken sollte. Abgesehen davon ist meine Beobachtung, dass freie Entwickler weniger auf Produktzyklen als auf Features Wert legen, daher könnte ich mir vorstellen dass ein wirklich freies Telefon für einige Überraschungen sorgen kann.

OpenMoko beim BootenHandys mit Linux gibt es schon einige. Allerdings ist es bis jetzt in der Regel so, dass Linux als Kern benutzt wird und eine mehr oder weniger proprietäre Benutzeroberfläche darauf gelegt wird. Außerdem gibt es auch unter den Linux-Geräten noch keines bei dem die Hardware wirklich samt Spezifikationen offen gelegt ist.

Zumindest gab es das bis vor kurzem nicht. Seit ein paar Tagen ist vom Hersteller FIC die Entwicklerversion des Neo1973 erhältlich, mit dem alles anders werden könnte. Ab Oktober soll eine Endkundenversion verfügbar sein, und das wie es im Moment aussieht zu erstaunlich akzeptablen Preisen.

Die Firmware und somit die Benutzeroberfläche kann man aber auch ohne die Hardware ausprobieren, indem man sie auf einem PC installiert. Das geht unter Linux mit einer angepassten Version des Hardware-Emulators Qemu. Auf openmoko.org finden sich die technisch orientierten Seiten des Projektes, da kann man das MokoMakefile herunterladen. Dann reicht ein einfaches ‚make run-qemu‚, und eine Weile später (diese ‚Weile‘ hat bei mir wegen der ISDN-Anbindung und einiger fehlender Pakete etwas länger gedauert…) kann man der Firmware beim Booten zusehen. Das ist für Linux-Nutzer ein gewohnter Anblick, denn abgesehen vom Bildschirmformat sieht es aus wie auf einem großen Rechner.

Wichtiger Kontakt :-)Bildschirmformat ist ein gutes Stichwort: um eine Vorstellung von der Bildschirmauflösung zu bekommen möge man einen der Screenshots auf volle Größe aufklicken. 640 Punkte in der Vertikalen und 480 in der Horizontalen sind wirklich beeindruckend für ein Telefon, besonders wenn man das kleine Format des Bildschirms bedenkt. Ich kann kaum erwarten, das in Natura zu sehen. Nebenbei bemerkt ist die Auflösung damit doppelt so groß wie bei einem anderen bekannten Handy, das im Moment sehr gehyped wird… ;-)

Leider habe ich hier nur vergleichsweise schwache Rechner zur Verfügung. Auf meinem Notebook mit 800MHz und 256MB RAM dauert allein der Bootvorgang mehrere Minuten, auch die spätere Oberfläche ist alles andere als flüssig zu bedienen. Kein Wunder wenn man bedenkt dass da die komplette Hardware emuliert wird, die Software läuft in dieser Konstellation halt nicht nativ auf der PC-Hardware.

Dementsprechend hat die weitere Rumspielerei nicht wirklich Spaß gemacht, auch wenn es sehr interessant gewesen ist. Man muss sich für die Oberfläche an einige Icons gewöhnen, aber das wird nicht lange dauern. Und wenn man nicht nach jedem Tastendruck mehrere Sekunden auf eine Antwort warten muss wird das Erforschen auch wesentlich mehr Spaß machen. Nettes Gimmick, wenn auch vielleicht selbstverständlich: Bestandteil der Software ist natürlich ein Terminal in dem man eine Shell öffnen kann. Sogar ein vi ist drauf. Leider kein vim, aber über die Bildschirmtastatur ist das eh nicht das was man den ganzen Tag benutzen will… ;-)

Auf openmoko.com finden sich auch eine Menge Bilder und Informationen über das Neo1973, ich überlege noch ob ich mir das direkt im Oktober leisten sollte… das ist aber mehr eine Frage der persönlichen Finanzplanung, weniger des Interesses. Wenn es danach ginge würde ich sofort zuschlagen.

Wer alte Spiele vom C64 nochmal erleben möchte, ohne sich aufwendig einen C64 oder einen entsprechenden Emulator zu installieren, wird bei c64s.com fündig: Die Spiele lassen sich ohne weitere Installation direkt im Browser starten. Mich würde die Technik dahinter interessieren: Gibt es einen freien Emulator als Java-Applet?