HP-41CY Exkursionen (Teil I)

RAMBOX In dieser Artikelserie möchte ich einige Verfahren, die ich bei verschiedenen Experimenten mit meinem HP-41CY entwickelt habe, dokumentieren. Einerseits als Gedankenstütze für mich selbst, andererseits als Arbeitshilfen für andere 41CY Besitzer. Wie immer gilt: Feedback ist herzlich willkommen, nachmachen auf eigene Gefahr!

Als erstes zeige ich auf, wie man RAMBOX Seiten auf einen PC speichert und wie man ROM Images aus dem Internet in den 41CY lädt. Dazu setze ich voraus, dass eine PIL-Box für die Verbindung von HP-41 mit PC via HP-IL vorhanden ist. Wer noch keine PIL-Box sein eigen nennt, dem kann ich dieses Gerät nur wärmstens empfehlen.

ROM Dateien

Zuallererst möchte ich einige Dateiformate erklären, die im Zusammenhang mit dem HP-41 von Bedeutung sind, und mit dem einfachsten anfangen, den .ROM Dateien. Um das Format dieser Dateien zu verstehen, muss man zwei Dinge wissen:

  • ein HP-41 Wort besteht aus 10 Bits (im Gegensatz zu Computern, wo 16-, 32-, und 64-Bit Worte üblich sind)
  • der HP-41 kann 64K ROM adressieren, der in 16 Seiten à 4K unterteilt ist

Eine solche Seite mit 4K Worten ist das Grundnahrungsmittel der HP-41 Rechner. Eine .ROM Datei enthält genau eine solche Seite, wobei jedes 10-Bit Wort auf 16 Bits erweitert ist (d.h. die sechs höchstwertigen Bits sind künstlich hinzugefügt und normalerweise Null). Ein HP-41 Wort W, bestehend aus den Bits w9, .., w0 (wobei w9 das höchstwertige Bit darstellt), wird also in einer .ROM Datei abgespeichert als:

Byte 1 : 0 0 0 0 0 0 w9 w8
Byte 2 : w7 w6 w5 w4 w3 w2 w1 w0

Somit ist die Grösse einer .ROM Datei gegeben mit 2 x 4K = 8192 Bytes. Das war doch ganz einfach, und so geht es weiter.

MOD Dateien

.MOD Dateien findet man hauptsächlich auf der HP-41 Archive Website von Warren Furlow. Er definierte dieses Dateiformat für seinen HP-41 Emulator. Eine .MOD Datei besteht aus einem Header sowie N Seiten, die so abgespeichert sind wie in .ROM Dateien. Für unsere Zwecke genügt es zu wissen, dass mit Hilfe des ModFile Programms die einzelnen Seiten aus einer .MOD Datei extrahiert werden können (und dann im .ROM Format vorliegen).

Page Dump Dateien

Ein wichtiges Format musste ich selber ableiten, nämlich, wie die HP-41CY Funktion WRTPG die Daten ablegt. Diese Funktion packt 4 HP-41 Worte W0, W1, W2, W3 in 5 Bytes wie folgt:

Byte 1 : w39 w38 w29 w28 w19 w18 w09 w08
Byte 2 : w37 w36 w35 w34 w33 w32 w31 w30
Byte 3 : w27 w26 w25 w24 w23 w22 w21 w20
Byte 4 : w17 w16 w15 w14 w13 w12 w11 w10
Byte 5 : w07 w06 w05 w04 w03 w02 w01 w00

Die zwei höchstwertigen Bits der 4 Worte werden also in 1 Byte zusammengefasst, dann folgen die 8 niederwertigen Bits der 4 Worte, und zwar in umgekehrter Reihenfolge.

LIF Dateien

Wer mit HP-IL arbeitet, wird es unweigerlich auch mit Dateien im Logical Interchange Format (LIF) zu tun bekommen. In diesem Format werden Daten auf HP-IL Speichergeräten abgelegt. Zum Glück müssen wir aber dieses Format nicht genauer kennen, denn es gibt bereits gute Tools, um solche Dateien zu bearbeiten. Ich benutze HPDir, um LIF Dateien auf dem PC zu manipulieren. Wer  näheres über den Aufbau von LIF Dateien erfahren will, den verweise ich auf diesen Artikel.

Export einer HP-41CY Seite als ROM Datei

Nach all der Theorie über Dateiformate wollen wir die erste praktische Aufgabe angehen, nämlich das Speichern einer HP-41CY Seite als .ROM Datei. Damit schaffen wir die Grundlage, um eine Sicherungskopie des HP-41CY Betriebssystems zu erstellen. Folgende Arbeitsschritte führen zum Ziel:

  1. Die gewünschte Seite mit WRTPG via PIL-Box auf den PC speichern.
  2. Seite aus der LIF Datei der PIL-Box extrahieren.
  3. Konvertierung der Page Dump Datei ins .ROM Format.

Zuallererst muss natürlich der 41CY via PIL-Box mit dem PC verbunden werden. Starten Sie jetzt das ILPer Programm und aktivieren Sie die PIL-Box. Nehmen wir an, die Seite 10 (Ah) der 41CY RAMBOX enthält die zu speichernde Seite. Tippen Sie nun die folgenden Befehle in den Rechner ein:

[ALPHA] TEST [ALPHA]
10 XEQ [ALPHA] WRTPG [ALPHA]

Sobald sich der Rechner zurückmeldet, kann das ILPer Programm geschlossen werden. Die Seite ist jetzt in der Datei hdrive1.dat (bzw. in der Datei, die Sie in ILPer unter ‚Mass Storage LIF File‘ eingestellt haben), gespeichert. Mit Hilfe von HPDir können wir den Inhalt von hdrive1.dat auflisten:

> hpdir.exe hdrive1.dat
                          SYS  FILE    NUMBER   RECORD     MODIFIED
FILE NAME             LEV TYPE TYPE   RECORDS   LENGTH DATE       TIME
===================== === ==== ===== ======== ======== ===============
ML                      1 SE80 #e080        1      256 00--00 00:00
NUM                     1 SE80 #e0d0        1      256 00--00 00:00
TEST                    1 SE80 #e070       20      256 00--00 00:00

12288 of 17920 bytes free.
>

Die Datei TEST wird mit dem Typ E070 (ROM image) aufgeführt. Mit dem gleichen Tool können wir die Datei nun extrahieren und mit meinem Hilfsprogramm pg2rom41 vom Page Dump ins .ROM Format konvertieren:

> hpdir.exe -extract hdrive1.dat TEST
> pg2rom41.exe TEST.#e070 test.rom

Das war’s!

Import einer MOD Datei in den HP-41CY

Als nächstes wollen wir eine MOD Datei in den HP-41CY übertragen. Als Beispiel soll uns der David Assembler dienen, den wir später noch brauchen werden. Folgende Arbeitsschritte führen zum Ziel:

  1. ROM Datei aus der MOD Datei extrahieren und ins Page Dump Format konvertieren.
  2. Page Dump Datei zur LIF Datei der PIL-Box hinzufügen.
  3. Page Dump Datei mit READPG via PIL-Box vom PC in den HP-41CY einlesen.

Nachdem wir die MOD Datei runtergeladen haben, können wir die ersten beiden Schritte mit folgenden Befehlen in einem Kommandozeilenfenster durchführen:

> modfile.exe /e DAVID
DAVID.MOD            David Assembler            David A. van Leeuwen
> pg2rom41.exe -r David-2C.ROM DAVID.#e070
> hpdir.exe -add -aux 800102800020 hdrive1.dat DAVID.#e070

Zuerst extrahieren wir also mit ModFile die .ROM Dateien aus der Datei DAVID.MOD. Dies erzeugt die beiden Dateien David-2C.ROM und Labels.ROM (die uns im Moment nicht zu kümmern braucht). Mit Hilfe von pg2rom41 wandeln wir die .ROM Datei ins Page Dump Format und fügen Sie der PIL-Box LIF Datei hdrive1.dat mit dem passenden Typ E070 hinzu. Die etwas kryptische Option ‚-aux 800102800020‘ ist nötig, damit die richtigen Typinformationen gesetzt werden, denn sonst erkennt der HP-41CY die Datei nicht als ROM Image.

Zuletzt können wir das David Assembler Modul via PIL-Box vom PC in den HP-41CY einlesen. Als Ziel wählen wir Seite 11, das wird uns in Teil II noch zu Gute kommen. Tippen Sie, nachdem die PIL-Box verbunden und gestartet wurde, folgende Befehle ein:

[ALPHA] DAVID [ALPHA]
11 XEQ [ALPHA] READPG [ALPHA]

Wenn Sie diese Prozedur beherrschen, liegen Ihrem HP-41CY alle auf der HP-41 Archive Website verfügbaren Module zu Füssen! Toll, oder?

Damit schliesse ich den 1. Teil dieser Serie ab und wünsche viel Spass beim Nachvollziehen der Beispiele.

1 Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.