Nachdem ich die Handbücher zum Advanced Pac Screen (APS) 1.1 und 2.0 eingescannt habe und diese nun hier und an weiteren üblichen Orten wie hp41.org und literature.hpcalc.org verfügbar sind, habe ich mich daran gemacht, die Demo-Programme aus dem Handbuch als LIF-Datei bereitzustellen.
Gesagt, Getan?
Erstens dauert es länger, und zweitens als man denkt. Mein Plan war einfach: da das APS 1.1 Handbuch mit OCR „behandelt“ wurde, wollte ich einfach die Programmtexte aus der PDF-Datei in einen Texteditor kopieren und dann mit Hilfe der LIFUTILS daraus eine LIF-Datei erzeugen. Diese Datei könnte ich dann in pyILPER mounten und über die PIL-Box in die entsprechenden HP-Taschenrechner einlesen.
Zwei Dinge habe ich dabei zu wenig bedacht:
- OCR funktioniert gut für „normale“ Texte, aber nicht unbedingt so gut für Programmtexte. Der Grund ist relativ einfach: wenn ein Zeichen nicht gut erkannt wurde (z.B. wegen ungenügender Scanqualität oder wegen einer schlechten Vorlage), kann man über Wörterbücher und statistische Modelle die Erkennungsrate verbessern. Im Prinzip könnte man das auch für Programmtexte machen, aber das würde ein entsprechend trainiertes OCR-Programm erfordern.
- Meine Erwartung, dass die im Handbuch abgedruckten Programme auch wirklich funktionieren und fehlerfrei sind, wurde definitiv nicht erfüllt.
OCR-Probleme
Die häufigsten Probleme, über die ich gestolpert bin, waren Verwechslungen zwischen Null und O, I und 1, @ und 6. Für die HP-41 Programme war das relativ unkritisch, weil man bei der Kompilierung mittels comp41
der Textdatei in eine HP-41 Programmdatei schnell ein Feedback hat, ob die Textdatei ein gültiges Programm darstellt oder nicht.
Für die HP-71/HP-75 Programme war es ein bisschen mühsamer, weil ich kein Tool habe, um Textdateien in HP-71/HP-75 Programmdateien zu kompilieren. Die LIFUTILS beinhalten nur die Programme textlif
und textlif75
, um eine Textdatei für diese Rechner aufzubereiten. Ob dies gültige Programme sind, erfährt man erst, wenn man die Datei in einen dieser Taschencomputer einliest und mittels TRANSFORM .. INTO BASIC
in eine Programmdatei verwandelt.
Dieser Teil war definitiv mühsamer als erwartet, aber eigentlich nicht wirklich überraschend, hätte ich mir zu Beginn den Prozess und mögliche Schwierigkeiten genauer überlegt.
Fehlerhafte Programme
Ich muss sagen, dass ich ein wenig überrascht und enttäuscht war, dass nicht alle Programme aus dem APS 1.1 Handbuch auf Anhieb funktioniert haben. Hier zwei Beispiele:
- UHR: In diesem Programm habe ich gleich zwei Probleme entdeckt. Zum einen wurde es im Handbuch als HP-71 und HP-75 Programm deklariert. Aber
GOTO
undGOSUB
Befehle mit einer Marke anstatt einer Programmzeilennummer funktionieren nur auf dem HP-71. Das lässt sich natürlich leicht anpassen, aber ich habe mich schlussendlich zufrieden gegeben, das Programm auf dem HP-71 laufen zu lassen.
Zudem hat die Wochentagsberechnung nicht korrekt funktioniert. Ich hoffe, ich habe das jetzt richtig hingekriegt. Dabei habe ich gelernt, dass die Datums- und Zeitbezogenen Befehle des HP-71 etwas merkwürdig sind. So kann man z.B. beiSETDATE
eine vierstellige Jahreszahl angeben, aberDATE
liefert nur eine zweistellige Jahreszahl zurück. Nett wäre es auch gewesen, wenn eine Wochentagsberechnung schon im HP-71 implementiert gewesen wäre. - Lissajous: Das Problem in diesem Programm war ein wenig subtiler. Die Berechnungsfunktion liefert Punkte (x,y) im Bereich x: -1..+1 und y: -1..+1 und die Skalierung des Plotters wird entsprechend gesetzt. Dabei können auch Werte sehr nahe 0 erzeugt werden, die dann mittels PRINT Befehl an den Plotter geschickt werden. Bei der Zahlenformatierung kann es für solche Werte nahe Null dann passieren, dass sie in der wissenschaftlichen Notation, also mit Exponent, ausgegeben werden. Damit scheint des APS aber seine Mühe zu haben. Schlussendlich hat hier ein passender
PRINT USING
Befehl Abhilfe geschaffen.
Ohne Fleiss kein Preis
Ich habe mich durchgekämpft und alle Programme digitalisiert und erfolgreich getestet, ausser dem Programm PLOTAXIS, das ich persönlich nicht so spanned fand. Ich habe das Projekt auf Github publiziert. Wer dort keinen Account hat, kann auch dieses ZIP-Archiv herunterladen. Ich wünsche viel Spass beim Ausprobieren!
