Das Programm PRIMA.EXE simuliert die primitive Maschine Prima. Es verlangt die Datei .\PROTOKOL\PROTNUM.SIM, in der die Nummer des Protokolls der letzten Sitzung steht (also anfangs 0). Zur Aufnahme des Sitzungsprotokolls wird eine Datei .\PROTOKOL\PRIMAxyz.SIM generiert. xyz steht für die Nummer der Sitzung, die von Sitzung zu Sitzung automatisch inkrementiert wird. Der folgende Text ist ein um Kommentare erweitertes Sitzungsprotokoll! Das Programm meldet sich mit dem Menü Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Dieses zeigt jedoch nicht alle Möglichkeiten. Wir spielen deshalb alles einmal durch: Speicherinhalt laden von einer Datei: L {statt L geht auch l} Speicher einlesen von Datei: {diese zwei Zeilen werden nicht} BEISPIEL.PRG {protokolliert; statt dessen:} Speicher eingelesen von Datei BEISPIEL.PRG bis Adresse 255 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Gesamten Speicherinhalt auf dem Bildschirm zeigen: Z 0 20 40 60 80 100 120 140 160 180 200 220 240 0 0 72 128 12 72 9 128 128 1 72 14 131 9 1 0 4 200 0 2 199 108 92 191 191 0 0 252 2 0 72 9 72 14 0 0 72 137 128 72 72 6 3 0 5 250 5 0 198 0 193 92 158 250 253 0 4 0 14 72 131 72 72 0 14 9 11 9 9 72 5 0 0 0 68 3 197 0 0 189 44 248 252 252 6 0 72 9 128 9 128 0 1 0 33 72 193 128 7 42 3 45 28 8 92 0 193 191 22 251 234 216 8 10 9 10 9 72 8 0 128 72 11 9 9 0 9 100 2 0 4 5 0 0 138 171 183 249 250 0 10 14 72 72 12 128 8 0 14 9 5 72 0 0 11 0 248 45 0 28 0 0 0 0 0 252 251 0 12 72 9 9 72 128 8 9 72 0 0 9 72 0 13 2 3 3 4 92 0 195 192 192 0 254 250 0 14 9 72 10 131 0 9 1 15 72 7 72 9 9 15 9 249 0 92 0 121 194 0 192 5 253 251 0 16 72 9 72 9 0 0 137 72 9 2 9 0 17 45 7 3 2 0 196 142 191 191 0 253 251 18 9 72 9 10 0 72 72 9 10 22 12 72 19 8 221 5 0 0 121 193 190 0 77 0 251 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Eine Speicherzelle ändern (korrigieren): k Adresse? ( 0.. 255) 127 Datum? ( 0.. 255) 222 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Wir sehen uns die Zelle 127 mal an: z 0 20 40 60 80 100 120 140 160 180 200 220 240 0 0 72 128 12 72 9 128 128 1 72 14 131 9 1 0 4 200 0 2 199 108 92 191 191 0 0 252 2 0 72 9 72 14 0 0 72 137 128 72 72 6 3 0 5 250 5 0 198 0 193 92 158 250 253 0 4 0 14 72 131 72 72 0 14 9 11 9 9 72 5 0 0 0 68 3 197 0 0 189 44 248 252 252 6 0 72 9 128 9 128 0 1 0 33 72 193 128 7 42 3 45 28 8 92 222 193 191 22 251 234 216 8 10 9 10 9 72 8 0 128 72 11 9 9 0 9 100 2 0 4 5 0 0 138 171 183 249 250 0 10 14 72 72 12 128 8 0 14 9 5 72 0 0 11 0 248 45 0 28 0 0 0 0 0 252 251 0 12 72 9 9 72 128 8 9 72 0 0 9 72 0 13 2 3 3 4 92 0 195 192 192 0 254 250 0 14 9 72 10 131 0 9 1 15 72 7 72 9 9 15 9 249 0 92 0 121 194 0 192 5 253 251 0 16 72 9 72 9 0 0 137 72 9 2 9 0 17 45 7 3 2 0 196 142 191 191 0 253 251 18 9 72 9 10 0 72 72 9 10 22 12 72 19 8 221 5 0 0 121 193 190 0 77 0 251 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Setzen des Befehlszählers: n Befehlszähler := ( 0.. 255) 100 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Starten des Rechners: s Protokoll? J / N j Anzahl Befehle? ( 0..10000) 8 Hier wollen wir gleich das Simulationsprotokoll erläutern: S[AR] Takt PC BR AR Akku ALU-Ausgang (Akku vor Befehlsausfhrung) 2 0 128 100 0 9 9 5 100 9 199 0 77 77 8 102 0 198 77 22 99 11 104 72 197 99 0 99 14 106 128 92 99 128 227 17 92 128 92 99 128 227 20 92 128 92 99 128 227 23 92 128 92 99 128 227 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Einzelne Befehle lassen sich mit B ausführen: b 26 92 128 92 99 128 227 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E B 29 92 128 92 99 128 227 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Mikroschritte lassen sich mit T (Takt) ausführen (drei pro Befehl): T 31 92 128 128 99 92 191 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E T 32 92 128 92 99 128 227 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E t 33 91 92 128 99 128 354 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Die Ausgabe des Menüs kann mit M ein/ausgeschaltet werden: M t 34 92 128 128 99 92 191 t 35 92 128 92 99 128 227 t 36 91 92 128 99 128 354 Das Programm sollte robust gegen fehlerhafte Eingaben sein: m Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E u Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E K Adresse? ( 0.. 255) 344 Grenzen nicht beachtet! Adresse? ( 0.. 255) -57 Grenzen nicht beachtet! Adresse? ( 0.. 255) 127 Datum? ( 0.. 255) w Datum? ( 0.. 255) e Datum? ( 0.. 255) x Datum? ( 0.. 255) 2- Datum? ( 0.. 255) 3, Datum? ( 0.. 255) +555 Grenzen nicht beachtet! Datum? ( 0.. 255) -3. Datum? ( 0.. 255) -7 Grenzen nicht beachtet! Datum? ( 0.. 255) -0 Takt Befehl Reset Schalter Speicher: Lesen/Zeigen/Korrig./Retten Ende T B N 1 / 0 L Z K R E Beenden der Sitzung: E