anchor.diff:            end
           end else inc(i) { was inactive, skip over for now }
         end;
  +    actors.length := numActors;
     end;
    
   procedure Draw;
  -  var i : byte;
  -  begin
  -    if numActors > 0 then
  -      for i := 0 to numActors-1 do
  -        if actors[ i ]^.Visible then actors[ i ]^.Render
  +  var i:cardinal;
  +  begin
  +    for i := 0 to actors.length - 1 do
  +      if actors[i]^.Visible then actors[i]^.Render
     end;
   
   function Done : Boolean;
     begin
  -    result := numActors = 0;
  -  end;
  -
  -procedure Run;
  -  begin
  -    repeat step; draw until done;
  -    halt;
  +    result := actors.length = 0;
     end;
   
   initialization
   
     kvm.ClrScr;
  -  numActors := 0; numTokens := 0;
  +  actors := TActors.Create;
     focus := New(Shell, Create);
  -  Register(focus);
  +  launch(focus);
   
   finalization
   
     cw.cwriteln( '|w|!k' );
     kvm.ClrScr;
  -  writeln('terminated cleanly.');
   
   end.
  
positive.code: constructor ShellObj.Create;
    begin
      inherited Create;
      vm := New(Machine, Create); register(vm);
      clock := New(ClockMorph, Create);
      clock^.bounds.x := 0; clock^.bounds.y := 0;
      Register(clock);
      self.Clear;
      words := New(Dict, Create);
    end;
  
negative.code: {$i xpc.inc}{$mode delphi}{$h+}
  unit impworld;
  interface uses
    xpc,      // pass, general compatability
    mnml,
    arrays,
    vorunati,
    sysutils, // AppendStr, FormatDateTime
    kvm,      // fg, gotoxy, clreol
  