Tools für den HP 49G

"Third Party Tools"

Die hier verwendete Notation ist in einem gesonderten Beitrag zusammengestellt.

Inhalt

Einleitung
"Third Party Tools" für den HP 49G
Dank an alle Autoren
1.Packen und Entpacken mit BZT
Kurzbeschreibung
Packen und Entpacken
Selbstentpackende Archive
Selbststartende Programme
Verzeichnisse packen und entpacken
 
2. Einheiten erzeugen und verwalten mit UNITMAN
 
3. Tastatur maßschneidern mit KEYMAN
 
4. Bibliotheken erzeugen und zerlegen mit D<-->L
 
5. Verstecken und wieder anzeigen mit Hide
Verstecken (hide)
Wieder anzeigen (unhide)

Vor dem Experimentieren mit Tools:

Sichern des Benutzerspeichers mit Arch1 und Arch2
Beschreibung von ARCH1 und ARCH2
Installieren

Zur Beitragsübersicht


Einleitung

Im Lieferzustand ist der HP 49G nicht vollkommen, wie jedes andere Industrieprodukt auch.

Er hat eine bestimmte Grundausstattung, die auf die Bedürfnisse einer Anwendergruppe (Zielgruppe) ausgerichtet ist. Jeder Anwender hat aber seine individuellen Erwartungen und Wünsche, "was der HP 49G auch noch können müßte oder sollte". Solche Erwartungen können von keinem Produkt erfüllt werden, sei es ein Auto, ein Computer, ein Kinderwagen oder eben ein wissenschaftlicher Taschenrechner.

Bei den Personal Computern (PC) gibt es einerseits den Betriebssystem-Hersteller und andererseits den Anwender. Es dauerte ziemlich lange, bis brauchbare Anwenderprogramme (Standardprogramme) lieferbar waren. Trotzdem fehlten Hilfsprogramme, die bei der Reorganisation, bei der Datensicherung, nach einem Systemcrash und bei vielen anderen System-Problemen gebraucht wurden, die aber der Betriebssystemhersteller nicht lieferte. Hier sprangen sogenannte Dritt-Anbieter mit ihren ausgetüftelten Hilfsprogrammen (Werkzeuge, engl.: tools) ein. Ein Dritt-Anbieter ist neben dem Hersteller und dem Anwender der Dritte im Bunde ("der Dritte" = engl.: third party).

Manche nennen ihre Tools auch Utilities.

Achtung:

Da die Tools laufend verbessert und aktualisiert werden, kann die nachfolgende Beschreibung der einzelnen Tools veraltet sein und von den aktuellen Versionen wesentlich abweichen.

Es wird empfohlen, immer die aktuellen Tools mit der zugehörigen Beschreibung zu verwenden.

"Third Party Tools" für den HP 49G

Auch beim HP 49G ließ und läßt der Hersteller viele Wünsche offen. Aufgrund der vielfältigen Einsatzgebiete und Interessen der Anwender sind hier spezielle Tools erforderlich. Weil die Firma HP solche Wünsche auch bei den regelmäßigen Flash-ROM-Updates nicht erfüllen kann, haben die Experten aus dem Anwenderkreis ihre eigenen Tools kostenlos zur Verfügung gestellt und keine Zeit und Mühe gescheut, diese "Third Party Tools" zu optimieren.

Diese Tools haben den Vorteil, daß sie

  1. kostenlos sind (nur die Downloadgebühren fallen an),
  2. immer auf dem neuesten Stand sind,
  3. viel Zeit und Mühe einsparen und
  4. den echten Bedürfnissen der jeweiligen Anwendergruppe angepaßt sind.

Eine der wichtigsten und aktuellsten Quellen für solche Tools ist die Datenbank von Eric Rechlin unter www.hpcalc.org. Dort bieten Experten von Rang und Namen ihre Programme für die HP-Taschenrechner an.

Dank an alle Autoren

Bevor nachfolgend einige dieser Tools besprochen werden, sei an dieser Stelle zuerst auf das selbstlose Engagement der Autoren dieser Tools hingewiesen.

Die Programmierung solcher Tools erfordert profunde Kenntnis des Rechnersystems, hohes Können und einen immensen Aufwand an Zeit und Geduld. Dies kommt der gesamten HP-Allgemeinheit zugute.

Jeder Nutznießer dieser Tools sollte dankbar sein, daß es noch solche Idealisten gibt, denen der Dank und die Anerkennung der ganzen HP-Anwendergemeinde für ihre Leistung gebührt.

Danke!


1. Packen und Entpacken mit BZT

Speicherplatz war und ist immer noch knapp, insbesondere auf den Taschenrechnern.

Beim PC ist jedem der Begriff "Packerprogramm" geläufig, mit dem Dateien auf einen Bruchteil ihrer Größe komprimiert (gepackt) werden können. Die Programme PKZIP, UNZIP, WINZIP, LHA u.a. sind jedem Computernutzer bekannt.

Solche Packerprogramme (Komprimierer) gibt es auch für den HP 48/49. Sie sind bei www.hpcalc.org unter "Utilities" und dort unter "Compression Tools" zu finden.

Hier soll nur Compression-Tool BZT vorgestellt werden. Autor von BZT ist Herr Prof. Dr. Wolfgang Rautenberg.

BZT wird als Programm auf den HP 49G ins HOME-Verzeichnis geladen und ist sofort einsatzfähig. Einzelheiten sind der dem Programm beigefügten ausführlichen englischen Beschreibung BZT.txt zu entnehmen.

Kurzbeschreibung.

Packen - Entpacken

  1. BZT erwartet ein Objekt in Stackebene 1.
    Dieses Objekt kann entweder ein einfaches oder ein zusammengesetztes Objekt (z. B. eine komplette Directory) sein.
    Wenn man nur den Verzeichnisnamen in den Stack stellt, läuft es etwas anders, siehe dazu Verzeichnisse packen und entpacken weiter unten.
  2. Packen:
    Nach Aufruf von BZT wird das im Stack befindliche Objekt komprimiert ("BZ-compressed") und in einen BZ-String gepackt. Der erzeugte String beginnt mit "BZ......" und enthält das vollständige Objekt in komprimierter Form. Der Komprimierungsgrad hängt davon ab, ob das Objekt viele gleichartige oder verschiedene Bytes enthält.
  3. Speichern:
    Der BZ-String steht im Stack und kann dann unter einem geeigneten Namen abgespeichert werden.
  4. Entpacken:
    Ein erneuter Aufruf von BZT verwandelt den im Stack befindlichen BZ-String wieder in das ursprüngliche Objekt zurück.

Beispiel:

Als Beispiel soll das im Beitrag "Grafik" angebotene Kalenderprogramm KALND dienen. Das Bild_1 zeigt daraus das Originalprogramm KAL als Stackinhalt, in Bild_2 ist der BZ-String zu sehen. Die restlichen Objekte des Verzeichnisses KALND sind versteckt.

Bild_1
Bild_1: Original-Quelltext von Programm KALND
Bild_2
Bild_2: BZ-String aus Programm KALND

Am oberen Rand des LCD-Bildschirms wird nach Abschluß des Vorgangs die Größe des Objekts vor (2254 Bytes) und nach dem Komprimieren (867 Bytes) und der Komprimierungsgrad (-61.54 %) angegeben. Wie man in Bild_2 auch sieht, wird mit Erscheinen des BZ-Strings ein Menü angeboten, mit dem außer dem Menüaufruf von BZT zusätzliche Optionen möglich sind, die nachfolgend beschrieben werden.

Selbstentpackende Archive

Der Menüpunkt UBZi hängt an den BZ-string den BZT-Aufruf zur Entpackung an. Diese Option eignet sich nur für den internen Gebrauch auf dem eigenen HP 49G, auf dem das BZT-Programm vorhanden und global bekannt ist. Andere HP49 können das komprimierte Objekt nur entpacken, wenn sie ebenfalls BZT geladen haben.

Der Menüpunkt UBZe hängt ein kleines, aber komplettes 49-Entpackungsprogramm an das komprimierte Objekt an. Dies eignet sich für den externen Gebrauch, wenn der Zielrechner nicht BZT geladen hat. Man kann auf diese Weise ein komprimiertes Objekt an einen anderen HP49-Anwender schicken. Dieser muß nicht im Besitz von BZT sein, sondern kann dank dieses Anhängsels das Objekt sofort entpacken. Jeder HP49 akzeptiert diesen angehängten Entpacker.

Selbststartende Programme

Der Menüpunkt +EVL hängt an ein komprimiertes und mit dem internen oder externen Entpacker versehenes Objekt einen EVAL-Befehl an. Dieser Befehl darf nur einmal angehängt werden, sonst gibt es später nach dem Entpacken Fehler bei der Programmausführung.

"Verschlüsselung" von HP-Programmen

Wer sich bisher schon geärgert hatte, daß er ein HP49-Programm nur im Quellcode, für jeden offen einsehbar, weitergeben konnte, der hat jetzt die Möglichkeit, sein Programm mit BZT zu komprimieren, UBZe und +EVL anzuhängen und es so "verschlüsselt" zu veröffentlichen.

Der Empfänger des Programms kann es in einer Variable speichern und - ohne es zu entpacken - dank der eingebauten Funktionen UBZe und +EVL sofort aufrufen. Es funktioniert einwandfrei. Den Quelltext kann man nicht sichtbar machen, es ist nur der BZ-String sichtbar. Ein Entpacken mit BZT funktioniert nicht, weil die angehängten Funktionen stören.

Der Kenner der OT49 Operating Tools (Quelle und Autor wie oben) jedoch kann das auf diese Weise "verschlüsselte" Programm aber trotzdem "entschlüsseln", indem er über 3tog die Zusätze entfernt, dann ->XU aufruft und dann mit BZT den Quellcode hervorzaubert.

Beispiel:

An das oben komprimierte Programm KAL wurde noch UBZe und +EVL angehängt. Das Ergebnis ist in Bild_3 zu sehen. Man sieht den Beginn des oben gezeigten BZ-Strings und anschließend die SYS-RPL-Codes, die dazugebunden worden sind. Im Menü sieht man KAL (das Originalprogramm) und KKK (die Variable mit dem "verschlüsselten" Programm). Nun geben wir 3 2001 (für Monat und Jahr) in den Stack und rufen KKK auf. Das Ergebnis des Programmlaufs ist in Bild_4 rechts zu sehen.

Bild_3
Bild_3: "Verschlüsseltes" Programm
Bild_4
BIld_4: Ergebnis des Programms

Verzeichnisse packen und entpacken

BZT komprimiert auch ganze Verzeichnisse mit allen Unterverzeichnissen und allen versteckten Objekten.

Vorgang:

  1. Packen:
    Dazu wird der Name des Verzeichnisses, der im übergeordneten Menü angezeigt wird, in ' ' in den Stack gestellt (z. B. 'KALND'). Nach dem Aufruf von BZT steht nur ein einzelnes Objekt '*' im betreffenden Verzeichnis, der vorherige Inhalt ist verschwunden, er ist in '*' enthalten.
  2. Entpacken:
    Führt man das Objekt '*' aus (zugeordnete F-Taste drücken), dann sind alle vorherigen Inhalte des Verzeichnisses wieder vorhanden.

2. Einheiten erzeugen und verwalten mit UNITMAN

Der Begriff "Einheit" ist vielfältig. Hier sind Einheiten für Maße, Gewichte und andere Anwendungen gemeint.

Im Beitrag "Einheiten" ist beschrieben, wie man Einheiten auf dem HP 49G erzeugt, verwendet und verwaltet. Das kann man mit "Bordmitteln" des Rechners machen oder einfacher, schneller und wirkungsvoller mit dem Tool UNITMAN erledigen. Dieses Tool ist im genannten Beitrag ausführlich beschrieben, so daß hier nur darauf zu verweisen bleibt.


3. Tastatur maßschneidern mit KEYMAN

Die Belegung der Rechnertastatur nach Belieben des Anwenders kann ebenfalls mit "Bordmitteln" des HP 49G erfolgen. Dies ist im Beitrag "Tastatur" beschrieben. Einfacher, schneller und wirkungsvoller kann man die Tastaturbelegung mit dem Tool KEYMAN verändern und verwalten.

Das Tool KEYMAN (LIB 1200; Autor: Herr Prof. Dr. Wolfgang Rautenberg) ist unter ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/KEYMAN.zip
zu finden.

Auf die ausführliche englisch-sprachige Anleitung, die dem Programm beigefügt ist, wird verwiesen.


4. Bibliotheken erzeugen und zerlegen mit D<-->L

D<-->L ("Directory to Library" und umgekehrt) ist ein Tool aus den Operating Tools OT49 (LIB 360); Autor: Herr Prof. Dr. Wolfgang Rautenberg).
OT49 ist zu finden unter ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/OT49.zip.

OT49 enthält viele wertvolle Tools für den Normal-Anwender und für den Experten. Hier soll nur das Tool D<-->L herausgegriffen und näher besprochen werden. Es wird empfohlen, die restlichen Tools gemäß der Beschreibung (Datei "OT49.txt" in Englisch) anzuwenden.

D<-->L ermöglicht die Erzeugung von HP49-Bibliotheken aus einem Programmverzeichnis mit dem geringsten Aufwand. Außerdem kann eine bestehende Bibliothek damit in ihre Bestandteile (Programme, Befehle) zerlegt (gesplittet) und das ursprüngliche Verzeichnis wieder hergestellt werden, was mit "Bordmitteln" des HP 49G nicht möglich ist.

Dieses Tool wird im Beitrag "Bibliotheken" näher vorgestellt.


5. Verstecken und wieder anzeigen mit Hide

Hide ist ein Tool aus den Operating Tools OT49 (LIB 360; Autor: Herr Prof. Dr. Wolfgang Rautenberg). Diese sind zu finden unter ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/OT49.zip.
Hide (LIB 1202) kann auch als Einzel-Tool von derselben Adresse ftp://ftp.math.fu-berlin.de/pub/usr/raut/HP49/tools/ heruntergeladen werden.

Hinweis: Objekte, die sich nicht als Library oder anderes gültiges Objekt dem HP 49G zu erkennen geben, sondern als corrupted string "HPHP49 ... " erscheinen, können mit dem neuen Tool ObFx aus OT49 zur Vernunft gebracht werden, wenn nur die "Transportverpackung", aber nicht das Objekt selbst beschädigt ist.

OT49 enthält außerdem noch viele andere wertvolle Tools für den Normal-Anwender und für den Experten. Hier wird das Tool Hide vorgestellt. Es wird empfohlen, die restlichen Tools gemäß der Beschreibung (Datei "OT49.txt" in Englisch) anzuwenden.

Mit Hide aus OT49 kann man alle Menüobjekte, die in einem Verzeichnis nicht unbedingt sichtbar sein sollen, verstecken. Zum Beispiel alle Variablen, die irgendwelche Daten enthalten und die nur per Programm aufgerufen werden. Sichtbar bleibt dann nur das Programm und die von Programm erzeugten Ergebnisvariablen. Auf die versteckten Menüobjekte kann voll zugegriffen werden. Man kann sie per Tastatur (sofern man die Namen auswendig weiß) aufrufen und per Programm voll damit arbeiten.

Vorgang:

Verstecken (hide):

  1. Hide aus den OT49 aufrufen. Es erscheint eine Eingabemaske, in die man alle zu versteckenden Objekte eingeben kann. Das Menü des aktuellen Verzeichnisses ist in der Maske sichtbar.
  2. Die Namen der zu versteckenden Objekte werden eingegeben oder aus dem angezeigten Menü per F-Tasten ausgewählt.
  3. Anschließend wird [ENTER] betätigt.

Als Beispiel soll wieder das oben schon erwähnte Verzeichnis KALND dienen. In nachfolgendem Bild_5 sind alle Menüobjekte, die Hide-Maske und die eingegebenen Werte (vor dem Verstecken) zu sehen. Hier im Beispiel ist KAL das Hauptprogramm, das sichtbar bleiben muß, WOT, KW und MON sind Unterprogramme, die von KAL aufgerufen werden und deshalb versteckt werden sollen.

Es dürfen nicht alle Objekte eines Menüs (das mehrere Seiten haben kann) versteckt werden, mindestens eines muß sichtbar bleiben.

Sollten alle Objekte eingegeben worden sein, dann wird Hide nicht ausgeführt.

 

Bild_5
Bild_5: Zulässige Eingabe nach Aufruf von Hide
Bild_6
Bild_6: WOT KW und MON sind versteckt.

Wieder anzeigen (unhide):

Das Verzeichnis (nach dem Verstecken) enthält (hier in diesem Beispiel) nur noch ein Menüobjekt (siehe Bild_6).

  1. Um die versteckten Objekte wieder anzuzeigen, wird ebenfalls Hide aufgerufen und die Taste [ENTER] gedrückt. Die Bildschirmanzeige
    Hide
    ENTER = unhide
    sagt aus: Wenn keine Objekte eingegeben werden, sondern nur die Taste [ENTER] gedrückt wird, dann wird der Vorgang umgekehrt (unhide).
  2. Nun werden wieder alle Objekte als Menüpunkte angezeigt.

Im File-Manager ist trotzdem alles sichtbar

Bild_7
Bild_7: Versteckte Objekte sind im File-Manager sichtbar.

Die versteckten Objekte sind nach dem Verstecken immer noch im File-Manager [leftshift][FILES] sichtbar. Dort ist (wie in Bild_7 zu sehen) auch ein Stringobjekt "..."" vorhanden, das vorher nicht existierte. Wenn dieses (im File-Manager) gelöscht wird, wird auch alles wieder sichtbar (unhide).


Vor dem Experimentieren mit Tools:

Sichern des Benutzerspeichers mit ARCH1 und ARCH2

Wenn man viel mit fremden Tools herumprobiert und deren Handhabung anfangs noch nicht voll beherrscht, kann es schon vorkommen, daß man sich den ganzen Benutzerspeicher zerschießt (beim Autor öfters vorgekommen!).

"Try To Recover Memory? YES NO" fragt der Rechner dann scheinheilig. [YES] im Menü zu aktivieren, bringt meist nichts; man müßte dann alle Variablen, die nur Nummern als Namen haben, neu zuordnen. Bei [NO] meldet er "Memory Clear!". Alles klar?

Deshalb hat sich der Autor zwei kleine Tools für den Backup aller seiner Speicherinhalte gemacht.
Bevor er zu experimentieren beginnt (und auch zwischendurch), sichert er den Benutzerspeicher in einen Portspeicher. Dazu gibt es den Befehl ARCHIVE, der in die Programme ARCH1 und ARCH2 eingekleidet ist.

  1. ARCH1 sichert nach Port :1: und
  2. ARCH2 sichert nach Port :2:.

Die beiden Programme ARCH1 und ARCH2 sind identisch aufgebaut.

Anstelle der Verwendung dieser Programme kann auch mit dem Befehl ARCHIVE allein gesichert werden. Dieser sichert für das HOME-Verzeichnis und für alle Unterverzeichnisse

  1. alle Variablen,
  2. die Tastenzuordnungen (user-key assignments) und
  3. den Alarmkatalog

in das erzeugte Backup-Objekt in Port :1: oder :2: oder auf dem PC. Nicht gesichert werden bei ARCHIVE die Flageinstellungen.

Da der Port :1: mit 256 KB nicht besonders groß ist, sollte man vorwiegend nach Port :2: sichern. Sichern in Port :0: wäre Unsinn, weil dieser mit dem Benutzerspeicher gekoppelt ist und mit abstürzen könnte.

Beschreibung von ARCH1 und ARCH2

Autor: Otto Praxl

Zu Beginn führt das Programm den Befehl RCLF zur Sicherung der Flags aus, die dann in eine im HOME-Verzeichnis angelegte Variable 'Flagsave' gespeichert werden. Dann führt das Programm den Befehl ARCHIVE aus und erzeugt einen Archivnamen der Art ":n:ADDMMhhmm", wobei :n: die Portnummer ist und A "Archiv" bedeutet. DD und MM sind Tag und Monat, hh und mm sind Stunde und Minute (jeweils zweistellig, gegebenfalls mit führenden Nullen) des Speicherungszeitpunktes. Die Jahreszahl wird nicht verwendet, weil sich alles im engen Zeitrahmen abspielt. Selbst beim Jahreswechsel bleiben die Speichertermine eindeutig.

Die Reihenfolge DDMM im generierten Namen gilt bei deutscher Datumsschreibweise DDMM (Flag -42 = 1).

Bei der amerikanischen Datumsschreibweise MMDD (Flag -42 = 0) ist auch der Archivname in der Reihenfolge MMDD zu lesen.

Bild_8
Bild_8: Messagebox nach Backup

Wurde, wie in dem in Bild_8 gezeigten Beispiel, am 04.03. um 23:13 Uhr mit ARCH2 ein Backup erzeugt, dann hat das Archiv den Namen ":2:A04032313" und ist in Port :2: gespeichert. Führt man den Backup innerhalb einer Minute zweimal aus, wird ein schon existierender Backup gleichen Namens überschrieben.

Nach dem Backup ertönt ein Signal und eine Messagebox erscheint, die mit OK quittiert werden muß (Bild_8).

Mit ARCH1 wird entsprechend in Port :1: gespeichert.

Sortiert man im File-Manager Port :2: nach Namen, dann kann man gelegentlich die älteren Backups löschen, damit man sich nicht zumüllt.

Installieren

Die Programme ARCH1 und ARCH2 sollten in Port :2: gespeichert werden.

Vor dem Zurückspeichern des Sicherungsarchivs mit RESTORE sollte man über die Taste [MODE] den RPN-Modus einstellen, dann tut man sich bei den Aufrufen leichter.

Nach dem RESTORE fällt im HOME-Verzeichnis die Variable 'Flagsave' auf, mit deren Inhalt man per Befehl STOF die ursprünglichen Flageinstellungen wiederherstellt.

Nun hat man seinen um hh:mm Uhr gespeicherten Zustand wieder und kann dort aufsetzen oder wieder von vorne anfangen. Alles klar?


Zur Inhaltsangabe dieses Beitrags
Zur Beitragsübersicht
Copyright © 2002 Otto Praxl
Alle Rechte vorbehalten!