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

1.1     ! root        1: C RESIDENT SUBROUTINES FOR DUNGEON
        !             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 RSPEAK-- OUTPUT RANDOM MESSAGE ROUTINE
        !             8: C
        !             9: C CALLED BY--
        !            10: C
        !            11: C      CALL RSPEAK(MSGNUM)
        !            12: C
        !            13:        SUBROUTINE RSPEAK(N)
        !            14:        IMPLICIT INTEGER(A-Z)
        !            15: C
        !            16:        CALL RSPSB2(N,0,0)
        !            17:        RETURN
        !            18:        END
        !            19: C RSPSUB-- OUTPUT RANDOM MESSAGE WITH SUBSTITUTABLE ARGUMENT
        !            20: C
        !            21: C CALLED BY--
        !            22: C
        !            23: C      CALL RSPSUB(MSGNUM,SUBNUM)
        !            24: C
        !            25:        SUBROUTINE RSPSUB(N,S1)
        !            26:        IMPLICIT INTEGER(A-Z)
        !            27: C
        !            28:        CALL RSPSB2(N,S1,0)
        !            29:        RETURN
        !            30:        END
        !            31: C RSPSB2-- OUTPUT RANDOM MESSAGE WITH UP TO TWO SUBSTITUTABLE ARGUMENTS
        !            32: C
        !            33: C CALLED BY--
        !            34: C
        !            35: C      CALL RSPSB2(MSGNUM,SUBNUM1,SUBNUM2)
        !            36: C
        !            37:        SUBROUTINE    RSPSB2(N,S1,S2)
        !            38:        IMPLICIT      INTEGER(A-Z)
        !            39: #ifndef PDP
        !            40:        CHARACTER*74  B1,B2,B3
        !            41:        INTEGER*2     OLDREC,NEWREC,JREC
        !            42: #endif PDP
        !            43: C
        !            44: C DECLARATIONS
        !            45: C
        !            46: #include "gamestate.h"
        !            47: C
        !            48: #ifdef PDP
        !            49:        TELFLG=.TRUE.
        !            50: C
        !            51: C      use C routine to access data base
        !            52: C
        !            53:        call    rspsb3(N,S1,S2)
        !            54:        return
        !            55: #else
        !            56: #include "mindex.h"
        !            57: #include "io.h"
        !            58: C
        !            59: C CONVERT ALL ARGUMENTS FROM DICTIONARY NUMBERS (IF POSITIVE)
        !            60: C TO ABSOLUTE RECORD NUMBERS.
        !            61: C
        !            62:        X=N
        !            63: C                                              !SET UP WORK VARIABLES.
        !            64:        Y=S1
        !            65:        Z=S2
        !            66:        IF(X.GT.0) X=RTEXT(X)
        !            67: C                                              !IF >0, LOOK UP IN RTEXT.
        !            68:        IF(Y.GT.0) Y=RTEXT(Y)
        !            69:        IF(Z.GT.0) Z=RTEXT(Z)
        !            70:        X=IABS(X)
        !            71: C                                              !TAKE ABS VALUE.
        !            72:        Y=IABS(Y)
        !            73:        Z=IABS(Z)
        !            74:        IF(X.EQ.0) RETURN
        !            75: C                                              !ANYTHING TO DO?
        !            76:        TELFLG=.TRUE.
        !            77: C                                              !SAID SOMETHING.
        !            78: C
        !            79:        READ(UNIT=DBCH,REC=X) OLDREC,B1
        !            80: C
        !            81: 100    DO 150 I=1,74
        !            82:          X1=and(X,31)+I
        !            83:          B1(I:I)=char(xor(ichar(B1(I:I)),X1))
        !            84: 150    CONTINUE
        !            85: C
        !            86: 200    IF(Y.EQ.0) GO TO 400
        !            87: C                                              !ANY SUBSTITUTABLE?
        !            88:        DO 300 I=1,74
        !            89: C                                              !YES, LOOK FOR #.
        !            90:          IF(B1(I:I).EQ.'#') GO TO 1000
        !            91: 300    CONTINUE
        !            92: C
        !            93: 400    DO 500 I=74,1,-1
        !            94: C                                              !BACKSCAN FOR BLANKS.
        !            95:          IF(B1(I:I).NE.' ') GO TO 600
        !            96: 500    CONTINUE
        !            97: C
        !            98: 600    WRITE(OUTCH,650) (B1(J:J),J=1,I)
        !            99: #ifdef NOCC
        !           100: 650    FORMAT(74A1)
        !           101: #else NOCC
        !           102: 650    FORMAT(1X,74A1)
        !           103: #endif NOCC
        !           104:        X=X+1
        !           105: C                                              !ON TO NEXT RECORD.
        !           106:        READ(UNIT=DBCH,REC=X) NEWREC,B1
        !           107:        IF(OLDREC.EQ.NEWREC) GO TO 100
        !           108: C                                              !CONTINUATION?
        !           109:        RETURN
        !           110: C                                              !NO, EXIT.
        !           111: C
        !           112: C SUBSTITUTION WITH SUBSTITUTABLE AVAILABLE.
        !           113: C I IS INDEX OF # IN B1.
        !           114: C Y IS NUMBER OF RECORD TO SUBSTITUTE.
        !           115: C
        !           116: C PROCEDURE:
        !           117: C   1) COPY REST OF B1 TO B2
        !           118: C   2) READ SUBSTITUTABLE OVER B1
        !           119: C   3) RESTORE TAIL OF ORIGINAL B1
        !           120: C
        !           121: C THE IMPLICIT ASSUMPTION HERE IS THAT THE SUBSTITUTABLE STRING
        !           122: C IS VERY SHORT (i.e. MUCH LESS THAN ONE RECORD).
        !           123: C
        !           124: 1000   K2=1
        !           125: C                                              !TO
        !           126:        DO 1100 K1=I+1,74
        !           127: C                                              !COPY REST OF B1.
        !           128:          B2(K2:K2)=B1(K1:K1)
        !           129:          K2=K2+1
        !           130: 1100   CONTINUE
        !           131: C
        !           132: C   READ SUBSTITUTE STRING INTO B3, AND DECRYPT IT:
        !           133: C
        !           134:        READ(UNIT=DBCH,REC=Y) JREC,B3
        !           135:        DO 1150 K1=1,74
        !           136:          X1=and(Y,31)+K1
        !           137:          B3(K1:K1)=char(xor(ICHAR(B3(K1:K1)),X1))
        !           138: 1150   CONTINUE
        !           139: C
        !           140: C   FILL REMAINDER OF B1 WITH CHARACTERS FROM B3:
        !           141: C
        !           142:        K2=1
        !           143:        DO 1180 K1=I,74
        !           144:          B1(K1:K1)=B3(K2:K2)
        !           145:          K2=K2+1
        !           146: 1180   CONTINUE
        !           147: C
        !           148: C   FIND END OF SUBSTITUTE STRING IN B1:
        !           149: C
        !           150:        DO 1200 J=74,1,-1
        !           151: C                                              !ELIM TRAILING BLANKS.
        !           152:          IF(B1(J:J).NE.' ') GO TO 1300
        !           153: 1200   CONTINUE
        !           154: C
        !           155: C   PUT TAIL END OF B1 (NOW IN B2) BACK INTO B1 AFTER SUBSTITUTE STRING:
        !           156: C
        !           157: 1300   K1=1
        !           158: C                                              !FROM
        !           159:        DO 1400 K2=J+1,74
        !           160: C                                              !COPY REST OF B1 BACK.
        !           161:          B1(K2:K2)=B2(K1:K1)
        !           162:          K1=K1+1
        !           163: 1400   CONTINUE
        !           164: C
        !           165:        Y=Z
        !           166: C                                              !SET UP FOR NEXT
        !           167:        Z=0
        !           168: C                                              !SUBSTITUTION AND
        !           169:        GO TO 200
        !           170: C                                              !RECHECK LINE.
        !           171: #endif PDP
        !           172: C
        !           173:        END
        !           174: C OBJACT-- APPLY OBJECTS FROM PARSE VECTOR
        !           175: C
        !           176: C DECLARATIONS
        !           177: C
        !           178:        LOGICAL FUNCTION OBJACT(X)
        !           179:        IMPLICIT INTEGER (A-Z)
        !           180:        LOGICAL OAPPLI
        !           181: #include "parser.h"
        !           182: #include "objects.h"
        !           183: C
        !           184:        OBJACT=.TRUE.
        !           185: C                                              !ASSUME WINS.
        !           186:        IF(PRSI.EQ.0) GO TO 100
        !           187: C                                              !IND OBJECT?
        !           188:        IF(OAPPLI(OACTIO(PRSI),0)) RETURN
        !           189: C                                              !YES, LET IT HANDLE.
        !           190: C
        !           191: 100    IF(PRSO.EQ.0) GO TO 200
        !           192: C                                              !DIR OBJECT?
        !           193:        IF(OAPPLI(OACTIO(PRSO),0)) RETURN
        !           194: C                                              !YES, LET IT HANDLE.
        !           195: C
        !           196: 200    OBJACT=.FALSE.
        !           197: C                                              !LOSES.
        !           198:        RETURN
        !           199:        END
        !           200: #ifndef PDP
        !           201: C BUG-- REPORT FATAL SYSTEM ERROR
        !           202: C
        !           203: C CALLED BY--
        !           204: C
        !           205: C      CALL BUG(NO,PAR)
        !           206: C
        !           207:        SUBROUTINE BUG(A,B)
        !           208:        IMPLICIT INTEGER(A-Z)
        !           209: #include "debug.h"
        !           210: C
        !           211:        PRINT 100,A,B
        !           212:        IF(DBGFLG.NE.0) RETURN
        !           213:        CALL EXIT
        !           214: C
        !           215: #ifdef NOCC
        !           216: 100    FORMAT('PROGRAM ERROR ',I2,', PARAMETER=',I6)
        !           217: #else NOCC
        !           218: 100    FORMAT(' PROGRAM ERROR ',I2,', PARAMETER=',I6)
        !           219: #endif NOCC
        !           220:        END
        !           221: #endif PDP
        !           222: C NEWSTA-- SET NEW STATUS FOR OBJECT
        !           223: C
        !           224: C CALLED BY--
        !           225: C
        !           226: C      CALL NEWSTA(OBJECT,STRING,NEWROOM,NEWCON,NEWADV)
        !           227: C
        !           228:        SUBROUTINE NEWSTA(O,R,RM,CN,AD)
        !           229:        IMPLICIT INTEGER(A-Z)
        !           230: #include "objects.h"
        !           231: C
        !           232:        CALL RSPEAK(R)
        !           233:        OROOM(O)=RM
        !           234:        OCAN(O)=CN
        !           235:        OADV(O)=AD
        !           236:        RETURN
        !           237:        END
        !           238: C QHERE-- TEST FOR OBJECT IN ROOM
        !           239: C
        !           240: C DECLARATIONS
        !           241: C
        !           242:        LOGICAL FUNCTION QHERE(OBJ,RM)
        !           243:        IMPLICIT INTEGER (A-Z)
        !           244: #include "objects.h"
        !           245: C
        !           246:        QHERE=.TRUE.
        !           247:        IF(OROOM(OBJ).EQ.RM) RETURN
        !           248: C                                              !IN ROOM?
        !           249:        DO 100 I=1,R2LNT
        !           250: C                                              !NO, SCH ROOM2.
        !           251:          IF((OROOM2(I).EQ.OBJ).AND.(RROOM2(I).EQ.RM)) RETURN
        !           252: 100    CONTINUE
        !           253:        QHERE=.FALSE.
        !           254: C                                              !NOT PRESENT.
        !           255:        RETURN
        !           256:        END
        !           257: C QEMPTY-- TEST FOR OBJECT EMPTY
        !           258: C
        !           259: C DECLARATIONS
        !           260: C
        !           261:        LOGICAL FUNCTION QEMPTY(OBJ)
        !           262:        IMPLICIT INTEGER (A-Z)
        !           263: #include "objects.h"
        !           264: C
        !           265:        QEMPTY=.FALSE.
        !           266: C                                              !ASSUME LOSE.
        !           267:        DO 100 I=1,OLNT
        !           268:          IF(OCAN(I).EQ.OBJ) RETURN
        !           269: C                                              !INSIDE TARGET?
        !           270: 100    CONTINUE
        !           271:        QEMPTY=.TRUE.
        !           272:        RETURN
        !           273:        END
        !           274: C JIGSUP- YOU ARE DEAD
        !           275: C
        !           276: C DECLARATIONS
        !           277: C
        !           278:        SUBROUTINE JIGSUP(DESC)
        !           279:        IMPLICIT INTEGER (A-Z)
        !           280:        LOGICAL YESNO,MOVETO,QHERE,F
        !           281:        INTEGER RLIST(9)
        !           282: #include "parser.h"
        !           283: #include "gamestate.h"
        !           284: #include "state.h"
        !           285: #include "io.h"
        !           286: #include "debug.h"
        !           287: #include "rooms.h"
        !           288: #include "rflag.h"
        !           289: #include "rindex.h"
        !           290: #include "objects.h"
        !           291: #include "oflags.h"
        !           292: #include "oindex.h"
        !           293: #include "advers.h"
        !           294: #include "flags.h"
        !           295: C
        !           296: C FUNCTIONS AND DATA
        !           297: C
        !           298:        DATA RLIST/8,6,36,35,34,4,34,6,5/
        !           299: C JIGSUP, PAGE 2
        !           300: C
        !           301:        CALL RSPEAK(DESC)
        !           302: C                                              !DESCRIBE SAD STATE.
        !           303:        PRSCON=1
        !           304: C                                              !STOP PARSER.
        !           305:        IF(DBGFLG.NE.0) RETURN
        !           306: C                                              !IF DBG, EXIT.
        !           307:        AVEHIC(WINNER)=0
        !           308: C                                              !GET RID OF VEHICLE.
        !           309:        IF(WINNER.EQ.PLAYER) GO TO 100
        !           310: C                                              !HIMSELF?
        !           311:        CALL RSPSUB(432,ODESC2(AOBJ(WINNER)))
        !           312: C                                              !NO, SAY WHO DIED.
        !           313:        CALL NEWSTA(AOBJ(WINNER),0,0,0,0)
        !           314: C                                              !SEND TO HYPER SPACE.
        !           315:        RETURN
        !           316: C
        !           317: 100    IF(ENDGMF) GO TO 900
        !           318: C                                              !NO RECOVERY IN END GAME.
        !           319:        IF(DEATHS.GE.2) GO TO 1000
        !           320: C                                              !DEAD TWICE? KICK HIM OFF.
        !           321:        IF(.NOT.YESNO(10,9,8)) GO TO 1100
        !           322: C                                              !CONTINUE?
        !           323: C
        !           324:        DO 50 J=1,OLNT
        !           325: C                                              !TURN OFF FIGHTING.
        !           326:          IF(QHERE(J,HERE))   OFLAG2(J)=and(OFLAG2(J),not(FITEBT))
        !           327: 50     CONTINUE
        !           328: C
        !           329:        DEATHS=DEATHS+1
        !           330:        CALL SCRUPD(-10)
        !           331: C                                              !CHARGE TEN POINTS.
        !           332:        F=MOVETO(FORE1,WINNER)
        !           333: C                                              !REPOSITION HIM.
        !           334:        EGYPTF=.TRUE.
        !           335: C                                              !RESTORE COFFIN.
        !           336:        IF(OADV(COFFI).EQ.WINNER) CALL NEWSTA(COFFI,0,EGYPT,0,0)
        !           337:        OFLAG2(DOOR)=and(OFLAG2(DOOR),not(TCHBT))
        !           338:        OFLAG1(ROBOT)=and(or(OFLAG1(ROBOT),VISIBT),not(NDSCBT))
        !           339:        IF((OROOM(LAMP).NE.0).OR.(OADV(LAMP).EQ.WINNER))
        !           340: &              CALL NEWSTA(LAMP,0,LROOM,0,0)
        !           341: C
        !           342: C NOW REDISTRIBUTE HIS VALUABLES AND OTHER BELONGINGS.
        !           343: C
        !           344: C THE LAMP HAS BEEN PLACED IN THE LIVING ROOM.
        !           345: C THE FIRST 8 NON-VALUABLES ARE PLACED IN LOCATIONS AROUND THE HOUSE.
        !           346: C HIS VALUABLES ARE PLACED AT THE END OF THE MAZE.
        !           347: C REMAINING NON-VALUABLES ARE PLACED AT THE END OF THE MAZE.
        !           348: C
        !           349:        I=1
        !           350:        DO 200 J=1,OLNT
        !           351: C                                              !LOOP THRU OBJECTS.
        !           352:          IF((OADV(J).NE.WINNER).OR.(OTVAL(J).NE.0))
        !           353: &              GO TO 200
        !           354:          I=I+1
        !           355:          IF(I.GT.9) GO TO 400
        !           356: C                                              !MOVE TO RANDOM LOCATIONS.
        !           357:          CALL NEWSTA(J,0,RLIST(I),0,0)
        !           358: 200    CONTINUE
        !           359: C
        !           360: 400    I=RLNT+1
        !           361: C                                              !NOW MOVE VALUABLES.
        !           362:        NONOFL=RAIR+RWATER+RSACRD+REND
        !           363: C                                              !DONT MOVE HERE.
        !           364:        DO 300 J=1,OLNT
        !           365:          IF((OADV(J).NE.WINNER).OR.(OTVAL(J).EQ.0))
        !           366: &              GO TO 300
        !           367: 250      I=I-1
        !           368: C                                              !FIND NEXT ROOM.
        !           369:          IF(and(RFLAG(I),NONOFL).NE.0) GO TO 250
        !           370:          CALL NEWSTA(J,0,I,0,0)
        !           371: C                                              !YES, MOVE.
        !           372: 300    CONTINUE
        !           373: C
        !           374:        DO 500 J=1,OLNT
        !           375: C                                              !NOW GET RID OF REMAINDER.
        !           376:          IF(OADV(J).NE.WINNER) GO TO 500
        !           377: 450      I=I-1
        !           378: C                                              !FIND NEXT ROOM.
        !           379:          IF(and(RFLAG(I),NONOFL).NE.0) GO TO 450
        !           380:          CALL NEWSTA(J,0,I,0,0)
        !           381: 500    CONTINUE
        !           382:        RETURN
        !           383: C
        !           384: C CAN'T OR WON'T CONTINUE, CLEAN UP AND EXIT.
        !           385: C
        !           386: 900    CALL RSPEAK(625)
        !           387: C                                              !IN ENDGAME, LOSE.
        !           388:        GO TO 1100
        !           389: C
        !           390: 1000   CALL RSPEAK(7)
        !           391: C                                              !INVOLUNTARY EXIT.
        !           392: 1100   CALL SCORE(.FALSE.)
        !           393: C                                              !TELL SCORE.
        !           394: #ifdef PDP
        !           395: C      file closed in exit routine
        !           396: #else
        !           397:        CLOSE(DBCH)
        !           398: #endif PDP
        !           399:        CALL EXIT
        !           400: C
        !           401:        END
        !           402: C OACTOR-      GET ACTOR ASSOCIATED WITH OBJECT
        !           403: C
        !           404: C DECLARATIONS
        !           405: C
        !           406:        INTEGER FUNCTION OACTOR(OBJ)
        !           407:        IMPLICIT INTEGER(A-Z)
        !           408: #include "advers.h"
        !           409: C
        !           410:        DO 100 I=1,ALNT
        !           411: C                                              !LOOP THRU ACTORS.
        !           412:          OACTOR=I
        !           413: C                                              !ASSUME FOUND.
        !           414:          IF(AOBJ(I).EQ.OBJ) RETURN
        !           415: C                                              !FOUND IT?
        !           416: 100    CONTINUE
        !           417:        CALL BUG(40,OBJ)
        !           418: C                                              !NO, DIE.
        !           419:        RETURN
        !           420:        END
        !           421: C PROB-                COMPUTE PROBABILITY
        !           422: C
        !           423: C DECLARATIONS
        !           424: C
        !           425:        LOGICAL FUNCTION PROB(G,B)
        !           426:        IMPLICIT INTEGER(A-Z)
        !           427: #include "flags.h"
        !           428: C
        !           429:        I=G
        !           430: C                                              !ASSUME GOOD LUCK.
        !           431:        IF(BADLKF) I=B
        !           432: C                                              !IF BAD, TOO BAD.
        !           433:        PROB=RND(100).LT.I
        !           434: C                                              !COMPUTE.
        !           435:        RETURN
        !           436:        END
        !           437: C RMDESC-- PRINT ROOM DESCRIPTION
        !           438: C
        !           439: C RMDESC PRINTS A DESCRIPTION OF THE CURRENT ROOM.
        !           440: C IT IS ALSO THE PROCESSOR FOR VERBS 'LOOK' AND 'EXAMINE'.
        !           441: C
        !           442:        LOGICAL FUNCTION RMDESC(FULL)
        !           443: C
        !           444: C FULL=        0/1/2/3=        SHORT/OBJ/ROOM/FULL
        !           445: C
        !           446: C DECLARATIONS
        !           447: C
        !           448:        IMPLICIT INTEGER (A-Z)
        !           449:        LOGICAL LIT,RAPPLI
        !           450: C      LOGICAL PROB
        !           451: #include "parser.h"
        !           452: #include "gamestate.h"
        !           453: #include "screen.h"
        !           454: #include "rooms.h"
        !           455: #include "rflag.h"
        !           456: #include "xsrch.h"
        !           457: #include "objects.h"
        !           458: #include "advers.h"
        !           459: #include "verbs.h"
        !           460: #include "flags.h"
        !           461: C RMDESC, PAGE 2
        !           462: C
        !           463:        RMDESC=.TRUE.
        !           464: C                                              !ASSUME WINS.
        !           465:        IF(PRSO.LT.XMIN) GO TO 50
        !           466: C                                              !IF DIRECTION,
        !           467:        FROMDR=PRSO
        !           468: C                                              !SAVE AND
        !           469:        PRSO=0
        !           470: C                                              !CLEAR.
        !           471: 50     IF(HERE.EQ.AROOM(PLAYER)) GO TO 100
        !           472: C                                              !PLAYER JUST MOVE?
        !           473:        CALL RSPEAK(2)
        !           474: C                                              !NO, JUST SAY DONE.
        !           475:        PRSA=WALKIW
        !           476: C                                              !SET UP WALK IN ACTION.
        !           477:        RETURN
        !           478: C
        !           479: 100    IF(LIT(HERE)) GO TO 300
        !           480: C                                              !LIT?
        !           481:        CALL RSPEAK(430)
        !           482: C                                              !WARN OF GRUE.
        !           483:        RMDESC=.FALSE.
        !           484:        RETURN
        !           485: C
        !           486: 300    RA=RACTIO(HERE)
        !           487: C                                              !GET ROOM ACTION.
        !           488:        IF(FULL.EQ.1) GO TO 600
        !           489: C                                              !OBJ ONLY?
        !           490:        I=RDESC2-HERE
        !           491: C                                              !ASSUME SHORT DESC.
        !           492:        IF((FULL.EQ.0)
        !           493: &              .AND.(SUPERF.OR.(((and(RFLAG(HERE),RSEEN)).NE.0)
        !           494: C
        !           495: C  The next line means that when you request VERBOSE mode, you
        !           496: C  only get long room descriptions 20% of the time. I don't either
        !           497: C  like or understand this, so the mod. ensures VERBOSE works
        !           498: C  all the time.                       [email protected] 22/10/87
        !           499: C
        !           500: C&                     .AND.(BRIEFF.OR.PROB(80,80)))))       GO TO 400
        !           501: &                      .AND.BRIEFF)))       GO TO 400
        !           502:        I=RDESC1(HERE)
        !           503: C                                              !USE LONG.
        !           504:        IF((I.NE.0).OR.(RA.EQ.0)) GO TO 400
        !           505: C                                              !IF GOT DESC, SKIP.
        !           506:        PRSA=LOOKW
        !           507: C                                              !PRETEND LOOK AROUND.
        !           508:        IF(.NOT.RAPPLI(RA)) GO TO 100
        !           509: C                                              !ROOM HANDLES, NEW DESC?
        !           510:        PRSA=FOOW
        !           511: C                                              !NOP PARSER.
        !           512:        GO TO 500
        !           513: C
        !           514: 400    CALL RSPEAK(I)
        !           515: C                                              !OUTPUT DESCRIPTION.
        !           516: 500    IF(AVEHIC(WINNER).NE.0) CALL RSPSUB(431,ODESC2(AVEHIC(WINNER)))
        !           517: C
        !           518: 600    IF(FULL.NE.2) CALL PRINCR(FULL.NE.0,HERE)
        !           519:        RFLAG(HERE)=or(RFLAG(HERE),RSEEN)
        !           520:        IF((FULL.NE.0).OR.(RA.EQ.0)) RETURN
        !           521: C                                              !ANYTHING MORE?
        !           522:        PRSA=WALKIW
        !           523: C                                              !GIVE HIM A SURPISE.
        !           524:        IF(.NOT.RAPPLI(RA)) GO TO 100
        !           525: C                                              !ROOM HANDLES, NEW DESC?
        !           526:        PRSA=FOOW
        !           527:        RETURN
        !           528: C
        !           529:        END
        !           530: C RAPPLI-      ROUTING ROUTINE FOR ROOM APPLICABLES
        !           531: C
        !           532: C DECLARATIONS
        !           533: C
        !           534:        LOGICAL FUNCTION RAPPLI(RI)
        !           535:        IMPLICIT INTEGER(A-Z)
        !           536:        LOGICAL RAPPL1,RAPPL2
        !           537:        DATA NEWRMS/38/
        !           538: C
        !           539:        RAPPLI=.TRUE.
        !           540: C                                              !ASSUME WINS.
        !           541:        IF(RI.EQ.0) RETURN
        !           542: C                                              !IF ZERO, WIN.
        !           543:        IF(RI.LT.NEWRMS) RAPPLI=RAPPL1(RI)
        !           544: C                                              !IF OLD, PROCESSOR 1.
        !           545:        IF(RI.GE.NEWRMS) RAPPLI=RAPPL2(RI)
        !           546: C                                              !IF NEW, PROCESSOR 2.
        !           547:        RETURN
        !           548:        END

unix.superglobalmegacorp.com

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