|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3072 (0xc00)
Types: TextFile
Names: »plotmovetxt«
└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
└─⟦b2ec5d50f⟧
└─⟦this⟧ »plotmovetxt«
\f
message plotmoveny
plotmoveny=algol message.no
external
boolean procedure plotmoveny(x,y);
value x,y; real x,y;
begin
own boolean bo,penst;
own integer xp,yp;
own real xo,yo;
integer xl,xh,yl,yh,xx,yy;
real xn,yn;
boolean b,bn,out;
procedure outside;
begin
if bo extract 4=0 then
begin
penst:=penstatus=1;
if penst then penup
end
else ;
b:=bn or bo;
if b extract 2<>0 then
begin
xx:=if (if bn extract 2=0 then bo else bn) then xl else xh;
yy:=yo+(yn-yo)/(xn-xo)*(xx-xo);
b:=yy>yh or yy<yl
end;
if b shift (-2) extract 2<>0 then
begin
b:=bn shift (-2);
yy:=if (if b extract 2=0 then bo shift (-2) else b) then yl
else yh;
xx:=xo+(xn-xo)/(yn-yo)*(yy-yo);
b:=xx>xh or xx<xl
end;
if -,b and bo extract 4<>0 then
begin
bo:=false;
if penst then
begin
penst:=true;
penup
end;
plotmove((xx/plotunit-plotxcoor-plotsubxmin)/deltax,
(yy/plotunit-plotycoor-plotsubymin)/deltay);
if penst then pendown
end
end outside;
if x=maxreal or y=maxreal then
begin
end
else
begin
xn:=plotxmin*deltax+plotxcoor;
xl:=((if xn<0 then 0 else xn)+plotsubxmin)*plotunit;
xn:=plotxmax*deltax+plotxcoor+plotsubxmin;
xh:=(if xn>plotsubxmax then plotsubxmax else xn)*plotunit;
yn:=plotymin*deltay+plotycoor;
yl:=((if yn<0 then 0 else yn)+plotsubymin)*plotunit;
yn:=plotymax*deltay+plotycoor+plotsubymin;
yh:=(if yn>plotsubymax then plotsubymax else yn)*plotunit;
xn:=(x*deltax+plotxcoor+plotsubxmin)*plotunit;
yn:=(y*deltay+plotycoor+plotsubymin)*plotunit;
b:=bn:=false add((yn>yh)extract 1)shift 1 add((yn<yl)extract 1)
shift 1 add((xn>xh)extract 1)shift 1 add((xn<xl)extract 1);
out:=bn extract 4<>0;
if (bn==bo) extract 4=0 then outside;
if (b and bo) extract 4=0 then
begin
if -,out then
begin
xx:=xn; yy:=yn
end;
plotxstep:=xx-xp; plotystep:=yy-yp;
if plotxstep<>0 or plotystep<>0 then
begin
plotxy(2);
xp:=xx; yp:=yy;
if out then
begin
penst:=penstatus=1;
if penst then penup
end;
plotxpos:=(xp/plotunit-plotxcoor-plotsubxmin)/deltax;
plotypos:=(yp/plotunit-plotycoor-plotsubymin)/deltay;
end;
xo:=xn; yo:=yn; bo:=bn;
plotmoveny:=out;
end
end plotmoveny
; end
▶EOF◀