Skip to content

Commit 4340d10

Browse files
committed
Add an "Adventure II" Makefile; allow compiling with gfortran.
As I'm using OSX as my primary development environment these days, and fort77/f77 don't seem to have made it to Homebrew yet, it's suddenly useful to me to be able to compile these Fortran programs with GNU gfortran. I've edited all three "original Fortran" Makefiles to run "which f77; which gfortran" and pick the most f77-like option (or fail if you have no Fortran compiler on your system). On Ubuntu Linux, you'll want to run sudo apt-get install fort77 On OSX, the appropriate command is brew install gfortran Unfortunately, GNU gfortran isn't as faithful to these old dialects as the f77 compiler was... - In LUPI0440/, I needed to add "EXTERNAL RAN" in two places to prevent gfortran from mistakenly using its built-in RAN function instead of the one defined in the program itself. - In PLAT0550/, I needed to replace the syntax "INTEGER x*4" with "INTEGER*4 x", since gfortran doesn't accept the former syntax at all. However, these changes are small enough, and provide enough of a benefit (Adventure II is now playable on OSX!) that I'm sure they're worthwhile.
1 parent a355b49 commit 4340d10

File tree

5 files changed

+39
-8
lines changed

5 files changed

+39
-8
lines changed

LUPI0440/Makefile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
ifneq (, $(shell which f77))
2+
FORTRAN:=f77
3+
else ifneq (, $(shell which gfortran))
4+
FORTRAN:=gfortran
5+
else
6+
$(error I couldn't find any way to compile Fortran on your system!)
7+
endif
8+
9+
adv440: advII.dat advII.f
10+
$(FORTRAN) advII.f -o adv440
11+
12+
clean:
13+
rm -f adv440

LUPI0440/advII.f

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@
143143
C DEMO IS TRUE IF THIS IS A PRIME-TIME DEMONSTRATION GAME
144144
C YEA IS RANDOM YES/NO REPLY
145145
C
146+
EXTERNAL RAN
146147
LOGICAL TOTING,HERE,AT,BITSET,DARK,WZDARK,LMWARN,CLOSNG,PANIC,
147148
1CLOSED,GAVEUP,SCORNG,DEMO,YEA,FORCED,PCT
148149
DATA LINSIZ/68000/,TRVSIZ/1000/,LOCSIZ/200/,SETUP/0/,
@@ -2604,6 +2605,7 @@ SUBROUTINE DROP(IOBJ,WHERE)
26042605
RETURN
26052606
END
26062607
INTEGER FUNCTION DISTNT(FROM,NO)
2608+
EXTERNAL RAN
26072609
COMMON/TRVCOM/TK,TRAVEL,KEY,COND
26082610
INTEGER TK(20),KEY(200),TRAVEL(1000,3),COND(200),FROM,RAN
26092611
1 DISTNT=FROM

MCDO0551/Makefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
ifneq (, $(shell which f77))
2+
FORTRAN:=f77
3+
else ifneq (, $(shell which gfortran))
4+
FORTRAN:=gfortran -std=legacy
5+
else
6+
$(error I couldn't find any way to compile Fortran on your system!)
7+
endif
18

29
adv551: ADVTXT aamain.f asubs.f
3-
f77 aamain.f asubs.f -o adv551
10+
$(FORTRAN) aamain.f asubs.f -o adv551
411

512
asetup: asetup.f asubs.f
6-
f77 asetup.f asubs.f -o asetup
13+
$(FORTRAN) asetup.f asubs.f -o asetup
714

815
ADVTXT: asetup ADVDAT
916
./asetup

PLAT0550/Makefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1+
ifneq (, $(shell which f77))
2+
FORTRAN:=f77
3+
else ifneq (, $(shell which gfortran))
4+
FORTRAN:=gfortran -std=legacy
5+
else
6+
$(error I couldn't find any way to compile Fortran on your system!)
7+
endif
18

29
adv550: munge ADVENTURE.ACODE
310
./munge
4-
f77 exec.f -o adv550
11+
$(FORTRAN) exec.f -o adv550
512

613
munge: munge.f munge.i
7-
f77 munge.f -o munge
14+
$(FORTRAN) munge.f -o munge
815

916
clean:
1017
rm -f adv550 ADVINIT[1-4].DAT munge

PLAT0550/munge.f

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
INCLUDE 'munge.i'
1111
C
1212
INTEGER*2 PRIMARY(0:TABLESIZE)
13-
INTEGER KEYSBF*4, NUMKEYS*2
13+
INTEGER*4 KEYSBF
14+
INTEGER*2 NUMKEYS
1415
INTEGER*4 EKEYSBF(1)
1516
EQUIVALENCE (KEYSBF, EKEYSBF)
1617
COMMON /KEYSCM/ KEYSBF(2, KEYSBFSIZE), NUMKEYS
@@ -382,8 +383,8 @@
382383
C*
383384
SUBROUTINE BUFWRITE(LEN)
384385
INCLUDE 'munge.i'
385-
INTEGER KEYSBF*4, BUFPOS*4, NUMKEYS*2
386-
INTEGER*2 WORDS
386+
INTEGER*4 KEYSBF, BUFPOS
387+
INTEGER*2 NUMKEYS, WORDS
387388
SAVE BUFPOS
388389
COMMON /KEYSCM/ KEYSBF(2, KEYSBFSIZE), NUMKEYS
389390
DATA BUFPOS/1/
@@ -778,7 +779,8 @@ SUBROUTINE KEYWRITE(IOKEY, Z_TEXT)
778779
CHARACTER*(*) Z_TEXT
779780
INTEGER*2 I_LINE(60), TEXTBUFFER(60)
780781
EQUIVALENCE (Z_OLINE,I_LINE)
781-
INTEGER KEYSBF*4, NUMKEYS*2
782+
INTEGER*4 KEYSBF
783+
INTEGER*2 NUMKEYS
782784
INTEGER*4 KEYPOS, NEXTPOS
783785
REAL*4 RND
784786
COMMON /KEYSCM/ KEYSBF(2, KEYSBFSIZE), NUMKEYS

0 commit comments

Comments
 (0)