subr single_move_cb
 ;moves one of the multiples back into single
 ;get the one we want to move
 n = fix(xmtextfieldgetstring($move_movie_text))
 ty,'movie to move =', n
 ;check it out
 if n lt 1 or n gt $num_movies then {
   errormess, 'no multiple for'+string(n)
   return }
 move_to_mmv, n, 0
 $mv_label = xmtextfieldgetstring($multi_names_txt(n-1))
 ;zap the moved movie
 equate_i, '$movie', n, 0
 ;note that we don't bother to redefine to 0 the various ancillary arrays
 ;since they take little space by comparison
 if n lt $num_movies then {
  ;we shift them to fill a gap if this removal caused one
  for i = n, $num_movies-1 do {
   exchange_ip, '$movie', i
   exchange_ip, '$play_index', i
   exchange_ip, '$movie_times', i
   exchange_ip, '$movie_xc', i
   exchange_ip, '$movie_yc', i
   exchange_ip, '$movie_pixsc', i
   exchange_ip, '$movie_ccd_xc', i
   exchange_ip, '$movie_ccd_yc', i
   ;also move the labels, i to i-1 here (direction also matters, not sym)
   xmtextfieldsetstring,$multi_names_txt(i-1),xmtextfieldgetstring($multi_names_txt(i))
  }
 }
 ;and clear the highest one (always)
 xmtextfieldsetstring,$multi_names_txt($num_movies-1),''
 $num_movies -= 1
 $multi_next_movie = $num_movies % $max_movies
 ty,'new values of $multi_next_movie and $num_movies =',$multi_next_movie, $num_movies
 ;re-scan the superview
 if $num_movies then {
   movie_indexscan
   ;also setup the single movie $mv_track_dx, dy arrays
   track_on_off
 }
 endsubr
 ;========================================================
