Die allgemeinen Programmiergrundlagen werden hier vorausgesetzt. Es muß klar sein, was Schleifen, Verzweigungen, Variablen, Zahlentypen, Zeichenketten, Bits und Bytes sind. Der Programmieranfänger möge den Beitrag "Programmierlogik" vorher lesen.
Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.
Der HP 49G enthält gemäß HP-Angaben 4 eingebaute Programmiersprachen:
1. HP-Basic: Mittelding zwischen Benutzer-RPL and BASIC.
Leicht zu lernen.2. Benutzer-RPL
(User-RPL):Die Benutzer-Programmiersprache des HP 49G
Hiermit programmieren die meisten Anwender ihren HP 49G.3. System-RPL: Entwicklungs-Software einschließlich Disassembler im HP 49G enthalten.
Nur für Spezialisten, HP leistet keinen Support.4. Assembler: Entwicklungs-Software einschließlich Disassembler im HP 49G enthalten.
Nur für Spezialisten, HP leistet keinen Support.
Was ist RPL?
RPL (Reverse-Polisch LISP) ist die Programmiersprache des HP 49G. Sie verwendet Elemente der beiden Programmiersprachen FORTH und LISP, wobei die Notation RPN und der LIFO-Stack von FORTH und die Arbeitsweise von LISP übernommen wurden.RPN (Reverse-Polish Notation), die umgekehrte polnische Notation, wird bei den HP-Rechnern seit 1970 benutzt und hat sich bestens bewährt. Sie beruht darauf, daß man dem Rechner zuerst sagt, mit welchen Werten er rechnen muß bzw. wo sie stehen und dann, was er damit tun soll. Außerdem ist der (return) Stack, der als LIFO-Stack (LIFO = last in first out) im RPN-Modus des HP 49G automatisch arbeitet, von besonderer Bedeutung.
Beispiel:
Für die Berechnung von 8 × 4 gibt man zuerst die Werte ein und drückt dann die Multiplikationstaste, also
[8] [ENTER] [4] [×]. Das Ergebnis steht dann nach Drücken der Taste [×] im Stack.
Auf Rechnern mit arithmetischer Notation gibt man ein wie man spricht: [8] [×] [4] [=]
Auf HP-Taschenrechnern gab's daher lange Zeit kein Gleichheitszeichen. Erst bei programmierbaren Rechnern führte man es (wieder) ein, weil bei Vergleichsoperationen die Prüfung auf Gleichheit nötig wurde.
Eine spezielle Dokumentation von HP-Basic ist nicht vorhanden. Vermutlich ist mit HP-Basic die im HP 48GX und HP 49G benutzte algebraische Darstellung gemeint, deren Befehle von BASIC (= ursprüngliche PC-Programmiersprache) entlehnt sind. Dabei kann man so formulieren, wie man es gewöhnt ist.
Beispiel:
IF 'a > b' THEN 'a-b' ELSE 'b-a' END
Diese Formulierung ist "lesbarer", als die User-RPL-Notierung, die anschließend gezeigt wird.
In User-RPL formuliert man obiges Beispiel so: a b > 'a-b' 'b-a' IFTE, wobei die Funktion IFTE die IF-THEN-ELSE-Abfrage daraus formt.
Man kann aber auch algebraisch (als Funktion mit Argumenten) formulieren: 'IFTE(a>b,a-b,b-a)'.
Der Anwender benutzt normalerweise User-RPL. Sie ist leicht zu lernen und es ist die erste Sprache, die er benutzen kann, um den HP-Rechner zu programmieren. Bei jedem Befehl werden die Argumente automatisch geprüft, so daß User-RPL als ziemlich sichere Sprache gelten kann. Es sollten keine Datenverluste dabei auftreten. Der Benutzer muß die "Innereien" des Taschenrechners nicht kennen.
System-RPL ist schneller, aber es wird keine Prüfung der Eingaben durchgeführt. Zum Programmieren sind spezielle Kenntnisse der Systemstruktur und der inneren Logik des Rechners erforderlich.
Wenn man System-RPL lernen will, ist die Kenntnis von User-RPL Voraussetzung. Alles was man dazu noch braucht, ist eine komplette Liste der System-RPL-Befehle, die auch "entry points" genannt werden und die sich im Innern des ROMs befinden.
Es soll über 5000 dieser "entry points" geben, die man nach und nach bei Bedarf lernen kann. Die meisten davon haben Namen (benannte entry points) und gelten immer (supported entry points) oder nur für bestimmte ROM-Versionen (unsupported entry points). Es gibt aber schätzungsweise an die 20 000 unbenannte und damit nicht-unterstützte (unsupported), die man lediglich über ihre Adresse ansprechen kann.
Die Assemblersprache hat keinen Bezug zu User-RPL oder zu System-RPL, so daß man hier etwas ganz Neues lernen muß.
Assembler ist keine komplexe Sprache, die Befehle sind einfach und erledigen elementare Aufgaben direkt auf der Ebene des Prozessors; es mag kompliziert erscheinen ist, daß man eine Menge "elementarer Befehle" schreiben muß. Aber man hat damit den schnellsten Code zur Verfügung, der intern direkt ausgeführt werden kann, weil er nicht "interpretiert" werden muß.
User-RPL und HP-Basic
Die beiden erstgenannten Programmiersprachen kann fast jeder Anfänger schnell lernen, wenn er die Handbücher liest (und versteht). Ausreichendes Grundlagenwissen über Programmierlogik sollte vorhanden sein.
Z. B. ist das (noch lieferbare?) englisch-sprachige Original-Programmierhandbuch "HP 48G Series, Advanced User's Reference Manual" (Part-Nr. 00048-90136) sehr gut geeignet, User-RPL und HP-Basic zu lernen.
Notfalls reicht auch der "Advanced User-RPL Guide 012" (Datei "aug012.txt") im Archiv "aug012.zip" auf der CD-ROM des Connectivity-Kits.
Es sei auch auf die beiden Bücher von Prof. Urroz hingewiesen, die eine gute Einführung in User-RPL enthalten.
Für die meisten Anwender, die den HP 49G nicht bis auf das letzte Bit ausreizen, tunen oder sonstwie frisieren wollen, reicht User-RPL für die Lösung der täglichen Probleme vollkommen aus. Für den praktischen Einsatz in Beruf und Studium genügt User-RPL.
Die meisten hier in dieser Dokumentation angebotenen Programme sind in User-RPL geschrieben worden. Sie sind so konzipiert und erläutert, daß sie als Musterbeispiele für bestimmte Problemlösungen betrachtet werden können.
System-RPL
Für System-RPL gibt es das Buch "Programming in System RPL" von Eduardo Kalinowski und Carsten Dominik für den HP 49G in Neuauflage vom April 2002 mit 638 Seiten als PDF-Dokument (1215 kB) im Internet bei www.hpcalc.org. Die alte Auflage war nur für den HP 49GX geschrieben.
Programmieren in System-RPL ist etwas für Spezialisten, denen User-RPL nicht genügt. System-RPL-Programme sind in den Foren bei www.hpcalc.org zu finden. Dort bieten die Spezialisten für die systemnahe Programmierung von HP-Rechnern ihre Programme an.
Hier in dieser Dokumentation wird nicht auf System-RPL eingegangen.
Assembler
Das englisch-sprachige Buch "Introduction to Saturn Assembly Language" von F. H. Gilbert und Eric Rechlin gibt eine sehr gute Einführung in die maschinennahe Programmierung mit allen nötigen Grundlagen. Es ist ebenfalls auf der CD-ROM des Connectivity-Kits zu finden.
Auch die entsprechende Assembler-Software ist auf der genannten CD-ROM im Verzeichnis "hpcalc\program" zu finden, so daß man nur noch loszulegen braucht - wenn man alles kapiert hat ;-)
Die Programmierung in Saturn Assembly Language ist vor allem für diejenigen Anwender gedacht, die hauptsächlich neue und schnelle Programme entwickeln wollen, die mit User-RPL und auch mit System-RPL nicht möglich sind (z. B. Spiele).
Zum Beginn dieser Seite
Zur Beitragsübersicht
Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!