Der Freiburger Code

Der Freiburger Code ist eine Erweiterung des Maschinencodes der Z22, die von der ZUSE KG und dem Mathematischen Institut der Uni Freiburg entwickelt wurde. Er hilft insbesondere dabei, mathematische Probleme mit der Maschine komfortabel zu lösen.

Statt zu assemblieren, oder gar weitere Maschinenbefehle in Hardware vorzusehen, besteht der Freiburger Code vornehmlich aus einer Routinensammlung. Sie ermöglicht es,

Die Zahlendarstellung entspricht weitgehend der heute in Computern üblichen, mit einem Zahlenbereich von 0.4 * 10-19 bis 0.7 * 1019. Dabei kann die Mantisse 9 Stellen haben.

Der normale Maschinencode ist nun noch um einige Befehle erweitert worden:
BefehlBedeutung
BmInhalt der Speicherzelle m in den Akku laden
TmInhalt des Akkus in Speicherzelle m seichern und Akku löschen
UmInhalt des Akkus in Speicherzelle m speichern
+Inhalt von Akku und Speicherzelle 6 addieren und in beide Register zurüschreiben
-Inhalt von des Akkus von dem der Speicherzelle 6 abziehen und das Ergebniss in beide Register speichern
XInhalt von Akku und Speicherzelle 6 multiplizieren und das Ergebnis in beide Register speichern
:Inhalt von Speicherzelle 6 durch den Inhalt des Akkus dividieren und das Ergebnis in beide Register speichern
Wdie Quadratwurzel des Akkuinhalts in den Akku und die Speicherzelle 6 speichern
HWden Akkuinhalt quadrieren, von 1 abziehen, aus dem Ergebnis die Quadratwurzel ziehen und in den Akku und Speicherstelle 6 speichern
MMultiplikation des Akkuinhalts mit -1 und Speichern des Ergebnisses im Akku und Zelle 6
QQMAbsolutbetrag des Akkuinhalts bilden und in Akku und Speicherzelle 6 speichern
Dden Akkuinhalt auf dem Fernschreiber ausgeben und in Akku und Speicherzelle 6 zurückschreiben
HDden Akkuinhalt auf dem Locher ausgeben und in Akku und Speicherzelle 6 zurückschreiben
Z0Maschine stoppen
0Maschine stoppen, wenn die Taste "Bedingter Stop" gedrückt ist
B17schreibt 1 in die unterste Stelle des Akku, wenn der Schalter am Bedienpult eingeschaltet ist, sonst eine 0
TmTgibt die Speicherstelle m an, ab die das nächste gelesene Lochstreifenwort geschrieben werden soll
EmEgibt die Startadresse des vom Lochstreifen zu lesenden Programmcodes an und sorgt für seinen Start
Cholt den Adreßteil aus dem Befehlsregister in den Akku, und existiert auch noch in einigen Formen mit nachgestellter Verknüpfung, wie Addition mit dem Akkuinhalt
G...mholt den Inhalt der Adresse m als neue Adresse in den Befehl ...
GK...s+tder Inhalt von Schnellspeicherzelle s wird als Index mit Inkrement t auf den Adressteil des Befehls ... verwendet
CGK...s+tder sich verändernde Inhalt von Schnellspeicherzelle s wird als Index mit Inkrement t auf den Adressteil des Befehls ... verwendet
CGU s+tDer Zählregister s wird um t inkrementiert
CGA s+tDer Zählregister s wird um t inkrementiert und danach der Inhalt der Trommeladressenstelle des Ergebnisses zum Akku hinzuaddiert
Bei allen Befehlen findet eine interne Parameterüberpr¨fung statt, die zu spezifischen Fehlermeldungen führt.

Wie auch bei den normalen Maschinenbefehlen gibt es für den Freiburger Code vorangestellte Bedingungszeichen zu den Befehlen, jedoch mit leicht abgeänderter Bedeutung.
BedingungszeichenBedeutung
PAusführung nur, wenn Zelle 2 positiv oder Null ist
QAusführung nur, wenn Welle 2 negativ ist
PPAusführung nur, wenn der Akku positiv oder Null ist
QQAusführung nur, wenn der Akku negativ ist
PPQQAusführung nur, wenn der Akku Null ist
YAusführung nur, wenn der Inhalt der Zelle 3 ungerade ist
PQQQAusführung nur, wenn im Akku ein Befehl oder Klartext steht, d.h. wenn die ersten beiden Stellen nicht übereinstimmen.
Die Bedingungsziechen können auch kombiniert werden, sofern sie sich nicht widersprechen.

Über die Befehlserweiterung hinaus sind auch einige Standardroutinen implementiert, die mit dem Fm Befehl aufgerufen werden können. Stellt man dem Fm Befehl ein H voran, also HFm, so erfolgt die Ausgabe der Routine auf dem Lochstreifenschreiber.
BefehlBedeutung
F800bewirkt am Fernschreiber einen Zeichenvorschub in der Breite der verwendeten Zahlen
F840Weiterrücken des Fernschreibers um die im Akku angegebene Zahl von Zeichen
F1000Fernschreiber an den Anfang der Folgezeile setzen

Lochstreifen
die Lochstreifenbox
Im Freiburger Code entstanden viele wiederverwendbare Programme zur Lösung mathematischer Aufgaben. Einige davon sind noch erhalten und hängen ablaufbereit in Form von Lochstreifen in einem Holzkasten an der Wand neben unserer Zuse.


Z22/13-Homepage Georg 'Gio' Magschok, 961127