// ****************************************************************************
//
// Logic 6: Check move ok
//
// ****************************************************************************

#include "defines.txt"

#define cell_below v255
#define cell_below_value v254
#define cur_x v253
#define cur_y v252
#define flagno v251
#define tmp_x v250
#define tmp_y v249
#define varno v248


  set(block_move_ok);
  cur_y = 0;
  cur_x = 0;
Label1:
  tmp_x = check_x; tmp_x += cur_x;
  tmp_y = check_y; tmp_y += cur_y;


  flagno = cur_y; flagno *=4;  flagno += cur_x;  flagno += 100;
  if (issetv(flagno)) {
    if ((tmp_x >= 21 || tmp_x <= 10 || tmp_y == 21)) {
      reset(block_move_ok);
    }
    else {
      cell_below = tmp_y;  cell_below *= 10;  cell_below += tmp_x;  cell_below += 9;
      cell_below_value = *cell_below;
      if (cell_below_value > 0) { reset(block_move_ok); }
    }
  }
  cur_x++;
  if (cur_x < 4) {
    goto(Label1);
  }
  else {
    cur_y++;
    if (cur_y < 4) {
      cur_x = 0;
      goto(Label1);
    }
  }

return();