[net.sources.games] VMS Empire Part 3 of 3

edjames@ic.Berkeley.EDU (Ed James) (12/19/86)

	I5=ICORR(I4)
	I=Z6+IARROW(I5+1)
comment	**
900	IF ((ORDER(I).EQ.0).AND.(AB9(I5).EQ.'+')) GOTO 1000
	I4=0
1000	M=I1
	IF (M.EQ.9) M=I3
	IF (M.EQ.9) M=I2
	IF (M.EQ.9) M=I5
	IF (I4.EQ.0) M=9
	JIGGLE=M
	RETURN
	END
SHAR_EOF
if test 716 -ne "`wc -c < 'jiggle.f'`"
then
	echo shar: error transmitting "'jiggle.f'" '(should have been 716 characters)'
fi
fi # end of overwriting check
if test -f 'kline.c'
then
	echo shar: will not over-write existing file "'kline.c'"
else
cat << \SHAR_EOF > 'kline.c'
#include <curses.h>

/*
 * Changes jector (0->9) to ki (x offset) and line (returned) * 100
 */
kline_(ki, jector)
	int	*ki, *jector;
{
	int	ject;

	*ki = 0;
	ject = *jector;
	if ( *jector > 4) {
		*ki = 100 - (COLS - 10);
		if (*ki < 0)
			*ki = 0;
		ject = ject - 5;
	}
	ject = ject * 10;
	if (ject + LINES - 4 > 60) {
		ject = 60 - (LINES - 4);
		if (ject < 0)
			ject = 0;
	}
	return (ject * 100);
}
SHAR_EOF
if test 404 -ne "`wc -c < 'kline.c'`"
then
	echo shar: error transmitting "'kline.c'" '(should have been 404 characters)'
fi
fi # end of overwriting check
if test -f 'ltr.f'
then
	echo shar: will not over-write existing file "'ltr.f'"
else
cat << \SHAR_EOF > 'ltr.f'
	subroutine ltr(z6,iturn)
c
c	Does short range scan around location z6
c
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C

	if (mode.ne.1) goto 100
	call sensor(z6)
	return
100	if (iturn.ne.1) goto 700
	do 200 i7=1,8
	i8=z6+iarrow(i7+1)
comment	**
200	if ( rmap ( i8 ) .eq. pmap ( i8 )) goto 700
	call cr
	call strout ( 'Before sensor probe' )
	l6=z6
	if (l6.lt.101) l6=l6+100
	if (l6.gt.5900) l6=l6-100
	if (l6/100*100.eq.l6) l6=l6-1
	if (l6/100*100+1.eq.l6) l6=l6+1
	do 600 i=-101,99,100
	do 400 i9=0,2
400	d2(i9+1)=omap(l6+i+i9)
comment	**
	do 500 i9=0,2
500	g2(i9+1)=pmap(l6+i+i9)
comment	**
600	continue
	call putc ( g2 ( 1 ))
	call putc ( g2 ( 2 ))
	call putc ( g2 ( 3 ))
	call putc ( d2 ( 1 ))
	call putc ( d2 ( 2 ))
	call putc ( d2 ( 3 ))
	call sensor(z6)
	call cr
	call strout ( 'After sensor probe' )
700	continue
	l6=z6
	if (l6.lt.301) l6=l6+300-(l6-1)/100*100
	if (l6.gt.5700) l6=l6-(l6-1)/100*100+5600
	if ((l6-1)/100*100+97.lt.l6) l6=97+(l6-1)/100*100
	if ((l6-1)/100*100+4.gt.l6) l6=l6/100*100+4

	do 900 i=-303,297,100
	do 800 i9=0,6
	g2(i9+1)=pmap(l6+i+i9)
comment	**
	jnkbuf ( i9 + 1 ) = char(g2( i9 + 1 ))
800	continue
	call bufout ( jnkbuf, 7 )
	call cr
900	continue
1000	continue
	return
	end
SHAR_EOF
if test 1211 -ne "`wc -c < 'ltr.f'`"
then
	echo shar: error transmitting "'ltr.f'" '(should have been 1211 characters)'
fi
fi # end of overwriting check
if test -f 'makeland.f'
then
	echo shar: will not over-write existing file "'makeland.f'"
else
cat << \SHAR_EOF > 'makeland.f'
	SUBROUTINE MAKELAND
	IMPLICIT INTEGER(A-Z)
	REAL DIVER,RAD,COSANG,SINANG

	include 'common.h'

	DO 100 I=1,39
	DO 100 J=1,39
	SUBMAP(I,J)=' '
100	CONTINUE

	SUBMAP(20,20)='+'
	VARY=2+irand(5)
	RADIUS=irand(5)+irand(5)
	START=90-irand(180)
	DO 400 ROT=START,START+360,3
		IF (RADIUS.LE.0) GOTO 300
		COSANG=COS(FLOAT(ROT)/3.14159)
		SINANG=SIN(FLOAT(ROT)/3.14159)
		RAD=0
		DIVER=.5/(ABS(COSANG)+ABS(SINANG))
200		IF (RAD.GT.RADIUS) GOTO 300
		RAD=RAD+DIVER
		SUBMAP(20+int(RAD*COSANG),20+int(RAD*SINANG))='+'
		GOTO 200
300		IF (MOD(ROT,10).NE.0) GOTO 400
		RADIUS=RADIUS+irand(VARY)-(VARY/2)
		IF (mod (VARY, 2).EQ.0) RADIUS=RADIUS+irand(2)
		IF (RADIUS.GE.12) RADIUS=11
400	CONTINUE
c	do 110 i =1, 39
c	print 111, (submap(i,j),j=1,39)
c110	continue
c111	format(39a1)
	RETURN
	END
SHAR_EOF
if test 783 -ne "`wc -c < 'makeland.f'`"
then
	echo shar: error transmitting "'makeland.f'" '(should have been 783 characters)'
fi
fi # end of overwriting check
if test -f 'mov.f'
then
	echo shar: will not over-write existing file "'mov.f'"
else
cat << \SHAR_EOF > 'mov.f'
	FUNCTION MOV(I6,I7)
C
C RETURNS THE INDEX-1 INTO IARROW FOR THE DIRECTION  OF THE MOVE
C   FROM I6 TO I7
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	LOGICAL XMAJOR
C
	IY6=(I6-1)/100
	IY7=(I7-1)/100
	IX6=I6-(100*IY6)
	IX7=I7-(100*IY7)
	IY=IY7-IY6
	IX=IX7-IX6

C  SCREEN OUT TRIVIAL CASES
	IF (IX.EQ.0) THEN
	   DIR=SIGN(100,IY)
	   GOTO 100
	   ENDIF
	IF (IY.EQ.0) THEN
	   DIR=SIGN(1,IX)
	   GOTO 100
	   ENDIF

C  THIS ATTEMPTS A LINE-OF-SIGHT APPROXIMATION
C   unfortunately a true LOS requires knowing where you came from
comment	
C   this routine currently tries to keep near a 3 to 1 ratio.
	DX=ABS(IX)
comment	GET DELTA X
	DY=ABS(IY)
comment	GET DELTA Y
	XMAJOR=.TRUE.
comment	ASSUME X IS MAJOR CHANGE
	IF (DY.GT.DX) THEN
comment	IF WRONG, SWITCH
	   DX=DY
	   DY=ABS(IX)
	   XMAJOR=.FALSE.
	   ENDIF	
C
comment	the divisor determines the slope
C
comment	perfect case would be delta y at start
	IF (IFIX(FLOAT(DX)/3+.5).GT.DY) THEN
comment	IF MAJOR IS LONG, GO STRAIGHT
	     IF (XMAJOR) THEN
		DIR=SIGN(1,IX)
	     ELSE
		DIR=SIGN(100,IY)
	     ENDIF
	   ELSE
comment	OTHERWISE, TAKE DIAGONAL
		DIR=SIGN(100,IY)+SIGN(1,IX)
	   ENDIF
100	DO 200 I=1,9
comment	FIND THE INDEX
200	IF (IARROW(I).EQ.DIR) GOTO 300
300	MOV=I-1
comment	FOR COMPATIBILITY (?)


C OLD WAY: FOR HISTORIANS
C	THIS DOES NOT DO A "TRUE" LINE OF SIGHT, FAVORS DIAGONALS
C	IF ((IY.LT.0).AND.(IX.GT.0)) MOV=2
C	IF ((IY.LT.0).AND.(IX.EQ.0)) MOV=3
C	IF ((IY.LT.0).AND.(IX.LT.0)) MOV=4
C	IF ((IY.EQ.0).AND.(IX.LT.0)) MOV=5
C	IF ((IY.GT.0).AND.(IX.LT.0)) MOV=6
C	IF ((IY.GT.0).AND.(IX.EQ.0)) MOV=7
C	IF ((IY.GT.0).AND.(IX.GT.0)) MOV=8
C	IF ((IY.EQ.0).AND.(IX.GT.0)) MOV=1
C	IF ((IX.EQ.0).AND.(IY.EQ.0)) MOV=0

	RETURN
	END
SHAR_EOF
if test 1698 -ne "`wc -c < 'mov.f'`"
then
	echo shar: error transmitting "'mov.f'" '(should have been 1698 characters)'
fi
fi # end of overwriting check
if test -f 'movcor.f'
then
	echo shar: will not over-write existing file "'movcor.f'"
else
cat << \SHAR_EOF > 'movcor.f'
	FUNCTION MOVCOR
     1	(IFO,ITURN,Z6,MOVE,IH1,IS1,AGGR,OWN1,EXPLOR,DIR,DEST,ORIG,HMAX)
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
	character ab
C
C 
C CHECK FOR IMPOSSIBLE CONDITION FOR MOVE
C
	IF ((.NOT.PASS).OR.(IABS(MOVE).LE.8)) GOTO 100
	call clear
	call topini
	PRINT 999,OWN1,Z6,MOVE,IFO
999	FORMAT(1X,A1,' @ ',I4,' ATTEMPTED ',I,' WITH IFO ',I4)
C 
100	MOVE=IABS(MOVE)
C 
	IF (ITURN.EQ.1) BLAH=0
comment	**
	IF (BLAH.LT.0) MOVE=ICORR(I2+irand(3)-1)
comment	**
C 
C CHECK FOR SOMETHING TO ATTACK, OR, SOMETHING TO RUN FROM
C BLAH.LT.0: RUN
C BLAH.GE.0: ATTACK
C
	DO 200 IX=1,8
	I1=IX
	LOC=Z6+IARROW(I1+1)
comment	**
	AB=RMAP(LOC)
	IF (OMAP(LOC).NE.'.') GOTO 200
	IF ((AB.LT.'B').OR.(AB.GT.'T')) GOTO 200
comment	IF SH/PL, LOOK
	BLAH=ATTACK(OWN1,AB,IH1,AGGR)
	IF (BLAH.GE.0) GOTO 1200
comment	** ATTACK IT
	GOTO 300
comment	RUN FROM IT
200	CONTINUE
	I1=0
comment	NOTHING OF INTEREST HERE
	GOTO 800
C 
C SELECT AN APPROPRIATE ESCAPE MOVE
C
300	IS=irand(3)
	DO 600 IN=1,8
	I2=IN
	IF ((IS.EQ.0).OR.(IN.GT.3)) GOTO 500
	IF (IS.NE.1) GOTO 400
	IF (IN.EQ.1) I2=2
	IF (IN.EQ.2) I2=3
	IF (IN.EQ.3) I2=1
	GOTO 500
400	IF (IN.EQ.1) I2=3
	IF (IN.EQ.2) I2=1
	IF (IN.EQ.3) I2=2
500	I=IARROW(ISCAPE(I2,I1)+1)+Z6
comment	**
	IF ((RMAP(I).EQ.'.').AND.(ORDER(I).EQ.0)) GOTO 700
600	CONTINUE
	I1=0
	GOTO 800
700	I1=ISCAPE(I2,I1)
	IF (OMAP(I).NE.'.') call topmsg ( 3, 'ISCAPE ERROR' )
	GOTO 1200
C 
800	IF (EXPLOR.EQ.0) GOTO 1000
comment	**
	EXPMAX=0
	DO 900 IX=MOVE,MOVE+7
	I1=ICORR(IX)
	LOC1=Z6+IARROW(I1+1)
comment	**
	IF (ORDER(LOC1).NE.0) GOTO 900
	IF (RMAP(LOC1).NE.'.') GOTO 900
	IF (DEST.GT.0) THEN
	  IF (IDIST(Z6,DEST).LT.IDIST(LOC1,DEST)) GOTO 900
	ENDIF
	NEXP=0
	IF (EMAP(LOC1+IARROW(I1+1)).EQ.' ') NEXP=1
comment	**
	IF (EMAP(LOC1+IARROW(ICORR(I1-1)+1)).EQ.' ') NEXP=NEXP+1
comment	**
	IF (EMAP(LOC1+IARROW(ICORR(I1+1)+1)).EQ.' ') NEXP=NEXP+1
comment	**
	IF (EMAP(LOC1+IARROW(ICORR(I1+2)+1)).EQ.' ') NEXP=NEXP+1
comment	**
	IF (EMAP(LOC1+IARROW(ICORR(I1-2)+1)).EQ.' ') NEXP=NEXP+1
comment	**
	IF (NEXP.EQ.5) GOTO 1200
	IF (NEXP.LE.EXPMAX) GOTO 900
	EXPMAX=NEXP
	I11=I1
900	CONTINUE
	I1=0
	IF (EXPMAX.EQ.0) GOTO 1000
	I1=I11
	GOTO 1200
1000	I2=MOVE
	LOC1=Z6+IARROW(MOVE+1)
comment	**
	AB=RMAP(LOC1)
	IF (LOC1.NE.ORIG) THEN
	  IF (((AB.EQ.'.').OR.(AB.EQ.'X')).AND.(ORDER(LOC1).EQ.0)) GOTO 1200
	ENDIF
	M=MOVE
	IA=ICORR(M-DIR*3)
	IF (RMAP(Z6+IARROW(IA+1)).NE.'.') M=IA
comment	**
	DO 1100 I=0,7*DIR,DIR
	I2=ICORR(M+I)
	I3=Z6+IARROW(I2+1)
comment	**
	IF ((RMAP(I3).EQ.'.').AND.(ORDER(I3).EQ.0).AND.(I3.NE.ORIG)) GOTO 1200
1100	CONTINUE
	I2=0
1200	IF (I1.NE.0) I2=I1
	IF (RMAP(Z6+IARROW(MOVE+1)).NE.'X') MOVE=I2
comment	**
	IF ((RMAP(Z6).EQ.'X').AND.(IH1.LT.HMAX)) MOVE=0
	MOVCOR=MOVE
	RETURN
	END
SHAR_EOF
if test 2696 -ne "`wc -c < 'movcor.f'`"
then
	echo shar: error transmitting "'movcor.f'" '(should have been 2696 characters)'
fi
fi # end of overwriting check
if test -f 'mve.f'
then
	echo shar: will not over-write existing file "'mve.f'"
else
cat << \SHAR_EOF > 'mve.f'
ccc mve - handle player move mode
	subroutine mve(own1,xxxmdate,relnum,num,n2,z6,z7,disas,jursor)
c
c	inputs:
c		own1 = char of piece (ie: 'a' for army)
c		xxxmdate = round number
c		relnum = relative piece number to type
c		num = piece index to rlmap
c		n2 = piece index to hits
c		z6 = location, return new location
c		z7 = old location
c		disas = 0:ok, -2:stasis
c		jursor = current cursor
c
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	disas=0
c
c	Get command character with no echo
c
100	call sector ( pmap ( 1 ))
	ib = j1ts ( n2 )
	call head ( own1, relnum, num, z6, ib )
comment	display header
	call cursor ( jursor )
200	e = char(getchx())
	call topmsg ( 2, 0 )
comment	clear line
	call topmsg ( 3, 0 )
comment	clear line
	call cflush
c 
c	Look at the command
c
	z7 = z6
	do 300 i = 1, 9
	ind = i
300	if ( e .eq. kbtbl ( ind )) goto 400
	goto 500
comment	command is not a direction
400	z6 = z6 + kbfudg ( ind )
	goto 4200

500	end = 15
	if ( pass ) end = 20
	do 600 i = 1, end
600	if ( e .eq. comman ( i )) goto 700
	i = 0
c
c	s, r, i, k, o, l, f, g, p, h, y, t, v, j, ?,  0,  0, u, n, +
c
700	goto ( 900, 1000, 1100, 1500, 1900, 2000, 2300, 2400, 2500, 2600,
     *	2700, 2800, 2900, 3200, 3300, 800, 800, 3800, 3900, 2600 ) i
800	goto 100
c 
c	s: put to sleep
c
900	if ( rmap ( z6 ) .eq. 'O' ) return
	mycode ( num ) = 50
	return
c 
c	r: random movement
c
1000	if ( own1 .ne. 'A' ) goto 100
comment	only for armies
	mycode ( num ) = 100
	z6 = z6 + iarrow ( jiggle ( z6, num ) + 1 )
	return
c 
c	i: put in directional stasis
c
1100	call cursor(jursor)
comment	cuz of clear lines above
	e=char(getchx())
	do 1200 i=1,9
	if (e .eq. kbtbl(i)) goto 1300
1200	continue
	goto 1400
1300	mycode(num)=cmytbl(i)
1400	if (mycode(num).eq.0) goto 100
	disas=-2
	return
c 
c	k: kill stasis number on piece
c
1500	mycode(num)=0
comment	zero function code for anything

	if (own1.ne.'T') goto 1700
comment	if transport, wake armies aboard
	do 1600 j=1,500
1600	if (rlmap(j).eq.z6) mycode(j)=0
	goto 100
1700	if (own1.ne.'C') goto 100
comment	if carrier, wake fighters aboard
	do 1800 j=501,700
1800	if (rlmap(j).eq.z6) mycode(j)=0
	goto 100
c 
c	o: cancel auto move mode
c
1900	continue
	if ( .not. automv ) goto 1913
	automv = .false.
	call topmsg ( 3, 'Auto move mode canceled' )
	goto 100
1913	continue
	call topmsg ( 3, 'Not in auto mode!' )
	goto 100
C 
C L: SET UP CITY STASIS NUMBERS
C
2000	IF (OMAP(Z6).NE.'*') GOTO 2300
comment	BETTER BE A CITY
	E=char(GETCHX())
	DO 2100 I=1,9
	IF (E .EQ. KBTBL(I)) GOTO 2200
2100	CONTINUE
	GOTO 4100
2200	FIPATH(CITFND(Z6))=CMYTBL(I)
comment	SET STASIS NUMBER
	DISAS=-2
	RETURN
C 
C F:
C
2300	CALL DIREC
	GOTO 4100
C 
C G: PUT T/C TO SLEEP
C
2400	IF ((OWN1.NE.'T').AND.(OWN1.NE.'C')) GOTO 100
	MYCODE(NUM)=9997
	DISAS=-2
	RETURN
C 
C P: SECTOR PRINTOUT
C
2500	ISEC=-1
	CALL SECTOR(PMAP(1))
	GOTO 4100
c 
c	h: get help
c
2600	call help
	e = char(getchx())
	isec = -1
	goto 4100
C 
C Y: CHANGE PHASE OF A CITY
C
2700	CALL DIREC
	GOTO 4100
C 
C T: BLOCK PRINTOUT
C
C2800	CALL CLEAR
C	CALL BLOCK(PMAP(1))
C	ISEC=-1
C	GOTO 4100
C 
C V: SAVE GAME
C
C2900	CALL GAME(1,NUM)
comment	NOT SURE THIS WILL WORK AS PLAYERS EXPECT
2800	CONTINUE
2900	CALL DIREC
	GOTO 100
C 
C J: PUT IN EDIT MODE
C
3200	CALL EDIT(Z6)
	IF (MYCODE(NUM).EQ.0) GOTO 100
	DISAS=-2
	RETURN
c 
c	?: how many hits? loaded?
c
3300	if ((own1.eq.'A').or.(own1.eq.'F')) goto 100
	ib=j1ts(n2)
comment	display hits left
	ptr = 0
C	CALL sstrout ( ' Hits left:',10)
	n = 0
comment	count armies
	if ( own1 .ne. 'T' ) goto 3500
	do 3400 i = 1, 500
3400	if ( rlmap ( i ) .eq. z6 ) n = n + 1
	if ( n .eq. 0 ) goto 3700
cc	if (mode.eq.1) call tpos(3,1)
	call addint ( n, jnkbuf, ptr )
	if ( n .eq. 1 ) call addstr ( ' army', jnkbuf, ptr )
	if ( n .gt. 1 ) call addstr ( ' armies', jnkbuf, ptr )
	goto 1313

3500	if ( own1 .ne. 'C' ) goto 4100
	do 3600 i = 1, 200
comment	count fighters
3600	if ( rlmap ( i + 500 ) .eq. z6 ) n = n + 1
	if ( n .eq. 0 ) goto 3700
cc	if (mode.eq.1) call tpos(3,1)

	call addstr ( ' fighter', jnkbuf, ptr )
	if ( n .gt. 1 ) call addstr ( 's', jnkbuf, ptr )
1313	continue
	call addstr ( ' aboard', jnkbuf, ptr )
	jnkbuf(ptr + 1) = '\0'
	call topmsg ( 3, jnkbuf )
	call cflush
	goto 4100

3700	continue
comment	nothing aboard
cc	if (mode.eq.1) call tpos(3,1)
	call topmsg ( 3, 'Nothing aboard' )
	call cflush
	GOTO 4100
C 
C U: CALL REFERENCE MAP
C
3800	ISEC=-1
	CALL SECTOR(RMAP(1))
	GOTO 4100
C 
C N: CALL ENEMY MAP
C
3900	ISEC=-1
	CALL SECTOR(EMAP(1))
	GOTO 4100
C 
C +: BLOCK PRINT REF. MAP
C
4000	call clear
	call topini
	ISEC=-1
	CALL BLOCK(RMAP(1))
	E=char(GETCHX())
	GOTO 4100
C 
4100	call ltr(z6,2)
	call cflush
	goto 100
4200	if (order(z6).eq.0) goto 4300
cc	if (mode.eq.1) call tpos(3,1)
	call topmsg ( 3, 'You cannot move onto the edge of the world' )
	z6 = z7
	goto 4100
4300	return
	end
SHAR_EOF
if test 4814 -ne "`wc -c < 'mve.f'`"
then
	echo shar: error transmitting "'mve.f'" '(should have been 4814 characters)'
fi
fi # end of overwriting check
if test -f 'order.c'
then
	echo shar: will not over-write existing file "'order.c'"
else
cat << \SHAR_EOF > 'order.c'
#include <stdio.h>
/*
 * Return 1 if off the edge of the map
 */
order_(ip)
	int	*ip;
{
	if (*ip <= 101 || *ip >= 5900 || (*ip % 100) <= 1)
		return (1);
	else
		return (0);
}
SHAR_EOF
if test 176 -ne "`wc -c < 'order.c'`"
then
	echo shar: error transmitting "'order.c'" '(should have been 176 characters)'
fi
fi # end of overwriting check
if test -f 'path.f'
then
	echo shar: will not over-write existing file "'path.f'"
else
cat << \SHAR_EOF > 'path.f'
	FUNCTION PATH(BEG,END,DIR,OKVECT,FLAG)
C
C PATH SUBROUTINE FOR EMPIRE
C  FINDS DIRECTION TO MOVE UNIT, FROM BEG TO END, OKVECT SPECIFIES OK TERRAIN.
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	character	OKVECT(5)
C
	BACKUP=1
	TDIR=DIR
comment	GET A DIRECTION TO FIDDLE WITH
	DIR3=TDIR*3
	Z6=BEG
	MAXMVE=(2 * IDIST(BEG,END))+1
comment	COMPUTE MAX MOVES TO GET THERE
	MOVNUM=MAXMVE
100	DO 200 I=1,100
comment	CLEAR G2 ARRAY
	G2(I)=0
200	CONTINUE

C STRGHT:
comment	TRY STRAIGHT MOVE FIRST
300	MOOVE= MOV(Z6,END)
	Z62=Z6+IARROW(MOOVE+1)
	AB=EMAP(Z62)
	IF (COMPAR(AB,Z62,OKVECT).EQ.0) GOTO 900
comment	IF NO GOOD, FOLLOW SHORE

C OKSET:
comment	STRAGHT MOVE WORKING
400	BAKADR=1

C OKMOVE:
500	IF (Z6 .EQ. BEG) MOVE1=MOOVE
	Z6=Z62
	IF (FLAG.GE.1000) CALL TEST4(Z6,FLAG,TDIR,MOVE1,MOVNUM,BEG,
     1 END,G2,BAKADR)
	IF (Z6 .EQ. END) GOTO 800
comment	IF Z6=END, WE'RE DONE

C DOMORE:
600	MOVNUM=MOVNUM-1
	IF (MOVNUM .EQ. 0) GOTO 700
comment	REACHED MAX MOVES, TRY NEW DIRECTION
C		STRGHT,	CHKNXT
	GOTO	(300,	1300), BAKADR
comment	CONTINUE, IN SAME MANNER

C TRYDIR::
700	DIR3=-DIR3
comment	NEGATE CURRENT DIRECTION
	TDIR=-TDIR
	IF (TDIR .EQ. DIR) GOTO  1200
comment	GIVE UP IF BACK TO START
	MOVNUM=MAXMVE
comment	ELSE, TRY AGAIN
	BACKUP=1
	Z6=BEG
	GOTO 100

C SUCCES:				SUCCESS, RETURN
800	PATH=MOVE1
	SUCCES=SUCCES+1
	FLAG=1
	RETURN

C FOLSHR:				FOLLOW THE SHORE
900	MOV1=ICORR(MOOVE-DIR3)
comment	TRY AGAIN
	Z62=Z6+IARROW(MOV1+1)
	AB=EMAP(Z62)
	IF (COMPAR(AB,Z62,OKVECT).EQ.1) MOV1=MOOVE
comment	???
C STFOL:
1000	DO 1100 IVAR= MOV1,MOV1+7*TDIR,TDIR
	MOOVE=ICORR(IVAR)
	Z62=Z6+IARROW(MOOVE+1)
	IF (ORDER(Z62) .NE. 0) GOTO 1100
	AB=EMAP(Z62)
	IF (COMPAR(AB,Z62,OKVECT).EQ.0) GOTO 1100
C OKSET2:
	BAKADR=2
	GOTO 500
1100	CONTINUE

C FAILUR:
1200	PATH=MOV(BEG,END)
	FAILUR=FAILUR+1
	FLAG=0
	RETURN

C CHKNXT:
1300	T1=MOV(Z6,END)
	Z62=Z6+IARROW(T1+1)
	AB=EMAP(Z62)
	IF (COMPAR(AB,Z62,OKVECT).EQ.0) GOTO 900
	DO 1400 IVAR=BACKUP,1,-1
	IF (Z6 .EQ. G2(IVAR)) GOTO 900
1400	CONTINUE
	G2(BACKUP)=Z6
	BACKUP=BACKUP+1
	IF (BACKUP .LE. 100) GOTO 300
	GOTO 700

	END
SHAR_EOF
if test 2059 -ne "`wc -c < 'path.f'`"
then
	echo shar: error transmitting "'path.f'" '(should have been 2059 characters)'
fi
fi # end of overwriting check
if test -f 'phasin.f'
then
	echo shar: will not over-write existing file "'phasin.f'"
else
cat << \SHAR_EOF > 'phasin.f'
	subroutine phasin(num,e)
c
c	Prompt for city production type, set prod accordingly
c
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C

	e = char(getchx())
	do 200 i=1,8
200	if ( e .eq. phaze ( i )) goto 300
	call huh
	e = ' '
	return
comment	if he doesn't do it right, leave it

300	phase ( num) = phazee ( i )
	found ( num ) = mdate + 6 * phase ( num )
	return
	end
SHAR_EOF
if test 365 -ne "`wc -c < 'phasin.f'`"
then
	echo shar: error transmitting "'phasin.f'" '(should have been 365 characters)'
fi
fi # end of overwriting check
if test -f 'poschk.f'
then
	echo shar: will not over-write existing file "'poschk.f'"
else
cat << \SHAR_EOF > 'poschk.f'
	FUNCTION POSCHK(Z6,OWN)
C
C DETERMINES IF Z6 IS IN CURRENT UPDATE SECTOR SHOWING
C	0=NO, 1=YES
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	INTEGER LOWSCRS(5),HIGHSCRS(5)
	DATA LOWSCRS/1,14,24,34,44/
	DATA HIGHSCRS/15,25,35,45,58/
C
	IF (MODE.EQ.1) GOTO 100
	POSCHK=1
	GOTO 400
100	JECT=JECTOR
	POSCHK=0
	IY=(Z6-1)/100
	IX=Z6-IY*100
	ADJUST=1
	IF (OWN.EQ.'F') ADJUST=0
	IF (JECT.GT.4) GOTO 200
	IF (IX.GT.(64+ADJUST)) GOTO 400
	GOTO 300
200	IF (IX.LT.(36-ADJUST)) GOTO 400
	JECT=JECT-5
300	IF ((IY.LT.(LOWSCRS(JECT+1)-ADJUST)).OR.
     1   (IY.GT.(HIGHSCRS(JECT+1)+ADJUST))) GOTO 400
	POSCHK=1
400	RETURN
	END
SHAR_EOF
if test 615 -ne "`wc -c < 'poschk.f'`"
then
	echo shar: error transmitting "'poschk.f'" '(should have been 615 characters)'
fi
fi # end of overwriting check
if test -f 'priori.f'
then
	echo shar: will not over-write existing file "'priori.f'"
else
cat << \SHAR_EOF > 'priori.f'
	FUNCTION PRIORI(Z6,IFO,ILA,DIR,AC)
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	character GROUND,OK
C 
	DO 100 I=1,7
100	PRIOR(I)=0
	EXPMAX=0
C 
C NOW MAKE A GUESS AS TO WHAT THE MOVE WILL BE
C
	MOVE1=ILA
	IF (IFO.EQ.1.OR.IFO.EQ.2) MOVE1=MOV(Z6,ILA)
	IF (IFO.EQ.3) MOVE1=MOV(Z6,RLMAP(ITT2+ILA))
C 
C NOW SEE IF ANY PRIORITY MOVES EXIST
C
	DO 200 I=0,7*DIR,DIR
	MOVE=ICORR(MOVE1+I)
	LOC=Z6+IARROW(MOVE+1)
comment	**
	IF (ORDER(LOC).NE.0) GOTO 200
	AB=RMAP(LOC)
C 
C CHECK IF ARMY CAN ATTACK SOMETHING OVER WATER
C
	GROUND=OMAP(LOC)
	OK='Y'
	IF ((AC.EQ.'t').AND.(GROUND.EQ.'.')) OK='N'
C 
	IF (AB.EQ.'O') PRIOR(1)=MOVE
	IF ((AB.EQ.'T').AND.(OK.EQ.'Y')) PRIOR(3)=MOVE
	IF (AB.EQ.'*') PRIOR(2)=MOVE
	IF (AB.EQ.'A') PRIOR(5)=MOVE
	IF ((AB.EQ.'S').AND.(OK.EQ.'Y')) PRIOR(6)=MOVE
	IF ((IFO.EQ.0).AND.(AB.GE.'A').AND.(AB.LE.'T').AND.(OK.EQ.'Y'))
     1	 PRIOR(7)=MOVE
C 
	IF (GROUND.NE.'+') GOTO 200
	N=0
	IF (EMAP(LOC+IARROW(ICORR(MOVE-2)+1)).EQ.' ') N=1
comment	**
	IF (EMAP(LOC+IARROW(ICORR(MOVE-1)+1)).EQ.' ') N=N+1
comment	**
	IF (EMAP(LOC+IARROW(MOVE+1)).EQ.' ') N=N+1
comment	**
	IF (EMAP(LOC+IARROW(ICORR(MOVE+1)+1)).EQ.' ') N=N+1
comment	**
	IF (EMAP(LOC+IARROW(ICORR(MOVE+2)+1)).EQ.' ') N=N+1
comment	**
C	PRINT 999,N,EXPMAX
C999	FORMAT(' N:',I2,' EXPMAX:',I2)
	IF (N.LE.EXPMAX) GOTO 200
	PRIOR(4)=MOVE
	EXPMAX=N
200	CONTINUE
C	PRINT 998
C998	FORMAT(' XXXXXXXXXXXXXXXX')
C 
C NOW SELECT THE HIGHEST PRIORITY MOVE
C
	DO 300 I=1,7
300	IF (PRIOR(I).NE.0) GOTO 400
	PRIORI=0
	RETURN
400	PRIORI=PRIOR(I)
	RETURN
	END
SHAR_EOF
if test 1519 -ne "`wc -c < 'priori.f'`"
then
	echo shar: error transmitting "'priori.f'" '(should have been 1519 characters)'
fi
fi # end of overwriting check
if test -f 'prod.f'
then
	echo shar: will not over-write existing file "'prod.f'"
else
cat << \SHAR_EOF > 'prod.f'

	subroutine prod ( ahits, z6, alimit, acrahit, acraloc, alopmax,
     *	aar2s, j, arange, string, point )

	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	character string ( 80 )
	integer point
	integer aar2s(500),arange(200)

	do 1000 i = acraloc + 1, alopmax + acraloc
	if ( rlmap ( i ) .ne. 0 ) goto 1000
	if ( i .gt. alimit + acraloc ) alimit = i - acraloc
	rlmap ( i ) = z6
	if ( ahits .gt. 1 ) j1ts ( acrahit + i - acraloc ) = ahits
	if ( j .gt. 1 ) mycode ( i ) = 0
	if ( j .lt. 2 ) codefu ( i - 1500 ) = 0
	if ( j .lt. 2 ) codela ( i - 1500 ) = 0
	if ( j .eq. 1 ) aar2s ( i - 1500 ) = 0
	if ( acraloc .eq. 2000 ) arange ( i - 2000 ) = 20
	if ( j .eq. 3 ) arange ( i - 500 ) = 20
cc	if (( j .le. 1 ) .or. ( j .ge. 10 )) return
	call addrock ( j, string, point )
	return
1000	continue
	return
	end
SHAR_EOF
if test 804 -ne "`wc -c < 'prod.f'`"
then
	echo shar: error transmitting "'prod.f'" '(should have been 804 characters)'
fi
fi # end of overwriting check
if test -f 'putc.c'
then
	echo shar: will not over-write existing file "'putc.c'"
else
cat << \SHAR_EOF > 'putc.c'
putc_(cp)
	char	*cp;
{
	caddch_(cp);
}
SHAR_EOF
if test 39 -ne "`wc -c < 'putc.c'`"
then
	echo shar: error transmitting "'putc.c'" '(should have been 39 characters)'
fi
fi # end of overwriting check
if test -f 'read.f'
then
	echo shar: will not over-write existing file "'read.f'"
else
cat << \SHAR_EOF > 'read.f'
	subroutine read(beg,lim,num)

	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C

	do 100 j = beg + 1, beg + lim
	read ( 1 ) k
	rlmap ( j ) = k
	if (num .lt. 9) read ( 1 ) mycode(j)
	if (num .gt. 8) read ( 1 ) codefu(j-1500),codela(j-1500)
	if (num .eq. 9) read ( 1 ) ar2s(j-1500)
	if (num .eq. 2) read ( 1 ) range(j-500)
	if (num .eq. 10) read ( 1 ) rang(j-2000)
100	continue
	return
	end
SHAR_EOF
if test 386 -ne "`wc -c < 'read.f'`"
then
	echo shar: error transmitting "'read.f'" '(should have been 386 characters)'
fi
fi # end of overwriting check
if test -f 'round.f'
then
	echo shar: will not over-write existing file "'round.f'"
else
cat << \SHAR_EOF > 'round.f'

ccc round - display the round number
	subroutine round ( date )

	implicit integer(A-Z)
	integer date

	include 'common.h'

	character jbuf ( 10 )
	integer i
	integer tmpx

	do 100 i = 1, 3
	jnkbuf ( i ) = ' '
100	continue

	i = 0
	call addint ( date, jbuf, i )
comment	date in jbuf

	tmpx = cols - 2
	call bufpos ( 20, tmpx, jbuf(1), 1 )
	call bufpos ( 21, tmpx, jbuf(2), 1 )
	call bufpos ( 22, tmpx, jbuf(3), 1 )
	return
	end
SHAR_EOF
if test 429 -ne "`wc -c < 'round.f'`"
then
	echo shar: error transmitting "'round.f'" '(should have been 429 characters)'
fi
fi # end of overwriting check
if test -f 'scrchk.f'
then
	echo shar: will not over-write existing file "'scrchk.f'"
else
cat << \SHAR_EOF > 'scrchk.f'
	FUNCTION SCRCHK(Z6)
C
C DETERMINES IF Z6 IS IN CURRENT SCREEN SECTOR SHOWING
C	0=NO, 1=YES
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
C
	IF (MODE.EQ.1) GOTO 100
	SCRCHK=1
	GOTO 400
100	JECT=JECTOR
	SCRCHK=0
	IY=(Z6-1)/100
	IX=Z6-IY*100
	IF (JECT.GT.4) GOTO 200
comment	CHECK X COORD FIRST
	IF (IX.GT.70) GOTO 400
	GOTO 300
200	IF (IX.LT.30) GOTO 400
	JECT=JECT-5
300	IF ((IY.LT.(JECT*10)).OR.(IY.GT.(JECT*10+19))) GOTO 400
	SCRCHK=1
comment	PASSED, IT'S GOOD
400	RETURN
	END
SHAR_EOF
if test 481 -ne "`wc -c < 'scrchk.f'`"
then
	echo shar: error transmitting "'scrchk.f'" '(should have been 481 characters)'
fi
fi # end of overwriting check
if test -f 'sector.f'
then
	echo shar: will not over-write existing file "'sector.f'"
else
cat << \SHAR_EOF > 'sector.f'
	subroutine sector ( amap )
c
c	This subroutine display sector jector from map ii
c	if isec=jector, map will not be displayed again
c
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	character amap ( 6000 )

	width = cols - 10
	height = lines - 4

20	if ( jector .eq. -1 ) goto 200
	if ( mode .ne. 1 ) return
	if ( contained(isec, jector) .eq. 1) return
	if ( isec .ne. jector ) goto 100
	if ( newrnd .eq. 1 ) goto 1300
	return
100	isec=jector
	goto 300
200	call topmsg ( 1, 'Sector? ' )
	jector=iphase(getchx())
	if ((jector.lt.0).or.(jector.gt.9)) goto 200
	isec=jector
	jector=-1
comment	let main know that updating sector isn't used
300	continue
	call cflush
	call delay ( 45 )
comment	delay before zapping old sector

	call clear
	call topini
	line=kline(ki,isec)
	linefi=line+ 100 * height
comment	linefi=line after last line of sector
	linec=line-100
comment	get set for line 400
400	linec=linec+100
comment	goto next line
	if (linec.ge.linefi) goto 1000
comment	check for end of sector
	kstart = ki + 1
comment	if line is broken, kstart will be modified
500	do 600 j=kstart,ki+width
comment	ki itself is not in sector
	ab = amap ( j + linec )
comment	get character
600	if (ab.ne.' ') goto 700
comment	find first non-blank spot
	goto 400
comment	no characters in this line
700	kinit = j
comment	ab is already calculated
	g2(j)=ab
comment	avoids repitition
	do 800 j=kinit+1,ki+width
comment	look for blank character
	ab=amap(j+linec)
comment	get character
	if (ab.eq.' ') goto 900
comment	exit loop if blank
800	g2(j)=ab
comment	put char. string in an array
900	kfinal=j-1
comment	set end  of char. string
	call cursor(kinit-line+linec-ki+300)
comment	position cursor
c	encode (kfinal-kinit+2,999,jnkbuf)(g2(j),j=kinit,kfinal),0
c999	format(<kfinal-kinit+2>a1)
	call encpri (g2, kinit, kfinal)
	if (kfinal.ge.ki+width) goto 400
comment	next line
	kstart = kfinal + 1
comment	look at rest of line
	goto 500
1000	kursor = (lines - 1) * 100
c
c	Print x coordinates
c
	do 1100 i = ki, ki + width, 10
	call tpos ( lines, i - ki + 1 )
	ptr = 0
	call addint ( i, jnkbuf, ptr )
	jnkbuf ( ptr + 1 ) = '\0'
	call strout ( jnkbuf )
1100	continue
c
c	Print y coordinates
c
	xkursor = cols - 8
	ykursor = 4
	max = line / 100 + height - 1
1110	do 1200 i=line/100,max,2
c	call cursor ( kursor )
	call tpos ( ykursor + i - line / 100, xkursor + 1 )
	ptr = 0
	call addint ( i, jnkbuf, ptr )
	jnkbuf ( ptr + 1 ) = '\0'
	call strout ( jnkbuf )
c	kursor=kursor+200
1200	continue
	call cflush

cc	do 1314 ptr = 1, 3
cc	jnkbuf ( ptr ) = ' '
cc1314	continue
cc	ptr = 1
cc	call addint ( mdate, jnkbuf, ptr )
comment	date in jnkbuf

	call strpos (  5, cols - 2, 'S' )
	call strpos (  6, cols - 2, 'e' )
	call strpos (  7, cols - 2, 'c' )
	call strpos (  8, cols - 2, 't' )
	call strpos (  9, cols - 2, 'o' )
	call strpos ( 10, cols - 2, 'r' )

	call bufpos ( 12, cols - 2, char(isec + 48), 1 )

	call strpos ( 14, cols - 2, 'R' )
	call strpos ( 15, cols - 2, 'o' )
	call strpos ( 16, cols - 2, 'u' )
	call strpos ( 17, cols - 2, 'n' )
	call strpos ( 18, cols - 2, 'd' )

cc	call bufpos ( 20, cols - 2, jnkbuf ( 1 ), 1 )
cc	call bufpos ( 21, cols - 2, jnkbuf ( 2 ), 1 )
cc	call bufpos ( 22, cols - 2, jnkbuf ( 3 ), 1 )
	call round ( mdate )
	call cflush

1300	continue
	newrnd = 0
	return
	end
SHAR_EOF
if test 3273 -ne "`wc -c < 'sector.f'`"
then
	echo shar: error transmitting "'sector.f'" '(should have been 3273 characters)'
fi
fi # end of overwriting check
if test -f 'sensor.f'
then
	echo shar: will not over-write existing file "'sensor.f'"
else
cat << \SHAR_EOF > 'sensor.f'
	subroutine sensor(z6)
c
c	Updates player's map around location z6 
c	and screen if current sector is displayed
c
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C

	ibefor = -100

	do 100 i = 1, 9
	i1 = z6 + arrow ( i )
	ab = rmap ( i1 )
	if ( ab .eq. pmap ( i1 )) goto 100
	pmap ( i1 ) = ab
	if ( jector .eq. -1 ) goto 100
	if ( isec .eq. -1 ) goto 100
	line = kline ( ki, isec )
	iy = ( i1 - 1 ) / 100 * 100
	ix = i1 - iy
	if (( iy .lt. line ) .or. ( iy .gt. line + (lines - 5) * 100 ) .or.
     *	( ix .le. ki ) .or. (ix .gt. ki + (cols - 10) )) goto 100
	i1 = i1 - line - ki
	if ( ibefor + 1 .ne. i1 ) call cursor ( i1 + 300 )
	ibefor = i1
	call putc ( ab )
100	continue
	call cflush
	return
	end
SHAR_EOF
if test 698 -ne "`wc -c < 'sensor.f'`"
then
	echo shar: error transmitting "'sensor.f'" '(should have been 698 characters)'
fi
fi # end of overwriting check
if test -f 'set.f'
then
	echo shar: will not over-write existing file "'set.f'"
else
cat << \SHAR_EOF > 'set.f'
	FUNCTION SET(XPOS,YPOS,AREA,LS,LIM)

	IMPLICIT INTEGER(A-Z)

	include 'common.h'

	PARAMETER (WIDTH=100,HEIGHT=60)
	character area
	integer		xx, yy
	integer*2 XSTACK(12000)
	integer*2 YSTACK(12000)
	integer*2 CSTACK(12000)
	character LS
	character		MAP(width, height)
	character		owned(width, height)
	INTEGER XADDS(8),YADDS(8)
	EQUIVALENCE (MAP(1,1),OMAP(1)),(OWNED(1,1),RMAP(1))

	DATA XADDS/-1,0,1,-1,1,-1,0,1/
	DATA YADDS/-1,-1,-1,0,0,1,1,1/

	OWNED(XPOS,YPOS)=AREA
	LEVEL=1
	XX=XPOS
	YY=YPOS

100	K=1
200	IF ((XX+XADDS(K).LT.2).OR.(XX+XADDS(K).GT.99)) GOTO 300
	IF ((YY+YADDS(K).LT.2).OR.(YY+YADDS(K).GT.59)) GOTO 300
	IF (MAP(XX+XADDS(K),YY+YADDS(K)).NE.LS) GOTO 300
	IF (OWNED(XX+XADDS(K),YY+YADDS(K)).NE.'\0') GOTO 300
	OWNED(XX+XADDS(K),YY+YADDS(K))=AREA
	XSTACK(LEVEL)=XX
	YSTACK(LEVEL)=YY
	CSTACK(LEVEL)=K
	LEVEL=LEVEL+1
	 IF (LEVEL.GT.LIM) THEN
	   SET=0
	   RETURN
	 ENDIF
	XX=XX+XADDS(K)
    	YY=YY+YADDS(K)
	GOTO 100
300	K=K+1
	IF (K.LE.8) GOTO 200
	LEVEL=LEVEL-1
	 IF (LEVEL.EQ.0) THEN
	   SET=1
	   RETURN
	 ENDIF
	XX=XSTACK(LEVEL)
	YY=YSTACK(LEVEL)
	K=CSTACK(LEVEL)
	GOTO 300

	END
SHAR_EOF
if test 1101 -ne "`wc -c < 'set.f'`"
then
	echo shar: error transmitting "'set.f'" '(should have been 1101 characters)'
fi
fi # end of overwriting check
if test -f 'shipmv.f'
then
	echo shar: will not over-write existing file "'shipmv.f'"
else
cat << \SHAR_EOF > 'shipmv.f'
ccc shipmv - this subroutine handles player's ship moves
	subroutine shipmv (  acraloc, acrahit, num, own1, hitmax )
c
c synopsis
c
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	logical fatal
 
	do 2600 y=1,limit(num)
	loc=acraloc+y
	if (movedflag(loc).ne.0) goto 2600
	z6=rlmap(loc)
	if (z6.eq.0) goto 2600
	if ((mode.eq.1).and.(poschk(z6,own1).eq.0)) goto 2600
	movedflag(loc)=1

	do 2500 iturn=1,2
	loc=acraloc+y
	z6=rlmap(loc)
	if (z6.eq.0) goto 2600
	jit=acrahit+y
	h1=j1ts(jit)
	if ((iturn.eq.2).and.(h1.le.hitmax/2)) goto 2600
	z7=z6
	ab=rmap(z6)
c 
c	Check to see if ship was destroyed becuase the city
c	it was in was captured
c
	if ((ab.eq.own1).or.(ab.eq.'O')) goto 100
	call head ( own1, y, loc, z6, h1 )
	call topmsg ( 2, 'was destroyed' )
	call cflush
	call delay(30)
	goto 1500

100	if ((iturn.eq.1).and.(ab.eq.'O')) h1=h1+1
comment	repair if in port
	if (h1.gt.hitmax) h1=hitmax
	call stasis(z6,loc)
200	mycod=mycode(loc)
comment	get my function code
	if (mycod.eq.0) goto 900
comment	if zero, skip ahead
	if ((mycod.ne.9997).or.((own1.ne.'T').and.(own1.ne.'C')))
     1	goto 500
comment	check transports and carriers
	n = 0
comment	for overloading
	nt = 2
	ia = 1
	ib=limit(1)
	if (own1.ne.'C') goto 300
	nt=1
	ia=501
	ib=limit(2)+500
300	do 400 j=ia,ib
400	if (rlmap(j).eq.z6) n=n+1
	if (n.lt.nt*h1) goto 500
	mycode(loc)=0
	goto 900

500	if ((mycod.lt.101).or.(mycod.gt.6108)) goto 1100
	if (mycod.le.6000) goto 600
	if (mycod.gt.6100) goto 700
	goto 1100

600	z6=z6+iarrow(mov(z6,mycod)+1)
comment	destination move
	goto 800

700	z6=z6+iarrow(mycod-6100+1)
comment	directional move
800	ad=rmap(z6)
	if (((ad.eq.'.').or.(ad.eq.'O')).and.(order(z6).eq.0)) goto 1100
	z6=z7
900	call sector(pmap(1))
1000	call ltr(z6,iturn)
	call mve ( own1, mdate, y, loc, jit, z6, z7, disas, z6-iadjst )
	if (disas.eq.-2) goto 200
c 
c	Move evaluation. z6 = to, z7 = from, check out new location
c
1100	if (omap(z7).ne.'*') rmap(z7)=omap(z7)
comment	remove unit from map
	ac = rmap ( z6 )
	ao = omap ( z6 )
	if (z6.eq.mycode(loc)) mycode(loc)=0
comment	arrived at destination
	if ( ac .ne. 'O' ) goto 1200
comment	is it our city?
	call topmsg ( 3, 'Ship is docked' )
comment	ship is in city
	call cflush
	call delay(30)
	goto 1800

1200	if ( ao .eq. '.' ) goto 1600
comment	if sea, skip ahead
1300	if (.not. fatal(4)) goto 2700
	if ((ac.ne.'+').and.(ao.ne.'*')) goto 2400
comment	check for enemy to fight
1400	continue
	ptr = 0
	call addidt ( own1, jnkbuf, ptr )
	call addstr( ' broke up on the shore', jnkbuf, ptr )
	jnkbuf ( ptr + 1 ) = '\0'
	call topmsg ( 2, jnkbuf )
	call cflush
	call delay(30)
	goto 1500

1600	if (ac.ne.'.') goto 2400
	rmap(z6)=own1
comment	normal move
1800	rlmap(loc)=z6
	j1ts(jit)=h1

1900	if ((own1.ne.'T').and.(own1.ne.'C')) goto 2500
	n=0
comment	if we're carring something, bring it along
	ia=0
comment	set up for transport
	ib=limit(1)
	nt=2
	if (own1.ne.'C') goto 2000
	ia=500
comment	set up for carrier
	ib=limit(2)
	nt=1
2000	do 2300 i=ia+1,ia+ib
comment	find pieces and move them
	if (rlmap(i).ne.z7) goto 2300
	if (n+1.gt.nt*h1) goto 2050
	rlmap(i)=z6
	n=n+1
	goto 2300
2050	if (rmap(z7).eq.'O') goto 2300
	rlmap(i)=0
c
c	Tell about peices lost when ship went down
c
	ptr = 0
	if (own1.eq.'C') goto 2100
	call addstr ( 'Army # ', jnkbuf, ptr )
	goto 2200
2100	continue
	call addstr ( 'Fighter # ', jnkbuf, ptr )
2200	continue
	call addint ( i - ia, jnkbuf, ptr )
	call addstr ( ' was sunk', jnkbuf, ptr )
	jnkbuf ( ptr + 1 ) = '\0'
	call topmsg ( 2, jnkbuf )
	call cflush
	call delay(30)
2300	continue
	goto 2500

2400	if ((ac.ge.'A').and.(ac.le.'T')) then
		 if (.not.fatal(2)) goto 2700
		endif
	h2=30
comment	going to fight another unit
	own2=ac
	call find(own2,z6,z8,h2)
	call fght(z6,h1,h2,own1,own2)
	call find(own2,z6,z8,h2)
	if (h1.le.0) goto 1500
	rmap(z6)=own1
comment	put us on the map
	if ((own2.ge.'a').and.(own2.le.'t')) call sonar(z6)
	if (ao.eq.'.') goto 1800
	rmap(z6)=ao
comment	won the battle, but...
	if ((own2.ge.'a').and.(own2.le.'t')) call sonar(z6)
	call topmsg ( 2, 'Your ship successfully clears the
     * enemy from the beach before, CRUNCH!, grounding itself' )
	call cflush
	call delay(30)

1500	rlmap(loc)=0
comment	kill my unit
	mycode(loc)=0
	call sensor(z6)
	h1=0
	goto 1900

2500	call sensor(z6)
2600	continue
	return
c
c	Recover from fatal moves
c
2700	z6=z7
comment	restore old location
	rmap(z6)=ab
comment	restore map
	goto 900
comment	try again
	end
SHAR_EOF
if test 4428 -ne "`wc -c < 'shipmv.f'`"
then
	echo shar: error transmitting "'shipmv.f'" '(should have been 4428 characters)'
fi
fi # end of overwriting check
if test -f 'sonar.f'
then
	echo shar: will not over-write existing file "'sonar.f'"
else
cat << \SHAR_EOF > 'sonar.f'
	SUBROUTINE SONAR(Z6)
C
C UPDATES COMPUTER'S MAP AROUND LOCATION Z6
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
C 
	DO 1300 I=1,8
	LOCUS=Z6+IARROW(I+1)
comment	**
	AB=RMAP(LOCUS)
	IF (AB.NE.EMAP(LOCUS)) EMAP(LOCUS)=AB
	IF ((AB.NE.'*').AND.(AB.NE.'O')) GOTO 400
	DO 100 I1=1,70
100	IF (TARGET(I1).EQ.LOCUS) GOTO 1300
	DO 200 I1=1,70
200	IF (TARGET(I1).EQ.0) GOTO 300
300	TARGET(I1)=LOCUS
400	IF ((AB.LT.'A').OR.(AB.GT.'T')) GOTO 1300
	IF (AB.NE.'A'.AND.AB.NE.'O') GOTO 1100
C 
C WE MUST NOW FIGURE OUT IF THE ARMY IS A THREAT TO ANY OF THE COMPUTER'S
C CITIES, I.E. IF IT IS ON THE CONTINENT WITH ANY OF THEM. IF SO, PUT
C THE ARMY IN THE LOCI ARRAY. THE FIRST INDEX IS THE CONTINENT, THE
C SECOND IS THE NTH ARMY DISCOVERED ON THAT CONTINENT - 1. THE (N,1)
C ARGUMENT IS THE DATE OF THE LAST ARMY DISCOVERED ON THE
C NTH CONTINENT. THUS WE HAVE A MEANS OF DETERMINING THE AGE OF THE DATA
C 
	ARMDEF=0
	DO 480 Y=1,LIMIT(9)
	IF (RLMAP(IAR2+Y).EQ.0) GOTO 480
	IF (IDIST(LOCUS,RLMAP(IAR2+Y)).GT.14) GOTO 480
	MOVE=PATH(RLMAP(IAR2+Y),LOCUS,1,OKA,FLAG)
	IF (FLAG.NE.0) ARMDEF=ARMDEF+1
480	CONTINUE
	IF (ARMDEF.GE.7) GOTO 520

	DO 500 K=1,70
	IF ((OWNER(K).NE.2).OR.(PHASE(K).EQ.1)) GOTO 500
	IF (FOUND(K)-MDATE-5.LE.0) GOTO 500
	IF (IDIST(X(K),LOCUS).GT.18) GOTO 500
	MOVE=PATH(X(K),LOCUS,1,OKA,FLAG)
	IF (FLAG.NE.0) PHASE(K)=-1
500	CONTINUE
C 
520	IF (AB.EQ.'O') GOTO 1300
	DO 600 K=1,10
	IF (LOCI(K,2).EQ.0) GOTO 600
	DO 550 J=2,11
	IF (LOCI(K,J).EQ.LOCUS) GOTO 800
550	CONTINUE
	MOVE=PATH(LOCUS,LOCI(K,2),1,OKA,FLAG)
	J=11
	IF (FLAG.NE.0) GOTO 800
600	CONTINUE

	DO 700 K=1,10
700	IF (LOCI(K,2).EQ.0) GOTO 760

	OLDEST=10000
	DO 750 J=1,10
	IF (LOCI(J,1).LT.OLDEST) THEN
	  OLDEST=LOCI(J,1)
	  K=J
	ENDIF
750	CONTINUE
760	DO 770 J=2,11
770	LOCI(K,J)=0
	GOTO 1000

800	DO 900 J=J,3,-1
900	LOCI(K,J)=LOCI(K,J-1)
comment	SHIFT EVERYTHING UP THE ARRAY
1000	LOCI(K,1)=MDATE
	LOCI(K,2)=LOCUS
	GOTO 1300
C 
1100	ISHIPT=0
	IF (AB.EQ.'D') ISHIPT=1
	IF (AB.EQ.'S') ISHIPT=2
	IF (AB.EQ.'T') ISHIPT=3
	IF (AB.EQ.'R') ISHIPT=4
	IF (AB.EQ.'C') ISHIPT=5
	IF (AB.EQ.'B') ISHIPT=6
	IF (ISHIPT.EQ.0) GOTO 1300
	DO 1200 IB=1,4
1200	TROOPT(ISHIPT,IB)=TROOPT(ISHIPT,IB+1)
	TROOPT(ISHIPT,5)=LOCUS
1300	CONTINUE
	EMAP(Z6)=RMAP(Z6)
	IF (CODER.EQ.10) CALL SENSOR(Z6)
	RETURN
	END
SHAR_EOF
if test 2256 -ne "`wc -c < 'sonar.f'`"
then
	echo shar: error transmitting "'sonar.f'" '(should have been 2256 characters)'
fi
fi # end of overwriting check
if test -f 'stasis.f'
then
	echo shar: will not over-write existing file "'stasis.f'"
else
cat << \SHAR_EOF > 'stasis.f'
	SUBROUTINE STASIS(Z6,LOC)
C
C CHECK IF ARMY #LOC, AT Z6, IS NEAR THE ENEMY, IF SO WAKE HIM UP
C
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
C
	DO 200 I=1,8
	AB=RMAP(Z6+IARROW(I+1))
comment	**
	IF ((AB.GE.'a').AND.(AB.LE.'t')) GOTO 100
	IF (AB.EQ.'X') GOTO 100
	IF (AB.NE.'*') GOTO 200
	IF (RMAP(Z6).EQ.'F') GOTO 200
100	MYCODE(LOC)=0
	GOTO 300
200	CONTINUE
300	RETURN
	END
SHAR_EOF
if test 376 -ne "`wc -c < 'stasis.f'`"
then
	echo shar: error transmitting "'stasis.f'" '(should have been 376 characters)'
fi
fi # end of overwriting check
if test -f 'strlen.f'
then
	echo shar: will not over-write existing file "'strlen.f'"
else
cat << \SHAR_EOF > 'strlen.f'

ccc strlen - return size of zero character terminated string
	integer function strlen(string)
	character string(80)
c
c synopsis
c
c   status = strlen(string)
c
c	status - size of string
c	string - character array terminated with a zero character
c
	integer i

	i = 0
1000	i = i + 1
	if (string(i) .ne. '\0') goto 1000
	strlen = i - 1
	return
	end
SHAR_EOF
if test 349 -ne "`wc -c < 'strlen.f'`"
then
	echo shar: error transmitting "'strlen.f'" '(should have been 349 characters)'
fi
fi # end of overwriting check
if test -f 'strout.c'
then
	echo shar: will not over-write existing file "'strout.c'"
else
cat << \SHAR_EOF > 'strout.c'
#include <curses.h>

/*
 * strout - output a zero character terminated string
 */
strout_(str)
	char	*str;
{
	addstr(str);
}
SHAR_EOF
if test 125 -ne "`wc -c < 'strout.c'`"
then
	echo shar: error transmitting "'strout.c'" '(should have been 125 characters)'
fi
fi # end of overwriting check
if test -f 'strpos.f'
then
	echo shar: will not over-write existing file "'strpos.f'"
else
cat << \SHAR_EOF > 'strpos.f'

ccc strpos - position cursor and output string
	subroutine strpos(irow, icol, string)
	integer irow, icol
	character string(80)
c
c synopsis
c
c   call strpos(irow, icol, string)
c
c	irow - line to position cursor
c	icol - column to position cursor
c	string - a character array with a zero character terminator
c
	integer strlen

	call tpos(irow, icol)
	call bufout(string, strlen(string))
	return
	end
SHAR_EOF
if test 404 -ne "`wc -c < 'strpos.f'`"
then
	echo shar: error transmitting "'strpos.f'" '(should have been 404 characters)'
fi
fi # end of overwriting check
if test -f 'test4.f'
then
	echo shar: will not over-write existing file "'test4.f'"
else
cat << \SHAR_EOF > 'test4.f'
	subroutine test4(z6,flag,dir,move1,movnum,beg,end,ag2,flag2)
c
c	Test subroutine for path, displays current path progress
c
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	INTEGER AG2(100)
	character	getchx
C 
	CALL CURSOR(Z6-IADJST)
	IF (FLAG.NE.1001) E=GETCHX()
comment	WAIT FOR CHAR IF TRACE MODE
 
	IX='G'
comment	DISPLAY CURRENT MOVE ON MAP
	IF (FLAG2.EQ.1) PRINT 999,IX
	IX='H'
	IF (FLAG2.EQ.2) PRINT 999,IX
	IF (FLAG.EQ.1001) RETURN
C					PROCESS THIS CHAR
	IF (E.EQ.' ') RETURN
comment	SPACE, CONTINUE
	IF (E.EQ.'G') GOTO 100
comment	G, DISPLAY G2 ARRAY
 
	CALL tpos(1,1)
comment	IF NOT SPACE OR "G", SHOW PATH VARIABLES
	PRINT 998,Z6,MOVE1,MOVNUM
999	FORMAT('+',A1$)
998	FORMAT(' Z6:',I4,' MOVE1:',I1,' MOVNUM:',I3)
	CALL tpos(2,1)
	PRINT 997,BEG,END,IADJST,DIR,FLAG
997	FORMAT(' BEG:'I4' END:'I4' IADJST:'I4' TDIR:'I2' FLAG:'I4)
 
	IF (FLAG2 .EQ. 1) PRINT 996
996	FORMAT(' FLAG2: MOVE ')
	IF (FLAG2 .EQ. 2) PRINT 995
995	FORMAT(' FLAG2: SHORE')
	RETURN
 
100	CALL tpos(1,1)
	PRINT 994,AG2
994	FORMAT(1X,16I5)
	RETURN
	END
SHAR_EOF
if test 1032 -ne "`wc -c < 'test4.f'`"
then
	echo shar: error transmitting "'test4.f'" '(should have been 1032 characters)'
fi
fi # end of overwriting check
if test -f 'tran.f'
then
	echo shar: will not over-write existing file "'tran.f'"
else
cat << \SHAR_EOF > 'tran.f'
ccc tran - translate old enemy units to new characters
	subroutine tran ( ab )
	character ab
c
c synopsis
c
c   call tran ( ab )
c
c	ab - character to translate
c
	character olde ( 8 ), newe ( 8 )
	data olde / '1', '2', '3', '4', '5', '6', '7', '8' /
	data newe / 'a', 'f', 'd', 's', 't', 'r', 'c', 'b' /

	do 10 i = 1, 8
10	if ( ab .eq. olde ( i )) ab = newe ( i )
	return
	end
SHAR_EOF
if test 379 -ne "`wc -c < 'tran.f'`"
then
	echo shar: error transmitting "'tran.f'" '(should have been 379 characters)'
fi
fi # end of overwriting check
if test -f 'troopm.f'
then
	echo shar: will not over-write existing file "'troopm.f'"
else
cat << \SHAR_EOF > 'troopm.f'
	subroutine troopm
c
c	This subroutine handles enemy troop transport moves
c 
	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C
	integer tttc(-1:20,0:50)

	monkey = 0
	number ( 5 ) = 0
	if ( coder .eq. 5 ) print 999
999	format(' Troop transport codes')

	do 2300 y=1,limit(13)
	z6=rlmap(itt2+y)
	if (z6.eq.0) goto 2300
	monkey=y
	dir=mod(y,2)*2-1
comment	set dir to 1 or -1 consistently
	ab=rmap(z6)
	h1=j1ts(itt2h+y)
	if (ab.eq.'X') h1=h1+1
	if (h1.gt.3)    h1=3
c 
c	Now compute the number of armies aboard the troop transport
c
	numarm=0
	do 100 i=1,limit(9)
100	if (z6.eq.rlmap(iar2+i)) numarm=numarm+1
	if (numarm.gt.6) numarm=6
comment	max # armies = 6
 
	orig=z6
	do 2200 iturn=1,2
	p=0
	z7=z6
	ab=rmap(z6)
	if ((iturn.eq.2).and.(h1.le.1)) goto 2300
c
c	Move selection
c
	ifo=codefu(y+itt2-1500)
	ila=codela(y+itt2-1500)
c 
c	300 is the statement number where the ifo and ila are
c	processed to come up with a move, which is then fed thru movcor
c	to come up with a final move.
c 
c	take care of damaged ships or just repaired ships.
c	(damaged ships will have an ifo of 8)
c 
	if (h1.lt.3) goto 200
	if (ifo.eq.8) ifo=0
	goto 300
200	ifo=8
	if (ila.eq.0) goto 250
	if (rmap(ila).eq.'X') goto 1300
250	ila=iport(z6)
	goto 1300
c 
c ifo=10  move toward unexplored territory, location specified by ila
c ifo=7   move in a constant direction specified by ila
c ifo=9   move toward an unowned city specified by ila
c ifo=0-6 ila specifies location of where to move, either
c	an army producing city or an army looking for a 't'.
c	it could also be a direction. ifo is the number of armies on
c	board the troop transport.
c 
300	if (ifo.lt.7) ifo=numarm
	if (numarm.eq.0) ifo=0
	if ((ifo.eq.10).and.(emap(ila).ne.' ')) goto 1000
	if (ifo.eq.10) goto 1300
	if (ifo.eq.7) goto 1350
	if (ifo.ne.9) goto 500
c 
c	ifo=9
c
	do 400 i=1,70
	if (target(i).ne.ila) goto 400
	move=0
	if ((iturn.eq.2).and.(idist(z6,ila).eq.1)) goto 1600
	goto 1300
400	continue
	if ((idist(z6,ila).lt.10).and.(edger(ila).lt.8).and.(irand(100).gt.10))
     1 goto 1300
c
c	It seems that it's target is no longer on the hit list,
c	meaning it was captured.
c 
500	if (ifo.le.2) goto 600
	if (ifo.eq.3) then
	 if (irand(100).lt.96) goto 600
	endif
	if (ifo.eq.4) then
	 if (irand(100).lt.90) goto 600
	endif
	goto 800
comment	select a target
c
c	Select an army producing city and move towards it.
c	pick the closest one.
c
600	if (ila.eq.0.or.ila.gt.500) goto 650
	if ((codefu(ila).eq.3).and.(rlmap(iar2+ila).ne.0)) goto 1200
650	aflag=0
	id=35
670	do 700 i=1,70
	if ((x(i).eq.0).or.(owner(i).ne.2)) goto 700
	if (edger(x(i)).eq.0) goto 700
	if ((aflag.eq.0).and.(phase(i).ne.1)) goto 700
	if (idist(z6,x(i)).ge.id) goto 700
	do 680 j=1,limit(13)
	if (j.eq.y) goto 680
	if (codela(j+itt2-1500).ne.x(i)) goto 680
	if (idist(rlmap(j+itt2),x(i)).le.2) goto 700
680	continue
	id=idist(z6,x(i))
	ila=x(i)
700	continue
	if (id.ne.35) goto 1300
	if (aflag.eq.1) goto 1000
	aflag=1
	goto 670
c 
c	Perform troop transport to target city assignment
c
800	if (number(10).eq.0) goto 1000
	tm=0
	do 820 i=1,limit(13)
	if (rlmap(itt2+i).eq.0) goto 820
	if (i.eq.y) goto 810
	if (codefu(itt2-1500+i).eq.8) goto 820
	if (codefu(itt2-1500+i).le.3) goto 820
810	tm=tm+1
	if (codefu(itt2-1500+i).eq.9) codefu(itt2-1500+i)=0
	tttc(tm,0)=i
820	continue
	cm=0
	do 840 i=1,number(10)
	if (target(i).eq.0) goto 840
	ila=target(i)
	if (edger(ila).eq.0) goto 840
	cm=cm+1
	tttc(0,cm)=ila
	tttc(-1,cm)=-1
	if (rmap(ila).eq.'O') tttc(-1,cm)=1
840	continue
	do 850 i=1,tm
	do 850 j=1,cm
	tttc(i,j)=idist(rlmap(itt2+tttc(i,0)),tttc(0,j))
850	continue

	ac='*'
860	min=1000
	do 880 i=1,tm
	if (tttc(i,0).eq.0) goto 880
	do 880 j=1,cm
	if (emap(tttc(0,j)).ne.ac) goto 880
	if (tttc(i,j).ge.min) goto 880
	if (tttc(-1,j).eq.0) then
	  do 870 k=1,cm
	  if (tttc(-1,k).eq.-1) goto 880
870	  continue
	endif
	move=path(rlmap(itt2+tttc(i,0)),tttc(0,j),1,okc,flag)
	if (flag.eq.0) then
	  tttc(i,j)=1000
	  goto 880
	endif
	min=tttc(i,j)
	ir=i
	ic=j
880	continue
	if (min.ne.1000) then
comment	don't change function if dest is <3 from old?
	  codefu(itt2-1500+tttc(ir,0))=9
	  codela(itt2-1500+tttc(ir,0))=tttc(0,ic)
	  call dist(rlmap(itt2+tttc(ir,0)),tttc(0,ic))
	  tttc(ir,0)=0
	  tttc(ir,ic)=1001
	  tttc(-1,ic)=0
	  goto 860
	endif
	ifo=codefu(itt2-1500+y)
	ila=codela(itt2-1500+y)
	if (number(9)+number(10).le.38) then
	  if (ifo.eq.9) goto 1500
	  goto 1000
	endif
	if (ac.eq.'*') then
	  ac='o'
	  goto 860
	endif
	if (ifo.eq.9) goto 1500
c 
c	Move towards unknown territory
c
1000	ifo=10
	ila=expl()
	if (ila.eq.0) goto 1100
	call dist(z6,ila)
	goto 1300
c 
c	Move in specified direction (ila specifies which)
c
1100	ifo=7
	ila=irand(8)+1
comment	**
	goto 1400
c 
c	Now pick a move according to ifo and ila
c
1200	move=0
	if (idist(z6,rlmap(iar2+ila)).eq.1) goto 1600
	move=mov(z6,rlmap(iar2+ila))
	goto 1500
1300	move=path(z6,ila,dir,okc,flag)
	if (flag.eq.0) goto 1100
	goto 1500
1350	if (number(10).eq.0) goto 1400
	if (irand(100).lt.40) goto 800
1400	move=ila
1500	aggr=-numarm
	if ((number(5).gt.10).and.(numarm.eq.0)) aggr=aggr+2
	explor=0
	if (ifo.gt.6) explor=1
	move=move*dir
	dest=-1
	if ((ifo.eq.9).or.(ifo.eq.10)) dest=ila
	move=movcor(ifo,iturn,z6,move,h1,1,aggr,'t',explor,dir,dest,orig,3)
	move=iabs(move)
	if (ifo.eq.7) ila=move
1600	codefu(itt2-1500+y)=ifo
	codela(itt2-1500+y)=ila
	z6=z6+iarrow(move+1)
comment	**
	if (coder.eq.5) print 997, ifo,ila
997	format(1x,i)
c 
	if (omap(z7).ne.'*') rmap(z7)=omap(z7)
	if (rmap(z6).eq.'.') goto 1700
	if (rmap(z6).eq.'X') goto 1800
	if ((rmap(z6).eq.'+').or.(omap(z6).eq.'*')) goto 1900
	ab=rmap(z6)
	if (coder.eq.5) print 996,ab
comment	fix this conditional, kludged
996	format(' attacking ',a1)
	if (ab.eq.'.') goto 1700
	p=1
	h2=30
	own1='t'
	own2=rmap(z6)
	call find(own2,z6,z8,h2)
	call fght(z6,h1,h2,own1,own2)
	call find(own2,z6,z8,h2)
	if (h1.le.0) goto 1900
	if (omap(z6).eq.'+') goto 1900
	j1ts(itt2h+y)=h1
1700	rmap(z6)='t'
1800	rlmap(itt2+y)=z6
	j1ts(itt2h+y)=h1
	if (iturn.eq.1) number(5)=number(5)+1
	goto 2000
1900	rlmap(itt2+y)=0
	j1ts(itt2h+y)=0
2000	n=0
	if (p.eq.1) call sensor(z6)
	do 2100 u=iar2+1,iar2+limit(9)
	if (rlmap(u).ne.z7) goto 2100
	if (n+1.gt.h1*2) then
	 if (rmap(z7).ne.'X') rlmap(u)=0
	 goto 2100
	endif
	n=n+1
	rlmap(u)=z6
2100	continue
	if (numarm.gt.2*h1) numarm=2*h1
	call sonar(z6)
2200	continue
2300	continue
	limit(13)=monkey
	return
	end
SHAR_EOF
if test 6379 -ne "`wc -c < 'troopm.f'`"
then
	echo shar: error transmitting "'troopm.f'" '(should have been 6379 characters)'
fi
fi # end of overwriting check
if test -f 'ver.c'
then
	echo shar: will not over-write existing file "'ver.c'"
else
cat << \SHAR_EOF > 'ver.c'
/*
 * 01b 27May85 cal .Fixed round number update bug. Made truename simple.
 * 01a 01Sep83 cal .Taken from a Decus tape
 */
ver_()
{
        strout_("EMPIRE, Version 4.1x 27-May-1985");
}
SHAR_EOF
if test 188 -ne "`wc -c < 'ver.c'`"
then
	echo shar: error transmitting "'ver.c'" '(should have been 188 characters)'
fi
fi # end of overwriting check
if test -f 'write.f'
then
	echo shar: will not over-write existing file "'write.f'"
else
cat << \SHAR_EOF > 'write.f'
	subroutine write ( beg, lim, num )

	IMPLICIT INTEGER(A-Z)

	include 'common.h'
C

	do 100 j = beg + 1, beg + lim
	k = rlmap ( j )
	write ( 1 ) k
	if ( num .lt. 9 ) write ( 1 ) mycode(j)
	if ( num .gt. 8 ) write ( 1 ) codefu(j-1500),codela(j-1500)
	if ( num .eq. 9 ) write ( 1 ) ar2s(j-1500)
	if ( num .eq. 2 ) write ( 1 ) range(j-500)
	if ( num .eq. 10 ) write ( 1 ) rang(j-2000)
100	continue
	return
	end
SHAR_EOF
if test 408 -ne "`wc -c < 'write.f'`"
then
	echo shar: error transmitting "'write.f'" '(should have been 408 characters)'
fi
fi # end of overwriting check
cd ..
#	End of shell archive
exit 0