Casio fx-991MS hacking ;)


Ich besitze einen CASIO fx-991MS S-V.P.A.M, den ich damals in der Oberstufe für das Abitur von der Schule bekommen habe (natürlich gegen Bezahlung).

Es war das Standardmodell, dass für das Gymnasium erlaubt war, mit der Voraussetzung, dass es kein Programmierbares Gerät ist, und keine Plotting-Funktionen hat. Nichts desto trotz kann dieses Gerät sogar Gleichungssysteme lösen, aber das steht ja auch alles in den zwei Anleitungen (User’s Guide und User’s Guide 2). Wirklich schätzen gelernt habe ich das Gerät erst nach meiner Abiturzeit – erst dort habe ich dann auch richtig Begriffen, was das Gerät alles kann. Besonders toll finde ich als Informatiker natürlich die Tatsache, dass der Rechner verschiedenen Zahlensysteme beherrscht, und in diesen Rechnen und konvertieren kann. Und im Binärsystem sind dann sogar logische Operationen möglich! Und auch die Statistikfunktionen habe ich zu Schätzen gelernt. Aber auch das kann man in der Anleitung finden.

Was dort aber nicht steht: Mithilfe des Speichers und der Möglichkeit, mehrere Berechnungen hintereinander auszuführen, lässt sich der Taschenrechner dann doch “programmieren”. Auf die Ideen muss man natürlich erst einmal kommen. Aber dann ist es eigentlich ziemlich einfach, simple Algorithmen zu Implementieren.

Da ich gerade mit der zweiten Aufgabe des Project Euler beschäftigt war, hab ich ein wenig mit Fibonacci-Zahlen hantieren müssen. Und leider erst viel zu spät gemerkt, dass ich mir die ersten 20 Zahlen nicht hätte manuell ausrechnen müssen (naja, ich hätte sie auch im Internet nachschlagen können, ich wollte es ja so 😉 ).

So also schreibt man sich ein kleines Taschenrechnerprogramm, dass einem die Fibonacci-Folge schrittweise ausgibt:

Die Fibonacci-Zahlen werden mathematisch rekursiv definiert über:

f_0 = 0
f_1 = 1
f_n = f_{n-1} + f_{n-2}, forall n geq 2

D.h. wir berechnen f_2, indem wir f_0 und f_1 addieren. Für f_3 addieren wir f_1 und f_2. D.h. wir benötigen jeweils die letzten zwei Zahlen im Speicher.

Das machen wir mit dem CASIO fx-991MS wie folgt:

[ALPHA]A
[ALPHA]=
0
[=]

[ALPHA]B
[ALPHA]=
1
[=]

Anmerkung: Die Tasten, die über ALPHA aktiviert werden können, sind alle rot. D.h. [ALPHA]= bezeichnet nicht die Gleichheitstaste (die ganz unten rechts), sondern die Taste ganz oben links in der zweiten Tastenreihe! Das Gleichheitszeichen habe ich zum Abheben vom [ALPHA]= in eckige Klammern gesetzt.

Nun zur Berechnung:

[ALPHA]C
[ALPHA]=
[ALPHA]A
+
[ALPHA]B

Damit haben wir die erste Fibonacci-Zahl berechnet, d.h. die Zahl f_2 = 1.

Wie geht es nun weiter? Wir brauchen die neu berechnete Zahl, und die im vorherigen Berechnungsschritt letzte Zahl (die jetzt die Vorletzte wird). Das könnte man manuell machen, aber dann wäre ja nichts gewonnen.

Hier kommt jetzt der : ins Spiel, der im User’s Guide 2 nur in einem Nebensatz auf Seite E-6 erwähnt wird: Mit ihm lassen sich mehrere Berechnungen hintereinander ausführen.

Statt der vorherigen Berechnung machen wir folgendes:

[ALPHA]C
[ALPHA]=
[ALPHA]A
+
[ALPHA]B
[ALPHA]:
[ALPHA]A
[ALPHA]=
[ALPHA]B
[ALPHA]:
[ALPHA]B
[ALPHA]=
[ALPHA]C

Man hat alles richtig gemacht, wenn nacheinander folgende Zeilen auf dem Display in der oberen Zeile (also der “Operationszeile”) entstanden sind:

A=1
B=0
C=A+B:A=B:B=C

Damit ist das Programm geschrieben. Durch mehrmaliges Drücken auf [=] wird nun der Inhalt aller Variablen mehrmals ausgegeben. Dabei wird immer erst C, dann A und dann B ausgegeben. Das erste C führt die Addition von A und B aus, also gibt es 1 aus, dann wird A erneut gespeichert, d.h. es nimmt den Wert von B an, und B wiederum nimmt den Wert von C an. Und durch erneutes drücke auf = geht das Spiel dann weiter.

Immer, wenn C im Display erscheint haben wir die nächste Fibonacci Zahl. Mit ein wenig Probieren lassen sich auf diese Weise sicherlich auch noch weitere Algorithmen realisieren. Der Euklidische Algorithmus zur Berechnung des größten gemeinsamen Teiler beispielsweise baut ja ebenfalls darauf auf, dass in jeder Zeile teile der Berechnung die Position wechseln (der größte gemeinsame Teiler hat ja in der Aufgabe 1 des Euler-Projekts eine Rolle gespielt).

Aber bevor ich das jetzt versuche, geh ich lieber ins Bett. Vielleicht gibt es morgen einen Nachtrag 🙂

Advertisements

3 thoughts on “Casio fx-991MS hacking ;)

  1. Schöner Beitrag 🙂

    weißt du zufällig, ob man die einprogrammierten Konstanten auch irgendwie ändern kann?
    Da gits welche die ich nie brauch aber andere sind gar nicht drin.
    Hab den Casio fx-991 ES

    Gruß Mathias

    • Hallo Mathias,

      danke für den Kommentar und das Lob. Einprogrammierte Konstanten sollten nach meinem Verständnis nicht so einfach zu überschreiben sein. Da diese selbst dann noch erhalten bleiben, wenn der Taschenrechner absolut keinen Strom hat, müsste das Bestandteil des Mikroprogramms sein, also fest in den Chipsatz eingespeichert. Da ein Taschenrechner in der Regel nicht geupdated werden muss (es hierfür nach meinem Wissen auch keine Schnittstelle oder ähnliches gibt), werden die Chips höchstwahrscheinlich nicht wiederprogrammierbar sein (diese wären dann günstiger), und damit dann auch nicht veränderbar.

      Sollte ich bei den verwendeten Chiptypen falsch liegen, dann würde ein Überschreiben des Chips den kompletten Chip überschreiben. Das bedeutet, dass man das Original-Programm hierzu bräuchte, sonst wäre der Taschenrechner danach wertlos (außer man schreibt ein komplett eigenes Programm, das auf den Chip passt – welches schwer werden könnte, wenn man die Spezifikationen zum Chip nicht hat – ich würde annehmen, dass es sich hierbei um speziell angefertigte Chips sind, also wird auch das schwierig).

      Wie gesagt, das sind meine Mutmaßungen nach meinem technischen Verständnis – ich kann hier auch durchaus falsch liegen, denke aber dass dies sehr wahrscheinlich ist (falls jemand hier genauere Infos hat, darf er sich gerne in den Kommentaren melden 😉 ).

  2. Pingback: Blog-Steckbrief: Wer seid ihr? | ~ PygoscelisPapua ~

Please comment. I really enjoy your thoughts!

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s