DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦d5f5b69d6⟧ TextFile

    Length: 3072 (0xc00)
    Types: TextFile
    Names: »plotmovetxt«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦this⟧ »plotmovetxt« 

TextFile

\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◀