Der HP-41CY Taschenrechner von W&W Software Products GmbH war schon des öftern Thema in meinem Blog, insbesondere das Wiederherstellen des Betriebssystems. Meine letzten Bemühungen, dafür eine Lösung zu finden, scheiterten leider. In letzter Zeit habe ich mich jedoch mit MCODE – der Maschinensprache des HP-41 – auseinander gesetzt. Zeit, nochmals einen Versuch zu wagen und den HP-41CY zu bezwingen.
Der HP-41CY bietet bekanntlich 2 x 32K RAM, zwischen denen man hin- und herschalten kann (im folgenden als Bank A und B bezeichnet). Die erste Seite (8) dieser Blöcke enthält das Betriebssystem. Das Betriebssystem in Bank A unterscheidet sich dabei leicht von dem in Bank B. Der Grund ist im wesentlichen, wie der HP-41CY das Bank Switching implementiert. Er interpretiert die Maschinensprache-Befehle ENBANK1, ENBANK2 und ENBANK3, die normalerweise NOPs sind. Diese Befehle haben im HP-41CY die folgende Wirkung:
ENROM1 | Aktiviert alle Seiten der Bank A. |
ENROM2 | Aktiviert die ungeraden Seiten von Bank B. |
ENROM3 | Aktiviert die geraden Seiten von Bank B. |
Um von Bank B auf A umzuschalten, reicht also ein ENROM1 Befehl. Um von Bank A auf B umzuschalten, muss man ENROM2 und ENROM3 ausführen. Das ist asymmetrisch und die Implementierung der Funktion PG<> hängt also davon ab, welche Bank gerade aktiv ist. Das ist auch der Grund, warum es zwei Varianten des HP-41CY Betriebsssytems gibt.
Ein weiteres wichtiges Detail ist, dass die ENROMx Befehle nur wirken, wenn sie im RAM ausgeführt werden. Sobald der HP-41 eine ENROMx Instruktion ausgeführt hat, holt er die nächste Instruktion aus der neuen Bank. Wenn dort kein gültiger Befehl steht, kann alles mögliche passieren. Das ist ein Grund, wieso ein HP-41CY verrückt spielen kann. Wenn die interne Stützbatterie zu schwach ist, kann das RAM die Daten (inklusive Betriebssystem) verlieren und dann hat man den Salat.
Man könnte nun meinen, das Aufspielen des Betriebssystem ist ein Klacks, man hat ja zum Beispiel das wunderbare CLONIX Modul. Dem ist aber leider nicht so, es gibt den einen oder anderen Knackpunkt! Es hat mich einige Tage und Nächte gekostet, eine Prozedur zu entwickeln, um das Betriebssystem sicher wieder einzuspielen. Da es da draussen sich andere HP Fans gibt, die vor dem gleichen Problem stehen, habe ich mein Initialisierungsmodul RB2INI öffentlich publiziert. Schliesslich ist ja schon bald Weihnachtszeit!
Das genaue Vorgehen und die interessanten Details habe ich als Teil dieser Projekts beschrieben und wiederhole sie an dieser Stelle nicht. Ich kann aber sagen, dass es ein spannendes Abenteuer war und mein erstes Projekt, bei dem ich meine bescheidenen MCODE Kenntnisse erfolgreich einsetzen konnte.
In diesem Sinne: Lang lebe der HP-41CY!
Großartige Arbeit!
Vielen Dank!
Klasse! Dass sich 30 Jahre später immer noch Menschen für diese Tachenrechner begeistern. Mit dem Clonix-41 konnten Sie also Ihren CY erfolgreich wieder zum Leben erwecken. Gut zu wissen, denn ich nutze immer noch meinen selbst zusammengelöteten Prototyp der W&W Rambox. Ich traue mich nicht, sie vom Rechner abzuziehen, denn die Lithium-Zelle ist inzwischen wahrscheinlich leer. Mein damals für’s MLDL selbstgeschriebenes Betriebssystem tut es noch, aber wer weiß…