%begin
   %include "level1:graphinc.imp"
   %include "inc:maths.imp"
   %include "inc:util.imp"
   %include "inc:atdecs.imp"

   %const %integer noseg = 210

   %integer d, i, t, j, k, s, sym, ns, setting
   %integer c, cb, cd, cdb, ct, ctb, z=0
   %half %integer %array cm image(0:511)

      cm image(i) = 0 %for i = 0, 1, 511
      c = 0
      cd = 2
      ct = 0
      %for i = 1, 1, 511 %cycle
         %if c=30 %start
            cd = -2
         %else %if c=0
            ct = ct!!30
            %if ct&30=0 %start
               ct = ct!!(30<<5)
               %if ct&(30<<5)=0 %start
                  ct = ct!!(30<<10)
                  %if ct&(30<<10)=0 %start
                     ct = 30
                  %finish
               %finish
            %finish
            cd = 2
         %finish
         cm image(i) = (c+c<<5+c<<10)&ct
         c = c+cd
      %repeat
   print string("speed (>0) : ")
   s = 0
   ns = 0
   t = cpu time+s
   k = 1
   %cycle
      i = cm image(k)
      cm image(k) = 0
      update colour map(cm image(k))
      cm image(k) = i
      k = rem(k, no seg)+1
      %cycle
         sym = test symbol
         %while sym>=0 %cycle
            %if sym=nl %start
               new line
               print string("Speed (>0) : ")
               t = t-s+ns %and s = ns %unless setting=0
               ns = 0
               setting = 0
            %elseif sym=' '
               %cycle; %repeatuntil testsymbol=' '
            %else
               print symbol(sym)
               %if '0'<=sym<='9' %start
                  setting = 1
                  ns = ns*10+sym-'0'
               %else
                  t = t-s+ns %and s = ns %unless setting=0
                  ns = 0
                  setting = 0
               %finish
            %finish
            sym = test symbol
         %repeat
      %repeat %until cpu time>=t
      t = cpu time+s
   %repeat
%end %of %program
