home *** CD-ROM | disk | FTP | other *** search
- C ENCRYP-- ENCRYPT PASSWORD
- C
- C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
- C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
- C WRITTEN BY R. M. SUPNIK
- C
- C DECLARATIONS
- C
- SUBROUTINE ENCRYP(INW,OUTW)
- IMPLICIT INTEGER(A-Z)
- LOGICAL*1 INW(6),OUTW(6),KEYW(6)
- INTEGER UINW(6),UKEYW(6)
- DATA KEYW/'E','C','O','R','M','S'/
- C
- UINWS=0 !UNBIASED INW SUM.
- UKEYWS=0 !UNBIASED KEYW SUM.
- J=1 !POINTER IN KEYWORD.
- DO 100 I=1,6 !UNBIAS, COMPUTE SUMS.
- UKEYW(I)=KEYW(I)-"100 !STRIP ASCII.
- IF(INW(J).LE."100) J=1 !RECYCLE ON BAD.
- UINW(I)=INW(J)-"100
- UKEYWS=UKEYWS+UKEYW(I)
- UINWS=UINWS+UINW(I)
- J=J+1
- 100 CONTINUE
- C
- USUM=MOD(UINWS,8)+(8*MOD(UKEYWS,8)) !COMPUTE MASK.
- DO 200 I=1,6
- J=(UINW(I).XOR.UKEYW(I).XOR.USUM).AND."37
- USUM=MOD(USUM+1,32)
- IF(J.GT.26) J=MOD(J,26)
- OUTW(I)=MAX0(1,J)+"100
- 200 CONTINUE
- RETURN
- C
- END
- C CPGOTO-- MOVE TO NEXT STATE IN PUZZLE ROOM
- C
- C DECLARATIONS
- C
- SUBROUTINE CPGOTO(ST)
- IMPLICIT INTEGER(A-Z)
- C
- COMMON /HYPER/ HFACTR
- C
- C ROOMS
- C
- COMMON /ROOMS/ RLNT,RDESC2,RDESC1(200),REXIT(200),
- 1 RACTIO(200),RVAL(200),RFLAG(200)
- INTEGER RRAND(200)
- EQUIVALENCE (RVAL,RRAND)
- C
- COMMON /RFLAG/ RSEEN,RLIGHT,RLAND,RWATER,RAIR,
- 1 RSACRD,RFILL,RMUNG,RBUCK,RHOUSE,RNWALL,REND
- C
- COMMON /RINDEX/ WHOUS,LROOM,CELLA
- COMMON /RINDEX/ MTROL,MAZE1
- COMMON /RINDEX/ MGRAT,MAZ15
- COMMON /RINDEX/ FORE1,FORE3,CLEAR,RESER
- COMMON /RINDEX/ STREA,EGYPT,ECHOR
- COMMON /RINDEX/ TSHAF
- COMMON /RINDEX/ BSHAF,MMACH,DOME,MTORC
- COMMON /RINDEX/ CAROU
- COMMON /RINDEX/ RIDDL,LLD2,TEMP1,TEMP2,MAINT
- COMMON /RINDEX/ BLROO,TREAS,RIVR1,RIVR2,RIVR3,MCYCL
- COMMON /RINDEX/ RIVR4,RIVR5,FCHMP,FALLS,MBARR
- COMMON /RINDEX/ MRAIN,POG,VLBOT,VAIR1,VAIR2,VAIR3,VAIR4
- COMMON /RINDEX/ LEDG2,LEDG3,LEDG4,MSAFE,CAGER
- COMMON /RINDEX/ CAGED,TWELL,BWELL,ALICE,ALISM,ALITR
- COMMON /RINDEX/ MTREE,BKENT,BKVW,BKTWI,BKVAU,BKBOX
- COMMON /RINDEX/ CRYPT,TSTRS,MRANT,MREYE
- COMMON /RINDEX/ MRA,MRB,MRC,MRG,MRD,FDOOR
- COMMON /RINDEX/ MRAE,MRCE,MRCW,MRGE,MRGW,MRDW,INMIR
- COMMON /RINDEX/ SCORR,NCORR,PARAP,CELL,PCELL,NCELL
- COMMON /RINDEX/ CPANT,CPOUT,CPUZZ
- C
- C OBJECTS
- C
- COMMON /OBJCTS/ OLNT,ODESC1(220),ODESC2(220),ODESCO(220),
- 1 OACTIO(220),OFLAG1(220),OFLAG2(220),OFVAL(220),
- 2 OTVAL(220),OSIZE(220),OCAPAC(220),OROOM(220),
- 3 OADV(220),OCAN(220),OREAD(220)
- C
- COMMON /OFLAGS/ VISIBT,READBT,TAKEBT,DOORBT,TRANBT,FOODBT,
- 1 NDSCBT,DRNKBT,CONTBT,LITEBT,VICTBT,BURNBT,FLAMBT,
- 2 TOOLBT,TURNBT,ONBT
- COMMON /OFLAGS/ FINDBT,SLEPBT,SCRDBT,TIEBT,CLMBBT,ACTRBT,
- 1 WEAPBT,FITEBT,VILLBT,STAGBT,TRYBT,NOCHBT,OPENBT,
- 2 TCHBT,VEHBT,SCHBT
- C
- C FLAGS
- C
- LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
- LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
- LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
- LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
- LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
- LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
- LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
- LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
- 1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
- 2 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
- 3 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
- 4 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
- 5 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
- 6 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
- 7 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ BTIEF,BINFF
- COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
- COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
- COMMON /FINDEX/ MDIR,MLOC,POLEUF
- COMMON /FINDEX/ QUESNO,NQATT,CORRCT
- COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
- C CPGOTO, PAGE 2
- C
- RFLAG(CPUZZ)=RFLAG(CPUZZ).AND..NOT.RSEEN
- DO 100 I=1,OLNT !RELOCATE OBJECTS.
- IF((OROOM(I).EQ.CPUZZ).AND.
- 1 ((OFLAG2(I).AND.(ACTRBT+VILLBT)).EQ.0))
- 2 CALL NEWSTA(I,0,CPHERE*HFACTR,0,0)
- IF(OROOM(I).EQ.(ST*HFACTR))
- 1 CALL NEWSTA(I,0,CPUZZ,0,0)
- 100 CONTINUE
- CPHERE=ST
- RETURN
- C
- END
- C CPINFO-- DESCRIBE PUZZLE ROOM
- C
- C DECLARATIONS
- C
- SUBROUTINE CPINFO(RMK,ST)
- IMPLICIT INTEGER(A-Z)
- INTEGER DGM(8),DGMOFT(8),PICT(5)
- C
- COMMON /CHAN/ INPCH,OUTCH,DBCH
- C
- C PUZZLE ROOM
- C
- COMMON /PUZZLE/ CPDR(16),CPWL(8),CPVEC(64)
- C
- C FLAGS
- C
- LOGICAL*1 TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF
- LOGICAL*1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF
- LOGICAL*1 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF
- LOGICAL*1 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF
- LOGICAL*1 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF
- LOGICAL*1 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF
- LOGICAL*1 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF
- LOGICAL*1 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ TROLLF,CAGESF,BUCKTF,CAROFF,CAROZF,LWTIDF,
- 1 DOMEF,GLACRF,ECHOF,RIDDLF,LLDF,CYCLOF,
- 2 MAGICF,LITLDF,SAFEF,GNOMEF,GNODRF,MIRRMF,
- 3 EGYPTF,ONPOLF,BLABF,BRIEFF,SUPERF,BUOYF,
- 4 GRUNLF,GATEF,RAINBF,CAGETF,EMPTHF,DEFLAF,
- 5 GLACMF,FROBZF,ENDGMF,BADLKF,THFENF,SINGSF,
- 6 MRPSHF,MROPNF,WDOPNF,MR1F,MR2F,INQSTF,
- 7 FOLLWF,SPELLF,CPOUTF,CPUSHF
- COMMON /FINDEX/ BTIEF,BINFF
- COMMON /FINDEX/ RVMNT,RVCLR,RVCYC,RVSND,RVGUA
- COMMON /FINDEX/ ORRUG,ORCAND,ORMTCH,ORLAMP
- COMMON /FINDEX/ MDIR,MLOC,POLEUF
- COMMON /FINDEX/ QUESNO,NQATT,CORRCT
- COMMON /FINDEX/ LCELL,PNUMB,ACELL,DCELL,CPHERE
- C
- C FUNCTIONS AND LOCAL DATA
- C
- DATA DGMOFT/-9,-8,-7,-1,1,7,8,9/
- DATA PICT/'SS','SS','SS',' ','MM'/
- DATA QMK/'??'/
- C CPINFO, PAGE 2
- C
- CALL RSPEAK(RMK)
- DO 100 I=1,8
- J=DGMOFT(I)
- DGM(I)=PICT(CPVEC(ST+J)+4) !GET PICTURE ELEMENT.
- IF((IABS(J).EQ.1).OR.(IABS(J).EQ.8)) GO TO 100
- K=8
- IF(J.LT.0) K=-8 !GET ORTHO DIR.
- L=J-K
- IF((CPVEC(ST+K).NE.0).AND.(CPVEC(ST+L).NE.0))
- 1 DGM(I)=QMK
- 100 CONTINUE
- WRITE(OUTCH,10) DGM
- C
- IF(ST.EQ.10) CALL RSPEAK(870) !AT HOLE?
- IF(ST.EQ.37) CALL RSPEAK(871) !AT NICHE?
- I=872 !DOOR OPEN?
- IF(CPOUTF) I=873
- IF(ST.EQ.52) CALL RSPEAK(I) !AT DOOR?
- IF(CPVEC(ST+1).EQ.-2) CALL RSPEAK(874) !EAST LADDER?
- IF(CPVEC(ST-1).EQ.-3) CALL RSPEAK(875) !WEST LADDER?
- RETURN
- C
- 10 FORMAT(' |',A2,1X,A2,1X,A2,'|'/,
- 1' West |',A2,' .. ',A2,'| East',/
- 2' |',A2,1X,A2,1X,A2,'|')
- C
- END
-