      SUBROUTINE CHOOSE(FROZEN) 
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
	1 ,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  
	COMMON/SCANBF/KEY,AITEM
      LOGICAL FROZEN
	REAL*8	AITEM,REGULAR,TOURNAMENT,FROZN,SHORT,MEDIUM,LONG
	1 ,NOVICE,FAIR,GOOD,EMERITUS,EXPERT,RHBLANK
	EQUIVALENCE (AITEM,TNUMBER)
	DATA REGULAR,TOURNAMENT,FROZN/7HREGULAR,8HTOURNAME,6HFROZEN/
	DATA SHORT,MEDIUM,LONG/5HSHORT,6HMEDIUM,4HLONG/
	DATA NOVICE,FAIR,GOOD,EXPERT/6HNOVICE,4HFAIR,4HGOOD,6HEXPERT/
	DATA EMERITUS,RHBLANK/8HEMERITUS,1H /
      TNUMBER = 0.
      PASSWD = RHBLANK
	ALLDONE=0
	GAMEWON=0
	SEED=SECNDS(0.)
	CALL RANSET(SEED)
	IPHWHO=0
5     FROZEN = .FALSE.
C--------ASK FOR PARAMETERS OF GAME, PREFERABLY ALL ON ONE LINE 
      CALL PROMPT( 
     +54HWOULD YOU LIKE A REGULAR, TOURNAMENT, OR FROZEN GAME?   ,54)
      CALL SCAN 
	IF(CROP(AITEM,REGULAR)) GO TO 9
	IF(CROP(AITEM,TOURNAMENT)) GO TO 100
	IF(CROP(AITEM,FROZN)) GO TO 200
      GO TO 5 
 9    SKILL=0
	LENGTH=0
 10   CALL SCAN 
      IF(KEY .NE. IHALPHA) GO TO 20 
C--------CHECK FOR DIFFERENT KINDS OF GAMES 
	IF(CROP(AITEM,SHORT)) LENGTH=1
	IF(CROP(AITEM,MEDIUM)) LENGTH=2
	IF(CROP(AITEM,LONG)) LENGTH=4
	IF(CROP(AITEM,NOVICE)) SKILL=1
	IF(CROP(AITEM,FAIR)) SKILL=2
	IF(CROP(AITEM,GOOD)) SKILL=3
	IF(CROP(AITEM,EXPERT)) SKILL=4
	IF(CROP(AITEM,EMERITUS)) SKILL=5
	KSTUF(5)=IDIM(SKILL,3)
      IF(LENGTH*SKILL .EQ. 0) GO TO 10 
	GO TO 30
 20   IF(LENGTH .NE. 0) GO TO 25
      CALL PROMPT(45HWOULD YOU LIKE A SHORT, MEDIUM OR LONG GAME? ,45) 
      GO TO 10
 25   IF(SKILL .NE. 0) GO TO 30 
      CALL PROMPT(48HARE YOU NOVICE, FAIR, GOOD, EXPERT OR EMERITUS?  
	1  ,48)
      GO TO 10
C--------READ IN SECRET PASSWORD
 30   CALL SCAN 
	PASSWD=AITEM
      IF(KEY .NE. IHEOL) GO TO 40 
      CALL PROMPT(33HPLEASE TYPE IN A SECRET PASSWORD:,33)
      GO TO 30
40    CONTINUE    
C--------USE PARAMETERS TO GENERATE INITIAL VALUES OF THINGS
      DAMFAC=0.50*SKILL 
      REMBASE=3.0*RANF(0)+2.0
      INPLAN=5. +6.*RANF(0) 
      NROMREM=(2.+RANF(0))*SKILL
      NSCREM=SKILL/3
      REMTIME=7.0*LENGTH 
	INTIME=REMTIME
      RATE=(SKILL-2.0*RANF(0)+1.0)*SKILL*0.1 + 0.15 
      REMKL=2.0*RATE*INTIME 
	INKLING=REMKL
      INCOM=SKILL+0.0625*INKLING*RANF(0)
      INCOM=MIN0(10,INCOM) 
	REMCOM=INCOM
      REMRES=(INKLING+4* INCOM        )*INTIME
	INRESOR=REMRES
	IF(INKLING.GT.50) REMBASE=REMBASE+1
	INBASE=REMBASE
      RETURN
C--------PROCESS A TOURNAMENT REQUEST 
 100  CALL SCAN
      CALL RANSET(ABS(TNUMBER))       
      THINGX=-1 
C--------GO BACK FOR ANYTHING LEFT OUT
      IF (KEY.NE.IHEOL) GO TO 9 
      CALL PROMPT(37HTYPE IN NAME OR NUMBER OF TOURNAMENT:   ,37) 
      GO TO 100 
C--------PROCESS A REQUEST FOR A FROZEN GAME
 200  CALL THAW 
C--------MAKE SURE WE GOT A GAME OUT OF THAW
      IF(PASSWD.EQ.0.D0) GO TO 5 
      FROZEN = .TRUE. 
C--------DESTROY ANY "THINGS" IN FROZEN GAME. 
      THINGX=0 
	THINGY=0
      DO 210 I=1,10 
      DO 210 J=1,10 
 210  IF(QUAD(I,J) .EQ. IHQUEST) QUAD(I,J)=IHDOT
C--------RESET PLAQUE STATUS
      ICITE=0 
      RETURN
      END 
