       return false
 
     if @allowed_move?
-      console.log('allowed ' +@allowed_move.x+','+@allowed_move.y)
       if @allowed_move.x != x or @allowed_move.y != y
         return false
 

    x = @botx + dir.dx
    y = @boty + dir.dy

    console.log('want ' +x+','+y)
    
    if @isMoveAllowed(x,y)
      if @active_program?
        @execute({type: 'move', dir: dir})
      else
        # free movement
        @botx = x

        @installMapping(@active_mapping, requested_action,
                        @currentInstruction())
        @updateProgram()
        return true

    @pc += 1
    if @pc == @active_program.code.length
