Wolfgang Pavel: Zuse-Z22-Simulation: Beispiel 03
Ausdrucken eines Textes.

Was auf dem Lochstreifen steht:
(Das Trennzeichen kann entweder Zwischenraum oder NeueZeile sein.)
T3800T​•​ΩCOMPUTER_SIND_AUCH_NUR_M−−−ASCHINEN.Ω​•​0​•​
T6000T​•​CB3799​•​T12​•​CGKB12+1​•​0​•​PPQQE6020​•​D​•​E6002​•​
T6020T​•​F1000​•​EZ6000​•​
EZ6000E​•​

Besonders betroffene Themen:
► Interne Darstellung von Klartext
► Adresssubstitutionsbefehle

Was es tun soll:
Ein Klartext, der mehrere Speicherworte belegt, soll auf dem Fernschreiber ausgegeben werden. Das Druckprogramm im Grundprogramm bietet nur die Ausgabe eines einzelnen Maschinenworts (maximal 7 Schriftzeichen) und erledigt auch die notwendigen Umschaltungen zwischen Buchstaben und Ziffern/Zeichen. Für längere Texte ist deshalb ein Programm zu schreiben, das die einzelnen Speicherworte nacheinander (Adress-Substitution mit CGKB...) in den Akku holt und ausdruckt; programmtechnisch ist das eine »Programmschleife«. Damit das Programm feststellen kann, wann der Text im Speicher zu Ende ist, wird anschließend an den Text eine Zahl 0 gespeichert.
Wie es gespeichert und ausgeführt wird:
Trommel-
adresse
ExternInternErläuterung
T3800TAb hier soll der Text gespeichert sein.
3800
siehe
Lochstreifen
COMPUTENur zur Demonstration der internen Klartextdarstellung wird hier die Aufteilung des Textes auf die Speicherwort angegeben. Normalerweise kümmert sich der Programmierer nicht um die genaue Länge, sondern schätzt nur reichlich nach oben ab; es gibt ja den Abschluss mit der Null.
3801R_SIND_7 Zeichen passen normalerweise in ein Speicherwort; auch Zwischenräume werden mitgezählt.
3802AUCH_NU
3803R_M−−−Hier ist zusätzlich eine Umschaltung von Buchstabe (M) auf Zeichen (-) notwendig; deshalb nur 6 sichtbare Zeichen.
3804ASCHINEHier fällt die Umschaltung von vorher Zeichen (-) auf jetzt Buchstabe (A) zufällig auf den Anfang eines Maschinenworts, kann deshalb im Bit 3 berücksichtigt werden und braucht keinen zusätzlichen Platz.
3805N.Dieses Maschinenwort enthält nur noch 3 Zeichen: N, Umschaltung auf Zeichen, und den Punkt; die restlichen 4 Zeichenplätze bleiben leer.
38060Das oben erklärte Schlusswort.
T6000TAb hier wird das Programm gespeichert; hier muss es auch gestartet werden.
6000CB3799CNA0+3799Die Anfangsadresse des Textes minus 1 ...
6001T12NUK12+0... wird nach Schnellspeicher 12 getan. Es könnte auch ein anderer Schnellspeicher genommen werden; nur die Schnellspeicher 3 bis 10 darf man nicht nehmen, da sie vom Druckprogramm benutzt und dort verändert werden.
6002CGKB12+1CGKNA12+1Im ersten Schritt des G-Befehls wird der Inhalt von Schnellspeicher 12 (anfangs 3799) wird um 1 erhöht; das Ergebnis (anfangs 3800) wird in Schnellspeicher 12 gespeichert; diese Zahl ist die Trommeladresse des übrigen Befehl, der im zweiten Schritt ausgeführt wird: also anfangs B3800, was den entsprechenden Teil des Textes in den Akku bringt. Später ist das B3801, B3802, usw., also immer das nächste Stückchen Text.
60030Nach einem G-Befehl ist eine Speicherzelle freizulassen; der Inhalt ist beliebig.
6004PPQQE6020PPQQEK0+6020Erst wenn im Akku die Zahl Null steht, wird die Programmschleife verlassen; das Programm geht dann bei 6020 weiter.
6005DF0+644Der Inhalt des Akku, ist also keine Null, wird ausgedruckt.
6006E6002E0+6002Sprung auf den G-Befehl, der die nächste Trommelspeicherzelle holt.
T6020THier geht das Programm nach der Ausgabe des Textes weiter.
6020F1000F0+1000Es wird "neue Zeile" ausgegeben.
6021EZ6000EZ0+6000Das Programm stoppt. Es kann mit Weiter oder Start wieder von vorne, bei 6000, gestartet werden. (Dieser Befehl ist auch gespeichert).
EZ6000E(Dieser Befehl wird nicht gespeichert, sondern als "Bandbefehl" sofort nach dem Einlesen ausgeführt.) Wegen Z zunächst Stopp. Nach Weiter oder Start beginnt das Programm bei Adresse 6000.