Home » Archimedes archive » Acorn User » AU 1998-08.adf » Freeware » PD/IntFiction/DavidRPG2/!DavidRPG2/Interp

PD/IntFiction/DavidRPG2/!DavidRPG2/Interp

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1998-08.adf » Freeware
Filename: PD/IntFiction/DavidRPG2/!DavidRPG2/Interp
Read OK:
File size: 929D bytes
Load address: 0000
Exec address: 0000
File contents
   10REM Byte-code Interpreter for DavidRPG2
   20REM (c) David Spence, 1998.
   30
   40ver$="2.58"
   50
   60ONERROR PROCERROR
   70
   80LIBRARY "<DavidRPG2$Dir>.Library"
   90LIBRARY "<DavidRPG2$Dir>.<DavidRPG2$Display>"
  100PROCdisplay_initstart("Interpreter")
  110
  120PROCdisplay_special("Byte-code Interpreter for !DavidRPG2 version "+ver$)
  130PROCdisplay_special("David Spence, 1998.")
  140REMPROCdisplay_special("The error messages reported will be quite vague, sorry!")
  150REMPROCdisplay_special("This is only a test version of the intepreter.")
  160REMPROCdisplay_special("Don't be suprised if an error in a file crashes this")
  170REMPROCdisplay_special("interpreter!")
  180PROCdisplay_special(" ")
  190
  200err=0
  210ingame%=FALSE
  220
  230O=OPENOUT(FNdisplay_tempdir+".temp")
  240IF O=0 THEN PROCreport("Can't find !DavidRPG2 - has it been seen by the filer?"):END
  250CLOSE#O
  260
  270REM   Loading:
  280REM   ========
  290REM
  300REM Strings:    count strings then put into arrary the right size for all the strings to fit.
  310REM Variables:  make and array for the start values and one for the current values containing the
  320REM              start values.
  330REM Rooms:      put in an array the right size for the data (count first). Put all lists into a
  340REM              separate block of memory, the right size (not an array).
  350REM Objects:    See rooms.
  360REM People:     See rooms.
  370REM Player:     Same as rooms but with a single player.
  380REM Code:       Array with pointer to memory blocks with the code in.
  390
  400REM****************************
  410REM NOTE VERY IMPORTANT
  420REM person0 and vars0-3 are defined in this program
  430
  440PROCdisplay_special("Loading...")
  450
  460REMPROCdisplay_special("Strings...")
  470
  480O=OPENIN(FNdisplay_tempdir+".Strings")
  490line=1
  500REPEAT
  510IF BGET#O=10 THEN line+=1
  520UNTIL EOF#O
  530PTR#O=0
  540DIM strings$(line)
  550FOR I%=0TOline-1
  560strings$(I%)=GET$#O
  570NEXT
  580CLOSE#O
  590
  600REMPROCdisplay_special("Variables...")
  610
  620O=OPENIN(FNdisplay_tempdir+".Vars")
  630E=-4
  640IF EXT#O>0 THEN
  650E=INT((EXT#O)/10)
  660IF E<>((EXT#O)/10) THEN PROCreport("Error in variable file."):CLOSE#O:END
  670DIM start_vars(E+3):REM 4 vars are defined in this prog.
  680FOR I%=1TOE
  690INPUT#O,T%
  700INPUT#O,U%
  710start_vars(T%)=U%
  720NEXT
  730ENDIF
  740CLOSE#O
  750IF E=-4 THEN E=0:DIM start_vars(E+3)
  760DIM cur_vars(E+3)
  770cur_vars()=start_vars()
  780
  790REMPROCdisplay_special("Rooms...")
  800
  810O=OPENIN(FNdisplay_tempdir+".Rooms")
  820INPUT#O,rooms%
  830INPUT#O,start_room%
  840IF rooms%=0 THEN PROCreport("No Rooms."):CLOSEE#O:END
  850rooms%-=1
  860DIM rooms%(rooms%,17,1)
  870FOR L%=0 TO rooms%-2
  880INPUT#O,I%
  890FOR J%=0 TO 14       :REM these donot need blocks
  900INPUT#O,rooms%(I%,J%,0)
  910INPUT#O,rooms%(I%,J%,1)
  920NEXT
  930INPUT#O,in1%
  940INPUT#O,in2%
  950IF in1%=0 AND in2%=0THEN
  960rooms%(I%,15,0)=0
  970rooms%(I%,15,1)=0
  980ELSE
  990g=(PTR#O)-10
 1000c=1
 1010WHILE in1%<>0 OR in2%<>0
 1020INPUT#O,in1%
 1030INPUT#O,in2%
 1040c+=1
 1050ENDWHILE
 1060DIM temp 4*2*c
 1070PTR#O=g
 1080FOR J%=0TO c-1
 1090INPUT#O,in1%
 1100INPUT#O,in2%
 1110temp!((4*J%*2)+0)=in1%
 1120temp!((4*J%*2)+4)=in2%
 1130NEXT
 1140IF in1%<>0 OR in2%<>0 THEN STOP
 1150rooms%(I%,15,1)=temp
 1160ENDIF
 1170INPUT#O,in1%
 1180INPUT#O,in2%
 1190IF in1%=0 AND in2%=0THEN
 1200rooms%(I%,16,0)=0
 1210rooms%(I%,16,1)=0
 1220ELSE
 1230g=(PTR#O)-10
 1240c=1
 1250WHILE in1%<>0 OR in2%<>0
 1260INPUT#O,in1%
 1270INPUT#O,in2%
 1280c+=1
 1290ENDWHILE
 1300DIM temp 4*2*c
 1310PTR#O=g
 1320FOR J%=0TO c-1
 1330INPUT#O,in1%
 1340INPUT#O,in2%
 1350temp!((4*J%*2)+0)=in1%
 1360temp!((4*J%*2)+4)=in2%
 1370NEXT
 1380IF in1%<>0 OR in2%<>0 THEN STOP
 1390rooms%(I%,16,1)=temp
 1400ENDIF
 1410INPUT#O,in1%
 1420INPUT#O,in2%
 1430INPUT#O,in3%
 1440INPUT#O,in4%
 1450IF in1%=0 AND in2%=0 AND in3%=0 AND in4%=0THEN
 1460rooms%(I%,17,0)=0
 1470rooms%(I%,17,1)=0
 1480ELSE
 1490g=(PTR#O)-20
 1500c=1
 1510WHILE in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0
 1520INPUT#O,in1%
 1530INPUT#O,in2%
 1540INPUT#O,in3%
 1550INPUT#O,in4%
 1560c+=1
 1570ENDWHILE
 1580DIM temp 4*4*c
 1590PTR#O=g
 1600FOR J%=0TO c-1
 1610INPUT#O,in1%
 1620INPUT#O,in2%
 1630INPUT#O,in3%
 1640INPUT#O,in4%
 1650temp!((4*J%*4)+0)=in1%
 1660temp!((4*J%*4)+4)=in2%
 1670temp!((4*J%*4)+8)=in3%
 1680temp!((4*J%*4)+12)=in4%
 1690NEXT
 1700IF in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0THEN STOP
 1710rooms%(I%,17,1)=temp
 1720ENDIF
 1730NEXT
 1740CLOSE#O
 1750
 1760REMPROCdisplay_special("Objects...")
 1770
 1780O=OPENIN(FNdisplay_tempdir+".Object")
 1790INPUT#O,objects%
 1800objects%-=1
 1810DIM objects%(objects%,8,1)
 1820FOR L%=0 TO objects%
 1830INPUT#O,I%
 1840FOR J%=0 TO 6       :REM these donot need blocks
 1850INPUT#O,objects%(I%,J%,0)
 1860CASE J% OF
 1870WHEN 3,4,5:
 1880OTHERWISE INPUT#O,objects%(I%,J%,1)
 1890ENDCASE
 1900NEXT
 1910INPUT#O,in1%
 1920INPUT#O,in2%
 1930INPUT#O,in3%
 1940INPUT#O,in4%
 1950IF in1%=0 AND in2%=0 AND in3%=0 AND in4%=0THEN
 1960objects%(I%,7,0)=0
 1970objects%(I%,7,1)=0
 1980ELSE
 1990g=(PTR#O)-20
 2000c=1
 2010WHILE in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0
 2020INPUT#O,in1%
 2030INPUT#O,in2%
 2040INPUT#O,in3%
 2050INPUT#O,in4%
 2060c+=1
 2070ENDWHILE
 2080DIM temp 4*4*c
 2090PTR#O=g
 2100FOR J%=0TO c-1
 2110INPUT#O,in1%
 2120INPUT#O,in2%
 2130INPUT#O,in3%
 2140INPUT#O,in4%
 2150temp!((4*J%*4)+0)=in1%
 2160temp!((4*J%*4)+4)=in2%
 2170temp!((4*J%*4)+8)=in3%
 2180temp!((4*J%*4)+12)=in4%
 2190NEXT
 2200IF in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0THEN STOP
 2210objects%(I%,7,1)=temp
 2220ENDIF
 2230INPUT#O,in1%
 2240INPUT#O,in2%
 2250INPUT#O,in3%
 2260INPUT#O,in4%
 2270IF in1%=0 AND in2%=0 AND in3%=0 AND in4%=0THEN
 2280objects%(I%,8,0)=0
 2290objects%(I%,8,1)=0
 2300ELSE
 2310g=(PTR#O)-20
 2320c=1
 2330WHILE in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0
 2340INPUT#O,in1%
 2350INPUT#O,in2%
 2360INPUT#O,in3%
 2370INPUT#O,in4%
 2380c+=1
 2390ENDWHILE
 2400DIM temp 4*4*c
 2410PTR#O=g
 2420FOR J%=0TO c-1
 2430INPUT#O,in1%
 2440INPUT#O,in2%
 2450INPUT#O,in3%
 2460INPUT#O,in4%
 2470temp!((4*J%*4)+0)=in1%
 2480temp!((4*J%*4)+4)=in2%
 2490temp!((4*J%*4)+8)=in3%
 2500temp!((4*J%*4)+12)=in4%
 2510NEXT
 2520IF in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0THEN STOP
 2530objects%(I%,8,1)=temp
 2540ENDIF
 2550NEXT
 2560CLOSE#O
 2570
 2580REMPROCdisplay_special("People...")
 2590
 2600O=OPENIN(FNdisplay_tempdir+".People")
 2610INPUT#O,people%
 2620people%-=1
 2630DIM people%(people%,11,1)
 2640FOR L%=0 TO people%
 2650INPUT#O,I%
 2660FOR J%=0 TO 8       :REM these donot need blocks
 2670INPUT#O,people%(I%,J%,0)
 2680CASE J% OF
 2690WHEN 3,4,5:
 2700OTHERWISE INPUT#O,people%(I%,J%,1)
 2710ENDCASE
 2720NEXT
 2730
 2740INPUT#O,in1%
 2750INPUT#O,in2%
 2760IF in1%=0 AND in2%=0THEN
 2770people%(I%,9,0)=0
 2780people%(I%,9,1)=0
 2790ELSE
 2800g=(PTR#O)-10
 2810c=1
 2820WHILE in1%<>0 OR in2%<>0
 2830INPUT#O,in1%
 2840INPUT#O,in2%
 2850c+=1
 2860ENDWHILE
 2870DIM temp 4*2*c
 2880PTR#O=g
 2890FOR J%=0TO c-1
 2900INPUT#O,in1%
 2910INPUT#O,in2%
 2920temp!((4*J%*2)+0)=in1%
 2930temp!((4*J%*2)+4)=in2%
 2940NEXT
 2950IF in1%<>0 OR in2%<>0 THEN STOP
 2960people%(I%,9,1)=temp
 2970ENDIF
 2980INPUT#O,in1%
 2990INPUT#O,in2%
 3000INPUT#O,in3%
 3010INPUT#O,in4%
 3020IF in1%=0 AND in2%=0 AND in3%=0 AND in4%=0THEN
 3030people%(I%,10,0)=0
 3040people%(I%,10,1)=0
 3050ELSE
 3060g=(PTR#O)-20
 3070c=1
 3080WHILE in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0
 3090INPUT#O,in1%
 3100INPUT#O,in2%
 3110INPUT#O,in3%
 3120INPUT#O,in4%
 3130c+=1
 3140ENDWHILE
 3150DIM temp 4*4*c
 3160PTR#O=g
 3170FOR J%=0TO c-1
 3180INPUT#O,in1%
 3190INPUT#O,in2%
 3200INPUT#O,in3%
 3210INPUT#O,in4%
 3220temp!((4*J%*4)+0)=in1%
 3230temp!((4*J%*4)+4)=in2%
 3240temp!((4*J%*4)+8)=in3%
 3250temp!((4*J%*4)+12)=in4%
 3260NEXT
 3270IF in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0THEN STOP
 3280people%(I%,10,1)=temp
 3290ENDIF
 3300INPUT#O,in1%
 3310INPUT#O,in2%
 3320INPUT#O,in3%
 3330INPUT#O,in4%
 3340IF in1%=0 AND in2%=0 AND in3%=0 AND in4%=0THEN
 3350people%(I%,11,0)=0
 3360people%(I%,11,1)=0
 3370ELSE
 3380g=(PTR#O)-20
 3390c=1
 3400WHILE in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0
 3410INPUT#O,in1%
 3420INPUT#O,in2%
 3430INPUT#O,in3%
 3440INPUT#O,in4%
 3450c+=1
 3460ENDWHILE
 3470DIM temp 4*4*c
 3480PTR#O=g
 3490FOR J%=0TO c-1
 3500INPUT#O,in1%
 3510INPUT#O,in2%
 3520INPUT#O,in3%
 3530INPUT#O,in4%
 3540temp!((4*J%*4)+0)=in1%
 3550temp!((4*J%*4)+4)=in2%
 3560temp!((4*J%*4)+8)=in3%
 3570temp!((4*J%*4)+12)=in4%
 3580NEXT
 3590IF in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0THEN STOP
 3600people%(I%,11,1)=temp
 3610ENDIF
 3620NEXT
 3630CLOSE#O
 3640
 3650REMPROCdisplay_special("Player...")
 3660
 3670O=OPENIN(FNdisplay_tempdir+".Player")
 3680DIM player%(7,1)
 3690FOR J%=0 TO 4       :REM these donot need blocks
 3700INPUT#O,player%(J%,0)
 3710CASE J% OF
 3720WHEN 3:
 3730OTHERWISE INPUT#O,player%(J%,1)
 3740ENDCASE
 3750NEXT
 3760INPUT#O,in1%
 3770INPUT#O,in2%
 3780IF in1%=0 AND in2%=0THEN
 3790player%(5,0)=0
 3800player%(5,1)=0
 3810ELSE
 3820g=(PTR#O)-10
 3830c=1
 3840WHILE in1%<>0 OR in2%<>0
 3850INPUT#O,in1%
 3860INPUT#O,in2%
 3870c+=1
 3880ENDWHILE
 3890DIM temp 4*2*c
 3900PTR#O=g
 3910FOR J%=0TO c-1
 3920INPUT#O,in1%
 3930INPUT#O,in2%
 3940temp!((4*J%*2)+0)=in1%
 3950temp!((4*J%*2)+4)=in2%
 3960NEXT
 3970IF in1%<>0 OR in2%<>0 THEN STOP
 3980player%(5,1)=temp
 3990ENDIF
 4000INPUT#O,in1%
 4010INPUT#O,in2%
 4020INPUT#O,in3%
 4030INPUT#O,in4%
 4040IF in1%=0 AND in2%=0 AND in3%=0 AND in4%=0THEN
 4050player%(6,0)=0
 4060player%(6,1)=0
 4070ELSE
 4080g=(PTR#O)-20
 4090c=1
 4100WHILE in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0
 4110INPUT#O,in1%
 4120INPUT#O,in2%
 4130INPUT#O,in3%
 4140INPUT#O,in4%
 4150c+=1
 4160ENDWHILE
 4170DIM temp 4*4*c
 4180PTR#O=g
 4190FOR J%=0TO c-1
 4200INPUT#O,in1%
 4210INPUT#O,in2%
 4220INPUT#O,in3%
 4230INPUT#O,in4%
 4240temp!((4*J%*4)+0)=in1%
 4250temp!((4*J%*4)+4)=in2%
 4260temp!((4*J%*4)+8)=in3%
 4270temp!((4*J%*4)+12)=in4%
 4280NEXT
 4290IF in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0THEN STOP
 4300player%(6,1)=temp
 4310ENDIF
 4320INPUT#O,in1%
 4330INPUT#O,in2%
 4340INPUT#O,in3%
 4350INPUT#O,in4%
 4360IF in1%=0 AND in2%=0 AND in3%=0 AND in4%=0THEN
 4370player%(7,0)=0
 4380player%(7,1)=0
 4390ELSE
 4400g=(PTR#O)-20
 4410c=1
 4420WHILE in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0
 4430INPUT#O,in1%
 4440INPUT#O,in2%
 4450INPUT#O,in3%
 4460INPUT#O,in4%
 4470c+=1
 4480ENDWHILE
 4490DIM temp 4*4*c
 4500PTR#O=g
 4510FOR J%=0TO c-1
 4520INPUT#O,in1%
 4530INPUT#O,in2%
 4540INPUT#O,in3%
 4550INPUT#O,in4%
 4560temp!((4*J%*4)+0)=in1%
 4570temp!((4*J%*4)+4)=in2%
 4580temp!((4*J%*4)+8)=in3%
 4590temp!((4*J%*4)+12)=in4%
 4600NEXT
 4610IF in1%<>0 OR in2%<>0 OR in3%<>0 OR in4%<>0THEN STOP
 4620player%(7,1)=temp
 4630ENDIF
 4640CLOSE#O
 4650
 4660REMPROCdisplay_special("Code...")
 4670
 4680O=OPENIN(FNdisplay_tempdir+".Code")
 4690IF O=0 OR EXT#O=0 THEN
 4700IF O<>0 THENCLOSE#O
 4710DIM code%(1)
 4720ELSE
 4730code%=0
 4740REPEAT
 4750end=FALSE
 4760REPEAT
 4770INPUT#O,ins%
 4780CASE ins% OF
 4790WHEN 0:end=TRUE
 4800WHEN 5,10:
 4810WHEN 1,2,6:INPUT#O,u%:INPUT#O,u%
 4820WHEN 3,4,8,7:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%
 4830WHEN 9:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%
 4840ENDCASE
 4850UNTIL end
 4860code%+=1
 4870UNTIL EOF#O
 4880PTR#O=0
 4890DIM code%(code%)
 4900FOR o%=1 TO code%
 4910t=PTR#O
 4920end=FALSE
 4930word=0
 4940REPEAT
 4950INPUT#O,ins%:word+=1
 4960CASE ins% OF
 4970WHEN 0:end=TRUE
 4980WHEN 5,10:
 4990WHEN 1,2,6:INPUT#O,u%:INPUT#O,u%:word+=2
 5000WHEN 3,4,8,7:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:word+=4
 5010WHEN 9:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:INPUT#O,u%:word+=6
 5020ENDCASE
 5030UNTIL end
 5040DIM temp (word+1)*4
 5050PTR#O=t
 5060FOR I%=0TO word-1
 5070INPUT#O,j%
 5080temp!(I%*4)=j%
 5090NEXT
 5100IF j%<>0 THEN STOP
 5110code%(o%)=temp
 5120NEXT
 5130CLOSE#O
 5140ENDIF
 5150
 5160DIM object_place(objects%,1)
 5170DIM people_place(people%,1)
 5180DIM temp(256)
 5190
 5200PROCdisplay_special("DONE.")
 5210PROCdisplay_initend
 5220REPEAT
 5230PROCdisplay_poll
 5240UNTIL 0
 5250END
 5260
 5270DEFPROCrestart_interp
 5280PROCJump("go")
 5290ENDPROC
 5300
 5310DEFFNgo
 5320REM restart interpreter
 5330ingame%=TRUE
 5340display$=""
 5350disps=0
 5360PROCdisplay_special(" ")
 5370PROCdisplay_special("New game Started...")
 5380FOR I%=0TO2
 5390PROCdisplay_special(" ")
 5400PROCdisplay_poll
 5410NEXT
 5420PROCstart_screen
 5430PROCdisplay(" ")
 5440PROCdisplay_poll
 5450cur_vars()=start_vars()
 5460c_room%=start_room%
 5470o_room=-1
 5480PROCrepos_objects
 5490PROCrepos_people
 5500PROCcallcode(rooms%(c_room%,13,1),1,c_room%)
 5510FOR I%=0 TO people%
 5520IF people_place(I%,0)=1 AND people_place(I%,1)=c_room% THEN PROCcallcode(people%(I%,7,1),3,I%)
 5530NEXT
 5540REPEAT
 5550IF c_room%<>o_room THEN PROCshow ELSE PROCdisplay(" ")
 5560o_room=c_room%
 5570PROCdisplay_poll
 5580curline$=FNinput
 5590PROCdo
 5600UNTIL 0
 5610=0
 5620
 5630DEFPROCstart_screen
 5640PROCdisplay("You are "+FNgetstring(player%(0,1))+".")
 5650fs=player%(1,1)
 5660ls=player%(2,1)
 5670FOR y%=fs TO ls
 5680PROCdisplay(FNgetstring(y%))
 5690NEXT
 5700PROCdisplay(" ")
 5710PROCdisplay("Press return to continue.")
 5720y$=FNinput
 5730PROCdisplay(" ")
 5740PROCdisplay(" ")
 5750ENDPROC
 5760
 5770DEFPROCdo
 5780REM **************first directions....
 5790IF FNfirst(curline$)="GO" THEN curline$=FNnotfirst(curline$)
 5800CASE FNfirst(curline$) OF
 5810WHEN "U","UP":
 5820IF U= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(7)
 5830WHEN "D","DOWN":
 5840IF D= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(8)
 5850WHEN "N","NORTH":
 5860IF N= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(6)
 5870WHEN "S","SOUTH":
 5880IF S= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(5)
 5890WHEN "E","EAST":
 5900IF E= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(3)
 5910WHEN "W","WEST":
 5920IF W= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(4)
 5930WHEN "NW","NORTHWEST":
 5940IF NW= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(12)
 5950WHEN "SW","SOUTHWEST":
 5960IF SW= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(10)
 5970WHEN "NE","NORTHEAST":
 5980IF NE= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(11)
 5990WHEN "SE","SOUTHEAST":
 6000IF SE= FALSE THEN PROCreport("There is no exit in that direction.") ELSE PROCd(9)
 6010REM ************....then get, put, talk,....
 6020WHEN "GET":PROCget(FNnotfirst(curline$))
 6030WHEN "PICK":IF FNfirst(FNnotfirst(curline$))="UP" THEN
 6040PROCget(FNnotfirst(FNnotfirst(curline$)))
 6050ELSE
 6060PROCdisplay("I don't Understand.")
 6070ENDIF
 6080WHEN "PUT":IF FNfirst(FNnotfirst(curline$))="DOWN" THEN
 6090PROCdrop(FNnotfirst(FNnotfirst(curline$)))
 6100ELSE
 6110PROCdisplay("I don't Understand.")
 6120ENDIF
 6130WHEN "DROP":PROCdrop(FNnotfirst(curline$))
 6140WHEN "SAY":PROCtalk(FNnotfirst(curline$))
 6150WHEN "INV","INVENTORY":PROCinv
 6160WHEN "LOOK":PROClook(FNnotfirst(curline$))
 6170WHEN "DESCRIBE":PROClook(FNnotfirst(curline$))
 6180WHEN "HELP","?":PROChelp
 6190REM ************....finally any of the form "<verb> <object|person>", "<verb> <object|person> with|using <object>", "Use <object> to <verb> <object|person>" and "<verb>"
 6200OTHERWISE:
 6210IF INSTR(curline$," WITH ")<>0 OR INSTR(curline$," USING ")<>0 THEN
 6220PROCtype_b_verb
 6230ELSE
 6240IF INSTR(curline$," TO ")<>0 THEN
 6250PROCtype_c_verb
 6260ELSE
 6270IF FNnotfirst(curline$)="" THEN PROCtype_d_verb ELSE PROCtype_a_verb
 6280ENDIF
 6290ENDIF
 6300ENDCASE
 6310ENDPROC
 6320
 6330DEFPROCtype_d_verb
 6340REM call room only.
 6350l=FALSE
 6360li$=FNstrip(FNstrip_end(curline$))
 6370IF rooms%(c_room%,17,1)<>0 THEN
 6380 bo=rooms%(c_room%,17,1)
 6390 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 6400  fl$=FNgetstring(bo!4)
 6410  IF FNkeyword_look(fl$,li$)=TRUE THEN PROCcallcode(bo!12,1,c_room%):l=TRUE
 6420  bo+=16
 6430 ENDWHILE
 6440ENDIF
 6450IF player%(7,1)<>0 THEN
 6460 bo=player%(7,1)
 6470 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 6480  fl$=FNgetstring(bo!4)
 6490  IF FNkeyword_look(fl$,li$)=TRUE THEN PROCcallcode(bo!12,3,0):l=TRUE
 6500  bo+=16
 6510 ENDWHILE
 6520ENDIF
 6530IF l=FALSE THEN PROCdisplay("You can't "+li$+".")
 6540ENDPROC
 6550
 6560DEFPROCtype_a_verb
 6570REM call room, object, person|object|player
 6580REM user has to have an object which can <verb> or the player must be able to <verb> and there
 6590REM must be an object|person|player in the room with the name.
 6600REM this is big.
 6610REM right first extract data...
 6620verb$= FNstrip(FNstrip_end(FNfirst(curline$)))
 6630obpers$= FNstrip(FNstrip_end(FNnotfirst(curline$)))
 6640IF FNfirst(obpers$)="THE" THEN obpers$=FNnotfirst(obpers$)
 6650REM check we can do this...
 6660verb=0:obpers=0
 6670IF player%(7,1)<>0 THEN
 6680 bo=player%(7,1)
 6690 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 6700  fl$=FNgetstring(bo!4)
 6710  IF FNkeyword_look(fl$,verb$)=TRUE THEN verb=1
 6720  bo+=16
 6730 ENDWHILE
 6740ENDIF
 6750FOR Io%=0 TO objects%
 6760 IF object_place(Io%,0)=3 AND object_place(Io%,1)=0 THEN
 6770  IF objects%(Io%,8,1)<>0 THEN
 6780   bo=objects%(Io%,8,1)
 6790   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 6800    fl$=FNgetstring(bo!4)
 6810    IF FNkeyword_look(fl$,verb$)=TRUE THEN verb=1
 6820    bo+=16
 6830   ENDWHILE
 6840  ENDIF
 6850 ENDIF
 6860NEXT
 6870FOR Io%=0TO people%
 6880IF people_place(Io%,1)=c_room% AND FNtoupper(FNgetstring(people%(Io%,0,1)))=obpers$ THENobpers=1
 6890NEXT
 6900FOR Io%=0TO objects%
 6910IF object_place(Io%,1)=c_room% AND object_place(Io%,0)=1 AND FNtoupper(FNgetstring(objects%(Io%,0,1)))=obpers$ THENobpers=1
 6920NEXT
 6930IF obpers=0 THEN
 6940 IF obpers$="ME" OR obpers$="MYSELF" obpers$=FNtoupper(FNgetstring(player%(0,1))) TEHN obpers=2
 6950ENDIF
 6960IF verb=0 OR obpers=0 THEN
 6970IF verb=0 THEN PROCdisplay("You can't "+verb$+".")
 6980IF obpers=0 THEN PROCdisplay("There's not a "+obpers$+".")
 6990ELSE
 7000REM call room
 7010IF rooms%(c_room%,17,1)<>0 THEN
 7020 bo=rooms%(c_room%,17,1)
 7030 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 7040  fl$=FNgetstring(bo!4)
 7050  IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,1,c_room%)
 7060  bo+=16
 7070 ENDWHILE
 7080ENDIF
 7090REM call objects and player
 7100IF player%(7,1)<>0 THEN
 7110 bo=player%(7,1)
 7120 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 7130  fl$=FNgetstring(bo!4)
 7140  IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,3,0):
 7150  bo+=16
 7160 ENDWHILE
 7170ENDIF
 7180FOR Io%=0 TO objects%
 7190 IF object_place(Io%,0)=3 AND object_place(Io%,1)=0 THEN
 7200  IF objects%(Io%,8,1)<>0 THEN
 7210   bo=objects%(Io%,8,1)
 7220   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 7230    fl$=FNgetstring(bo!4)
 7240    IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,2,Io%)
 7250    bo+=16
 7260   ENDWHILE
 7270  ENDIF
 7280 ENDIF
 7290NEXT
 7300REM call the thing the act is bestowed upon
 7310FOR Io%=0TO people%
 7320IF people_place(Io%,1)=c_room% AND FNtoupper(FNgetstring(people%(Io%,0,1)))=obpers$ THEN
 7330  IF people%(Io%,10,1)<>0 THEN
 7340   bo=people%(Io%,10,1)
 7350   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 7360    fl$=FNgetstring(bo!4)
 7370    IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,3,Io%)
 7380    bo+=16
 7390   ENDWHILE
 7400  ENDIF
 7410ENDIF
 7420NEXT
 7430FOR Io%=0TO objects%
 7440IF object_place(Io%,1)=c_room% AND object_place(Io%,0)=1 AND FNtoupper(FNgetstring(objects%(Io%,0,1)))=obpers$ THEN
 7450  IF objects%(Io%,7,1)<>0 THEN
 7460   bo=objects%(Io%,7,1)
 7470   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 7480    fl$=FNgetstring(bo!4)
 7490    IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,2,Io%)
 7500    bo+=16
 7510   ENDWHILE
 7520  ENDIF
 7530ENDIF
 7540NEXT
 7550IF obpers=2 THEN
 7560IF player%(6,1)<>0 THEN
 7570 bo=player%(6,1)
 7580 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 7590  fl$=FNgetstring(bo!4)
 7600  IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,3,0):
 7610  bo+=16
 7620 ENDWHILE
 7630ENDIF
 7640ENDIF
 7650ENDIF
 7660ENDPROC
 7670
 7680DEFPROCtype_b_verb
 7690REM "<verb> <object|person> with|using <object>"
 7700REM call room, object, person|object|player
 7710REM user has to have an object with the name and there
 7720REM must be an object|person|player in the room with the name.
 7730f=FALSE
 7740verb$=FNfirst(curline$)
 7750curline$=FNnotfirst(curline$)
 7760IF curline$="" THEN f=TRUE
 7770IF INSTR(curline$," WITH ")<>0 THEN
 7780obpers$=MID$(curline$,1,INSTR(curline$," WITH ")-1)
 7790curline$=MID$(curline$,INSTR(curline$," WITH ")+6)
 7800ELSE
 7810IF INSTR(curline$," USING ")<>0 THEN
 7820obpers$=MID$(curline$,1,INSTR(curline$," USING ")-1)
 7830curline$=MID$(curline$,INSTR(curline$," USING ")+7)
 7840ELSE
 7850f=TRUE
 7860ENDIF
 7870ENDIF
 7880IF curline$="" THEN f=TRUE
 7890object$=curline$
 7900IF FNfirst(object$)="THE" THEN object$=FNnotfirst(object$)
 7910IF FNfirst(obpers$)="THE" THEN obpers$=FNnotfirst(obpers$)
 7920PROCfull_verb(verb$,obpers$,object$)
 7930ENDPROC
 7940
 7950DEFPROCtype_c_verb
 7960REM "Use <object> to <verb> <object|person>"
 7970REM call room, object, person|object|player
 7980REM user has to have an object with the name and there
 7990REM must be an object|person|player in the room with the name.
 8000curline$=FNnotfirst(curline$)
 8010IF FNfirst(curline$)="THE" THEN curline$=FNnotfirst(curline$)
 8020object$=MID$(curline$,1,INSTR(curline$," TO ")-1)
 8030curline$=MID$(curline$,INSTR(curline$," TO ")+4)
 8040verb$=FNfirst(curline$)
 8050curline$=FNnotfirst(curline$)
 8060obpers$=curline$
 8070IF FNfirst(obpers$)="THE" THEN obpers$=FNnotfirst(obpers$)
 8080PROCfull_verb(verb$,obpers$,object$)
 8090ENDPROC
 8100
 8110DEFPROCfull_verb(verb$,to$,from$)
 8120verb=0:to=0:from=0
 8130IF player%(7,1)<>0 THEN
 8140 bo=player%(7,1)
 8150 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 8160  fl$=FNgetstring(bo!4)
 8170  IF FNkeyword_look(fl$,verb$)=TRUE THEN verb=1
 8180  bo+=16
 8190 ENDWHILE
 8200ENDIF
 8210FOR Io%=0 TO objects%
 8220 IF object_place(Io%,0)=3 AND object_place(Io%,1)=0 THEN
 8230  IF objects%(Io%,8,1)<>0 THEN
 8240   bo=objects%(Io%,8,1)
 8250   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 8260    fl$=FNgetstring(bo!4)
 8270    IF FNkeyword_look(fl$,verb$)=TRUE THEN verb=1
 8280    bo+=16
 8290   ENDWHILE
 8300  ENDIF
 8310 ENDIF
 8320NEXT
 8330FOR Io%=0TO people%
 8340IF people_place(Io%,1)=c_room% AND FNtoupper(FNgetstring(people%(Io%,0,1)))=to$ THEN to=1
 8350NEXT
 8360FOR Io%=0TO objects%
 8370IF object_place(Io%,1)=c_room% AND object_place(Io%,0)=1 AND FNtoupper(FNgetstring(objects%(Io%,0,1)))=to$ THEN to=1
 8380IF object_place(Io%,1)=0 AND object_place(Io%,0)=3 AND FNtoupper(FNgetstring(objects%(Io%,0,1)))=from$ THEN from=Io%
 8390NEXT
 8400IF to=0 THEN
 8410 IF to$="ME" OR to$="MYSELF" to$=FNtoupper(FNgetstring(player%(0,1))) TEHN to=2
 8420ENDIF
 8430IF verb=0 OR to=0 OR from=0 THEN
 8440IF verb=0 THEN PROCdisplay("It can't "+verb$+".")
 8450IF to=0 THEN PROCdisplay("There's not a "+to$+".")
 8460IF from=0 THEN PROCdisplay("You havn't got a "+from$+".")
 8470ELSE
 8480Io%=from
 8490 IF object_place(Io%,0)=3 AND object_place(Io%,1)=0 THEN
 8500  IF objects%(Io%,8,1)<>0 THEN
 8510   bo=objects%(Io%,8,1)
 8520   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 8530    fl$=FNgetstring(bo!4)
 8540    IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,2,Io%)
 8550    bo+=16
 8560   ENDWHILE
 8570  ENDIF
 8580 ENDIF
 8590REM call the thing the act is bestowed upon
 8600FOR Io%=0 TO people%
 8610IF people_place(Io%,1)=c_room% AND FNtoupper(FNgetstring(people%(Io%,0,1)))=to$ THEN
 8620  IF people%(Io%,10,1)<>0 THEN
 8630   bo=people%(Io%,10,1)
 8640   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 8650    fl$=FNgetstring(bo!4)
 8660    IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,3,Io%)
 8670    bo+=16
 8680   ENDWHILE
 8690  ENDIF
 8700ENDIF
 8710NEXT
 8720FOR Io%=0TO objects%
 8730IF object_place(Io%,1)=c_room% AND object_place(Io%,0)=1 AND FNtoupper(FNgetstring(objects%(Io%,0,1)))=to$ THEN
 8740  IF objects%(Io%,7,1)<>0 THEN
 8750   bo=objects%(Io%,7,1)
 8760   WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 8770    fl$=FNgetstring(bo!4)
 8780    IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,2,Io%)
 8790    bo+=16
 8800   ENDWHILE
 8810  ENDIF
 8820ENDIF
 8830NEXT
 8840IF to=2 THEN
 8850IF player%(6,1)<>0 THEN
 8860 bo=player%(6,1)
 8870 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 8880  fl$=FNgetstring(bo!4)
 8890  IF FNkeyword_look(fl$,verb$)=TRUE THEN PROCcallcode(bo!12,3,0):
 8900  bo+=16
 8910 ENDWHILE
 8920ENDIF
 8930ENDIF
 8940ENDIF
 8950ENDPROC
 8960
 8970DEFPROClook(ii$)
 8980ii$=FNstrip(FNstrip_end(ii$))
 8990IF ii$="" THEN
 9000PROCshow
 9010ELSE
 9020IF FNfirst(ii$)="AT" THEN ii$=FNnotfirst(ii$)
 9030IF FNfirst(ii$)="THE" THEN ii$=FNnotfirst(ii$)
 9040ii$=FNstrip(FNstrip_end(ii$))
 9050FOR Io%=0 TO people%
 9060IF FNtoupper(FNgetstring(people%(Io%,0,1)))=ii$ THEN
 9070PROCdescribe(people%(Io%,0,1),people%(Io%,1,1),people%(Io%,2,1))
 9080ENDIF
 9090NEXT
 9100FOR Io%=0TOobjects%
 9110IF FNtoupper(FNgetstring(objects%(Io%,0,1)))=ii$ THEN
 9120PROCdescribe(objects%(Io%,0,1),objects%(Io%,1,1),objects%(Io%,2,1))
 9130ENDIF
 9140NEXT
 9150ENDIF
 9160ENDPROC
 9170
 9180DEFPROCdescribe(a,b,c)
 9190PROCdisplay(" ")
 9200PROCdisplay(FNgetstring(a)+":")
 9210FOR Iy%=b TO c
 9220PROCdisplay(FNgetstring(Iy%))
 9230NEXT
 9240ENDPROC
 9250
 9260DEFPROChelp
 9270PROCdisplay(" ")
 9280PROCdisplay("-----------------------------------------------------------")
 9290PROCdisplay("Help:")
 9300PROCdisplay("-----------------------------------------------------------")
 9310PROCdisplay(" ")
 9320PROCdisplay(" n,s,e,w,u,d,ne,nw,se and sw : Go in a direction.")
 9330PROCdisplay(" ")
 9340PROCdisplay(" inv                         : Inventory.")
 9350PROCdisplay(" ")
 9360PROCdisplay(" get <object>                : Get an object.")
 9370PROCdisplay(" ")
 9380PROCdisplay(" drop <object>               : drop and object.")
 9390PROCdisplay(" ")
 9400PROCdisplay(" say <sentance>              : say something.")
 9410PROCdisplay(" ")
 9420PROCdisplay(" look [<object|person>]      : look at something.")
 9430PROCdisplay(" ")
 9440PROCdisplay("Actions:")
 9450PROCdisplay(" <verb> [the] <object|person>")
 9460PROCdisplay(" <verb> [the] <object|person> with|using [the] <object>")
 9470PROCdisplay(" Use [the] <object> to <verb> [the] <object|person>")
 9480PROCdisplay(" <verb>")
 9490PROCdisplay(" ")
 9500PROCdisplay("-----------------------------------------------------------")
 9510PROCdisplay(" ")
 9520ENDPROC
 9530
 9540DEFPROCinv
 9550n_o=0
 9560FOR I%=0 TO objects%
 9570IF object_place(I%,0)=3 AND object_place(I%,1)=0 THEN temp(n_o)=I%:n_o+=1
 9580NEXT
 9590CASE n_o OF
 9600WHEN 0:PROCdisplay("You have no objects.")
 9610WHEN 1:PROCdisplay("You have a "+FNgetstring(objects%(temp(0),0,1))+".")
 9620WHEN 2:PROCdisplay("You have a "+FNgetstring(objects%(temp(0),0,1))+" and "+FNgetstring(objects%(temp(1),0,1))+".")
 9630OTHERWISE
 9640l$="You have a "
 9650FOR I%=0 TO n_o-3
 9660l$+=FNgetstring(objects%(temp(I%),0,1))+", a "
 9670NEXT
 9680l$+=FNgetstring(objects%(temp(n_o-2),0,1))+" and a "+FNgetstring(objects%(temp(n_o-1),0,1))+"."
 9690PROCdisplay(l$)
 9700ENDCASE
 9710ENDPROC
 9720
 9730DEFPROCtalk(lo$)
 9740li$=FNstrip(FNstrip_end(lo$))
 9750FOR Io%=0 TO people%
 9760IF people_place(Io%,1)=c_room% THEN
 9770IF people%(Io%,11,1)<>0 THEN
 9780 bo=people%(Io%,11,1)
 9790 WHILE !bo<>0 OR bo!4<>0 OR bo!8<>0 OR bo!12<>0
 9800  fl$=FNgetstring(bo!4)
 9810  IF FNkeyword_look(fl$,li$)=TRUE THENPROCcallcode(bo!12,3,Io%)
 9820  bo+=16
 9830 ENDWHILE
 9840ENDIF
 9850ENDIF
 9860NEXT
 9870ENDPROC
 9880
 9890DEFPROCget(lo$)
 9900IF FNfirst(lo$)="THE" THEN lo$=FNnotfirst(lo$)
 9910li$=FNstrip(FNstrip_end(lo$))
 9920p=FALSE
 9930FOR I%=0 TO objects%
 9940IF object_place(I%,0)=1 AND object_place(I%,1)=c_room% THEN
 9950 IF FNtoupper(FNgetstring(objects%(I%,0,1)))=li$ THEN
 9960  p=TRUE
 9970  IF objects%(I%,4,0)<>-1 THEN
 9980   PROCdisplay("You try to move the "+FNgetstring(objects%(I%,0,1))+" but it won't move.")
 9990  ELSE
10000   object_place(I%,0)=3
10010   object_place(I%,1)=0
10020   PROCdisplay("You get the "+FNgetstring(objects%(I%,0,1))+".")
10030  ENDIF
10040 ENDIF
10050ENDIF
10060NEXT
10070IF p=FALSE THEN PROCdisplay("You cannot see the "+lo$)
10080ENDPROC
10090
10100DEFPROCdrop(lo$)
10110IF FNfirst(lo$)="THE" THEN lo$=FNnotfirst(lo$)
10120li$=FNstrip(FNstrip_end(lo$))
10130p=FALSE
10140FOR I%=0 TO objects%
10150IF object_place(I%,0)=3 AND object_place(I%,1)=0 THEN
10160 IF FNtoupper(FNgetstring(objects%(I%,0,1)))=li$ THEN
10170  p=TRUE
10180  IF objects%(I%,4,0)<>-1 THEN
10190   PROCdisplay("You try to drop the "+FNgetstring(objects%(I%,0,1))+" but you can't.")
10200  ELSE
10210   object_place(I%,0)=1
10220   object_place(I%,1)=c_room%
10230   PROCdisplay("You drop the "+FNgetstring(objects%(I%,0,1))+".")
10240  ENDIF
10250 ENDIF
10260ENDIF
10270NEXT
10280IF p=FALSE THEN PROCdisplay("You cannot see the "+lo$)
10290ENDPROC
10300
10310DEFPROCd(o)
10320REM directions: call direction code: leaving, entering, see and unsee code is called by the code.
10330PROCcallcode(rooms%(c_room%,o,1),01,c_room%)
10340ENDPROC
10350
10360DEFPROCcallcode(i,c,d)
10370LOCAL block,code_caller_type,code_caller_number,endcode
10380IF i<>0 THEN
10390code_caller_type=c
10400code_caller_number=d
10410disps+=1
10420block=code%(i)
10430endcode=FALSE
10440REPEAT
10450CASE !block OF
10460WHEN 0:endcode=TRUE:block+=4
10470WHEN 1:PROCcode_print(block):block+=12                                      :REM Y
10480WHEN 2:PROCcode_goto(block,code_caller_type,code_caller_number):block+=12   :REM Y
10490WHEN 3:PROCcode_give(block):block+=20                                       :REM Y
10500WHEN 4:PROCcode_move(block):block+=20                                       :REM Y
10510WHEN 5:PROCcode_end:block+=4                                                :REM Y
10520WHEN 6:PROCcode_error:block+=12                                             :REM Y
10530WHEN 7:PROCcode_set(block,code_caller_type,code_caller_number):block+=20    :REM Y
10540WHEN 8:PROCcode_change(block,code_caller_type,code_caller_number):block+=20 :REM Y
10550WHEN 9:block=FNcode_if(block,code_caller_type,code_caller_number)           :REM Y
10560OTHERWISE PROCreport("Corrupt code file found.")
10570ENDCASE
10580UNTIL endcode=TRUE
10590disps-=1
10600IF disps=0 THEN
10610 PROCdisplay(display$)
10620 display$=""
10630ENDIF
10640ENDIF
10650ENDPROC
10660
10670DEFPROCcallcode_x(i,c,d)
10680LOCAL block,code_caller_type,code_caller_number,endcode
10690IF i<>0 THEN
10700code_caller_type=c
10710code_caller_number=d
10720disps+=1
10730block=i
10740endcode=FALSE
10750REPEAT
10760CASE !block OF
10770WHEN 0,10:endcode=TRUE:block+=4
10780WHEN 1:PROCcode_print(block):block+=12                                      :REM Y
10790WHEN 2:PROCcode_goto(block,code_caller_type,code_caller_number):block+=12   :REM Y
10800WHEN 3:PROCcode_give(block):block+=20                                       :REM Y
10810WHEN 4:PROCcode_move(block):block+=20                                       :REM Y
10820WHEN 5:PROCcode_end:block+=4                                                :REM Y
10830WHEN 6:PROCcode_error:block+=12                                             :REM Y
10840WHEN 7:PROCcode_set(block,code_caller_type,code_caller_number):block+=20    :REM Y
10850WHEN 8:PROCcode_change(block,code_caller_type,code_caller_number):block+=20 :REM Y
10860WHEN 9:block=FNcode_if(block,code_caller_type,code_caller_number)           :REM Y
10870OTHERWISE PROCreport("Corrupt code file found.")
10880ENDCASE
10890UNTIL endcode=TRUE
10900disps-=1
10910IF disps=0 THEN
10920 PROCdisplay(display$)
10930 display$=""
10940ENDIF
10950ENDIF
10960ENDPROC
10970
10980DEFFNcode_if(b,y,u)
10990LOCAL var,num,block,code_caller_number,code_caller_type,ppp,co,e,v$,y$,op,p
11000block=b
11010code_caller_number=u
11020code_caller_type=y
11030block+=8
11040var=!block
11050block+=8
11060op=!block
11070block+=8
11080num=!block
11090block+=4
11100v$=FNgetvar(var)
11110y$=FNgetstring(num)
11120IF op<0 OR op>3 THEN
11130PROCdisplay("Unknown conditional operation.")
11140ELSE
11150CASE var OF
11160WHEN 1,0:
11170CASE op OF
11180 WHEN 0:IF INSTR(v$,y$)<>0 THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11190 WHEN 1:IF INSTR(v$,y$)=0 THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11200OTHERWISE PROCdisplay("Bad conditional operation with ob_got.")
11210ENDCASE
11220OTHERWISE
11230CASE op OF
11240 WHEN 0:IF VAL(y$)=VAL(v$) THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11250 WHEN 1:IF VAL(y$)<>VAL(v$) THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11260 WHEN 2:IF VAL(y$)>VAL(v$) THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11270 WHEN 3:IF VAL(y$)<VAL(v$) THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11280ENDCASE
11290ENDCASE
11300ENDIF
11310e=FALSE
11320p=0
11330REPEAT
11340ins%=!block
11350block+=4
11360CASE ins% OF
11370WHEN 0:e=TRUE
11380WHEN 10:IF p=0 THEN
11390e=TRUE
11400ELSE
11410p-=1
11420ENDIF
11430WHEN 5:
11440WHEN 1,2,6:block+=8
11450WHEN 3,4,8,7:block+=16
11460WHEN 9:block+=16:p+=1
11470ENDCASE
11480UNTIL e
11490=block
11500
11510DEFFNcode_ifold(b,y,u)
11520LOCAL var,num,block,code_caller_number,code_caller_type,ppp,co,e,v$,y$,op,p
11530block=b
11540code_caller_number=u
11550code_caller_type=y
11560block+=8
11570var=!block
11580block+=8
11590num=!block
11600block+=4
11610v$=FNgetvar(var)
11620y$=FNgetstring(num)
11630op=-1
11640CASE MID$(y$,1,1) OF
11650WHEN "=":op=0:y$=FNstrip(MID$(y$,2))
11660WHEN "<":CASE MID$(y$,2,1) OF
11670WHEN ">":op=1:y$=FNstrip(MID$(y$,3))
11680OTHERWISE op=2:y$=FNstrip(MID$(y$,2))
11690ENDCASE
11700WHEN ">":op=3:y$=FNstrip(MID$(y$,2))
11710ENDCASE
11720IF op=-1 THEN
11730PROCdisplay("Unknown conditional operation.")
11740ELSE
11750CASE var OF
11760WHEN 1:
11770CASE op OF
11780 WHEN 0:IF INSTR(v$,y$)<>0 THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11790 WHEN 1:IF INSTR(v$,y$)=0 THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11800OTHERWISE PROCdisplay("Bad conditional operation with ob_got.")
11810ENDCASE
11820OTHERWISE
11830CASE op OF
11840 WHEN 0:IF y$=v$ THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11850 WHEN 1:IF y$<>v$ THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11860 WHEN 2:IF y$<v$ THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11870 WHEN 3:IF y$>v$ THEN PROCcallcode_x(block,code_caller_type,code_caller_number)
11880ENDCASE
11890ENDCASE
11900ENDIF
11910e=FALSE
11920p=0
11930REPEAT
11940ins%=!block
11950block+=4
11960CASE ins% OF
11970WHEN 0:e=TRUE
11980WHEN 10:IF p=0 THEN
11990e=TRUE
12000ELSE
12010p-=1
12020ENDIF
12030WHEN 5:
12040WHEN 1,2,6:block+=8
12050WHEN 3,4,8,7:block+=16
12060WHEN 9:block+=16:p+=1
12070ENDCASE
12080UNTIL e
12090=block
12100
12110DEFPROCcode_give(b)
12120LOCAL per,ob,block
12130block=b
12140block+=4
12150pert=!block
12160block+=4
12170per=!block
12180block+=4
12190obt=!block
12200block+=4
12210ob=!block
12220block+=4
12230object_place(ob,0)=pert
12240object_place(ob,1)=per
12250ENDPROC
12260
12270DEFPROCcode_move(b)
12280LOCAL per,ob,block
12290block=b
12300block+=4
12310pert=!block
12320block+=4
12330per=!block
12340block+=4
12350obt=!block
12360block+=4
12370ob=!block
12380block+=4
12390IF obt=1 AND ob=1 THEN ob=c_room%
12400CASE pert OF
12410WHEN 2:REM object
12420object_place(per,0)=obt
12430object_place(per,1)=ob
12440WHEN 3:REM person
12450IF per=0 THEN
12460PROCreport("player vannot be moved by P_move().")
12470ELSE
12480people_place(per,0)=obt
12490people_place(per,1)=ob
12500ENDIF
12510ENDCASE
12520ENDPROC
12530
12540DEFPROCcode_goto(b,y,u)
12550LOCAL var,num,block,code_caller_number,code_caller_type,ppp
12560block=b
12570code_caller_number=u
12580code_caller_type=y
12590block+=8
12600var=!block
12610IF var=1 THEN var=c_room%
12620block+=4
12630REM 1) Call all unsee: of people in room.
12640REM 2) Call leave: of room
12650REM 3) Move to new room
12660REM 4) Call enter: of room
12670REM 5) Call all see: of people in room.
12680FOR I%=0 TO people%
12690IF people_place(I%,0)=1 AND people_place(I%,1)=c_room% THEN PROCcallcode(people%(I%,8,1),3,I%)
12700NEXT
12710PROCcallcode(rooms%(c_room%,14,1),1,c_room%)
12720c_room%=var
12730PROCcallcode(rooms%(c_room%,13,1),1,c_room%)
12740FOR I%=0 TO people%
12750IF people_place(I%,0)=1 AND people_place(I%,1)=c_room% THEN PROCcallcode(people%(I%,7,1),3,I%)
12760NEXT
12770ENDPROC
12780
12790DEFPROCcode_change(b,y,u)
12800LOCAL var,num,block,code_caller_number,code_caller_type
12810block=b
12820code_caller_number=u
12830code_caller_type=y
12840block+=8
12850var=!block
12860block+=8
12870num=!block
12880block+=4
12890IF var<2 THEN PROCreport("Can't alter variable.")
12900IF var=3 THEN
12910 IF SGN(player%(3,0))=1 AND SGN(player%(3,0)+num)<1 THEN
12920  PROCcallcode(player%(4,1),code_caller_type,code_caller_number)
12930 ENDIF
12940 player%(3,0)+=num
12950ELSE
12960 IF var=2 THEN
12970  CASE code_caller_type OF
12980  WHEN 2:
12990  IF SGN(objects%(code_caller_number,5,0))=1 AND SGN(objects%(code_caller_number,5,0)+num)<1 THEN
13000  PROCcallcode(objects%(code_caller_number,6,1),code_caller_type,code_caller_number)
13010  ENDIF
13020  objects%(code_caller_number,5,0)+=num
13030  WHEN 3:
13040  IF code_caller_number=0 THEN
13050  IF SGN(player%(3,0))=1 AND SGN(player%(3,1)+num)<1 THEN
13060  PROCcallcode(player%(4,1),code_caller_type,code_caller_number)
13070  ENDIF
13080  player%(3,0)+=num
13090  ELSE
13100  IF SGN(people%(code_caller_number,5,0))=1 AND SGN(people%(code_caller_number,5,0)+num)<1 THEN
13110  PROCcallcode(people%(code_caller_number,6,1),code_caller_type,code_caller_number)
13120  ENDIF
13130  people%(code_caller_number,5,0)+=num
13140  ENDIF
13150  OTHERWISE PROCreport("Can't chage energy: for something with out energy:.")
13160  ENDCASE
13170 ELSE
13180  cur_vars(var)+=num
13190 ENDIF
13200ENDIF
13210ENDPROC
13220
13230DEFPROCcode_set(b,y,u)
13240LOCAL var,num,block,code_caller_number,code_caller_type
13250block=b
13260code_caller_number=u
13270code_caller_type=y
13280block+=8
13290var=!block
13300block+=8
13310num=!block
13320block+=4
13330IF var<2 THEN PROCreport("Can't alter variable.")
13340IF var=3 THEN
13350IF SGN(player%(3,0))=1 AND SGN(num)<1 THEN
13360PROCcallcode(player%(4,1),code_caller_type,code_caller_number)
13370ENDIF
13380player%(3,0)=num
13390ELSE
13400IF var=2 THEN
13410CASE code_caller_type OF
13420WHEN 2:
13430IF SGN(objects%(code_caller_number,5,0))=1 AND SGN(num)<1 THEN
13440PROCcallcode(objects%(code_caller_number,6,1),code_caller_type,code_caller_number)
13450ENDIF
13460objects%(code_caller_number,5,0)=num
13470WHEN 3:
13480IF code_caller_number=0 THEN
13490 IF SGN(player%(3,0))=1 AND SGN(num)<1 THEN
13500  PROCcallcode(player%(4,1),code_caller_type,code_caller_number)
13510 ENDIF
13520 player%(3,0)=num
13530ELSE
13540 IF SGN(people%(code_caller_number,5,0))=1 AND SGN(num)<1 THEN
13550  PROCcallcode(people%(code_caller_number,6,1),code_caller_type,code_caller_number)
13560 ENDIF
13570 people%(code_caller_number,5,0)=num
13580ENDIF
13590OTHERWISE PROCreport("Can't chage energy: for something with out energy:.")
13600ENDCASE
13610ELSE
13620cur_vars(var)=num
13630ENDIF
13640ENDIF
13650ENDPROC
13660
13670DEFPROCcode_end
13680PROCdisplay("")
13690PROCdisplay("")
13700PROCdisplay("*** THE END ***")
13710PROCdisplay("")
13720PROCdisplay("Press return to restart.")
13730i$=FNinput
13740PROCcls
13750PROCJump("go")
13760ENDPROC
13770
13780DEFPROCcode_print(b)
13790LOCAL block
13800block=b
13810REM first decide whether its a variable or string
13820block+=4
13830type=!block
13840block+=4
13850num=!block
13860block+=4
13870CASE type OF
13880WHEN 07:PROCcode_print_str(block)
13890WHEN 05:PROCcode_print_var(block)
13900OTHERWISE PROCreport("Can't print this label.")
13910ENDCASE
13920ENDPROC
13930
13940DEFPROCcode_print_str(b)
13950LOCAL block
13960block=b
13970t$=FNgetstring(num)
13980REPEAT
13990WHILE MID$(t$,1,2)<>"\n" AND LEN(t$)>0
14000display$+=MID$(t$,1,1)
14010t$=MID$(t$,2)
14020ENDWHILE
14030IF LEN(t$)<>0PROCdisplay(display$)
14040IF LEN(t$)>0 THEN
14050t$=MID$(t$,3)
14060display$=""
14070ENDIF
14080UNTIL LEN(t$)=0
14090ENDPROC
14100
14110DEFPROCcode_print_var(b)
14120LOCAL block
14130block=b
14140t$=FNgetvar(num)
14150display$+=t$
14160ENDPROC
14170
14180DEFFNgetvar(c)
14190CASE c OF
14200WHEN 0:=FNgetstring(rooms%(c_room%,0,1))
14210WHEN 1:ob=rooms%(c_room%,15,1)
14220n_o=0
14230FOR I%=0 TO objects%
14240IF object_place(I%,0)=3 AND object_place(I%,1)=0 THEN temp(n_o)=I%:n_o+=1
14250NEXT
14260CASE n_o OF
14270WHEN 0:=""
14280WHEN 1:=FNgetstring(objects%(temp(0),0,1))
14290WHEN 2:=FNgetstring(objects%(temp(0),0,1))+" "+FNgetstring(objects%(temp(1),0,1))
14300OTHERWISE
14310l$=""
14320FOR I%=0 TO n_o-3
14330l$+=FNgetstring(objects%(temp(I%),0,1))+" "
14340NEXT
14350l$+=FNgetstring(objects%(temp(n_o-2),0,1))+" "+FNgetstring(objects%(temp(n_o-1),0,1))
14360=l$
14370ENDCASE
14380WHEN 2:CASE code_caller_type OF
14390WHEN 2:=STR$objects%(code_caller_number,5,0)
14400WHEN 3:IF code_caller_number=0 THEN =STR$player%(3,1) ELSE =STR$people%(code_caller_number,5,0)
14410OTHERWISE ="-1"
14420ENDCASE
14430WHEN 3:=STR$player%(3,0)
14440ENDCASE
14450=STR$(cur_vars(c))
14460
14470DEFPROCcode_error
14480PROCreport("visable() and invisable() are no longer suported.")
14490block+=4
14500ENDPROC
14510
14520DEFPROCshow
14530PROCdisplay(" ")
14540PROCdisplay_SetTitle("Running")
14550PROCdisplay_SetPosIndicator(FNgetstring(rooms%(c_room%,0,1)))
14560fs=rooms%(c_room%,1,1)
14570ls=rooms%(c_room%,2,1)
14580FOR y%=fs TO ls
14590PROCdisplay(FNgetstring(y%))
14600NEXT
14610PROCdisplay(" ")
14620n_o=0
14630FOR I%=0 TO objects%
14640IF object_place(I%,0)=1 AND object_place(I%,1)=c_room% THEN temp(n_o)=I%:n_o+=1
14650NEXT
14660CASE n_o OF
14670WHEN 0:PROCdisplay("There are no objects here.")
14680WHEN 1:PROCdisplay("There is a "+FNgetstring(objects%(temp(0),0,1))+" here.")
14690WHEN 2:PROCdisplay("There is a "+FNgetstring(objects%(temp(0),0,1))+" and "+FNgetstring(objects%(temp(1),0,1))+" here.")
14700OTHERWISE
14710l$="There is a "
14720FOR I%=0 TO n_o-3
14730l$+=FNgetstring(objects%(temp(I%),0,1))+", a "
14740NEXT
14750l$+=FNgetstring(objects%(temp (n_o-2),0,1))+" and a "+FNgetstring(objects%(temp(n_o-1),0,1))+" here."
14760PROCdisplay(l$)
14770ENDCASE
14780n_o=0
14790FOR I%=0 TO people%
14800IF people_place(I%,0)=1 AND people_place(I%,1)=c_room% THEN temp(n_o)=I%:n_o+=1
14810NEXT
14820CASE n_o OF
14830WHEN 0:PROCdisplay("There are no people here.")
14840WHEN 1:PROCdisplay("There is also a "+FNgetstring(people%(temp(0),0,1))+" here.")
14850WHEN 2:PROCdisplay("There is also a "+FNgetstring(people%(temp(0),0,1))+" and a "+FNgetstring(people%(temp(1),0,1))+" here.")
14860OTHERWISE
14870l$="There is also "
14880FOR I%=0 TO n_o-3
14890l$+="a "+FNgetstring(people%(temp(I%),0,1))+", "
14900NEXT
14910l$+="a "+FNgetstring(people%(temp(n_o-2),0,1))+" and a "+FNgetstring(people%(temp(n_o-1),0,1))+" here."
14920PROCdisplay(l$)
14930ENDCASE
14940N=FALSE:S=FALSE:W=FALSE:E=FALSE:NE=FALSE:SW=FALSE:NW=FALSE:SE=FALSE:U=FALSE:D=FALSE
14950IF rooms%(c_room%,3,0)<>0 THEN E=TRUE
14960IF rooms%(c_room%,4,0)<>0 THEN W=TRUE
14970IF rooms%(c_room%,5,0)<>0 THEN S=TRUE
14980IF rooms%(c_room%,6,0)<>0 THEN N=TRUE
14990IF rooms%(c_room%,7,0)<>0 THEN U=TRUE
15000IF rooms%(c_room%,8,0)<>0 THEN D=TRUE
15010IF rooms%(c_room%,9,0)<>0 THEN SE=TRUE
15020IF rooms%(c_room%,10,0)<>0 THEN SW=TRUE
15030IF rooms%(c_room%,11,0)<>0 THEN NE=TRUE
15040IF rooms%(c_room%,12,0)<>0 THEN NW=TRUE
15050IF N+E+W+S+NW+NE+SE+SW+U+D=0 THEN
15060PROCdisplay("There are no exits.")
15070ELSE
15080i$=FNdirs
15090IF N+E+W+S+NW+NE+SE+SW+U+D=-1 THEN
15100o$="There is an exit to the "+MID$(i$,1,LEN(i$)-2)+"."
15110ELSE
15120o$="There are exits to the "+FNspecial1(i$)+"."
15130ENDIF
15140PROCdisplay(o$)
15150ENDIF
15160PROCdisplay(" ")
15170ENDPROC
15180
15190DEFFNdirs
15200l$=""
15210IF N=TRUE THEN l$+="north, "
15220IF S=TRUE THEN l$+="south, "
15230IF E=TRUE THEN l$+="east, "
15240IF W=TRUE THEN l$+="west, "
15250IF U=TRUE THEN l$+="up, "
15260IF D=TRUE THEN l$+="down, "
15270IF NW=TRUE THEN l$+="northwest, "
15280IF SE=TRUE THEN l$+="southeast, "
15290IF NE=TRUE THEN l$+="northeast, "
15300IF SW=TRUE THEN l$+="southwest, "
15310=l$
15320
15330DEFFNspecial1(t$)
15340y$=MID$(t$,1,LEN(t$)-2)
15350I%=1
15360LI%=0
15370WHILE I%<>0
15380LI%=I%
15390I%=INSTR(y$,",",I%+1)
15400ENDWHILE
15410=MID$(y$,1,LI%-1)+" and"+MID$(y$,LI%+1)
15420
15430DEFFNgetstring(y%)
15440=strings$(y%)
15450
15460DEFPROCrepos_people
15470people_place()=-1
15480FOR I%=2 TO rooms%
15490 IF rooms%(I%,16,1)<>0 THEN
15500  block=rooms%(I%,16,1)
15510  WHILE !block<>0 AND block!4<>0
15520   i=block!4
15530   block+=8
15540   IF people_place(i,1)<>-1 THEN PROCreport("person in two places.")
15550   people_place(i,0)=&01
15560   people_place(i,1)=I%
15570  ENDWHILE
15580 ENDIF
15590NEXT
15600ENDPROC
15610
15620DEFPROCrepos_objects
15630object_place()=-1
15640REM can be in player, room or person
15650FOR I% = 0 TO people%
15660 IF people%(I%,9,1)<>0 THEN
15670  block=people%(I%,9,1)
15680  WHILE !block<>0 AND block!4<>0
15690   i=block!4
15700   block+=8
15710   IF object_place(i,1)<>-1 THEN PROCreport("object in two places.")
15720   object_place(i,0)=&03
15730   object_place(i,1)=I%
15740  ENDWHILE
15750 ENDIF
15760NEXT
15770FOR I%=2 TO rooms%
15780 IF rooms%(I%,15,1)<>0 THEN
15790  block=rooms%(I%,15,1)
15800  WHILE !block<>0 OR block!4<>0
15810   i=block!4
15820   block+=8
15830   IF object_place(i,1)<>-1 THEN PROCreport("object in two places.")
15840   object_place(i,0)=&01
15850   object_place(i,1)=I%
15860  ENDWHILE
15870 ENDIF
15880NEXT
15890IF player%(5,1)<>0 THEN
15900 block=player%(5,1)
15910 WHILE !block<>0 AND block!4<>0
15920  i=block!4
15930  block+=8
15940  IF object_place(i,1)<>-1 THEN PROCreport("object in two places.")
15950  object_place(i,0)=&03
15960  object_place(i,1)=I%
15970 ENDWHILE
15980ENDIF
15990ENDPROC
16000
16010DEFPROCERROR
16020IF ERR<>(1<<31) THEN
16030MODE 0 : REPORT:PRINT ERL:L=GET:END
16040ENDIF
16050i=EVAL("FN"+REPORT$)
16060ENDPROC
16070
16080DEFPROCJump(l$)
16090ERROR (1<<31),l$
16100ENDPROC
16110
16120DEFPROCquit_now
16130END
16140ENDPROC

)� Byte-code Interpreter for DavidRPG2
� (c) David Spence, 1998.

(ver$="2.58"
2
<
� �ERROR
F
P ț "<DavidRPG2$Dir>.Library"
Z,ț "<DavidRPG2$Dir>.<DavidRPG2$Display>"
d%�display_initstart("Interpreter")
n
xJ�display_special("Byte-code Interpreter for !DavidRPG2 version "+ver$)
�+�display_special("David Spence, 1998.")
�S�PROCdisplay_special("The error messages reported will be quite vague, sorry!")
�J�PROCdisplay_special("This is only a test version of the intepreter.")
�P�PROCdisplay_special("Don't be suprised if an error in a file crashes this")
�(�PROCdisplay_special("interpreter!")
��display_special(" ")
�
�	err=0
�
ingame%=�
�
�!O=�(�display_tempdir+".temp")
�O� O=0 � �report("Can't find !DavidRPG2 - has it been seen by the filer?"):�
��#O

�   Loading:
�   ========
"�
,_� Strings:    count strings then put into arrary the right size for all the strings to fit.
6c� Variables:  make and array for the start values and one for the current values containing the
@ �              start values.
Ja� Rooms:      put in an array the right size for the data (count first). Put all lists into a
TK�              separate block of memory, the right size (not an array).
^� Objects:    See rooms.
h� People:     See rooms.
r9� Player:     Same as rooms but with a single player.
|G� Code:       Array with pointer to memory blocks with the code in.
�
�!�****************************
�� NOTE VERY IMPORTANT
�5� person0 and vars0-3 are defined in this program
�
�"�display_special("Loading...")
�
�&�PROCdisplay_special("Strings...")
�
�$O=�(�display_tempdir+".Strings")
�
line=1
��
�� �#O=10 � line+=1
	� �#O
	�#O=0
� strings$(line)
&� I%=0�line-1
0strings$(I%)=�#O
:�
D�#O
N
X(�PROCdisplay_special("Variables...")
b
l!O=�(�display_tempdir+".Vars")
vE=-4
�
� �#O>0 �
�E=�((�#O)/10)
�>� E<>((�#O)/10) � �report("Error in variable file."):�#O:�
�8� start_vars(E+3):� 4 vars are defined in this prog.
�� I%=1�E
�
�#O,T%
�
�#O,U%
�start_vars(T%)=U%
��
��
��#O
�"� E=-4 � E=0:� start_vars(E+3)
�� cur_vars(E+3)
cur_vars()=start_vars()

$�PROCdisplay_special("Rooms...")
 
*"O=�(�display_tempdir+".Rooms")
4�#O,rooms%
>�#O,start_room%
H0� rooms%=0 � �report("No Rooms."):CLOSEE#O:�
R
rooms%-=1
\� rooms%(rooms%,17,1)
f� L%=0 � rooms%-2
p
�#O,I%
z0� J%=0 � 14       :� these donot need blocks
��#O,rooms%(I%,J%,0)
��#O,rooms%(I%,J%,1)
��
��#O,in1%
��#O,in2%
�� in1%=0 � in2%=0�
�rooms%(I%,15,0)=0
�rooms%(I%,15,1)=0
��
�g=(�#O)-10
�c=1
�ȕ in1%<>0 � in2%<>0
��#O,in1%
�#O,in2%
c+=1
�
$� temp 4*2*c
.	�#O=g
8� J%=0� c-1
B�#O,in1%
L�#O,in2%
Vtemp!((4*J%*2)+0)=in1%
`temp!((4*J%*2)+4)=in2%
j�
t� in1%<>0 � in2%<>0 � �
~rooms%(I%,15,1)=temp
��
��#O,in1%
��#O,in2%
�� in1%=0 � in2%=0�
�rooms%(I%,16,0)=0
�rooms%(I%,16,1)=0
��
�g=(�#O)-10
�c=1
�ȕ in1%<>0 � in2%<>0
��#O,in1%
��#O,in2%
c+=1

�
� temp 4*2*c
	�#O=g
(� J%=0� c-1
2�#O,in1%
<�#O,in2%
Ftemp!((4*J%*2)+0)=in1%
Ptemp!((4*J%*2)+4)=in2%
Z�
d� in1%<>0 � in2%<>0 � �
nrooms%(I%,16,1)=temp
x�
��#O,in1%
��#O,in2%
��#O,in3%
��#O,in4%
�(� in1%=0 � in2%=0 � in3%=0 � in4%=0�
�rooms%(I%,17,0)=0
�rooms%(I%,17,1)=0
��
�g=(�#O)-20
�c=1
�,ȕ in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0
��#O,in1%
��#O,in2%
�#O,in3%
�#O,in4%
c+=1
"�
,� temp 4*4*c
6	�#O=g
@� J%=0� c-1
J�#O,in1%
T�#O,in2%
^�#O,in3%
h�#O,in4%
rtemp!((4*J%*4)+0)=in1%
|temp!((4*J%*4)+4)=in2%
�temp!((4*J%*4)+8)=in3%
�temp!((4*J%*4)+12)=in4%
��
�.� in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0� �
�rooms%(I%,17,1)=temp
��
��
��#O
�
�&�PROCdisplay_special("Objects...")
�
�#O=�(�display_tempdir+".Object")
��#O,objects%
objects%-=1
� objects%(objects%,8,1)
� L%=0 � objects%
&
�#O,I%
0/� J%=0 � 6       :� these donot need blocks
:�#O,objects%(I%,J%,0)
DȎ J% �
N� 3,4,5:
X �#O,objects%(I%,J%,1)
b�
l�
v�#O,in1%
��#O,in2%
��#O,in3%
��#O,in4%
�(� in1%=0 � in2%=0 � in3%=0 � in4%=0�
�objects%(I%,7,0)=0
�objects%(I%,7,1)=0
��
�g=(�#O)-20
�c=1
�,ȕ in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0
��#O,in1%
��#O,in2%
��#O,in3%
�#O,in4%
c+=1
�
 � temp 4*4*c
*	�#O=g
4� J%=0� c-1
>�#O,in1%
H�#O,in2%
R�#O,in3%
\�#O,in4%
ftemp!((4*J%*4)+0)=in1%
ptemp!((4*J%*4)+4)=in2%
ztemp!((4*J%*4)+8)=in3%
�temp!((4*J%*4)+12)=in4%
��
�.� in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0� �
�objects%(I%,7,1)=temp
��
��#O,in1%
��#O,in2%
��#O,in3%
��#O,in4%
�(� in1%=0 � in2%=0 � in3%=0 � in4%=0�
�objects%(I%,8,0)=0
�objects%(I%,8,1)=0
��
	g=(�#O)-20
	c=1
	,ȕ in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0
	$�#O,in1%
	.�#O,in2%
	8�#O,in3%
	B�#O,in4%
	Lc+=1
	V�
	`� temp 4*4*c
	j	�#O=g
	t� J%=0� c-1
	~�#O,in1%
	��#O,in2%
	��#O,in3%
	��#O,in4%
	�temp!((4*J%*4)+0)=in1%
	�temp!((4*J%*4)+4)=in2%
	�temp!((4*J%*4)+8)=in3%
	�temp!((4*J%*4)+12)=in4%
	��
	�.� in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0� �
	�objects%(I%,8,1)=temp
	��
	��
�#O


%�PROCdisplay_special("People...")

(#O=�(�display_tempdir+".People")
2�#O,people%
<people%-=1
F� people%(people%,11,1)
P� L%=0 � people%
Z
�#O,I%
d/� J%=0 � 8       :� these donot need blocks
n�#O,people%(I%,J%,0)
xȎ J% �
�� 3,4,5:
� �#O,people%(I%,J%,1)
��
��
�
��#O,in1%
��#O,in2%
�� in1%=0 � in2%=0�
�people%(I%,9,0)=0
�people%(I%,9,1)=0
��
�g=(�#O)-10
�c=1
ȕ in1%<>0 � in2%<>0
�#O,in1%
�#O,in2%
"c+=1
,�
6� temp 4*2*c
@	�#O=g
J� J%=0� c-1
T�#O,in1%
^�#O,in2%
htemp!((4*J%*2)+0)=in1%
rtemp!((4*J%*2)+4)=in2%
|�
�� in1%<>0 � in2%<>0 � �
�people%(I%,9,1)=temp
��
��#O,in1%
��#O,in2%
��#O,in3%
��#O,in4%
�(� in1%=0 � in2%=0 � in3%=0 � in4%=0�
�people%(I%,10,0)=0
�people%(I%,10,1)=0
��
�g=(�#O)-20
�c=1
,ȕ in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0
�#O,in1%
�#O,in2%
&�#O,in3%
0�#O,in4%
:c+=1
D�
N� temp 4*4*c
X	�#O=g
b� J%=0� c-1
l�#O,in1%
v�#O,in2%
��#O,in3%
��#O,in4%
�temp!((4*J%*4)+0)=in1%
�temp!((4*J%*4)+4)=in2%
�temp!((4*J%*4)+8)=in3%
�temp!((4*J%*4)+12)=in4%
��
�.� in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0� �
�people%(I%,10,1)=temp
��
��#O,in1%
��#O,in2%
��#O,in3%

�#O,in4%

(� in1%=0 � in2%=0 � in3%=0 � in4%=0�

people%(I%,11,0)=0

 people%(I%,11,1)=0

*�

4g=(�#O)-20

>c=1

H,ȕ in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0

R�#O,in1%

\�#O,in2%

f�#O,in3%

p�#O,in4%

zc+=1

��

�� temp 4*4*c

�	�#O=g

�� J%=0� c-1

��#O,in1%

��#O,in2%

��#O,in3%

��#O,in4%

�temp!((4*J%*4)+0)=in1%

�temp!((4*J%*4)+4)=in2%

�temp!((4*J%*4)+8)=in3%

�temp!((4*J%*4)+12)=in4%

��
.� in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0� �
people%(I%,11,1)=temp
�
$�
.�#O
8
B%�PROCdisplay_special("Player...")
L
V#O=�(�display_tempdir+".Player")
`� player%(7,1)
j/� J%=0 � 4       :� these donot need blocks
t�#O,player%(J%,0)
~Ȏ J% �
�� 3:
� �#O,player%(J%,1)
��
��
��#O,in1%
��#O,in2%
�� in1%=0 � in2%=0�
�player%(5,0)=0
�player%(5,1)=0
��
�g=(�#O)-10
�c=1
ȕ in1%<>0 � in2%<>0

�#O,in1%
�#O,in2%
c+=1
(�
2� temp 4*2*c
<	�#O=g
F� J%=0� c-1
P�#O,in1%
Z�#O,in2%
dtemp!((4*J%*2)+0)=in1%
ntemp!((4*J%*2)+4)=in2%
x�
�� in1%<>0 � in2%<>0 � �
�player%(5,1)=temp
��
��#O,in1%
��#O,in2%
��#O,in3%
��#O,in4%
�(� in1%=0 � in2%=0 � in3%=0 � in4%=0�
�player%(6,0)=0
�player%(6,1)=0
��
�g=(�#O)-20
�c=1
,ȕ in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0
�#O,in1%
�#O,in2%
"�#O,in3%
,�#O,in4%
6c+=1
@�
J� temp 4*4*c
T	�#O=g
^� J%=0� c-1
h�#O,in1%
r�#O,in2%
|�#O,in3%
��#O,in4%
�temp!((4*J%*4)+0)=in1%
�temp!((4*J%*4)+4)=in2%
�temp!((4*J%*4)+8)=in3%
�temp!((4*J%*4)+12)=in4%
��
�.� in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0� �
�player%(6,1)=temp
��
��#O,in1%
��#O,in2%
��#O,in3%
��#O,in4%
(� in1%=0 � in2%=0 � in3%=0 � in4%=0�
player%(7,0)=0
player%(7,1)=0
&�
0g=(�#O)-20
:c=1
D,ȕ in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0
N�#O,in1%
X�#O,in2%
b�#O,in3%
l�#O,in4%
vc+=1
��
�� temp 4*4*c
�	�#O=g
�� J%=0� c-1
��#O,in1%
��#O,in2%
��#O,in3%
��#O,in4%
�temp!((4*J%*4)+0)=in1%
�temp!((4*J%*4)+4)=in2%
�temp!((4*J%*4)+8)=in3%
�temp!((4*J%*4)+12)=in4%
��
.� in1%<>0 � in2%<>0 � in3%<>0 � in4%<>0� �
player%(7,1)=temp
�
 �#O
*
4#�PROCdisplay_special("Code...")
>
H!O=�(�display_tempdir+".Code")
R� O=0 � �#O=0 �
\� O<>0 ��#O
f� code%(1)
p�
zcode%=0
��
�	end=�
��
��#O,ins%
�
Ȏ ins% �
�
� 0:end=�
�� 5,10:
�� 1,2,6:�#O,u%:�#O,u%
�)� 3,4,8,7:�#O,u%:�#O,u%:�#O,u%:�#O,u%
�1� 9:�#O,u%:�#O,u%:�#O,u%:�#O,u%:�#O,u%:�#O,u%
��
�	� end
�code%+=1
	� �#O
	�#O=0
� code%(code%)
$� o%=1 � code%
.	t=�#O
8	end=�
B
word=0
L�
V�#O,ins%:word+=1
`
Ȏ ins% �
j
� 0:end=�
t� 5,10:
~!� 1,2,6:�#O,u%:�#O,u%:word+=2
�1� 3,4,8,7:�#O,u%:�#O,u%:�#O,u%:�#O,u%:word+=4
�9� 9:�#O,u%:�#O,u%:�#O,u%:�#O,u%:�#O,u%:�#O,u%:word+=6
��
�	� end
�� temp (word+1)*4
�	�#O=t
�� I%=0� word-1
�
�#O,j%
�temp!(I%*4)=j%
��
�� j%<>0 � �
�code%(o%)=temp
�

�#O
�

(� object_place(objects%,1)
2� people_place(people%,1)
<� temp(256)
F
P�display_special("DONE.")
Z�display_initend
d�
n�display_poll
x� 0
��
�
���restart_interp
��Jump("go")
��
�
�ݤgo
�� restart interpreter
�
ingame%=�
�display$=""
�disps=0
��display_special(" ")
�+�display_special("New game Started...")
� I%=0�2
�display_special(" ")
�display_poll
"�
,�start_screen
6�display(" ")
@�display_poll
Jcur_vars()=start_vars()
Tc_room%=start_room%
^
o_room=-1
h�repos_objects
r�repos_people
|-�callcode(rooms%(c_room%,13,1),1,c_room%)
�� I%=0 � people%
�Y� people_place(I%,0)=1 � people_place(I%,1)=c_room% � �callcode(people%(I%,7,1),3,I%)
��
��
�-� c_room%<>o_room � �show � �display(" ")
�o_room=c_room%
��display_poll
�curline$=�input
��do
�� 0
�=0
�
���start_screen
5�display("You are "+�getstring(player%(0,1))+".")
fs=player%(1,1)
ls=player%(2,1)
&� y%=fs � ls
0�display(�getstring(y%))
:�
D�display(" ")
N)�display("Press return to continue.")
X
y$=�input
b�display(" ")
l�display(" ")
v�
�
���do
�(� **************first directions....
�:� �first(curline$)="GO" � curline$=�notfirst(curline$)
�Ȏ �first(curline$) �
�� "U","UP":
�C� U= � � �report("There is no exit in that direction.") � �d(7)
�� "D","DOWN":
�C� D= � � �report("There is no exit in that direction.") � �d(8)
�� "N","NORTH":
�C� N= � � �report("There is no exit in that direction.") � �d(6)
�� "S","SOUTH":
�C� S= � � �report("There is no exit in that direction.") � �d(5)
� "E","EAST":
C� E= � � �report("There is no exit in that direction.") � �d(3)
� "W","WEST":
 C� W= � � �report("There is no exit in that direction.") � �d(4)
*� "NW","NORTHWEST":
4E� NW= � � �report("There is no exit in that direction.") � �d(12)
>� "SW","SOUTHWEST":
HE� SW= � � �report("There is no exit in that direction.") � �d(10)
R� "NE","NORTHEAST":
\E� NE= � � �report("There is no exit in that direction.") � �d(11)
f� "SE","SOUTHEAST":
pD� SE= � � �report("There is no exit in that direction.") � �d(9)
z.� ************....then get, put, talk,....
�%� "GET":�get(�notfirst(curline$))
�1� "PICK":� �first(�notfirst(curline$))="UP" �
�(�get(�notfirst(�notfirst(curline$)))
��
�#�display("I don't Understand.")
��
�2� "PUT":� �first(�notfirst(curline$))="DOWN" �
�)�drop(�notfirst(�notfirst(curline$)))
��
�#�display("I don't Understand.")
��
�'� "DROP":�drop(�notfirst(curline$))
�&� "SAY":�talk(�notfirst(curline$))
� "INV","INVENTORY":�inv
'� "LOOK":�look(�notfirst(curline$))
+� "DESCRIBE":�look(�notfirst(curline$))
$� "HELP","?":�help
.�� ************....finally any of the form "<verb> <object|person>", "<verb> <object|person> with|using <object>", "Use <object> to <verb> <object|person>" and "<verb>"
8:
B8� �curline$," WITH ")<>0 � �curline$," USING ")<>0 �
L�type_b_verb
V�
`� �curline$," TO ")<>0 �
j�type_c_verb
t�
~:� �notfirst(curline$)="" � �type_d_verb � �type_a_verb
��
��
��
��
�
���type_d_verb
�� call room only.
�l=�
�$li$=�strip(�strip_end(curline$))
�� rooms%(c_room%,17,1)<>0 �
� bo=rooms%(c_room%,17,1)
�- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
  fl$=�getstring(bo!4)

A  � �keyword_look(fl$,li$)=� � �callcode(bo!12,1,c_room%):l=�
  bo+=16
 �
(�
2� player%(7,1)<>0 �
< bo=player%(7,1)
F- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
P  fl$=�getstring(bo!4)
Z;  � �keyword_look(fl$,li$)=� � �callcode(bo!12,3,0):l=�
d  bo+=16
n �
x�
�*� l=� � �display("You can't "+li$+".")
��
�
���type_a_verb
�-� call room, object, person|object|player
�`� user has to have an object which can <verb> or the player must be able to <verb> and there
�@� must be an object|person|player in the room with the name.
�� this is big.
�!� right first extract data...
�/verb$= �strip(�strip_end(�first(curline$)))
�4obpers$= �strip(�strip_end(�notfirst(curline$)))
�8� �first(obpers$)="THE" � obpers$=�notfirst(obpers$)
�� check we can do this...
verb=0:obpers=0
� player%(7,1)<>0 �
 bo=player%(7,1)
"- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
,  fl$=�getstring(bo!4)
6+  � �keyword_look(fl$,verb$)=� � verb=1
@  bo+=16
J �
T�
^� Io%=0 � objects%
h6 � object_place(Io%,0)=3 � object_place(Io%,1)=0 �
r  � objects%(Io%,8,1)<>0 �
|   bo=objects%(Io%,8,1)
�/   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
�    fl$=�getstring(bo!4)
�-    � �keyword_look(fl$,verb$)=� � verb=1
�    bo+=16
�   �
�  �
� �
��
�� Io%=0� people%
�\� people_place(Io%,1)=c_room% � �toupper(�getstring(people%(Io%,0,1)))=obpers$ �obpers=1
��
�� Io%=0� objects%
�u� object_place(Io%,1)=c_room% � object_place(Io%,0)=1 � �toupper(�getstring(objects%(Io%,0,1)))=obpers$ �obpers=1
�
� obpers=0 �
_ � obpers$="ME" � obpers$="MYSELF" obpers$=�toupper(�getstring(player%(0,1))) TEHN obpers=2
&�
0� verb=0 � obpers=0 �
:/� verb=0 � �display("You can't "+verb$+".")
D7� obpers=0 � �display("There's not a "+obpers$+".")
N�
X� call room
b� rooms%(c_room%,17,1)<>0 �
l bo=rooms%(c_room%,17,1)
v- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
�  fl$=�getstring(bo!4)
�?  � �keyword_look(fl$,verb$)=� � �callcode(bo!12,1,c_room%)
�  bo+=16
� �
��
�� call objects and player
�� player%(7,1)<>0 �
� bo=player%(7,1)
�- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
�  fl$=�getstring(bo!4)
�:  � �keyword_look(fl$,verb$)=� � �callcode(bo!12,3,0):
�  bo+=16
� �
�
� Io%=0 � objects%
6 � object_place(Io%,0)=3 � object_place(Io%,1)=0 �
   � objects%(Io%,8,1)<>0 �
*   bo=objects%(Io%,8,1)
4/   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
>    fl$=�getstring(bo!4)
H=    � �keyword_look(fl$,verb$)=� � �callcode(bo!12,2,Io%)
R    bo+=16
\   �
f  �
p �
z�
�-� call the thing the act is bestowed upon
�� Io%=0� people%
�T� people_place(Io%,1)=c_room% � �toupper(�getstring(people%(Io%,0,1)))=obpers$ �
�  � people%(Io%,10,1)<>0 �
�   bo=people%(Io%,10,1)
�/   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
�    fl$=�getstring(bo!4)
�=    � �keyword_look(fl$,verb$)=� � �callcode(bo!12,3,Io%)
�    bo+=16
�   �
�  �
��
��
� Io%=0� objects%
m� object_place(Io%,1)=c_room% � object_place(Io%,0)=1 � �toupper(�getstring(objects%(Io%,0,1)))=obpers$ �
  � objects%(Io%,7,1)<>0 �
$   bo=objects%(Io%,7,1)
./   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
8    fl$=�getstring(bo!4)
B=    � �keyword_look(fl$,verb$)=� � �callcode(bo!12,2,Io%)
L    bo+=16
V   �
`  �
j�
t�
~� obpers=2 �
�� player%(6,1)<>0 �
� bo=player%(6,1)
�- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
�  fl$=�getstring(bo!4)
�:  � �keyword_look(fl$,verb$)=� � �callcode(bo!12,3,0):
�  bo+=16
� �
��
��
��
��
�
��type_b_verb

2� "<verb> <object|person> with|using <object>"
-� call room, object, person|object|player
8� user has to have an object with the name and there
(@� must be an object|person|player in the room with the name.
2f=�
<verb$=�first(curline$)
F curline$=�notfirst(curline$)
P� curline$="" � f=�
Z� �curline$," WITH ")<>0 �
d.obpers$=�curline$,1,�curline$," WITH ")-1)
n-curline$=�curline$,�curline$," WITH ")+6)
x�
�� �curline$," USING ")<>0 �
�/obpers$=�curline$,1,�curline$," USING ")-1)
�.curline$=�curline$,�curline$," USING ")+7)
��
�f=�
��
��
�� curline$="" � f=�
�object$=curline$
�8� �first(object$)="THE" � object$=�notfirst(object$)
�8� �first(obpers$)="THE" � obpers$=�notfirst(obpers$)
�%�full_verb(verb$,obpers$,object$)
��

��type_c_verb
.� "Use <object> to <verb> <object|person>"
"-� call room, object, person|object|player
,8� user has to have an object with the name and there
6@� must be an object|person|player in the room with the name.
@ curline$=�notfirst(curline$)
J;� �first(curline$)="THE" � curline$=�notfirst(curline$)
T,object$=�curline$,1,�curline$," TO ")-1)
^+curline$=�curline$,�curline$," TO ")+4)
hverb$=�first(curline$)
r curline$=�notfirst(curline$)
|obpers$=curline$
�8� �first(obpers$)="THE" � obpers$=�notfirst(obpers$)
�%�full_verb(verb$,obpers$,object$)
��
�
� ��full_verb(verb$,to$,from$)
�verb=0:to=0:from=0
�� player%(7,1)<>0 �
� bo=player%(7,1)
�- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
�  fl$=�getstring(bo!4)
�+  � �keyword_look(fl$,verb$)=� � verb=1
�  bo+=16
� �
 �
 � Io%=0 � objects%
 6 � object_place(Io%,0)=3 � object_place(Io%,1)=0 �
 &  � objects%(Io%,8,1)<>0 �
 0   bo=objects%(Io%,8,1)
 :/   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
 D    fl$=�getstring(bo!4)
 N-    � �keyword_look(fl$,verb$)=� � verb=1
 X    bo+=16
 b   �
 l  �
 v �
 ��
 �� Io%=0� people%
 �U� people_place(Io%,1)=c_room% � �toupper(�getstring(people%(Io%,0,1)))=to$ � to=1
 ��
 �� Io%=0� objects%
 �n� object_place(Io%,1)=c_room% � object_place(Io%,0)=1 � �toupper(�getstring(objects%(Io%,0,1)))=to$ � to=1
 �n� object_place(Io%,1)=0 � object_place(Io%,0)=3 � �toupper(�getstring(objects%(Io%,0,1)))=from$ � from=Io%
 ��
 �� to=0 �
 �O � to$="ME" � to$="MYSELF" to$=�toupper(�getstring(player%(0,1))) TEHN to=2
 ��
 �� verb=0 � to=0 � from=0 �
 �.� verb=0 � �display("It can't "+verb$+".")
!/� to=0 � �display("There's not a "+to$+".")
!6� from=0 � �display("You havn't got a "+from$+".")
!�
! Io%=from
!*6 � object_place(Io%,0)=3 � object_place(Io%,1)=0 �
!4  � objects%(Io%,8,1)<>0 �
!>   bo=objects%(Io%,8,1)
!H/   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
!R    fl$=�getstring(bo!4)
!\=    � �keyword_look(fl$,verb$)=� � �callcode(bo!12,2,Io%)
!f    bo+=16
!p   �
!z  �
!� �
!�-� call the thing the act is bestowed upon
!�� Io%=0 � people%
!�P� people_place(Io%,1)=c_room% � �toupper(�getstring(people%(Io%,0,1)))=to$ �
!�  � people%(Io%,10,1)<>0 �
!�   bo=people%(Io%,10,1)
!�/   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
!�    fl$=�getstring(bo!4)
!�=    � �keyword_look(fl$,verb$)=� � �callcode(bo!12,3,Io%)
!�    bo+=16
!�   �
!�  �
!��
"�
"� Io%=0� objects%
"i� object_place(Io%,1)=c_room% � object_place(Io%,0)=1 � �toupper(�getstring(objects%(Io%,0,1)))=to$ �
"$  � objects%(Io%,7,1)<>0 �
".   bo=objects%(Io%,7,1)
"8/   ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
"B    fl$=�getstring(bo!4)
"L=    � �keyword_look(fl$,verb$)=� � �callcode(bo!12,2,Io%)
"V    bo+=16
"`   �
"j  �
"t�
"~�
"�� to=2 �
"�� player%(6,1)<>0 �
"� bo=player%(6,1)
"�- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
"�  fl$=�getstring(bo!4)
"�:  � �keyword_look(fl$,verb$)=� � �callcode(bo!12,3,0):
"�  bo+=16
"� �
"��
"��
"��
"��
#
#
��look(ii$)
#ii$=�strip(�strip_end(ii$))
#� ii$="" �
#(	�show
#2�
#<+� �first(ii$)="AT" � ii$=�notfirst(ii$)
#F,� �first(ii$)="THE" � ii$=�notfirst(ii$)
#Pii$=�strip(�strip_end(ii$))
#Z� Io%=0 � people%
#d2� �toupper(�getstring(people%(Io%,0,1)))=ii$ �
#nA�describe(people%(Io%,0,1),people%(Io%,1,1),people%(Io%,2,1))
#x�
#��
#�� Io%=0�objects%
#�3� �toupper(�getstring(objects%(Io%,0,1)))=ii$ �
#�D�describe(objects%(Io%,0,1),objects%(Io%,1,1),objects%(Io%,2,1))
#��
#��
#��
#��
#�
#���describe(a,b,c)
#��display(" ")
#��display(�getstring(a)+":")
#�� Iy%=b � c
$�display(�getstring(Iy%))
$�
$�
$"
$,
��help
$6�display(" ")
$@K�display("-----------------------------------------------------------")
$J�display("Help:")
$TK�display("-----------------------------------------------------------")
$^�display(" ")
$hA�display(" n,s,e,w,u,d,ne,nw,se and sw : Go in a direction.")
$r�display(" ")
$|9�display(" inv                         : Inventory.")
$��display(" ")
$�=�display(" get <object>                : Get an object.")
$��display(" ")
$�?�display(" drop <object>               : drop and object.")
$��display(" ")
$�=�display(" say <sentance>              : say something.")
$��display(" ")
$�A�display(" look [<object|person>]      : look at something.")
$��display(" ")
$��display("Actions:")
$�-�display(" <verb> [the] <object|person>")
$�G�display(" <verb> [the] <object|person> with|using [the] <object>")
$�C�display(" Use [the] <object> to <verb> [the] <object|person>")
%�display(" <verb>")
%�display(" ")
%K�display("-----------------------------------------------------------")
%&�display(" ")
%0�
%:
%D	��inv
%N	n_o=0
%X� I%=0 � objects%
%bG� object_place(I%,0)=3 � object_place(I%,1)=0 � temp(n_o)=I%:n_o+=1
%l�
%vȎ n_o �
%�(� 0:�display("You have no objects.")
%�E� 1:�display("You have a "+�getstring(objects%(temp(0),0,1))+".")
%�o� 2:�display("You have a "+�getstring(objects%(temp(0),0,1))+" and "+�getstring(objects%(temp(1),0,1))+".")
%�
%�l$="You have a "
%�� I%=0 � n_o-3
%�1l$+=�getstring(objects%(temp(I%),0,1))+", a "
%��
%�al$+=�getstring(objects%(temp(n_o-2),0,1))+" and a "+�getstring(objects%(temp(n_o-1),0,1))+"."
%��display(l$)
%��
%��
%�
&��talk(lo$)
&li$=�strip(�strip_end(lo$))
&� Io%=0 � people%
& #� people_place(Io%,1)=c_room% �
&*� people%(Io%,11,1)<>0 �
&4 bo=people%(Io%,11,1)
&>- ȕ !bo<>0 � bo!4<>0 � bo!8<>0 � bo!12<>0
&H  fl$=�getstring(bo!4)
&R8  � �keyword_look(fl$,li$)=� ��callcode(bo!12,3,Io%)
&\  bo+=16
&f �
&p�
&z�
&��
&��
&�
&���get(lo$)
&�,� �first(lo$)="THE" � lo$=�notfirst(lo$)
&�li$=�strip(�strip_end(lo$))
&�p=�
&�� I%=0 � objects%
&�9� object_place(I%,0)=1 � object_place(I%,1)=c_room% �
&�3 � �toupper(�getstring(objects%(I%,0,1)))=li$ �
&�	  p=�
&�  � objects%(I%,4,0)<>-1 �
&�Z   �display("You try to move the "+�getstring(objects%(I%,0,1))+" but it won't move.")
'  �
'   object_place(I%,0)=3
'   object_place(I%,1)=0
'$@   �display("You get the "+�getstring(objects%(I%,0,1))+".")
'.  �
'8 �
'B�
'L�
'V/� p=� � �display("You cannot see the "+lo$)
'`�
'j
't��drop(lo$)
'~,� �first(lo$)="THE" � lo$=�notfirst(lo$)
'�li$=�strip(�strip_end(lo$))
'�p=�
'�� I%=0 � objects%
'�3� object_place(I%,0)=3 � object_place(I%,1)=0 �
'�3 � �toupper(�getstring(objects%(I%,0,1)))=li$ �
'�	  p=�
'�  � objects%(I%,4,0)<>-1 �
'�V   �display("You try to drop the "+�getstring(objects%(I%,0,1))+" but you can't.")
'�  �
'�   object_place(I%,0)=1
'�!   object_place(I%,1)=c_room%
'�A   �display("You drop the "+�getstring(objects%(I%,0,1))+".")
(  �
(
 �
(�
(�
((/� p=� � �display("You cannot see the "+lo$)
(2�
(<
(F
��d(o)
(Pc� directions: call direction code: leaving, entering, see and unsee code is called by the code.
(Z-�callcode(rooms%(c_room%,o,1),01,c_room%)
(d�
(n
(x��callcode(i,c,d)
(�7� block,code_caller_type,code_caller_number,endcode
(�� i<>0 �
(�code_caller_type=c
(�code_caller_number=d
(�disps+=1
(�block=code%(i)
(�
endcode=�
(��
(�Ȏ !block �
(�� 0:endcode=�:block+=4
(�N� 1:�code_print(block):block+=12                                      :� Y
(�N� 2:�code_goto(block,code_caller_type,code_caller_number):block+=12   :� Y
(�N� 3:�code_give(block):block+=20                                       :� Y
)N� 4:�code_move(block):block+=20                                       :� Y
)N� 5:�code_end:block+=4                                                :� Y
)N� 6:�code_error:block+=12                                             :� Y
)"N� 7:�code_set(block,code_caller_type,code_caller_number):block+=20    :� Y
),N� 8:�code_change(block,code_caller_type,code_caller_number):block+=20 :� Y
)6P� 9:block=�code_if(block,code_caller_type,code_caller_number)           :� Y
)@) �report("Corrupt code file found.")
)J�
)T� endcode=�
)^disps-=1
)h� disps=0 �
)r �display(display$)
)| display$=""
)��
)��
)��
)�
)���callcode_x(i,c,d)
)�7� block,code_caller_type,code_caller_number,endcode
)�� i<>0 �
)�code_caller_type=c
)�code_caller_number=d
)�disps+=1
)�block=i
)�
endcode=�
)��
*Ȏ !block �
*� 0,10:endcode=�:block+=4
*N� 1:�code_print(block):block+=12                                      :� Y
*&N� 2:�code_goto(block,code_caller_type,code_caller_number):block+=12   :� Y
*0N� 3:�code_give(block):block+=20                                       :� Y
*:N� 4:�code_move(block):block+=20                                       :� Y
*DN� 5:�code_end:block+=4                                                :� Y
*NN� 6:�code_error:block+=12                                             :� Y
*XN� 7:�code_set(block,code_caller_type,code_caller_number):block+=20    :� Y
*bN� 8:�code_change(block,code_caller_type,code_caller_number):block+=20 :� Y
*lP� 9:block=�code_if(block,code_caller_type,code_caller_number)           :� Y
*v) �report("Corrupt code file found.")
*��
*�� endcode=�
*�disps-=1
*�� disps=0 �
*� �display(display$)
*� display$=""
*��
*��
*��
*�
*�ݤcode_if(b,y,u)
*�K� var,num,block,code_caller_number,code_caller_type,ppp,co,e,v$,y$,op,p
*�block=b
+code_caller_number=u
+code_caller_type=y
+block+=8
+ var=!block
+*block+=8
+4
op=!block
+>block+=8
+Hnum=!block
+Rblock+=4
+\v$=�getvar(var)
+fy$=�getstring(num)
+p� op<0 � op>3 �
+z.�display("Unknown conditional operation.")
+��
+�Ȏ var �
+�
� 1,0:
+�Ȏ op �
+�N � 0:� �v$,y$)<>0 � �callcode_x(block,code_caller_type,code_caller_number)
+�M � 1:� �v$,y$)=0 � �callcode_x(block,code_caller_type,code_caller_number)
+�8 �display("Bad conditional operation with ob_got.")
+��
+�
+�Ȏ op �
+�O � 0:� �(y$)=�(v$) � �callcode_x(block,code_caller_type,code_caller_number)
+�P � 1:� �(y$)<>�(v$) � �callcode_x(block,code_caller_type,code_caller_number)
+�O � 2:� �(y$)>�(v$) � �callcode_x(block,code_caller_type,code_caller_number)
,O � 3:� �(y$)<�(v$) � �callcode_x(block,code_caller_type,code_caller_number)
,�
,�
,$�
,.e=�
,8p=0
,B�
,Lins%=!block
,Vblock+=4
,`
Ȏ ins% �
,j� 0:e=�
,t� 10:� p=0 �
,~e=�
,��
,�p-=1
,��
,�� 5:
,�� 1,2,6:block+=8
,�� 3,4,8,7:block+=16
,�� 9:block+=16:p+=1
,��
,�� e
,�
=block
,�
,�ݤcode_ifold(b,y,u)
-K� var,num,block,code_caller_number,code_caller_type,ppp,co,e,v$,y$,op,p
-
block=b
-code_caller_number=u
-code_caller_type=y
-(block+=8
-2var=!block
-<block+=8
-Fnum=!block
-Pblock+=4
-Zv$=�getvar(var)
-dy$=�getstring(num)
-n	op=-1
-xȎ �y$,1,1) �
-� � "=":op=0:y$=�strip(�y$,2))
-�� "<":Ȏ �y$,2,1) �
-� � ">":op=1:y$=�strip(�y$,3))
-� op=2:y$=�strip(�y$,2))
-��
-� � ">":op=3:y$=�strip(�y$,2))
-��
-�
� op=-1 �
-�.�display("Unknown conditional operation.")
-��
-�Ȏ var �
-�� 1:
-�Ȏ op �
.N � 0:� �v$,y$)<>0 � �callcode_x(block,code_caller_type,code_caller_number)
.M � 1:� �v$,y$)=0 � �callcode_x(block,code_caller_type,code_caller_number)
.8 �display("Bad conditional operation with ob_got.")
."�
.,
.6Ȏ op �
.@I � 0:� y$=v$ � �callcode_x(block,code_caller_type,code_caller_number)
.JJ � 1:� y$<>v$ � �callcode_x(block,code_caller_type,code_caller_number)
.TI � 2:� y$<v$ � �callcode_x(block,code_caller_type,code_caller_number)
.^I � 3:� y$>v$ � �callcode_x(block,code_caller_type,code_caller_number)
.h�
.r�
.|�
.�e=�
.�p=0
.��
.�ins%=!block
.�block+=4
.�
Ȏ ins% �
.�� 0:e=�
.�� 10:� p=0 �
.�e=�
.��
.�p-=1
.��
.�� 5:
/� 1,2,6:block+=8
/� 3,4,8,7:block+=16
/� 9:block+=16:p+=1
/&�
/0� e
/:
=block
/D
/N��code_give(b)
/X� per,ob,block
/bblock=b
/lblock+=4
/vpert=!block
/�block+=4
/�per=!block
/�block+=4
/�obt=!block
/�block+=4
/�
ob=!block
/�block+=4
/�object_place(ob,0)=pert
/�object_place(ob,1)=per
/��
/�
/���code_move(b)
/�� per,ob,block
0block=b
0block+=4
0pert=!block
0 block+=4
0*per=!block
04block+=4
0>obt=!block
0Hblock+=4
0R
ob=!block
0\block+=4
0f� obt=1 � ob=1 � ob=c_room%
0p
Ȏ pert �
0z� 2:� object
0�object_place(per,0)=obt
0�object_place(per,1)=ob
0�� 3:� person
0�
� per=0 �
0�2�report("player vannot be moved by P_move().")
0��
0�people_place(per,0)=obt
0�people_place(per,1)=ob
0��
0��
0��
0�
0���code_goto(b,y,u)
1;� var,num,block,code_caller_number,code_caller_type,ppp
1block=b
1code_caller_number=u
1$code_caller_type=y
1.block+=8
18var=!block
1B� var=1 � var=c_room%
1Lblock+=4
1V+� 1) Call all unsee: of people in room.
1`� 2) Call leave: of room
1j� 3) Move to new room
1t� 4) Call enter: of room
1~)� 5) Call all see: of people in room.
1�� I%=0 � people%
1�Y� people_place(I%,0)=1 � people_place(I%,1)=c_room% � �callcode(people%(I%,8,1),3,I%)
1��
1�-�callcode(rooms%(c_room%,14,1),1,c_room%)
1�c_room%=var
1�-�callcode(rooms%(c_room%,13,1),1,c_room%)
1�� I%=0 � people%
1�Y� people_place(I%,0)=1 � people_place(I%,1)=c_room% � �callcode(people%(I%,7,1),3,I%)
1��
1��
1�
1���code_change(b,y,u)
27� var,num,block,code_caller_number,code_caller_type
2
block=b
2code_caller_number=u
2code_caller_type=y
2(block+=8
22var=!block
2<block+=8
2Fnum=!block
2Pblock+=4
2Z.� var<2 � �report("Can't alter variable.")
2d
� var=3 �
2n2 � �(player%(3,0))=1 � �(player%(3,0)+num)<1 �
2xA  �callcode(player%(4,1),code_caller_type,code_caller_number)
2� �
2� player%(3,0)+=num
2��
2� � var=2 �
2�  Ȏ code_caller_type �
2�
  � 2:
2�[  � �(objects%(code_caller_number,5,0))=1 � �(objects%(code_caller_number,5,0)+num)<1 �
2�U  �callcode(objects%(code_caller_number,6,1),code_caller_type,code_caller_number)
2�  �
2�+  objects%(code_caller_number,5,0)+=num
2�
  � 3:
2�  � code_caller_number=0 �
2�3  � �(player%(3,0))=1 � �(player%(3,1)+num)<1 �
3A  �callcode(player%(4,1),code_caller_type,code_caller_number)
3  �
3  player%(3,0)+=num
3"  �
3,Y  � �(people%(code_caller_number,5,0))=1 � �(people%(code_caller_number,5,0)+num)<1 �
36T  �callcode(people%(code_caller_number,6,1),code_caller_type,code_caller_number)
3@  �
3J*  people%(code_caller_number,5,0)+=num
3T  �
3^F   �report("Can't chage energy: for something with out energy:.")
3h  �
3r �
3|  cur_vars(var)+=num
3� �
3��
3��
3�
3���code_set(b,y,u)
3�7� var,num,block,code_caller_number,code_caller_type
3�block=b
3�code_caller_number=u
3�code_caller_type=y
3�block+=8
3�var=!block
3�block+=8
3�num=!block
4block+=4
4.� var<2 � �report("Can't alter variable.")
4
� var=3 �
4&$� �(player%(3,0))=1 � �(num)<1 �
40?�callcode(player%(4,1),code_caller_type,code_caller_number)
4:�
4Dplayer%(3,0)=num
4N�
4X
� var=2 �
4bȎ code_caller_type �
4l� 2:
4v8� �(objects%(code_caller_number,5,0))=1 � �(num)<1 �
4�S�callcode(objects%(code_caller_number,6,1),code_caller_type,code_caller_number)
4��
4�(objects%(code_caller_number,5,0)=num
4�� 3:
4�� code_caller_number=0 �
4�% � �(player%(3,0))=1 � �(num)<1 �
4�A  �callcode(player%(4,1),code_caller_type,code_caller_number)
4� �
4� player%(3,0)=num
4��
4�8 � �(people%(code_caller_number,5,0))=1 � �(num)<1 �
4�T  �callcode(people%(code_caller_number,6,1),code_caller_type,code_caller_number)
4� �
5( people%(code_caller_number,5,0)=num
5�
5D �report("Can't chage energy: for something with out energy:.")
5 �
5*�
54cur_vars(var)=num
5>�
5H�
5R�
5\
5f��code_end
5p�display("")
5z�display("")
5��display("*** THE END ***")
5��display("")
5�(�display("Press return to restart.")
5�
i$=�input
5��cls
5��Jump("go")
5��
5�
5���code_print(b)
5�� block
5�block=b
5�3� first decide whether its a variable or string
5�block+=4
6type=!block
6block+=4
6num=!block
6$block+=4
6.
Ȏ type �
68� 07:�code_print_str(block)
6B� 05:�code_print_var(block)
6L( �report("Can't print this label.")
6V�
6`�
6j
6t��code_print_str(b)
6~� block
6�block=b
6�t$=�getstring(num)
6��
6�ȕ �t$,1,2)<>"\n" � �(t$)>0
6�display$+=�t$,1,1)
6�
t$=�t$,2)
6��
6� � �(t$)<>0�display(display$)
6�� �(t$)>0 �
6�
t$=�t$,3)
6�display$=""
6��
7
� �(t$)=0
7
�
7
7��code_print_var(b)
7(� block
72block=b
7<t$=�getvar(num)
7Fdisplay$+=t$
7P�
7Z
7dݤgetvar(c)
7n
Ȏ c �
7x(� 0:=�getstring(rooms%(c_room%,0,1))
7�� 1:ob=rooms%(c_room%,15,1)
7�	n_o=0
7�� I%=0 � objects%
7�G� object_place(I%,0)=3 � object_place(I%,1)=0 � temp(n_o)=I%:n_o+=1
7��
7�Ȏ n_o �
7�� 0:=""
7�*� 1:=�getstring(objects%(temp(0),0,1))
7�P� 2:=�getstring(objects%(temp(0),0,1))+" "+�getstring(objects%(temp(1),0,1))
7�
7�	l$=""
7�� I%=0 � n_o-3
7�.l$+=�getstring(objects%(temp(I%),0,1))+" "
8�
8Wl$+=�getstring(objects%(temp(n_o-2),0,1))+" "+�getstring(objects%(temp(n_o-1),0,1))
8=l$
8"�
8,� 2:Ȏ code_caller_type �
86*� 2:=�objects%(code_caller_number,5,0)
8@S� 3:� code_caller_number=0 � =�player%(3,1) � =�people%(code_caller_number,5,0)
8J ="-1"
8T�
8^� 3:=�player%(3,0)
8h�
8r=�(cur_vars(c))
8|
8���code_error
8�@�report("visable() and invisable() are no longer suported.")
8�block+=4
8��
8�
8�
��show
8��display(" ")
8� �display_SetTitle("Running")
8�=�display_SetPosIndicator(�getstring(rooms%(c_room%,0,1)))
8�fs=rooms%(c_room%,1,1)
8�ls=rooms%(c_room%,2,1)
8�� y%=fs � ls
8��display(�getstring(y%))
9�
9�display(" ")
9	n_o=0
9&� I%=0 � objects%
90M� object_place(I%,0)=1 � object_place(I%,1)=c_room% � temp(n_o)=I%:n_o+=1
9:�
9DȎ n_o �
9N.� 0:�display("There are no objects here.")
9XJ� 1:�display("There is a "+�getstring(objects%(temp(0),0,1))+" here.")
9bt� 2:�display("There is a "+�getstring(objects%(temp(0),0,1))+" and "+�getstring(objects%(temp(1),0,1))+" here.")
9l
9vl$="There is a "
9�� I%=0 � n_o-3
9�1l$+=�getstring(objects%(temp(I%),0,1))+", a "
9��
9�gl$+=�getstring(objects%(temp (n_o-2),0,1))+" and a "+�getstring(objects%(temp(n_o-1),0,1))+" here."
9��display(l$)
9��
9�	n_o=0
9�� I%=0 � people%
9�M� people_place(I%,0)=1 � people_place(I%,1)=c_room% � temp(n_o)=I%:n_o+=1
9��
9�Ȏ n_o �
9�-� 0:�display("There are no people here.")
9�N� 1:�display("There is also a "+�getstring(people%(temp(0),0,1))+" here.")
:y� 2:�display("There is also a "+�getstring(people%(temp(0),0,1))+" and a "+�getstring(people%(temp(1),0,1))+" here.")
:
:l$="There is also "
: � I%=0 � n_o-3
:*3l$+="a "+�getstring(people%(temp(I%),0,1))+", "
:4�
:>il$+="a "+�getstring(people%(temp(n_o-2),0,1))+" and a "+�getstring(people%(temp(n_o-1),0,1))+" here."
:H�display(l$)
:R�
:\/N=�:S=�:W=�:E=�:NE=�:SW=�:NW=�:SE=�:U=�:D=�
:f"� rooms%(c_room%,3,0)<>0 � E=�
:p"� rooms%(c_room%,4,0)<>0 � W=�
:z"� rooms%(c_room%,5,0)<>0 � S=�
:�"� rooms%(c_room%,6,0)<>0 � N=�
:�"� rooms%(c_room%,7,0)<>0 � U=�
:�"� rooms%(c_room%,8,0)<>0 � D=�
:�#� rooms%(c_room%,9,0)<>0 � SE=�
:�$� rooms%(c_room%,10,0)<>0 � SW=�
:�$� rooms%(c_room%,11,0)<>0 � NE=�
:�$� rooms%(c_room%,12,0)<>0 � NW=�
:�!� N+E+W+S+NW+NE+SE+SW+U+D=0 �
:�#�display("There are no exits.")
:��
:�i$=�dirs
:�"� N+E+W+S+NW+NE+SE+SW+U+D=-1 �
:�4o$="There is an exit to the "+�i$,1,�(i$)-2)+"."
;�
;2o$="There are exits to the "+�special1(i$)+"."
;�
;$�display(o$)
;.�
;8�display(" ")
;B�
;L
;V
ݤdirs
;`	l$=""
;j� N=� � l$+="north, "
;t� S=� � l$+="south, "
;~� E=� � l$+="east, "
;�� W=� � l$+="west, "
;�� U=� � l$+="up, "
;�� D=� � l$+="down, "
;�� NW=� � l$+="northwest, "
;�� SE=� � l$+="southeast, "
;�� NE=� � l$+="northeast, "
;�� SW=� � l$+="southwest, "
;�=l$
;�
;�ݤspecial1(t$)
;�y$=�t$,1,�(t$)-2)
;�I%=1
<	LI%=0
<
ȕ I%<>0
<
LI%=I%
<I%=�y$,",",I%+1)
<(�
<2#=�y$,1,LI%-1)+" and"+�y$,LI%+1)
<<
<Fݤgetstring(y%)
<P=strings$(y%)
<Z
<d��repos_people
<npeople_place()=-1
<x� I%=2 � rooms%
<� � rooms%(I%,16,1)<>0 �
<�  block=rooms%(I%,16,1)
<�  ȕ !block<>0 � block!4<>0
<�   i=block!4
<�   block+=8
<�A   � people_place(i,1)<>-1 � �report("person in two places.")
<�   people_place(i,0)=&01
<�   people_place(i,1)=I%
<�  �
<� �
<��
<��
<�
=��repos_objects
=object_place()=-1
=&� can be in player, room or person
="� I% = 0 � people%
=, � people%(I%,9,1)<>0 �
=6  block=people%(I%,9,1)
=@  ȕ !block<>0 � block!4<>0
=J   i=block!4
=T   block+=8
=^A   � object_place(i,1)<>-1 � �report("object in two places.")
=h   object_place(i,0)=&03
=r   object_place(i,1)=I%
=|  �
=� �
=��
=�� I%=2 � rooms%
=� � rooms%(I%,15,1)<>0 �
=�  block=rooms%(I%,15,1)
=�  ȕ !block<>0 � block!4<>0
=�   i=block!4
=�   block+=8
=�A   � object_place(i,1)<>-1 � �report("object in two places.")
=�   object_place(i,0)=&01
=�   object_place(i,1)=I%
=�  �
=� �
>�
>� player%(5,1)<>0 �
> block=player%(5,1)
>& ȕ !block<>0 � block!4<>0
>0  i=block!4
>:  block+=8
>D@  � object_place(i,1)<>-1 � �report("object in two places.")
>N  object_place(i,0)=&03
>X  object_place(i,1)=I%
>b �
>l�
>v�
>�
>���ERROR
>�� �<>(1<<31) �
>�� 0 : �:� �:L=�:�
>��
>�i=�("FN"+�$)
>��
>�
>���Jump(l$)
>�� (1<<31),l$
>��
>�
>���quit_now
?�
?�
�
00000000  0d 00 0a 29 f4 20 42 79  74 65 2d 63 6f 64 65 20  |...). Byte-code |
00000010  49 6e 74 65 72 70 72 65  74 65 72 20 66 6f 72 20  |Interpreter for |
00000020  44 61 76 69 64 52 50 47  32 0d 00 14 1d f4 20 28  |DavidRPG2..... (|
00000030  63 29 20 44 61 76 69 64  20 53 70 65 6e 63 65 2c  |c) David Spence,|
00000040  20 31 39 39 38 2e 0d 00  1e 04 0d 00 28 0f 76 65  | 1998.......(.ve|
00000050  72 24 3d 22 32 2e 35 38  22 0d 00 32 04 0d 00 3c  |r$="2.58"..2...<|
00000060  0d ee 85 20 f2 45 52 52  4f 52 0d 00 46 04 0d 00  |... .ERROR..F...|
00000070  50 20 c8 9b 20 22 3c 44  61 76 69 64 52 50 47 32  |P .. "<DavidRPG2|
00000080  24 44 69 72 3e 2e 4c 69  62 72 61 72 79 22 0d 00  |$Dir>.Library"..|
00000090  5a 2c c8 9b 20 22 3c 44  61 76 69 64 52 50 47 32  |Z,.. "<DavidRPG2|
000000a0  24 44 69 72 3e 2e 3c 44  61 76 69 64 52 50 47 32  |$Dir>.<DavidRPG2|
000000b0  24 44 69 73 70 6c 61 79  3e 22 0d 00 64 25 f2 64  |$Display>"..d%.d|
000000c0  69 73 70 6c 61 79 5f 69  6e 69 74 73 74 61 72 74  |isplay_initstart|
000000d0  28 22 49 6e 74 65 72 70  72 65 74 65 72 22 29 0d  |("Interpreter").|
000000e0  00 6e 04 0d 00 78 4a f2  64 69 73 70 6c 61 79 5f  |.n...xJ.display_|
000000f0  73 70 65 63 69 61 6c 28  22 42 79 74 65 2d 63 6f  |special("Byte-co|
00000100  64 65 20 49 6e 74 65 72  70 72 65 74 65 72 20 66  |de Interpreter f|
00000110  6f 72 20 21 44 61 76 69  64 52 50 47 32 20 76 65  |or !DavidRPG2 ve|
00000120  72 73 69 6f 6e 20 22 2b  76 65 72 24 29 0d 00 82  |rsion "+ver$)...|
00000130  2b f2 64 69 73 70 6c 61  79 5f 73 70 65 63 69 61  |+.display_specia|
00000140  6c 28 22 44 61 76 69 64  20 53 70 65 6e 63 65 2c  |l("David Spence,|
00000150  20 31 39 39 38 2e 22 29  0d 00 8c 53 f4 50 52 4f  | 1998.")...S.PRO|
00000160  43 64 69 73 70 6c 61 79  5f 73 70 65 63 69 61 6c  |Cdisplay_special|
00000170  28 22 54 68 65 20 65 72  72 6f 72 20 6d 65 73 73  |("The error mess|
00000180  61 67 65 73 20 72 65 70  6f 72 74 65 64 20 77 69  |ages reported wi|
00000190  6c 6c 20 62 65 20 71 75  69 74 65 20 76 61 67 75  |ll be quite vagu|
000001a0  65 2c 20 73 6f 72 72 79  21 22 29 0d 00 96 4a f4  |e, sorry!")...J.|
000001b0  50 52 4f 43 64 69 73 70  6c 61 79 5f 73 70 65 63  |PROCdisplay_spec|
000001c0  69 61 6c 28 22 54 68 69  73 20 69 73 20 6f 6e 6c  |ial("This is onl|
000001d0  79 20 61 20 74 65 73 74  20 76 65 72 73 69 6f 6e  |y a test version|
000001e0  20 6f 66 20 74 68 65 20  69 6e 74 65 70 72 65 74  | of the intepret|
000001f0  65 72 2e 22 29 0d 00 a0  50 f4 50 52 4f 43 64 69  |er.")...P.PROCdi|
00000200  73 70 6c 61 79 5f 73 70  65 63 69 61 6c 28 22 44  |splay_special("D|
00000210  6f 6e 27 74 20 62 65 20  73 75 70 72 69 73 65 64  |on't be suprised|
00000220  20 69 66 20 61 6e 20 65  72 72 6f 72 20 69 6e 20  | if an error in |
00000230  61 20 66 69 6c 65 20 63  72 61 73 68 65 73 20 74  |a file crashes t|
00000240  68 69 73 22 29 0d 00 aa  28 f4 50 52 4f 43 64 69  |his")...(.PROCdi|
00000250  73 70 6c 61 79 5f 73 70  65 63 69 61 6c 28 22 69  |splay_special("i|
00000260  6e 74 65 72 70 72 65 74  65 72 21 22 29 0d 00 b4  |nterpreter!")...|
00000270  19 f2 64 69 73 70 6c 61  79 5f 73 70 65 63 69 61  |..display_specia|
00000280  6c 28 22 20 22 29 0d 00  be 04 0d 00 c8 09 65 72  |l(" ")........er|
00000290  72 3d 30 0d 00 d2 0d 69  6e 67 61 6d 65 25 3d a3  |r=0....ingame%=.|
000002a0  0d 00 dc 04 0d 00 e6 21  4f 3d ae 28 a4 64 69 73  |.......!O=.(.dis|
000002b0  70 6c 61 79 5f 74 65 6d  70 64 69 72 2b 22 2e 74  |play_tempdir+".t|
000002c0  65 6d 70 22 29 0d 00 f0  4f e7 20 4f 3d 30 20 8c  |emp")...O. O=0 .|
000002d0  20 f2 72 65 70 6f 72 74  28 22 43 61 6e 27 74 20  | .report("Can't |
000002e0  66 69 6e 64 20 21 44 61  76 69 64 52 50 47 32 20  |find !DavidRPG2 |
000002f0  2d 20 68 61 73 20 69 74  20 62 65 65 6e 20 73 65  |- has it been se|
00000300  65 6e 20 62 79 20 74 68  65 20 66 69 6c 65 72 3f  |en by the filer?|
00000310  22 29 3a e0 0d 00 fa 07  d9 23 4f 0d 01 04 04 0d  |"):......#O.....|
00000320  01 0e 10 f4 20 20 20 4c  6f 61 64 69 6e 67 3a 0d  |....   Loading:.|
00000330  01 18 10 f4 20 20 20 3d  3d 3d 3d 3d 3d 3d 3d 0d  |....   ========.|
00000340  01 22 05 f4 0d 01 2c 5f  f4 20 53 74 72 69 6e 67  |."....,_. String|
00000350  73 3a 20 20 20 20 63 6f  75 6e 74 20 73 74 72 69  |s:    count stri|
00000360  6e 67 73 20 74 68 65 6e  20 70 75 74 20 69 6e 74  |ngs then put int|
00000370  6f 20 61 72 72 61 72 79  20 74 68 65 20 72 69 67  |o arrary the rig|
00000380  68 74 20 73 69 7a 65 20  66 6f 72 20 61 6c 6c 20  |ht size for all |
00000390  74 68 65 20 73 74 72 69  6e 67 73 20 74 6f 20 66  |the strings to f|
000003a0  69 74 2e 0d 01 36 63 f4  20 56 61 72 69 61 62 6c  |it...6c. Variabl|
000003b0  65 73 3a 20 20 6d 61 6b  65 20 61 6e 64 20 61 72  |es:  make and ar|
000003c0  72 61 79 20 66 6f 72 20  74 68 65 20 73 74 61 72  |ray for the star|
000003d0  74 20 76 61 6c 75 65 73  20 61 6e 64 20 6f 6e 65  |t values and one|
000003e0  20 66 6f 72 20 74 68 65  20 63 75 72 72 65 6e 74  | for the current|
000003f0  20 76 61 6c 75 65 73 20  63 6f 6e 74 61 69 6e 69  | values containi|
00000400  6e 67 20 74 68 65 0d 01  40 20 f4 20 20 20 20 20  |ng the..@ .     |
00000410  20 20 20 20 20 20 20 20  20 73 74 61 72 74 20 76  |         start v|
00000420  61 6c 75 65 73 2e 0d 01  4a 61 f4 20 52 6f 6f 6d  |alues...Ja. Room|
00000430  73 3a 20 20 20 20 20 20  70 75 74 20 69 6e 20 61  |s:      put in a|
00000440  6e 20 61 72 72 61 79 20  74 68 65 20 72 69 67 68  |n array the righ|
00000450  74 20 73 69 7a 65 20 66  6f 72 20 74 68 65 20 64  |t size for the d|
00000460  61 74 61 20 28 63 6f 75  6e 74 20 66 69 72 73 74  |ata (count first|
00000470  29 2e 20 50 75 74 20 61  6c 6c 20 6c 69 73 74 73  |). Put all lists|
00000480  20 69 6e 74 6f 20 61 0d  01 54 4b f4 20 20 20 20  | into a..TK.    |
00000490  20 20 20 20 20 20 20 20  20 20 73 65 70 61 72 61  |          separa|
000004a0  74 65 20 62 6c 6f 63 6b  20 6f 66 20 6d 65 6d 6f  |te block of memo|
000004b0  72 79 2c 20 74 68 65 20  72 69 67 68 74 20 73 69  |ry, the right si|
000004c0  7a 65 20 28 6e 6f 74 20  61 6e 20 61 72 72 61 79  |ze (not an array|
000004d0  29 2e 0d 01 5e 1c f4 20  4f 62 6a 65 63 74 73 3a  |)...^.. Objects:|
000004e0  20 20 20 20 53 65 65 20  72 6f 6f 6d 73 2e 0d 01  |    See rooms...|
000004f0  68 1c f4 20 50 65 6f 70  6c 65 3a 20 20 20 20 20  |h.. People:     |
00000500  53 65 65 20 72 6f 6f 6d  73 2e 0d 01 72 39 f4 20  |See rooms...r9. |
00000510  50 6c 61 79 65 72 3a 20  20 20 20 20 53 61 6d 65  |Player:     Same|
00000520  20 61 73 20 72 6f 6f 6d  73 20 62 75 74 20 77 69  | as rooms but wi|
00000530  74 68 20 61 20 73 69 6e  67 6c 65 20 70 6c 61 79  |th a single play|
00000540  65 72 2e 0d 01 7c 47 f4  20 43 6f 64 65 3a 20 20  |er...|G. Code:  |
00000550  20 20 20 20 20 41 72 72  61 79 20 77 69 74 68 20  |     Array with |
00000560  70 6f 69 6e 74 65 72 20  74 6f 20 6d 65 6d 6f 72  |pointer to memor|
00000570  79 20 62 6c 6f 63 6b 73  20 77 69 74 68 20 74 68  |y blocks with th|
00000580  65 20 63 6f 64 65 20 69  6e 2e 0d 01 86 04 0d 01  |e code in.......|
00000590  90 21 f4 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |.!.*************|
000005a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 0d  |***************.|
000005b0  01 9a 19 f4 20 4e 4f 54  45 20 56 45 52 59 20 49  |.... NOTE VERY I|
000005c0  4d 50 4f 52 54 41 4e 54  0d 01 a4 35 f4 20 70 65  |MPORTANT...5. pe|
000005d0  72 73 6f 6e 30 20 61 6e  64 20 76 61 72 73 30 2d  |rson0 and vars0-|
000005e0  33 20 61 72 65 20 64 65  66 69 6e 65 64 20 69 6e  |3 are defined in|
000005f0  20 74 68 69 73 20 70 72  6f 67 72 61 6d 0d 01 ae  | this program...|
00000600  04 0d 01 b8 22 f2 64 69  73 70 6c 61 79 5f 73 70  |....".display_sp|
00000610  65 63 69 61 6c 28 22 4c  6f 61 64 69 6e 67 2e 2e  |ecial("Loading..|
00000620  2e 22 29 0d 01 c2 04 0d  01 cc 26 f4 50 52 4f 43  |.").......&.PROC|
00000630  64 69 73 70 6c 61 79 5f  73 70 65 63 69 61 6c 28  |display_special(|
00000640  22 53 74 72 69 6e 67 73  2e 2e 2e 22 29 0d 01 d6  |"Strings...")...|
00000650  04 0d 01 e0 24 4f 3d 8e  28 a4 64 69 73 70 6c 61  |....$O=.(.displa|
00000660  79 5f 74 65 6d 70 64 69  72 2b 22 2e 53 74 72 69  |y_tempdir+".Stri|
00000670  6e 67 73 22 29 0d 01 ea  0a 6c 69 6e 65 3d 31 0d  |ngs")....line=1.|
00000680  01 f4 05 f5 0d 01 fe 16  e7 20 9a 23 4f 3d 31 30  |......... .#O=10|
00000690  20 8c 20 6c 69 6e 65 2b  3d 31 0d 02 08 09 fd 20  | . line+=1..... |
000006a0  c5 23 4f 0d 02 12 09 cf  23 4f 3d 30 0d 02 1c 14  |.#O.....#O=0....|
000006b0  de 20 73 74 72 69 6e 67  73 24 28 6c 69 6e 65 29  |. strings$(line)|
000006c0  0d 02 26 11 e3 20 49 25  3d 30 b8 6c 69 6e 65 2d  |..&.. I%=0.line-|
000006d0  31 0d 02 30 14 73 74 72  69 6e 67 73 24 28 49 25  |1..0.strings$(I%|
000006e0  29 3d be 23 4f 0d 02 3a  05 ed 0d 02 44 07 d9 23  |)=.#O..:....D..#|
000006f0  4f 0d 02 4e 04 0d 02 58  28 f4 50 52 4f 43 64 69  |O..N...X(.PROCdi|
00000700  73 70 6c 61 79 5f 73 70  65 63 69 61 6c 28 22 56  |splay_special("V|
00000710  61 72 69 61 62 6c 65 73  2e 2e 2e 22 29 0d 02 62  |ariables...")..b|
00000720  04 0d 02 6c 21 4f 3d 8e  28 a4 64 69 73 70 6c 61  |...l!O=.(.displa|
00000730  79 5f 74 65 6d 70 64 69  72 2b 22 2e 56 61 72 73  |y_tempdir+".Vars|
00000740  22 29 0d 02 76 08 45 3d  2d 34 0d 02 80 0d e7 20  |")..v.E=-4..... |
00000750  a2 23 4f 3e 30 20 8c 0d  02 8a 11 45 3d a8 28 28  |.#O>0 .....E=.((|
00000760  a2 23 4f 29 2f 31 30 29  0d 02 94 3e e7 20 45 3c  |.#O)/10)...>. E<|
00000770  3e 28 28 a2 23 4f 29 2f  31 30 29 20 8c 20 f2 72  |>((.#O)/10) . .r|
00000780  65 70 6f 72 74 28 22 45  72 72 6f 72 20 69 6e 20  |eport("Error in |
00000790  76 61 72 69 61 62 6c 65  20 66 69 6c 65 2e 22 29  |variable file.")|
000007a0  3a d9 23 4f 3a e0 0d 02  9e 38 de 20 73 74 61 72  |:.#O:....8. star|
000007b0  74 5f 76 61 72 73 28 45  2b 33 29 3a f4 20 34 20  |t_vars(E+3):. 4 |
000007c0  76 61 72 73 20 61 72 65  20 64 65 66 69 6e 65 64  |vars are defined|
000007d0  20 69 6e 20 74 68 69 73  20 70 72 6f 67 2e 0d 02  | in this prog...|
000007e0  a8 0c e3 20 49 25 3d 31  b8 45 0d 02 b2 0a e8 23  |... I%=1.E.....#|
000007f0  4f 2c 54 25 0d 02 bc 0a  e8 23 4f 2c 55 25 0d 02  |O,T%.....#O,U%..|
00000800  c6 15 73 74 61 72 74 5f  76 61 72 73 28 54 25 29  |..start_vars(T%)|
00000810  3d 55 25 0d 02 d0 05 ed  0d 02 da 05 cd 0d 02 e4  |=U%.............|
00000820  07 d9 23 4f 0d 02 ee 22  e7 20 45 3d 2d 34 20 8c  |..#O...". E=-4 .|
00000830  20 45 3d 30 3a de 20 73  74 61 72 74 5f 76 61 72  | E=0:. start_var|
00000840  73 28 45 2b 33 29 0d 02  f8 13 de 20 63 75 72 5f  |s(E+3)..... cur_|
00000850  76 61 72 73 28 45 2b 33  29 0d 03 02 1b 63 75 72  |vars(E+3)....cur|
00000860  5f 76 61 72 73 28 29 3d  73 74 61 72 74 5f 76 61  |_vars()=start_va|
00000870  72 73 28 29 0d 03 0c 04  0d 03 16 24 f4 50 52 4f  |rs().......$.PRO|
00000880  43 64 69 73 70 6c 61 79  5f 73 70 65 63 69 61 6c  |Cdisplay_special|
00000890  28 22 52 6f 6f 6d 73 2e  2e 2e 22 29 0d 03 20 04  |("Rooms...").. .|
000008a0  0d 03 2a 22 4f 3d 8e 28  a4 64 69 73 70 6c 61 79  |..*"O=.(.display|
000008b0  5f 74 65 6d 70 64 69 72  2b 22 2e 52 6f 6f 6d 73  |_tempdir+".Rooms|
000008c0  22 29 0d 03 34 0e e8 23  4f 2c 72 6f 6f 6d 73 25  |")..4..#O,rooms%|
000008d0  0d 03 3e 13 e8 23 4f 2c  73 74 61 72 74 5f 72 6f  |..>..#O,start_ro|
000008e0  6f 6d 25 0d 03 48 30 e7  20 72 6f 6f 6d 73 25 3d  |om%..H0. rooms%=|
000008f0  30 20 8c 20 f2 72 65 70  6f 72 74 28 22 4e 6f 20  |0 . .report("No |
00000900  52 6f 6f 6d 73 2e 22 29  3a 43 4c 4f 53 45 45 23  |Rooms."):CLOSEE#|
00000910  4f 3a e0 0d 03 52 0d 72  6f 6f 6d 73 25 2d 3d 31  |O:...R.rooms%-=1|
00000920  0d 03 5c 19 de 20 72 6f  6f 6d 73 25 28 72 6f 6f  |..\.. rooms%(roo|
00000930  6d 73 25 2c 31 37 2c 31  29 0d 03 66 15 e3 20 4c  |ms%,17,1)..f.. L|
00000940  25 3d 30 20 b8 20 72 6f  6f 6d 73 25 2d 32 0d 03  |%=0 . rooms%-2..|
00000950  70 0a e8 23 4f 2c 49 25  0d 03 7a 30 e3 20 4a 25  |p..#O,I%..z0. J%|
00000960  3d 30 20 b8 20 31 34 20  20 20 20 20 20 20 3a f4  |=0 . 14       :.|
00000970  20 74 68 65 73 65 20 64  6f 6e 6f 74 20 6e 65 65  | these donot nee|
00000980  64 20 62 6c 6f 63 6b 73  0d 03 84 17 e8 23 4f 2c  |d blocks.....#O,|
00000990  72 6f 6f 6d 73 25 28 49  25 2c 4a 25 2c 30 29 0d  |rooms%(I%,J%,0).|
000009a0  03 8e 17 e8 23 4f 2c 72  6f 6f 6d 73 25 28 49 25  |....#O,rooms%(I%|
000009b0  2c 4a 25 2c 31 29 0d 03  98 05 ed 0d 03 a2 0c e8  |,J%,1)..........|
000009c0  23 4f 2c 69 6e 31 25 0d  03 ac 0c e8 23 4f 2c 69  |#O,in1%.....#O,i|
000009d0  6e 32 25 0d 03 b6 16 e7  20 69 6e 31 25 3d 30 20  |n2%..... in1%=0 |
000009e0  80 20 69 6e 32 25 3d 30  8c 0d 03 c0 15 72 6f 6f  |. in2%=0.....roo|
000009f0  6d 73 25 28 49 25 2c 31  35 2c 30 29 3d 30 0d 03  |ms%(I%,15,0)=0..|
00000a00  ca 15 72 6f 6f 6d 73 25  28 49 25 2c 31 35 2c 31  |..rooms%(I%,15,1|
00000a10  29 3d 30 0d 03 d4 05 cc  0d 03 de 0e 67 3d 28 8f  |)=0.........g=(.|
00000a20  23 4f 29 2d 31 30 0d 03  e8 07 63 3d 31 0d 03 f2  |#O)-10....c=1...|
00000a30  18 c8 95 20 69 6e 31 25  3c 3e 30 20 84 20 69 6e  |... in1%<>0 . in|
00000a40  32 25 3c 3e 30 0d 03 fc  0c e8 23 4f 2c 69 6e 31  |2%<>0.....#O,in1|
00000a50  25 0d 04 06 0c e8 23 4f  2c 69 6e 32 25 0d 04 10  |%.....#O,in2%...|
00000a60  08 63 2b 3d 31 0d 04 1a  05 ce 0d 04 24 10 de 20  |.c+=1.......$.. |
00000a70  74 65 6d 70 20 34 2a 32  2a 63 0d 04 2e 09 cf 23  |temp 4*2*c.....#|
00000a80  4f 3d 67 0d 04 38 0f e3  20 4a 25 3d 30 b8 20 63  |O=g..8.. J%=0. c|
00000a90  2d 31 0d 04 42 0c e8 23  4f 2c 69 6e 31 25 0d 04  |-1..B..#O,in1%..|
00000aa0  4c 0c e8 23 4f 2c 69 6e  32 25 0d 04 56 1a 74 65  |L..#O,in2%..V.te|
00000ab0  6d 70 21 28 28 34 2a 4a  25 2a 32 29 2b 30 29 3d  |mp!((4*J%*2)+0)=|
00000ac0  69 6e 31 25 0d 04 60 1a  74 65 6d 70 21 28 28 34  |in1%..`.temp!((4|
00000ad0  2a 4a 25 2a 32 29 2b 34  29 3d 69 6e 32 25 0d 04  |*J%*2)+4)=in2%..|
00000ae0  6a 05 ed 0d 04 74 1b e7  20 69 6e 31 25 3c 3e 30  |j....t.. in1%<>0|
00000af0  20 84 20 69 6e 32 25 3c  3e 30 20 8c 20 fa 0d 04  | . in2%<>0 . ...|
00000b00  7e 18 72 6f 6f 6d 73 25  28 49 25 2c 31 35 2c 31  |~.rooms%(I%,15,1|
00000b10  29 3d 74 65 6d 70 0d 04  88 05 cd 0d 04 92 0c e8  |)=temp..........|
00000b20  23 4f 2c 69 6e 31 25 0d  04 9c 0c e8 23 4f 2c 69  |#O,in1%.....#O,i|
00000b30  6e 32 25 0d 04 a6 16 e7  20 69 6e 31 25 3d 30 20  |n2%..... in1%=0 |
00000b40  80 20 69 6e 32 25 3d 30  8c 0d 04 b0 15 72 6f 6f  |. in2%=0.....roo|
00000b50  6d 73 25 28 49 25 2c 31  36 2c 30 29 3d 30 0d 04  |ms%(I%,16,0)=0..|
00000b60  ba 15 72 6f 6f 6d 73 25  28 49 25 2c 31 36 2c 31  |..rooms%(I%,16,1|
00000b70  29 3d 30 0d 04 c4 05 cc  0d 04 ce 0e 67 3d 28 8f  |)=0.........g=(.|
00000b80  23 4f 29 2d 31 30 0d 04  d8 07 63 3d 31 0d 04 e2  |#O)-10....c=1...|
00000b90  18 c8 95 20 69 6e 31 25  3c 3e 30 20 84 20 69 6e  |... in1%<>0 . in|
00000ba0  32 25 3c 3e 30 0d 04 ec  0c e8 23 4f 2c 69 6e 31  |2%<>0.....#O,in1|
00000bb0  25 0d 04 f6 0c e8 23 4f  2c 69 6e 32 25 0d 05 00  |%.....#O,in2%...|
00000bc0  08 63 2b 3d 31 0d 05 0a  05 ce 0d 05 14 10 de 20  |.c+=1.......... |
00000bd0  74 65 6d 70 20 34 2a 32  2a 63 0d 05 1e 09 cf 23  |temp 4*2*c.....#|
00000be0  4f 3d 67 0d 05 28 0f e3  20 4a 25 3d 30 b8 20 63  |O=g..(.. J%=0. c|
00000bf0  2d 31 0d 05 32 0c e8 23  4f 2c 69 6e 31 25 0d 05  |-1..2..#O,in1%..|
00000c00  3c 0c e8 23 4f 2c 69 6e  32 25 0d 05 46 1a 74 65  |<..#O,in2%..F.te|
00000c10  6d 70 21 28 28 34 2a 4a  25 2a 32 29 2b 30 29 3d  |mp!((4*J%*2)+0)=|
00000c20  69 6e 31 25 0d 05 50 1a  74 65 6d 70 21 28 28 34  |in1%..P.temp!((4|
00000c30  2a 4a 25 2a 32 29 2b 34  29 3d 69 6e 32 25 0d 05  |*J%*2)+4)=in2%..|
00000c40  5a 05 ed 0d 05 64 1b e7  20 69 6e 31 25 3c 3e 30  |Z....d.. in1%<>0|
00000c50  20 84 20 69 6e 32 25 3c  3e 30 20 8c 20 fa 0d 05  | . in2%<>0 . ...|
00000c60  6e 18 72 6f 6f 6d 73 25  28 49 25 2c 31 36 2c 31  |n.rooms%(I%,16,1|
00000c70  29 3d 74 65 6d 70 0d 05  78 05 cd 0d 05 82 0c e8  |)=temp..x.......|
00000c80  23 4f 2c 69 6e 31 25 0d  05 8c 0c e8 23 4f 2c 69  |#O,in1%.....#O,i|
00000c90  6e 32 25 0d 05 96 0c e8  23 4f 2c 69 6e 33 25 0d  |n2%.....#O,in3%.|
00000ca0  05 a0 0c e8 23 4f 2c 69  6e 34 25 0d 05 aa 28 e7  |....#O,in4%...(.|
00000cb0  20 69 6e 31 25 3d 30 20  80 20 69 6e 32 25 3d 30  | in1%=0 . in2%=0|
00000cc0  20 80 20 69 6e 33 25 3d  30 20 80 20 69 6e 34 25  | . in3%=0 . in4%|
00000cd0  3d 30 8c 0d 05 b4 15 72  6f 6f 6d 73 25 28 49 25  |=0.....rooms%(I%|
00000ce0  2c 31 37 2c 30 29 3d 30  0d 05 be 15 72 6f 6f 6d  |,17,0)=0....room|
00000cf0  73 25 28 49 25 2c 31 37  2c 31 29 3d 30 0d 05 c8  |s%(I%,17,1)=0...|
00000d00  05 cc 0d 05 d2 0e 67 3d  28 8f 23 4f 29 2d 32 30  |......g=(.#O)-20|
00000d10  0d 05 dc 07 63 3d 31 0d  05 e6 2c c8 95 20 69 6e  |....c=1...,.. in|
00000d20  31 25 3c 3e 30 20 84 20  69 6e 32 25 3c 3e 30 20  |1%<>0 . in2%<>0 |
00000d30  84 20 69 6e 33 25 3c 3e  30 20 84 20 69 6e 34 25  |. in3%<>0 . in4%|
00000d40  3c 3e 30 0d 05 f0 0c e8  23 4f 2c 69 6e 31 25 0d  |<>0.....#O,in1%.|
00000d50  05 fa 0c e8 23 4f 2c 69  6e 32 25 0d 06 04 0c e8  |....#O,in2%.....|
00000d60  23 4f 2c 69 6e 33 25 0d  06 0e 0c e8 23 4f 2c 69  |#O,in3%.....#O,i|
00000d70  6e 34 25 0d 06 18 08 63  2b 3d 31 0d 06 22 05 ce  |n4%....c+=1.."..|
00000d80  0d 06 2c 10 de 20 74 65  6d 70 20 34 2a 34 2a 63  |..,.. temp 4*4*c|
00000d90  0d 06 36 09 cf 23 4f 3d  67 0d 06 40 0f e3 20 4a  |..6..#O=g..@.. J|
00000da0  25 3d 30 b8 20 63 2d 31  0d 06 4a 0c e8 23 4f 2c  |%=0. c-1..J..#O,|
00000db0  69 6e 31 25 0d 06 54 0c  e8 23 4f 2c 69 6e 32 25  |in1%..T..#O,in2%|
00000dc0  0d 06 5e 0c e8 23 4f 2c  69 6e 33 25 0d 06 68 0c  |..^..#O,in3%..h.|
00000dd0  e8 23 4f 2c 69 6e 34 25  0d 06 72 1a 74 65 6d 70  |.#O,in4%..r.temp|
00000de0  21 28 28 34 2a 4a 25 2a  34 29 2b 30 29 3d 69 6e  |!((4*J%*4)+0)=in|
00000df0  31 25 0d 06 7c 1a 74 65  6d 70 21 28 28 34 2a 4a  |1%..|.temp!((4*J|
00000e00  25 2a 34 29 2b 34 29 3d  69 6e 32 25 0d 06 86 1a  |%*4)+4)=in2%....|
00000e10  74 65 6d 70 21 28 28 34  2a 4a 25 2a 34 29 2b 38  |temp!((4*J%*4)+8|
00000e20  29 3d 69 6e 33 25 0d 06  90 1b 74 65 6d 70 21 28  |)=in3%....temp!(|
00000e30  28 34 2a 4a 25 2a 34 29  2b 31 32 29 3d 69 6e 34  |(4*J%*4)+12)=in4|
00000e40  25 0d 06 9a 05 ed 0d 06  a4 2e e7 20 69 6e 31 25  |%.......... in1%|
00000e50  3c 3e 30 20 84 20 69 6e  32 25 3c 3e 30 20 84 20  |<>0 . in2%<>0 . |
00000e60  69 6e 33 25 3c 3e 30 20  84 20 69 6e 34 25 3c 3e  |in3%<>0 . in4%<>|
00000e70  30 8c 20 fa 0d 06 ae 18  72 6f 6f 6d 73 25 28 49  |0. .....rooms%(I|
00000e80  25 2c 31 37 2c 31 29 3d  74 65 6d 70 0d 06 b8 05  |%,17,1)=temp....|
00000e90  cd 0d 06 c2 05 ed 0d 06  cc 07 d9 23 4f 0d 06 d6  |...........#O...|
00000ea0  04 0d 06 e0 26 f4 50 52  4f 43 64 69 73 70 6c 61  |....&.PROCdispla|
00000eb0  79 5f 73 70 65 63 69 61  6c 28 22 4f 62 6a 65 63  |y_special("Objec|
00000ec0  74 73 2e 2e 2e 22 29 0d  06 ea 04 0d 06 f4 23 4f  |ts...").......#O|
00000ed0  3d 8e 28 a4 64 69 73 70  6c 61 79 5f 74 65 6d 70  |=.(.display_temp|
00000ee0  64 69 72 2b 22 2e 4f 62  6a 65 63 74 22 29 0d 06  |dir+".Object")..|
00000ef0  fe 10 e8 23 4f 2c 6f 62  6a 65 63 74 73 25 0d 07  |...#O,objects%..|
00000f00  08 0f 6f 62 6a 65 63 74  73 25 2d 3d 31 0d 07 12  |..objects%-=1...|
00000f10  1c de 20 6f 62 6a 65 63  74 73 25 28 6f 62 6a 65  |.. objects%(obje|
00000f20  63 74 73 25 2c 38 2c 31  29 0d 07 1c 15 e3 20 4c  |cts%,8,1)..... L|
00000f30  25 3d 30 20 b8 20 6f 62  6a 65 63 74 73 25 0d 07  |%=0 . objects%..|
00000f40  26 0a e8 23 4f 2c 49 25  0d 07 30 2f e3 20 4a 25  |&..#O,I%..0/. J%|
00000f50  3d 30 20 b8 20 36 20 20  20 20 20 20 20 3a f4 20  |=0 . 6       :. |
00000f60  74 68 65 73 65 20 64 6f  6e 6f 74 20 6e 65 65 64  |these donot need|
00000f70  20 62 6c 6f 63 6b 73 0d  07 3a 19 e8 23 4f 2c 6f  | blocks..:..#O,o|
00000f80  62 6a 65 63 74 73 25 28  49 25 2c 4a 25 2c 30 29  |bjects%(I%,J%,0)|
00000f90  0d 07 44 0b c8 8e 20 4a  25 20 ca 0d 07 4e 0c c9  |..D... J% ...N..|
00000fa0  20 33 2c 34 2c 35 3a 0d  07 58 1b 7f 20 e8 23 4f  | 3,4,5:..X.. .#O|
00000fb0  2c 6f 62 6a 65 63 74 73  25 28 49 25 2c 4a 25 2c  |,objects%(I%,J%,|
00000fc0  31 29 0d 07 62 05 cb 0d  07 6c 05 ed 0d 07 76 0c  |1)..b....l....v.|
00000fd0  e8 23 4f 2c 69 6e 31 25  0d 07 80 0c e8 23 4f 2c  |.#O,in1%.....#O,|
00000fe0  69 6e 32 25 0d 07 8a 0c  e8 23 4f 2c 69 6e 33 25  |in2%.....#O,in3%|
00000ff0  0d 07 94 0c e8 23 4f 2c  69 6e 34 25 0d 07 9e 28  |.....#O,in4%...(|
00001000  e7 20 69 6e 31 25 3d 30  20 80 20 69 6e 32 25 3d  |. in1%=0 . in2%=|
00001010  30 20 80 20 69 6e 33 25  3d 30 20 80 20 69 6e 34  |0 . in3%=0 . in4|
00001020  25 3d 30 8c 0d 07 a8 16  6f 62 6a 65 63 74 73 25  |%=0.....objects%|
00001030  28 49 25 2c 37 2c 30 29  3d 30 0d 07 b2 16 6f 62  |(I%,7,0)=0....ob|
00001040  6a 65 63 74 73 25 28 49  25 2c 37 2c 31 29 3d 30  |jects%(I%,7,1)=0|
00001050  0d 07 bc 05 cc 0d 07 c6  0e 67 3d 28 8f 23 4f 29  |.........g=(.#O)|
00001060  2d 32 30 0d 07 d0 07 63  3d 31 0d 07 da 2c c8 95  |-20....c=1...,..|
00001070  20 69 6e 31 25 3c 3e 30  20 84 20 69 6e 32 25 3c  | in1%<>0 . in2%<|
00001080  3e 30 20 84 20 69 6e 33  25 3c 3e 30 20 84 20 69  |>0 . in3%<>0 . i|
00001090  6e 34 25 3c 3e 30 0d 07  e4 0c e8 23 4f 2c 69 6e  |n4%<>0.....#O,in|
000010a0  31 25 0d 07 ee 0c e8 23  4f 2c 69 6e 32 25 0d 07  |1%.....#O,in2%..|
000010b0  f8 0c e8 23 4f 2c 69 6e  33 25 0d 08 02 0c e8 23  |...#O,in3%.....#|
000010c0  4f 2c 69 6e 34 25 0d 08  0c 08 63 2b 3d 31 0d 08  |O,in4%....c+=1..|
000010d0  16 05 ce 0d 08 20 10 de  20 74 65 6d 70 20 34 2a  |..... .. temp 4*|
000010e0  34 2a 63 0d 08 2a 09 cf  23 4f 3d 67 0d 08 34 0f  |4*c..*..#O=g..4.|
000010f0  e3 20 4a 25 3d 30 b8 20  63 2d 31 0d 08 3e 0c e8  |. J%=0. c-1..>..|
00001100  23 4f 2c 69 6e 31 25 0d  08 48 0c e8 23 4f 2c 69  |#O,in1%..H..#O,i|
00001110  6e 32 25 0d 08 52 0c e8  23 4f 2c 69 6e 33 25 0d  |n2%..R..#O,in3%.|
00001120  08 5c 0c e8 23 4f 2c 69  6e 34 25 0d 08 66 1a 74  |.\..#O,in4%..f.t|
00001130  65 6d 70 21 28 28 34 2a  4a 25 2a 34 29 2b 30 29  |emp!((4*J%*4)+0)|
00001140  3d 69 6e 31 25 0d 08 70  1a 74 65 6d 70 21 28 28  |=in1%..p.temp!((|
00001150  34 2a 4a 25 2a 34 29 2b  34 29 3d 69 6e 32 25 0d  |4*J%*4)+4)=in2%.|
00001160  08 7a 1a 74 65 6d 70 21  28 28 34 2a 4a 25 2a 34  |.z.temp!((4*J%*4|
00001170  29 2b 38 29 3d 69 6e 33  25 0d 08 84 1b 74 65 6d  |)+8)=in3%....tem|
00001180  70 21 28 28 34 2a 4a 25  2a 34 29 2b 31 32 29 3d  |p!((4*J%*4)+12)=|
00001190  69 6e 34 25 0d 08 8e 05  ed 0d 08 98 2e e7 20 69  |in4%.......... i|
000011a0  6e 31 25 3c 3e 30 20 84  20 69 6e 32 25 3c 3e 30  |n1%<>0 . in2%<>0|
000011b0  20 84 20 69 6e 33 25 3c  3e 30 20 84 20 69 6e 34  | . in3%<>0 . in4|
000011c0  25 3c 3e 30 8c 20 fa 0d  08 a2 19 6f 62 6a 65 63  |%<>0. .....objec|
000011d0  74 73 25 28 49 25 2c 37  2c 31 29 3d 74 65 6d 70  |ts%(I%,7,1)=temp|
000011e0  0d 08 ac 05 cd 0d 08 b6  0c e8 23 4f 2c 69 6e 31  |..........#O,in1|
000011f0  25 0d 08 c0 0c e8 23 4f  2c 69 6e 32 25 0d 08 ca  |%.....#O,in2%...|
00001200  0c e8 23 4f 2c 69 6e 33  25 0d 08 d4 0c e8 23 4f  |..#O,in3%.....#O|
00001210  2c 69 6e 34 25 0d 08 de  28 e7 20 69 6e 31 25 3d  |,in4%...(. in1%=|
00001220  30 20 80 20 69 6e 32 25  3d 30 20 80 20 69 6e 33  |0 . in2%=0 . in3|
00001230  25 3d 30 20 80 20 69 6e  34 25 3d 30 8c 0d 08 e8  |%=0 . in4%=0....|
00001240  16 6f 62 6a 65 63 74 73  25 28 49 25 2c 38 2c 30  |.objects%(I%,8,0|
00001250  29 3d 30 0d 08 f2 16 6f  62 6a 65 63 74 73 25 28  |)=0....objects%(|
00001260  49 25 2c 38 2c 31 29 3d  30 0d 08 fc 05 cc 0d 09  |I%,8,1)=0.......|
00001270  06 0e 67 3d 28 8f 23 4f  29 2d 32 30 0d 09 10 07  |..g=(.#O)-20....|
00001280  63 3d 31 0d 09 1a 2c c8  95 20 69 6e 31 25 3c 3e  |c=1...,.. in1%<>|
00001290  30 20 84 20 69 6e 32 25  3c 3e 30 20 84 20 69 6e  |0 . in2%<>0 . in|
000012a0  33 25 3c 3e 30 20 84 20  69 6e 34 25 3c 3e 30 0d  |3%<>0 . in4%<>0.|
000012b0  09 24 0c e8 23 4f 2c 69  6e 31 25 0d 09 2e 0c e8  |.$..#O,in1%.....|
000012c0  23 4f 2c 69 6e 32 25 0d  09 38 0c e8 23 4f 2c 69  |#O,in2%..8..#O,i|
000012d0  6e 33 25 0d 09 42 0c e8  23 4f 2c 69 6e 34 25 0d  |n3%..B..#O,in4%.|
000012e0  09 4c 08 63 2b 3d 31 0d  09 56 05 ce 0d 09 60 10  |.L.c+=1..V....`.|
000012f0  de 20 74 65 6d 70 20 34  2a 34 2a 63 0d 09 6a 09  |. temp 4*4*c..j.|
00001300  cf 23 4f 3d 67 0d 09 74  0f e3 20 4a 25 3d 30 b8  |.#O=g..t.. J%=0.|
00001310  20 63 2d 31 0d 09 7e 0c  e8 23 4f 2c 69 6e 31 25  | c-1..~..#O,in1%|
00001320  0d 09 88 0c e8 23 4f 2c  69 6e 32 25 0d 09 92 0c  |.....#O,in2%....|
00001330  e8 23 4f 2c 69 6e 33 25  0d 09 9c 0c e8 23 4f 2c  |.#O,in3%.....#O,|
00001340  69 6e 34 25 0d 09 a6 1a  74 65 6d 70 21 28 28 34  |in4%....temp!((4|
00001350  2a 4a 25 2a 34 29 2b 30  29 3d 69 6e 31 25 0d 09  |*J%*4)+0)=in1%..|
00001360  b0 1a 74 65 6d 70 21 28  28 34 2a 4a 25 2a 34 29  |..temp!((4*J%*4)|
00001370  2b 34 29 3d 69 6e 32 25  0d 09 ba 1a 74 65 6d 70  |+4)=in2%....temp|
00001380  21 28 28 34 2a 4a 25 2a  34 29 2b 38 29 3d 69 6e  |!((4*J%*4)+8)=in|
00001390  33 25 0d 09 c4 1b 74 65  6d 70 21 28 28 34 2a 4a  |3%....temp!((4*J|
000013a0  25 2a 34 29 2b 31 32 29  3d 69 6e 34 25 0d 09 ce  |%*4)+12)=in4%...|
000013b0  05 ed 0d 09 d8 2e e7 20  69 6e 31 25 3c 3e 30 20  |....... in1%<>0 |
000013c0  84 20 69 6e 32 25 3c 3e  30 20 84 20 69 6e 33 25  |. in2%<>0 . in3%|
000013d0  3c 3e 30 20 84 20 69 6e  34 25 3c 3e 30 8c 20 fa  |<>0 . in4%<>0. .|
000013e0  0d 09 e2 19 6f 62 6a 65  63 74 73 25 28 49 25 2c  |....objects%(I%,|
000013f0  38 2c 31 29 3d 74 65 6d  70 0d 09 ec 05 cd 0d 09  |8,1)=temp.......|
00001400  f6 05 ed 0d 0a 00 07 d9  23 4f 0d 0a 0a 04 0d 0a  |........#O......|
00001410  14 25 f4 50 52 4f 43 64  69 73 70 6c 61 79 5f 73  |.%.PROCdisplay_s|
00001420  70 65 63 69 61 6c 28 22  50 65 6f 70 6c 65 2e 2e  |pecial("People..|
00001430  2e 22 29 0d 0a 1e 04 0d  0a 28 23 4f 3d 8e 28 a4  |.")......(#O=.(.|
00001440  64 69 73 70 6c 61 79 5f  74 65 6d 70 64 69 72 2b  |display_tempdir+|
00001450  22 2e 50 65 6f 70 6c 65  22 29 0d 0a 32 0f e8 23  |".People")..2..#|
00001460  4f 2c 70 65 6f 70 6c 65  25 0d 0a 3c 0e 70 65 6f  |O,people%..<.peo|
00001470  70 6c 65 25 2d 3d 31 0d  0a 46 1b de 20 70 65 6f  |ple%-=1..F.. peo|
00001480  70 6c 65 25 28 70 65 6f  70 6c 65 25 2c 31 31 2c  |ple%(people%,11,|
00001490  31 29 0d 0a 50 14 e3 20  4c 25 3d 30 20 b8 20 70  |1)..P.. L%=0 . p|
000014a0  65 6f 70 6c 65 25 0d 0a  5a 0a e8 23 4f 2c 49 25  |eople%..Z..#O,I%|
000014b0  0d 0a 64 2f e3 20 4a 25  3d 30 20 b8 20 38 20 20  |..d/. J%=0 . 8  |
000014c0  20 20 20 20 20 3a f4 20  74 68 65 73 65 20 64 6f  |     :. these do|
000014d0  6e 6f 74 20 6e 65 65 64  20 62 6c 6f 63 6b 73 0d  |not need blocks.|
000014e0  0a 6e 18 e8 23 4f 2c 70  65 6f 70 6c 65 25 28 49  |.n..#O,people%(I|
000014f0  25 2c 4a 25 2c 30 29 0d  0a 78 0b c8 8e 20 4a 25  |%,J%,0)..x... J%|
00001500  20 ca 0d 0a 82 0c c9 20  33 2c 34 2c 35 3a 0d 0a  | ...... 3,4,5:..|
00001510  8c 1a 7f 20 e8 23 4f 2c  70 65 6f 70 6c 65 25 28  |... .#O,people%(|
00001520  49 25 2c 4a 25 2c 31 29  0d 0a 96 05 cb 0d 0a a0  |I%,J%,1)........|
00001530  05 ed 0d 0a aa 04 0d 0a  b4 0c e8 23 4f 2c 69 6e  |...........#O,in|
00001540  31 25 0d 0a be 0c e8 23  4f 2c 69 6e 32 25 0d 0a  |1%.....#O,in2%..|
00001550  c8 16 e7 20 69 6e 31 25  3d 30 20 80 20 69 6e 32  |... in1%=0 . in2|
00001560  25 3d 30 8c 0d 0a d2 15  70 65 6f 70 6c 65 25 28  |%=0.....people%(|
00001570  49 25 2c 39 2c 30 29 3d  30 0d 0a dc 15 70 65 6f  |I%,9,0)=0....peo|
00001580  70 6c 65 25 28 49 25 2c  39 2c 31 29 3d 30 0d 0a  |ple%(I%,9,1)=0..|
00001590  e6 05 cc 0d 0a f0 0e 67  3d 28 8f 23 4f 29 2d 31  |.......g=(.#O)-1|
000015a0  30 0d 0a fa 07 63 3d 31  0d 0b 04 18 c8 95 20 69  |0....c=1...... i|
000015b0  6e 31 25 3c 3e 30 20 84  20 69 6e 32 25 3c 3e 30  |n1%<>0 . in2%<>0|
000015c0  0d 0b 0e 0c e8 23 4f 2c  69 6e 31 25 0d 0b 18 0c  |.....#O,in1%....|
000015d0  e8 23 4f 2c 69 6e 32 25  0d 0b 22 08 63 2b 3d 31  |.#O,in2%..".c+=1|
000015e0  0d 0b 2c 05 ce 0d 0b 36  10 de 20 74 65 6d 70 20  |..,....6.. temp |
000015f0  34 2a 32 2a 63 0d 0b 40  09 cf 23 4f 3d 67 0d 0b  |4*2*c..@..#O=g..|
00001600  4a 0f e3 20 4a 25 3d 30  b8 20 63 2d 31 0d 0b 54  |J.. J%=0. c-1..T|
00001610  0c e8 23 4f 2c 69 6e 31  25 0d 0b 5e 0c e8 23 4f  |..#O,in1%..^..#O|
00001620  2c 69 6e 32 25 0d 0b 68  1a 74 65 6d 70 21 28 28  |,in2%..h.temp!((|
00001630  34 2a 4a 25 2a 32 29 2b  30 29 3d 69 6e 31 25 0d  |4*J%*2)+0)=in1%.|
00001640  0b 72 1a 74 65 6d 70 21  28 28 34 2a 4a 25 2a 32  |.r.temp!((4*J%*2|
00001650  29 2b 34 29 3d 69 6e 32  25 0d 0b 7c 05 ed 0d 0b  |)+4)=in2%..|....|
00001660  86 1b e7 20 69 6e 31 25  3c 3e 30 20 84 20 69 6e  |... in1%<>0 . in|
00001670  32 25 3c 3e 30 20 8c 20  fa 0d 0b 90 18 70 65 6f  |2%<>0 . .....peo|
00001680  70 6c 65 25 28 49 25 2c  39 2c 31 29 3d 74 65 6d  |ple%(I%,9,1)=tem|
00001690  70 0d 0b 9a 05 cd 0d 0b  a4 0c e8 23 4f 2c 69 6e  |p..........#O,in|
000016a0  31 25 0d 0b ae 0c e8 23  4f 2c 69 6e 32 25 0d 0b  |1%.....#O,in2%..|
000016b0  b8 0c e8 23 4f 2c 69 6e  33 25 0d 0b c2 0c e8 23  |...#O,in3%.....#|
000016c0  4f 2c 69 6e 34 25 0d 0b  cc 28 e7 20 69 6e 31 25  |O,in4%...(. in1%|
000016d0  3d 30 20 80 20 69 6e 32  25 3d 30 20 80 20 69 6e  |=0 . in2%=0 . in|
000016e0  33 25 3d 30 20 80 20 69  6e 34 25 3d 30 8c 0d 0b  |3%=0 . in4%=0...|
000016f0  d6 16 70 65 6f 70 6c 65  25 28 49 25 2c 31 30 2c  |..people%(I%,10,|
00001700  30 29 3d 30 0d 0b e0 16  70 65 6f 70 6c 65 25 28  |0)=0....people%(|
00001710  49 25 2c 31 30 2c 31 29  3d 30 0d 0b ea 05 cc 0d  |I%,10,1)=0......|
00001720  0b f4 0e 67 3d 28 8f 23  4f 29 2d 32 30 0d 0b fe  |...g=(.#O)-20...|
00001730  07 63 3d 31 0d 0c 08 2c  c8 95 20 69 6e 31 25 3c  |.c=1...,.. in1%<|
00001740  3e 30 20 84 20 69 6e 32  25 3c 3e 30 20 84 20 69  |>0 . in2%<>0 . i|
00001750  6e 33 25 3c 3e 30 20 84  20 69 6e 34 25 3c 3e 30  |n3%<>0 . in4%<>0|
00001760  0d 0c 12 0c e8 23 4f 2c  69 6e 31 25 0d 0c 1c 0c  |.....#O,in1%....|
00001770  e8 23 4f 2c 69 6e 32 25  0d 0c 26 0c e8 23 4f 2c  |.#O,in2%..&..#O,|
00001780  69 6e 33 25 0d 0c 30 0c  e8 23 4f 2c 69 6e 34 25  |in3%..0..#O,in4%|
00001790  0d 0c 3a 08 63 2b 3d 31  0d 0c 44 05 ce 0d 0c 4e  |..:.c+=1..D....N|
000017a0  10 de 20 74 65 6d 70 20  34 2a 34 2a 63 0d 0c 58  |.. temp 4*4*c..X|
000017b0  09 cf 23 4f 3d 67 0d 0c  62 0f e3 20 4a 25 3d 30  |..#O=g..b.. J%=0|
000017c0  b8 20 63 2d 31 0d 0c 6c  0c e8 23 4f 2c 69 6e 31  |. c-1..l..#O,in1|
000017d0  25 0d 0c 76 0c e8 23 4f  2c 69 6e 32 25 0d 0c 80  |%..v..#O,in2%...|
000017e0  0c e8 23 4f 2c 69 6e 33  25 0d 0c 8a 0c e8 23 4f  |..#O,in3%.....#O|
000017f0  2c 69 6e 34 25 0d 0c 94  1a 74 65 6d 70 21 28 28  |,in4%....temp!((|
00001800  34 2a 4a 25 2a 34 29 2b  30 29 3d 69 6e 31 25 0d  |4*J%*4)+0)=in1%.|
00001810  0c 9e 1a 74 65 6d 70 21  28 28 34 2a 4a 25 2a 34  |...temp!((4*J%*4|
00001820  29 2b 34 29 3d 69 6e 32  25 0d 0c a8 1a 74 65 6d  |)+4)=in2%....tem|
00001830  70 21 28 28 34 2a 4a 25  2a 34 29 2b 38 29 3d 69  |p!((4*J%*4)+8)=i|
00001840  6e 33 25 0d 0c b2 1b 74  65 6d 70 21 28 28 34 2a  |n3%....temp!((4*|
00001850  4a 25 2a 34 29 2b 31 32  29 3d 69 6e 34 25 0d 0c  |J%*4)+12)=in4%..|
00001860  bc 05 ed 0d 0c c6 2e e7  20 69 6e 31 25 3c 3e 30  |........ in1%<>0|
00001870  20 84 20 69 6e 32 25 3c  3e 30 20 84 20 69 6e 33  | . in2%<>0 . in3|
00001880  25 3c 3e 30 20 84 20 69  6e 34 25 3c 3e 30 8c 20  |%<>0 . in4%<>0. |
00001890  fa 0d 0c d0 19 70 65 6f  70 6c 65 25 28 49 25 2c  |.....people%(I%,|
000018a0  31 30 2c 31 29 3d 74 65  6d 70 0d 0c da 05 cd 0d  |10,1)=temp......|
000018b0  0c e4 0c e8 23 4f 2c 69  6e 31 25 0d 0c ee 0c e8  |....#O,in1%.....|
000018c0  23 4f 2c 69 6e 32 25 0d  0c f8 0c e8 23 4f 2c 69  |#O,in2%.....#O,i|
000018d0  6e 33 25 0d 0d 02 0c e8  23 4f 2c 69 6e 34 25 0d  |n3%.....#O,in4%.|
000018e0  0d 0c 28 e7 20 69 6e 31  25 3d 30 20 80 20 69 6e  |..(. in1%=0 . in|
000018f0  32 25 3d 30 20 80 20 69  6e 33 25 3d 30 20 80 20  |2%=0 . in3%=0 . |
00001900  69 6e 34 25 3d 30 8c 0d  0d 16 16 70 65 6f 70 6c  |in4%=0.....peopl|
00001910  65 25 28 49 25 2c 31 31  2c 30 29 3d 30 0d 0d 20  |e%(I%,11,0)=0.. |
00001920  16 70 65 6f 70 6c 65 25  28 49 25 2c 31 31 2c 31  |.people%(I%,11,1|
00001930  29 3d 30 0d 0d 2a 05 cc  0d 0d 34 0e 67 3d 28 8f  |)=0..*....4.g=(.|
00001940  23 4f 29 2d 32 30 0d 0d  3e 07 63 3d 31 0d 0d 48  |#O)-20..>.c=1..H|
00001950  2c c8 95 20 69 6e 31 25  3c 3e 30 20 84 20 69 6e  |,.. in1%<>0 . in|
00001960  32 25 3c 3e 30 20 84 20  69 6e 33 25 3c 3e 30 20  |2%<>0 . in3%<>0 |
00001970  84 20 69 6e 34 25 3c 3e  30 0d 0d 52 0c e8 23 4f  |. in4%<>0..R..#O|
00001980  2c 69 6e 31 25 0d 0d 5c  0c e8 23 4f 2c 69 6e 32  |,in1%..\..#O,in2|
00001990  25 0d 0d 66 0c e8 23 4f  2c 69 6e 33 25 0d 0d 70  |%..f..#O,in3%..p|
000019a0  0c e8 23 4f 2c 69 6e 34  25 0d 0d 7a 08 63 2b 3d  |..#O,in4%..z.c+=|
000019b0  31 0d 0d 84 05 ce 0d 0d  8e 10 de 20 74 65 6d 70  |1.......... temp|
000019c0  20 34 2a 34 2a 63 0d 0d  98 09 cf 23 4f 3d 67 0d  | 4*4*c.....#O=g.|
000019d0  0d a2 0f e3 20 4a 25 3d  30 b8 20 63 2d 31 0d 0d  |.... J%=0. c-1..|
000019e0  ac 0c e8 23 4f 2c 69 6e  31 25 0d 0d b6 0c e8 23  |...#O,in1%.....#|
000019f0  4f 2c 69 6e 32 25 0d 0d  c0 0c e8 23 4f 2c 69 6e  |O,in2%.....#O,in|
00001a00  33 25 0d 0d ca 0c e8 23  4f 2c 69 6e 34 25 0d 0d  |3%.....#O,in4%..|
00001a10  d4 1a 74 65 6d 70 21 28  28 34 2a 4a 25 2a 34 29  |..temp!((4*J%*4)|
00001a20  2b 30 29 3d 69 6e 31 25  0d 0d de 1a 74 65 6d 70  |+0)=in1%....temp|
00001a30  21 28 28 34 2a 4a 25 2a  34 29 2b 34 29 3d 69 6e  |!((4*J%*4)+4)=in|
00001a40  32 25 0d 0d e8 1a 74 65  6d 70 21 28 28 34 2a 4a  |2%....temp!((4*J|
00001a50  25 2a 34 29 2b 38 29 3d  69 6e 33 25 0d 0d f2 1b  |%*4)+8)=in3%....|
00001a60  74 65 6d 70 21 28 28 34  2a 4a 25 2a 34 29 2b 31  |temp!((4*J%*4)+1|
00001a70  32 29 3d 69 6e 34 25 0d  0d fc 05 ed 0d 0e 06 2e  |2)=in4%.........|
00001a80  e7 20 69 6e 31 25 3c 3e  30 20 84 20 69 6e 32 25  |. in1%<>0 . in2%|
00001a90  3c 3e 30 20 84 20 69 6e  33 25 3c 3e 30 20 84 20  |<>0 . in3%<>0 . |
00001aa0  69 6e 34 25 3c 3e 30 8c  20 fa 0d 0e 10 19 70 65  |in4%<>0. .....pe|
00001ab0  6f 70 6c 65 25 28 49 25  2c 31 31 2c 31 29 3d 74  |ople%(I%,11,1)=t|
00001ac0  65 6d 70 0d 0e 1a 05 cd  0d 0e 24 05 ed 0d 0e 2e  |emp.......$.....|
00001ad0  07 d9 23 4f 0d 0e 38 04  0d 0e 42 25 f4 50 52 4f  |..#O..8...B%.PRO|
00001ae0  43 64 69 73 70 6c 61 79  5f 73 70 65 63 69 61 6c  |Cdisplay_special|
00001af0  28 22 50 6c 61 79 65 72  2e 2e 2e 22 29 0d 0e 4c  |("Player...")..L|
00001b00  04 0d 0e 56 23 4f 3d 8e  28 a4 64 69 73 70 6c 61  |...V#O=.(.displa|
00001b10  79 5f 74 65 6d 70 64 69  72 2b 22 2e 50 6c 61 79  |y_tempdir+".Play|
00001b20  65 72 22 29 0d 0e 60 12  de 20 70 6c 61 79 65 72  |er")..`.. player|
00001b30  25 28 37 2c 31 29 0d 0e  6a 2f e3 20 4a 25 3d 30  |%(7,1)..j/. J%=0|
00001b40  20 b8 20 34 20 20 20 20  20 20 20 3a f4 20 74 68  | . 4       :. th|
00001b50  65 73 65 20 64 6f 6e 6f  74 20 6e 65 65 64 20 62  |ese donot need b|
00001b60  6c 6f 63 6b 73 0d 0e 74  15 e8 23 4f 2c 70 6c 61  |locks..t..#O,pla|
00001b70  79 65 72 25 28 4a 25 2c  30 29 0d 0e 7e 0b c8 8e  |yer%(J%,0)..~...|
00001b80  20 4a 25 20 ca 0d 0e 88  08 c9 20 33 3a 0d 0e 92  | J% ...... 3:...|
00001b90  17 7f 20 e8 23 4f 2c 70  6c 61 79 65 72 25 28 4a  |.. .#O,player%(J|
00001ba0  25 2c 31 29 0d 0e 9c 05  cb 0d 0e a6 05 ed 0d 0e  |%,1)............|
00001bb0  b0 0c e8 23 4f 2c 69 6e  31 25 0d 0e ba 0c e8 23  |...#O,in1%.....#|
00001bc0  4f 2c 69 6e 32 25 0d 0e  c4 16 e7 20 69 6e 31 25  |O,in2%..... in1%|
00001bd0  3d 30 20 80 20 69 6e 32  25 3d 30 8c 0d 0e ce 12  |=0 . in2%=0.....|
00001be0  70 6c 61 79 65 72 25 28  35 2c 30 29 3d 30 0d 0e  |player%(5,0)=0..|
00001bf0  d8 12 70 6c 61 79 65 72  25 28 35 2c 31 29 3d 30  |..player%(5,1)=0|
00001c00  0d 0e e2 05 cc 0d 0e ec  0e 67 3d 28 8f 23 4f 29  |.........g=(.#O)|
00001c10  2d 31 30 0d 0e f6 07 63  3d 31 0d 0f 00 18 c8 95  |-10....c=1......|
00001c20  20 69 6e 31 25 3c 3e 30  20 84 20 69 6e 32 25 3c  | in1%<>0 . in2%<|
00001c30  3e 30 0d 0f 0a 0c e8 23  4f 2c 69 6e 31 25 0d 0f  |>0.....#O,in1%..|
00001c40  14 0c e8 23 4f 2c 69 6e  32 25 0d 0f 1e 08 63 2b  |...#O,in2%....c+|
00001c50  3d 31 0d 0f 28 05 ce 0d  0f 32 10 de 20 74 65 6d  |=1..(....2.. tem|
00001c60  70 20 34 2a 32 2a 63 0d  0f 3c 09 cf 23 4f 3d 67  |p 4*2*c..<..#O=g|
00001c70  0d 0f 46 0f e3 20 4a 25  3d 30 b8 20 63 2d 31 0d  |..F.. J%=0. c-1.|
00001c80  0f 50 0c e8 23 4f 2c 69  6e 31 25 0d 0f 5a 0c e8  |.P..#O,in1%..Z..|
00001c90  23 4f 2c 69 6e 32 25 0d  0f 64 1a 74 65 6d 70 21  |#O,in2%..d.temp!|
00001ca0  28 28 34 2a 4a 25 2a 32  29 2b 30 29 3d 69 6e 31  |((4*J%*2)+0)=in1|
00001cb0  25 0d 0f 6e 1a 74 65 6d  70 21 28 28 34 2a 4a 25  |%..n.temp!((4*J%|
00001cc0  2a 32 29 2b 34 29 3d 69  6e 32 25 0d 0f 78 05 ed  |*2)+4)=in2%..x..|
00001cd0  0d 0f 82 1b e7 20 69 6e  31 25 3c 3e 30 20 84 20  |..... in1%<>0 . |
00001ce0  69 6e 32 25 3c 3e 30 20  8c 20 fa 0d 0f 8c 15 70  |in2%<>0 . .....p|
00001cf0  6c 61 79 65 72 25 28 35  2c 31 29 3d 74 65 6d 70  |layer%(5,1)=temp|
00001d00  0d 0f 96 05 cd 0d 0f a0  0c e8 23 4f 2c 69 6e 31  |..........#O,in1|
00001d10  25 0d 0f aa 0c e8 23 4f  2c 69 6e 32 25 0d 0f b4  |%.....#O,in2%...|
00001d20  0c e8 23 4f 2c 69 6e 33  25 0d 0f be 0c e8 23 4f  |..#O,in3%.....#O|
00001d30  2c 69 6e 34 25 0d 0f c8  28 e7 20 69 6e 31 25 3d  |,in4%...(. in1%=|
00001d40  30 20 80 20 69 6e 32 25  3d 30 20 80 20 69 6e 33  |0 . in2%=0 . in3|
00001d50  25 3d 30 20 80 20 69 6e  34 25 3d 30 8c 0d 0f d2  |%=0 . in4%=0....|
00001d60  12 70 6c 61 79 65 72 25  28 36 2c 30 29 3d 30 0d  |.player%(6,0)=0.|
00001d70  0f dc 12 70 6c 61 79 65  72 25 28 36 2c 31 29 3d  |...player%(6,1)=|
00001d80  30 0d 0f e6 05 cc 0d 0f  f0 0e 67 3d 28 8f 23 4f  |0.........g=(.#O|
00001d90  29 2d 32 30 0d 0f fa 07  63 3d 31 0d 10 04 2c c8  |)-20....c=1...,.|
00001da0  95 20 69 6e 31 25 3c 3e  30 20 84 20 69 6e 32 25  |. in1%<>0 . in2%|
00001db0  3c 3e 30 20 84 20 69 6e  33 25 3c 3e 30 20 84 20  |<>0 . in3%<>0 . |
00001dc0  69 6e 34 25 3c 3e 30 0d  10 0e 0c e8 23 4f 2c 69  |in4%<>0.....#O,i|
00001dd0  6e 31 25 0d 10 18 0c e8  23 4f 2c 69 6e 32 25 0d  |n1%.....#O,in2%.|
00001de0  10 22 0c e8 23 4f 2c 69  6e 33 25 0d 10 2c 0c e8  |."..#O,in3%..,..|
00001df0  23 4f 2c 69 6e 34 25 0d  10 36 08 63 2b 3d 31 0d  |#O,in4%..6.c+=1.|
00001e00  10 40 05 ce 0d 10 4a 10  de 20 74 65 6d 70 20 34  |.@....J.. temp 4|
00001e10  2a 34 2a 63 0d 10 54 09  cf 23 4f 3d 67 0d 10 5e  |*4*c..T..#O=g..^|
00001e20  0f e3 20 4a 25 3d 30 b8  20 63 2d 31 0d 10 68 0c  |.. J%=0. c-1..h.|
00001e30  e8 23 4f 2c 69 6e 31 25  0d 10 72 0c e8 23 4f 2c  |.#O,in1%..r..#O,|
00001e40  69 6e 32 25 0d 10 7c 0c  e8 23 4f 2c 69 6e 33 25  |in2%..|..#O,in3%|
00001e50  0d 10 86 0c e8 23 4f 2c  69 6e 34 25 0d 10 90 1a  |.....#O,in4%....|
00001e60  74 65 6d 70 21 28 28 34  2a 4a 25 2a 34 29 2b 30  |temp!((4*J%*4)+0|
00001e70  29 3d 69 6e 31 25 0d 10  9a 1a 74 65 6d 70 21 28  |)=in1%....temp!(|
00001e80  28 34 2a 4a 25 2a 34 29  2b 34 29 3d 69 6e 32 25  |(4*J%*4)+4)=in2%|
00001e90  0d 10 a4 1a 74 65 6d 70  21 28 28 34 2a 4a 25 2a  |....temp!((4*J%*|
00001ea0  34 29 2b 38 29 3d 69 6e  33 25 0d 10 ae 1b 74 65  |4)+8)=in3%....te|
00001eb0  6d 70 21 28 28 34 2a 4a  25 2a 34 29 2b 31 32 29  |mp!((4*J%*4)+12)|
00001ec0  3d 69 6e 34 25 0d 10 b8  05 ed 0d 10 c2 2e e7 20  |=in4%.......... |
00001ed0  69 6e 31 25 3c 3e 30 20  84 20 69 6e 32 25 3c 3e  |in1%<>0 . in2%<>|
00001ee0  30 20 84 20 69 6e 33 25  3c 3e 30 20 84 20 69 6e  |0 . in3%<>0 . in|
00001ef0  34 25 3c 3e 30 8c 20 fa  0d 10 cc 15 70 6c 61 79  |4%<>0. .....play|
00001f00  65 72 25 28 36 2c 31 29  3d 74 65 6d 70 0d 10 d6  |er%(6,1)=temp...|
00001f10  05 cd 0d 10 e0 0c e8 23  4f 2c 69 6e 31 25 0d 10  |.......#O,in1%..|
00001f20  ea 0c e8 23 4f 2c 69 6e  32 25 0d 10 f4 0c e8 23  |...#O,in2%.....#|
00001f30  4f 2c 69 6e 33 25 0d 10  fe 0c e8 23 4f 2c 69 6e  |O,in3%.....#O,in|
00001f40  34 25 0d 11 08 28 e7 20  69 6e 31 25 3d 30 20 80  |4%...(. in1%=0 .|
00001f50  20 69 6e 32 25 3d 30 20  80 20 69 6e 33 25 3d 30  | in2%=0 . in3%=0|
00001f60  20 80 20 69 6e 34 25 3d  30 8c 0d 11 12 12 70 6c  | . in4%=0.....pl|
00001f70  61 79 65 72 25 28 37 2c  30 29 3d 30 0d 11 1c 12  |ayer%(7,0)=0....|
00001f80  70 6c 61 79 65 72 25 28  37 2c 31 29 3d 30 0d 11  |player%(7,1)=0..|
00001f90  26 05 cc 0d 11 30 0e 67  3d 28 8f 23 4f 29 2d 32  |&....0.g=(.#O)-2|
00001fa0  30 0d 11 3a 07 63 3d 31  0d 11 44 2c c8 95 20 69  |0..:.c=1..D,.. i|
00001fb0  6e 31 25 3c 3e 30 20 84  20 69 6e 32 25 3c 3e 30  |n1%<>0 . in2%<>0|
00001fc0  20 84 20 69 6e 33 25 3c  3e 30 20 84 20 69 6e 34  | . in3%<>0 . in4|
00001fd0  25 3c 3e 30 0d 11 4e 0c  e8 23 4f 2c 69 6e 31 25  |%<>0..N..#O,in1%|
00001fe0  0d 11 58 0c e8 23 4f 2c  69 6e 32 25 0d 11 62 0c  |..X..#O,in2%..b.|
00001ff0  e8 23 4f 2c 69 6e 33 25  0d 11 6c 0c e8 23 4f 2c  |.#O,in3%..l..#O,|
00002000  69 6e 34 25 0d 11 76 08  63 2b 3d 31 0d 11 80 05  |in4%..v.c+=1....|
00002010  ce 0d 11 8a 10 de 20 74  65 6d 70 20 34 2a 34 2a  |...... temp 4*4*|
00002020  63 0d 11 94 09 cf 23 4f  3d 67 0d 11 9e 0f e3 20  |c.....#O=g..... |
00002030  4a 25 3d 30 b8 20 63 2d  31 0d 11 a8 0c e8 23 4f  |J%=0. c-1.....#O|
00002040  2c 69 6e 31 25 0d 11 b2  0c e8 23 4f 2c 69 6e 32  |,in1%.....#O,in2|
00002050  25 0d 11 bc 0c e8 23 4f  2c 69 6e 33 25 0d 11 c6  |%.....#O,in3%...|
00002060  0c e8 23 4f 2c 69 6e 34  25 0d 11 d0 1a 74 65 6d  |..#O,in4%....tem|
00002070  70 21 28 28 34 2a 4a 25  2a 34 29 2b 30 29 3d 69  |p!((4*J%*4)+0)=i|
00002080  6e 31 25 0d 11 da 1a 74  65 6d 70 21 28 28 34 2a  |n1%....temp!((4*|
00002090  4a 25 2a 34 29 2b 34 29  3d 69 6e 32 25 0d 11 e4  |J%*4)+4)=in2%...|
000020a0  1a 74 65 6d 70 21 28 28  34 2a 4a 25 2a 34 29 2b  |.temp!((4*J%*4)+|
000020b0  38 29 3d 69 6e 33 25 0d  11 ee 1b 74 65 6d 70 21  |8)=in3%....temp!|
000020c0  28 28 34 2a 4a 25 2a 34  29 2b 31 32 29 3d 69 6e  |((4*J%*4)+12)=in|
000020d0  34 25 0d 11 f8 05 ed 0d  12 02 2e e7 20 69 6e 31  |4%.......... in1|
000020e0  25 3c 3e 30 20 84 20 69  6e 32 25 3c 3e 30 20 84  |%<>0 . in2%<>0 .|
000020f0  20 69 6e 33 25 3c 3e 30  20 84 20 69 6e 34 25 3c  | in3%<>0 . in4%<|
00002100  3e 30 8c 20 fa 0d 12 0c  15 70 6c 61 79 65 72 25  |>0. .....player%|
00002110  28 37 2c 31 29 3d 74 65  6d 70 0d 12 16 05 cd 0d  |(7,1)=temp......|
00002120  12 20 07 d9 23 4f 0d 12  2a 04 0d 12 34 23 f4 50  |. ..#O..*...4#.P|
00002130  52 4f 43 64 69 73 70 6c  61 79 5f 73 70 65 63 69  |ROCdisplay_speci|
00002140  61 6c 28 22 43 6f 64 65  2e 2e 2e 22 29 0d 12 3e  |al("Code...")..>|
00002150  04 0d 12 48 21 4f 3d 8e  28 a4 64 69 73 70 6c 61  |...H!O=.(.displa|
00002160  79 5f 74 65 6d 70 64 69  72 2b 22 2e 43 6f 64 65  |y_tempdir+".Code|
00002170  22 29 0d 12 52 13 e7 20  4f 3d 30 20 84 20 a2 23  |")..R.. O=0 . .#|
00002180  4f 3d 30 20 8c 0d 12 5c  0f e7 20 4f 3c 3e 30 20  |O=0 ...\.. O<>0 |
00002190  8c d9 23 4f 0d 12 66 0e  de 20 63 6f 64 65 25 28  |..#O..f.. code%(|
000021a0  31 29 0d 12 70 05 cc 0d  12 7a 0b 63 6f 64 65 25  |1)..p....z.code%|
000021b0  3d 30 0d 12 84 05 f5 0d  12 8e 09 65 6e 64 3d a3  |=0.........end=.|
000021c0  0d 12 98 05 f5 0d 12 a2  0c e8 23 4f 2c 69 6e 73  |..........#O,ins|
000021d0  25 0d 12 ac 0d c8 8e 20  69 6e 73 25 20 ca 0d 12  |%...... ins% ...|
000021e0  b6 0d c9 20 30 3a 65 6e  64 3d b9 0d 12 c0 0b c9  |... 0:end=......|
000021f0  20 35 2c 31 30 3a 0d 12  ca 19 c9 20 31 2c 32 2c  | 5,10:..... 1,2,|
00002200  36 3a e8 23 4f 2c 75 25  3a e8 23 4f 2c 75 25 0d  |6:.#O,u%:.#O,u%.|
00002210  12 d4 29 c9 20 33 2c 34  2c 38 2c 37 3a e8 23 4f  |..). 3,4,8,7:.#O|
00002220  2c 75 25 3a e8 23 4f 2c  75 25 3a e8 23 4f 2c 75  |,u%:.#O,u%:.#O,u|
00002230  25 3a e8 23 4f 2c 75 25  0d 12 de 31 c9 20 39 3a  |%:.#O,u%...1. 9:|
00002240  e8 23 4f 2c 75 25 3a e8  23 4f 2c 75 25 3a e8 23  |.#O,u%:.#O,u%:.#|
00002250  4f 2c 75 25 3a e8 23 4f  2c 75 25 3a e8 23 4f 2c  |O,u%:.#O,u%:.#O,|
00002260  75 25 3a e8 23 4f 2c 75  25 0d 12 e8 05 cb 0d 12  |u%:.#O,u%.......|
00002270  f2 09 fd 20 65 6e 64 0d  12 fc 0c 63 6f 64 65 25  |... end....code%|
00002280  2b 3d 31 0d 13 06 09 fd  20 c5 23 4f 0d 13 10 09  |+=1..... .#O....|
00002290  cf 23 4f 3d 30 0d 13 1a  12 de 20 63 6f 64 65 25  |.#O=0..... code%|
000022a0  28 63 6f 64 65 25 29 0d  13 24 12 e3 20 6f 25 3d  |(code%)..$.. o%=|
000022b0  31 20 b8 20 63 6f 64 65  25 0d 13 2e 09 74 3d 8f  |1 . code%....t=.|
000022c0  23 4f 0d 13 38 09 65 6e  64 3d a3 0d 13 42 0a 77  |#O..8.end=...B.w|
000022d0  6f 72 64 3d 30 0d 13 4c  05 f5 0d 13 56 14 e8 23  |ord=0..L....V..#|
000022e0  4f 2c 69 6e 73 25 3a 77  6f 72 64 2b 3d 31 0d 13  |O,ins%:word+=1..|
000022f0  60 0d c8 8e 20 69 6e 73  25 20 ca 0d 13 6a 0d c9  |`... ins% ...j..|
00002300  20 30 3a 65 6e 64 3d b9  0d 13 74 0b c9 20 35 2c  | 0:end=...t.. 5,|
00002310  31 30 3a 0d 13 7e 21 c9  20 31 2c 32 2c 36 3a e8  |10:..~!. 1,2,6:.|
00002320  23 4f 2c 75 25 3a e8 23  4f 2c 75 25 3a 77 6f 72  |#O,u%:.#O,u%:wor|
00002330  64 2b 3d 32 0d 13 88 31  c9 20 33 2c 34 2c 38 2c  |d+=2...1. 3,4,8,|
00002340  37 3a e8 23 4f 2c 75 25  3a e8 23 4f 2c 75 25 3a  |7:.#O,u%:.#O,u%:|
00002350  e8 23 4f 2c 75 25 3a e8  23 4f 2c 75 25 3a 77 6f  |.#O,u%:.#O,u%:wo|
00002360  72 64 2b 3d 34 0d 13 92  39 c9 20 39 3a e8 23 4f  |rd+=4...9. 9:.#O|
00002370  2c 75 25 3a e8 23 4f 2c  75 25 3a e8 23 4f 2c 75  |,u%:.#O,u%:.#O,u|
00002380  25 3a e8 23 4f 2c 75 25  3a e8 23 4f 2c 75 25 3a  |%:.#O,u%:.#O,u%:|
00002390  e8 23 4f 2c 75 25 3a 77  6f 72 64 2b 3d 36 0d 13  |.#O,u%:word+=6..|
000023a0  9c 05 cb 0d 13 a6 09 fd  20 65 6e 64 0d 13 b0 15  |........ end....|
000023b0  de 20 74 65 6d 70 20 28  77 6f 72 64 2b 31 29 2a  |. temp (word+1)*|
000023c0  34 0d 13 ba 09 cf 23 4f  3d 74 0d 13 c4 12 e3 20  |4.....#O=t..... |
000023d0  49 25 3d 30 b8 20 77 6f  72 64 2d 31 0d 13 ce 0a  |I%=0. word-1....|
000023e0  e8 23 4f 2c 6a 25 0d 13  d8 12 74 65 6d 70 21 28  |.#O,j%....temp!(|
000023f0  49 25 2a 34 29 3d 6a 25  0d 13 e2 05 ed 0d 13 ec  |I%*4)=j%........|
00002400  0f e7 20 6a 25 3c 3e 30  20 8c 20 fa 0d 13 f6 12  |.. j%<>0 . .....|
00002410  63 6f 64 65 25 28 6f 25  29 3d 74 65 6d 70 0d 14  |code%(o%)=temp..|
00002420  00 05 ed 0d 14 0a 07 d9  23 4f 0d 14 14 05 cd 0d  |........#O......|
00002430  14 1e 04 0d 14 28 1e de  20 6f 62 6a 65 63 74 5f  |.....(.. object_|
00002440  70 6c 61 63 65 28 6f 62  6a 65 63 74 73 25 2c 31  |place(objects%,1|
00002450  29 0d 14 32 1d de 20 70  65 6f 70 6c 65 5f 70 6c  |)..2.. people_pl|
00002460  61 63 65 28 70 65 6f 70  6c 65 25 2c 31 29 0d 14  |ace(people%,1)..|
00002470  3c 0f de 20 74 65 6d 70  28 32 35 36 29 0d 14 46  |<.. temp(256)..F|
00002480  04 0d 14 50 1d f2 64 69  73 70 6c 61 79 5f 73 70  |...P..display_sp|
00002490  65 63 69 61 6c 28 22 44  4f 4e 45 2e 22 29 0d 14  |ecial("DONE.")..|
000024a0  5a 14 f2 64 69 73 70 6c  61 79 5f 69 6e 69 74 65  |Z..display_inite|
000024b0  6e 64 0d 14 64 05 f5 0d  14 6e 11 f2 64 69 73 70  |nd..d....n..disp|
000024c0  6c 61 79 5f 70 6f 6c 6c  0d 14 78 07 fd 20 30 0d  |lay_poll..x.. 0.|
000024d0  14 82 05 e0 0d 14 8c 04  0d 14 96 14 dd f2 72 65  |..............re|
000024e0  73 74 61 72 74 5f 69 6e  74 65 72 70 0d 14 a0 0f  |start_interp....|
000024f0  f2 4a 75 6d 70 28 22 67  6f 22 29 0d 14 aa 05 e1  |.Jump("go").....|
00002500  0d 14 b4 04 0d 14 be 08  dd a4 67 6f 0d 14 c8 19  |..........go....|
00002510  f4 20 72 65 73 74 61 72  74 20 69 6e 74 65 72 70  |. restart interp|
00002520  72 65 74 65 72 0d 14 d2  0d 69 6e 67 61 6d 65 25  |reter....ingame%|
00002530  3d b9 0d 14 dc 0f 64 69  73 70 6c 61 79 24 3d 22  |=.....display$="|
00002540  22 0d 14 e6 0b 64 69 73  70 73 3d 30 0d 14 f0 19  |"....disps=0....|
00002550  f2 64 69 73 70 6c 61 79  5f 73 70 65 63 69 61 6c  |.display_special|
00002560  28 22 20 22 29 0d 14 fa  2b f2 64 69 73 70 6c 61  |(" ")...+.displa|
00002570  79 5f 73 70 65 63 69 61  6c 28 22 4e 65 77 20 67  |y_special("New g|
00002580  61 6d 65 20 53 74 61 72  74 65 64 2e 2e 2e 22 29  |ame Started...")|
00002590  0d 15 04 0c e3 20 49 25  3d 30 b8 32 0d 15 0e 19  |..... I%=0.2....|
000025a0  f2 64 69 73 70 6c 61 79  5f 73 70 65 63 69 61 6c  |.display_special|
000025b0  28 22 20 22 29 0d 15 18  11 f2 64 69 73 70 6c 61  |(" ").....displa|
000025c0  79 5f 70 6f 6c 6c 0d 15  22 05 ed 0d 15 2c 11 f2  |y_poll.."....,..|
000025d0  73 74 61 72 74 5f 73 63  72 65 65 6e 0d 15 36 11  |start_screen..6.|
000025e0  f2 64 69 73 70 6c 61 79  28 22 20 22 29 0d 15 40  |.display(" ")..@|
000025f0  11 f2 64 69 73 70 6c 61  79 5f 70 6f 6c 6c 0d 15  |..display_poll..|
00002600  4a 1b 63 75 72 5f 76 61  72 73 28 29 3d 73 74 61  |J.cur_vars()=sta|
00002610  72 74 5f 76 61 72 73 28  29 0d 15 54 17 63 5f 72  |rt_vars()..T.c_r|
00002620  6f 6f 6d 25 3d 73 74 61  72 74 5f 72 6f 6f 6d 25  |oom%=start_room%|
00002630  0d 15 5e 0d 6f 5f 72 6f  6f 6d 3d 2d 31 0d 15 68  |..^.o_room=-1..h|
00002640  12 f2 72 65 70 6f 73 5f  6f 62 6a 65 63 74 73 0d  |..repos_objects.|
00002650  15 72 11 f2 72 65 70 6f  73 5f 70 65 6f 70 6c 65  |.r..repos_people|
00002660  0d 15 7c 2d f2 63 61 6c  6c 63 6f 64 65 28 72 6f  |..|-.callcode(ro|
00002670  6f 6d 73 25 28 63 5f 72  6f 6f 6d 25 2c 31 33 2c  |oms%(c_room%,13,|
00002680  31 29 2c 31 2c 63 5f 72  6f 6f 6d 25 29 0d 15 86  |1),1,c_room%)...|
00002690  14 e3 20 49 25 3d 30 20  b8 20 70 65 6f 70 6c 65  |.. I%=0 . people|
000026a0  25 0d 15 90 59 e7 20 70  65 6f 70 6c 65 5f 70 6c  |%...Y. people_pl|
000026b0  61 63 65 28 49 25 2c 30  29 3d 31 20 80 20 70 65  |ace(I%,0)=1 . pe|
000026c0  6f 70 6c 65 5f 70 6c 61  63 65 28 49 25 2c 31 29  |ople_place(I%,1)|
000026d0  3d 63 5f 72 6f 6f 6d 25  20 8c 20 f2 63 61 6c 6c  |=c_room% . .call|
000026e0  63 6f 64 65 28 70 65 6f  70 6c 65 25 28 49 25 2c  |code(people%(I%,|
000026f0  37 2c 31 29 2c 33 2c 49  25 29 0d 15 9a 05 ed 0d  |7,1),3,I%)......|
00002700  15 a4 05 f5 0d 15 ae 2d  e7 20 63 5f 72 6f 6f 6d  |.......-. c_room|
00002710  25 3c 3e 6f 5f 72 6f 6f  6d 20 8c 20 f2 73 68 6f  |%<>o_room . .sho|
00002720  77 20 8b 20 f2 64 69 73  70 6c 61 79 28 22 20 22  |w . .display(" "|
00002730  29 0d 15 b8 12 6f 5f 72  6f 6f 6d 3d 63 5f 72 6f  |)....o_room=c_ro|
00002740  6f 6d 25 0d 15 c2 11 f2  64 69 73 70 6c 61 79 5f  |om%.....display_|
00002750  70 6f 6c 6c 0d 15 cc 13  63 75 72 6c 69 6e 65 24  |poll....curline$|
00002760  3d a4 69 6e 70 75 74 0d  15 d6 07 f2 64 6f 0d 15  |=.input.....do..|
00002770  e0 07 fd 20 30 0d 15 ea  06 3d 30 0d 15 f4 04 0d  |... 0....=0.....|
00002780  15 fe 12 dd f2 73 74 61  72 74 5f 73 63 72 65 65  |.....start_scree|
00002790  6e 0d 16 08 35 f2 64 69  73 70 6c 61 79 28 22 59  |n...5.display("Y|
000027a0  6f 75 20 61 72 65 20 22  2b a4 67 65 74 73 74 72  |ou are "+.getstr|
000027b0  69 6e 67 28 70 6c 61 79  65 72 25 28 30 2c 31 29  |ing(player%(0,1)|
000027c0  29 2b 22 2e 22 29 0d 16  12 13 66 73 3d 70 6c 61  |)+".")....fs=pla|
000027d0  79 65 72 25 28 31 2c 31  29 0d 16 1c 13 6c 73 3d  |yer%(1,1)....ls=|
000027e0  70 6c 61 79 65 72 25 28  32 2c 31 29 0d 16 26 10  |player%(2,1)..&.|
000027f0  e3 20 79 25 3d 66 73 20  b8 20 6c 73 0d 16 30 1c  |. y%=fs . ls..0.|
00002800  f2 64 69 73 70 6c 61 79  28 a4 67 65 74 73 74 72  |.display(.getstr|
00002810  69 6e 67 28 79 25 29 29  0d 16 3a 05 ed 0d 16 44  |ing(y%))..:....D|
00002820  11 f2 64 69 73 70 6c 61  79 28 22 20 22 29 0d 16  |..display(" ")..|
00002830  4e 29 f2 64 69 73 70 6c  61 79 28 22 50 72 65 73  |N).display("Pres|
00002840  73 20 72 65 74 75 72 6e  20 74 6f 20 63 6f 6e 74  |s return to cont|
00002850  69 6e 75 65 2e 22 29 0d  16 58 0d 79 24 3d a4 69  |inue.")..X.y$=.i|
00002860  6e 70 75 74 0d 16 62 11  f2 64 69 73 70 6c 61 79  |nput..b..display|
00002870  28 22 20 22 29 0d 16 6c  11 f2 64 69 73 70 6c 61  |(" ")..l..displa|
00002880  79 28 22 20 22 29 0d 16  76 05 e1 0d 16 80 04 0d  |y(" ")..v.......|
00002890  16 8a 08 dd f2 64 6f 0d  16 94 28 f4 20 2a 2a 2a  |.....do...(. ***|
000028a0  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 66 69 72 73 74  |***********first|
000028b0  20 64 69 72 65 63 74 69  6f 6e 73 2e 2e 2e 2e 0d  | directions.....|
000028c0  16 9e 3a e7 20 a4 66 69  72 73 74 28 63 75 72 6c  |..:. .first(curl|
000028d0  69 6e 65 24 29 3d 22 47  4f 22 20 8c 20 63 75 72  |ine$)="GO" . cur|
000028e0  6c 69 6e 65 24 3d a4 6e  6f 74 66 69 72 73 74 28  |line$=.notfirst(|
000028f0  63 75 72 6c 69 6e 65 24  29 0d 16 a8 19 c8 8e 20  |curline$)...... |
00002900  a4 66 69 72 73 74 28 63  75 72 6c 69 6e 65 24 29  |.first(curline$)|
00002910  20 ca 0d 16 b2 0f c9 20  22 55 22 2c 22 55 50 22  | ...... "U","UP"|
00002920  3a 0d 16 bc 43 e7 20 55  3d 20 a3 20 8c 20 f2 72  |:...C. U= . . .r|
00002930  65 70 6f 72 74 28 22 54  68 65 72 65 20 69 73 20  |eport("There is |
00002940  6e 6f 20 65 78 69 74 20  69 6e 20 74 68 61 74 20  |no exit in that |
00002950  64 69 72 65 63 74 69 6f  6e 2e 22 29 20 8b 20 f2  |direction.") . .|
00002960  64 28 37 29 0d 16 c6 11  c9 20 22 44 22 2c 22 44  |d(7)..... "D","D|
00002970  4f 57 4e 22 3a 0d 16 d0  43 e7 20 44 3d 20 a3 20  |OWN":...C. D= . |
00002980  8c 20 f2 72 65 70 6f 72  74 28 22 54 68 65 72 65  |. .report("There|
00002990  20 69 73 20 6e 6f 20 65  78 69 74 20 69 6e 20 74  | is no exit in t|
000029a0  68 61 74 20 64 69 72 65  63 74 69 6f 6e 2e 22 29  |hat direction.")|
000029b0  20 8b 20 f2 64 28 38 29  0d 16 da 12 c9 20 22 4e  | . .d(8)..... "N|
000029c0  22 2c 22 4e 4f 52 54 48  22 3a 0d 16 e4 43 e7 20  |","NORTH":...C. |
000029d0  4e 3d 20 a3 20 8c 20 f2  72 65 70 6f 72 74 28 22  |N= . . .report("|
000029e0  54 68 65 72 65 20 69 73  20 6e 6f 20 65 78 69 74  |There is no exit|
000029f0  20 69 6e 20 74 68 61 74  20 64 69 72 65 63 74 69  | in that directi|
00002a00  6f 6e 2e 22 29 20 8b 20  f2 64 28 36 29 0d 16 ee  |on.") . .d(6)...|
00002a10  12 c9 20 22 53 22 2c 22  53 4f 55 54 48 22 3a 0d  |.. "S","SOUTH":.|
00002a20  16 f8 43 e7 20 53 3d 20  a3 20 8c 20 f2 72 65 70  |..C. S= . . .rep|
00002a30  6f 72 74 28 22 54 68 65  72 65 20 69 73 20 6e 6f  |ort("There is no|
00002a40  20 65 78 69 74 20 69 6e  20 74 68 61 74 20 64 69  | exit in that di|
00002a50  72 65 63 74 69 6f 6e 2e  22 29 20 8b 20 f2 64 28  |rection.") . .d(|
00002a60  35 29 0d 17 02 11 c9 20  22 45 22 2c 22 45 41 53  |5)..... "E","EAS|
00002a70  54 22 3a 0d 17 0c 43 e7  20 45 3d 20 a3 20 8c 20  |T":...C. E= . . |
00002a80  f2 72 65 70 6f 72 74 28  22 54 68 65 72 65 20 69  |.report("There i|
00002a90  73 20 6e 6f 20 65 78 69  74 20 69 6e 20 74 68 61  |s no exit in tha|
00002aa0  74 20 64 69 72 65 63 74  69 6f 6e 2e 22 29 20 8b  |t direction.") .|
00002ab0  20 f2 64 28 33 29 0d 17  16 11 c9 20 22 57 22 2c  | .d(3)..... "W",|
00002ac0  22 57 45 53 54 22 3a 0d  17 20 43 e7 20 57 3d 20  |"WEST":.. C. W= |
00002ad0  a3 20 8c 20 f2 72 65 70  6f 72 74 28 22 54 68 65  |. . .report("The|
00002ae0  72 65 20 69 73 20 6e 6f  20 65 78 69 74 20 69 6e  |re is no exit in|
00002af0  20 74 68 61 74 20 64 69  72 65 63 74 69 6f 6e 2e  | that direction.|
00002b00  22 29 20 8b 20 f2 64 28  34 29 0d 17 2a 17 c9 20  |") . .d(4)..*.. |
00002b10  22 4e 57 22 2c 22 4e 4f  52 54 48 57 45 53 54 22  |"NW","NORTHWEST"|
00002b20  3a 0d 17 34 45 e7 20 4e  57 3d 20 a3 20 8c 20 f2  |:..4E. NW= . . .|
00002b30  72 65 70 6f 72 74 28 22  54 68 65 72 65 20 69 73  |report("There is|
00002b40  20 6e 6f 20 65 78 69 74  20 69 6e 20 74 68 61 74  | no exit in that|
00002b50  20 64 69 72 65 63 74 69  6f 6e 2e 22 29 20 8b 20  | direction.") . |
00002b60  f2 64 28 31 32 29 0d 17  3e 17 c9 20 22 53 57 22  |.d(12)..>.. "SW"|
00002b70  2c 22 53 4f 55 54 48 57  45 53 54 22 3a 0d 17 48  |,"SOUTHWEST":..H|
00002b80  45 e7 20 53 57 3d 20 a3  20 8c 20 f2 72 65 70 6f  |E. SW= . . .repo|
00002b90  72 74 28 22 54 68 65 72  65 20 69 73 20 6e 6f 20  |rt("There is no |
00002ba0  65 78 69 74 20 69 6e 20  74 68 61 74 20 64 69 72  |exit in that dir|
00002bb0  65 63 74 69 6f 6e 2e 22  29 20 8b 20 f2 64 28 31  |ection.") . .d(1|
00002bc0  30 29 0d 17 52 17 c9 20  22 4e 45 22 2c 22 4e 4f  |0)..R.. "NE","NO|
00002bd0  52 54 48 45 41 53 54 22  3a 0d 17 5c 45 e7 20 4e  |RTHEAST":..\E. N|
00002be0  45 3d 20 a3 20 8c 20 f2  72 65 70 6f 72 74 28 22  |E= . . .report("|
00002bf0  54 68 65 72 65 20 69 73  20 6e 6f 20 65 78 69 74  |There is no exit|
00002c00  20 69 6e 20 74 68 61 74  20 64 69 72 65 63 74 69  | in that directi|
00002c10  6f 6e 2e 22 29 20 8b 20  f2 64 28 31 31 29 0d 17  |on.") . .d(11)..|
00002c20  66 17 c9 20 22 53 45 22  2c 22 53 4f 55 54 48 45  |f.. "SE","SOUTHE|
00002c30  41 53 54 22 3a 0d 17 70  44 e7 20 53 45 3d 20 a3  |AST":..pD. SE= .|
00002c40  20 8c 20 f2 72 65 70 6f  72 74 28 22 54 68 65 72  | . .report("Ther|
00002c50  65 20 69 73 20 6e 6f 20  65 78 69 74 20 69 6e 20  |e is no exit in |
00002c60  74 68 61 74 20 64 69 72  65 63 74 69 6f 6e 2e 22  |that direction."|
00002c70  29 20 8b 20 f2 64 28 39  29 0d 17 7a 2e f4 20 2a  |) . .d(9)..z.. *|
00002c80  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2e 2e 2e 2e 74  |***********....t|
00002c90  68 65 6e 20 67 65 74 2c  20 70 75 74 2c 20 74 61  |hen get, put, ta|
00002ca0  6c 6b 2c 2e 2e 2e 2e 0d  17 84 25 c9 20 22 47 45  |lk,.......%. "GE|
00002cb0  54 22 3a f2 67 65 74 28  a4 6e 6f 74 66 69 72 73  |T":.get(.notfirs|
00002cc0  74 28 63 75 72 6c 69 6e  65 24 29 29 0d 17 8e 31  |t(curline$))...1|
00002cd0  c9 20 22 50 49 43 4b 22  3a e7 20 a4 66 69 72 73  |. "PICK":. .firs|
00002ce0  74 28 a4 6e 6f 74 66 69  72 73 74 28 63 75 72 6c  |t(.notfirst(curl|
00002cf0  69 6e 65 24 29 29 3d 22  55 50 22 20 8c 0d 17 98  |ine$))="UP" ....|
00002d00  28 f2 67 65 74 28 a4 6e  6f 74 66 69 72 73 74 28  |(.get(.notfirst(|
00002d10  a4 6e 6f 74 66 69 72 73  74 28 63 75 72 6c 69 6e  |.notfirst(curlin|
00002d20  65 24 29 29 29 0d 17 a2  05 cc 0d 17 ac 23 f2 64  |e$)))........#.d|
00002d30  69 73 70 6c 61 79 28 22  49 20 64 6f 6e 27 74 20  |isplay("I don't |
00002d40  55 6e 64 65 72 73 74 61  6e 64 2e 22 29 0d 17 b6  |Understand.")...|
00002d50  05 cd 0d 17 c0 32 c9 20  22 50 55 54 22 3a e7 20  |.....2. "PUT":. |
00002d60  a4 66 69 72 73 74 28 a4  6e 6f 74 66 69 72 73 74  |.first(.notfirst|
00002d70  28 63 75 72 6c 69 6e 65  24 29 29 3d 22 44 4f 57  |(curline$))="DOW|
00002d80  4e 22 20 8c 0d 17 ca 29  f2 64 72 6f 70 28 a4 6e  |N" ....).drop(.n|
00002d90  6f 74 66 69 72 73 74 28  a4 6e 6f 74 66 69 72 73  |otfirst(.notfirs|
00002da0  74 28 63 75 72 6c 69 6e  65 24 29 29 29 0d 17 d4  |t(curline$)))...|
00002db0  05 cc 0d 17 de 23 f2 64  69 73 70 6c 61 79 28 22  |.....#.display("|
00002dc0  49 20 64 6f 6e 27 74 20  55 6e 64 65 72 73 74 61  |I don't Understa|
00002dd0  6e 64 2e 22 29 0d 17 e8  05 cd 0d 17 f2 27 c9 20  |nd.")........'. |
00002de0  22 44 52 4f 50 22 3a f2  64 72 6f 70 28 a4 6e 6f  |"DROP":.drop(.no|
00002df0  74 66 69 72 73 74 28 63  75 72 6c 69 6e 65 24 29  |tfirst(curline$)|
00002e00  29 0d 17 fc 26 c9 20 22  53 41 59 22 3a f2 74 61  |)...&. "SAY":.ta|
00002e10  6c 6b 28 a4 6e 6f 74 66  69 72 73 74 28 63 75 72  |lk(.notfirst(cur|
00002e20  6c 69 6e 65 24 29 29 0d  18 06 1c c9 20 22 49 4e  |line$))..... "IN|
00002e30  56 22 2c 22 49 4e 56 45  4e 54 4f 52 59 22 3a f2  |V","INVENTORY":.|
00002e40  69 6e 76 0d 18 10 27 c9  20 22 4c 4f 4f 4b 22 3a  |inv...'. "LOOK":|
00002e50  f2 6c 6f 6f 6b 28 a4 6e  6f 74 66 69 72 73 74 28  |.look(.notfirst(|
00002e60  63 75 72 6c 69 6e 65 24  29 29 0d 18 1a 2b c9 20  |curline$))...+. |
00002e70  22 44 45 53 43 52 49 42  45 22 3a f2 6c 6f 6f 6b  |"DESCRIBE":.look|
00002e80  28 a4 6e 6f 74 66 69 72  73 74 28 63 75 72 6c 69  |(.notfirst(curli|
00002e90  6e 65 24 29 29 0d 18 24  16 c9 20 22 48 45 4c 50  |ne$))..$.. "HELP|
00002ea0  22 2c 22 3f 22 3a f2 68  65 6c 70 0d 18 2e ab f4  |","?":.help.....|
00002eb0  20 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2e 2e 2e  | ************...|
00002ec0  2e 66 69 6e 61 6c 6c 79  20 61 6e 79 20 6f 66 20  |.finally any of |
00002ed0  74 68 65 20 66 6f 72 6d  20 22 3c 76 65 72 62 3e  |the form "<verb>|
00002ee0  20 3c 6f 62 6a 65 63 74  7c 70 65 72 73 6f 6e 3e  | <object|person>|
00002ef0  22 2c 20 22 3c 76 65 72  62 3e 20 3c 6f 62 6a 65  |", "<verb> <obje|
00002f00  63 74 7c 70 65 72 73 6f  6e 3e 20 77 69 74 68 7c  |ct|person> with||
00002f10  75 73 69 6e 67 20 3c 6f  62 6a 65 63 74 3e 22 2c  |using <object>",|
00002f20  20 22 55 73 65 20 3c 6f  62 6a 65 63 74 3e 20 74  | "Use <object> t|
00002f30  6f 20 3c 76 65 72 62 3e  20 3c 6f 62 6a 65 63 74  |o <verb> <object|
00002f40  7c 70 65 72 73 6f 6e 3e  22 20 61 6e 64 20 22 3c  ||person>" and "<|
00002f50  76 65 72 62 3e 22 0d 18  38 06 7f 3a 0d 18 42 38  |verb>"..8..:..B8|
00002f60  e7 20 a7 63 75 72 6c 69  6e 65 24 2c 22 20 57 49  |. .curline$," WI|
00002f70  54 48 20 22 29 3c 3e 30  20 84 20 a7 63 75 72 6c  |TH ")<>0 . .curl|
00002f80  69 6e 65 24 2c 22 20 55  53 49 4e 47 20 22 29 3c  |ine$," USING ")<|
00002f90  3e 30 20 8c 0d 18 4c 10  f2 74 79 70 65 5f 62 5f  |>0 ...L..type_b_|
00002fa0  76 65 72 62 0d 18 56 05  cc 0d 18 60 1c e7 20 a7  |verb..V....`.. .|
00002fb0  63 75 72 6c 69 6e 65 24  2c 22 20 54 4f 20 22 29  |curline$," TO ")|
00002fc0  3c 3e 30 20 8c 0d 18 6a  10 f2 74 79 70 65 5f 63  |<>0 ...j..type_c|
00002fd0  5f 76 65 72 62 0d 18 74  05 cc 0d 18 7e 3a e7 20  |_verb..t....~:. |
00002fe0  a4 6e 6f 74 66 69 72 73  74 28 63 75 72 6c 69 6e  |.notfirst(curlin|
00002ff0  65 24 29 3d 22 22 20 8c  20 f2 74 79 70 65 5f 64  |e$)="" . .type_d|
00003000  5f 76 65 72 62 20 8b 20  f2 74 79 70 65 5f 61 5f  |_verb . .type_a_|
00003010  76 65 72 62 0d 18 88 05  cd 0d 18 92 05 cd 0d 18  |verb............|
00003020  9c 05 cb 0d 18 a6 05 e1  0d 18 b0 04 0d 18 ba 11  |................|
00003030  dd f2 74 79 70 65 5f 64  5f 76 65 72 62 0d 18 c4  |..type_d_verb...|
00003040  15 f4 20 63 61 6c 6c 20  72 6f 6f 6d 20 6f 6e 6c  |.. call room onl|
00003050  79 2e 0d 18 ce 07 6c 3d  a3 0d 18 d8 24 6c 69 24  |y.....l=....$li$|
00003060  3d a4 73 74 72 69 70 28  a4 73 74 72 69 70 5f 65  |=.strip(.strip_e|
00003070  6e 64 28 63 75 72 6c 69  6e 65 24 29 29 0d 18 e2  |nd(curline$))...|
00003080  1f e7 20 72 6f 6f 6d 73  25 28 63 5f 72 6f 6f 6d  |.. rooms%(c_room|
00003090  25 2c 31 37 2c 31 29 3c  3e 30 20 8c 0d 18 ec 1c  |%,17,1)<>0 .....|
000030a0  20 62 6f 3d 72 6f 6f 6d  73 25 28 63 5f 72 6f 6f  | bo=rooms%(c_roo|
000030b0  6d 25 2c 31 37 2c 31 29  0d 18 f6 2d 20 c8 95 20  |m%,17,1)...- .. |
000030c0  21 62 6f 3c 3e 30 20 84  20 62 6f 21 34 3c 3e 30  |!bo<>0 . bo!4<>0|
000030d0  20 84 20 62 6f 21 38 3c  3e 30 20 84 20 62 6f 21  | . bo!8<>0 . bo!|
000030e0  31 32 3c 3e 30 0d 19 00  1a 20 20 66 6c 24 3d a4  |12<>0....  fl$=.|
000030f0  67 65 74 73 74 72 69 6e  67 28 62 6f 21 34 29 0d  |getstring(bo!4).|
00003100  19 0a 41 20 20 e7 20 a4  6b 65 79 77 6f 72 64 5f  |..A  . .keyword_|
00003110  6c 6f 6f 6b 28 66 6c 24  2c 6c 69 24 29 3d b9 20  |look(fl$,li$)=. |
00003120  8c 20 f2 63 61 6c 6c 63  6f 64 65 28 62 6f 21 31  |. .callcode(bo!1|
00003130  32 2c 31 2c 63 5f 72 6f  6f 6d 25 29 3a 6c 3d b9  |2,1,c_room%):l=.|
00003140  0d 19 14 0c 20 20 62 6f  2b 3d 31 36 0d 19 1e 06  |....  bo+=16....|
00003150  20 ce 0d 19 28 05 cd 0d  19 32 17 e7 20 70 6c 61  | ...(....2.. pla|
00003160  79 65 72 25 28 37 2c 31  29 3c 3e 30 20 8c 0d 19  |yer%(7,1)<>0 ...|
00003170  3c 14 20 62 6f 3d 70 6c  61 79 65 72 25 28 37 2c  |<. bo=player%(7,|
00003180  31 29 0d 19 46 2d 20 c8  95 20 21 62 6f 3c 3e 30  |1)..F- .. !bo<>0|
00003190  20 84 20 62 6f 21 34 3c  3e 30 20 84 20 62 6f 21  | . bo!4<>0 . bo!|
000031a0  38 3c 3e 30 20 84 20 62  6f 21 31 32 3c 3e 30 0d  |8<>0 . bo!12<>0.|
000031b0  19 50 1a 20 20 66 6c 24  3d a4 67 65 74 73 74 72  |.P.  fl$=.getstr|
000031c0  69 6e 67 28 62 6f 21 34  29 0d 19 5a 3b 20 20 e7  |ing(bo!4)..Z;  .|
000031d0  20 a4 6b 65 79 77 6f 72  64 5f 6c 6f 6f 6b 28 66  | .keyword_look(f|
000031e0  6c 24 2c 6c 69 24 29 3d  b9 20 8c 20 f2 63 61 6c  |l$,li$)=. . .cal|
000031f0  6c 63 6f 64 65 28 62 6f  21 31 32 2c 33 2c 30 29  |lcode(bo!12,3,0)|
00003200  3a 6c 3d b9 0d 19 64 0c  20 20 62 6f 2b 3d 31 36  |:l=...d.  bo+=16|
00003210  0d 19 6e 06 20 ce 0d 19  78 05 cd 0d 19 82 2a e7  |..n. ...x.....*.|
00003220  20 6c 3d a3 20 8c 20 f2  64 69 73 70 6c 61 79 28  | l=. . .display(|
00003230  22 59 6f 75 20 63 61 6e  27 74 20 22 2b 6c 69 24  |"You can't "+li$|
00003240  2b 22 2e 22 29 0d 19 8c  05 e1 0d 19 96 04 0d 19  |+".")...........|
00003250  a0 11 dd f2 74 79 70 65  5f 61 5f 76 65 72 62 0d  |....type_a_verb.|
00003260  19 aa 2d f4 20 63 61 6c  6c 20 72 6f 6f 6d 2c 20  |..-. call room, |
00003270  6f 62 6a 65 63 74 2c 20  70 65 72 73 6f 6e 7c 6f  |object, person|o|
00003280  62 6a 65 63 74 7c 70 6c  61 79 65 72 0d 19 b4 60  |bject|player...`|
00003290  f4 20 75 73 65 72 20 68  61 73 20 74 6f 20 68 61  |. user has to ha|
000032a0  76 65 20 61 6e 20 6f 62  6a 65 63 74 20 77 68 69  |ve an object whi|
000032b0  63 68 20 63 61 6e 20 3c  76 65 72 62 3e 20 6f 72  |ch can <verb> or|
000032c0  20 74 68 65 20 70 6c 61  79 65 72 20 6d 75 73 74  | the player must|
000032d0  20 62 65 20 61 62 6c 65  20 74 6f 20 3c 76 65 72  | be able to <ver|
000032e0  62 3e 20 61 6e 64 20 74  68 65 72 65 0d 19 be 40  |b> and there...@|
000032f0  f4 20 6d 75 73 74 20 62  65 20 61 6e 20 6f 62 6a  |. must be an obj|
00003300  65 63 74 7c 70 65 72 73  6f 6e 7c 70 6c 61 79 65  |ect|person|playe|
00003310  72 20 69 6e 20 74 68 65  20 72 6f 6f 6d 20 77 69  |r in the room wi|
00003320  74 68 20 74 68 65 20 6e  61 6d 65 2e 0d 19 c8 12  |th the name.....|
00003330  f4 20 74 68 69 73 20 69  73 20 62 69 67 2e 0d 19  |. this is big...|
00003340  d2 21 f4 20 72 69 67 68  74 20 66 69 72 73 74 20  |.!. right first |
00003350  65 78 74 72 61 63 74 20  64 61 74 61 2e 2e 2e 0d  |extract data....|
00003360  19 dc 2f 76 65 72 62 24  3d 20 a4 73 74 72 69 70  |../verb$= .strip|
00003370  28 a4 73 74 72 69 70 5f  65 6e 64 28 a4 66 69 72  |(.strip_end(.fir|
00003380  73 74 28 63 75 72 6c 69  6e 65 24 29 29 29 0d 19  |st(curline$)))..|
00003390  e6 34 6f 62 70 65 72 73  24 3d 20 a4 73 74 72 69  |.4obpers$= .stri|
000033a0  70 28 a4 73 74 72 69 70  5f 65 6e 64 28 a4 6e 6f  |p(.strip_end(.no|
000033b0  74 66 69 72 73 74 28 63  75 72 6c 69 6e 65 24 29  |tfirst(curline$)|
000033c0  29 29 0d 19 f0 38 e7 20  a4 66 69 72 73 74 28 6f  |))...8. .first(o|
000033d0  62 70 65 72 73 24 29 3d  22 54 48 45 22 20 8c 20  |bpers$)="THE" . |
000033e0  6f 62 70 65 72 73 24 3d  a4 6e 6f 74 66 69 72 73  |obpers$=.notfirs|
000033f0  74 28 6f 62 70 65 72 73  24 29 0d 19 fa 1d f4 20  |t(obpers$)..... |
00003400  63 68 65 63 6b 20 77 65  20 63 61 6e 20 64 6f 20  |check we can do |
00003410  74 68 69 73 2e 2e 2e 0d  1a 04 13 76 65 72 62 3d  |this.......verb=|
00003420  30 3a 6f 62 70 65 72 73  3d 30 0d 1a 0e 17 e7 20  |0:obpers=0..... |
00003430  70 6c 61 79 65 72 25 28  37 2c 31 29 3c 3e 30 20  |player%(7,1)<>0 |
00003440  8c 0d 1a 18 14 20 62 6f  3d 70 6c 61 79 65 72 25  |..... bo=player%|
00003450  28 37 2c 31 29 0d 1a 22  2d 20 c8 95 20 21 62 6f  |(7,1).."- .. !bo|
00003460  3c 3e 30 20 84 20 62 6f  21 34 3c 3e 30 20 84 20  |<>0 . bo!4<>0 . |
00003470  62 6f 21 38 3c 3e 30 20  84 20 62 6f 21 31 32 3c  |bo!8<>0 . bo!12<|
00003480  3e 30 0d 1a 2c 1a 20 20  66 6c 24 3d a4 67 65 74  |>0..,.  fl$=.get|
00003490  73 74 72 69 6e 67 28 62  6f 21 34 29 0d 1a 36 2b  |string(bo!4)..6+|
000034a0  20 20 e7 20 a4 6b 65 79  77 6f 72 64 5f 6c 6f 6f  |  . .keyword_loo|
000034b0  6b 28 66 6c 24 2c 76 65  72 62 24 29 3d b9 20 8c  |k(fl$,verb$)=. .|
000034c0  20 76 65 72 62 3d 31 0d  1a 40 0c 20 20 62 6f 2b  | verb=1..@.  bo+|
000034d0  3d 31 36 0d 1a 4a 06 20  ce 0d 1a 54 05 cd 0d 1a  |=16..J. ...T....|
000034e0  5e 16 e3 20 49 6f 25 3d  30 20 b8 20 6f 62 6a 65  |^.. Io%=0 . obje|
000034f0  63 74 73 25 0d 1a 68 36  20 e7 20 6f 62 6a 65 63  |cts%..h6 . objec|
00003500  74 5f 70 6c 61 63 65 28  49 6f 25 2c 30 29 3d 33  |t_place(Io%,0)=3|
00003510  20 80 20 6f 62 6a 65 63  74 5f 70 6c 61 63 65 28  | . object_place(|
00003520  49 6f 25 2c 31 29 3d 30  20 8c 0d 1a 72 1e 20 20  |Io%,1)=0 ...r.  |
00003530  e7 20 6f 62 6a 65 63 74  73 25 28 49 6f 25 2c 38  |. objects%(Io%,8|
00003540  2c 31 29 3c 3e 30 20 8c  0d 1a 7c 1b 20 20 20 62  |,1)<>0 ...|.   b|
00003550  6f 3d 6f 62 6a 65 63 74  73 25 28 49 6f 25 2c 38  |o=objects%(Io%,8|
00003560  2c 31 29 0d 1a 86 2f 20  20 20 c8 95 20 21 62 6f  |,1).../   .. !bo|
00003570  3c 3e 30 20 84 20 62 6f  21 34 3c 3e 30 20 84 20  |<>0 . bo!4<>0 . |
00003580  62 6f 21 38 3c 3e 30 20  84 20 62 6f 21 31 32 3c  |bo!8<>0 . bo!12<|
00003590  3e 30 0d 1a 90 1c 20 20  20 20 66 6c 24 3d a4 67  |>0....    fl$=.g|
000035a0  65 74 73 74 72 69 6e 67  28 62 6f 21 34 29 0d 1a  |etstring(bo!4)..|
000035b0  9a 2d 20 20 20 20 e7 20  a4 6b 65 79 77 6f 72 64  |.-    . .keyword|
000035c0  5f 6c 6f 6f 6b 28 66 6c  24 2c 76 65 72 62 24 29  |_look(fl$,verb$)|
000035d0  3d b9 20 8c 20 76 65 72  62 3d 31 0d 1a a4 0e 20  |=. . verb=1.... |
000035e0  20 20 20 62 6f 2b 3d 31  36 0d 1a ae 08 20 20 20  |   bo+=16....   |
000035f0  ce 0d 1a b8 07 20 20 cd  0d 1a c2 06 20 cd 0d 1a  |.....  ..... ...|
00003600  cc 05 ed 0d 1a d6 14 e3  20 49 6f 25 3d 30 b8 20  |........ Io%=0. |
00003610  70 65 6f 70 6c 65 25 0d  1a e0 5c e7 20 70 65 6f  |people%...\. peo|
00003620  70 6c 65 5f 70 6c 61 63  65 28 49 6f 25 2c 31 29  |ple_place(Io%,1)|
00003630  3d 63 5f 72 6f 6f 6d 25  20 80 20 a4 74 6f 75 70  |=c_room% . .toup|
00003640  70 65 72 28 a4 67 65 74  73 74 72 69 6e 67 28 70  |per(.getstring(p|
00003650  65 6f 70 6c 65 25 28 49  6f 25 2c 30 2c 31 29 29  |eople%(Io%,0,1))|
00003660  29 3d 6f 62 70 65 72 73  24 20 8c 6f 62 70 65 72  |)=obpers$ .obper|
00003670  73 3d 31 0d 1a ea 05 ed  0d 1a f4 15 e3 20 49 6f  |s=1.......... Io|
00003680  25 3d 30 b8 20 6f 62 6a  65 63 74 73 25 0d 1a fe  |%=0. objects%...|
00003690  75 e7 20 6f 62 6a 65 63  74 5f 70 6c 61 63 65 28  |u. object_place(|
000036a0  49 6f 25 2c 31 29 3d 63  5f 72 6f 6f 6d 25 20 80  |Io%,1)=c_room% .|
000036b0  20 6f 62 6a 65 63 74 5f  70 6c 61 63 65 28 49 6f  | object_place(Io|
000036c0  25 2c 30 29 3d 31 20 80  20 a4 74 6f 75 70 70 65  |%,0)=1 . .touppe|
000036d0  72 28 a4 67 65 74 73 74  72 69 6e 67 28 6f 62 6a  |r(.getstring(obj|
000036e0  65 63 74 73 25 28 49 6f  25 2c 30 2c 31 29 29 29  |ects%(Io%,0,1)))|
000036f0  3d 6f 62 70 65 72 73 24  20 8c 6f 62 70 65 72 73  |=obpers$ .obpers|
00003700  3d 31 0d 1b 08 05 ed 0d  1b 12 10 e7 20 6f 62 70  |=1.......... obp|
00003710  65 72 73 3d 30 20 8c 0d  1b 1c 5f 20 e7 20 6f 62  |ers=0 ...._ . ob|
00003720  70 65 72 73 24 3d 22 4d  45 22 20 84 20 6f 62 70  |pers$="ME" . obp|
00003730  65 72 73 24 3d 22 4d 59  53 45 4c 46 22 20 6f 62  |ers$="MYSELF" ob|
00003740  70 65 72 73 24 3d a4 74  6f 75 70 70 65 72 28 a4  |pers$=.toupper(.|
00003750  67 65 74 73 74 72 69 6e  67 28 70 6c 61 79 65 72  |getstring(player|
00003760  25 28 30 2c 31 29 29 29  20 54 45 48 4e 20 6f 62  |%(0,1))) TEHN ob|
00003770  70 65 72 73 3d 32 0d 1b  26 05 cd 0d 1b 30 19 e7  |pers=2..&....0..|
00003780  20 76 65 72 62 3d 30 20  84 20 6f 62 70 65 72 73  | verb=0 . obpers|
00003790  3d 30 20 8c 0d 1b 3a 2f  e7 20 76 65 72 62 3d 30  |=0 ...:/. verb=0|
000037a0  20 8c 20 f2 64 69 73 70  6c 61 79 28 22 59 6f 75  | . .display("You|
000037b0  20 63 61 6e 27 74 20 22  2b 76 65 72 62 24 2b 22  | can't "+verb$+"|
000037c0  2e 22 29 0d 1b 44 37 e7  20 6f 62 70 65 72 73 3d  |.")..D7. obpers=|
000037d0  30 20 8c 20 f2 64 69 73  70 6c 61 79 28 22 54 68  |0 . .display("Th|
000037e0  65 72 65 27 73 20 6e 6f  74 20 61 20 22 2b 6f 62  |ere's not a "+ob|
000037f0  70 65 72 73 24 2b 22 2e  22 29 0d 1b 4e 05 cc 0d  |pers$+".")..N...|
00003800  1b 58 0f f4 20 63 61 6c  6c 20 72 6f 6f 6d 0d 1b  |.X.. call room..|
00003810  62 1f e7 20 72 6f 6f 6d  73 25 28 63 5f 72 6f 6f  |b.. rooms%(c_roo|
00003820  6d 25 2c 31 37 2c 31 29  3c 3e 30 20 8c 0d 1b 6c  |m%,17,1)<>0 ...l|
00003830  1c 20 62 6f 3d 72 6f 6f  6d 73 25 28 63 5f 72 6f  |. bo=rooms%(c_ro|
00003840  6f 6d 25 2c 31 37 2c 31  29 0d 1b 76 2d 20 c8 95  |om%,17,1)..v- ..|
00003850  20 21 62 6f 3c 3e 30 20  84 20 62 6f 21 34 3c 3e  | !bo<>0 . bo!4<>|
00003860  30 20 84 20 62 6f 21 38  3c 3e 30 20 84 20 62 6f  |0 . bo!8<>0 . bo|
00003870  21 31 32 3c 3e 30 0d 1b  80 1a 20 20 66 6c 24 3d  |!12<>0....  fl$=|
00003880  a4 67 65 74 73 74 72 69  6e 67 28 62 6f 21 34 29  |.getstring(bo!4)|
00003890  0d 1b 8a 3f 20 20 e7 20  a4 6b 65 79 77 6f 72 64  |...?  . .keyword|
000038a0  5f 6c 6f 6f 6b 28 66 6c  24 2c 76 65 72 62 24 29  |_look(fl$,verb$)|
000038b0  3d b9 20 8c 20 f2 63 61  6c 6c 63 6f 64 65 28 62  |=. . .callcode(b|
000038c0  6f 21 31 32 2c 31 2c 63  5f 72 6f 6f 6d 25 29 0d  |o!12,1,c_room%).|
000038d0  1b 94 0c 20 20 62 6f 2b  3d 31 36 0d 1b 9e 06 20  |...  bo+=16.... |
000038e0  ce 0d 1b a8 05 cd 0d 1b  b2 1d f4 20 63 61 6c 6c  |........... call|
000038f0  20 6f 62 6a 65 63 74 73  20 61 6e 64 20 70 6c 61  | objects and pla|
00003900  79 65 72 0d 1b bc 17 e7  20 70 6c 61 79 65 72 25  |yer..... player%|
00003910  28 37 2c 31 29 3c 3e 30  20 8c 0d 1b c6 14 20 62  |(7,1)<>0 ..... b|
00003920  6f 3d 70 6c 61 79 65 72  25 28 37 2c 31 29 0d 1b  |o=player%(7,1)..|
00003930  d0 2d 20 c8 95 20 21 62  6f 3c 3e 30 20 84 20 62  |.- .. !bo<>0 . b|
00003940  6f 21 34 3c 3e 30 20 84  20 62 6f 21 38 3c 3e 30  |o!4<>0 . bo!8<>0|
00003950  20 84 20 62 6f 21 31 32  3c 3e 30 0d 1b da 1a 20  | . bo!12<>0.... |
00003960  20 66 6c 24 3d a4 67 65  74 73 74 72 69 6e 67 28  | fl$=.getstring(|
00003970  62 6f 21 34 29 0d 1b e4  3a 20 20 e7 20 a4 6b 65  |bo!4)...:  . .ke|
00003980  79 77 6f 72 64 5f 6c 6f  6f 6b 28 66 6c 24 2c 76  |yword_look(fl$,v|
00003990  65 72 62 24 29 3d b9 20  8c 20 f2 63 61 6c 6c 63  |erb$)=. . .callc|
000039a0  6f 64 65 28 62 6f 21 31  32 2c 33 2c 30 29 3a 0d  |ode(bo!12,3,0):.|
000039b0  1b ee 0c 20 20 62 6f 2b  3d 31 36 0d 1b f8 06 20  |...  bo+=16.... |
000039c0  ce 0d 1c 02 05 cd 0d 1c  0c 16 e3 20 49 6f 25 3d  |........... Io%=|
000039d0  30 20 b8 20 6f 62 6a 65  63 74 73 25 0d 1c 16 36  |0 . objects%...6|
000039e0  20 e7 20 6f 62 6a 65 63  74 5f 70 6c 61 63 65 28  | . object_place(|
000039f0  49 6f 25 2c 30 29 3d 33  20 80 20 6f 62 6a 65 63  |Io%,0)=3 . objec|
00003a00  74 5f 70 6c 61 63 65 28  49 6f 25 2c 31 29 3d 30  |t_place(Io%,1)=0|
00003a10  20 8c 0d 1c 20 1e 20 20  e7 20 6f 62 6a 65 63 74  | ... .  . object|
00003a20  73 25 28 49 6f 25 2c 38  2c 31 29 3c 3e 30 20 8c  |s%(Io%,8,1)<>0 .|
00003a30  0d 1c 2a 1b 20 20 20 62  6f 3d 6f 62 6a 65 63 74  |..*.   bo=object|
00003a40  73 25 28 49 6f 25 2c 38  2c 31 29 0d 1c 34 2f 20  |s%(Io%,8,1)..4/ |
00003a50  20 20 c8 95 20 21 62 6f  3c 3e 30 20 84 20 62 6f  |  .. !bo<>0 . bo|
00003a60  21 34 3c 3e 30 20 84 20  62 6f 21 38 3c 3e 30 20  |!4<>0 . bo!8<>0 |
00003a70  84 20 62 6f 21 31 32 3c  3e 30 0d 1c 3e 1c 20 20  |. bo!12<>0..>.  |
00003a80  20 20 66 6c 24 3d a4 67  65 74 73 74 72 69 6e 67  |  fl$=.getstring|
00003a90  28 62 6f 21 34 29 0d 1c  48 3d 20 20 20 20 e7 20  |(bo!4)..H=    . |
00003aa0  a4 6b 65 79 77 6f 72 64  5f 6c 6f 6f 6b 28 66 6c  |.keyword_look(fl|
00003ab0  24 2c 76 65 72 62 24 29  3d b9 20 8c 20 f2 63 61  |$,verb$)=. . .ca|
00003ac0  6c 6c 63 6f 64 65 28 62  6f 21 31 32 2c 32 2c 49  |llcode(bo!12,2,I|
00003ad0  6f 25 29 0d 1c 52 0e 20  20 20 20 62 6f 2b 3d 31  |o%)..R.    bo+=1|
00003ae0  36 0d 1c 5c 08 20 20 20  ce 0d 1c 66 07 20 20 cd  |6..\.   ...f.  .|
00003af0  0d 1c 70 06 20 cd 0d 1c  7a 05 ed 0d 1c 84 2d f4  |..p. ...z.....-.|
00003b00  20 63 61 6c 6c 20 74 68  65 20 74 68 69 6e 67 20  | call the thing |
00003b10  74 68 65 20 61 63 74 20  69 73 20 62 65 73 74 6f  |the act is besto|
00003b20  77 65 64 20 75 70 6f 6e  0d 1c 8e 14 e3 20 49 6f  |wed upon..... Io|
00003b30  25 3d 30 b8 20 70 65 6f  70 6c 65 25 0d 1c 98 54  |%=0. people%...T|
00003b40  e7 20 70 65 6f 70 6c 65  5f 70 6c 61 63 65 28 49  |. people_place(I|
00003b50  6f 25 2c 31 29 3d 63 5f  72 6f 6f 6d 25 20 80 20  |o%,1)=c_room% . |
00003b60  a4 74 6f 75 70 70 65 72  28 a4 67 65 74 73 74 72  |.toupper(.getstr|
00003b70  69 6e 67 28 70 65 6f 70  6c 65 25 28 49 6f 25 2c  |ing(people%(Io%,|
00003b80  30 2c 31 29 29 29 3d 6f  62 70 65 72 73 24 20 8c  |0,1)))=obpers$ .|
00003b90  0d 1c a2 1e 20 20 e7 20  70 65 6f 70 6c 65 25 28  |....  . people%(|
00003ba0  49 6f 25 2c 31 30 2c 31  29 3c 3e 30 20 8c 0d 1c  |Io%,10,1)<>0 ...|
00003bb0  ac 1b 20 20 20 62 6f 3d  70 65 6f 70 6c 65 25 28  |..   bo=people%(|
00003bc0  49 6f 25 2c 31 30 2c 31  29 0d 1c b6 2f 20 20 20  |Io%,10,1).../   |
00003bd0  c8 95 20 21 62 6f 3c 3e  30 20 84 20 62 6f 21 34  |.. !bo<>0 . bo!4|
00003be0  3c 3e 30 20 84 20 62 6f  21 38 3c 3e 30 20 84 20  |<>0 . bo!8<>0 . |
00003bf0  62 6f 21 31 32 3c 3e 30  0d 1c c0 1c 20 20 20 20  |bo!12<>0....    |
00003c00  66 6c 24 3d a4 67 65 74  73 74 72 69 6e 67 28 62  |fl$=.getstring(b|
00003c10  6f 21 34 29 0d 1c ca 3d  20 20 20 20 e7 20 a4 6b  |o!4)...=    . .k|
00003c20  65 79 77 6f 72 64 5f 6c  6f 6f 6b 28 66 6c 24 2c  |eyword_look(fl$,|
00003c30  76 65 72 62 24 29 3d b9  20 8c 20 f2 63 61 6c 6c  |verb$)=. . .call|
00003c40  63 6f 64 65 28 62 6f 21  31 32 2c 33 2c 49 6f 25  |code(bo!12,3,Io%|
00003c50  29 0d 1c d4 0e 20 20 20  20 62 6f 2b 3d 31 36 0d  |)....    bo+=16.|
00003c60  1c de 08 20 20 20 ce 0d  1c e8 07 20 20 cd 0d 1c  |...   .....  ...|
00003c70  f2 05 cd 0d 1c fc 05 ed  0d 1d 06 15 e3 20 49 6f  |............. Io|
00003c80  25 3d 30 b8 20 6f 62 6a  65 63 74 73 25 0d 1d 10  |%=0. objects%...|
00003c90  6d e7 20 6f 62 6a 65 63  74 5f 70 6c 61 63 65 28  |m. object_place(|
00003ca0  49 6f 25 2c 31 29 3d 63  5f 72 6f 6f 6d 25 20 80  |Io%,1)=c_room% .|
00003cb0  20 6f 62 6a 65 63 74 5f  70 6c 61 63 65 28 49 6f  | object_place(Io|
00003cc0  25 2c 30 29 3d 31 20 80  20 a4 74 6f 75 70 70 65  |%,0)=1 . .touppe|
00003cd0  72 28 a4 67 65 74 73 74  72 69 6e 67 28 6f 62 6a  |r(.getstring(obj|
00003ce0  65 63 74 73 25 28 49 6f  25 2c 30 2c 31 29 29 29  |ects%(Io%,0,1)))|
00003cf0  3d 6f 62 70 65 72 73 24  20 8c 0d 1d 1a 1e 20 20  |=obpers$ .....  |
00003d00  e7 20 6f 62 6a 65 63 74  73 25 28 49 6f 25 2c 37  |. objects%(Io%,7|
00003d10  2c 31 29 3c 3e 30 20 8c  0d 1d 24 1b 20 20 20 62  |,1)<>0 ...$.   b|
00003d20  6f 3d 6f 62 6a 65 63 74  73 25 28 49 6f 25 2c 37  |o=objects%(Io%,7|
00003d30  2c 31 29 0d 1d 2e 2f 20  20 20 c8 95 20 21 62 6f  |,1).../   .. !bo|
00003d40  3c 3e 30 20 84 20 62 6f  21 34 3c 3e 30 20 84 20  |<>0 . bo!4<>0 . |
00003d50  62 6f 21 38 3c 3e 30 20  84 20 62 6f 21 31 32 3c  |bo!8<>0 . bo!12<|
00003d60  3e 30 0d 1d 38 1c 20 20  20 20 66 6c 24 3d a4 67  |>0..8.    fl$=.g|
00003d70  65 74 73 74 72 69 6e 67  28 62 6f 21 34 29 0d 1d  |etstring(bo!4)..|
00003d80  42 3d 20 20 20 20 e7 20  a4 6b 65 79 77 6f 72 64  |B=    . .keyword|
00003d90  5f 6c 6f 6f 6b 28 66 6c  24 2c 76 65 72 62 24 29  |_look(fl$,verb$)|
00003da0  3d b9 20 8c 20 f2 63 61  6c 6c 63 6f 64 65 28 62  |=. . .callcode(b|
00003db0  6f 21 31 32 2c 32 2c 49  6f 25 29 0d 1d 4c 0e 20  |o!12,2,Io%)..L. |
00003dc0  20 20 20 62 6f 2b 3d 31  36 0d 1d 56 08 20 20 20  |   bo+=16..V.   |
00003dd0  ce 0d 1d 60 07 20 20 cd  0d 1d 6a 05 cd 0d 1d 74  |...`.  ...j....t|
00003de0  05 ed 0d 1d 7e 10 e7 20  6f 62 70 65 72 73 3d 32  |....~.. obpers=2|
00003df0  20 8c 0d 1d 88 17 e7 20  70 6c 61 79 65 72 25 28  | ...... player%(|
00003e00  36 2c 31 29 3c 3e 30 20  8c 0d 1d 92 14 20 62 6f  |6,1)<>0 ..... bo|
00003e10  3d 70 6c 61 79 65 72 25  28 36 2c 31 29 0d 1d 9c  |=player%(6,1)...|
00003e20  2d 20 c8 95 20 21 62 6f  3c 3e 30 20 84 20 62 6f  |- .. !bo<>0 . bo|
00003e30  21 34 3c 3e 30 20 84 20  62 6f 21 38 3c 3e 30 20  |!4<>0 . bo!8<>0 |
00003e40  84 20 62 6f 21 31 32 3c  3e 30 0d 1d a6 1a 20 20  |. bo!12<>0....  |
00003e50  66 6c 24 3d a4 67 65 74  73 74 72 69 6e 67 28 62  |fl$=.getstring(b|
00003e60  6f 21 34 29 0d 1d b0 3a  20 20 e7 20 a4 6b 65 79  |o!4)...:  . .key|
00003e70  77 6f 72 64 5f 6c 6f 6f  6b 28 66 6c 24 2c 76 65  |word_look(fl$,ve|
00003e80  72 62 24 29 3d b9 20 8c  20 f2 63 61 6c 6c 63 6f  |rb$)=. . .callco|
00003e90  64 65 28 62 6f 21 31 32  2c 33 2c 30 29 3a 0d 1d  |de(bo!12,3,0):..|
00003ea0  ba 0c 20 20 62 6f 2b 3d  31 36 0d 1d c4 06 20 ce  |..  bo+=16.... .|
00003eb0  0d 1d ce 05 cd 0d 1d d8  05 cd 0d 1d e2 05 cd 0d  |................|
00003ec0  1d ec 05 e1 0d 1d f6 04  0d 1e 00 11 dd f2 74 79  |..............ty|
00003ed0  70 65 5f 62 5f 76 65 72  62 0d 1e 0a 32 f4 20 22  |pe_b_verb...2. "|
00003ee0  3c 76 65 72 62 3e 20 3c  6f 62 6a 65 63 74 7c 70  |<verb> <object|p|
00003ef0  65 72 73 6f 6e 3e 20 77  69 74 68 7c 75 73 69 6e  |erson> with|usin|
00003f00  67 20 3c 6f 62 6a 65 63  74 3e 22 0d 1e 14 2d f4  |g <object>"...-.|
00003f10  20 63 61 6c 6c 20 72 6f  6f 6d 2c 20 6f 62 6a 65  | call room, obje|
00003f20  63 74 2c 20 70 65 72 73  6f 6e 7c 6f 62 6a 65 63  |ct, person|objec|
00003f30  74 7c 70 6c 61 79 65 72  0d 1e 1e 38 f4 20 75 73  |t|player...8. us|
00003f40  65 72 20 68 61 73 20 74  6f 20 68 61 76 65 20 61  |er has to have a|
00003f50  6e 20 6f 62 6a 65 63 74  20 77 69 74 68 20 74 68  |n object with th|
00003f60  65 20 6e 61 6d 65 20 61  6e 64 20 74 68 65 72 65  |e name and there|
00003f70  0d 1e 28 40 f4 20 6d 75  73 74 20 62 65 20 61 6e  |..(@. must be an|
00003f80  20 6f 62 6a 65 63 74 7c  70 65 72 73 6f 6e 7c 70  | object|person|p|
00003f90  6c 61 79 65 72 20 69 6e  20 74 68 65 20 72 6f 6f  |layer in the roo|
00003fa0  6d 20 77 69 74 68 20 74  68 65 20 6e 61 6d 65 2e  |m with the name.|
00003fb0  0d 1e 32 07 66 3d a3 0d  1e 3c 1a 76 65 72 62 24  |..2.f=...<.verb$|
00003fc0  3d a4 66 69 72 73 74 28  63 75 72 6c 69 6e 65 24  |=.first(curline$|
00003fd0  29 0d 1e 46 20 63 75 72  6c 69 6e 65 24 3d a4 6e  |)..F curline$=.n|
00003fe0  6f 74 66 69 72 73 74 28  63 75 72 6c 69 6e 65 24  |otfirst(curline$|
00003ff0  29 0d 1e 50 17 e7 20 63  75 72 6c 69 6e 65 24 3d  |)..P.. curline$=|
00004000  22 22 20 8c 20 66 3d b9  0d 1e 5a 1e e7 20 a7 63  |"" . f=...Z.. .c|
00004010  75 72 6c 69 6e 65 24 2c  22 20 57 49 54 48 20 22  |urline$," WITH "|
00004020  29 3c 3e 30 20 8c 0d 1e  64 2e 6f 62 70 65 72 73  |)<>0 ...d.obpers|
00004030  24 3d c1 63 75 72 6c 69  6e 65 24 2c 31 2c a7 63  |$=.curline$,1,.c|
00004040  75 72 6c 69 6e 65 24 2c  22 20 57 49 54 48 20 22  |urline$," WITH "|
00004050  29 2d 31 29 0d 1e 6e 2d  63 75 72 6c 69 6e 65 24  |)-1)..n-curline$|
00004060  3d c1 63 75 72 6c 69 6e  65 24 2c a7 63 75 72 6c  |=.curline$,.curl|
00004070  69 6e 65 24 2c 22 20 57  49 54 48 20 22 29 2b 36  |ine$," WITH ")+6|
00004080  29 0d 1e 78 05 cc 0d 1e  82 1f e7 20 a7 63 75 72  |)..x....... .cur|
00004090  6c 69 6e 65 24 2c 22 20  55 53 49 4e 47 20 22 29  |line$," USING ")|
000040a0  3c 3e 30 20 8c 0d 1e 8c  2f 6f 62 70 65 72 73 24  |<>0 ..../obpers$|
000040b0  3d c1 63 75 72 6c 69 6e  65 24 2c 31 2c a7 63 75  |=.curline$,1,.cu|
000040c0  72 6c 69 6e 65 24 2c 22  20 55 53 49 4e 47 20 22  |rline$," USING "|
000040d0  29 2d 31 29 0d 1e 96 2e  63 75 72 6c 69 6e 65 24  |)-1)....curline$|
000040e0  3d c1 63 75 72 6c 69 6e  65 24 2c a7 63 75 72 6c  |=.curline$,.curl|
000040f0  69 6e 65 24 2c 22 20 55  53 49 4e 47 20 22 29 2b  |ine$," USING ")+|
00004100  37 29 0d 1e a0 05 cc 0d  1e aa 07 66 3d b9 0d 1e  |7).........f=...|
00004110  b4 05 cd 0d 1e be 05 cd  0d 1e c8 17 e7 20 63 75  |............. cu|
00004120  72 6c 69 6e 65 24 3d 22  22 20 8c 20 66 3d b9 0d  |rline$="" . f=..|
00004130  1e d2 14 6f 62 6a 65 63  74 24 3d 63 75 72 6c 69  |...object$=curli|
00004140  6e 65 24 0d 1e dc 38 e7  20 a4 66 69 72 73 74 28  |ne$...8. .first(|
00004150  6f 62 6a 65 63 74 24 29  3d 22 54 48 45 22 20 8c  |object$)="THE" .|
00004160  20 6f 62 6a 65 63 74 24  3d a4 6e 6f 74 66 69 72  | object$=.notfir|
00004170  73 74 28 6f 62 6a 65 63  74 24 29 0d 1e e6 38 e7  |st(object$)...8.|
00004180  20 a4 66 69 72 73 74 28  6f 62 70 65 72 73 24 29  | .first(obpers$)|
00004190  3d 22 54 48 45 22 20 8c  20 6f 62 70 65 72 73 24  |="THE" . obpers$|
000041a0  3d a4 6e 6f 74 66 69 72  73 74 28 6f 62 70 65 72  |=.notfirst(obper|
000041b0  73 24 29 0d 1e f0 25 f2  66 75 6c 6c 5f 76 65 72  |s$)...%.full_ver|
000041c0  62 28 76 65 72 62 24 2c  6f 62 70 65 72 73 24 2c  |b(verb$,obpers$,|
000041d0  6f 62 6a 65 63 74 24 29  0d 1e fa 05 e1 0d 1f 04  |object$)........|
000041e0  04 0d 1f 0e 11 dd f2 74  79 70 65 5f 63 5f 76 65  |.......type_c_ve|
000041f0  72 62 0d 1f 18 2e f4 20  22 55 73 65 20 3c 6f 62  |rb..... "Use <ob|
00004200  6a 65 63 74 3e 20 74 6f  20 3c 76 65 72 62 3e 20  |ject> to <verb> |
00004210  3c 6f 62 6a 65 63 74 7c  70 65 72 73 6f 6e 3e 22  |<object|person>"|
00004220  0d 1f 22 2d f4 20 63 61  6c 6c 20 72 6f 6f 6d 2c  |.."-. call room,|
00004230  20 6f 62 6a 65 63 74 2c  20 70 65 72 73 6f 6e 7c  | object, person||
00004240  6f 62 6a 65 63 74 7c 70  6c 61 79 65 72 0d 1f 2c  |object|player..,|
00004250  38 f4 20 75 73 65 72 20  68 61 73 20 74 6f 20 68  |8. user has to h|
00004260  61 76 65 20 61 6e 20 6f  62 6a 65 63 74 20 77 69  |ave an object wi|
00004270  74 68 20 74 68 65 20 6e  61 6d 65 20 61 6e 64 20  |th the name and |
00004280  74 68 65 72 65 0d 1f 36  40 f4 20 6d 75 73 74 20  |there..6@. must |
00004290  62 65 20 61 6e 20 6f 62  6a 65 63 74 7c 70 65 72  |be an object|per|
000042a0  73 6f 6e 7c 70 6c 61 79  65 72 20 69 6e 20 74 68  |son|player in th|
000042b0  65 20 72 6f 6f 6d 20 77  69 74 68 20 74 68 65 20  |e room with the |
000042c0  6e 61 6d 65 2e 0d 1f 40  20 63 75 72 6c 69 6e 65  |name...@ curline|
000042d0  24 3d a4 6e 6f 74 66 69  72 73 74 28 63 75 72 6c  |$=.notfirst(curl|
000042e0  69 6e 65 24 29 0d 1f 4a  3b e7 20 a4 66 69 72 73  |ine$)..J;. .firs|
000042f0  74 28 63 75 72 6c 69 6e  65 24 29 3d 22 54 48 45  |t(curline$)="THE|
00004300  22 20 8c 20 63 75 72 6c  69 6e 65 24 3d a4 6e 6f  |" . curline$=.no|
00004310  74 66 69 72 73 74 28 63  75 72 6c 69 6e 65 24 29  |tfirst(curline$)|
00004320  0d 1f 54 2c 6f 62 6a 65  63 74 24 3d c1 63 75 72  |..T,object$=.cur|
00004330  6c 69 6e 65 24 2c 31 2c  a7 63 75 72 6c 69 6e 65  |line$,1,.curline|
00004340  24 2c 22 20 54 4f 20 22  29 2d 31 29 0d 1f 5e 2b  |$," TO ")-1)..^+|
00004350  63 75 72 6c 69 6e 65 24  3d c1 63 75 72 6c 69 6e  |curline$=.curlin|
00004360  65 24 2c a7 63 75 72 6c  69 6e 65 24 2c 22 20 54  |e$,.curline$," T|
00004370  4f 20 22 29 2b 34 29 0d  1f 68 1a 76 65 72 62 24  |O ")+4)..h.verb$|
00004380  3d a4 66 69 72 73 74 28  63 75 72 6c 69 6e 65 24  |=.first(curline$|
00004390  29 0d 1f 72 20 63 75 72  6c 69 6e 65 24 3d a4 6e  |)..r curline$=.n|
000043a0  6f 74 66 69 72 73 74 28  63 75 72 6c 69 6e 65 24  |otfirst(curline$|
000043b0  29 0d 1f 7c 14 6f 62 70  65 72 73 24 3d 63 75 72  |)..|.obpers$=cur|
000043c0  6c 69 6e 65 24 0d 1f 86  38 e7 20 a4 66 69 72 73  |line$...8. .firs|
000043d0  74 28 6f 62 70 65 72 73  24 29 3d 22 54 48 45 22  |t(obpers$)="THE"|
000043e0  20 8c 20 6f 62 70 65 72  73 24 3d a4 6e 6f 74 66  | . obpers$=.notf|
000043f0  69 72 73 74 28 6f 62 70  65 72 73 24 29 0d 1f 90  |irst(obpers$)...|
00004400  25 f2 66 75 6c 6c 5f 76  65 72 62 28 76 65 72 62  |%.full_verb(verb|
00004410  24 2c 6f 62 70 65 72 73  24 2c 6f 62 6a 65 63 74  |$,obpers$,object|
00004420  24 29 0d 1f 9a 05 e1 0d  1f a4 04 0d 1f ae 20 dd  |$)............ .|
00004430  f2 66 75 6c 6c 5f 76 65  72 62 28 76 65 72 62 24  |.full_verb(verb$|
00004440  2c 74 6f 24 2c 66 72 6f  6d 24 29 0d 1f b8 16 76  |,to$,from$)....v|
00004450  65 72 62 3d 30 3a 74 6f  3d 30 3a 66 72 6f 6d 3d  |erb=0:to=0:from=|
00004460  30 0d 1f c2 17 e7 20 70  6c 61 79 65 72 25 28 37  |0..... player%(7|
00004470  2c 31 29 3c 3e 30 20 8c  0d 1f cc 14 20 62 6f 3d  |,1)<>0 ..... bo=|
00004480  70 6c 61 79 65 72 25 28  37 2c 31 29 0d 1f d6 2d  |player%(7,1)...-|
00004490  20 c8 95 20 21 62 6f 3c  3e 30 20 84 20 62 6f 21  | .. !bo<>0 . bo!|
000044a0  34 3c 3e 30 20 84 20 62  6f 21 38 3c 3e 30 20 84  |4<>0 . bo!8<>0 .|
000044b0  20 62 6f 21 31 32 3c 3e  30 0d 1f e0 1a 20 20 66  | bo!12<>0....  f|
000044c0  6c 24 3d a4 67 65 74 73  74 72 69 6e 67 28 62 6f  |l$=.getstring(bo|
000044d0  21 34 29 0d 1f ea 2b 20  20 e7 20 a4 6b 65 79 77  |!4)...+  . .keyw|
000044e0  6f 72 64 5f 6c 6f 6f 6b  28 66 6c 24 2c 76 65 72  |ord_look(fl$,ver|
000044f0  62 24 29 3d b9 20 8c 20  76 65 72 62 3d 31 0d 1f  |b$)=. . verb=1..|
00004500  f4 0c 20 20 62 6f 2b 3d  31 36 0d 1f fe 06 20 ce  |..  bo+=16.... .|
00004510  0d 20 08 05 cd 0d 20 12  16 e3 20 49 6f 25 3d 30  |. .... ... Io%=0|
00004520  20 b8 20 6f 62 6a 65 63  74 73 25 0d 20 1c 36 20  | . objects%. .6 |
00004530  e7 20 6f 62 6a 65 63 74  5f 70 6c 61 63 65 28 49  |. object_place(I|
00004540  6f 25 2c 30 29 3d 33 20  80 20 6f 62 6a 65 63 74  |o%,0)=3 . object|
00004550  5f 70 6c 61 63 65 28 49  6f 25 2c 31 29 3d 30 20  |_place(Io%,1)=0 |
00004560  8c 0d 20 26 1e 20 20 e7  20 6f 62 6a 65 63 74 73  |.. &.  . objects|
00004570  25 28 49 6f 25 2c 38 2c  31 29 3c 3e 30 20 8c 0d  |%(Io%,8,1)<>0 ..|
00004580  20 30 1b 20 20 20 62 6f  3d 6f 62 6a 65 63 74 73  | 0.   bo=objects|
00004590  25 28 49 6f 25 2c 38 2c  31 29 0d 20 3a 2f 20 20  |%(Io%,8,1). :/  |
000045a0  20 c8 95 20 21 62 6f 3c  3e 30 20 84 20 62 6f 21  | .. !bo<>0 . bo!|
000045b0  34 3c 3e 30 20 84 20 62  6f 21 38 3c 3e 30 20 84  |4<>0 . bo!8<>0 .|
000045c0  20 62 6f 21 31 32 3c 3e  30 0d 20 44 1c 20 20 20  | bo!12<>0. D.   |
000045d0  20 66 6c 24 3d a4 67 65  74 73 74 72 69 6e 67 28  | fl$=.getstring(|
000045e0  62 6f 21 34 29 0d 20 4e  2d 20 20 20 20 e7 20 a4  |bo!4). N-    . .|
000045f0  6b 65 79 77 6f 72 64 5f  6c 6f 6f 6b 28 66 6c 24  |keyword_look(fl$|
00004600  2c 76 65 72 62 24 29 3d  b9 20 8c 20 76 65 72 62  |,verb$)=. . verb|
00004610  3d 31 0d 20 58 0e 20 20  20 20 62 6f 2b 3d 31 36  |=1. X.    bo+=16|
00004620  0d 20 62 08 20 20 20 ce  0d 20 6c 07 20 20 cd 0d  |. b.   .. l.  ..|
00004630  20 76 06 20 cd 0d 20 80  05 ed 0d 20 8a 14 e3 20  | v. .. .... ... |
00004640  49 6f 25 3d 30 b8 20 70  65 6f 70 6c 65 25 0d 20  |Io%=0. people%. |
00004650  94 55 e7 20 70 65 6f 70  6c 65 5f 70 6c 61 63 65  |.U. people_place|
00004660  28 49 6f 25 2c 31 29 3d  63 5f 72 6f 6f 6d 25 20  |(Io%,1)=c_room% |
00004670  80 20 a4 74 6f 75 70 70  65 72 28 a4 67 65 74 73  |. .toupper(.gets|
00004680  74 72 69 6e 67 28 70 65  6f 70 6c 65 25 28 49 6f  |tring(people%(Io|
00004690  25 2c 30 2c 31 29 29 29  3d 74 6f 24 20 8c 20 74  |%,0,1)))=to$ . t|
000046a0  6f 3d 31 0d 20 9e 05 ed  0d 20 a8 15 e3 20 49 6f  |o=1. .... ... Io|
000046b0  25 3d 30 b8 20 6f 62 6a  65 63 74 73 25 0d 20 b2  |%=0. objects%. .|
000046c0  6e e7 20 6f 62 6a 65 63  74 5f 70 6c 61 63 65 28  |n. object_place(|
000046d0  49 6f 25 2c 31 29 3d 63  5f 72 6f 6f 6d 25 20 80  |Io%,1)=c_room% .|
000046e0  20 6f 62 6a 65 63 74 5f  70 6c 61 63 65 28 49 6f  | object_place(Io|
000046f0  25 2c 30 29 3d 31 20 80  20 a4 74 6f 75 70 70 65  |%,0)=1 . .touppe|
00004700  72 28 a4 67 65 74 73 74  72 69 6e 67 28 6f 62 6a  |r(.getstring(obj|
00004710  65 63 74 73 25 28 49 6f  25 2c 30 2c 31 29 29 29  |ects%(Io%,0,1)))|
00004720  3d 74 6f 24 20 8c 20 74  6f 3d 31 0d 20 bc 6e e7  |=to$ . to=1. .n.|
00004730  20 6f 62 6a 65 63 74 5f  70 6c 61 63 65 28 49 6f  | object_place(Io|
00004740  25 2c 31 29 3d 30 20 80  20 6f 62 6a 65 63 74 5f  |%,1)=0 . object_|
00004750  70 6c 61 63 65 28 49 6f  25 2c 30 29 3d 33 20 80  |place(Io%,0)=3 .|
00004760  20 a4 74 6f 75 70 70 65  72 28 a4 67 65 74 73 74  | .toupper(.getst|
00004770  72 69 6e 67 28 6f 62 6a  65 63 74 73 25 28 49 6f  |ring(objects%(Io|
00004780  25 2c 30 2c 31 29 29 29  3d 66 72 6f 6d 24 20 8c  |%,0,1)))=from$ .|
00004790  20 66 72 6f 6d 3d 49 6f  25 0d 20 c6 05 ed 0d 20  | from=Io%. .... |
000047a0  d0 0c e7 20 74 6f 3d 30  20 8c 0d 20 da 4f 20 e7  |... to=0 .. .O .|
000047b0  20 74 6f 24 3d 22 4d 45  22 20 84 20 74 6f 24 3d  | to$="ME" . to$=|
000047c0  22 4d 59 53 45 4c 46 22  20 74 6f 24 3d a4 74 6f  |"MYSELF" to$=.to|
000047d0  75 70 70 65 72 28 a4 67  65 74 73 74 72 69 6e 67  |upper(.getstring|
000047e0  28 70 6c 61 79 65 72 25  28 30 2c 31 29 29 29 20  |(player%(0,1))) |
000047f0  54 45 48 4e 20 74 6f 3d  32 0d 20 e4 05 cd 0d 20  |TEHN to=2. .... |
00004800  ee 1e e7 20 76 65 72 62  3d 30 20 84 20 74 6f 3d  |... verb=0 . to=|
00004810  30 20 84 20 66 72 6f 6d  3d 30 20 8c 0d 20 f8 2e  |0 . from=0 .. ..|
00004820  e7 20 76 65 72 62 3d 30  20 8c 20 f2 64 69 73 70  |. verb=0 . .disp|
00004830  6c 61 79 28 22 49 74 20  63 61 6e 27 74 20 22 2b  |lay("It can't "+|
00004840  76 65 72 62 24 2b 22 2e  22 29 0d 21 02 2f e7 20  |verb$+".").!./. |
00004850  74 6f 3d 30 20 8c 20 f2  64 69 73 70 6c 61 79 28  |to=0 . .display(|
00004860  22 54 68 65 72 65 27 73  20 6e 6f 74 20 61 20 22  |"There's not a "|
00004870  2b 74 6f 24 2b 22 2e 22  29 0d 21 0c 36 e7 20 66  |+to$+".").!.6. f|
00004880  72 6f 6d 3d 30 20 8c 20  f2 64 69 73 70 6c 61 79  |rom=0 . .display|
00004890  28 22 59 6f 75 20 68 61  76 6e 27 74 20 67 6f 74  |("You havn't got|
000048a0  20 61 20 22 2b 66 72 6f  6d 24 2b 22 2e 22 29 0d  | a "+from$+".").|
000048b0  21 16 05 cc 0d 21 20 0c  49 6f 25 3d 66 72 6f 6d  |!....! .Io%=from|
000048c0  0d 21 2a 36 20 e7 20 6f  62 6a 65 63 74 5f 70 6c  |.!*6 . object_pl|
000048d0  61 63 65 28 49 6f 25 2c  30 29 3d 33 20 80 20 6f  |ace(Io%,0)=3 . o|
000048e0  62 6a 65 63 74 5f 70 6c  61 63 65 28 49 6f 25 2c  |bject_place(Io%,|
000048f0  31 29 3d 30 20 8c 0d 21  34 1e 20 20 e7 20 6f 62  |1)=0 ..!4.  . ob|
00004900  6a 65 63 74 73 25 28 49  6f 25 2c 38 2c 31 29 3c  |jects%(Io%,8,1)<|
00004910  3e 30 20 8c 0d 21 3e 1b  20 20 20 62 6f 3d 6f 62  |>0 ..!>.   bo=ob|
00004920  6a 65 63 74 73 25 28 49  6f 25 2c 38 2c 31 29 0d  |jects%(Io%,8,1).|
00004930  21 48 2f 20 20 20 c8 95  20 21 62 6f 3c 3e 30 20  |!H/   .. !bo<>0 |
00004940  84 20 62 6f 21 34 3c 3e  30 20 84 20 62 6f 21 38  |. bo!4<>0 . bo!8|
00004950  3c 3e 30 20 84 20 62 6f  21 31 32 3c 3e 30 0d 21  |<>0 . bo!12<>0.!|
00004960  52 1c 20 20 20 20 66 6c  24 3d a4 67 65 74 73 74  |R.    fl$=.getst|
00004970  72 69 6e 67 28 62 6f 21  34 29 0d 21 5c 3d 20 20  |ring(bo!4).!\=  |
00004980  20 20 e7 20 a4 6b 65 79  77 6f 72 64 5f 6c 6f 6f  |  . .keyword_loo|
00004990  6b 28 66 6c 24 2c 76 65  72 62 24 29 3d b9 20 8c  |k(fl$,verb$)=. .|
000049a0  20 f2 63 61 6c 6c 63 6f  64 65 28 62 6f 21 31 32  | .callcode(bo!12|
000049b0  2c 32 2c 49 6f 25 29 0d  21 66 0e 20 20 20 20 62  |,2,Io%).!f.    b|
000049c0  6f 2b 3d 31 36 0d 21 70  08 20 20 20 ce 0d 21 7a  |o+=16.!p.   ..!z|
000049d0  07 20 20 cd 0d 21 84 06  20 cd 0d 21 8e 2d f4 20  |.  ..!.. ..!.-. |
000049e0  63 61 6c 6c 20 74 68 65  20 74 68 69 6e 67 20 74  |call the thing t|
000049f0  68 65 20 61 63 74 20 69  73 20 62 65 73 74 6f 77  |he act is bestow|
00004a00  65 64 20 75 70 6f 6e 0d  21 98 15 e3 20 49 6f 25  |ed upon.!... Io%|
00004a10  3d 30 20 b8 20 70 65 6f  70 6c 65 25 0d 21 a2 50  |=0 . people%.!.P|
00004a20  e7 20 70 65 6f 70 6c 65  5f 70 6c 61 63 65 28 49  |. people_place(I|
00004a30  6f 25 2c 31 29 3d 63 5f  72 6f 6f 6d 25 20 80 20  |o%,1)=c_room% . |
00004a40  a4 74 6f 75 70 70 65 72  28 a4 67 65 74 73 74 72  |.toupper(.getstr|
00004a50  69 6e 67 28 70 65 6f 70  6c 65 25 28 49 6f 25 2c  |ing(people%(Io%,|
00004a60  30 2c 31 29 29 29 3d 74  6f 24 20 8c 0d 21 ac 1e  |0,1)))=to$ ..!..|
00004a70  20 20 e7 20 70 65 6f 70  6c 65 25 28 49 6f 25 2c  |  . people%(Io%,|
00004a80  31 30 2c 31 29 3c 3e 30  20 8c 0d 21 b6 1b 20 20  |10,1)<>0 ..!..  |
00004a90  20 62 6f 3d 70 65 6f 70  6c 65 25 28 49 6f 25 2c  | bo=people%(Io%,|
00004aa0  31 30 2c 31 29 0d 21 c0  2f 20 20 20 c8 95 20 21  |10,1).!./   .. !|
00004ab0  62 6f 3c 3e 30 20 84 20  62 6f 21 34 3c 3e 30 20  |bo<>0 . bo!4<>0 |
00004ac0  84 20 62 6f 21 38 3c 3e  30 20 84 20 62 6f 21 31  |. bo!8<>0 . bo!1|
00004ad0  32 3c 3e 30 0d 21 ca 1c  20 20 20 20 66 6c 24 3d  |2<>0.!..    fl$=|
00004ae0  a4 67 65 74 73 74 72 69  6e 67 28 62 6f 21 34 29  |.getstring(bo!4)|
00004af0  0d 21 d4 3d 20 20 20 20  e7 20 a4 6b 65 79 77 6f  |.!.=    . .keywo|
00004b00  72 64 5f 6c 6f 6f 6b 28  66 6c 24 2c 76 65 72 62  |rd_look(fl$,verb|
00004b10  24 29 3d b9 20 8c 20 f2  63 61 6c 6c 63 6f 64 65  |$)=. . .callcode|
00004b20  28 62 6f 21 31 32 2c 33  2c 49 6f 25 29 0d 21 de  |(bo!12,3,Io%).!.|
00004b30  0e 20 20 20 20 62 6f 2b  3d 31 36 0d 21 e8 08 20  |.    bo+=16.!.. |
00004b40  20 20 ce 0d 21 f2 07 20  20 cd 0d 21 fc 05 cd 0d  |  ..!..  ..!....|
00004b50  22 06 05 ed 0d 22 10 15  e3 20 49 6f 25 3d 30 b8  |"...."... Io%=0.|
00004b60  20 6f 62 6a 65 63 74 73  25 0d 22 1a 69 e7 20 6f  | objects%.".i. o|
00004b70  62 6a 65 63 74 5f 70 6c  61 63 65 28 49 6f 25 2c  |bject_place(Io%,|
00004b80  31 29 3d 63 5f 72 6f 6f  6d 25 20 80 20 6f 62 6a  |1)=c_room% . obj|
00004b90  65 63 74 5f 70 6c 61 63  65 28 49 6f 25 2c 30 29  |ect_place(Io%,0)|
00004ba0  3d 31 20 80 20 a4 74 6f  75 70 70 65 72 28 a4 67  |=1 . .toupper(.g|
00004bb0  65 74 73 74 72 69 6e 67  28 6f 62 6a 65 63 74 73  |etstring(objects|
00004bc0  25 28 49 6f 25 2c 30 2c  31 29 29 29 3d 74 6f 24  |%(Io%,0,1)))=to$|
00004bd0  20 8c 0d 22 24 1e 20 20  e7 20 6f 62 6a 65 63 74  | .."$.  . object|
00004be0  73 25 28 49 6f 25 2c 37  2c 31 29 3c 3e 30 20 8c  |s%(Io%,7,1)<>0 .|
00004bf0  0d 22 2e 1b 20 20 20 62  6f 3d 6f 62 6a 65 63 74  |."..   bo=object|
00004c00  73 25 28 49 6f 25 2c 37  2c 31 29 0d 22 38 2f 20  |s%(Io%,7,1)."8/ |
00004c10  20 20 c8 95 20 21 62 6f  3c 3e 30 20 84 20 62 6f  |  .. !bo<>0 . bo|
00004c20  21 34 3c 3e 30 20 84 20  62 6f 21 38 3c 3e 30 20  |!4<>0 . bo!8<>0 |
00004c30  84 20 62 6f 21 31 32 3c  3e 30 0d 22 42 1c 20 20  |. bo!12<>0."B.  |
00004c40  20 20 66 6c 24 3d a4 67  65 74 73 74 72 69 6e 67  |  fl$=.getstring|
00004c50  28 62 6f 21 34 29 0d 22  4c 3d 20 20 20 20 e7 20  |(bo!4)."L=    . |
00004c60  a4 6b 65 79 77 6f 72 64  5f 6c 6f 6f 6b 28 66 6c  |.keyword_look(fl|
00004c70  24 2c 76 65 72 62 24 29  3d b9 20 8c 20 f2 63 61  |$,verb$)=. . .ca|
00004c80  6c 6c 63 6f 64 65 28 62  6f 21 31 32 2c 32 2c 49  |llcode(bo!12,2,I|
00004c90  6f 25 29 0d 22 56 0e 20  20 20 20 62 6f 2b 3d 31  |o%)."V.    bo+=1|
00004ca0  36 0d 22 60 08 20 20 20  ce 0d 22 6a 07 20 20 cd  |6."`.   .."j.  .|
00004cb0  0d 22 74 05 cd 0d 22 7e  05 ed 0d 22 88 0c e7 20  |."t..."~..."... |
00004cc0  74 6f 3d 32 20 8c 0d 22  92 17 e7 20 70 6c 61 79  |to=2 .."... play|
00004cd0  65 72 25 28 36 2c 31 29  3c 3e 30 20 8c 0d 22 9c  |er%(6,1)<>0 ..".|
00004ce0  14 20 62 6f 3d 70 6c 61  79 65 72 25 28 36 2c 31  |. bo=player%(6,1|
00004cf0  29 0d 22 a6 2d 20 c8 95  20 21 62 6f 3c 3e 30 20  |).".- .. !bo<>0 |
00004d00  84 20 62 6f 21 34 3c 3e  30 20 84 20 62 6f 21 38  |. bo!4<>0 . bo!8|
00004d10  3c 3e 30 20 84 20 62 6f  21 31 32 3c 3e 30 0d 22  |<>0 . bo!12<>0."|
00004d20  b0 1a 20 20 66 6c 24 3d  a4 67 65 74 73 74 72 69  |..  fl$=.getstri|
00004d30  6e 67 28 62 6f 21 34 29  0d 22 ba 3a 20 20 e7 20  |ng(bo!4).".:  . |
00004d40  a4 6b 65 79 77 6f 72 64  5f 6c 6f 6f 6b 28 66 6c  |.keyword_look(fl|
00004d50  24 2c 76 65 72 62 24 29  3d b9 20 8c 20 f2 63 61  |$,verb$)=. . .ca|
00004d60  6c 6c 63 6f 64 65 28 62  6f 21 31 32 2c 33 2c 30  |llcode(bo!12,3,0|
00004d70  29 3a 0d 22 c4 0c 20 20  62 6f 2b 3d 31 36 0d 22  |):."..  bo+=16."|
00004d80  ce 06 20 ce 0d 22 d8 05  cd 0d 22 e2 05 cd 0d 22  |.. .."...."...."|
00004d90  ec 05 cd 0d 22 f6 05 e1  0d 23 00 04 0d 23 0a 0f  |...."....#...#..|
00004da0  dd f2 6c 6f 6f 6b 28 69  69 24 29 0d 23 14 1f 69  |..look(ii$).#..i|
00004db0  69 24 3d a4 73 74 72 69  70 28 a4 73 74 72 69 70  |i$=.strip(.strip|
00004dc0  5f 65 6e 64 28 69 69 24  29 29 0d 23 1e 0e e7 20  |_end(ii$)).#... |
00004dd0  69 69 24 3d 22 22 20 8c  0d 23 28 09 f2 73 68 6f  |ii$="" ..#(..sho|
00004de0  77 0d 23 32 05 cc 0d 23  3c 2b e7 20 a4 66 69 72  |w.#2...#<+. .fir|
00004df0  73 74 28 69 69 24 29 3d  22 41 54 22 20 8c 20 69  |st(ii$)="AT" . i|
00004e00  69 24 3d a4 6e 6f 74 66  69 72 73 74 28 69 69 24  |i$=.notfirst(ii$|
00004e10  29 0d 23 46 2c e7 20 a4  66 69 72 73 74 28 69 69  |).#F,. .first(ii|
00004e20  24 29 3d 22 54 48 45 22  20 8c 20 69 69 24 3d a4  |$)="THE" . ii$=.|
00004e30  6e 6f 74 66 69 72 73 74  28 69 69 24 29 0d 23 50  |notfirst(ii$).#P|
00004e40  1f 69 69 24 3d a4 73 74  72 69 70 28 a4 73 74 72  |.ii$=.strip(.str|
00004e50  69 70 5f 65 6e 64 28 69  69 24 29 29 0d 23 5a 15  |ip_end(ii$)).#Z.|
00004e60  e3 20 49 6f 25 3d 30 20  b8 20 70 65 6f 70 6c 65  |. Io%=0 . people|
00004e70  25 0d 23 64 32 e7 20 a4  74 6f 75 70 70 65 72 28  |%.#d2. .toupper(|
00004e80  a4 67 65 74 73 74 72 69  6e 67 28 70 65 6f 70 6c  |.getstring(peopl|
00004e90  65 25 28 49 6f 25 2c 30  2c 31 29 29 29 3d 69 69  |e%(Io%,0,1)))=ii|
00004ea0  24 20 8c 0d 23 6e 41 f2  64 65 73 63 72 69 62 65  |$ ..#nA.describe|
00004eb0  28 70 65 6f 70 6c 65 25  28 49 6f 25 2c 30 2c 31  |(people%(Io%,0,1|
00004ec0  29 2c 70 65 6f 70 6c 65  25 28 49 6f 25 2c 31 2c  |),people%(Io%,1,|
00004ed0  31 29 2c 70 65 6f 70 6c  65 25 28 49 6f 25 2c 32  |1),people%(Io%,2|
00004ee0  2c 31 29 29 0d 23 78 05  cd 0d 23 82 05 ed 0d 23  |,1)).#x...#....#|
00004ef0  8c 14 e3 20 49 6f 25 3d  30 b8 6f 62 6a 65 63 74  |... Io%=0.object|
00004f00  73 25 0d 23 96 33 e7 20  a4 74 6f 75 70 70 65 72  |s%.#.3. .toupper|
00004f10  28 a4 67 65 74 73 74 72  69 6e 67 28 6f 62 6a 65  |(.getstring(obje|
00004f20  63 74 73 25 28 49 6f 25  2c 30 2c 31 29 29 29 3d  |cts%(Io%,0,1)))=|
00004f30  69 69 24 20 8c 0d 23 a0  44 f2 64 65 73 63 72 69  |ii$ ..#.D.descri|
00004f40  62 65 28 6f 62 6a 65 63  74 73 25 28 49 6f 25 2c  |be(objects%(Io%,|
00004f50  30 2c 31 29 2c 6f 62 6a  65 63 74 73 25 28 49 6f  |0,1),objects%(Io|
00004f60  25 2c 31 2c 31 29 2c 6f  62 6a 65 63 74 73 25 28  |%,1,1),objects%(|
00004f70  49 6f 25 2c 32 2c 31 29  29 0d 23 aa 05 cd 0d 23  |Io%,2,1)).#....#|
00004f80  b4 05 ed 0d 23 be 05 cd  0d 23 c8 05 e1 0d 23 d2  |....#....#....#.|
00004f90  04 0d 23 dc 15 dd f2 64  65 73 63 72 69 62 65 28  |..#....describe(|
00004fa0  61 2c 62 2c 63 29 0d 23  e6 11 f2 64 69 73 70 6c  |a,b,c).#...displ|
00004fb0  61 79 28 22 20 22 29 0d  23 f0 1f f2 64 69 73 70  |ay(" ").#...disp|
00004fc0  6c 61 79 28 a4 67 65 74  73 74 72 69 6e 67 28 61  |lay(.getstring(a|
00004fd0  29 2b 22 3a 22 29 0d 23  fa 0f e3 20 49 79 25 3d  |)+":").#... Iy%=|
00004fe0  62 20 b8 20 63 0d 24 04  1d f2 64 69 73 70 6c 61  |b . c.$...displa|
00004ff0  79 28 a4 67 65 74 73 74  72 69 6e 67 28 49 79 25  |y(.getstring(Iy%|
00005000  29 29 0d 24 0e 05 ed 0d  24 18 05 e1 0d 24 22 04  |)).$....$....$".|
00005010  0d 24 2c 0a dd f2 68 65  6c 70 0d 24 36 11 f2 64  |.$,...help.$6..d|
00005020  69 73 70 6c 61 79 28 22  20 22 29 0d 24 40 4b f2  |isplay(" ").$@K.|
00005030  64 69 73 70 6c 61 79 28  22 2d 2d 2d 2d 2d 2d 2d  |display("-------|
00005040  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00005070  2d 2d 2d 2d 22 29 0d 24  4a 15 f2 64 69 73 70 6c  |----").$J..displ|
00005080  61 79 28 22 48 65 6c 70  3a 22 29 0d 24 54 4b f2  |ay("Help:").$TK.|
00005090  64 69 73 70 6c 61 79 28  22 2d 2d 2d 2d 2d 2d 2d  |display("-------|
000050a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000050d0  2d 2d 2d 2d 22 29 0d 24  5e 11 f2 64 69 73 70 6c  |----").$^..displ|
000050e0  61 79 28 22 20 22 29 0d  24 68 41 f2 64 69 73 70  |ay(" ").$hA.disp|
000050f0  6c 61 79 28 22 20 6e 2c  73 2c 65 2c 77 2c 75 2c  |lay(" n,s,e,w,u,|
00005100  64 2c 6e 65 2c 6e 77 2c  73 65 20 61 6e 64 20 73  |d,ne,nw,se and s|
00005110  77 20 3a 20 47 6f 20 69  6e 20 61 20 64 69 72 65  |w : Go in a dire|
00005120  63 74 69 6f 6e 2e 22 29  0d 24 72 11 f2 64 69 73  |ction.").$r..dis|
00005130  70 6c 61 79 28 22 20 22  29 0d 24 7c 39 f2 64 69  |play(" ").$|9.di|
00005140  73 70 6c 61 79 28 22 20  69 6e 76 20 20 20 20 20  |splay(" inv     |
00005150  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005160  20 20 20 20 3a 20 49 6e  76 65 6e 74 6f 72 79 2e  |    : Inventory.|
00005170  22 29 0d 24 86 11 f2 64  69 73 70 6c 61 79 28 22  |").$...display("|
00005180  20 22 29 0d 24 90 3d f2  64 69 73 70 6c 61 79 28  | ").$.=.display(|
00005190  22 20 67 65 74 20 3c 6f  62 6a 65 63 74 3e 20 20  |" get <object>  |
000051a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a 20  |              : |
000051b0  47 65 74 20 61 6e 20 6f  62 6a 65 63 74 2e 22 29  |Get an object.")|
000051c0  0d 24 9a 11 f2 64 69 73  70 6c 61 79 28 22 20 22  |.$...display(" "|
000051d0  29 0d 24 a4 3f f2 64 69  73 70 6c 61 79 28 22 20  |).$.?.display(" |
000051e0  64 72 6f 70 20 3c 6f 62  6a 65 63 74 3e 20 20 20  |drop <object>   |
000051f0  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 64 72  |            : dr|
00005200  6f 70 20 61 6e 64 20 6f  62 6a 65 63 74 2e 22 29  |op and object.")|
00005210  0d 24 ae 11 f2 64 69 73  70 6c 61 79 28 22 20 22  |.$...display(" "|
00005220  29 0d 24 b8 3d f2 64 69  73 70 6c 61 79 28 22 20  |).$.=.display(" |
00005230  73 61 79 20 3c 73 65 6e  74 61 6e 63 65 3e 20 20  |say <sentance>  |
00005240  20 20 20 20 20 20 20 20  20 20 20 20 3a 20 73 61  |            : sa|
00005250  79 20 73 6f 6d 65 74 68  69 6e 67 2e 22 29 0d 24  |y something.").$|
00005260  c2 11 f2 64 69 73 70 6c  61 79 28 22 20 22 29 0d  |...display(" ").|
00005270  24 cc 41 f2 64 69 73 70  6c 61 79 28 22 20 6c 6f  |$.A.display(" lo|
00005280  6f 6b 20 5b 3c 6f 62 6a  65 63 74 7c 70 65 72 73  |ok [<object|pers|
00005290  6f 6e 3e 5d 20 20 20 20  20 20 3a 20 6c 6f 6f 6b  |on>]      : look|
000052a0  20 61 74 20 73 6f 6d 65  74 68 69 6e 67 2e 22 29  | at something.")|
000052b0  0d 24 d6 11 f2 64 69 73  70 6c 61 79 28 22 20 22  |.$...display(" "|
000052c0  29 0d 24 e0 18 f2 64 69  73 70 6c 61 79 28 22 41  |).$...display("A|
000052d0  63 74 69 6f 6e 73 3a 22  29 0d 24 ea 2d f2 64 69  |ctions:").$.-.di|
000052e0  73 70 6c 61 79 28 22 20  3c 76 65 72 62 3e 20 5b  |splay(" <verb> [|
000052f0  74 68 65 5d 20 3c 6f 62  6a 65 63 74 7c 70 65 72  |the] <object|per|
00005300  73 6f 6e 3e 22 29 0d 24  f4 47 f2 64 69 73 70 6c  |son>").$.G.displ|
00005310  61 79 28 22 20 3c 76 65  72 62 3e 20 5b 74 68 65  |ay(" <verb> [the|
00005320  5d 20 3c 6f 62 6a 65 63  74 7c 70 65 72 73 6f 6e  |] <object|person|
00005330  3e 20 77 69 74 68 7c 75  73 69 6e 67 20 5b 74 68  |> with|using [th|
00005340  65 5d 20 3c 6f 62 6a 65  63 74 3e 22 29 0d 24 fe  |e] <object>").$.|
00005350  43 f2 64 69 73 70 6c 61  79 28 22 20 55 73 65 20  |C.display(" Use |
00005360  5b 74 68 65 5d 20 3c 6f  62 6a 65 63 74 3e 20 74  |[the] <object> t|
00005370  6f 20 3c 76 65 72 62 3e  20 5b 74 68 65 5d 20 3c  |o <verb> [the] <|
00005380  6f 62 6a 65 63 74 7c 70  65 72 73 6f 6e 3e 22 29  |object|person>")|
00005390  0d 25 08 17 f2 64 69 73  70 6c 61 79 28 22 20 3c  |.%...display(" <|
000053a0  76 65 72 62 3e 22 29 0d  25 12 11 f2 64 69 73 70  |verb>").%...disp|
000053b0  6c 61 79 28 22 20 22 29  0d 25 1c 4b f2 64 69 73  |lay(" ").%.K.dis|
000053c0  70 6c 61 79 28 22 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |play("----------|
000053d0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00005400  2d 22 29 0d 25 26 11 f2  64 69 73 70 6c 61 79 28  |-").%&..display(|
00005410  22 20 22 29 0d 25 30 05  e1 0d 25 3a 04 0d 25 44  |" ").%0...%:..%D|
00005420  09 dd f2 69 6e 76 0d 25  4e 09 6e 5f 6f 3d 30 0d  |...inv.%N.n_o=0.|
00005430  25 58 15 e3 20 49 25 3d  30 20 b8 20 6f 62 6a 65  |%X.. I%=0 . obje|
00005440  63 74 73 25 0d 25 62 47  e7 20 6f 62 6a 65 63 74  |cts%.%bG. object|
00005450  5f 70 6c 61 63 65 28 49  25 2c 30 29 3d 33 20 80  |_place(I%,0)=3 .|
00005460  20 6f 62 6a 65 63 74 5f  70 6c 61 63 65 28 49 25  | object_place(I%|
00005470  2c 31 29 3d 30 20 8c 20  74 65 6d 70 28 6e 5f 6f  |,1)=0 . temp(n_o|
00005480  29 3d 49 25 3a 6e 5f 6f  2b 3d 31 0d 25 6c 05 ed  |)=I%:n_o+=1.%l..|
00005490  0d 25 76 0c c8 8e 20 6e  5f 6f 20 ca 0d 25 80 28  |.%v... n_o ..%.(|
000054a0  c9 20 30 3a f2 64 69 73  70 6c 61 79 28 22 59 6f  |. 0:.display("Yo|
000054b0  75 20 68 61 76 65 20 6e  6f 20 6f 62 6a 65 63 74  |u have no object|
000054c0  73 2e 22 29 0d 25 8a 45  c9 20 31 3a f2 64 69 73  |s.").%.E. 1:.dis|
000054d0  70 6c 61 79 28 22 59 6f  75 20 68 61 76 65 20 61  |play("You have a|
000054e0  20 22 2b a4 67 65 74 73  74 72 69 6e 67 28 6f 62  | "+.getstring(ob|
000054f0  6a 65 63 74 73 25 28 74  65 6d 70 28 30 29 2c 30  |jects%(temp(0),0|
00005500  2c 31 29 29 2b 22 2e 22  29 0d 25 94 6f c9 20 32  |,1))+".").%.o. 2|
00005510  3a f2 64 69 73 70 6c 61  79 28 22 59 6f 75 20 68  |:.display("You h|
00005520  61 76 65 20 61 20 22 2b  a4 67 65 74 73 74 72 69  |ave a "+.getstri|
00005530  6e 67 28 6f 62 6a 65 63  74 73 25 28 74 65 6d 70  |ng(objects%(temp|
00005540  28 30 29 2c 30 2c 31 29  29 2b 22 20 61 6e 64 20  |(0),0,1))+" and |
00005550  22 2b a4 67 65 74 73 74  72 69 6e 67 28 6f 62 6a  |"+.getstring(obj|
00005560  65 63 74 73 25 28 74 65  6d 70 28 31 29 2c 30 2c  |ects%(temp(1),0,|
00005570  31 29 29 2b 22 2e 22 29  0d 25 9e 05 7f 0d 25 a8  |1))+".").%....%.|
00005580  14 6c 24 3d 22 59 6f 75  20 68 61 76 65 20 61 20  |.l$="You have a |
00005590  22 0d 25 b2 12 e3 20 49  25 3d 30 20 b8 20 6e 5f  |".%... I%=0 . n_|
000055a0  6f 2d 33 0d 25 bc 31 6c  24 2b 3d a4 67 65 74 73  |o-3.%.1l$+=.gets|
000055b0  74 72 69 6e 67 28 6f 62  6a 65 63 74 73 25 28 74  |tring(objects%(t|
000055c0  65 6d 70 28 49 25 29 2c  30 2c 31 29 29 2b 22 2c  |emp(I%),0,1))+",|
000055d0  20 61 20 22 0d 25 c6 05  ed 0d 25 d0 61 6c 24 2b  | a ".%....%.al$+|
000055e0  3d a4 67 65 74 73 74 72  69 6e 67 28 6f 62 6a 65  |=.getstring(obje|
000055f0  63 74 73 25 28 74 65 6d  70 28 6e 5f 6f 2d 32 29  |cts%(temp(n_o-2)|
00005600  2c 30 2c 31 29 29 2b 22  20 61 6e 64 20 61 20 22  |,0,1))+" and a "|
00005610  2b a4 67 65 74 73 74 72  69 6e 67 28 6f 62 6a 65  |+.getstring(obje|
00005620  63 74 73 25 28 74 65 6d  70 28 6e 5f 6f 2d 31 29  |cts%(temp(n_o-1)|
00005630  2c 30 2c 31 29 29 2b 22  2e 22 0d 25 da 10 f2 64  |,0,1))+".".%...d|
00005640  69 73 70 6c 61 79 28 6c  24 29 0d 25 e4 05 cb 0d  |isplay(l$).%....|
00005650  25 ee 05 e1 0d 25 f8 04  0d 26 02 0f dd f2 74 61  |%....%...&....ta|
00005660  6c 6b 28 6c 6f 24 29 0d  26 0c 1f 6c 69 24 3d a4  |lk(lo$).&..li$=.|
00005670  73 74 72 69 70 28 a4 73  74 72 69 70 5f 65 6e 64  |strip(.strip_end|
00005680  28 6c 6f 24 29 29 0d 26  16 15 e3 20 49 6f 25 3d  |(lo$)).&... Io%=|
00005690  30 20 b8 20 70 65 6f 70  6c 65 25 0d 26 20 23 e7  |0 . people%.& #.|
000056a0  20 70 65 6f 70 6c 65 5f  70 6c 61 63 65 28 49 6f  | people_place(Io|
000056b0  25 2c 31 29 3d 63 5f 72  6f 6f 6d 25 20 8c 0d 26  |%,1)=c_room% ..&|
000056c0  2a 1c e7 20 70 65 6f 70  6c 65 25 28 49 6f 25 2c  |*.. people%(Io%,|
000056d0  31 31 2c 31 29 3c 3e 30  20 8c 0d 26 34 19 20 62  |11,1)<>0 ..&4. b|
000056e0  6f 3d 70 65 6f 70 6c 65  25 28 49 6f 25 2c 31 31  |o=people%(Io%,11|
000056f0  2c 31 29 0d 26 3e 2d 20  c8 95 20 21 62 6f 3c 3e  |,1).&>- .. !bo<>|
00005700  30 20 84 20 62 6f 21 34  3c 3e 30 20 84 20 62 6f  |0 . bo!4<>0 . bo|
00005710  21 38 3c 3e 30 20 84 20  62 6f 21 31 32 3c 3e 30  |!8<>0 . bo!12<>0|
00005720  0d 26 48 1a 20 20 66 6c  24 3d a4 67 65 74 73 74  |.&H.  fl$=.getst|
00005730  72 69 6e 67 28 62 6f 21  34 29 0d 26 52 38 20 20  |ring(bo!4).&R8  |
00005740  e7 20 a4 6b 65 79 77 6f  72 64 5f 6c 6f 6f 6b 28  |. .keyword_look(|
00005750  66 6c 24 2c 6c 69 24 29  3d b9 20 8c f2 63 61 6c  |fl$,li$)=. ..cal|
00005760  6c 63 6f 64 65 28 62 6f  21 31 32 2c 33 2c 49 6f  |lcode(bo!12,3,Io|
00005770  25 29 0d 26 5c 0c 20 20  62 6f 2b 3d 31 36 0d 26  |%).&\.  bo+=16.&|
00005780  66 06 20 ce 0d 26 70 05  cd 0d 26 7a 05 cd 0d 26  |f. ..&p...&z...&|
00005790  84 05 ed 0d 26 8e 05 e1  0d 26 98 04 0d 26 a2 0e  |....&....&...&..|
000057a0  dd f2 67 65 74 28 6c 6f  24 29 0d 26 ac 2c e7 20  |..get(lo$).&.,. |
000057b0  a4 66 69 72 73 74 28 6c  6f 24 29 3d 22 54 48 45  |.first(lo$)="THE|
000057c0  22 20 8c 20 6c 6f 24 3d  a4 6e 6f 74 66 69 72 73  |" . lo$=.notfirs|
000057d0  74 28 6c 6f 24 29 0d 26  b6 1f 6c 69 24 3d a4 73  |t(lo$).&..li$=.s|
000057e0  74 72 69 70 28 a4 73 74  72 69 70 5f 65 6e 64 28  |trip(.strip_end(|
000057f0  6c 6f 24 29 29 0d 26 c0  07 70 3d a3 0d 26 ca 15  |lo$)).&..p=..&..|
00005800  e3 20 49 25 3d 30 20 b8  20 6f 62 6a 65 63 74 73  |. I%=0 . objects|
00005810  25 0d 26 d4 39 e7 20 6f  62 6a 65 63 74 5f 70 6c  |%.&.9. object_pl|
00005820  61 63 65 28 49 25 2c 30  29 3d 31 20 80 20 6f 62  |ace(I%,0)=1 . ob|
00005830  6a 65 63 74 5f 70 6c 61  63 65 28 49 25 2c 31 29  |ject_place(I%,1)|
00005840  3d 63 5f 72 6f 6f 6d 25  20 8c 0d 26 de 33 20 e7  |=c_room% ..&.3 .|
00005850  20 a4 74 6f 75 70 70 65  72 28 a4 67 65 74 73 74  | .toupper(.getst|
00005860  72 69 6e 67 28 6f 62 6a  65 63 74 73 25 28 49 25  |ring(objects%(I%|
00005870  2c 30 2c 31 29 29 29 3d  6c 69 24 20 8c 0d 26 e8  |,0,1)))=li$ ..&.|
00005880  09 20 20 70 3d b9 0d 26  f2 1e 20 20 e7 20 6f 62  |.  p=..&..  . ob|
00005890  6a 65 63 74 73 25 28 49  25 2c 34 2c 30 29 3c 3e  |jects%(I%,4,0)<>|
000058a0  2d 31 20 8c 0d 26 fc 5a  20 20 20 f2 64 69 73 70  |-1 ..&.Z   .disp|
000058b0  6c 61 79 28 22 59 6f 75  20 74 72 79 20 74 6f 20  |lay("You try to |
000058c0  6d 6f 76 65 20 74 68 65  20 22 2b a4 67 65 74 73  |move the "+.gets|
000058d0  74 72 69 6e 67 28 6f 62  6a 65 63 74 73 25 28 49  |tring(objects%(I|
000058e0  25 2c 30 2c 31 29 29 2b  22 20 62 75 74 20 69 74  |%,0,1))+" but it|
000058f0  20 77 6f 6e 27 74 20 6d  6f 76 65 2e 22 29 0d 27  | won't move.").'|
00005900  06 07 20 20 cc 0d 27 10  1b 20 20 20 6f 62 6a 65  |..  ..'..   obje|
00005910  63 74 5f 70 6c 61 63 65  28 49 25 2c 30 29 3d 33  |ct_place(I%,0)=3|
00005920  0d 27 1a 1b 20 20 20 6f  62 6a 65 63 74 5f 70 6c  |.'..   object_pl|
00005930  61 63 65 28 49 25 2c 31  29 3d 30 0d 27 24 40 20  |ace(I%,1)=0.'$@ |
00005940  20 20 f2 64 69 73 70 6c  61 79 28 22 59 6f 75 20  |  .display("You |
00005950  67 65 74 20 74 68 65 20  22 2b a4 67 65 74 73 74  |get the "+.getst|
00005960  72 69 6e 67 28 6f 62 6a  65 63 74 73 25 28 49 25  |ring(objects%(I%|
00005970  2c 30 2c 31 29 29 2b 22  2e 22 29 0d 27 2e 07 20  |,0,1))+".").'.. |
00005980  20 cd 0d 27 38 06 20 cd  0d 27 42 05 cd 0d 27 4c  | ..'8. ..'B...'L|
00005990  05 ed 0d 27 56 2f e7 20  70 3d a3 20 8c 20 f2 64  |...'V/. p=. . .d|
000059a0  69 73 70 6c 61 79 28 22  59 6f 75 20 63 61 6e 6e  |isplay("You cann|
000059b0  6f 74 20 73 65 65 20 74  68 65 20 22 2b 6c 6f 24  |ot see the "+lo$|
000059c0  29 0d 27 60 05 e1 0d 27  6a 04 0d 27 74 0f dd f2  |).'`...'j..'t...|
000059d0  64 72 6f 70 28 6c 6f 24  29 0d 27 7e 2c e7 20 a4  |drop(lo$).'~,. .|
000059e0  66 69 72 73 74 28 6c 6f  24 29 3d 22 54 48 45 22  |first(lo$)="THE"|
000059f0  20 8c 20 6c 6f 24 3d a4  6e 6f 74 66 69 72 73 74  | . lo$=.notfirst|
00005a00  28 6c 6f 24 29 0d 27 88  1f 6c 69 24 3d a4 73 74  |(lo$).'..li$=.st|
00005a10  72 69 70 28 a4 73 74 72  69 70 5f 65 6e 64 28 6c  |rip(.strip_end(l|
00005a20  6f 24 29 29 0d 27 92 07  70 3d a3 0d 27 9c 15 e3  |o$)).'..p=..'...|
00005a30  20 49 25 3d 30 20 b8 20  6f 62 6a 65 63 74 73 25  | I%=0 . objects%|
00005a40  0d 27 a6 33 e7 20 6f 62  6a 65 63 74 5f 70 6c 61  |.'.3. object_pla|
00005a50  63 65 28 49 25 2c 30 29  3d 33 20 80 20 6f 62 6a  |ce(I%,0)=3 . obj|
00005a60  65 63 74 5f 70 6c 61 63  65 28 49 25 2c 31 29 3d  |ect_place(I%,1)=|
00005a70  30 20 8c 0d 27 b0 33 20  e7 20 a4 74 6f 75 70 70  |0 ..'.3 . .toupp|
00005a80  65 72 28 a4 67 65 74 73  74 72 69 6e 67 28 6f 62  |er(.getstring(ob|
00005a90  6a 65 63 74 73 25 28 49  25 2c 30 2c 31 29 29 29  |jects%(I%,0,1)))|
00005aa0  3d 6c 69 24 20 8c 0d 27  ba 09 20 20 70 3d b9 0d  |=li$ ..'..  p=..|
00005ab0  27 c4 1e 20 20 e7 20 6f  62 6a 65 63 74 73 25 28  |'..  . objects%(|
00005ac0  49 25 2c 34 2c 30 29 3c  3e 2d 31 20 8c 0d 27 ce  |I%,4,0)<>-1 ..'.|
00005ad0  56 20 20 20 f2 64 69 73  70 6c 61 79 28 22 59 6f  |V   .display("Yo|
00005ae0  75 20 74 72 79 20 74 6f  20 64 72 6f 70 20 74 68  |u try to drop th|
00005af0  65 20 22 2b a4 67 65 74  73 74 72 69 6e 67 28 6f  |e "+.getstring(o|
00005b00  62 6a 65 63 74 73 25 28  49 25 2c 30 2c 31 29 29  |bjects%(I%,0,1))|
00005b10  2b 22 20 62 75 74 20 79  6f 75 20 63 61 6e 27 74  |+" but you can't|
00005b20  2e 22 29 0d 27 d8 07 20  20 cc 0d 27 e2 1b 20 20  |.").'..  ..'..  |
00005b30  20 6f 62 6a 65 63 74 5f  70 6c 61 63 65 28 49 25  | object_place(I%|
00005b40  2c 30 29 3d 31 0d 27 ec  21 20 20 20 6f 62 6a 65  |,0)=1.'.!   obje|
00005b50  63 74 5f 70 6c 61 63 65  28 49 25 2c 31 29 3d 63  |ct_place(I%,1)=c|
00005b60  5f 72 6f 6f 6d 25 0d 27  f6 41 20 20 20 f2 64 69  |_room%.'.A   .di|
00005b70  73 70 6c 61 79 28 22 59  6f 75 20 64 72 6f 70 20  |splay("You drop |
00005b80  74 68 65 20 22 2b a4 67  65 74 73 74 72 69 6e 67  |the "+.getstring|
00005b90  28 6f 62 6a 65 63 74 73  25 28 49 25 2c 30 2c 31  |(objects%(I%,0,1|
00005ba0  29 29 2b 22 2e 22 29 0d  28 00 07 20 20 cd 0d 28  |))+".").(..  ..(|
00005bb0  0a 06 20 cd 0d 28 14 05  cd 0d 28 1e 05 ed 0d 28  |.. ..(....(....(|
00005bc0  28 2f e7 20 70 3d a3 20  8c 20 f2 64 69 73 70 6c  |(/. p=. . .displ|
00005bd0  61 79 28 22 59 6f 75 20  63 61 6e 6e 6f 74 20 73  |ay("You cannot s|
00005be0  65 65 20 74 68 65 20 22  2b 6c 6f 24 29 0d 28 32  |ee the "+lo$).(2|
00005bf0  05 e1 0d 28 3c 04 0d 28  46 0a dd f2 64 28 6f 29  |...(<..(F...d(o)|
00005c00  0d 28 50 63 f4 20 64 69  72 65 63 74 69 6f 6e 73  |.(Pc. directions|
00005c10  3a 20 63 61 6c 6c 20 64  69 72 65 63 74 69 6f 6e  |: call direction|
00005c20  20 63 6f 64 65 3a 20 6c  65 61 76 69 6e 67 2c 20  | code: leaving, |
00005c30  65 6e 74 65 72 69 6e 67  2c 20 73 65 65 20 61 6e  |entering, see an|
00005c40  64 20 75 6e 73 65 65 20  63 6f 64 65 20 69 73 20  |d unsee code is |
00005c50  63 61 6c 6c 65 64 20 62  79 20 74 68 65 20 63 6f  |called by the co|
00005c60  64 65 2e 0d 28 5a 2d f2  63 61 6c 6c 63 6f 64 65  |de..(Z-.callcode|
00005c70  28 72 6f 6f 6d 73 25 28  63 5f 72 6f 6f 6d 25 2c  |(rooms%(c_room%,|
00005c80  6f 2c 31 29 2c 30 31 2c  63 5f 72 6f 6f 6d 25 29  |o,1),01,c_room%)|
00005c90  0d 28 64 05 e1 0d 28 6e  04 0d 28 78 15 dd f2 63  |.(d...(n..(x...c|
00005ca0  61 6c 6c 63 6f 64 65 28  69 2c 63 2c 64 29 0d 28  |allcode(i,c,d).(|
00005cb0  82 37 ea 20 62 6c 6f 63  6b 2c 63 6f 64 65 5f 63  |.7. block,code_c|
00005cc0  61 6c 6c 65 72 5f 74 79  70 65 2c 63 6f 64 65 5f  |aller_type,code_|
00005cd0  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 2c 65 6e  |caller_number,en|
00005ce0  64 63 6f 64 65 0d 28 8c  0c e7 20 69 3c 3e 30 20  |dcode.(... i<>0 |
00005cf0  8c 0d 28 96 16 63 6f 64  65 5f 63 61 6c 6c 65 72  |..(..code_caller|
00005d00  5f 74 79 70 65 3d 63 0d  28 a0 18 63 6f 64 65 5f  |_type=c.(..code_|
00005d10  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 3d 64 0d  |caller_number=d.|
00005d20  28 aa 0c 64 69 73 70 73  2b 3d 31 0d 28 b4 12 62  |(..disps+=1.(..b|
00005d30  6c 6f 63 6b 3d 63 6f 64  65 25 28 69 29 0d 28 be  |lock=code%(i).(.|
00005d40  0d 65 6e 64 63 6f 64 65  3d a3 0d 28 c8 05 f5 0d  |.endcode=..(....|
00005d50  28 d2 0f c8 8e 20 21 62  6c 6f 63 6b 20 ca 0d 28  |(.... !block ..(|
00005d60  dc 1a c9 20 30 3a 65 6e  64 63 6f 64 65 3d b9 3a  |... 0:endcode=.:|
00005d70  62 6c 6f 63 6b 2b 3d 34  0d 28 e6 4e c9 20 31 3a  |block+=4.(.N. 1:|
00005d80  f2 63 6f 64 65 5f 70 72  69 6e 74 28 62 6c 6f 63  |.code_print(bloc|
00005d90  6b 29 3a 62 6c 6f 63 6b  2b 3d 31 32 20 20 20 20  |k):block+=12    |
00005da0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005dc0  20 20 3a f4 20 59 0d 28  f0 4e c9 20 32 3a f2 63  |  :. Y.(.N. 2:.c|
00005dd0  6f 64 65 5f 67 6f 74 6f  28 62 6c 6f 63 6b 2c 63  |ode_goto(block,c|
00005de0  6f 64 65 5f 63 61 6c 6c  65 72 5f 74 79 70 65 2c  |ode_caller_type,|
00005df0  63 6f 64 65 5f 63 61 6c  6c 65 72 5f 6e 75 6d 62  |code_caller_numb|
00005e00  65 72 29 3a 62 6c 6f 63  6b 2b 3d 31 32 20 20 20  |er):block+=12   |
00005e10  3a f4 20 59 0d 28 fa 4e  c9 20 33 3a f2 63 6f 64  |:. Y.(.N. 3:.cod|
00005e20  65 5f 67 69 76 65 28 62  6c 6f 63 6b 29 3a 62 6c  |e_give(block):bl|
00005e30  6f 63 6b 2b 3d 32 30 20  20 20 20 20 20 20 20 20  |ock+=20         |
00005e40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005e50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3a f4  |              :.|
00005e60  20 59 0d 29 04 4e c9 20  34 3a f2 63 6f 64 65 5f  | Y.).N. 4:.code_|
00005e70  6d 6f 76 65 28 62 6c 6f  63 6b 29 3a 62 6c 6f 63  |move(block):bloc|
00005e80  6b 2b 3d 32 30 20 20 20  20 20 20 20 20 20 20 20  |k+=20           |
00005e90  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005ea0  20 20 20 20 20 20 20 20  20 20 20 20 3a f4 20 59  |            :. Y|
00005eb0  0d 29 0e 4e c9 20 35 3a  f2 63 6f 64 65 5f 65 6e  |.).N. 5:.code_en|
00005ec0  64 3a 62 6c 6f 63 6b 2b  3d 34 20 20 20 20 20 20  |d:block+=4      |
00005ed0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005ef0  20 20 20 20 20 20 20 20  20 20 3a f4 20 59 0d 29  |          :. Y.)|
00005f00  18 4e c9 20 36 3a f2 63  6f 64 65 5f 65 72 72 6f  |.N. 6:.code_erro|
00005f10  72 3a 62 6c 6f 63 6b 2b  3d 31 32 20 20 20 20 20  |r:block+=12     |
00005f20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005f40  20 20 20 20 20 20 20 20  3a f4 20 59 0d 29 22 4e  |        :. Y.)"N|
00005f50  c9 20 37 3a f2 63 6f 64  65 5f 73 65 74 28 62 6c  |. 7:.code_set(bl|
00005f60  6f 63 6b 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ock,code_caller_|
00005f70  74 79 70 65 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |type,code_caller|
00005f80  5f 6e 75 6d 62 65 72 29  3a 62 6c 6f 63 6b 2b 3d  |_number):block+=|
00005f90  32 30 20 20 20 20 3a f4  20 59 0d 29 2c 4e c9 20  |20    :. Y.),N. |
00005fa0  38 3a f2 63 6f 64 65 5f  63 68 61 6e 67 65 28 62  |8:.code_change(b|
00005fb0  6c 6f 63 6b 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |lock,code_caller|
00005fc0  5f 74 79 70 65 2c 63 6f  64 65 5f 63 61 6c 6c 65  |_type,code_calle|
00005fd0  72 5f 6e 75 6d 62 65 72  29 3a 62 6c 6f 63 6b 2b  |r_number):block+|
00005fe0  3d 32 30 20 3a f4 20 59  0d 29 36 50 c9 20 39 3a  |=20 :. Y.)6P. 9:|
00005ff0  62 6c 6f 63 6b 3d a4 63  6f 64 65 5f 69 66 28 62  |block=.code_if(b|
00006000  6c 6f 63 6b 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |lock,code_caller|
00006010  5f 74 79 70 65 2c 63 6f  64 65 5f 63 61 6c 6c 65  |_type,code_calle|
00006020  72 5f 6e 75 6d 62 65 72  29 20 20 20 20 20 20 20  |r_number)       |
00006030  20 20 20 20 3a f4 20 59  0d 29 40 29 7f 20 f2 72  |    :. Y.)@). .r|
00006040  65 70 6f 72 74 28 22 43  6f 72 72 75 70 74 20 63  |eport("Corrupt c|
00006050  6f 64 65 20 66 69 6c 65  20 66 6f 75 6e 64 2e 22  |ode file found."|
00006060  29 0d 29 4a 05 cb 0d 29  54 0f fd 20 65 6e 64 63  |).)J...)T.. endc|
00006070  6f 64 65 3d b9 0d 29 5e  0c 64 69 73 70 73 2d 3d  |ode=..)^.disps-=|
00006080  31 0d 29 68 0f e7 20 64  69 73 70 73 3d 30 20 8c  |1.)h.. disps=0 .|
00006090  0d 29 72 17 20 f2 64 69  73 70 6c 61 79 28 64 69  |.)r. .display(di|
000060a0  73 70 6c 61 79 24 29 0d  29 7c 10 20 64 69 73 70  |splay$).)|. disp|
000060b0  6c 61 79 24 3d 22 22 0d  29 86 05 cd 0d 29 90 05  |lay$="".)....)..|
000060c0  cd 0d 29 9a 05 e1 0d 29  a4 04 0d 29 ae 17 dd f2  |..)....)...)....|
000060d0  63 61 6c 6c 63 6f 64 65  5f 78 28 69 2c 63 2c 64  |callcode_x(i,c,d|
000060e0  29 0d 29 b8 37 ea 20 62  6c 6f 63 6b 2c 63 6f 64  |).).7. block,cod|
000060f0  65 5f 63 61 6c 6c 65 72  5f 74 79 70 65 2c 63 6f  |e_caller_type,co|
00006100  64 65 5f 63 61 6c 6c 65  72 5f 6e 75 6d 62 65 72  |de_caller_number|
00006110  2c 65 6e 64 63 6f 64 65  0d 29 c2 0c e7 20 69 3c  |,endcode.)... i<|
00006120  3e 30 20 8c 0d 29 cc 16  63 6f 64 65 5f 63 61 6c  |>0 ..)..code_cal|
00006130  6c 65 72 5f 74 79 70 65  3d 63 0d 29 d6 18 63 6f  |ler_type=c.)..co|
00006140  64 65 5f 63 61 6c 6c 65  72 5f 6e 75 6d 62 65 72  |de_caller_number|
00006150  3d 64 0d 29 e0 0c 64 69  73 70 73 2b 3d 31 0d 29  |=d.)..disps+=1.)|
00006160  ea 0b 62 6c 6f 63 6b 3d  69 0d 29 f4 0d 65 6e 64  |..block=i.)..end|
00006170  63 6f 64 65 3d a3 0d 29  fe 05 f5 0d 2a 08 0f c8  |code=..)....*...|
00006180  8e 20 21 62 6c 6f 63 6b  20 ca 0d 2a 12 1d c9 20  |. !block ..*... |
00006190  30 2c 31 30 3a 65 6e 64  63 6f 64 65 3d b9 3a 62  |0,10:endcode=.:b|
000061a0  6c 6f 63 6b 2b 3d 34 0d  2a 1c 4e c9 20 31 3a f2  |lock+=4.*.N. 1:.|
000061b0  63 6f 64 65 5f 70 72 69  6e 74 28 62 6c 6f 63 6b  |code_print(block|
000061c0  29 3a 62 6c 6f 63 6b 2b  3d 31 32 20 20 20 20 20  |):block+=12     |
000061d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000061f0  20 3a f4 20 59 0d 2a 26  4e c9 20 32 3a f2 63 6f  | :. Y.*&N. 2:.co|
00006200  64 65 5f 67 6f 74 6f 28  62 6c 6f 63 6b 2c 63 6f  |de_goto(block,co|
00006210  64 65 5f 63 61 6c 6c 65  72 5f 74 79 70 65 2c 63  |de_caller_type,c|
00006220  6f 64 65 5f 63 61 6c 6c  65 72 5f 6e 75 6d 62 65  |ode_caller_numbe|
00006230  72 29 3a 62 6c 6f 63 6b  2b 3d 31 32 20 20 20 3a  |r):block+=12   :|
00006240  f4 20 59 0d 2a 30 4e c9  20 33 3a f2 63 6f 64 65  |. Y.*0N. 3:.code|
00006250  5f 67 69 76 65 28 62 6c  6f 63 6b 29 3a 62 6c 6f  |_give(block):blo|
00006260  63 6b 2b 3d 32 30 20 20  20 20 20 20 20 20 20 20  |ck+=20          |
00006270  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006280  20 20 20 20 20 20 20 20  20 20 20 20 20 3a f4 20  |             :. |
00006290  59 0d 2a 3a 4e c9 20 34  3a f2 63 6f 64 65 5f 6d  |Y.*:N. 4:.code_m|
000062a0  6f 76 65 28 62 6c 6f 63  6b 29 3a 62 6c 6f 63 6b  |ove(block):block|
000062b0  2b 3d 32 30 20 20 20 20  20 20 20 20 20 20 20 20  |+=20            |
000062c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000062d0  20 20 20 20 20 20 20 20  20 20 20 3a f4 20 59 0d  |           :. Y.|
000062e0  2a 44 4e c9 20 35 3a f2  63 6f 64 65 5f 65 6e 64  |*DN. 5:.code_end|
000062f0  3a 62 6c 6f 63 6b 2b 3d  34 20 20 20 20 20 20 20  |:block+=4       |
00006300  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00006320  20 20 20 20 20 20 20 20  20 3a f4 20 59 0d 2a 4e  |         :. Y.*N|
00006330  4e c9 20 36 3a f2 63 6f  64 65 5f 65 72 72 6f 72  |N. 6:.code_error|
00006340  3a 62 6c 6f 63 6b 2b 3d  31 32 20 20 20 20 20 20  |:block+=12      |
00006350  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00006370  20 20 20 20 20 20 20 3a  f4 20 59 0d 2a 58 4e c9  |       :. Y.*XN.|
00006380  20 37 3a f2 63 6f 64 65  5f 73 65 74 28 62 6c 6f  | 7:.code_set(blo|
00006390  63 6b 2c 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 74  |ck,code_caller_t|
000063a0  79 70 65 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ype,code_caller_|
000063b0  6e 75 6d 62 65 72 29 3a  62 6c 6f 63 6b 2b 3d 32  |number):block+=2|
000063c0  30 20 20 20 20 3a f4 20  59 0d 2a 62 4e c9 20 38  |0    :. Y.*bN. 8|
000063d0  3a f2 63 6f 64 65 5f 63  68 61 6e 67 65 28 62 6c  |:.code_change(bl|
000063e0  6f 63 6b 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ock,code_caller_|
000063f0  74 79 70 65 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |type,code_caller|
00006400  5f 6e 75 6d 62 65 72 29  3a 62 6c 6f 63 6b 2b 3d  |_number):block+=|
00006410  32 30 20 3a f4 20 59 0d  2a 6c 50 c9 20 39 3a 62  |20 :. Y.*lP. 9:b|
00006420  6c 6f 63 6b 3d a4 63 6f  64 65 5f 69 66 28 62 6c  |lock=.code_if(bl|
00006430  6f 63 6b 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ock,code_caller_|
00006440  74 79 70 65 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |type,code_caller|
00006450  5f 6e 75 6d 62 65 72 29  20 20 20 20 20 20 20 20  |_number)        |
00006460  20 20 20 3a f4 20 59 0d  2a 76 29 7f 20 f2 72 65  |   :. Y.*v). .re|
00006470  70 6f 72 74 28 22 43 6f  72 72 75 70 74 20 63 6f  |port("Corrupt co|
00006480  64 65 20 66 69 6c 65 20  66 6f 75 6e 64 2e 22 29  |de file found.")|
00006490  0d 2a 80 05 cb 0d 2a 8a  0f fd 20 65 6e 64 63 6f  |.*....*... endco|
000064a0  64 65 3d b9 0d 2a 94 0c  64 69 73 70 73 2d 3d 31  |de=..*..disps-=1|
000064b0  0d 2a 9e 0f e7 20 64 69  73 70 73 3d 30 20 8c 0d  |.*... disps=0 ..|
000064c0  2a a8 17 20 f2 64 69 73  70 6c 61 79 28 64 69 73  |*.. .display(dis|
000064d0  70 6c 61 79 24 29 0d 2a  b2 10 20 64 69 73 70 6c  |play$).*.. displ|
000064e0  61 79 24 3d 22 22 0d 2a  bc 05 cd 0d 2a c6 05 cd  |ay$="".*....*...|
000064f0  0d 2a d0 05 e1 0d 2a da  04 0d 2a e4 14 dd a4 63  |.*....*...*....c|
00006500  6f 64 65 5f 69 66 28 62  2c 79 2c 75 29 0d 2a ee  |ode_if(b,y,u).*.|
00006510  4b ea 20 76 61 72 2c 6e  75 6d 2c 62 6c 6f 63 6b  |K. var,num,block|
00006520  2c 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 6e 75 6d  |,code_caller_num|
00006530  62 65 72 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ber,code_caller_|
00006540  74 79 70 65 2c 70 70 70  2c 63 6f 2c 65 2c 76 24  |type,ppp,co,e,v$|
00006550  2c 79 24 2c 6f 70 2c 70  0d 2a f8 0b 62 6c 6f 63  |,y$,op,p.*..bloc|
00006560  6b 3d 62 0d 2b 02 18 63  6f 64 65 5f 63 61 6c 6c  |k=b.+..code_call|
00006570  65 72 5f 6e 75 6d 62 65  72 3d 75 0d 2b 0c 16 63  |er_number=u.+..c|
00006580  6f 64 65 5f 63 61 6c 6c  65 72 5f 74 79 70 65 3d  |ode_caller_type=|
00006590  79 0d 2b 16 0c 62 6c 6f  63 6b 2b 3d 38 0d 2b 20  |y.+..block+=8.+ |
000065a0  0e 76 61 72 3d 21 62 6c  6f 63 6b 0d 2b 2a 0c 62  |.var=!block.+*.b|
000065b0  6c 6f 63 6b 2b 3d 38 0d  2b 34 0d 6f 70 3d 21 62  |lock+=8.+4.op=!b|
000065c0  6c 6f 63 6b 0d 2b 3e 0c  62 6c 6f 63 6b 2b 3d 38  |lock.+>.block+=8|
000065d0  0d 2b 48 0e 6e 75 6d 3d  21 62 6c 6f 63 6b 0d 2b  |.+H.num=!block.+|
000065e0  52 0c 62 6c 6f 63 6b 2b  3d 34 0d 2b 5c 13 76 24  |R.block+=4.+\.v$|
000065f0  3d a4 67 65 74 76 61 72  28 76 61 72 29 0d 2b 66  |=.getvar(var).+f|
00006600  16 79 24 3d a4 67 65 74  73 74 72 69 6e 67 28 6e  |.y$=.getstring(n|
00006610  75 6d 29 0d 2b 70 13 e7  20 6f 70 3c 30 20 84 20  |um).+p.. op<0 . |
00006620  6f 70 3e 33 20 8c 0d 2b  7a 2e f2 64 69 73 70 6c  |op>3 ..+z..displ|
00006630  61 79 28 22 55 6e 6b 6e  6f 77 6e 20 63 6f 6e 64  |ay("Unknown cond|
00006640  69 74 69 6f 6e 61 6c 20  6f 70 65 72 61 74 69 6f  |itional operatio|
00006650  6e 2e 22 29 0d 2b 84 05  cc 0d 2b 8e 0c c8 8e 20  |n.").+....+.... |
00006660  76 61 72 20 ca 0d 2b 98  0a c9 20 31 2c 30 3a 0d  |var ..+... 1,0:.|
00006670  2b a2 0b c8 8e 20 6f 70  20 ca 0d 2b ac 4e 20 c9  |+.... op ..+.N .|
00006680  20 30 3a e7 20 a7 76 24  2c 79 24 29 3c 3e 30 20  | 0:. .v$,y$)<>0 |
00006690  8c 20 f2 63 61 6c 6c 63  6f 64 65 5f 78 28 62 6c  |. .callcode_x(bl|
000066a0  6f 63 6b 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ock,code_caller_|
000066b0  74 79 70 65 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |type,code_caller|
000066c0  5f 6e 75 6d 62 65 72 29  0d 2b b6 4d 20 c9 20 31  |_number).+.M . 1|
000066d0  3a e7 20 a7 76 24 2c 79  24 29 3d 30 20 8c 20 f2  |:. .v$,y$)=0 . .|
000066e0  63 61 6c 6c 63 6f 64 65  5f 78 28 62 6c 6f 63 6b  |callcode_x(block|
000066f0  2c 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 74 79 70  |,code_caller_typ|
00006700  65 2c 63 6f 64 65 5f 63  61 6c 6c 65 72 5f 6e 75  |e,code_caller_nu|
00006710  6d 62 65 72 29 0d 2b c0  38 7f 20 f2 64 69 73 70  |mber).+.8. .disp|
00006720  6c 61 79 28 22 42 61 64  20 63 6f 6e 64 69 74 69  |lay("Bad conditi|
00006730  6f 6e 61 6c 20 6f 70 65  72 61 74 69 6f 6e 20 77  |onal operation w|
00006740  69 74 68 20 6f 62 5f 67  6f 74 2e 22 29 0d 2b ca  |ith ob_got.").+.|
00006750  05 cb 0d 2b d4 05 7f 0d  2b de 0b c8 8e 20 6f 70  |...+....+.... op|
00006760  20 ca 0d 2b e8 4f 20 c9  20 30 3a e7 20 bb 28 79  | ..+.O . 0:. .(y|
00006770  24 29 3d bb 28 76 24 29  20 8c 20 f2 63 61 6c 6c  |$)=.(v$) . .call|
00006780  63 6f 64 65 5f 78 28 62  6c 6f 63 6b 2c 63 6f 64  |code_x(block,cod|
00006790  65 5f 63 61 6c 6c 65 72  5f 74 79 70 65 2c 63 6f  |e_caller_type,co|
000067a0  64 65 5f 63 61 6c 6c 65  72 5f 6e 75 6d 62 65 72  |de_caller_number|
000067b0  29 0d 2b f2 50 20 c9 20  31 3a e7 20 bb 28 79 24  |).+.P . 1:. .(y$|
000067c0  29 3c 3e bb 28 76 24 29  20 8c 20 f2 63 61 6c 6c  |)<>.(v$) . .call|
000067d0  63 6f 64 65 5f 78 28 62  6c 6f 63 6b 2c 63 6f 64  |code_x(block,cod|
000067e0  65 5f 63 61 6c 6c 65 72  5f 74 79 70 65 2c 63 6f  |e_caller_type,co|
000067f0  64 65 5f 63 61 6c 6c 65  72 5f 6e 75 6d 62 65 72  |de_caller_number|
00006800  29 0d 2b fc 4f 20 c9 20  32 3a e7 20 bb 28 79 24  |).+.O . 2:. .(y$|
00006810  29 3e bb 28 76 24 29 20  8c 20 f2 63 61 6c 6c 63  |)>.(v$) . .callc|
00006820  6f 64 65 5f 78 28 62 6c  6f 63 6b 2c 63 6f 64 65  |ode_x(block,code|
00006830  5f 63 61 6c 6c 65 72 5f  74 79 70 65 2c 63 6f 64  |_caller_type,cod|
00006840  65 5f 63 61 6c 6c 65 72  5f 6e 75 6d 62 65 72 29  |e_caller_number)|
00006850  0d 2c 06 4f 20 c9 20 33  3a e7 20 bb 28 79 24 29  |.,.O . 3:. .(y$)|
00006860  3c bb 28 76 24 29 20 8c  20 f2 63 61 6c 6c 63 6f  |<.(v$) . .callco|
00006870  64 65 5f 78 28 62 6c 6f  63 6b 2c 63 6f 64 65 5f  |de_x(block,code_|
00006880  63 61 6c 6c 65 72 5f 74  79 70 65 2c 63 6f 64 65  |caller_type,code|
00006890  5f 63 61 6c 6c 65 72 5f  6e 75 6d 62 65 72 29 0d  |_caller_number).|
000068a0  2c 10 05 cb 0d 2c 1a 05  cb 0d 2c 24 05 cd 0d 2c  |,....,....,$...,|
000068b0  2e 07 65 3d a3 0d 2c 38  07 70 3d 30 0d 2c 42 05  |..e=..,8.p=0.,B.|
000068c0  f5 0d 2c 4c 0f 69 6e 73  25 3d 21 62 6c 6f 63 6b  |..,L.ins%=!block|
000068d0  0d 2c 56 0c 62 6c 6f 63  6b 2b 3d 34 0d 2c 60 0d  |.,V.block+=4.,`.|
000068e0  c8 8e 20 69 6e 73 25 20  ca 0d 2c 6a 0b c9 20 30  |.. ins% ..,j.. 0|
000068f0  3a 65 3d b9 0d 2c 74 10  c9 20 31 30 3a e7 20 70  |:e=..,t.. 10:. p|
00006900  3d 30 20 8c 0d 2c 7e 07  65 3d b9 0d 2c 88 05 cc  |=0 ..,~.e=..,...|
00006910  0d 2c 92 08 70 2d 3d 31  0d 2c 9c 05 cd 0d 2c a6  |.,..p-=1.,....,.|
00006920  08 c9 20 35 3a 0d 2c b0  14 c9 20 31 2c 32 2c 36  |.. 5:.,... 1,2,6|
00006930  3a 62 6c 6f 63 6b 2b 3d  38 0d 2c ba 17 c9 20 33  |:block+=8.,... 3|
00006940  2c 34 2c 38 2c 37 3a 62  6c 6f 63 6b 2b 3d 31 36  |,4,8,7:block+=16|
00006950  0d 2c c4 16 c9 20 39 3a  62 6c 6f 63 6b 2b 3d 31  |.,... 9:block+=1|
00006960  36 3a 70 2b 3d 31 0d 2c  ce 05 cb 0d 2c d8 07 fd  |6:p+=1.,....,...|
00006970  20 65 0d 2c e2 0a 3d 62  6c 6f 63 6b 0d 2c ec 04  | e.,..=block.,..|
00006980  0d 2c f6 17 dd a4 63 6f  64 65 5f 69 66 6f 6c 64  |.,....code_ifold|
00006990  28 62 2c 79 2c 75 29 0d  2d 00 4b ea 20 76 61 72  |(b,y,u).-.K. var|
000069a0  2c 6e 75 6d 2c 62 6c 6f  63 6b 2c 63 6f 64 65 5f  |,num,block,code_|
000069b0  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 2c 63 6f  |caller_number,co|
000069c0  64 65 5f 63 61 6c 6c 65  72 5f 74 79 70 65 2c 70  |de_caller_type,p|
000069d0  70 70 2c 63 6f 2c 65 2c  76 24 2c 79 24 2c 6f 70  |pp,co,e,v$,y$,op|
000069e0  2c 70 0d 2d 0a 0b 62 6c  6f 63 6b 3d 62 0d 2d 14  |,p.-..block=b.-.|
000069f0  18 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 6e 75 6d  |.code_caller_num|
00006a00  62 65 72 3d 75 0d 2d 1e  16 63 6f 64 65 5f 63 61  |ber=u.-..code_ca|
00006a10  6c 6c 65 72 5f 74 79 70  65 3d 79 0d 2d 28 0c 62  |ller_type=y.-(.b|
00006a20  6c 6f 63 6b 2b 3d 38 0d  2d 32 0e 76 61 72 3d 21  |lock+=8.-2.var=!|
00006a30  62 6c 6f 63 6b 0d 2d 3c  0c 62 6c 6f 63 6b 2b 3d  |block.-<.block+=|
00006a40  38 0d 2d 46 0e 6e 75 6d  3d 21 62 6c 6f 63 6b 0d  |8.-F.num=!block.|
00006a50  2d 50 0c 62 6c 6f 63 6b  2b 3d 34 0d 2d 5a 13 76  |-P.block+=4.-Z.v|
00006a60  24 3d a4 67 65 74 76 61  72 28 76 61 72 29 0d 2d  |$=.getvar(var).-|
00006a70  64 16 79 24 3d a4 67 65  74 73 74 72 69 6e 67 28  |d.y$=.getstring(|
00006a80  6e 75 6d 29 0d 2d 6e 09  6f 70 3d 2d 31 0d 2d 78  |num).-n.op=-1.-x|
00006a90  11 c8 8e 20 c1 79 24 2c  31 2c 31 29 20 ca 0d 2d  |... .y$,1,1) ..-|
00006aa0  82 20 c9 20 22 3d 22 3a  6f 70 3d 30 3a 79 24 3d  |. . "=":op=0:y$=|
00006ab0  a4 73 74 72 69 70 28 c1  79 24 2c 32 29 29 0d 2d  |.strip(.y$,2)).-|
00006ac0  8c 17 c9 20 22 3c 22 3a  c8 8e 20 c1 79 24 2c 32  |... "<":.. .y$,2|
00006ad0  2c 31 29 20 ca 0d 2d 96  20 c9 20 22 3e 22 3a 6f  |,1) ..-. . ">":o|
00006ae0  70 3d 31 3a 79 24 3d a4  73 74 72 69 70 28 c1 79  |p=1:y$=.strip(.y|
00006af0  24 2c 33 29 29 0d 2d a0  1c 7f 20 6f 70 3d 32 3a  |$,3)).-... op=2:|
00006b00  79 24 3d a4 73 74 72 69  70 28 c1 79 24 2c 32 29  |y$=.strip(.y$,2)|
00006b10  29 0d 2d aa 05 cb 0d 2d  b4 20 c9 20 22 3e 22 3a  |).-....-. . ">":|
00006b20  6f 70 3d 33 3a 79 24 3d  a4 73 74 72 69 70 28 c1  |op=3:y$=.strip(.|
00006b30  79 24 2c 32 29 29 0d 2d  be 05 cb 0d 2d c8 0d e7  |y$,2)).-....-...|
00006b40  20 6f 70 3d 2d 31 20 8c  0d 2d d2 2e f2 64 69 73  | op=-1 ..-...dis|
00006b50  70 6c 61 79 28 22 55 6e  6b 6e 6f 77 6e 20 63 6f  |play("Unknown co|
00006b60  6e 64 69 74 69 6f 6e 61  6c 20 6f 70 65 72 61 74  |nditional operat|
00006b70  69 6f 6e 2e 22 29 0d 2d  dc 05 cc 0d 2d e6 0c c8  |ion.").-....-...|
00006b80  8e 20 76 61 72 20 ca 0d  2d f0 08 c9 20 31 3a 0d  |. var ..-... 1:.|
00006b90  2d fa 0b c8 8e 20 6f 70  20 ca 0d 2e 04 4e 20 c9  |-.... op ....N .|
00006ba0  20 30 3a e7 20 a7 76 24  2c 79 24 29 3c 3e 30 20  | 0:. .v$,y$)<>0 |
00006bb0  8c 20 f2 63 61 6c 6c 63  6f 64 65 5f 78 28 62 6c  |. .callcode_x(bl|
00006bc0  6f 63 6b 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ock,code_caller_|
00006bd0  74 79 70 65 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |type,code_caller|
00006be0  5f 6e 75 6d 62 65 72 29  0d 2e 0e 4d 20 c9 20 31  |_number)...M . 1|
00006bf0  3a e7 20 a7 76 24 2c 79  24 29 3d 30 20 8c 20 f2  |:. .v$,y$)=0 . .|
00006c00  63 61 6c 6c 63 6f 64 65  5f 78 28 62 6c 6f 63 6b  |callcode_x(block|
00006c10  2c 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 74 79 70  |,code_caller_typ|
00006c20  65 2c 63 6f 64 65 5f 63  61 6c 6c 65 72 5f 6e 75  |e,code_caller_nu|
00006c30  6d 62 65 72 29 0d 2e 18  38 7f 20 f2 64 69 73 70  |mber)...8. .disp|
00006c40  6c 61 79 28 22 42 61 64  20 63 6f 6e 64 69 74 69  |lay("Bad conditi|
00006c50  6f 6e 61 6c 20 6f 70 65  72 61 74 69 6f 6e 20 77  |onal operation w|
00006c60  69 74 68 20 6f 62 5f 67  6f 74 2e 22 29 0d 2e 22  |ith ob_got.").."|
00006c70  05 cb 0d 2e 2c 05 7f 0d  2e 36 0b c8 8e 20 6f 70  |....,....6... op|
00006c80  20 ca 0d 2e 40 49 20 c9  20 30 3a e7 20 79 24 3d  | ...@I . 0:. y$=|
00006c90  76 24 20 8c 20 f2 63 61  6c 6c 63 6f 64 65 5f 78  |v$ . .callcode_x|
00006ca0  28 62 6c 6f 63 6b 2c 63  6f 64 65 5f 63 61 6c 6c  |(block,code_call|
00006cb0  65 72 5f 74 79 70 65 2c  63 6f 64 65 5f 63 61 6c  |er_type,code_cal|
00006cc0  6c 65 72 5f 6e 75 6d 62  65 72 29 0d 2e 4a 4a 20  |ler_number)..JJ |
00006cd0  c9 20 31 3a e7 20 79 24  3c 3e 76 24 20 8c 20 f2  |. 1:. y$<>v$ . .|
00006ce0  63 61 6c 6c 63 6f 64 65  5f 78 28 62 6c 6f 63 6b  |callcode_x(block|
00006cf0  2c 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 74 79 70  |,code_caller_typ|
00006d00  65 2c 63 6f 64 65 5f 63  61 6c 6c 65 72 5f 6e 75  |e,code_caller_nu|
00006d10  6d 62 65 72 29 0d 2e 54  49 20 c9 20 32 3a e7 20  |mber)..TI . 2:. |
00006d20  79 24 3c 76 24 20 8c 20  f2 63 61 6c 6c 63 6f 64  |y$<v$ . .callcod|
00006d30  65 5f 78 28 62 6c 6f 63  6b 2c 63 6f 64 65 5f 63  |e_x(block,code_c|
00006d40  61 6c 6c 65 72 5f 74 79  70 65 2c 63 6f 64 65 5f  |aller_type,code_|
00006d50  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 29 0d 2e  |caller_number)..|
00006d60  5e 49 20 c9 20 33 3a e7  20 79 24 3e 76 24 20 8c  |^I . 3:. y$>v$ .|
00006d70  20 f2 63 61 6c 6c 63 6f  64 65 5f 78 28 62 6c 6f  | .callcode_x(blo|
00006d80  63 6b 2c 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 74  |ck,code_caller_t|
00006d90  79 70 65 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ype,code_caller_|
00006da0  6e 75 6d 62 65 72 29 0d  2e 68 05 cb 0d 2e 72 05  |number)..h....r.|
00006db0  cb 0d 2e 7c 05 cd 0d 2e  86 07 65 3d a3 0d 2e 90  |...|......e=....|
00006dc0  07 70 3d 30 0d 2e 9a 05  f5 0d 2e a4 0f 69 6e 73  |.p=0.........ins|
00006dd0  25 3d 21 62 6c 6f 63 6b  0d 2e ae 0c 62 6c 6f 63  |%=!block....bloc|
00006de0  6b 2b 3d 34 0d 2e b8 0d  c8 8e 20 69 6e 73 25 20  |k+=4...... ins% |
00006df0  ca 0d 2e c2 0b c9 20 30  3a 65 3d b9 0d 2e cc 10  |...... 0:e=.....|
00006e00  c9 20 31 30 3a e7 20 70  3d 30 20 8c 0d 2e d6 07  |. 10:. p=0 .....|
00006e10  65 3d b9 0d 2e e0 05 cc  0d 2e ea 08 70 2d 3d 31  |e=..........p-=1|
00006e20  0d 2e f4 05 cd 0d 2e fe  08 c9 20 35 3a 0d 2f 08  |.......... 5:./.|
00006e30  14 c9 20 31 2c 32 2c 36  3a 62 6c 6f 63 6b 2b 3d  |.. 1,2,6:block+=|
00006e40  38 0d 2f 12 17 c9 20 33  2c 34 2c 38 2c 37 3a 62  |8./... 3,4,8,7:b|
00006e50  6c 6f 63 6b 2b 3d 31 36  0d 2f 1c 16 c9 20 39 3a  |lock+=16./... 9:|
00006e60  62 6c 6f 63 6b 2b 3d 31  36 3a 70 2b 3d 31 0d 2f  |block+=16:p+=1./|
00006e70  26 05 cb 0d 2f 30 07 fd  20 65 0d 2f 3a 0a 3d 62  |&.../0.. e./:.=b|
00006e80  6c 6f 63 6b 0d 2f 44 04  0d 2f 4e 12 dd f2 63 6f  |lock./D../N...co|
00006e90  64 65 5f 67 69 76 65 28  62 29 0d 2f 58 12 ea 20  |de_give(b)./X.. |
00006ea0  70 65 72 2c 6f 62 2c 62  6c 6f 63 6b 0d 2f 62 0b  |per,ob,block./b.|
00006eb0  62 6c 6f 63 6b 3d 62 0d  2f 6c 0c 62 6c 6f 63 6b  |block=b./l.block|
00006ec0  2b 3d 34 0d 2f 76 0f 70  65 72 74 3d 21 62 6c 6f  |+=4./v.pert=!blo|
00006ed0  63 6b 0d 2f 80 0c 62 6c  6f 63 6b 2b 3d 34 0d 2f  |ck./..block+=4./|
00006ee0  8a 0e 70 65 72 3d 21 62  6c 6f 63 6b 0d 2f 94 0c  |..per=!block./..|
00006ef0  62 6c 6f 63 6b 2b 3d 34  0d 2f 9e 0e 6f 62 74 3d  |block+=4./..obt=|
00006f00  21 62 6c 6f 63 6b 0d 2f  a8 0c 62 6c 6f 63 6b 2b  |!block./..block+|
00006f10  3d 34 0d 2f b2 0d 6f 62  3d 21 62 6c 6f 63 6b 0d  |=4./..ob=!block.|
00006f20  2f bc 0c 62 6c 6f 63 6b  2b 3d 34 0d 2f c6 1b 6f  |/..block+=4./..o|
00006f30  62 6a 65 63 74 5f 70 6c  61 63 65 28 6f 62 2c 30  |bject_place(ob,0|
00006f40  29 3d 70 65 72 74 0d 2f  d0 1a 6f 62 6a 65 63 74  |)=pert./..object|
00006f50  5f 70 6c 61 63 65 28 6f  62 2c 31 29 3d 70 65 72  |_place(ob,1)=per|
00006f60  0d 2f da 05 e1 0d 2f e4  04 0d 2f ee 12 dd f2 63  |./..../.../....c|
00006f70  6f 64 65 5f 6d 6f 76 65  28 62 29 0d 2f f8 12 ea  |ode_move(b)./...|
00006f80  20 70 65 72 2c 6f 62 2c  62 6c 6f 63 6b 0d 30 02  | per,ob,block.0.|
00006f90  0b 62 6c 6f 63 6b 3d 62  0d 30 0c 0c 62 6c 6f 63  |.block=b.0..bloc|
00006fa0  6b 2b 3d 34 0d 30 16 0f  70 65 72 74 3d 21 62 6c  |k+=4.0..pert=!bl|
00006fb0  6f 63 6b 0d 30 20 0c 62  6c 6f 63 6b 2b 3d 34 0d  |ock.0 .block+=4.|
00006fc0  30 2a 0e 70 65 72 3d 21  62 6c 6f 63 6b 0d 30 34  |0*.per=!block.04|
00006fd0  0c 62 6c 6f 63 6b 2b 3d  34 0d 30 3e 0e 6f 62 74  |.block+=4.0>.obt|
00006fe0  3d 21 62 6c 6f 63 6b 0d  30 48 0c 62 6c 6f 63 6b  |=!block.0H.block|
00006ff0  2b 3d 34 0d 30 52 0d 6f  62 3d 21 62 6c 6f 63 6b  |+=4.0R.ob=!block|
00007000  0d 30 5c 0c 62 6c 6f 63  6b 2b 3d 34 0d 30 66 1f  |.0\.block+=4.0f.|
00007010  e7 20 6f 62 74 3d 31 20  80 20 6f 62 3d 31 20 8c  |. obt=1 . ob=1 .|
00007020  20 6f 62 3d 63 5f 72 6f  6f 6d 25 0d 30 70 0d c8  | ob=c_room%.0p..|
00007030  8e 20 70 65 72 74 20 ca  0d 30 7a 10 c9 20 32 3a  |. pert ..0z.. 2:|
00007040  f4 20 6f 62 6a 65 63 74  0d 30 84 1b 6f 62 6a 65  |. object.0..obje|
00007050  63 74 5f 70 6c 61 63 65  28 70 65 72 2c 30 29 3d  |ct_place(per,0)=|
00007060  6f 62 74 0d 30 8e 1a 6f  62 6a 65 63 74 5f 70 6c  |obt.0..object_pl|
00007070  61 63 65 28 70 65 72 2c  31 29 3d 6f 62 0d 30 98  |ace(per,1)=ob.0.|
00007080  10 c9 20 33 3a f4 20 70  65 72 73 6f 6e 0d 30 a2  |.. 3:. person.0.|
00007090  0d e7 20 70 65 72 3d 30  20 8c 0d 30 ac 32 f2 72  |.. per=0 ..0.2.r|
000070a0  65 70 6f 72 74 28 22 70  6c 61 79 65 72 20 76 61  |eport("player va|
000070b0  6e 6e 6f 74 20 62 65 20  6d 6f 76 65 64 20 62 79  |nnot be moved by|
000070c0  20 50 5f 6d 6f 76 65 28  29 2e 22 29 0d 30 b6 05  | P_move().").0..|
000070d0  cc 0d 30 c0 1b 70 65 6f  70 6c 65 5f 70 6c 61 63  |..0..people_plac|
000070e0  65 28 70 65 72 2c 30 29  3d 6f 62 74 0d 30 ca 1a  |e(per,0)=obt.0..|
000070f0  70 65 6f 70 6c 65 5f 70  6c 61 63 65 28 70 65 72  |people_place(per|
00007100  2c 31 29 3d 6f 62 0d 30  d4 05 cd 0d 30 de 05 cb  |,1)=ob.0....0...|
00007110  0d 30 e8 05 e1 0d 30 f2  04 0d 30 fc 16 dd f2 63  |.0....0...0....c|
00007120  6f 64 65 5f 67 6f 74 6f  28 62 2c 79 2c 75 29 0d  |ode_goto(b,y,u).|
00007130  31 06 3b ea 20 76 61 72  2c 6e 75 6d 2c 62 6c 6f  |1.;. var,num,blo|
00007140  63 6b 2c 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 6e  |ck,code_caller_n|
00007150  75 6d 62 65 72 2c 63 6f  64 65 5f 63 61 6c 6c 65  |umber,code_calle|
00007160  72 5f 74 79 70 65 2c 70  70 70 0d 31 10 0b 62 6c  |r_type,ppp.1..bl|
00007170  6f 63 6b 3d 62 0d 31 1a  18 63 6f 64 65 5f 63 61  |ock=b.1..code_ca|
00007180  6c 6c 65 72 5f 6e 75 6d  62 65 72 3d 75 0d 31 24  |ller_number=u.1$|
00007190  16 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 74 79 70  |.code_caller_typ|
000071a0  65 3d 79 0d 31 2e 0c 62  6c 6f 63 6b 2b 3d 38 0d  |e=y.1..block+=8.|
000071b0  31 38 0e 76 61 72 3d 21  62 6c 6f 63 6b 0d 31 42  |18.var=!block.1B|
000071c0  19 e7 20 76 61 72 3d 31  20 8c 20 76 61 72 3d 63  |.. var=1 . var=c|
000071d0  5f 72 6f 6f 6d 25 0d 31  4c 0c 62 6c 6f 63 6b 2b  |_room%.1L.block+|
000071e0  3d 34 0d 31 56 2b f4 20  31 29 20 43 61 6c 6c 20  |=4.1V+. 1) Call |
000071f0  61 6c 6c 20 75 6e 73 65  65 3a 20 6f 66 20 70 65  |all unsee: of pe|
00007200  6f 70 6c 65 20 69 6e 20  72 6f 6f 6d 2e 0d 31 60  |ople in room..1`|
00007210  1c f4 20 32 29 20 43 61  6c 6c 20 6c 65 61 76 65  |.. 2) Call leave|
00007220  3a 20 6f 66 20 72 6f 6f  6d 0d 31 6a 19 f4 20 33  |: of room.1j.. 3|
00007230  29 20 4d 6f 76 65 20 74  6f 20 6e 65 77 20 72 6f  |) Move to new ro|
00007240  6f 6d 0d 31 74 1c f4 20  34 29 20 43 61 6c 6c 20  |om.1t.. 4) Call |
00007250  65 6e 74 65 72 3a 20 6f  66 20 72 6f 6f 6d 0d 31  |enter: of room.1|
00007260  7e 29 f4 20 35 29 20 43  61 6c 6c 20 61 6c 6c 20  |~). 5) Call all |
00007270  73 65 65 3a 20 6f 66 20  70 65 6f 70 6c 65 20 69  |see: of people i|
00007280  6e 20 72 6f 6f 6d 2e 0d  31 88 14 e3 20 49 25 3d  |n room..1... I%=|
00007290  30 20 b8 20 70 65 6f 70  6c 65 25 0d 31 92 59 e7  |0 . people%.1.Y.|
000072a0  20 70 65 6f 70 6c 65 5f  70 6c 61 63 65 28 49 25  | people_place(I%|
000072b0  2c 30 29 3d 31 20 80 20  70 65 6f 70 6c 65 5f 70  |,0)=1 . people_p|
000072c0  6c 61 63 65 28 49 25 2c  31 29 3d 63 5f 72 6f 6f  |lace(I%,1)=c_roo|
000072d0  6d 25 20 8c 20 f2 63 61  6c 6c 63 6f 64 65 28 70  |m% . .callcode(p|
000072e0  65 6f 70 6c 65 25 28 49  25 2c 38 2c 31 29 2c 33  |eople%(I%,8,1),3|
000072f0  2c 49 25 29 0d 31 9c 05  ed 0d 31 a6 2d f2 63 61  |,I%).1....1.-.ca|
00007300  6c 6c 63 6f 64 65 28 72  6f 6f 6d 73 25 28 63 5f  |llcode(rooms%(c_|
00007310  72 6f 6f 6d 25 2c 31 34  2c 31 29 2c 31 2c 63 5f  |room%,14,1),1,c_|
00007320  72 6f 6f 6d 25 29 0d 31  b0 0f 63 5f 72 6f 6f 6d  |room%).1..c_room|
00007330  25 3d 76 61 72 0d 31 ba  2d f2 63 61 6c 6c 63 6f  |%=var.1.-.callco|
00007340  64 65 28 72 6f 6f 6d 73  25 28 63 5f 72 6f 6f 6d  |de(rooms%(c_room|
00007350  25 2c 31 33 2c 31 29 2c  31 2c 63 5f 72 6f 6f 6d  |%,13,1),1,c_room|
00007360  25 29 0d 31 c4 14 e3 20  49 25 3d 30 20 b8 20 70  |%).1... I%=0 . p|
00007370  65 6f 70 6c 65 25 0d 31  ce 59 e7 20 70 65 6f 70  |eople%.1.Y. peop|
00007380  6c 65 5f 70 6c 61 63 65  28 49 25 2c 30 29 3d 31  |le_place(I%,0)=1|
00007390  20 80 20 70 65 6f 70 6c  65 5f 70 6c 61 63 65 28  | . people_place(|
000073a0  49 25 2c 31 29 3d 63 5f  72 6f 6f 6d 25 20 8c 20  |I%,1)=c_room% . |
000073b0  f2 63 61 6c 6c 63 6f 64  65 28 70 65 6f 70 6c 65  |.callcode(people|
000073c0  25 28 49 25 2c 37 2c 31  29 2c 33 2c 49 25 29 0d  |%(I%,7,1),3,I%).|
000073d0  31 d8 05 ed 0d 31 e2 05  e1 0d 31 ec 04 0d 31 f6  |1....1....1...1.|
000073e0  18 dd f2 63 6f 64 65 5f  63 68 61 6e 67 65 28 62  |...code_change(b|
000073f0  2c 79 2c 75 29 0d 32 00  37 ea 20 76 61 72 2c 6e  |,y,u).2.7. var,n|
00007400  75 6d 2c 62 6c 6f 63 6b  2c 63 6f 64 65 5f 63 61  |um,block,code_ca|
00007410  6c 6c 65 72 5f 6e 75 6d  62 65 72 2c 63 6f 64 65  |ller_number,code|
00007420  5f 63 61 6c 6c 65 72 5f  74 79 70 65 0d 32 0a 0b  |_caller_type.2..|
00007430  62 6c 6f 63 6b 3d 62 0d  32 14 18 63 6f 64 65 5f  |block=b.2..code_|
00007440  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 3d 75 0d  |caller_number=u.|
00007450  32 1e 16 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 74  |2..code_caller_t|
00007460  79 70 65 3d 79 0d 32 28  0c 62 6c 6f 63 6b 2b 3d  |ype=y.2(.block+=|
00007470  38 0d 32 32 0e 76 61 72  3d 21 62 6c 6f 63 6b 0d  |8.22.var=!block.|
00007480  32 3c 0c 62 6c 6f 63 6b  2b 3d 38 0d 32 46 0e 6e  |2<.block+=8.2F.n|
00007490  75 6d 3d 21 62 6c 6f 63  6b 0d 32 50 0c 62 6c 6f  |um=!block.2P.blo|
000074a0  63 6b 2b 3d 34 0d 32 5a  2e e7 20 76 61 72 3c 32  |ck+=4.2Z.. var<2|
000074b0  20 8c 20 f2 72 65 70 6f  72 74 28 22 43 61 6e 27  | . .report("Can'|
000074c0  74 20 61 6c 74 65 72 20  76 61 72 69 61 62 6c 65  |t alter variable|
000074d0  2e 22 29 0d 32 64 0d e7  20 76 61 72 3d 33 20 8c  |.").2d.. var=3 .|
000074e0  0d 32 6e 32 20 e7 20 b4  28 70 6c 61 79 65 72 25  |.2n2 . .(player%|
000074f0  28 33 2c 30 29 29 3d 31  20 80 20 b4 28 70 6c 61  |(3,0))=1 . .(pla|
00007500  79 65 72 25 28 33 2c 30  29 2b 6e 75 6d 29 3c 31  |yer%(3,0)+num)<1|
00007510  20 8c 0d 32 78 41 20 20  f2 63 61 6c 6c 63 6f 64  | ..2xA  .callcod|
00007520  65 28 70 6c 61 79 65 72  25 28 34 2c 31 29 2c 63  |e(player%(4,1),c|
00007530  6f 64 65 5f 63 61 6c 6c  65 72 5f 74 79 70 65 2c  |ode_caller_type,|
00007540  63 6f 64 65 5f 63 61 6c  6c 65 72 5f 6e 75 6d 62  |code_caller_numb|
00007550  65 72 29 0d 32 82 06 20  cd 0d 32 8c 16 20 70 6c  |er).2.. ..2.. pl|
00007560  61 79 65 72 25 28 33 2c  30 29 2b 3d 6e 75 6d 0d  |ayer%(3,0)+=num.|
00007570  32 96 05 cc 0d 32 a0 0e  20 e7 20 76 61 72 3d 32  |2....2.. . var=2|
00007580  20 8c 0d 32 aa 1b 20 20  c8 8e 20 63 6f 64 65 5f  | ..2..  .. code_|
00007590  63 61 6c 6c 65 72 5f 74  79 70 65 20 ca 0d 32 b4  |caller_type ..2.|
000075a0  0a 20 20 c9 20 32 3a 0d  32 be 5b 20 20 e7 20 b4  |.  . 2:.2.[  . .|
000075b0  28 6f 62 6a 65 63 74 73  25 28 63 6f 64 65 5f 63  |(objects%(code_c|
000075c0  61 6c 6c 65 72 5f 6e 75  6d 62 65 72 2c 35 2c 30  |aller_number,5,0|
000075d0  29 29 3d 31 20 80 20 b4  28 6f 62 6a 65 63 74 73  |))=1 . .(objects|
000075e0  25 28 63 6f 64 65 5f 63  61 6c 6c 65 72 5f 6e 75  |%(code_caller_nu|
000075f0  6d 62 65 72 2c 35 2c 30  29 2b 6e 75 6d 29 3c 31  |mber,5,0)+num)<1|
00007600  20 8c 0d 32 c8 55 20 20  f2 63 61 6c 6c 63 6f 64  | ..2.U  .callcod|
00007610  65 28 6f 62 6a 65 63 74  73 25 28 63 6f 64 65 5f  |e(objects%(code_|
00007620  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 2c 36 2c  |caller_number,6,|
00007630  31 29 2c 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 74  |1),code_caller_t|
00007640  79 70 65 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ype,code_caller_|
00007650  6e 75 6d 62 65 72 29 0d  32 d2 07 20 20 cd 0d 32  |number).2..  ..2|
00007660  dc 2b 20 20 6f 62 6a 65  63 74 73 25 28 63 6f 64  |.+  objects%(cod|
00007670  65 5f 63 61 6c 6c 65 72  5f 6e 75 6d 62 65 72 2c  |e_caller_number,|
00007680  35 2c 30 29 2b 3d 6e 75  6d 0d 32 e6 0a 20 20 c9  |5,0)+=num.2..  .|
00007690  20 33 3a 0d 32 f0 1e 20  20 e7 20 63 6f 64 65 5f  | 3:.2..  . code_|
000076a0  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 3d 30 20  |caller_number=0 |
000076b0  8c 0d 32 fa 33 20 20 e7  20 b4 28 70 6c 61 79 65  |..2.3  . .(playe|
000076c0  72 25 28 33 2c 30 29 29  3d 31 20 80 20 b4 28 70  |r%(3,0))=1 . .(p|
000076d0  6c 61 79 65 72 25 28 33  2c 31 29 2b 6e 75 6d 29  |layer%(3,1)+num)|
000076e0  3c 31 20 8c 0d 33 04 41  20 20 f2 63 61 6c 6c 63  |<1 ..3.A  .callc|
000076f0  6f 64 65 28 70 6c 61 79  65 72 25 28 34 2c 31 29  |ode(player%(4,1)|
00007700  2c 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 74 79 70  |,code_caller_typ|
00007710  65 2c 63 6f 64 65 5f 63  61 6c 6c 65 72 5f 6e 75  |e,code_caller_nu|
00007720  6d 62 65 72 29 0d 33 0e  07 20 20 cd 0d 33 18 17  |mber).3..  ..3..|
00007730  20 20 70 6c 61 79 65 72  25 28 33 2c 30 29 2b 3d  |  player%(3,0)+=|
00007740  6e 75 6d 0d 33 22 07 20  20 cc 0d 33 2c 59 20 20  |num.3".  ..3,Y  |
00007750  e7 20 b4 28 70 65 6f 70  6c 65 25 28 63 6f 64 65  |. .(people%(code|
00007760  5f 63 61 6c 6c 65 72 5f  6e 75 6d 62 65 72 2c 35  |_caller_number,5|
00007770  2c 30 29 29 3d 31 20 80  20 b4 28 70 65 6f 70 6c  |,0))=1 . .(peopl|
00007780  65 25 28 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 6e  |e%(code_caller_n|
00007790  75 6d 62 65 72 2c 35 2c  30 29 2b 6e 75 6d 29 3c  |umber,5,0)+num)<|
000077a0  31 20 8c 0d 33 36 54 20  20 f2 63 61 6c 6c 63 6f  |1 ..36T  .callco|
000077b0  64 65 28 70 65 6f 70 6c  65 25 28 63 6f 64 65 5f  |de(people%(code_|
000077c0  63 61 6c 6c 65 72 5f 6e  75 6d 62 65 72 2c 36 2c  |caller_number,6,|
000077d0  31 29 2c 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 74  |1),code_caller_t|
000077e0  79 70 65 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |ype,code_caller_|
000077f0  6e 75 6d 62 65 72 29 0d  33 40 07 20 20 cd 0d 33  |number).3@.  ..3|
00007800  4a 2a 20 20 70 65 6f 70  6c 65 25 28 63 6f 64 65  |J*  people%(code|
00007810  5f 63 61 6c 6c 65 72 5f  6e 75 6d 62 65 72 2c 35  |_caller_number,5|
00007820  2c 30 29 2b 3d 6e 75 6d  0d 33 54 07 20 20 cd 0d  |,0)+=num.3T.  ..|
00007830  33 5e 46 20 20 7f 20 f2  72 65 70 6f 72 74 28 22  |3^F  . .report("|
00007840  43 61 6e 27 74 20 63 68  61 67 65 20 65 6e 65 72  |Can't chage ener|
00007850  67 79 3a 20 66 6f 72 20  73 6f 6d 65 74 68 69 6e  |gy: for somethin|
00007860  67 20 77 69 74 68 20 6f  75 74 20 65 6e 65 72 67  |g with out energ|
00007870  79 3a 2e 22 29 0d 33 68  07 20 20 cb 0d 33 72 06  |y:.").3h.  ..3r.|
00007880  20 cc 0d 33 7c 18 20 20  63 75 72 5f 76 61 72 73  | ..3|.  cur_vars|
00007890  28 76 61 72 29 2b 3d 6e  75 6d 0d 33 86 06 20 cd  |(var)+=num.3.. .|
000078a0  0d 33 90 05 cd 0d 33 9a  05 e1 0d 33 a4 04 0d 33  |.3....3....3...3|
000078b0  ae 15 dd f2 63 6f 64 65  5f 73 65 74 28 62 2c 79  |....code_set(b,y|
000078c0  2c 75 29 0d 33 b8 37 ea  20 76 61 72 2c 6e 75 6d  |,u).3.7. var,num|
000078d0  2c 62 6c 6f 63 6b 2c 63  6f 64 65 5f 63 61 6c 6c  |,block,code_call|
000078e0  65 72 5f 6e 75 6d 62 65  72 2c 63 6f 64 65 5f 63  |er_number,code_c|
000078f0  61 6c 6c 65 72 5f 74 79  70 65 0d 33 c2 0b 62 6c  |aller_type.3..bl|
00007900  6f 63 6b 3d 62 0d 33 cc  18 63 6f 64 65 5f 63 61  |ock=b.3..code_ca|
00007910  6c 6c 65 72 5f 6e 75 6d  62 65 72 3d 75 0d 33 d6  |ller_number=u.3.|
00007920  16 63 6f 64 65 5f 63 61  6c 6c 65 72 5f 74 79 70  |.code_caller_typ|
00007930  65 3d 79 0d 33 e0 0c 62  6c 6f 63 6b 2b 3d 38 0d  |e=y.3..block+=8.|
00007940  33 ea 0e 76 61 72 3d 21  62 6c 6f 63 6b 0d 33 f4  |3..var=!block.3.|
00007950  0c 62 6c 6f 63 6b 2b 3d  38 0d 33 fe 0e 6e 75 6d  |.block+=8.3..num|
00007960  3d 21 62 6c 6f 63 6b 0d  34 08 0c 62 6c 6f 63 6b  |=!block.4..block|
00007970  2b 3d 34 0d 34 12 2e e7  20 76 61 72 3c 32 20 8c  |+=4.4... var<2 .|
00007980  20 f2 72 65 70 6f 72 74  28 22 43 61 6e 27 74 20  | .report("Can't |
00007990  61 6c 74 65 72 20 76 61  72 69 61 62 6c 65 2e 22  |alter variable."|
000079a0  29 0d 34 1c 0d e7 20 76  61 72 3d 33 20 8c 0d 34  |).4... var=3 ..4|
000079b0  26 24 e7 20 b4 28 70 6c  61 79 65 72 25 28 33 2c  |&$. .(player%(3,|
000079c0  30 29 29 3d 31 20 80 20  b4 28 6e 75 6d 29 3c 31  |0))=1 . .(num)<1|
000079d0  20 8c 0d 34 30 3f f2 63  61 6c 6c 63 6f 64 65 28  | ..40?.callcode(|
000079e0  70 6c 61 79 65 72 25 28  34 2c 31 29 2c 63 6f 64  |player%(4,1),cod|
000079f0  65 5f 63 61 6c 6c 65 72  5f 74 79 70 65 2c 63 6f  |e_caller_type,co|
00007a00  64 65 5f 63 61 6c 6c 65  72 5f 6e 75 6d 62 65 72  |de_caller_number|
00007a10  29 0d 34 3a 05 cd 0d 34  44 14 70 6c 61 79 65 72  |).4:...4D.player|
00007a20  25 28 33 2c 30 29 3d 6e  75 6d 0d 34 4e 05 cc 0d  |%(3,0)=num.4N...|
00007a30  34 58 0d e7 20 76 61 72  3d 32 20 8c 0d 34 62 19  |4X.. var=2 ..4b.|
00007a40  c8 8e 20 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 74  |.. code_caller_t|
00007a50  79 70 65 20 ca 0d 34 6c  08 c9 20 32 3a 0d 34 76  |ype ..4l.. 2:.4v|
00007a60  38 e7 20 b4 28 6f 62 6a  65 63 74 73 25 28 63 6f  |8. .(objects%(co|
00007a70  64 65 5f 63 61 6c 6c 65  72 5f 6e 75 6d 62 65 72  |de_caller_number|
00007a80  2c 35 2c 30 29 29 3d 31  20 80 20 b4 28 6e 75 6d  |,5,0))=1 . .(num|
00007a90  29 3c 31 20 8c 0d 34 80  53 f2 63 61 6c 6c 63 6f  |)<1 ..4.S.callco|
00007aa0  64 65 28 6f 62 6a 65 63  74 73 25 28 63 6f 64 65  |de(objects%(code|
00007ab0  5f 63 61 6c 6c 65 72 5f  6e 75 6d 62 65 72 2c 36  |_caller_number,6|
00007ac0  2c 31 29 2c 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |,1),code_caller_|
00007ad0  74 79 70 65 2c 63 6f 64  65 5f 63 61 6c 6c 65 72  |type,code_caller|
00007ae0  5f 6e 75 6d 62 65 72 29  0d 34 8a 05 cd 0d 34 94  |_number).4....4.|
00007af0  28 6f 62 6a 65 63 74 73  25 28 63 6f 64 65 5f 63  |(objects%(code_c|
00007b00  61 6c 6c 65 72 5f 6e 75  6d 62 65 72 2c 35 2c 30  |aller_number,5,0|
00007b10  29 3d 6e 75 6d 0d 34 9e  08 c9 20 33 3a 0d 34 a8  |)=num.4... 3:.4.|
00007b20  1c e7 20 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 6e  |.. code_caller_n|
00007b30  75 6d 62 65 72 3d 30 20  8c 0d 34 b2 25 20 e7 20  |umber=0 ..4.% . |
00007b40  b4 28 70 6c 61 79 65 72  25 28 33 2c 30 29 29 3d  |.(player%(3,0))=|
00007b50  31 20 80 20 b4 28 6e 75  6d 29 3c 31 20 8c 0d 34  |1 . .(num)<1 ..4|
00007b60  bc 41 20 20 f2 63 61 6c  6c 63 6f 64 65 28 70 6c  |.A  .callcode(pl|
00007b70  61 79 65 72 25 28 34 2c  31 29 2c 63 6f 64 65 5f  |ayer%(4,1),code_|
00007b80  63 61 6c 6c 65 72 5f 74  79 70 65 2c 63 6f 64 65  |caller_type,code|
00007b90  5f 63 61 6c 6c 65 72 5f  6e 75 6d 62 65 72 29 0d  |_caller_number).|
00007ba0  34 c6 06 20 cd 0d 34 d0  15 20 70 6c 61 79 65 72  |4.. ..4.. player|
00007bb0  25 28 33 2c 30 29 3d 6e  75 6d 0d 34 da 05 cc 0d  |%(3,0)=num.4....|
00007bc0  34 e4 38 20 e7 20 b4 28  70 65 6f 70 6c 65 25 28  |4.8 . .(people%(|
00007bd0  63 6f 64 65 5f 63 61 6c  6c 65 72 5f 6e 75 6d 62  |code_caller_numb|
00007be0  65 72 2c 35 2c 30 29 29  3d 31 20 80 20 b4 28 6e  |er,5,0))=1 . .(n|
00007bf0  75 6d 29 3c 31 20 8c 0d  34 ee 54 20 20 f2 63 61  |um)<1 ..4.T  .ca|
00007c00  6c 6c 63 6f 64 65 28 70  65 6f 70 6c 65 25 28 63  |llcode(people%(c|
00007c10  6f 64 65 5f 63 61 6c 6c  65 72 5f 6e 75 6d 62 65  |ode_caller_numbe|
00007c20  72 2c 36 2c 31 29 2c 63  6f 64 65 5f 63 61 6c 6c  |r,6,1),code_call|
00007c30  65 72 5f 74 79 70 65 2c  63 6f 64 65 5f 63 61 6c  |er_type,code_cal|
00007c40  6c 65 72 5f 6e 75 6d 62  65 72 29 0d 34 f8 06 20  |ler_number).4.. |
00007c50  cd 0d 35 02 28 20 70 65  6f 70 6c 65 25 28 63 6f  |..5.( people%(co|
00007c60  64 65 5f 63 61 6c 6c 65  72 5f 6e 75 6d 62 65 72  |de_caller_number|
00007c70  2c 35 2c 30 29 3d 6e 75  6d 0d 35 0c 05 cd 0d 35  |,5,0)=num.5....5|
00007c80  16 44 7f 20 f2 72 65 70  6f 72 74 28 22 43 61 6e  |.D. .report("Can|
00007c90  27 74 20 63 68 61 67 65  20 65 6e 65 72 67 79 3a  |'t chage energy:|
00007ca0  20 66 6f 72 20 73 6f 6d  65 74 68 69 6e 67 20 77  | for something w|
00007cb0  69 74 68 20 6f 75 74 20  65 6e 65 72 67 79 3a 2e  |ith out energy:.|
00007cc0  22 29 0d 35 20 05 cb 0d  35 2a 05 cc 0d 35 34 15  |").5 ...5*...54.|
00007cd0  63 75 72 5f 76 61 72 73  28 76 61 72 29 3d 6e 75  |cur_vars(var)=nu|
00007ce0  6d 0d 35 3e 05 cd 0d 35  48 05 cd 0d 35 52 05 e1  |m.5>...5H...5R..|
00007cf0  0d 35 5c 04 0d 35 66 0e  dd f2 63 6f 64 65 5f 65  |.5\..5f...code_e|
00007d00  6e 64 0d 35 70 10 f2 64  69 73 70 6c 61 79 28 22  |nd.5p..display("|
00007d10  22 29 0d 35 7a 10 f2 64  69 73 70 6c 61 79 28 22  |").5z..display("|
00007d20  22 29 0d 35 84 1f f2 64  69 73 70 6c 61 79 28 22  |").5...display("|
00007d30  2a 2a 2a 20 54 48 45 20  45 4e 44 20 2a 2a 2a 22  |*** THE END ***"|
00007d40  29 0d 35 8e 10 f2 64 69  73 70 6c 61 79 28 22 22  |).5...display(""|
00007d50  29 0d 35 98 28 f2 64 69  73 70 6c 61 79 28 22 50  |).5.(.display("P|
00007d60  72 65 73 73 20 72 65 74  75 72 6e 20 74 6f 20 72  |ress return to r|
00007d70  65 73 74 61 72 74 2e 22  29 0d 35 a2 0d 69 24 3d  |estart.").5..i$=|
00007d80  a4 69 6e 70 75 74 0d 35  ac 08 f2 63 6c 73 0d 35  |.input.5...cls.5|
00007d90  b6 0f f2 4a 75 6d 70 28  22 67 6f 22 29 0d 35 c0  |...Jump("go").5.|
00007da0  05 e1 0d 35 ca 04 0d 35  d4 13 dd f2 63 6f 64 65  |...5...5....code|
00007db0  5f 70 72 69 6e 74 28 62  29 0d 35 de 0b ea 20 62  |_print(b).5... b|
00007dc0  6c 6f 63 6b 0d 35 e8 0b  62 6c 6f 63 6b 3d 62 0d  |lock.5..block=b.|
00007dd0  35 f2 33 f4 20 66 69 72  73 74 20 64 65 63 69 64  |5.3. first decid|
00007de0  65 20 77 68 65 74 68 65  72 20 69 74 73 20 61 20  |e whether its a |
00007df0  76 61 72 69 61 62 6c 65  20 6f 72 20 73 74 72 69  |variable or stri|
00007e00  6e 67 0d 35 fc 0c 62 6c  6f 63 6b 2b 3d 34 0d 36  |ng.5..block+=4.6|
00007e10  06 0f 74 79 70 65 3d 21  62 6c 6f 63 6b 0d 36 10  |..type=!block.6.|
00007e20  0c 62 6c 6f 63 6b 2b 3d  34 0d 36 1a 0e 6e 75 6d  |.block+=4.6..num|
00007e30  3d 21 62 6c 6f 63 6b 0d  36 24 0c 62 6c 6f 63 6b  |=!block.6$.block|
00007e40  2b 3d 34 0d 36 2e 0d c8  8e 20 74 79 70 65 20 ca  |+=4.6.... type .|
00007e50  0d 36 38 1f c9 20 30 37  3a f2 63 6f 64 65 5f 70  |.68.. 07:.code_p|
00007e60  72 69 6e 74 5f 73 74 72  28 62 6c 6f 63 6b 29 0d  |rint_str(block).|
00007e70  36 42 1f c9 20 30 35 3a  f2 63 6f 64 65 5f 70 72  |6B.. 05:.code_pr|
00007e80  69 6e 74 5f 76 61 72 28  62 6c 6f 63 6b 29 0d 36  |int_var(block).6|
00007e90  4c 28 7f 20 f2 72 65 70  6f 72 74 28 22 43 61 6e  |L(. .report("Can|
00007ea0  27 74 20 70 72 69 6e 74  20 74 68 69 73 20 6c 61  |'t print this la|
00007eb0  62 65 6c 2e 22 29 0d 36  56 05 cb 0d 36 60 05 e1  |bel.").6V...6`..|
00007ec0  0d 36 6a 04 0d 36 74 17  dd f2 63 6f 64 65 5f 70  |.6j..6t...code_p|
00007ed0  72 69 6e 74 5f 73 74 72  28 62 29 0d 36 7e 0b ea  |rint_str(b).6~..|
00007ee0  20 62 6c 6f 63 6b 0d 36  88 0b 62 6c 6f 63 6b 3d  | block.6..block=|
00007ef0  62 0d 36 92 16 74 24 3d  a4 67 65 74 73 74 72 69  |b.6..t$=.getstri|
00007f00  6e 67 28 6e 75 6d 29 0d  36 9c 05 f5 0d 36 a6 1f  |ng(num).6....6..|
00007f10  c8 95 20 c1 74 24 2c 31  2c 32 29 3c 3e 22 5c 6e  |.. .t$,1,2)<>"\n|
00007f20  22 20 80 20 a9 28 74 24  29 3e 30 0d 36 b0 16 64  |" . .(t$)>0.6..d|
00007f30  69 73 70 6c 61 79 24 2b  3d c1 74 24 2c 31 2c 31  |isplay$+=.t$,1,1|
00007f40  29 0d 36 ba 0d 74 24 3d  c1 74 24 2c 32 29 0d 36  |).6..t$=.t$,2).6|
00007f50  c4 05 ce 0d 36 ce 20 e7  20 a9 28 74 24 29 3c 3e  |....6. . .(t$)<>|
00007f60  30 f2 64 69 73 70 6c 61  79 28 64 69 73 70 6c 61  |0.display(displa|
00007f70  79 24 29 0d 36 d8 0f e7  20 a9 28 74 24 29 3e 30  |y$).6... .(t$)>0|
00007f80  20 8c 0d 36 e2 0d 74 24  3d c1 74 24 2c 33 29 0d  | ..6..t$=.t$,3).|
00007f90  36 ec 0f 64 69 73 70 6c  61 79 24 3d 22 22 0d 36  |6..display$="".6|
00007fa0  f6 05 cd 0d 37 00 0d fd  20 a9 28 74 24 29 3d 30  |....7... .(t$)=0|
00007fb0  0d 37 0a 05 e1 0d 37 14  04 0d 37 1e 17 dd f2 63  |.7....7...7....c|
00007fc0  6f 64 65 5f 70 72 69 6e  74 5f 76 61 72 28 62 29  |ode_print_var(b)|
00007fd0  0d 37 28 0b ea 20 62 6c  6f 63 6b 0d 37 32 0b 62  |.7(.. block.72.b|
00007fe0  6c 6f 63 6b 3d 62 0d 37  3c 13 74 24 3d a4 67 65  |lock=b.7<.t$=.ge|
00007ff0  74 76 61 72 28 6e 75 6d  29 0d 37 46 10 64 69 73  |tvar(num).7F.dis|
00008000  70 6c 61 79 24 2b 3d 74  24 0d 37 50 05 e1 0d 37  |play$+=t$.7P...7|
00008010  5a 04 0d 37 64 0f dd a4  67 65 74 76 61 72 28 63  |Z..7d...getvar(c|
00008020  29 0d 37 6e 0a c8 8e 20  63 20 ca 0d 37 78 28 c9  |).7n... c ..7x(.|
00008030  20 30 3a 3d a4 67 65 74  73 74 72 69 6e 67 28 72  | 0:=.getstring(r|
00008040  6f 6f 6d 73 25 28 63 5f  72 6f 6f 6d 25 2c 30 2c  |ooms%(c_room%,0,|
00008050  31 29 29 0d 37 82 1f c9  20 31 3a 6f 62 3d 72 6f  |1)).7... 1:ob=ro|
00008060  6f 6d 73 25 28 63 5f 72  6f 6f 6d 25 2c 31 35 2c  |oms%(c_room%,15,|
00008070  31 29 0d 37 8c 09 6e 5f  6f 3d 30 0d 37 96 15 e3  |1).7..n_o=0.7...|
00008080  20 49 25 3d 30 20 b8 20  6f 62 6a 65 63 74 73 25  | I%=0 . objects%|
00008090  0d 37 a0 47 e7 20 6f 62  6a 65 63 74 5f 70 6c 61  |.7.G. object_pla|
000080a0  63 65 28 49 25 2c 30 29  3d 33 20 80 20 6f 62 6a  |ce(I%,0)=3 . obj|
000080b0  65 63 74 5f 70 6c 61 63  65 28 49 25 2c 31 29 3d  |ect_place(I%,1)=|
000080c0  30 20 8c 20 74 65 6d 70  28 6e 5f 6f 29 3d 49 25  |0 . temp(n_o)=I%|
000080d0  3a 6e 5f 6f 2b 3d 31 0d  37 aa 05 ed 0d 37 b4 0c  |:n_o+=1.7....7..|
000080e0  c8 8e 20 6e 5f 6f 20 ca  0d 37 be 0b c9 20 30 3a  |.. n_o ..7... 0:|
000080f0  3d 22 22 0d 37 c8 2a c9  20 31 3a 3d a4 67 65 74  |="".7.*. 1:=.get|
00008100  73 74 72 69 6e 67 28 6f  62 6a 65 63 74 73 25 28  |string(objects%(|
00008110  74 65 6d 70 28 30 29 2c  30 2c 31 29 29 0d 37 d2  |temp(0),0,1)).7.|
00008120  50 c9 20 32 3a 3d a4 67  65 74 73 74 72 69 6e 67  |P. 2:=.getstring|
00008130  28 6f 62 6a 65 63 74 73  25 28 74 65 6d 70 28 30  |(objects%(temp(0|
00008140  29 2c 30 2c 31 29 29 2b  22 20 22 2b a4 67 65 74  |),0,1))+" "+.get|
00008150  73 74 72 69 6e 67 28 6f  62 6a 65 63 74 73 25 28  |string(objects%(|
00008160  74 65 6d 70 28 31 29 2c  30 2c 31 29 29 0d 37 dc  |temp(1),0,1)).7.|
00008170  05 7f 0d 37 e6 09 6c 24  3d 22 22 0d 37 f0 12 e3  |...7..l$="".7...|
00008180  20 49 25 3d 30 20 b8 20  6e 5f 6f 2d 33 0d 37 fa  | I%=0 . n_o-3.7.|
00008190  2e 6c 24 2b 3d a4 67 65  74 73 74 72 69 6e 67 28  |.l$+=.getstring(|
000081a0  6f 62 6a 65 63 74 73 25  28 74 65 6d 70 28 49 25  |objects%(temp(I%|
000081b0  29 2c 30 2c 31 29 29 2b  22 20 22 0d 38 04 05 ed  |),0,1))+" ".8...|
000081c0  0d 38 0e 57 6c 24 2b 3d  a4 67 65 74 73 74 72 69  |.8.Wl$+=.getstri|
000081d0  6e 67 28 6f 62 6a 65 63  74 73 25 28 74 65 6d 70  |ng(objects%(temp|
000081e0  28 6e 5f 6f 2d 32 29 2c  30 2c 31 29 29 2b 22 20  |(n_o-2),0,1))+" |
000081f0  22 2b a4 67 65 74 73 74  72 69 6e 67 28 6f 62 6a  |"+.getstring(obj|
00008200  65 63 74 73 25 28 74 65  6d 70 28 6e 5f 6f 2d 31  |ects%(temp(n_o-1|
00008210  29 2c 30 2c 31 29 29 0d  38 18 07 3d 6c 24 0d 38  |),0,1)).8..=l$.8|
00008220  22 05 cb 0d 38 2c 1d c9  20 32 3a c8 8e 20 63 6f  |"...8,.. 2:.. co|
00008230  64 65 5f 63 61 6c 6c 65  72 5f 74 79 70 65 20 ca  |de_caller_type .|
00008240  0d 38 36 2a c9 20 32 3a  3d c3 6f 62 6a 65 63 74  |.86*. 2:=.object|
00008250  73 25 28 63 6f 64 65 5f  63 61 6c 6c 65 72 5f 6e  |s%(code_caller_n|
00008260  75 6d 62 65 72 2c 35 2c  30 29 0d 38 40 53 c9 20  |umber,5,0).8@S. |
00008270  33 3a e7 20 63 6f 64 65  5f 63 61 6c 6c 65 72 5f  |3:. code_caller_|
00008280  6e 75 6d 62 65 72 3d 30  20 8c 20 3d c3 70 6c 61  |number=0 . =.pla|
00008290  79 65 72 25 28 33 2c 31  29 20 8b 20 3d c3 70 65  |yer%(3,1) . =.pe|
000082a0  6f 70 6c 65 25 28 63 6f  64 65 5f 63 61 6c 6c 65  |ople%(code_calle|
000082b0  72 5f 6e 75 6d 62 65 72  2c 35 2c 30 29 0d 38 4a  |r_number,5,0).8J|
000082c0  0b 7f 20 3d 22 2d 31 22  0d 38 54 05 cb 0d 38 5e  |.. ="-1".8T...8^|
000082d0  16 c9 20 33 3a 3d c3 70  6c 61 79 65 72 25 28 33  |.. 3:=.player%(3|
000082e0  2c 30 29 0d 38 68 05 cb  0d 38 72 13 3d c3 28 63  |,0).8h...8r.=.(c|
000082f0  75 72 5f 76 61 72 73 28  63 29 29 0d 38 7c 04 0d  |ur_vars(c)).8|..|
00008300  38 86 10 dd f2 63 6f 64  65 5f 65 72 72 6f 72 0d  |8....code_error.|
00008310  38 90 40 f2 72 65 70 6f  72 74 28 22 76 69 73 61  |8.@.report("visa|
00008320  62 6c 65 28 29 20 61 6e  64 20 69 6e 76 69 73 61  |ble() and invisa|
00008330  62 6c 65 28 29 20 61 72  65 20 6e 6f 20 6c 6f 6e  |ble() are no lon|
00008340  67 65 72 20 73 75 70 6f  72 74 65 64 2e 22 29 0d  |ger suported.").|
00008350  38 9a 0c 62 6c 6f 63 6b  2b 3d 34 0d 38 a4 05 e1  |8..block+=4.8...|
00008360  0d 38 ae 04 0d 38 b8 0a  dd f2 73 68 6f 77 0d 38  |.8...8....show.8|
00008370  c2 11 f2 64 69 73 70 6c  61 79 28 22 20 22 29 0d  |...display(" ").|
00008380  38 cc 20 f2 64 69 73 70  6c 61 79 5f 53 65 74 54  |8. .display_SetT|
00008390  69 74 6c 65 28 22 52 75  6e 6e 69 6e 67 22 29 0d  |itle("Running").|
000083a0  38 d6 3d f2 64 69 73 70  6c 61 79 5f 53 65 74 50  |8.=.display_SetP|
000083b0  6f 73 49 6e 64 69 63 61  74 6f 72 28 a4 67 65 74  |osIndicator(.get|
000083c0  73 74 72 69 6e 67 28 72  6f 6f 6d 73 25 28 63 5f  |string(rooms%(c_|
000083d0  72 6f 6f 6d 25 2c 30 2c  31 29 29 29 0d 38 e0 1a  |room%,0,1))).8..|
000083e0  66 73 3d 72 6f 6f 6d 73  25 28 63 5f 72 6f 6f 6d  |fs=rooms%(c_room|
000083f0  25 2c 31 2c 31 29 0d 38  ea 1a 6c 73 3d 72 6f 6f  |%,1,1).8..ls=roo|
00008400  6d 73 25 28 63 5f 72 6f  6f 6d 25 2c 32 2c 31 29  |ms%(c_room%,2,1)|
00008410  0d 38 f4 10 e3 20 79 25  3d 66 73 20 b8 20 6c 73  |.8... y%=fs . ls|
00008420  0d 38 fe 1c f2 64 69 73  70 6c 61 79 28 a4 67 65  |.8...display(.ge|
00008430  74 73 74 72 69 6e 67 28  79 25 29 29 0d 39 08 05  |tstring(y%)).9..|
00008440  ed 0d 39 12 11 f2 64 69  73 70 6c 61 79 28 22 20  |..9...display(" |
00008450  22 29 0d 39 1c 09 6e 5f  6f 3d 30 0d 39 26 15 e3  |").9..n_o=0.9&..|
00008460  20 49 25 3d 30 20 b8 20  6f 62 6a 65 63 74 73 25  | I%=0 . objects%|
00008470  0d 39 30 4d e7 20 6f 62  6a 65 63 74 5f 70 6c 61  |.90M. object_pla|
00008480  63 65 28 49 25 2c 30 29  3d 31 20 80 20 6f 62 6a  |ce(I%,0)=1 . obj|
00008490  65 63 74 5f 70 6c 61 63  65 28 49 25 2c 31 29 3d  |ect_place(I%,1)=|
000084a0  63 5f 72 6f 6f 6d 25 20  8c 20 74 65 6d 70 28 6e  |c_room% . temp(n|
000084b0  5f 6f 29 3d 49 25 3a 6e  5f 6f 2b 3d 31 0d 39 3a  |_o)=I%:n_o+=1.9:|
000084c0  05 ed 0d 39 44 0c c8 8e  20 6e 5f 6f 20 ca 0d 39  |...9D... n_o ..9|
000084d0  4e 2e c9 20 30 3a f2 64  69 73 70 6c 61 79 28 22  |N.. 0:.display("|
000084e0  54 68 65 72 65 20 61 72  65 20 6e 6f 20 6f 62 6a  |There are no obj|
000084f0  65 63 74 73 20 68 65 72  65 2e 22 29 0d 39 58 4a  |ects here.").9XJ|
00008500  c9 20 31 3a f2 64 69 73  70 6c 61 79 28 22 54 68  |. 1:.display("Th|
00008510  65 72 65 20 69 73 20 61  20 22 2b a4 67 65 74 73  |ere is a "+.gets|
00008520  74 72 69 6e 67 28 6f 62  6a 65 63 74 73 25 28 74  |tring(objects%(t|
00008530  65 6d 70 28 30 29 2c 30  2c 31 29 29 2b 22 20 68  |emp(0),0,1))+" h|
00008540  65 72 65 2e 22 29 0d 39  62 74 c9 20 32 3a f2 64  |ere.").9bt. 2:.d|
00008550  69 73 70 6c 61 79 28 22  54 68 65 72 65 20 69 73  |isplay("There is|
00008560  20 61 20 22 2b a4 67 65  74 73 74 72 69 6e 67 28  | a "+.getstring(|
00008570  6f 62 6a 65 63 74 73 25  28 74 65 6d 70 28 30 29  |objects%(temp(0)|
00008580  2c 30 2c 31 29 29 2b 22  20 61 6e 64 20 22 2b a4  |,0,1))+" and "+.|
00008590  67 65 74 73 74 72 69 6e  67 28 6f 62 6a 65 63 74  |getstring(object|
000085a0  73 25 28 74 65 6d 70 28  31 29 2c 30 2c 31 29 29  |s%(temp(1),0,1))|
000085b0  2b 22 20 68 65 72 65 2e  22 29 0d 39 6c 05 7f 0d  |+" here.").9l...|
000085c0  39 76 14 6c 24 3d 22 54  68 65 72 65 20 69 73 20  |9v.l$="There is |
000085d0  61 20 22 0d 39 80 12 e3  20 49 25 3d 30 20 b8 20  |a ".9... I%=0 . |
000085e0  6e 5f 6f 2d 33 0d 39 8a  31 6c 24 2b 3d a4 67 65  |n_o-3.9.1l$+=.ge|
000085f0  74 73 74 72 69 6e 67 28  6f 62 6a 65 63 74 73 25  |tstring(objects%|
00008600  28 74 65 6d 70 28 49 25  29 2c 30 2c 31 29 29 2b  |(temp(I%),0,1))+|
00008610  22 2c 20 61 20 22 0d 39  94 05 ed 0d 39 9e 67 6c  |", a ".9....9.gl|
00008620  24 2b 3d a4 67 65 74 73  74 72 69 6e 67 28 6f 62  |$+=.getstring(ob|
00008630  6a 65 63 74 73 25 28 74  65 6d 70 20 28 6e 5f 6f  |jects%(temp (n_o|
00008640  2d 32 29 2c 30 2c 31 29  29 2b 22 20 61 6e 64 20  |-2),0,1))+" and |
00008650  61 20 22 2b a4 67 65 74  73 74 72 69 6e 67 28 6f  |a "+.getstring(o|
00008660  62 6a 65 63 74 73 25 28  74 65 6d 70 28 6e 5f 6f  |bjects%(temp(n_o|
00008670  2d 31 29 2c 30 2c 31 29  29 2b 22 20 68 65 72 65  |-1),0,1))+" here|
00008680  2e 22 0d 39 a8 10 f2 64  69 73 70 6c 61 79 28 6c  |.".9...display(l|
00008690  24 29 0d 39 b2 05 cb 0d  39 bc 09 6e 5f 6f 3d 30  |$).9....9..n_o=0|
000086a0  0d 39 c6 14 e3 20 49 25  3d 30 20 b8 20 70 65 6f  |.9... I%=0 . peo|
000086b0  70 6c 65 25 0d 39 d0 4d  e7 20 70 65 6f 70 6c 65  |ple%.9.M. people|
000086c0  5f 70 6c 61 63 65 28 49  25 2c 30 29 3d 31 20 80  |_place(I%,0)=1 .|
000086d0  20 70 65 6f 70 6c 65 5f  70 6c 61 63 65 28 49 25  | people_place(I%|
000086e0  2c 31 29 3d 63 5f 72 6f  6f 6d 25 20 8c 20 74 65  |,1)=c_room% . te|
000086f0  6d 70 28 6e 5f 6f 29 3d  49 25 3a 6e 5f 6f 2b 3d  |mp(n_o)=I%:n_o+=|
00008700  31 0d 39 da 05 ed 0d 39  e4 0c c8 8e 20 6e 5f 6f  |1.9....9.... n_o|
00008710  20 ca 0d 39 ee 2d c9 20  30 3a f2 64 69 73 70 6c  | ..9.-. 0:.displ|
00008720  61 79 28 22 54 68 65 72  65 20 61 72 65 20 6e 6f  |ay("There are no|
00008730  20 70 65 6f 70 6c 65 20  68 65 72 65 2e 22 29 0d  | people here.").|
00008740  39 f8 4e c9 20 31 3a f2  64 69 73 70 6c 61 79 28  |9.N. 1:.display(|
00008750  22 54 68 65 72 65 20 69  73 20 61 6c 73 6f 20 61  |"There is also a|
00008760  20 22 2b a4 67 65 74 73  74 72 69 6e 67 28 70 65  | "+.getstring(pe|
00008770  6f 70 6c 65 25 28 74 65  6d 70 28 30 29 2c 30 2c  |ople%(temp(0),0,|
00008780  31 29 29 2b 22 20 68 65  72 65 2e 22 29 0d 3a 02  |1))+" here.").:.|
00008790  79 c9 20 32 3a f2 64 69  73 70 6c 61 79 28 22 54  |y. 2:.display("T|
000087a0  68 65 72 65 20 69 73 20  61 6c 73 6f 20 61 20 22  |here is also a "|
000087b0  2b a4 67 65 74 73 74 72  69 6e 67 28 70 65 6f 70  |+.getstring(peop|
000087c0  6c 65 25 28 74 65 6d 70  28 30 29 2c 30 2c 31 29  |le%(temp(0),0,1)|
000087d0  29 2b 22 20 61 6e 64 20  61 20 22 2b a4 67 65 74  |)+" and a "+.get|
000087e0  73 74 72 69 6e 67 28 70  65 6f 70 6c 65 25 28 74  |string(people%(t|
000087f0  65 6d 70 28 31 29 2c 30  2c 31 29 29 2b 22 20 68  |emp(1),0,1))+" h|
00008800  65 72 65 2e 22 29 0d 3a  0c 05 7f 0d 3a 16 17 6c  |ere.").:....:..l|
00008810  24 3d 22 54 68 65 72 65  20 69 73 20 61 6c 73 6f  |$="There is also|
00008820  20 22 0d 3a 20 12 e3 20  49 25 3d 30 20 b8 20 6e  | ".: .. I%=0 . n|
00008830  5f 6f 2d 33 0d 3a 2a 33  6c 24 2b 3d 22 61 20 22  |_o-3.:*3l$+="a "|
00008840  2b a4 67 65 74 73 74 72  69 6e 67 28 70 65 6f 70  |+.getstring(peop|
00008850  6c 65 25 28 74 65 6d 70  28 49 25 29 2c 30 2c 31  |le%(temp(I%),0,1|
00008860  29 29 2b 22 2c 20 22 0d  3a 34 05 ed 0d 3a 3e 69  |))+", ".:4...:>i|
00008870  6c 24 2b 3d 22 61 20 22  2b a4 67 65 74 73 74 72  |l$+="a "+.getstr|
00008880  69 6e 67 28 70 65 6f 70  6c 65 25 28 74 65 6d 70  |ing(people%(temp|
00008890  28 6e 5f 6f 2d 32 29 2c  30 2c 31 29 29 2b 22 20  |(n_o-2),0,1))+" |
000088a0  61 6e 64 20 61 20 22 2b  a4 67 65 74 73 74 72 69  |and a "+.getstri|
000088b0  6e 67 28 70 65 6f 70 6c  65 25 28 74 65 6d 70 28  |ng(people%(temp(|
000088c0  6e 5f 6f 2d 31 29 2c 30  2c 31 29 29 2b 22 20 68  |n_o-1),0,1))+" h|
000088d0  65 72 65 2e 22 0d 3a 48  10 f2 64 69 73 70 6c 61  |ere.".:H..displa|
000088e0  79 28 6c 24 29 0d 3a 52  05 cb 0d 3a 5c 2f 4e 3d  |y(l$).:R...:\/N=|
000088f0  a3 3a 53 3d a3 3a 57 3d  a3 3a 45 3d a3 3a 4e 45  |.:S=.:W=.:E=.:NE|
00008900  3d a3 3a 53 57 3d a3 3a  4e 57 3d a3 3a 53 45 3d  |=.:SW=.:NW=.:SE=|
00008910  a3 3a 55 3d a3 3a 44 3d  a3 0d 3a 66 22 e7 20 72  |.:U=.:D=..:f". r|
00008920  6f 6f 6d 73 25 28 63 5f  72 6f 6f 6d 25 2c 33 2c  |ooms%(c_room%,3,|
00008930  30 29 3c 3e 30 20 8c 20  45 3d b9 0d 3a 70 22 e7  |0)<>0 . E=..:p".|
00008940  20 72 6f 6f 6d 73 25 28  63 5f 72 6f 6f 6d 25 2c  | rooms%(c_room%,|
00008950  34 2c 30 29 3c 3e 30 20  8c 20 57 3d b9 0d 3a 7a  |4,0)<>0 . W=..:z|
00008960  22 e7 20 72 6f 6f 6d 73  25 28 63 5f 72 6f 6f 6d  |". rooms%(c_room|
00008970  25 2c 35 2c 30 29 3c 3e  30 20 8c 20 53 3d b9 0d  |%,5,0)<>0 . S=..|
00008980  3a 84 22 e7 20 72 6f 6f  6d 73 25 28 63 5f 72 6f  |:.". rooms%(c_ro|
00008990  6f 6d 25 2c 36 2c 30 29  3c 3e 30 20 8c 20 4e 3d  |om%,6,0)<>0 . N=|
000089a0  b9 0d 3a 8e 22 e7 20 72  6f 6f 6d 73 25 28 63 5f  |..:.". rooms%(c_|
000089b0  72 6f 6f 6d 25 2c 37 2c  30 29 3c 3e 30 20 8c 20  |room%,7,0)<>0 . |
000089c0  55 3d b9 0d 3a 98 22 e7  20 72 6f 6f 6d 73 25 28  |U=..:.". rooms%(|
000089d0  63 5f 72 6f 6f 6d 25 2c  38 2c 30 29 3c 3e 30 20  |c_room%,8,0)<>0 |
000089e0  8c 20 44 3d b9 0d 3a a2  23 e7 20 72 6f 6f 6d 73  |. D=..:.#. rooms|
000089f0  25 28 63 5f 72 6f 6f 6d  25 2c 39 2c 30 29 3c 3e  |%(c_room%,9,0)<>|
00008a00  30 20 8c 20 53 45 3d b9  0d 3a ac 24 e7 20 72 6f  |0 . SE=..:.$. ro|
00008a10  6f 6d 73 25 28 63 5f 72  6f 6f 6d 25 2c 31 30 2c  |oms%(c_room%,10,|
00008a20  30 29 3c 3e 30 20 8c 20  53 57 3d b9 0d 3a b6 24  |0)<>0 . SW=..:.$|
00008a30  e7 20 72 6f 6f 6d 73 25  28 63 5f 72 6f 6f 6d 25  |. rooms%(c_room%|
00008a40  2c 31 31 2c 30 29 3c 3e  30 20 8c 20 4e 45 3d b9  |,11,0)<>0 . NE=.|
00008a50  0d 3a c0 24 e7 20 72 6f  6f 6d 73 25 28 63 5f 72  |.:.$. rooms%(c_r|
00008a60  6f 6f 6d 25 2c 31 32 2c  30 29 3c 3e 30 20 8c 20  |oom%,12,0)<>0 . |
00008a70  4e 57 3d b9 0d 3a ca 21  e7 20 4e 2b 45 2b 57 2b  |NW=..:.!. N+E+W+|
00008a80  53 2b 4e 57 2b 4e 45 2b  53 45 2b 53 57 2b 55 2b  |S+NW+NE+SE+SW+U+|
00008a90  44 3d 30 20 8c 0d 3a d4  23 f2 64 69 73 70 6c 61  |D=0 ..:.#.displa|
00008aa0  79 28 22 54 68 65 72 65  20 61 72 65 20 6e 6f 20  |y("There are no |
00008ab0  65 78 69 74 73 2e 22 29  0d 3a de 05 cc 0d 3a e8  |exits.").:....:.|
00008ac0  0c 69 24 3d a4 64 69 72  73 0d 3a f2 22 e7 20 4e  |.i$=.dirs.:.". N|
00008ad0  2b 45 2b 57 2b 53 2b 4e  57 2b 4e 45 2b 53 45 2b  |+E+W+S+NW+NE+SE+|
00008ae0  53 57 2b 55 2b 44 3d 2d  31 20 8c 0d 3a fc 34 6f  |SW+U+D=-1 ..:.4o|
00008af0  24 3d 22 54 68 65 72 65  20 69 73 20 61 6e 20 65  |$="There is an e|
00008b00  78 69 74 20 74 6f 20 74  68 65 20 22 2b c1 69 24  |xit to the "+.i$|
00008b10  2c 31 2c a9 28 69 24 29  2d 32 29 2b 22 2e 22 0d  |,1,.(i$)-2)+".".|
00008b20  3b 06 05 cc 0d 3b 10 32  6f 24 3d 22 54 68 65 72  |;....;.2o$="Ther|
00008b30  65 20 61 72 65 20 65 78  69 74 73 20 74 6f 20 74  |e are exits to t|
00008b40  68 65 20 22 2b a4 73 70  65 63 69 61 6c 31 28 69  |he "+.special1(i|
00008b50  24 29 2b 22 2e 22 0d 3b  1a 05 cd 0d 3b 24 10 f2  |$)+".".;....;$..|
00008b60  64 69 73 70 6c 61 79 28  6f 24 29 0d 3b 2e 05 cd  |display(o$).;...|
00008b70  0d 3b 38 11 f2 64 69 73  70 6c 61 79 28 22 20 22  |.;8..display(" "|
00008b80  29 0d 3b 42 05 e1 0d 3b  4c 04 0d 3b 56 0a dd a4  |).;B...;L..;V...|
00008b90  64 69 72 73 0d 3b 60 09  6c 24 3d 22 22 0d 3b 6a  |dirs.;`.l$="".;j|
00008ba0  19 e7 20 4e 3d b9 20 8c  20 6c 24 2b 3d 22 6e 6f  |.. N=. . l$+="no|
00008bb0  72 74 68 2c 20 22 0d 3b  74 19 e7 20 53 3d b9 20  |rth, ".;t.. S=. |
00008bc0  8c 20 6c 24 2b 3d 22 73  6f 75 74 68 2c 20 22 0d  |. l$+="south, ".|
00008bd0  3b 7e 18 e7 20 45 3d b9  20 8c 20 6c 24 2b 3d 22  |;~.. E=. . l$+="|
00008be0  65 61 73 74 2c 20 22 0d  3b 88 18 e7 20 57 3d b9  |east, ".;... W=.|
00008bf0  20 8c 20 6c 24 2b 3d 22  77 65 73 74 2c 20 22 0d  | . l$+="west, ".|
00008c00  3b 92 16 e7 20 55 3d b9  20 8c 20 6c 24 2b 3d 22  |;... U=. . l$+="|
00008c10  75 70 2c 20 22 0d 3b 9c  18 e7 20 44 3d b9 20 8c  |up, ".;... D=. .|
00008c20  20 6c 24 2b 3d 22 64 6f  77 6e 2c 20 22 0d 3b a6  | l$+="down, ".;.|
00008c30  1e e7 20 4e 57 3d b9 20  8c 20 6c 24 2b 3d 22 6e  |.. NW=. . l$+="n|
00008c40  6f 72 74 68 77 65 73 74  2c 20 22 0d 3b b0 1e e7  |orthwest, ".;...|
00008c50  20 53 45 3d b9 20 8c 20  6c 24 2b 3d 22 73 6f 75  | SE=. . l$+="sou|
00008c60  74 68 65 61 73 74 2c 20  22 0d 3b ba 1e e7 20 4e  |theast, ".;... N|
00008c70  45 3d b9 20 8c 20 6c 24  2b 3d 22 6e 6f 72 74 68  |E=. . l$+="north|
00008c80  65 61 73 74 2c 20 22 0d  3b c4 1e e7 20 53 57 3d  |east, ".;... SW=|
00008c90  b9 20 8c 20 6c 24 2b 3d  22 73 6f 75 74 68 77 65  |. . l$+="southwe|
00008ca0  73 74 2c 20 22 0d 3b ce  07 3d 6c 24 0d 3b d8 04  |st, ".;..=l$.;..|
00008cb0  0d 3b e2 12 dd a4 73 70  65 63 69 61 6c 31 28 74  |.;....special1(t|
00008cc0  24 29 0d 3b ec 15 79 24  3d c1 74 24 2c 31 2c a9  |$).;..y$=.t$,1,.|
00008cd0  28 74 24 29 2d 32 29 0d  3b f6 08 49 25 3d 31 0d  |(t$)-2).;..I%=1.|
00008ce0  3c 00 09 4c 49 25 3d 30  0d 3c 0a 0c c8 95 20 49  |<..LI%=0.<.... I|
00008cf0  25 3c 3e 30 0d 3c 14 0a  4c 49 25 3d 49 25 0d 3c  |%<>0.<..LI%=I%.<|
00008d00  1e 14 49 25 3d a7 79 24  2c 22 2c 22 2c 49 25 2b  |..I%=.y$,",",I%+|
00008d10  31 29 0d 3c 28 05 ce 0d  3c 32 23 3d c1 79 24 2c  |1).<(...<2#=.y$,|
00008d20  31 2c 4c 49 25 2d 31 29  2b 22 20 61 6e 64 22 2b  |1,LI%-1)+" and"+|
00008d30  c1 79 24 2c 4c 49 25 2b  31 29 0d 3c 3c 04 0d 3c  |.y$,LI%+1).<<..<|
00008d40  46 13 dd a4 67 65 74 73  74 72 69 6e 67 28 79 25  |F...getstring(y%|
00008d50  29 0d 3c 50 11 3d 73 74  72 69 6e 67 73 24 28 79  |).<P.=strings$(y|
00008d60  25 29 0d 3c 5a 04 0d 3c  64 12 dd f2 72 65 70 6f  |%).<Z..<d...repo|
00008d70  73 5f 70 65 6f 70 6c 65  0d 3c 6e 15 70 65 6f 70  |s_people.<n.peop|
00008d80  6c 65 5f 70 6c 61 63 65  28 29 3d 2d 31 0d 3c 78  |le_place()=-1.<x|
00008d90  13 e3 20 49 25 3d 32 20  b8 20 72 6f 6f 6d 73 25  |.. I%=2 . rooms%|
00008da0  0d 3c 82 1b 20 e7 20 72  6f 6f 6d 73 25 28 49 25  |.<.. . rooms%(I%|
00008db0  2c 31 36 2c 31 29 3c 3e  30 20 8c 0d 3c 8c 1b 20  |,16,1)<>0 ..<.. |
00008dc0  20 62 6c 6f 63 6b 3d 72  6f 6f 6d 73 25 28 49 25  | block=rooms%(I%|
00008dd0  2c 31 36 2c 31 29 0d 3c  96 1f 20 20 c8 95 20 21  |,16,1).<..  .. !|
00008de0  62 6c 6f 63 6b 3c 3e 30  20 80 20 62 6c 6f 63 6b  |block<>0 . block|
00008df0  21 34 3c 3e 30 0d 3c a0  10 20 20 20 69 3d 62 6c  |!4<>0.<..   i=bl|
00008e00  6f 63 6b 21 34 0d 3c aa  0f 20 20 20 62 6c 6f 63  |ock!4.<..   bloc|
00008e10  6b 2b 3d 38 0d 3c b4 41  20 20 20 e7 20 70 65 6f  |k+=8.<.A   . peo|
00008e20  70 6c 65 5f 70 6c 61 63  65 28 69 2c 31 29 3c 3e  |ple_place(i,1)<>|
00008e30  2d 31 20 8c 20 f2 72 65  70 6f 72 74 28 22 70 65  |-1 . .report("pe|
00008e40  72 73 6f 6e 20 69 6e 20  74 77 6f 20 70 6c 61 63  |rson in two plac|
00008e50  65 73 2e 22 29 0d 3c be  1c 20 20 20 70 65 6f 70  |es.").<..   peop|
00008e60  6c 65 5f 70 6c 61 63 65  28 69 2c 30 29 3d 26 30  |le_place(i,0)=&0|
00008e70  31 0d 3c c8 1b 20 20 20  70 65 6f 70 6c 65 5f 70  |1.<..   people_p|
00008e80  6c 61 63 65 28 69 2c 31  29 3d 49 25 0d 3c d2 07  |lace(i,1)=I%.<..|
00008e90  20 20 ce 0d 3c dc 06 20  cd 0d 3c e6 05 ed 0d 3c  |  ..<.. ..<....<|
00008ea0  f0 05 e1 0d 3c fa 04 0d  3d 04 13 dd f2 72 65 70  |....<...=....rep|
00008eb0  6f 73 5f 6f 62 6a 65 63  74 73 0d 3d 0e 15 6f 62  |os_objects.=..ob|
00008ec0  6a 65 63 74 5f 70 6c 61  63 65 28 29 3d 2d 31 0d  |ject_place()=-1.|
00008ed0  3d 18 26 f4 20 63 61 6e  20 62 65 20 69 6e 20 70  |=.&. can be in p|
00008ee0  6c 61 79 65 72 2c 20 72  6f 6f 6d 20 6f 72 20 70  |layer, room or p|
00008ef0  65 72 73 6f 6e 0d 3d 22  16 e3 20 49 25 20 3d 20  |erson.=".. I% = |
00008f00  30 20 b8 20 70 65 6f 70  6c 65 25 0d 3d 2c 1b 20  |0 . people%.=,. |
00008f10  e7 20 70 65 6f 70 6c 65  25 28 49 25 2c 39 2c 31  |. people%(I%,9,1|
00008f20  29 3c 3e 30 20 8c 0d 3d  36 1b 20 20 62 6c 6f 63  |)<>0 ..=6.  bloc|
00008f30  6b 3d 70 65 6f 70 6c 65  25 28 49 25 2c 39 2c 31  |k=people%(I%,9,1|
00008f40  29 0d 3d 40 1f 20 20 c8  95 20 21 62 6c 6f 63 6b  |).=@.  .. !block|
00008f50  3c 3e 30 20 80 20 62 6c  6f 63 6b 21 34 3c 3e 30  |<>0 . block!4<>0|
00008f60  0d 3d 4a 10 20 20 20 69  3d 62 6c 6f 63 6b 21 34  |.=J.   i=block!4|
00008f70  0d 3d 54 0f 20 20 20 62  6c 6f 63 6b 2b 3d 38 0d  |.=T.   block+=8.|
00008f80  3d 5e 41 20 20 20 e7 20  6f 62 6a 65 63 74 5f 70  |=^A   . object_p|
00008f90  6c 61 63 65 28 69 2c 31  29 3c 3e 2d 31 20 8c 20  |lace(i,1)<>-1 . |
00008fa0  f2 72 65 70 6f 72 74 28  22 6f 62 6a 65 63 74 20  |.report("object |
00008fb0  69 6e 20 74 77 6f 20 70  6c 61 63 65 73 2e 22 29  |in two places.")|
00008fc0  0d 3d 68 1c 20 20 20 6f  62 6a 65 63 74 5f 70 6c  |.=h.   object_pl|
00008fd0  61 63 65 28 69 2c 30 29  3d 26 30 33 0d 3d 72 1b  |ace(i,0)=&03.=r.|
00008fe0  20 20 20 6f 62 6a 65 63  74 5f 70 6c 61 63 65 28  |   object_place(|
00008ff0  69 2c 31 29 3d 49 25 0d  3d 7c 07 20 20 ce 0d 3d  |i,1)=I%.=|.  ..=|
00009000  86 06 20 cd 0d 3d 90 05  ed 0d 3d 9a 13 e3 20 49  |.. ..=....=... I|
00009010  25 3d 32 20 b8 20 72 6f  6f 6d 73 25 0d 3d a4 1b  |%=2 . rooms%.=..|
00009020  20 e7 20 72 6f 6f 6d 73  25 28 49 25 2c 31 35 2c  | . rooms%(I%,15,|
00009030  31 29 3c 3e 30 20 8c 0d  3d ae 1b 20 20 62 6c 6f  |1)<>0 ..=..  blo|
00009040  63 6b 3d 72 6f 6f 6d 73  25 28 49 25 2c 31 35 2c  |ck=rooms%(I%,15,|
00009050  31 29 0d 3d b8 1f 20 20  c8 95 20 21 62 6c 6f 63  |1).=..  .. !bloc|
00009060  6b 3c 3e 30 20 84 20 62  6c 6f 63 6b 21 34 3c 3e  |k<>0 . block!4<>|
00009070  30 0d 3d c2 10 20 20 20  69 3d 62 6c 6f 63 6b 21  |0.=..   i=block!|
00009080  34 0d 3d cc 0f 20 20 20  62 6c 6f 63 6b 2b 3d 38  |4.=..   block+=8|
00009090  0d 3d d6 41 20 20 20 e7  20 6f 62 6a 65 63 74 5f  |.=.A   . object_|
000090a0  70 6c 61 63 65 28 69 2c  31 29 3c 3e 2d 31 20 8c  |place(i,1)<>-1 .|
000090b0  20 f2 72 65 70 6f 72 74  28 22 6f 62 6a 65 63 74  | .report("object|
000090c0  20 69 6e 20 74 77 6f 20  70 6c 61 63 65 73 2e 22  | in two places."|
000090d0  29 0d 3d e0 1c 20 20 20  6f 62 6a 65 63 74 5f 70  |).=..   object_p|
000090e0  6c 61 63 65 28 69 2c 30  29 3d 26 30 31 0d 3d ea  |lace(i,0)=&01.=.|
000090f0  1b 20 20 20 6f 62 6a 65  63 74 5f 70 6c 61 63 65  |.   object_place|
00009100  28 69 2c 31 29 3d 49 25  0d 3d f4 07 20 20 ce 0d  |(i,1)=I%.=..  ..|
00009110  3d fe 06 20 cd 0d 3e 08  05 ed 0d 3e 12 17 e7 20  |=.. ..>....>... |
00009120  70 6c 61 79 65 72 25 28  35 2c 31 29 3c 3e 30 20  |player%(5,1)<>0 |
00009130  8c 0d 3e 1c 17 20 62 6c  6f 63 6b 3d 70 6c 61 79  |..>.. block=play|
00009140  65 72 25 28 35 2c 31 29  0d 3e 26 1e 20 c8 95 20  |er%(5,1).>&. .. |
00009150  21 62 6c 6f 63 6b 3c 3e  30 20 80 20 62 6c 6f 63  |!block<>0 . bloc|
00009160  6b 21 34 3c 3e 30 0d 3e  30 0f 20 20 69 3d 62 6c  |k!4<>0.>0.  i=bl|
00009170  6f 63 6b 21 34 0d 3e 3a  0e 20 20 62 6c 6f 63 6b  |ock!4.>:.  block|
00009180  2b 3d 38 0d 3e 44 40 20  20 e7 20 6f 62 6a 65 63  |+=8.>D@  . objec|
00009190  74 5f 70 6c 61 63 65 28  69 2c 31 29 3c 3e 2d 31  |t_place(i,1)<>-1|
000091a0  20 8c 20 f2 72 65 70 6f  72 74 28 22 6f 62 6a 65  | . .report("obje|
000091b0  63 74 20 69 6e 20 74 77  6f 20 70 6c 61 63 65 73  |ct in two places|
000091c0  2e 22 29 0d 3e 4e 1b 20  20 6f 62 6a 65 63 74 5f  |.").>N.  object_|
000091d0  70 6c 61 63 65 28 69 2c  30 29 3d 26 30 33 0d 3e  |place(i,0)=&03.>|
000091e0  58 1a 20 20 6f 62 6a 65  63 74 5f 70 6c 61 63 65  |X.  object_place|
000091f0  28 69 2c 31 29 3d 49 25  0d 3e 62 06 20 ce 0d 3e  |(i,1)=I%.>b. ..>|
00009200  6c 05 cd 0d 3e 76 05 e1  0d 3e 80 04 0d 3e 8a 0b  |l...>v...>...>..|
00009210  dd f2 45 52 52 4f 52 0d  3e 94 12 e7 20 9f 3c 3e  |..ERROR.>... .<>|
00009220  28 31 3c 3c 33 31 29 20  8c 0d 3e 9e 15 eb 20 30  |(1<<31) ..>... 0|
00009230  20 3a 20 f6 3a f1 20 9e  3a 4c 3d a5 3a e0 0d 3e  | : .:. .:L=.:..>|
00009240  a8 05 cd 0d 3e b2 10 69  3d a0 28 22 46 4e 22 2b  |....>..i=.("FN"+|
00009250  f6 24 29 0d 3e bc 05 e1  0d 3e c6 04 0d 3e d0 0e  |.$).>....>...>..|
00009260  dd f2 4a 75 6d 70 28 6c  24 29 0d 3e da 10 85 20  |..Jump(l$).>... |
00009270  28 31 3c 3c 33 31 29 2c  6c 24 0d 3e e4 05 e1 0d  |(1<<31),l$.>....|
00009280  3e ee 04 0d 3e f8 0e dd  f2 71 75 69 74 5f 6e 6f  |>...>....quit_no|
00009290  77 0d 3f 02 05 e0 0d 3f  0c 05 e1 0d ff           |w.?....?.....|
0000929d