PROGRAM MINI(INPUT,OUTPUT); CONST D=20;(*ANZAHL DER SPEICHER IM DS*) P=50;(*ANZAHL DER SPEICHER IM PS*) TYPE WORT=ARRAY[1..4]OF CHAR; BEFEHL=RECORD OP:WORT; ADR:INTEGER; END; SPEICHER=RECORD OP:ARRAY[1..P]OF WORT; ADR:ARRAY[1..P]OF INTEGER; END; VAR DS:ARRAY[1..D]OF REAL; PS:SPEICHER; MODUS:CHAR; PROCEDURE STERN(D:CHAR); VAR I:INTEGER; BEGIN FOR I:=1 TO 60 DO WRITE(D); WRITELN END; PROCEDUR EINFUERUNG; BEGIN WRITELN; STERN("*"); WRITELN; WRITELN("SIE BEFINDEN SICH NUN IM GRUNDZUSTAND."); WRITELN("SIE KOENNEN AUS DIESEM ZUSTAND IN DIE FOLGENDEN"); WRITELN("ANDEREN EINTRETEN:"); WRITELN; WRITELN(" PROGRAMMIER - MODUS 'R'"); WRITELN(" EDITIER - MODUS 'E'"); WRITELN(" PROGRAMM - START 'S'"); WRITELN(" BEFEHLS - LISTE 'B'"); WRITELN(" EINFUEHRUNG 'M'"); WRITELN(" SIMULATIONS - ENDE '.'"); WRITELN; WRITELN("GEBEN SIE BITTE DIE JEWEILS HINTER DEN MODI"); WRITELN("STEHENDEN BEFEHLE EIN, UM IN DEN GEWUENSCHTEN"); WRITELN("MODUS EINZUTRETEN.");WRITELN; STERN("*") END; PROCEDURE LISTE; VAR W:CHAR; BEGIN STERN("*"); WRITELN; WRITELN(" LISTE DER ZUR VERFUEGUNG STEHENDEN BEFEHLE:"); WRITELN; WRITELN(" READ D EINLESEN EINER ZAHL"); WRITELN(" WRIT D AUSGABE EINER ZAHL"); STERN("-"); WRITELN(" ADD+ D AC:=+D"); WRITELN(" SUB- D AC:=-D"); WRITELN(" MUL* D AC:=*D"); WRITELN(" DIV/ D AC:=/D"); STERN("-"); WRITELN(" LADE D AC:="); WRITELN(" STOR D D:="); STERN("-"); WRITELN(" GOTO P UNBEDINGTER SPRUNG NACH P"); WRITELN(" GO.0 P BEDINGTER SPRUNG NACH P"); WRITELN(" WENNN => 0"); WRITELN(" GO.P P BEDINGTER SPRUNG NACH P"); WRITELN(" WENN => 1"); STERN("-"); WRITELN(" END. LETZTER BEFEHL"); WRITELN(" (AM ENDE JEDES PROGRAMMS)"); WRITELN; STERN("*"); WRITELN; WRITELN("DIE BEFEHLE VON 'MINI' BESTEHEN AUS EINEM"); WRITELN("BEFEHLSTEIL UND EINEM ADRESSTEIL."); WRITELN("EINE ANWEISUNG VON 'MINI' IST ZUSAMMENGESTZT"); WRITELN("AUS EINEM BEFEHL MIT GENAU 4 ZEICHEN, EINER"); WRITELN("LEERSTELLE UND EINEM ADRESSTEIL AUS 2 ZEICHEN."); WRITELN; STERN("*"); WRITELN; WRITELN(" WENN ES WEITERGEHEN KANN DANN GEBEN SIE EIN 'J' EIN."); READLN;READ(W); END; PROCEDURE EINGABE; VAR W:CHAR; I:INTEGER; PROCEDURE LESE(VAR A:WORT;VAR B,I:INTEGER); VAR J:INTEGER; BEGIN WRITE(I:2,". BEFEHL:"); READLN;FOR J:=1 TO 4DO READ(A[J]);READLN;READ (B); END; BEGIN STERN("*"); WRITELN; WRITELN("SIE BEFINDEN SICH JETZT IM EINGABEMODUS."); WRITELN("ACHTEN SIE BEI DER EINGABE DES PROGRAMMS"); WRITELN("AUF DAS FORMAT DER ANWEISUMGEN!"); WRITELN; STERN("*"); WRITELN; WRITELN("WENN SIE ANFANGEN WOLLEN, DANN GEBEN SIE"); WRITELN("BITTE EIN 'J' EIN."); WRITELN; WRITELN("DIE EINGABE WIRD AUTOMATISCH MIT DEM 'END'"); WRITELN("-BEFEHL ABGECSLOSSEN, UND DAS PROGRAMM"); WRITELN("KEHRT AUTOMATISCH IN DEN GRUNDZUSTAND ZURUECK."); READLN;READ(W); I:=0; REPEAT I:=I+1; LESE(PS.OP[I],PS.ADR[I],I); WRITELN;READLN UNTIL PS.OP[I,4]="."; WRITELN; STERN("*"); END; PROCEDURE EDIT; BEGIN WRITELN("P EDIT"); END; PROCEDURE PSTART; VAR BR:BEFEHL; BZR,J:INTEGER; AC:REAL; BEGIN STERN("*"); WRITELN; WRITELN("DAS VON IHNEN EINGEGEBENE PROGRAMM, WIRD"); WRITELN("JETZT GESTARTET."); WRITELN; STERN("*"); WRITELN; BZR:=0;AC:=0; REPEAT BZR:=BZR+1; BR.OP:=PS.OP[BZR]; BR.ADR:=PS.ADR[BZR]; FOR J:=1 TO 4 DO WRITE(BR.OP[J]); WRITELN; WRITELN("BR.ADR:",BR.ADR," ,BZR:",BZR); WRITELN; CASE BR.OP[4] OF "D" : BEGIN READLN;READ(DS[BR.ADR]) END; "T" : WRITELN(BR.ADR:5,"= ",DS[BR.ADR]); "+" : AC:=AC+DS[BR.ADR]; "-" : AC:=AC-DS[BR.ADR]; "*" : AC:=AC*DS[BR.ADR]; "/" : AC:=AC/DS[BR.ADR]; "E" : AC:=DS[BR.ADR]; "R" : DS[BR.ADR]:=AC; "O" : BZR:=BR.ADR-1; "0" : IF AC=0 THEN BZR:=BR.ADR-1; "P" : IF AC>0 THEN BZR:=BR.ADR-1 END; UNTIL BR.OP[4]="." END; BEGIN (* H A U P T P R O G R A M M *) STERN("*"); WRITELN; WRITELN(" M I N I - S I M U L A T I O N"); WRITELN; STERN("*"); WRITELN; WRITELN; WRITELN("GEBEN SIE BITTE ZUERST EIN 'M' ZUR"); WRITELN("EINFUERUNG EIN!"); REPEAT WRITELN; WRITE("GEWUENSCHTER MODUS: ");READLN;READ(MODUS); CASE MODUS OF "R" : EINGABE; "E" : EDIT; "S" : PSTART; "B" : LISTE; "M" : EINFUERUNG; "." : WRITELN END UNTIL MODUS="."; STERN("*"); WRITELN; WRITELN(" E N D E DER M I N I - S I M U L A T I O N "); WRITELN; STERN("*") END. (* H A U P T P R O G R A M M *)