Der HP 25 Simulator

Durch den von Larry Leinweber in Java geschriebenen HP-25 Simulator kann ich erstmals so richtig von den tollen Eigenschaften eines HP-Taschenrecher live blubbern. Toll! Danke auch an Larry, dass er mir die freundliche Genehmigung erteilt hatte, den Simulator hier zu nutzen. Zum ersten mal habe ich übrigens den Simulator im HP-Museum gesehen.

  • So nun dazu wie man ihn nutzen kann.
  • Um den Taschenrechner zu nutzen, muss man mit der Maus auf die Tasten klicken und die Schieber betätigen.
  • Die Simulation sollte sich exakt wie ein richtiger HP25 verhalten – außer bei der Genauigkeit (double Genauigkeit) und bei der Berechnung von großen Winkeln (die werden auf Null gesetzt).
  • Der Taschenrechner ist programmierbar (Beispiel unten).
  • Die unter dem Mauszeiger liegende Taste wird in der Titelzeile in eckigen Klammern angezeigt. Dies ist insbesondere bei den blauen („g“-) Tasten sinnvoll.
  • Der Applet-Code ist Public Domain.

Nach dem Erscheinen der R/S – Taste kann das Applet mit einem Klick darauf gestartet werden. Wichtig ist auch, dass der Browser und evtl. die Firewall Java-Applets erlaubt – sonst klappt’s nicht.

***JAVAAPPLETT***

Zum Start auf die R/S Taste clicken, damit der Taschenrechner gestartet wird.

Starten mit UPN

Erste Schritte

Um ein bisschen zu spielen kann man das Applet starten und auf die linke Bildschirmseite schieben, um auf der rechten diese Zeilen quasi-Parallel sich ansehen zu können (ich als kleiner Lehrer habe natürlich den Vorzug, dass ich einen realen HP25 besitze, den ich nicht mehr simulieren muss, also den ganzen Bildschirm zur Verfügung habe).

OK, nach dem Start des Applets sollte der Rechner eingeschaltet sein und sich im Run-Modus befinden (linker Schieber auf ON, rechter RUN).

Nun können wir ein erst mal ein bisschen Spielen. In der UPN (Umgekehrte Polnische Notation) ist die Eingabereihenfolge definiert als:

  1. Eingabe: Operanden
  2. Eingabe: Operationen

Bei der Funktion Sinus ist das klar: Man gibt 30 ein und drückt dann die f und sin -Taste.

Bei der Operation + ist aber unklar, wie man dem Rechner beibringen soll, dass nun 123 zum ersten Operanden und 456 zum zweiten gehört. Aber sicherlich ist den meisten schon die große Enter-Taste aufgefallen mit der man die Operatoren voneinander trennt. Nun kann man nach obiger Definition eingeben:

  1. Operand1
  2. Enter zur Trennung der Operanden
  3. Operant 2
  4. Operation (z.B. +, -, *, /, y^x)

Möchte man weitere Operationen durchführen, braucht man keine weiteres Enter eingeben, da die Zahlen durch die letzte Operation schon voneinander getrennt wurde. Möchte man zu dem obigen Beispiel noch 789 zum den ersten beiden Operanden hinzuaddieren, würde man dies wie folgt eingeben:

  1. Operand1
  2. Enter zur Trennung der Operanden
  3. Operant 2
  4. Operation (z.B. +, -, *, /,  y^x)
  5. Operant 3
  6. Operation (z.B. +, -, *, /,  y^x)

Der Stack

Zum Verständnis des Rechners muss man sich unbedingt mit der Funktionsweise des Stack auseinander setzen. Der Rechner bildet die Eingaben auf einem Stapelregister, dem Stack ab. Dieser ist durch vier Register wie folgt aufgebaut:

Register

Inhalt

t 0.00
z 0.00
y 0.00
x 0.00

Mit diesen Register können nun alle Probleme gelöst werden, die es zu rechnen gibt – es klingt unglaublich, ist aber wahr!

Wie funktioniert nun das Ganze? Der Taschenrechner hat nur eine Anzeige, er zeigt ausschließlich das x-Register an (Ausnahmen gibt es natürlich: Die ersten Tischrechner zeigten alle drei (die ersten hatten noch kein t-Register) oder vier Register an, der HP 28 und 48 haben einen unendlichen Stack, von denen je nach Inhalt 1-4 Stufen angezeigt werden).

Nun soll einmal 5*6 (= 30) berechnet werden:

Register

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

t 0.00   0.00   0.00   0.00   0.00
z 0.00   0.00   0.00   0.00   0.00
y 0.00   0.00   5.00   0.00   0.00
x 0.00 5 5.00 Enter 5.00 6 0.00 * 30.00

Nun folgt mal was komplizierteres: Meine oft zitiertes Beispiel der Paralellschaltung von Widerständen, die sich mit den Werten 5 Ohm für R1 und 6 Ohm für R6 berechnet nach:

R1*R2 =

5*6

= 2,7273

R1+R2 5+6

Vorausgeschickt muss hier allerdings werden, dass der HP keine Rechenvorschriften wie Punkt vor Strich oder Klammerung beherrscht, man muss darauf selber achten – was angesichts der Ausrichtung dieser Maschinen kein Problem darstellen sollte.

Zunächst würde die 5*6 (=30) aus dem Zähler berechnet werden.

Register

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

t 0.00   0.00   0.00   0.00   0.00
z 0.00   0.00   0.00   0.00   0.00
y 0.00   0.00   5.00   5.00   0.00
x 0.00 5 5.00 Enter 5.00 6 6.00 * 30.00

Jupp, hat geklappt, auch das Zwischenergebnis ist nun sichtbar! Nun kann der Nenner mit 5+6 (=11) berechnet werden.

Register

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

Eingaben

Inhalt

t 0.00   0.00   0.00   0.00   0.00
z 0.00   0.00   30.00   30.00   0.00
y 0.00   30.00   5.00   5.00   30.00
x 30.00 5 5.00 Enter 5.00 6 6.00 + 11.00

Im Stack stehen jetzt der Zähler und der Nenner übereinander, das Teil-Ergebnis des Nenners kann abgelesen werden. Man kann diesen Bruch nun durch eine Division teilen:

Register

Inhalt

Eingaben

Inhalt

t 0.00   0.00
z 0.00   0.00
y 30.00   0.00
x 11.00 / 2.73

Und zapp, das Ergebnis ist auch da.

Übrigens: Das t-Register im Stack hat übrigens eine Sonderfunktion: Es kann kopiert sich selber nach unten. Wenn man 20 mal 8 addieren möchte, schiebt man durch ein dreimaliges Drücken der Enter – Taste die Zahl 8 in das t-Register. Nun kann man 20 mal (oder nach belieben öfter) „+“ drücken.

UPN Teil 2 – Stackspielchen

Bruchrechnen

Im obigen ist gut sichtbar, dass man die vier Register des Stacks recht schnell verbrauchen kann. Hierzu kann man natürlich auf die auch von anderen Taschenrechnern bekannten Register zurückgreifen, was jedoch die Vorteile von UPN wieder zunichte machen würde.

Es gibt aber ein paar wichtige Befehle zur Stack-Manipulation, die wichtigsten sind: XY (damit werden die X und Y Register getauscht), Last X (damit wird das letzte X-Register wieder hergestellt, und Rv (R Pfeil nach unten, damit wird der Stack nach unten gerollt).

Mit diesen Befehlen und einer Strategie, die Formeln von innen nach außen Auflöst, sollte man eine ganze Weile mit dem Stack hinkommen.

Es soll folgender Bruch aufgelöst werden:

2+3
4+5*sin(6+7*8)

Hierzu fängt man (nach einiger Zeit zielstrebig) mit 7*8 an, addiert 6 hinzu, Berechnet den Sinus, multipliziert den mit 5 und addiert 4 hinzu. Danach wird der Zähler mit 2+3 aufgelöst. Zuletzt wird entweder mit xy der Bruch gedreht und danach dividiert oder dividiert und danach der Reziprokwert mit 1/x ausgegeben. Genial, nicht?

 

Ein kleines Progrämmchen – in UPN

Zum Schluss möchte ich ein kleines Prögrammchen zur Berechnung des Paralellwiderstandes in den Rechner eingeben. Nach obigen Beispiel würde sich dieser mit:

R1*R2 =

5*6

= 2,7273

R1+R2 5+6

Berechnen. Zur effektiven Eingabe sollte der User 5 und (Enter) 6 auf den Stack eingeben und danach die Run-Stop Taste R/S drücken, ausgegeben werden sollte dann 2,73.

Und los geht’s:

Den Rechner mit dem RUN-PROG Schieber in PROG stellen, jetzt sollte „00“ im Display stehen. Nun kann das Programm eingegeben werden. Eine Bemerkung zur Anzeige: Ganz links steht die Programmzeile, auf der rechten Seite stehen die Tastendrücke als Koordinaten der entsprechenden Taste, die STO-Taste befindet sich in der 2. Zeile und ist dort die 3. Taste, daraus Resultiert die 23. Der HP 25 ist übrigens der erste Rechner von HP (und auch lange vor TI), der mehrere Tastedrücke zu einer Programmzeile zusammengeführt hat. So wird z.B. „f Fix 4“ zu „14 11 04“.

Eingabe Anzeige Bemerkung
    R1 im x-Register,
R2 im y-Register
STO 1 01     23  01 R1 sichern
x<>y 02     21 R1 und R2 tauschen
* 03     61 Zäher ausmultiplizieren
f Last x 04     14  73 R2 wiederherstellen
RCL 1 05     24  01 R1 wiederherstellen
+ 06     51 Nenner ausaddieren
/ 07     71 Gesamtbruch berechnen
Ergebnis steht im x-Register und ist sichtbar
GTO 00 08     13  00 Programm wird angehalten,
Programmzähler zurückgesetzt

Wenn man sich vertippt hat: Kein Problem, man kann mit den Tasten SST (Single STep) oder BST (Back STep) sich im Programm vor- und zurückbewegen. Wenn man sich vertippt hat, überschreibt man den Rest einfach.

Die Probe: Zunächst das Programm mit GTO 00 auf den ersten Programmplatz setzen, danach die beiden Zahlen mit 5 ENTER 6 eingeben, R/S drücken und 2,73 ablesen. Möchte man für R1 10k Ohm und R2 47k Ohm den Parallel-Widerstand berechnen, gibt man erneut 10 EEX 3 ENTER 47 EEX 3 ein und berechnet mit der R/S – Taste den Parallel-Widerstand von 8,245 k Ohm.

Wenn man das Programm einmal debuggen möchte, kann man anstatt die R/S – Taste die SST-Taste drücken. Man sieht dann kurz die aktuelle Programmzeile aufblinken und danach das, was das Programm auf dem Stack (hoffendlich sinnvolles) gemacht hat.

Und das ist exakt der Grund, warum viele die HP-UPN-Rechner lieben und auch viele sie hassen!