Nach den Vorbereitungen aus Teil 1 wollen wir jetzt eine Sicherungskopie des HP-41CY Betriebssystems erstellen. Backups sind schliesslich das A und O der Informatik. Eigentlich wissen wir ja schon, wie man eine Seite der RAMBOX als ROM Datei auf dem PC abspeichert. Wer das allerdings für die Seite 8 probiert, die ja bekanntlich das Betriebssystem enthält, wird mit der Fehlermeldung NO ACCESS konfrontiert. Höchste Zeit also, zwei kleine Geheimnisse zu lüften, wie die Schutzmechanismen des HP-41CY auszutricksen sind!
Der versteckte Write Protect Schalter
Die RAMBOX im 41CY besitzt einen Schalter, der den Schreibschutz für die Seite 8 steuert. Er versteckt sich im Innern des Rechners, ist aber über das Batteriefach zugänglich. Die folgende Skizze zeigt die Position des Schalters und die Bedeutung der beiden Schalterstellungen:
Damit man den Schalter bedienen kann, bastelt man sich am besten ein kleines Werkzeug aus festem Draht. Mit ein bisschen Übung lässt sich dann der Schalter leicht umlegen.
WARNHINWEISE
- Damit man an den Schalter rankommt, müssen offensichtlich die Batterien entfernt werden. Solange die Batterien entfernt sind, wird die RAMBOX von der internen Stützbatterie mit Strom versorgt. Man sollte daher die Batterien nur solange wie nötig entfernen und nachher sofort wieder einsetzen.
- In der Stellung ‚Unprotect‘ ist das Betriebssystem der RAMBOX nicht schreibgeschützt und kann somit bei falscher Bedienung zerstört werden!
Ich lehne hiermit ausdrücklich jede Verantwortung ab.
Kopierschutz
Nebst dem hardware-basierten Schreibschutz gibt es noch einen software-mässigen Kopierschutz. Wenn an der Adresse FFD einer Seite ein W steht (d.h. den Wert 017 hat), verweigert das Betriebssystem das Kopieren dieser Seite. Um den Kopierschutz zu umgehen, muss einfach ein anderer Wert in die genannte Speicherstelle geschrieben werden.
HP-41CY Jailbreak
Damit wir nun endlich eine Sicherungskopie des RAMBOX Betriebssystems erstellen können, müssen wir beide Schutzmechanismen ausschalten. Legen Sie zuerst den Write Protect Schalter in die Stellung ‚Unprotect‘ um. Nun müssen wir noch an die Adresse 8FFD einen andern Wert als 017 (W) schreiben. Dazu bedienen wir uns des David Assemblers, den wir in Teil 1 aus einer MOD Datei in den HP-41CY geladen haben:
- Stellen Sie sicher, dass Ihr HP-41CY nicht im USER Modus ist.
- Tippen Sie XEQ [ALPHA] ASSM [ALPHA] ein. Es erscheint die Anzeige:
CONT. _ _ _ _
(sollte eine Anzeige wie unter 3. erscheinen, dann drücken Sie [<—]) - Tippen Sie 8FFD ein. Es erscheint die Anzeige:
8FFD 017 W - Gehen sie jetzt mittels BST eine Speicherstelle zurück und tippen Sie 018 ein. Es erscheint die Anzeige:
8FFD 018 X - Drücken Sie zweimal [<—], um den David Assembler wieder zu verlassen.
Jetzt kann mit der bekannten Prozedur das RAMBOX Betriebssystem als .ROM Datei exportiert werden. Also, den Rechner via PIL-Box mit dem PC verbinden, ILPer starten, die PIL-Box aktivieren, und dann am Rechner folgendes eintippen:
[ALPHA] WWRB64A [ALPHA]
8 XEQ [ALPHA] WRTPG [ALPHA]
Nun ILPer beenden und in einem Kommandozeilenfenster am PC folgende Befehle ausführen:
> hpdir.exe -extract hdrive1.dat WWRB64A > pg2rom41.exe WWRB64A.#e070 wwrb64a.rom
Eigentlich wäre das Backup jetzt erstellt, hätten wir nicht die Speicherstelle 8FFD geändert, um den Kopierschutz zu umgehen. Darum müssen wir die Datei noch in einem Hex-Editor öffnen und den Ist-Zustand auf den Soll-Zustand ändern (fünftletztes und letztes Byte):
00 18 00 17 00 B9 (IST) 00 17 00 17 00 BA (SOLL)
Das letzte Wort einer Seite (also die letzten zwei Bytes in der .ROM Datei) enthält die Prüfsumme und wird offensichtlich beim Schreiben einer Seite mit WRTPG neu berechnet.
So, jetzt haben wir eine Sicherungskopie des Betriebssystems der RAMBOX A. Bevor wir auch eine Sicherungskopie der RAMBOX B erstellen, wollen wir zuerst die Modifikation zum Abschalten des Kopierschutzes wieder rückgängig machen:
- Stellen Sie sicher, dass Ihr HP-41CY nicht im USER Modus ist.
- Tippen Sie XEQ [ALPHA] ASSM [ALPHA] ein. Es erscheint die Anzeige:
CONT. _ _ _ _
(sollte eine Anzeige wie unter 3. erscheinen, dann drücken Sie [<—]) - Tippen Sie 8FFD ein. Es erscheint die Anzeige:
8FFD 018 X - Gehen sie jetzt mittels BST eine Speicherstelle zurück und tippen Sie 017 ein. Es erscheint die Anzeige:
8FFD 017 W - Drücken Sie zweimal [<—], um den David Assembler wieder zu verlassen.
- Zum Schluss müssen wir noch die Prüfsumme der Seite 8 neu berechnen:
8 XEQ [ALPHA] PGSUM [ALPHA]
Es erscheint die Anzeige:
PG:08 WW-4D
WW-4D BROKEN
Die Meldung ‚BROKEN‘ ist korrekt, da ja durch die Änderung der Speicherstelle 8FFD die Prüfsumme falsch war.
Jetzt folgt das gleiche Spiel für die RAMBOX B. Aber anstatt mit dem Befehl PG<> auf die RAMBOX B umzuschalten, benutzen wir den Befehl PG10. Damit erhalten wir Zugriff auf die Seiten der RAMBOX B mit gerader Seitennummer (und somit auch auf die Betriebssystem-Seite 8) und die Seiten der RAMBOX A mit ungerader Seitennummer (also auch auf den David Assembler in Seite 11). Also, los geht’s:
- Schalten Sie mit PG10 auf die RAMBOX B (im „Interleaved“ Modus) um.
- Editieren Sie die Speicherstelle 8FFD auf den Wert 018 (X), siehe oben.
- Speichern Sie die Betriebssystem-Seite via PIL-Box auf den PC:
[ALPHA] WWRB64B [ALPHA]
8 XEQ [ALPHA] WRTPG [ALPHA] - Extrahieren Sie die Seite aus der PIL-Box Datei und konvertieren Sie diese ins .ROM Format:
> hpdir.exe -extract hdrive1.dat WWRB64B > pg2rom41.exe WWRB64B.#e070 wwrb64b.rom
- Ändern Sie die letzten Bytes der .ROM Datei von Ist- auf den Soll-Zustand:
00 18 00 17 02 29 (IST) 00 17 00 17 02 2A (SOLL)
- Machen Sie, wie oben beschrieben, die Modifikation zum Abschalten des Kopierschutzes wieder rückgängig und berechnen Sie die Prüfsumme der Seite 8 neu.
Zum Schluss können Sie den Write Protect Schalter im Rechner wieder auf die Stellung ‚Protect‘ umlegen. Gratulation, Sie haben das Betriebssystem Ihres HP-41CY auf dem PC gesichert! Und wie stellt man das Betriebssystem wieder her, wenn es sich z.B. wegen einer erschöpften Stützbatterie verflüchtigt hat? Tja, keine einfache Sache, wir werden im nächsten Teil die Grundlagen dazu erarbeiten.