Was kann der DM42 mehr?
Nachdem ich erklärt habe, warum das Programmieren auf einem der ersten programmierbaren Taschenrechner so schwer war, ist sicher nachvollziehbar, was die nachfolgend aufgeführten Eigenschaften für enorme Vorteile brachten.
Labels
Anstatt bei Sprüngen direkt auf Schritte - beim DM42 kann man sogar schon von Zeilen sprechen - zu zeigen, ist es beim DM42 möglich. Labels zu verwenden. Das sind alphanumerische Markierungen, die ich überall im Code platzieren kann. Sie können mit dem GOTO-Befehl direkt angesprungen werden. Dabei kann sogar zwischen lokalen alphanumerischen (A - J und a - e), lokalen zweistelligen numerischen und globalen alphanumerischen (kleine und große Buchstaben, bis sieben Stellen) unterschieden werden. Es gibt sogar die indirekte Adressierung, bei der das aufzurufende Label in einer Variablen oder einem Register stehen kann.
Die Verwendung von Labels hat den enormen Vorteil, dass ich mir beim Korrigieren von Programmen keinerlei Gedanken mehr um das durch Codeänderungen notwendige Anpassen von Sprungadressen machen musste! Ein weiterer, nicht zu unterschätzender Vorteil ist die Möglichkeit, Labels mit alphanumerischen Bezeichnungen zu versehen. Da schon der HP-42S über 6.000 Bytes und der DM42 sogar über 70.000 Bytes frei zum Programmieren hat, würde man ohne 'sprechende' Labels und Variablennamen im Programmcode hoffnungslos die Übersicht verlieren.
Indirekte Adressierung
Anstatt beim Ansprechen eines Labels oder Speicherregisters das Label oder Register direkt angeben zu müssen, kann der Name des Labels in einer Variablen oder die Nummer des Registers in einem anderen Register gespeichert werden. Nun wird beim Ansprechen dieses Register angegeben und der dort gespeicherte Wert als eigentliche Adresse verwendet. Das ist zum Beispiel gut, wenn ich automatisch eine Reihe von Registern bearbeiten will.
Schleifen
Neben den üblichen Methoden, ein Stück des Codes mehrfach zu durchlaufen, unterstützt der HP42 so eine Art for-Schleifen. Die Funktionen dazu heißen DSE (decrement; skip if less than or equal to) und ISG (increment; skip if greater than). Beide interpretieren eine Dezimalzahl in einer Variablen in der Form ccccccc,fffii als Zähler (ccccccc), Endwert (fff) und Schrittweite (ii). Taucht eine der beiden Funktionen im Programmcode auf, wird die passende Prüfung vorgenommen und, falls wahr, der nächste Befehl übersprungen. Das heißt, der nächste Befehl sollte ein 'GTO' an den Anfang der Schleife sein.
Bedingungen
Wie schon beim Absatz über den PR 56 D-NC angedeutet, unterstützen modernere programmierbare Taschenrechner deutlich mehr als eine Vergleichsmöglichkeit. Beim DM42 ist alles enthalten, was das Herz begehrt. Das Register X kann mit 0 oder dem Register Y verglichen werden und es stehen gleich und ungleich, kleiner, kleiner gleich, größer, größer gleich zur Verfügung. Das sollte reichen, jede gerade gedachte Bedingung, ohne sie umformen zu müssen, direkt zu prüfen.
Unterprogrammebenen
Der DM42 unterstützt bis zu acht Unterprogrammebenen. Das macht es einfach, ein Programm in viele Teilprogramme zu unterteilen oder sowieso oft verwendete Funktionen einmalig zu programmieren und anschließend in vielen anderen Programmen einfach wiederzuverwenden. Ich muss aber beim Programmieren von Unterprogrammen aufpassen, dass ich nicht Register verwende, die in anderen Unterprogrammen oder im Hauptprogramm verwendet werden.
Flags
Wenn ein Programm ein wenig komplizierter ist, als einfach nur eine Formel abzuarbeiten, kommt es oft vor, dass ich einen Status von irgendetwas festhalten will, um später im Programm auf diesen zu prüfen. In solchen Fällen nutze ich in modernen Programmiersprachen den Boolean-Datentyp.
Beim PR 56 D-NC musste ich dazu ein ganzes Register verbrauchen. Ich speicherte 1 für True und 0 für False. Wenn ich den Status von zwei verschiedenen Irgendetwas speichern will, benötige ich zwei Register oder ich denke mir einen mehr oder weniger tollen Code aus, um in einem Register zwei verschiedene Irgendetwas speichern zu können.
Beim DM42 könnte ich dazu die Bitfunktionen verwenden. Aber das ist gar nicht notwendig, weil der DM42 sogenannte Flags unterstützt, die genau für dieses Problem geschaffen worden sind. Ich kann Flags setzen (SF), löschen (CF) und abfragen (FS?) und (FC?).
Vom DM42 lässt sich also einiges über Computer und Programmierung lernen. Bei mir kommt noch die Nostalgie dazu, die mich beim Ansehen der alten Mnemonics im PRGM-Modus ergreift. Sie ruft Erinnerungen an vergangene Nächte hervor, in denen ich meinem Taschenrechner die letzten Geheimnisse entlockte und ich in mühevoller Auseinandersetzung mit meinem Code irgendwann mein Programm erfolgreich zum Laufen brachte, was immer ein großes Glücksgefühl in mir auslöste.
Dieser Artikel erschien zuerst im Blog Steinlaus.de. Für Golem.de wurde er umfassend überarbeitet.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
| Die schlechtesten Programmiermöglichkeiten meines Lebens - und ihre Verbesserung |










Weil der HP49 ein CAS Rechner, und damit in den wenigsten Fällen in Schule und Studium...
Raspberry Pie: Linux und damit im Prinzip ja die einfachste Möglichkeit. Man kann jede...
Ich habe angefangen mit dem CASIO FX-501P oder FX-502P. Ich hatte diesen Adapter mit dem...
Und ihn programmiert, um die Fakultät einer Zahl mit allen Stellen auszurechnen...