Wolfgang Pavel: Zuse Z22: Dokumentation und Simulation
Schreibweise von Befehlen

Die meisten Befehle werden wie hier zuerst angegeben geschrieben und wortweise, dh. je Befehl ein Wort zu 38 Bit, gespeichert. Daneben gibt es speziell Bandbefehle und Grundprogrammbefehle.
Befehle können immer in der internen Schreibweise geschrieben werden, was in »lesbarer« Form ziemlich genau dem entspricht, was man binär im Befehlsregister oder auf dem Bedienungspult sieht. Zur Vereinfachung für den Programmierer gibt es einige externe Vereinfachungen, die dann beim Einlesen automatisch in die interne Form umgewandelt werden.

  • Befehle, normalerweise:
    • Ein Befehl beginnt mit einem, evtl. mehreren Buchstaben, gefolgt von ein oder zwei Zahlen, die durch ein Plus- oder Minuszeichen verbunden sind; z.B. U2000 oder B12+3456 oder E25-13. Die interne Darstellung hat immer zwei mit Pluszeichen verbundene Zahlen.
    • Die Buchstaben sind entweder eine Kombination von Elementarbefehlen (also den im Befehlsregister oder auf dem Bedienungspult ersichtlichen Befehlen) oder können eine vereinfachende Schreibweise sein (z.B. B25 statt NAK25+0). Die Reihenfolge der Buchstaben innerhalb des Befehls ist beliebig.
    • Die Zahl(en) können eine Schnell- oder Trommelspeicheradresse oder eine natürliche Zahl ohne Bezug zu einem Speicher bedeuten.
    • Welche Buchstaben und Buchstabenkombinationen erlaubt sind und was dabei die Zahlen sein dürfen und bedeuten, ist in der ► Befehlsliste ausführlich erklärt.
    • Verlangt der Befehl nur eine Schnellspeicheradresse oder nur eine Trommelspeicheradresse, so genügt in der externen Schreibweise die Angabe nur einer Zahl. Ist diese kleiner 32, wird sie als Schnellspeicheradresse interpretiert, der Befehl wird um K ergänzt (aus A25 wird AK25+0); ist die Zahl größer, wird sie als Trommelspeicheradresse interpretiert (aus U2000 wird U0+2000).
      Befehle, die eine Trommelspeicheradresse unter 32 ansprechen, können nur in interner Adress-Schreibweise geschrieben werden (z.B. E0+1).
    • Das Minuszeichen im Befehlsteil wird nur für die seltener verwendeten speziellen Wiederholungsbefehle verwenden. Die interne Darstellung erhält man, indem als Schnellspeicheradresse die um 1 verringerte erste Zahl genommen wird, als Trommelspeicherteil die von 8192 abgezogene zweite Zahl und dem Befehl ein K hinzugefügt wird. (z.B. wird aus E25-13 der Befehle EK24+8179).
    • Innerhalb eines Befehls sind keine anderen Zeichen erlaubt, auch kein Zwischenraum
    • Ein Befehl endet an einem Zwischenraum (Zw) oder Zeilenvorschub (Zl).
  • Grundprogramm-Befehle sind Unterprogrammsprünge auf das Grundprogramm, wo dann bestimmte Aktionen ausgeführt werden: Einlesen, Drucken, Stanzen, Gleitkommaoperationen. Elementar sind das normale Befehle F0+t , wobei die Adresse t von der gewünschten Aktion abhängt. Vereinfacht gibt es für einige davon spezielle Schreibweisen: D für Drucken, HD für Stanzen, + für Gleitkommaaddition, - für Gleitkommasubtraktion, X für Gleitkommamultiplikation, : für Gleitkommadivision, W für die Quadratwurzel, und HW für die »Hauptwurzel« . Einzelheiten lese man in der ► Befehlsliste.
    Sollen der vereinfachten externen Schreibweise eines Grundprogrammbefehls weitere Elementarbefehle (z.B Bedingungen PP,QQ,P,Q,Y) hinzugefügt werden, müssen diese vor dem eigentlichen Befehl stehen (z.B PPW ).
  • Bandbefehle: Ein Bandbefehl wird nicht gespeichert, sondern gleich beim Einlesen wirksam. Es gibt drei solche Bandbefehle:
    • TmT – wobei m eine Trommelspeicheradresse (1≤m≤8191) ist, z.B. T3000T
      Die Adressen 1≤m≤1023 können normalerweise nicht verwendet werden, da sie für das Grundprogramm gesperrt sind; ebenso sollte ein Teil der weiteren Adressen bis 1215 nicht für eigene Programme oder Daten verwendet werden.
      Der Befehl TmT bewirkt, dass die folgenden Befehle oder Daten ab der Trommelspeicherzelle m gespeichert werden.
      Jedes Programm muss mit einem solchen TmT beginnen. Es können später weitere solche Bandbefehle folgen, um getrennte Programmteile oder Datenblöcke in andere Trommelspeicherbereiche zu speichern.
    • befehlE , also ein normaler Befehl gefolgt vom Buchstaben E. Ein solcher Befehl wird dann nicht gespeichert, sondern sofort, also während des Lesevorgangs mit seiner üblichen Wirkung ausgeführt.
      Wenn es sich nicht um eine Sprungbefehl handelt, wird danach das Einlesen fortgesetzt. Nicht jeder Befehl ist deshalb sinnvoll in dieser Weise zu verwenden. Insbesondere ist die Verwendung der vom Leseprogramm selbst verwendeten Schnellspeicher 2 bis 15 zu vermeiden.
      In der Praxis fast ausschließlich wird in dieser Weise ein Sprungbefehl verwendet, also EmE mit Varianten – wobei m eine Trommelspeicheradresse (1≤m≤8191) ist.
      Der Befehl EmE bewirkt, dass der Befehl Em, das ist »Sprung auf Trommelspeicher m« ins Befehlsregister kommt und ausgeführt wird. Bei Trommelspeicher m sollte der Anfang eines gespeicherten Programms sein. Dann bewirkt EmE praktisch den Start dieses Programms.
      Das Einlesen der Lochstreifens wird damit beendet. Der Befehl EmE darf also erst stehen, wenn außer dem Programm auch alle dazu notwendigen Daten geschrieben sind.
      Andererseites sollte am Ende eines Lochstreifens immer ein Bandbefehl EmE oder eine Variante davon stehen.
      Variante EZmE : Wie zuvor, jedoch geht die Maschine vor dem Programmstart erst in den Stopzustand; zur Programmausführung muss erst noch »Start« gedrückt werden.
      Variante HEmE, auch HZmE: Das Programm läuft mit gesetztem H-Befehl (siehe Befehlsliste), was zu Modifikationen im Programmlauf verwendet werden kann.
      Variante NEmE, auch NZmE: Das Programm startet mit auf Null gesetztem Akku.
    • befehlAm – wobei m eine Trommel- oder auch Schnellspeicheradresse ist.
      Wirkung: Erzeugt wird der Befehl befehl + ‹m›t .
      Dies ist die »relative Adressierung«, eine Möglichkeit, die schon auf zukünftige Softwaretechniken hinweist.
      Bevor solche Befehle auf dem Lochstreifen stehen, muss der Inhalt der Zelle m per Lochstreifen (Bandbefehle) oder einem vorher gelaufenen Programm eine definierte ganze Zahl (1≤m≤8191) sein.
      Vom Inhalt von m wird nur der Trommeladressteil verwendet, sodass auch bei einer andersartigen Information in m diese Bedingung eingehalten wird.
      Diese in m enthaltene Zahl wird zur Trommeladresse des eigentlichen Befehls addiert.
      Bei konsequenter Verwendung dieses Bandbefehls kann man Programme oder Programmteile schreiben, die ohne Änderung an beliebige Stelle des Trommelspeichers eingelesen werden können, wobei alle Trommelspeicheradressen innerhalb dieses Programmteils entsprechend angepasst werden.
      Selbstverständlich sind auch mehrere Relativadressen m1, m2, ... und ihre Verwendung je nach Bedarf möglich.
      Die relative Adressierung darf auch mehrfach angewendet werden: befehlAm1Am2...
      Diese relative Adressierung ist in der PHP-Imitation nicht realisiert; funktioniert also nur, wenn Lochstreifen mit dem originalen Grundprogramm (Einstellung »Grundprogramm verfolgen«) eingelesen werden.