X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fsrc%2Fpascal%2FPLOTES.PS;fp=sw%2Fsrc%2Fpascal%2FPLOTES.PS;h=37ea78bb32362d29c49dc44b1956a5a39467eeff;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/src/pascal/PLOTES.PS b/sw/src/pascal/PLOTES.PS new file mode 100644 index 0000000..37ea78b --- /dev/null +++ b/sw/src/pascal/PLOTES.PS @@ -0,0 +1,66 @@ +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.