%include "inc:level1.imp"
%begin {CPLshow}
%integer minx,maxx,bx,dx,miny,maxy,by,dy,x,y
%real factor=0
%string(255)last,this,pin

%begin {pass 1}
  %on 9 %start
    bx = minx-100; by = miny-100
    dx = maxx+100-bx; dy = maxy+100-by
    factor = 512/dy; factor = 768/dx %if 768/dx<factor
    %return
  %finish
  openinput(1,cliparam.".cpl")
  read(this); read(pin); read(x); read(y)
  minx = x; maxx = x; miny = y; maxy = y
  %cycle
    read(last); read(pin); read(x); read(y)
    minx = x %if x<minx
    maxx = x %if x>maxx
    miny = y %if y<miny
    maxy = y %if y>maxy
  %repeat
%end

%begin {pass 2}
%integer x1,y1,p1
  %on 9 %start
    this = ""; ->e
  %finish
  clear
  resetinput
  read(this); read(pin); read(x); read(y)
  %cycle
    last = this
    minx = x; maxx = x; miny = y; maxy = y; p1 = 0
    %cycle
      p1 = 1 %and x1 = x %and y1 = y %if pin="1"
      minx = x %if x<minx
      maxx = x %if x>maxx
      miny = y %if y<miny
      maxy = y %if y>maxy
      read(this); read(pin); read(x); read(y)
    %repeatuntil this#last
e:  minx = int((minx-bx)*factor)
    maxx = int((maxx-bx)*factor)
    miny = int((miny-by)*factor)
    maxy = int((maxy-by)*factor)
    line(minx-1,miny-1,maxx+1,miny-1)
    line(maxx+1,miny-1,maxx+1,maxy+1)
    line(maxx+1,maxy+1,minx-1,maxy+1)
    line(minx-1,maxy+1,minx-1,miny-1)
    %unless p1=0 %start
      x1 = int((x1-bx)*factor)
      y1 = int((y1-by)*factor)
      line(x1-1,y1-1,x1+1,y1-1)
      line(x1+1,y1-1,x1+1,y1+1)
      line(x1+1,y1+1,x1-1,y1+1)
      line(x1-1,y1+1,x1-1,y1-1)
    %finish
    printstring(last); selectinput(0); skipsymbol; selectinput(1)
  %repeatuntil this=""
%end

%end
