Wer nach dem ersten Ausprobieren und Kennenlernen des neuen Taschenrechners einigermaßen mit den Eigenschaften und Funktionen vertraut ist, wird bald den Wunsch haben, den Rechner nach den persönlichen Vorstellungen zu konfigurieren. Für diesen Zweck bietet der HP 49G genügend Möglichkeiten.
Nachdem diese Möglichkeiten in den offiziellen Handbüchern nicht ausreichend beschrieben sind, versucht der Autor hier, die Grundlagen zu ergänzen und mit Beispielen zu verdeutlichen. Dabei kommen auch Spielereien und interessante Besonderheiten zur Sprache. Auf gesonderte Beizträge wird verwiesen.
Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.
Jedes Element in einem Menüfeld ist entweder ein Befehl, der Name eines anderen Menüs, eine Variable oder ein Unterverzeichnis.
Näheres zu den Menüs ist im mitgelieferten Handbuch ab Seite 2-6 und im Beitrag "Die Menüs des HP 49G" zu finden.
Auf dem HP 49G gibt es verschiedene Arten von Menüs:
- Normales Verzeichnismenü, das die Variablennamen des aktuellen Verzeichnisses und die Namen der Unterverzeichnisse anzeigt. Sind mehr als 6 Namen im Menü (= mehrseitige Menüs), kann man mit [NXT] "vorblättern" , d. h. die nächsten 6 Namen sichtbar machen machen. Mit [leftshift][PREV] kann man wieder "zurückblättern". Nach Drücken von [VAR] kehrt man immer zu diesem Menü zurück.
- Menü der eingebauten Funktionen, das dann gezeigt wird, wenn ein Funktionsmenü z. B. MTH oder PRG, über das Tastenfeld ausgewählt wird.
- Globales benutzerdefiniertes Menü (Customer-Menü) (siehe unten).
- Temporäres Menü (siehe unten).
- Einheitenmenü der eingebauten Einheiten wird mit [rightshift][UNITS] aufgerufen.
- Portmenü mit Bibliotheken und den Ports :0:, :1: und :2: wird mit [rightshift][LIB] aufgerufen.
- Programmmenü, das während einer Programmausführung gezeigt wird und z. B. zur Steuerung des Ablaufs durch Auswahl von Unterprogrammen dienen kann.
Weitere Sondermenüs werden hier nicht erwähnt.
Standardmäßige Menüform
Die Anzeige mancher Menüs ist vom Systemflag -117 abhängig. Die Angaben in der Kurzanleitung sind vertauscht, deshalb hier die richtige Funktion:
- Flag -117 gesetzt = Menüform mit Menüfeldern (Soft-Menü).
- Flag -117 gelöscht = Menüform ist eine Auswahlbox (Choose-Menü)
Der HP 49G bietet die Möglichkeit, globale benutzerdefinierte Menüs (Customer-Menu) zu erstellen. Ein Customer-Menü wird in der Variablen CST gespeichert. CST ist ein reservierter Name und darf nicht für andere Variablen verwendet werden.
Wenn ein Customer-Menü definiert ist, dann ist die Variable CST im betreffenden Verzeichnis, vorwiegend im HOME-Verzeichnis, abgelegt. Dieses Customer-Menü gilt für das aktuelle Verzeichnis und dessen Unterverzeichnisse, die kein eigenes Customer-Menü, also keine CST-Variable, haben. Ist in einem Unterverzeichnis die Variabale CST mit einem Customer-Menü vorhanden, so gilt dieses wieder für dieses und für alle Unterverzeichnisse. Und so weiter ...
Es ist auch möglich, das erste Customer-Menü nicht im HOME-Verzeichnis, sondern in einem Unterverzeichnis anzulegen.
Das im aktuellen Verzeichnis gültige Customer-Menü wird durch [leftshift][CUSTOM] aktiviert. Für das aktuelle Verezeichnis gilt das eigene CST oder das auf dem Pfad nach oben (zum HOME-Verzeichnis hin) zuerst CST. Ist in den übergeordneten Verzeichnissen keine Variable CST vorhanden, werden nach dem Aktivieren die Menüfelder leer angezeigt.
Nach dem Aktivieren des Customer-Menüs sind die ersten 6 Menüfelder über die Tasten [F1] bis [F6] aufrufbar. Mit [NXT] sind die weiteren Menüfelder über [F1] bis [F6] zugänglich.
Deaktiviert wird das Customer-Menü durch [VAR], dann sind die Menüfelder des aktuellen Verzeichnisses wieder sichtbar.
Struktur von CST
Das in der Variablen CST gespeicherte Customer-Menü muß nach einem bestimmten Schema aufgebaut sein, denn dort sind nicht nur die Menüfelder, sondern auch die hinterlegten Inhalte (Funktionen und Programme) gespeichert. Der Inhalt der Variablen CST kann deshalb ziemlich umfangreich werden.
Der Inhalt von CST besteht aus einem Listenobjekt, in dem für jedes Menüfeld wieder ein Listenobjekt verwendet wird.
{{"Text1" {«..mit [F1] aufrufbar..» «..mit [leftshift][F1] aufrufbar..» «..mit [rightshift][F1] aufrufbar..»}}
{"Text2" {«..mit [F2] aufrufbar..» «..mit [leftshift][F2] aufrufbar..»}}
{"Text3" {«..mit [F3] aufrufbar..»}}
{"Text4"{«...»}}{"Text5"{«...» «...» «...»}}{...}}Zeichenerklärung
- Im obigen Schema werden zusammengehörige Klammern zur Verdeutlichung
farbig { { "String"{ «...» «...» «...» } } { "String" ' ... ' } { "String" « ... »}} gekennzeichnet.- Die Inhalte der Programmklammern « ... » kennzeichnen im Schema und in der Erläuterung nur die Zuordnung zu den F-Tasten und nicht die wirklichen Inhalte.
- Anwendung des Schemas siehe Beispiel.
Erläuterung des Schemas:
- Die äußere rote Klammer umfaßt den gesamten Inhalt der Variablen CST.
- Der Inhalt der zweiten, dunkelblauen Klammern ist einem Menüfeld zugeordnet und kennzeichnet jeweils bis zu 3 Funktionen eines Menüfeldes, das den in Anführungszeichen " " eingeschlossenen Text als Menüfeldnamen zeigt.
- In den grünen Klammern sind die ausführbaren Inhalte für die Tasten F1 bis F6, die den Menüfeldern zugeordnet sind. Die grünen Klammern können entfallen, wenn sie nur ein einziges Objekt enthalten (siehe oben das Programm bei TEXT3). Bei den Inhalten gilt die folgende Reihenfolge in der grünen Klammer:
- «..mit [F1] aufrufbar..» (1. Eintrag in der grünen Klammer) ist z. B. das Programm, das über die nicht umgeschaltete Menütaste [F1] aufgerufen werden kann.
- «..mit [leftshift][F1] aufrufbar..» (2. Eintrag in der grünen Klammer) ist z. B. das Programm, das über die links umgeschaltete Menütaste [F1] aufgerufen werden kann.
- «..mit [rightshift][F1] aufrufbar..» (3. Eintrag in der grünen Klammer) ist z. B. das Programm, das über die rechts umgeschaltete Menütaste F1 aufgerufen werden kann.
In der roten Klammer können beliebig viele dunkelblaue Klammern eingeschlossen sein, die die Anzahl der Menüfelder darstellen. Die ersten 6 Menüfelder werden nach der Aktivierung direkt angezeigt und sind über [F1] bis [F6] aufrufbar. Die weiteren Menüfelder werden nach Drücken der Taste [NXT] angezeigt und sind mit der jeweils zugeordneten F-Taste aufrufbar.
Die grünen Klammern können bis zu drei ausführbare Objekte enthalten (siehe auch Erläuterung oben):
- Ist nur ein Objekt vorhanden, wird dieses mit der Menütaste allein gestartet.
- Sind zwei Objekte vorhanden, so wird das erste mit der Funtionstaste allein und das zweite mit der links umgeschalteten Menütaste gestartet.
- Bei drei Objekten gilt die gleiche Reihenfolge, das dritte Objekt wird mit der rechts umgeschalteten Menütaste gestartet.
Beispiel:
Unser Beispielmenü soll 4 Menüfelder haben: [AUS] [INFO] [UHR] [BANK]
Menüfeld [F-Taste allein] [leftshift] [F-Taste] [rightshift][F-Taste] [AUS] schaltet den Taschenrechner aus (nicht belegt) (nicht belegt) [INFO] Name Adresse Seriennummer [UHR] schaltet Uhranzeige ein und aus (nicht belegt) (nicht belegt) [BANK] Name der Bank Kontonummer Bankleitzahl
HP 49G-Benutzermenü (Text) Erläuterung des Beispiels: { { "AUS" { OFF }}
{"INFO" {« CLLCD
"
Eigentümer
dieses HP 49G:
Karl Mustermann
" MSGBOX »
« CLLCD " Adresse:
80333 München
HP-Straße 49" MSGBOX »
« CLLCD " Serien-Nr.
ID93403666" MSGBOX
» }}{"UHR"{« -40 FS?
IF 1. == THEN -40 CF
ELSE -40 SF END » } }
{"BANK"{«"Alpha-Bank
"»«"Konto:
123 456 789"»«"BLZ:
777 888 99"»}}}Leerzeichen und Zeilenschaltungen sind innerhalb der Anführungszeichen
für die Textgestaltung der Anzeige wichtig. Außerhalb der Anführungszeichen werden
sie vom Rechner nicht beachtet, sie können zur übersichtlicheren Darstellung des Programms
verwendet werden.Das fertige Customer-Menü speichert man unter einem beliebigen Namen mit maximal 5 Buchstaben.
Dieses Customer-Menü BMENU steht als Beispieldatei zur Verfügung. Diese Datei enthält Sonderzeichen, bitte nicht editieren!
Diese Datei hat einen Header
%%HP: T(1)A(D)F(.);,
der gebraucht wird, wenn die Datei über das Connectivity Kit direkt auf den HP 49G übertragen wird. Beim Eintippen muß man den Header weglassen (siehe Text links).Erzeugen eines Customer-Menüs
Obiger Inhalt des Customer-Menüs wird eingetippt und als Variable auf dem HP 49G gespeichert. Oder die Datei BMENU wird auf den HP 49G übertragen und gespeichert.
Der Inhalt von BMENU wird durch [rightshift][BMENU] in den Stack gebracht.
Nun gibt es zwei Möglichkeiten, aus dem Inhalt des Stacks ein Customer-Menü zu erzeugen:
- Entweder:
durch Eingabe von MENU oder aus [CAT] und den Befehl MENU auswählen. Die Variable CST wird erzeugt und das Menü gleich aktiviert.
Achtung: Eine bestehende Variable CST wird durch den Befehl MENU mit dem neuen Menü überschrieben.- Oder:
man speichert den Inhalt des Stacks in der Variablen'CST'. Nun steht das Customer-Menü für die Aktivierung durch [leftshift][CUSTOM] bereit.In beiden Fällen erscheint folgende Anzeige:
Das Customer-Menü kann durch die Taste [VAR] deaktiviert werden, das Menü des aktuellen Verzeichnisses erscheint wieder.
Einsatz des Customer-Menüs
Ein Customer-Menü kann für verschiedene Zwecke eingesetzt werden. Kennzeichen dieses Menüs ist die globale Gültigkeit in allen Unterverzeichnissen (ohne eigene CST). Man kann aus jedem Unterverzeichnis heraus aktivieren. Wer mehrere verschiedene Menüs verwenden will, legt sich temporäre Menüs an.
Sonderfall benutzerdefiniertes Einheitenmenü:
Einen Sonderfall eines Customer-Menüs findet man im Beitrag "Einheiten", wo die Struktur (das Schema) des Menüs in der Variablen CST nicht das hier beschriebene Aussehen (Liste von Listen mit verschachtelten Klammern) hat. Die Menüfelder sind keine ausführbaren Objekte, sondern nur Verweise auf ausführbare Objekte (Einheiten), die mit den Variablen des aktuellen Verzeichnisses über die Einheitenfunktionen in Verbindung stehen.
Ein benutzerdefiniertes Einheitenmenü muß nicht in der Variablen CST abgespeichert werden, sondern man kann auch eine andere Variable dafür verwenden. Dann ist es zweckmäßig, das benutzerdefinierte Einheitenmenü ein temporäres Menü zu verwenden. Auch hier ist es möglich, das Menü als Programmvariable zu gestalten, wie unten beim temporären Menü beschrieben.
Inhalt und Gültigkeit
- Ein temporäres Menü hat den gleichen Aufbau wie das oben beschriebene Customer-Menü.
- Es gilt jeweils nur in dem Verzeichnis, in dem es aktiviert wird.
- Temporäre Menüs sind in Variablen mit beliebigem Namen abgespeichert.
- Man kann beliebig viele temporäre Menüs in einem Verzeichnis als Variablen abspeichern.
Aktivieren und Deaktivieren des temporären Menüs:
- Aktiv sein kann jeweils nur ein temporäres Menü.
- Der Inhalt der Menü-Variablen wird in den Stack gebracht. Dies erfolgt durch Drücken der zugeordeneten F-Taste.
- Nun wird der Befehl TMENU entweder eingegeben oder über [CAT] ausgewählt und aktiviert.
- Das tempöräre Menü ist dann sofort verfügbar.
- Das temporäre Menü ist solange aktiv, bis es mit der Taste [VAR] deaktiviert wird.
Besonderheiten:
Ein temporäres Menü ist nicht an ein bestimmtes Verzeichnis gebunden, sondern kann in jedem Verzeichnis verwendet werden.
Wenn der Inhalt der Menü-Variablen im Stack ist, kann man in das gewünschte Verzeichnis wechseln und dort das Menü aktiveren. Falls die Funktionen des Menüs Ergebnisse liefern und in Variablen ablegen, kann man dadurch gleich das richtige Verzeichnis für diese Ergebnisse auswählen. Wenn das Menü auf Variablen zugreift, müssen diese selbstverständlich in dem aktuellen Verzeichnis vorhanden sein.
Jedes Benutzermenü, ob Customer-Menü oder temporäres Menü, kann die Variablen des Verzeichnisses, in dem es aktiviert worden ist, verwenden, auch wenn diese für den Benutzer momentan nicht sichtbar sind.
Die Eigenart der temporären Menüs, aus dem Stack heraus aktiviert werden zu müssen, läßt die Speicherung in einem Portspeicher vorteilhaft erscheinen. Will man in einem beliebigen Verzeichnis ein temporäres Menü aufrufen, wechselt man in den Portspeicher, holt die Menü-Variable in den Stack, drückt zum Zurückspringen in das aktuelle Verzeichnis die Taste [VAR] und aktiviert dann das temporäre Menü mit TMENU.
Es gibt einen Trick, wie man ein temporäres Menü wie ein Programm aufrufen kann:
Man macht einfach eine Programmvariable daraus, indem man das betreffende Menü zusammen mit dem Aktivierungsbefehl TMENU in Programmklammern einschließt und das Ganze in der Variablen speichert:
«{{"..."{«...»«...»«...»}}{"..."{«...»«...»«...»}}{...}} TMENU » Farbkennzeichnung des Schemas wie oben beim Customer-Menü. Der Inhalt der äußeren roten Klammer ist das Menü. Die Ergänzung zum Programm ist in Pink-Farbe dargestellt.
Dieser Trick funktioniert auch bei Aufruf aus dem Portspeicher.
Vorsicht: Auf die Variable CST für das Customer-Menü darf dieser Trick nicht angewendet werden, CST sollte keine Programmvariable sein! Beachtet man dies nicht, passiert folgendes:
- Enthält CST als Programmvariable das Menü und den Befehl MENU, so überschreibt dieser
Befehl die Variable CST mit dem Menü und aktiviert dieses als Customer-Menü. Die
Variable CST enthält dann nur noch das Menü, ist aber keine Programmvariable mehr. Die
Aktivierung muß dann anschließend wieder mit [leftshift][CUSTOM] erfolgen.- Enthält CST als Programmvariable das Menü und den Befehl TMENU, so aktiviert dieser Befehl das temporäre Menü. CST bleibt als Programmvariable erhalten. Der Aufruf über [leftshift][CUSTOM]
zeigt dann aber ein leeres Menü, d.h. der Inhalt von CST ist nicht als Customer-Menü wirksam.Man muß ja nicht unbedingt die reservierte Variable CST als Name für ein temporäres Menü hernehmen!
Der eingebaute UNITS-Katalog bietet eine Menge genormter physikalischer Einheiten und die dazu gehörigen Konvertierungsmöglichkeiten. Zusätzlich können eigene Einheiten definiert werden. Zu diesem Thema gibt es einen gesonderten ausführlichen Grundlagenbeitrag.
Der HP 49G hat außer den 128 Systemflags auch 128 Benutzerflags zur Verfügung, die für beliebige Zwecke als Merker benutzt werden können.
Zur Erläuterung der Flags gibt es einen eigenen Beitrag Arbeiten mit Flags
Hierzu gibt es einen Grundlagenbeitrag, in dem alle Zeitfunktionen des HP 49G eingehend beschrieben und mit Beispielen belegt werden. Auch die Tricks mit den Ticks werden ausführlich erläutert.
Im Beitrag "Grafik auf dem HP 49G" sind alle Funktionen zur Erstellung und Anzeige von grafischen Objekten (GROBs) eingehend beschrieben.
Zu diesem Thema ist ein Grundlagen-Beitrag vorhanden, der neben allgemeinen Grundlagen zum Tonsystem folgende Beispiele zeigt:
- Beethoven läßt grüßen
(der HP 49G spielt das Lied "Für Elise")- Das Handy klingelt
(der HP 49G ahmt täuschend echt das Handy-Klingeln nach)
Der HP 49G unterstützt auch sogenannte Bibliotheken.
Eine Bibliothek ist ein Objekt, das wiederum Objekte (Programme, Funktionen, Verzeichnisse) enthält, die als Erweiterung des internen Befehlssatzes dienen können oder eigene Programmsysteme zusammenfassen. Sie besteht aus einer binären Datei (Library object), die mit einer bestimmten Nummer gekennzeichnet ist.
Dazu gibt es einen gesonderten Beitrag "Bibliotheken".
Siehe auch Beitrag "Die Portspeicher des HP 49G", wo auch Bibliotheken kurz angesprochen werden.
Zur Inhaltangabe des Beitrags
Zur Beitragsübersicht
Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!