File: PLOTES.PS of Tape: Various/Decus/decus-3
(Source file text) 

PROGRAM PLOTTERTEST(OUTPUT);

CONST UP="H"; DOWN="I";
      C=100.0; P=0.125; RHO=0.0174532925;
      X0=950.0; Y0=1300.0;

VAR   X,Y,R,PHI: REAL;
      GRAD: INTEGER;

      PENXPOS,PENYPOS: INTEGER;

(********** P L O T T E R  PROZEDUREN **********)

PROCEDURE PEN(I:CHAR);
    BEGIN WRITE(I) END;

PROCEDURE SEND(IX,IY: INTEGER);
    BEGIN
      IF IX>=0  THEN WRITE( IX:1,"@")
                ELSE WRITE(-IX:1,"P");
      IF IY>=0  THEN WRITE( IY:1,"A")
                ELSE WRITE(-IY:1,"Q")
    END;

PROCEDURE MOVE(X,Y: REAL);
    BEGIN
      PENXPOS:=ROUND(X); PENYPOS:=ROUND(Y);
      WRITE("H");
      SEND(PENXPOS,PENYPOS);
      WRITELN("K")
    END;

PROCEDURE LINE(X,Y: REAL);
  VAR DX,DY: INTEGER;
    BEGIN
      DX:=ROUND(X)-PENXPOS;
      DY:=ROUND(Y)-PENYPOS;
      SEND(DX,DY); WRITELN("J");
      PENXPOS:=PENXPOS+DX; PENYPOS:=PENYPOS+DY
    END;

PROCEDURE SYSIZE(R,G: INTEGER);
    BEGIN
      WRITE("C", CHR(G+16*(R+2)))
    END;

(***********************************************)

BEGIN
    MOVE(200,2600);
    SYSIZE(0,6);
    WRITELN("BPLOTTER-PROGRAMMIERUNG IN PASCAL-S");
    MOVE(X0,Y0);
    PEN(DOWN);
    MOVE(X0+C,Y0);
    PEN(DOWN);
    FOR GRAD := 1 TO 180 DO
        BEGIN
           PHI := 5*GRAD*RHO;
           R := C*EXP(P*PHI);
           X := R*COS(PHI);
           Y := R*SIN(PHI);
           LINE(X0+X,Y0+Y)
        END;
    PEN(UP)
END.