C DUNGEON-- MAIN PROGRAM 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 PROGRAM DUNGEO C C DECLARATIONS C IMPLICIT INTEGER (A-Z) LOGICAL INIT C C PARSER OUTPUT C LOGICAL PRSWON COMMON /PRSVEC/ PRSA,PRSI,PRSO,PRSWON,PRSCON C C PARSER STATE C COMMON /ORPHS/ OFLAG,OACT,OSLOT,OPREP,ONAME COMMON /LAST/ LASTIT COMMON /PV/ ACT,OBJ1,OBJ2,PREP1,PREP2 COMMON /SYNTAX/ SYN(11) COMMON /SYNFLG/ SDIR,SIND,SSTD,SFLIP,SDRIV,SVMASK COMMON /OBJFLG/ VABIT,VRBIT,VTBIT,VCBIT,VEBIT,VFBIT,VPMASK C C GAME STATE C LOGICAL TELFLG COMMON /PLAY/ WINNER,HERE,TELFLG COMMON /STATE/ MOVES,DEATHS,RWSCOR,MXSCOR,MXLOAD, 1 LTSHFT,BLOC,MUNGRM,HS,EGSCOR,EGMXSC C C SCREEN OF LIGHT STATE C COMMON /SCREEN/ FROMDR,SCOLRM,SCOLAC COMMON /SCREEN/ SCOLDR(8),SCOLWL(12) C C PUZZLE ROOM STATE C COMMON /PUZZLE/ CPDR(16),CPWL(8),CPVEC(64) C C MESSAGE INDEX C COMMON /RMSG/ MLNT,RTEXT(1050) C C MISCELLANEOUS VARIABLES C LOGICAL*1 INBUF COMMON /INPUT/ INLNT,INBUF(78) COMMON /STAR/ MBASE,STRBIT COMMON /VERS/ VMAJ,VMIN,VEDIT COMMON /TIME/ PLTIME,SHOUR,SMIN,SSEC COMMON /BATS/ BATDRP(9) COMMON /CHAN/ INPCH,OUTCH,DBCH COMMON /DEBUG/ DBGFLG,PRSFLG,GDTFLG 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 EXITS C COMMON /EXITS/ XLNT,TRAVEL(900) C COMMON /CURXT/ XTYPE,XROOM1,XSTRNG,XACTIO,XOBJ EQUIVALENCE (XFLAG,XOBJ) C COMMON /XPARS/ XRMASK,XDMASK,XFMASK,XFSHFT,XASHFT, 1 XELNT(4),XNORM,XNO,XCOND,XDOOR,XLFLAG C COMMON /XSRCH/ XMIN,XMAX,XDOWN,XUP, 1 XNORTH,XSOUTH,XENTER,XEXIT,XEAST,XWEST 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 /OROOM2/ R2LNT,O2(20),R2(20) 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 COMMON /OINDEX/ GARLI,FOOD,GUNK,COAL,MACHI,DIAMO,TCASE,BOTTL COMMON /OINDEX/ WATER,ROPE,KNIFE,SWORD,LAMP,BLAMP,RUG COMMON /OINDEX/ LEAVE,TROLL,AXE COMMON /OINDEX/ RKNIF,KEYS,ICE,BAR COMMON /OINDEX/ COFFI,TORCH,TBASK,FBASK,IRBOX COMMON /OINDEX/ GHOST,TRUNK,BELL,BOOK,CANDL COMMON /OINDEX/ MATCH,TUBE,PUTTY,WRENC,SCREW,CYCLO,CHALI COMMON /OINDEX/ THIEF,STILL,WINDO,GRATE,DOOR COMMON /OINDEX/ HPOLE,LEAK,RBUTT,RAILI COMMON /OINDEX/ POT,STATU,IBOAT,DBOAT,PUMP,RBOAT COMMON /OINDEX/ STICK,BUOY,SHOVE,BALLO,RECEP,GUANO COMMON /OINDEX/ BROPE,HOOK1,HOOK2,SAFE,SSLOT,BRICK,FUSE COMMON /OINDEX/ GNOME,BLABE,DBALL,TOMB COMMON /OINDEX/ LCASE,CAGE,RCAGE,SPHER,SQBUT COMMON /OINDEX/ FLASK,POOL,SAFFR,BUCKE,ECAKE,ORICE,RDICE,BLICE COMMON /OINDEX/ ROBOT,FTREE,BILLS,PORTR,SCOL,ZGNOM COMMON /OINDEX/ EGG,BEGG,BAUBL,CANAR,BCANA COMMON /OINDEX/ YLWAL,RDWAL,PINDR,RBEAM COMMON /OINDEX/ ODOOR,QDOOR,CDOOR,NUM1,NUM8 COMMON /OINDEX/ WARNI,CSLIT,GCARD,STLDR COMMON /OINDEX/ HANDS,WALL,LUNGS,SAILO,AVIAT,TEETH COMMON /OINDEX/ ITOBJ,EVERY,VALUA,OPLAY,WNORT,GWATE,MASTER C C CLOCK INTERRUPTS C LOGICAL*1 CFLAG COMMON /CEVENT/ CLNT,CTICK(25),CACTIO(25),CFLAG(25) C COMMON /CINDEX/ CEVCUR,CEVMNT,CEVLNT,CEVMAT,CEVCND, 1 CEVBAL,CEVBRN,CEVFUS,CEVLED,CEVSAF,CEVVLG, 2 CEVGNO,CEVBUC,CEVSPH,CEVEGH, 3 CEVFOR,CEVSCL,CEVZGI,CEVZGO,CEVSTE, 5 CEVMRS,CEVPIN,CEVINQ,CEVFOL C C VILLAINS AND DEMONS C LOGICAL THFFLG,SWDACT,THFACT COMMON /HACK/ THFPOS,THFFLG,THFACT,SWDACT,SWDSTA COMMON /VILL/ VLNT,VILLNS(4),VPROB(4),VOPPS(4),VBEST(4),VMELEE(4) C C ADVENTURERS C COMMON /ADVS/ ALNT,AROOM(4),ASCORE(4),AVEHIC(4), 1 AOBJ(4),AACTIO(4),ASTREN(4),AFLAG(4) C COMMON /AFLAGS/ ASTAG C COMMON /AINDEX/ PLAYER,AROBOT,AMASTR C C VERBS C COMMON /VINDEX/ CINTW,DEADXW,FRSTQW,INXW,OUTXW COMMON /VINDEX/ WALKIW,FIGHTW,FOOW COMMON /VINDEX/ MELTW,READW,INFLAW,DEFLAW,ALARMW,EXORCW COMMON /VINDEX/ PLUGW,KICKW,WAVEW,RAISEW,LOWERW,RUBW COMMON /VINDEX/ PUSHW,UNTIEW,TIEW,TIEUPW,TURNW,BREATW COMMON /VINDEX/ KNOCKW,LOOKW,EXAMIW,SHAKEW,MOVEW,TRNONW,TRNOFW COMMON /VINDEX/ OPENW,CLOSEW,FINDW,WAITW,SPINW,BOARDW,UNBOAW,TAKEW COMMON /VINDEX/ INVENW,FILLW,EATW,DRINKW,BURNW COMMON /VINDEX/ MUNGW,KILLW,ATTACW,SWINGW COMMON /VINDEX/ WALKW,TELLW,PUTW,DROPW,GIVEW,POURW,THROWW COMMON /VINDEX/ DIGW,LEAPW,STAYW,FOLLOW COMMON /VINDEX/ HELLOW,LOOKIW,LOOKUW,PUMPW,WINDW COMMON /VINDEX/ CLMBW,CLMBUW,CLMBDW,TRNTOW 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 DUNGEON, PAGE 2 C C DATA STATEMENTS FOR CONSTANT ARRAYS C DATA VMAJ/2/,VMIN/6/,VEDIT/'A'/ C DATA SDIR/"40000/,SIND/"20000/,SSTD/"10000/, 1 SFLIP/"4000/,SDRIV/"2000/,SVMASK/"777/ DATA VABIT/"40000/,VRBIT/"20000/,VTBIT/"10000/, 1 VCBIT/"4000/,VEBIT/"2000/,VFBIT/"1000/,VPMASK/"777/ C DATA BATDRP/66,67,68,69,70,71,72,65,73/ C DATA SCOLDR/"2000,153,"12000,154,"6000,152,"16000,151/ DATA SCOLWL/151,207,"6000,152,208,"16000, 1 153,206,"12000,154,205,"2000/ C DATA HFACTR/500/ C DATA CPDR/"2000,-8,"4000,-7,"6000,1,"10000,9, 1 "12000,8,"14000,7,"16000,-1,"20000,-9/ DATA CPWL/205,-8,206,8,207,1,208,-1/ DATA CPVEC/1,1,1,1,1,1,1,1, 1 1,0,-1,0,0,-1,0,1, 2 1,-1,0,1,0,-2,0,1, 3 1,0,0,0,0,1,0,1, 4 1,-3,0,0,-1,-1,0,1, 5 1,0,0,-1,0,0,0,1, 6 1,1,1,0,0,0,1,1, 7 1,1,1,1,1,1,1,1/ C DATA CEVCUR/1/,CEVMNT/2/,CEVLNT/3/,CEVMAT/4/, 1 CEVCND/5/,CEVBAL/6/,CEVBRN/7/,CEVFUS/8/, 2 CEVLED/9/,CEVSAF/10/,CEVVLG/11/,CEVGNO/12/, 3 CEVBUC/13/,CEVSPH/14/,CEVEGH/15/, 4 CEVFOR/16/,CEVSCL/17/,CEVZGI/18/,CEVZGO/19/, 5 CEVSTE/20/,CEVMRS/21/,CEVPIN/22/,CEVINQ/23/, 6 CEVFOL/24/ C DATA XRMASK/"377/,XDMASK/"76000/,XFMASK/3/ DATA XFSHFT/256/,XASHFT/256/ DATA XNORM/1/,XNO/2/,XCOND/3/,XDOOR/4/ DATA XELNT/1,2,3,3/,XLFLAG/"100000/ DATA XMIN/"2000/,XMAX/"40000/,XUP/"22000/,XDOWN/"24000/ DATA XNORTH/"2000/,XSOUTH/"12000/,XENTER/"32000/,XEXIT/"34000/ DATA XEAST/"6000/,XWEST/"16000/ C DATA PLAYER/1/,AROBOT/2/,AMASTR/3/ DATA ASTAG/"100000/ C DATA RSEEN/"100000/,RLIGHT/"40000/,RLAND/"20000/ DATA RWATER/"10000/,RAIR/"4000/,RSACRD/"2000/,RFILL/"1000/ DATA RMUNG/"400/,RBUCK/"200/,RHOUSE/"100/,RNWALL/"40/,REND/"20/ C DATA WHOUS/2/,LROOM/8/,CELLA/9/ DATA MTROL/10/,MAZE1/11/ DATA MGRAT/25/,MAZ15/30/ DATA FORE1/31/,FORE3/33/,CLEAR/36/,RESER/40/ DATA STREA/42/,EGYPT/44/,ECHOR/49/ DATA TSHAF/61/ DATA BSHAF/76/,MMACH/77/,DOME/79/,MTORC/80/ DATA CAROU/83/ DATA RIDDL/91/,LLD2/94/,TEMP1/96/,TEMP2/97/,MAINT/100/ DATA MCYCL/101/,BLROO/102/,TREAS/103/,RIVR1/107/,RIVR2/108/ DATA RIVR3/109/ DATA RIVR4/112/,RIVR5/113/,FCHMP/114/,MBARR/119/,FALLS/120/ DATA MRAIN/121/,POG/122/,VLBOT/126/,VAIR1/127/,VAIR2/128/ DATA VAIR3/129/,VAIR4/130/ DATA LEDG2/131/,LEDG3/132/,LEDG4/133/,MSAFE/135/,CAGER/140/ DATA CAGED/141/,TWELL/142/,BWELL/143/,ALICE/144/,ALISM/145/ DATA ALITR/146/,MTREE/147/,BKENT/148/ DATA BKVW/151/,BKTWI/153/,BKVAU/154/,BKBOX/155/ DATA CRYPT/157/,TSTRS/158/,MRANT/159/ DATA MREYE/160/,MRA/161/,MRB/162/,MRC/163/,MRG/164/ DATA MRD/165/,FDOOR/166/,MRAE/167/ DATA MRCE/171/,MRCW/172/,MRGE/173/,MRGW/174/,MRDW/176/ DATA INMIR/177/,SCORR/179/ DATA NCORR/182/,PARAP/183/,CELL/184/,PCELL/185/,NCELL/186/ DATA CPANT/188/,CPOUT/189/ DATA CPUZZ/190/ C DATA CINTW/1/,DEADXW/2/,FRSTQW/3/,INXW/4/ DATA OUTXW/5/,WALKIW/6/,FIGHTW/7/,FOOW/8/ C DATA READW/100/,MELTW/101/ DATA INFLAW/102/,DEFLAW/103/,ALARMW/104/,EXORCW/105/ DATA PLUGW/106/,KICKW/107/,WAVEW/108/,RAISEW/109/,LOWERW/110/ DATA RUBW/111/,PUSHW/112/,UNTIEW/113/,TIEW/114/,TIEUPW/115/ DATA TURNW/116/,BREATW/117/,KNOCKW/118/,LOOKW/119/ DATA EXAMIW/120/,SHAKEW/121/,MOVEW/122/,TRNONW/123/,TRNOFW/124/ DATA OPENW/125/,CLOSEW/126/,FINDW/127/,WAITW/128/,SPINW/129/ DATA BOARDW/130/,UNBOAW/131/,TAKEW/132/,INVENW/133/ DATA FILLW/134/,EATW/135/,DRINKW/136/,BURNW/137/ DATA MUNGW/138/,KILLW/139/,ATTACW/141/ DATA SWINGW/140/,WALKW/142/,TELLW/143/,PUTW/144/ DATA DROPW/145/,GIVEW/146/,POURW/147/,THROWW/148/ C DATA DIGW/89/,LEAPW/91/,STAYW/73/,FOLLOW/85/ DATA HELLOW/151/,LOOKIW/152/,LOOKUW/153/,PUMPW/154/ DATA WINDW/155/,CLMBW/156/,CLMBUW/157/,CLMBDW/158/,TRNTOW/159/ C DATA VISIBT/"100000/,READBT/"40000/,TAKEBT/"20000/,DOORBT/"10000/, 1 TRANBT/"4000/,FOODBT/"2000/,NDSCBT/"1000/,DRNKBT/"400/, 2 CONTBT/"200/,LITEBT/"100/,VICTBT/"40/,BURNBT/"20/, 3 FLAMBT/"10/,TOOLBT/"4/,TURNBT/"2/,ONBT/"1/ C DATA FINDBT/"100000/,SLEPBT/"40000/,SCRDBT/"20000/,TIEBT/"10000/, 1 CLMBBT/"4000/,ACTRBT/"2000/,WEAPBT/"1000/,FITEBT/"400/, 2 VILLBT/"200/,STAGBT/"100/,TRYBT/"40/,NOCHBT/"20/, 3 OPENBT/"10/,TCHBT/"4/,VEHBT/"2/,SCHBT/"1/ C DATA GARLI/2/,FOOD/3/,GUNK/4/,COAL/5/,MACHI/7/,DIAMO/8/ DATA TCASE/9/,BOTTL/10/ DATA WATER/11/,ROPE/12/,KNIFE/13/,SWORD/14/,LAMP/15/,BLAMP/16/ DATA RUG/17/,LEAVE/18/,TROLL/19/,AXE/20/ DATA RKNIF/21/,KEYS/23/,BAR/26/,ICE/30/ DATA COFFI/33/,TORCH/34/,TBASK/35/,FBASK/36/,IRBOX/39/ DATA GHOST/42/,TRUNK/45/,BELL/46/,BOOK/47/,CANDL/48/ DATA MATCH/51/,TUBE/54/,PUTTY/55/,WRENC/56/,SCREW/57/ DATA CYCLO/58/,CHALI/59/ DATA THIEF/61/,STILL/62/,WINDO/63/,GRATE/65/,DOOR/66/ DATA HPOLE/71/,RBUTT/79/,LEAK/78/,RAILI/75/ DATA POT/85/,STATU/86/,IBOAT/87/,DBOAT/88/,PUMP/89/,RBOAT/90/ DATA STICK/92/,BUOY/94/,SHOVE/96/,GUANO/97/,BALLO/98/,RECEP/99/ DATA BROPE/101/,HOOK1/102/,HOOK2/103/,SAFE/105/,SSLOT/107/ DATA BRICK/109/,FUSE/110/ DATA GNOME/111/,BLABE/112/,DBALL/113/,TOMB/119/ DATA LCASE/123/,CAGE/124/,RCAGE/125/,SPHER/126/,SQBUT/127/ DATA FLASK/132/,POOL/133/,SAFFR/134/,BUCKE/137/,ORICE/139/ DATA ECAKE/138/,RDICE/140/ DATA BLICE/141/,ROBOT/142/,FTREE/145/,BILLS/148/,PORTR/149/ DATA SCOL/151/,ZGNOM/152/,EGG/154/,BEGG/155/,BAUBL/156/ DATA CANAR/157/,BCANA/158/,YLWAL/159/ DATA RDWAL/161/,PINDR/164/ DATA RBEAM/171/,ODOOR/172/,QDOOR/173/,CDOOR/175/ DATA NUM1/178/ DATA NUM8/185/,WARNI/186/,CSLIT/187/,GCARD/188/,STLDR/189/ DATA ITOBJ/192/,OPLAY/193/,EVERY/194/ DATA VALUA/195/,SAILO/196/,TEETH/197/,WALL/198/ DATA HANDS/200/,LUNGS/201/,AVIAT/202/ DATA WNORT/205/,GWATE/209/,MASTER/215/ C DUNGEON, PAGE 3 C C 1) INITIALIZE DATA STRUCTURES C 2) PLAY GAME C IF(INIT(X)) CALL GAME !IF INIT, PLAY GAME. CALL EXIT !DONE END