File T.PS

Directory of image this file is from
This file as a plain text file

PROGRAM MODELLRECHNER(INPUT,OUTPUT);
CONST   MAX=200,KAP=200;
TYPE    STRING=ARRAY[1..3] OF CHAR;
        REGISTER=ARRAY[1..12] OF INTEGER;
        BEFEHLSTYPE=RECORD
                          OPERATION:STRING;
                          ADRESSE:INTEGER
                          END;
        HIRN=ARRAY[1..MAX] OF INTEGER;
VAR  EINGABEREGISTER,AUSGABEREGISTER:REGISTER;
     PROGRAMMSPEICHER:ARRAY[1..KAP] OF BEFEHLSTYPE;
     DATENSPEICHER:HIRN;
     BEFEHLSZAEHLER,AC:INTEGER;
     BEFEHLSREGISTER:BEFEHLSTYPE;
     LAD,SPD,AUD,SET,ADD,MLT,KPL,UND,ODR,
     STP,VLL,VLR,SPR,SGN,SAM:STRING;
PROCEDURE LADEAC(A:INTEGER);
BEGIN  AC:=DATENSPEICHER[A] END;
PROCEDURE SPEICHEREAUSAC(A:INTEGER);
BEGIN  DATENSPEICHER[A]:=AC END;
PROCEDURE BELEGEAC(A:INTEGER);
BEGIN  AC:=A  END;
PROCEDURE ADDIERE(A:INTEGER);
BEGIN AC:=AC+DATENSPEICHER[A]  END;
PROCEDURE KOMPLEMENTIERE;
BEGIN AC:=-AC END;
PROCEDURE DIREKTSPRUNG(A:INTEGER);
BEGIN BEFEHLSZAEHLER:=A END;
PROCEDURE NULLSPRUNG(A:INTEGER);
BEGIN IF AC=0 THEN BEFEHLSZAEHLER:=A END;
PROCEDURE NEGATIVSPRUNG(A:INTEGER);
BEGIN IF AC<0 THEN BEFEHLSZAEHLER:=A  END;
PROCEDURE DATENEINGABE;
VAR I:INTEGER;
BEGIN I:=0;
          REPEAT READ(DATENSPEICHER[I]);
                 I:=I+1
          UNTIL (I-1=MAX) OR EOF
END;
BEGIN(*HAUPTPROGRAMM*)
LAD[1]:="L";LAD[2]:="A";LAD[3]:="D";
AUD[1]:="A";AUD[2]:="U";AUD[3]:="D";
SPD[1]:="S";SPD[2]:="P";SPD[3]:="D";
SET[1]:="S";SET[2]:="E";SET[3]:="T";
ADD[1]:="A";ADD[2]:="D";ADD[3]:="D";
PROCEDURE PROGRAMMEINGABE;
VAR Z,I:INTEGER;ABBRUCH:BOOLEAN;
BEGIN I:=0;ABBRUCH:=FALSE;
      REPEAT FOR Z:=1 TO 3 DO
             BEGIN READ(PROGRAMMSPEICHER[I].OPERATION[Z]);
            IF (PROGRAMMSPEICHER[I]=OPERATION[Z])
            THEN BEGIN  Z:=3;ABBRUCH:=TRUE END
      END;
      IF NOT ABBRUCH
      THEN BEGIN
             READLN(PROGRAMMSPEICHER[I].ADRESSE);
             I:=I+1
           END
      UNTIL (I-1=KAP) OR ABBRUCH
END;
PROCEDURE DUALNACHDEZIMAL(VAR DUAL:REGISTER;DEZIMAL:INTEGER);
VAR I:INTEGER;
BEGIN
     DEZIMAL:=DUAL[10];
     FOR I:=9 DOWNTO 0
     DO BEGIN DEZIMAL:=DEZIMAL*2+DUAL[I];
              DEZIMAL:=DEZIMAL-DUAL[11]*2048
        END
END;
PROCEDURE DEZIMALNACHDUAL(VAR DUAL:REGISTER;DEZIMAL:INTEGER);



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search