      SUBROUTINE MOVETHO
C*BEGIN COMMON 
      COMMON SNAP,SNAPSHT(247), 
     +   DATE,REMKL,REMCOM,REMBASE,REMRES,REMTIME,STARKL,BASEKL,
     +   KILLK,KILLC,GALAXY(8,8),CX(10),CY(10),BASEQX(5),BASEQY(5), 
     +   NEWSTUF(8,8),PLNETS(10,5),ISX,ISY,NSCREM,NROMKL,NROMREM,
     +   NSCKILL,NPLANKL,ISATB,BATX,BATY,THINGX,THINGY,
     +   QUAD(10,10),KX(20),KY(20),KPOWER(20),KDIST(20),KSTUF(20),  
     +   FUTURE(10),MESSAGE(5,10),
     +   INKLING,INBASE,INRESOR,INCOM,INTIME,INSTAR,INENRG,INSHLD,
     +   INTORPS,INLSR,INDATE,ENERGY,SHLD,SHLDUP,CONDIT,TORPS,SHIP, 
     +   QUADX,QUADY,SECTX,SECTY,WARPFAC,WFACSQ,LSUPRES,DAMAGE(20), 
     +   LENGTH,SKILL,PASSWD,DIST,DIREC,TIME,BASEX,BASEY,DOCKFAC, 
     +   KLHERE,COMHERE,CASUAL,NHELP,NKINKS,STARCH(8,8),
     +   DEVICE(2,14),IDIDIT,GAMEWON,ALIVE,JUSTIN,RESTING,ALLDONE,
     +   DAMFAC,SHLDCHG,NDEVICE,PLNETX,PLNETY,INORBIT,LANDED,IPLANET,
     +   IMINE,ICRYSTL,INPLAN,NENHERE,ISHERE,NEUTZ,IRHERE,ICRAFT,
     +   IENTESC,ISCRAFT,ISCATE,CRYPROB,ICITE,IPHWHO,
     +   CRACKS(12) 
      INTEGER SHLDUP,CONDIT,QUADX,QUADY,SECTX,SECTY,TORPS,
     +   REMKL,REMBASE,SKILL,REMCOM,GALAXY,STARCH,CX,CY, 
     +   SHIP,ALLDONE,BASEQX,BASEQY,BASEX,BASEY,GAMEWON, 
     +   ALIVE,STARKL,BASEKL,CASUAL,COMHERE,RESTING,SNAP,SHLDCHG, 
     +   THINGX,THINGY,BATX,BATY,PLNETX,PLNETY,PLNETS
      REAL KDIST,KPOWER,LSUPRES,INTIME,INRESOR,INDATE,INSHLD,   
     +   INENRG,INLSR 
	BYTE QUAD
	REAL*8 DEVICE,PASSWD
C*END COMMON 
	LOGICAL*1 IHS,IHR,IHC,IHK,IHE,IHF,IHBLANK,IHDOT,IHP,IHB
	+ ,IHSTAR,IHT,IHQUEST,IHNUM
      COMMON/HOLLER/IHEOL,IHREAL,IHALPHA,IHS,IHR,IHC,IHK,IHGREEN,IHRED, 
     +IHYELLO,IHDOCKD,IHE,IHF,IHBLANK,IHDOT,IHQUEST,IHP,IHSTAR,IHB
     +,IHT,IHNUM  
      EQUIVALENCE (KSTUF(1),ITHERE),(KSTUF(2),ITHX),(KSTUF(3),ITHY) 
      IF(ITHERE.EQ.0 .OR. JUSTIN.EQ.1) RETURN
	IF((ITHERE.EQ.1 .AND. ITHX.EQ.ITHY) .OR.
	+     (ITHERE.EQ.2 .AND. ITHX.NE.ITHY)) GO TO 1
	IDX=11-ITHX
	IDY=ITHY
	GO TO 5
1	IDX=ITHX
	IDY=11-ITHY
C----------MAKE SURE DESTINATION IS EMPTY. IF NOT, FORGET IT.       
5	IF((QUAD(IDX,IDY).NE.IHDOT).AND.(QUAD(IDX,IDY).NE.IHNUM)) RETURN
      QUAD(ITHX,ITHY)=IHNUM 
      IF(ITHX.EQ.IDX) GO TO 12       
C----------MOVE THOLIAN ON X-AXIS     
	IM=ISIGN(1,IDX-ITHX)
7	IF(ITHX.EQ.IDX) GO TO 20       
      ITHX=ITHX+IM
      IF(QUAD(ITHX,ITHY).EQ.IHDOT) QUAD(ITHX,ITHY)=IHNUM  
      GO TO 7    
12	IF(ITHY.EQ.IDY) GO TO 20       
C------------MOVE THOLIAN ON Y-AXIS.  
	IM=ISIGN(1,IDY-ITHY)
13	IF(ITHY.EQ.IDY) GO TO 20       
      ITHY=ITHY+IM
      IF(QUAD(ITHX,ITHY).EQ.IHDOT) QUAD(ITHX,ITHY)=IHNUM  
      GO TO 13   
20	QUAD(ITHX,ITHY)=IHT   
C-------CHECK TO SEE IF ALL HOLES ARE PLUGGED    
      DO 22 I=1,10 
	DO 22 J=1,10,9
      IF(QUAD(J,I).NE.IHNUM .AND. QUAD(J,I).NE.IHT) RETURN
      IF(QUAD(I,J).NE.IHNUM .AND. QUAD(I,J).NE.IHT) RETURN
22	CONTINUE    
C-------ALL PLUGGED UP, THOLIAN SPLITS.
      QUAD(ITHX,ITHY)=IHNUM 
      CALL DROPIN(IHBLANK,ID1,ID2)    
      ITHERE=0    
      CALL CRMSENA(IHT,2,ITHX,ITHY)   
      CALL CRAMDMP(15H COMPLETES WEB.    )      
      RETURN      
      END 
