Annotation of 43BSDReno/games/dungeon/dso7.F, revision 1.1

1.1     ! root        1: C ENCRYP--     ENCRYPT PASSWORD
        !             2: C
        !             3: C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142
        !             4: C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
        !             5: C WRITTEN BY R. M. SUPNIK
        !             6: C
        !             7: C DECLARATIONS
        !             8: C
        !             9:        SUBROUTINE ENCRYP(INW,OUTW)
        !            10:        IMPLICIT INTEGER(A-Z)
        !            11:        CHARACTER INW(6),OUTW(6)
        !            12:        CHARACTER  KEYW(6),UKEYW(6)
        !            13:        INTEGER UINW(6)
        !            14:        DATA KEYW/'E','C','O','R','M','S'/
        !            15: C
        !            16:        UINWS=0
        !            17: C                                              !UNBIASED INW SUM.
        !            18:        UKEYWS=0
        !            19: C                                              !UNBIASED KEYW SUM.
        !            20:        J=1
        !            21: C                                              !POINTER IN KEYWORD.
        !            22:        DO 100 I=1,6
        !            23: C                                              !UNBIAS, COMPUTE SUMS.
        !            24:          UKEYW(I)=char(ichar(KEYW(I))-64)
        !            25:          IF(INW(J).LE.char(64)) J=1
        !            26:          UINW(I)=ichar(ichar(INW(J))-64)
        !            27:          UKEYWS=UKEYWS+ichar(UKEYW(I))
        !            28:          UINWS=UINWS+UINW(I)
        !            29:          J=J+1
        !            30: 100    CONTINUE
        !            31: C
        !            32:        USUM=MOD(UINWS,8)+(8*MOD(UKEYWS,8))
        !            33: C                                              !COMPUTE MASK.
        !            34:        DO 200 I=1,6
        !            35:          J=and(xor(xor(ichar(UINW(I)),ichar(UKEYW(I))),USUM),31)
        !            36:          USUM=MOD(USUM+1,32)
        !            37:          IF(J.GT.26) J=MOD(J,26)
        !            38:          OUTW(I)=char(MAX0(1,J)+64)
        !            39: 200    CONTINUE
        !            40:        RETURN
        !            41: C
        !            42:        END
        !            43: C CPGOTO--     MOVE TO NEXT STATE IN PUZZLE ROOM
        !            44: C
        !            45: C DECLARATIONS
        !            46: C
        !            47:        SUBROUTINE CPGOTO(ST)
        !            48:        IMPLICIT INTEGER(A-Z)
        !            49: C
        !            50:        COMMON /HYPER/ HFACTR
        !            51: #include "rooms.h"
        !            52: #include "rflag.h"
        !            53: #include "rindex.h"
        !            54: #include "objects.h"
        !            55: #include "oflags.h"
        !            56: #include "flags.h"
        !            57: C CPGOTO, PAGE 2
        !            58: C
        !            59:        RFLAG(CPUZZ)=and(RFLAG(CPUZZ),not(RSEEN))
        !            60:        DO 100 I=1,OLNT
        !            61: C                                              !RELOCATE OBJECTS.
        !            62:          IF((OROOM(I).EQ.CPUZZ).AND.
        !            63: &              (and(OFLAG2(I),(ACTRBT+VILLBT)).EQ.0))
        !            64: &              CALL NEWSTA(I,0,CPHERE*HFACTR,0,0)
        !            65:          IF(OROOM(I).EQ.(ST*HFACTR))
        !            66: &              CALL NEWSTA(I,0,CPUZZ,0,0)
        !            67: 100    CONTINUE
        !            68:        CPHERE=ST
        !            69:        RETURN
        !            70: C
        !            71:        END
        !            72: C CPINFO--     DESCRIBE PUZZLE ROOM
        !            73: C
        !            74: C DECLARATIONS
        !            75: C
        !            76:        SUBROUTINE CPINFO(RMK,ST)
        !            77:        IMPLICIT INTEGER(A-Z)
        !            78:        INTEGER DGMOFT(8)
        !            79:        CHARACTER  DGM(8),PICT(5),QMK
        !            80: C
        !            81:        COMMON /CHAN/ INPCH,OUTCH,DBCH
        !            82: C
        !            83: C PUZZLE ROOM
        !            84: C
        !            85:        COMMON /PUZZLE/ CPDR(16),CPWL(8),CPVEC(64)
        !            86: #include "flags.h"
        !            87: C
        !            88: C FUNCTIONS AND LOCAL DATA
        !            89: C
        !            90: C
        !            91:        DATA DGMOFT/-9,-8,-7,-1,1,7,8,9/
        !            92: #ifdef PDP
        !            93: C
        !            94: C      PICT, DGM and QMK have been changed from two to
        !            95: C      one character in length. Puzout prints two copies.
        !            96: C
        !            97:        DATA PICT/'S','S','S',' ','M'/
        !            98:        DATA QMK/'?'/
        !            99: #else
        !           100:        DATA PICT/'SS','SS','SS','  ','MM'/
        !           101:        DATA QMK/'??'/
        !           102: #endif PDP
        !           103: C CPINFO, PAGE 2
        !           104: C
        !           105:        CALL RSPEAK(RMK)
        !           106:        DO 100 I=1,8
        !           107:          J=DGMOFT(I)
        !           108:          DGM(I)=PICT(CPVEC(ST+J)+4)
        !           109: C                                              !GET PICTURE ELEMENT.
        !           110:          IF((IABS(J).EQ.1).OR.(IABS(J).EQ.8)) GO TO 100
        !           111:          K=8
        !           112:          IF(J.LT.0) K=-8
        !           113: C                                              !GET ORTHO DIR.
        !           114:          L=J-K
        !           115:          IF((CPVEC(ST+K).NE.0).AND.(CPVEC(ST+L).NE.0))
        !           116: &              DGM(I)=QMK
        !           117: 100    CONTINUE
        !           118: #ifdef PDP
        !           119:        call puzout(DGM(1))
        !           120: #else
        !           121:        WRITE(OUTCH,10) DGM
        !           122: #endif
        !           123: C
        !           124:        IF(ST.EQ.10) CALL RSPEAK(870)
        !           125: C                                              !AT HOLE?
        !           126:        IF(ST.EQ.37) CALL RSPEAK(871)
        !           127: C                                              !AT NICHE?
        !           128:        I=872
        !           129: C                                              !DOOR OPEN?
        !           130:        IF(CPOUTF) I=873
        !           131:        IF(ST.EQ.52) CALL RSPEAK(I)
        !           132: C                                              !AT DOOR?
        !           133:        IF(CPVEC(ST+1).EQ.-2) CALL RSPEAK(874)
        !           134: C                                              !EAST LADDER?
        !           135:        IF(CPVEC(ST-1).EQ.-3) CALL RSPEAK(875)
        !           136: C                                              !WEST LADDER?
        !           137:        RETURN
        !           138: C
        !           139: #ifndef PDP
        !           140: 10     FORMAT('       |',A2,1X,A2,1X,A2,'|'/,
        !           141: &      ' West  |',A2,' .. ',A2,'|  East',/
        !           142: &      '       |',A2,1X,A2,1X,A2,'|')
        !           143: #endif PDP
        !           144: C
        !           145:        END

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.