1C RAPPL1- SPECIAL PURPOSE ROOM ROUTINES, PART 1 2C 3C COPYRIGHT 1980, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA. 02142 4C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED 5C WRITTEN BY R. M. SUPNIK 6C 7C DECLARATIONS 8C 9 LOGICAL FUNCTION RAPPL1(RI) 10 IMPLICIT INTEGER (A-Z) 11 LOGICAL QOPEN,QON,QHERE,PROB,F 12 LOGICAL MOVETO,LIT 13#include "parser.h" 14#include "gamestate.h" 15#include "state.h" 16C 17C SCREEN OF LIGHT 18C 19 COMMON /SCREEN/ FROMDR,SCOLRM,SCOLAC 20 COMMON /SCREEN/ SCOLDR(8),SCOLWL(12) 21C 22C MISCELLANEOUS VARIABLES 23C 24 COMMON /BATS/ BATDRP(9) 25#include "rooms.h" 26#include "rflag.h" 27#include "rindex.h" 28#include "objects.h" 29#include "oflags.h" 30#include "oindex.h" 31#include "clock.h" 32#include "villians.h" 33#include "advers.h" 34#include "verbs.h" 35#include "flags.h" 36C 37C FUNCTIONS AND DATA 38C 39 QOPEN(R)=and(OFLAG2(R),OPENBT).NE.0 40 QON(R)=and(OFLAG1(R),ONBT).NE.0 41C RAPPL1, PAGE 2 42C 43 RAPPL1=.TRUE. 44C !USUALLY IGNORED. 45 IF(RI.EQ.0) RETURN 46C !RETURN IF NAUGHT. 47C 48C !SET TO FALSE FOR 49C 50C !NEW DESC NEEDED. 51 GO TO (1000,2000,3000,4000,5000,6000,7000,8000,9000,10000, 52& 11000,12000,13000,14000,15000,16000,17000,18000,19000,20000, 53& 21000,22000,23000,24000,25000,26000,27000,28000,29000,30000, 54& 31000,32000,33000,34000,35000,36000,37000),RI 55 CALL BUG(1,RI) 56C 57C R1-- EAST OF HOUSE. DESCRIPTION DEPENDS ON STATE OF WINDOW 58C 591000 IF(PRSA.NE.LOOKW) RETURN 60C !LOOK? 61 I=13 62C !ASSUME CLOSED. 63 IF(QOPEN(WINDO)) I=12 64C !IF OPEN, AJAR. 65 CALL RSPSUB(11,I) 66C !DESCRIBE. 67 RETURN 68C 69C R2-- KITCHEN. SAME VIEW FROM INSIDE. 70C 712000 IF(PRSA.NE.LOOKW) RETURN 72C !LOOK? 73 I=13 74C !ASSUME CLOSED. 75 IF(QOPEN(WINDO)) I=12 76C !IF OPEN, AJAR. 77 CALL RSPSUB(14,I) 78C !DESCRIBE. 79 RETURN 80C 81C R3-- LIVING ROOM. DESCRIPTION DEPENDS ON MAGICF (STATE OF 82C DOOR TO CYCLOPS ROOM), RUG (MOVED OR NOT), DOOR (OPEN OR CLOSED) 83C 843000 IF(PRSA.NE.LOOKW) GO TO 3500 85C !LOOK? 86 I=15 87C !ASSUME NO HOLE. 88 IF(MAGICF) I=16 89C !IF MAGICF, CYCLOPS HOLE. 90 CALL RSPEAK(I) 91C !DESCRIBE. 92 I=17+ORRUG 93C !ASSUME INITIAL STATE. 94 IF(QOPEN(DOOR)) I=I+2 95C !DOOR OPEN? 96 CALL RSPEAK(I) 97C !DESCRIBE. 98 RETURN 99C 100C NOT A LOOK WORD. REEVALUATE TROPHY CASE. 101C 1023500 IF((PRSA.NE.TAKEW).AND.((PRSA.NE.PUTW).OR.(PRSI.NE.TCASE))) 103& RETURN 104 ASCORE(WINNER)=RWSCOR 105C !SCORE TROPHY CASE. 106 DO 3600 I=1,OLNT 107C !RETAIN RAW SCORE AS WELL. 108 J=I 109C !FIND OUT IF IN CASE. 1103550 J=OCAN(J) 111C !TRACE OWNERSHIP. 112 IF(J.EQ.0) GO TO 3600 113 IF(J.NE.TCASE) GO TO 3550 114C !DO ALL LEVELS. 115 ASCORE(WINNER)=ASCORE(WINNER)+OTVAL(I) 1163600 CONTINUE 117 CALL SCRUPD(0) 118C !SEE IF ENDGAME TRIG. 119 RETURN 120C RAPPL1, PAGE 3 121C 122C R4-- CELLAR. SHUT DOOR AND BAR IT IF HE JUST WALKED IN. 123C 1244000 IF(PRSA.NE.LOOKW) GO TO 4500 125C !LOOK? 126 CALL RSPEAK(21) 127C !DESCRIBE CELLAR. 128 RETURN 129C 1304500 IF(PRSA.NE.WALKIW) RETURN 131C !WALKIN? 132 IF(and(OFLAG2(DOOR),(OPENBT+TCHBT)).NE.OPENBT) RETURN 133 OFLAG2(DOOR)=and( or(OFLAG2(DOOR),TCHBT), not(OPENBT)) 134 CALL RSPEAK(22) 135C !SLAM AND BOLT DOOR. 136 RETURN 137C 138C R5-- MAZE11. DESCRIBE STATE OF GRATING. 139C 1405000 IF(PRSA.NE.LOOKW) RETURN 141C !LOOK? 142 CALL RSPEAK(23) 143C !DESCRIBE. 144 I=24 145C !ASSUME LOCKED. 146 IF(GRUNLF) I=26 147C !UNLOCKED? 148 IF(QOPEN(GRATE)) I=25 149C !OPEN? 150 CALL RSPEAK(I) 151C !DESCRIBE GRATE. 152 RETURN 153C 154C R6-- CLEARING. DESCRIBE CLEARING, MOVE LEAVES. 155C 1566000 IF(PRSA.NE.LOOKW) GO TO 6500 157C !LOOK? 158 CALL RSPEAK(27) 159C !DESCRIBE. 160 IF(RVCLR.EQ.0) RETURN 161C !LEAVES MOVED? 162 I=28 163C !YES, ASSUME GRATE CLOSED. 164 IF(QOPEN(GRATE)) I=29 165C !OPEN? 166 CALL RSPEAK(I) 167C !DESCRIBE GRATE. 168 RETURN 169C 1706500 IF((RVCLR.NE.0).OR.(QHERE(LEAVE,CLEAR).AND. 171& ((PRSA.NE.MOVEW).OR.(PRSO.NE.LEAVE)))) RETURN 172 CALL RSPEAK(30) 173C !MOVE LEAVES, REVEAL GRATE. 174 RVCLR=1 175C !INDICATE LEAVES MOVED. 176 RETURN 177C RAPPL1, PAGE 4 178C 179C R7-- RESERVOIR SOUTH. DESCRIPTION DEPENDS ON LOW TIDE FLAG. 180C 1817000 IF(PRSA.NE.LOOKW) RETURN 182C !LOOK? 183 I=31 184C !ASSUME FULL. 185 IF(LWTIDF) I=32 186C !IF LOW TIDE, EMPTY. 187 CALL RSPEAK(I) 188C !DESCRIBE. 189 CALL RSPEAK(33) 190C !DESCRIBE EXITS. 191 RETURN 192C 193C R8-- RESERVOIR. STATE DEPENDS ON LOW TIDE FLAG. 194C 1958000 IF(PRSA.NE.LOOKW) RETURN 196C !LOOK? 197 I=34 198C !ASSUME FULL. 199 IF(LWTIDF) I=35 200C !IF LOW TIDE, EMTPY. 201 CALL RSPEAK(I) 202C !DESCRIBE. 203 RETURN 204C 205C R9-- RESERVOIR NORTH. ALSO DEPENDS ON LOW TIDE FLAG. 206C 2079000 IF(PRSA.NE.LOOKW) RETURN 208C !LOOK? 209 I=36 210C !YOU GET THE IDEA. 211 IF(LWTIDF) I=37 212 CALL RSPEAK(I) 213 CALL RSPEAK(38) 214 RETURN 215C 216C R10-- GLACIER ROOM. STATE DEPENDS ON MELTED, VANISHED FLAGS. 217C 21810000 IF(PRSA.NE.LOOKW) RETURN 219C !LOOK? 220 CALL RSPEAK(39) 221C !BASIC DESCRIPTION. 222 I=0 223C !ASSUME NO CHANGES. 224 IF(GLACMF) I=40 225C !PARTIAL MELT? 226 IF(GLACRF) I=41 227C !COMPLETE MELT? 228 CALL RSPEAK(I) 229C !DESCRIBE. 230 RETURN 231C 232C R11-- FOREST ROOM 233C 23411000 IF(PRSA.EQ.WALKIW) CFLAG(CEVFOR)=.TRUE. 235C !IF WALK IN, BIRDIE. 236 RETURN 237C 238C R12-- MIRROR ROOM. STATE DEPENDS ON MIRROR INTACT. 239C 24012000 IF(PRSA.NE.LOOKW) RETURN 241C !LOOK? 242 CALL RSPEAK(42) 243C !DESCRIBE. 244 IF(MIRRMF) CALL RSPEAK(43) 245C !IF BROKEN, NASTY REMARK. 246 RETURN 247C RAPPL1, PAGE 5 248C 249C R13-- CAVE2 ROOM. BLOW OUT CANDLES WITH 50% PROBABILITY. 250C 25113000 IF(PRSA.NE.WALKIW) RETURN 252C !WALKIN? 253 IF(PROB(50,50).OR.(OADV(CANDL).NE.WINNER).OR. 254& .NOT.QON(CANDL)) RETURN 255 OFLAG1(CANDL)=and(OFLAG1(CANDL), not(ONBT)) 256 CALL RSPEAK(47) 257C !TELL OF WINDS. 258 CFLAG(CEVCND)=.FALSE. 259C !HALT CANDLE COUNTDOWN. 260 RETURN 261C 262C R14-- BOOM ROOM. BLOW HIM UP IF CARRYING FLAMING OBJECT. 263C 26414000 J=ODESC2(CANDL) 265C !ASSUME CANDLE. 266 IF((OADV(CANDL).EQ.WINNER).AND.QON(CANDL)) GO TO 14100 267 J=ODESC2(TORCH) 268C !ASSUME TORCH. 269 IF((OADV(TORCH).EQ.WINNER).AND.QON(TORCH)) GO TO 14100 270 J=ODESC2(MATCH) 271 IF((OADV(MATCH).EQ.WINNER).AND.QON(MATCH)) GO TO 14100 272 RETURN 273C !SAFE 274C 27514100 IF(PRSA.NE.TRNONW) GO TO 14200 276C !TURN ON? 277 CALL RSPSUB(294,J) 278C !BOOM 279C ! 280 CALL JIGSUP(44) 281 RETURN 282C 28314200 IF(PRSA.NE.WALKIW) RETURN 284C !WALKIN? 285 CALL RSPSUB(295,J) 286C !BOOM 287C ! 288 CALL JIGSUP(44) 289 RETURN 290C 291C R15-- NO-OBJS. SEE IF EMPTY HANDED, SCORE LIGHT SHAFT. 292C 29315000 EMPTHF=.TRUE. 294C !ASSUME TRUE. 295 DO 15100 I=1,OLNT 296C !SEE IF CARRYING. 297 IF(OADV(I).EQ.WINNER) EMPTHF=.FALSE. 29815100 CONTINUE 299C 300 IF((HERE.NE.BSHAF).OR.(.NOT.LIT(HERE))) RETURN 301 CALL SCRUPD(LTSHFT) 302C !SCORE LIGHT SHAFT. 303 LTSHFT=0 304C !NEVER AGAIN. 305 RETURN 306C RAPPL1, PAGE 6 307C 308C R16-- MACHINE ROOM. DESCRIBE MACHINE. 309C 31016000 IF(PRSA.NE.LOOKW) RETURN 311C !LOOK? 312 I=46 313C !ASSUME LID CLOSED. 314 IF(QOPEN(MACHI)) I=12 315C !IF OPEN, OPEN. 316 CALL RSPSUB(45,I) 317C !DESCRIBE. 318 RETURN 319C 320C R17-- BAT ROOM. UNLESS CARRYING GARLIC, FLY AWAY WITH ME... 321C 32217000 IF(PRSA.NE.LOOKW) GO TO 17500 323C !LOOK? 324 CALL RSPEAK(48) 325C !DESCRIBE ROOM. 326 IF(OADV(GARLI).EQ.WINNER) CALL RSPEAK(49) 327C !BAT HOLDS NOSE. 328 RETURN 329C 33017500 IF((PRSA.NE.WALKIW).OR.(OADV(GARLI).EQ.WINNER)) RETURN 331 CALL RSPEAK(50) 332C !TIME TO FLY, JACK. 333 F=MOVETO(BATDRP(RND(9)+1),WINNER) 334C !SELECT RANDOM DEST. 335 RAPPL1=.FALSE. 336C !INDICATE NEW DESC NEEDED. 337 RETURN 338C 339C R18-- DOME ROOM. STATE DEPENDS ON WHETHER ROPE TIED TO RAILING. 340C 34118000 IF(PRSA.NE.LOOKW) GO TO 18500 342C !LOOK? 343 CALL RSPEAK(51) 344C !DESCRIBE. 345 IF(DOMEF) CALL RSPEAK(52) 346C !IF ROPE, DESCRIBE. 347 RETURN 348C 34918500 IF(PRSA.EQ.LEAPW) CALL JIGSUP(53) 350C !DID HE JUMP??? 351 RETURN 352C 353C R19-- TORCH ROOM. ALSO DEPENDS ON WHETHER ROPE TIED TO RAILING. 354C 35519000 IF(PRSA.NE.LOOKW) RETURN 356C !LOOK? 357 CALL RSPEAK(54) 358C !DESCRIBE. 359 IF(DOMEF) CALL RSPEAK(55) 360C !IF ROPE, DESCRIBE. 361 RETURN 362C 363C R20-- CAROUSEL ROOM. SPIN HIM OR KILL HIM. 364C 36520000 IF(PRSA.NE.LOOKW) GO TO 20500 366C !LOOK? 367 CALL RSPEAK(56) 368C !DESCRIBE. 369 IF(.NOT.CAROFF) CALL RSPEAK(57) 370C !IF NOT FLIPPED, SPIN. 371 RETURN 372C 37320500 IF((PRSA.EQ.WALKIW).AND.CAROZF) CALL JIGSUP(58) 374C !WALKED IN. 375 RETURN 376C RAPPL1, PAGE 7 377C 378C R21-- LLD ROOM. HANDLE EXORCISE, DESCRIPTIONS. 379C 38021000 IF(PRSA.NE.LOOKW) GO TO 21500 381C !LOOK? 382 CALL RSPEAK(59) 383C !DESCRIBE. 384 IF(.NOT.LLDF) CALL RSPEAK(60) 385C !IF NOT VANISHED, GHOSTS. 386 RETURN 387C 38821500 IF(PRSA.NE.EXORCW) RETURN 389C !EXORCISE? 390 IF((OADV(BELL).EQ.WINNER).AND.(OADV(BOOK).EQ.WINNER).AND. 391& (OADV(CANDL).EQ.WINNER).AND.QON(CANDL)) GO TO 21600 392 CALL RSPEAK(62) 393C !NOT EQUIPPED. 394 RETURN 395C 39621600 IF(QHERE(GHOST,HERE)) GO TO 21700 397C !GHOST HERE? 398 CALL JIGSUP(61) 399C !NOPE, EXORCISE YOU. 400 RETURN 401C 40221700 CALL NEWSTA(GHOST,63,0,0,0) 403C !VANISH GHOST. 404 LLDF=.TRUE. 405C !OPEN GATE. 406 RETURN 407C 408C R22-- LLD2-ROOM. IS HIS HEAD ON A POLE? 409C 41022000 IF(PRSA.NE.LOOKW) RETURN 411C !LOOK? 412 CALL RSPEAK(64) 413C !DESCRIBE. 414 IF(ONPOLF) CALL RSPEAK(65) 415C !ON POLE? 416 RETURN 417C 418C R23-- DAM ROOM. DESCRIBE RESERVOIR, PANEL. 419C 42023000 IF(PRSA.NE.LOOKW) RETURN 421C !LOOK? 422 CALL RSPEAK(66) 423C !DESCRIBE. 424 I=67 425 IF(LWTIDF) I=68 426 CALL RSPEAK(I) 427C !DESCRIBE RESERVOIR. 428 CALL RSPEAK(69) 429C !DESCRIBE PANEL. 430 IF(GATEF) CALL RSPEAK(70) 431C !BUBBLE IS GLOWING. 432 RETURN 433C 434C R24-- TREE ROOM 435C 43624000 IF(PRSA.NE.LOOKW) RETURN 437C !LOOK? 438 CALL RSPEAK(660) 439C !DESCRIBE. 440 I=661 441C !SET FLAG FOR BELOW. 442 DO 24200 J=1,OLNT 443C !DESCRIBE OBJ IN FORE3. 444 IF(.NOT.QHERE(J,FORE3).OR.(J.EQ.FTREE)) GO TO 24200 445 CALL RSPEAK(I) 446C !SET STAGE, 447 I=0 448 CALL RSPSUB(502,ODESC2(J)) 449C !DESCRIBE. 45024200 CONTINUE 451 RETURN 452C RAPPL1, PAGE 8 453C 454C R25-- CYCLOPS-ROOM. DEPENDS ON CYCLOPS STATE, ASLEEP FLAG, MAGIC FLAG. 455C 45625000 IF(PRSA.NE.LOOKW) RETURN 457C !LOOK? 458 CALL RSPEAK(606) 459C !DESCRIBE. 460 I=607 461C !ASSUME BASIC STATE. 462 IF(RVCYC.GT.0) I=608 463C !>0? HUNGRY. 464 IF(RVCYC.LT.0) I=609 465C !<0? THIRSTY. 466 IF(CYCLOF) I=610 467C !ASLEEP? 468 IF(MAGICF) I=611 469C !GONE? 470 CALL RSPEAK(I) 471C !DESCRIBE. 472 IF(.NOT.CYCLOF .AND.(RVCYC.NE.0)) 473& CALL RSPEAK(193+IABS(RVCYC)) 474 RETURN 475C 476C R26-- BANK BOX ROOM. 477C 47826000 IF(PRSA.NE.WALKIW) RETURN 479C !SURPRISE HIM. 480 DO 26100 I=1,8,2 481C !SCOLRM DEPENDS ON 482 IF(FROMDR.EQ.SCOLDR(I)) SCOLRM=SCOLDR(I+1) 48326100 CONTINUE 484C !ENTRY DIRECTION. 485 RETURN 486C 487C R27-- TREASURE ROOM. 488C 48927000 IF((PRSA.NE.WALKIW).OR. .NOT.THFACT) 490& RETURN 491 IF(OROOM(THIEF).NE.HERE) 492& CALL NEWSTA(THIEF,82,HERE,0,0) 493 THFPOS=HERE 494C !RESET SEARCH PATTERN. 495 OFLAG2(THIEF)=or(OFLAG2(THIEF),FITEBT) 496 IF(OROOM(CHALI).EQ.HERE) 497& OFLAG1(CHALI)=and(OFLAG1(CHALI),not(TAKEBT)) 498C 499C VANISH EVERYTHING IN ROOM 500C 501 J=0 502C !ASSUME NOTHING TO VANISH. 503 DO 27200 I=1,OLNT 504 IF((I.EQ.CHALI).OR.(I.EQ.THIEF).OR..NOT.QHERE(I,HERE)) 505& GO TO 27200 506 J=83 507C !FLAG BYEBYE. 508 OFLAG1(I)=and(OFLAG1(I),not(VISIBT)) 50927200 CONTINUE 510 CALL RSPEAK(J) 511C !DESCRIBE. 512 RETURN 513C 514C R28-- CLIFF FUNCTION. SEE IF CARRYING INFLATED BOAT. 515C 51628000 DEFLAF=OADV(RBOAT).NE.WINNER 517C !TRUE IF NOT CARRYING. 518 RETURN 519C RAPPL1, PAGE 9 520C 521C R29-- RIVR4 ROOM. PLAY WITH BUOY. 522C 52329000 IF(.NOT.BUOYF.OR.(OADV(BUOY).NE.WINNER)) RETURN 524 CALL RSPEAK(84) 525C !GIVE HINT, 526 BUOYF=.FALSE. 527C !THEN DISABLE. 528 RETURN 529C 530C R30-- OVERFALLS. DOOM. 531C 53230000 IF(PRSA.NE.LOOKW) CALL JIGSUP(85) 533C !OVER YOU GO. 534 RETURN 535C 536C R31-- BEACH ROOM. DIG A HOLE. 537C 53831000 IF((PRSA.NE.DIGW).OR.(PRSO.NE.SHOVE)) RETURN 539 RVSND=RVSND+1 540C !INCREMENT DIG STATE. 541 GO TO (31100,31100,31100,31400,31500),RVSND 542C !PROCESS STATE. 543 CALL BUG(2,RVSND) 544C 54531100 CALL RSPEAK(85+RVSND) 546C !1-3... DISCOURAGE HIM. 547 RETURN 548C 54931400 I=89 550C !ASSUME DISCOVERY. 551 IF(and(OFLAG1(STATU),VISIBT).NE.0) I=88 552 CALL RSPEAK(I) 553 OFLAG1(STATU)=or(OFLAG1(STATU),VISIBT) 554 RETURN 555C 55631500 RVSND=0 557C !5... SAND COLLAPSES 558 CALL JIGSUP(90) 559C !AND SO DOES HE. 560 RETURN 561C 562C R32-- TCAVE ROOM. DIG A HOLE IN GUANO. 563C 56432000 IF((PRSA.NE.DIGW).OR.(PRSO.NE.SHOVE)) RETURN 565 I=91 566C !ASSUME NO GUANO. 567 IF(.NOT. QHERE(GUANO,HERE)) GO TO 32100 568C !IS IT HERE? 569 RVGUA=MIN0(4,RVGUA+1) 570C !YES, SET NEW STATE. 571 I=91+RVGUA 572C !GET NASTY REMARK. 57332100 CALL RSPEAK(I) 574C !DESCRIBE. 575 RETURN 576C 577C R33-- FALLS ROOM 578C 57933000 IF(PRSA.NE.LOOKW) RETURN 580C !LOOK? 581 CALL RSPEAK(96) 582C !DESCRIBE. 583 I=97 584C !ASSUME NO RAINBOW. 585 IF(RAINBF) I=98 586C !GOT ONE? 587 CALL RSPEAK(I) 588C !DESCRIBE. 589 RETURN 590C RAPPL1, PAGE 10 591C 592C R34-- LEDGE FUNCTION. LEDGE CAN COLLAPSE. 593C 59434000 IF(PRSA.NE.LOOKW) RETURN 595C !LOOK? 596 CALL RSPEAK(100) 597C !DESCRIBE. 598 I=102 599C !ASSUME SAFE ROOM OK. 600 IF(and(RFLAG(MSAFE),RMUNG).NE.0) I=101 601 CALL RSPEAK(I) 602C !DESCRIBE. 603 RETURN 604C 605C R35-- SAFE ROOM. STATE DEPENDS ON WHETHER SAFE BLOWN. 606C 60735000 IF(PRSA.NE.LOOKW) RETURN 608C !LOOK? 609 CALL RSPEAK(104) 610C !DESCRIBE. 611 I=105 612C !ASSUME OK. 613 IF(SAFEF) I=106 614C !BLOWN? 615 CALL RSPEAK(I) 616C !DESCRIBE. 617 RETURN 618C 619C R36-- MAGNET ROOM. DESCRIBE, CHECK FOR SPINDIZZY DOOM. 620C 62136000 IF(PRSA.NE.LOOKW) GO TO 36500 622C !LOOK? 623 CALL RSPEAK(107) 624C !DESCRIBE. 625 RETURN 626C 62736500 IF((PRSA.NE.WALKIW).OR. .NOT.CAROFF) RETURN 628C !WALKIN ON FLIPPED? 629 IF(CAROZF) GO TO 36600 630C !ZOOM? 631 CALL RSPEAK(108) 632C !NO, SPIN HIS COMPASS. 633 RETURN 634C 63536600 I=58 636C !SPIN HIS INSIDES. 637 IF(WINNER.NE.PLAYER) I=99 638C !SPIN ROBOT. 639 CALL JIGSUP(I) 640C !DEAD. 641 RETURN 642C 643C R37-- CAGE ROOM. IF SOLVED CAGE, MOVE TO OTHER CAGE ROOM. 644C 64537000 IF(CAGESF) F=MOVETO(CAGER,WINNER) 646C !IF SOLVED, MOVE. 647 RETURN 648C 649 END 650