| 10 NR=14:NT=11:NP=11:NV=29:NO=NT+NP | |
| 20 DIM AC(NR,6),VB$(NV),OB$(NO),RM$(NR),TD$(NT),VN(NV),TL(NT),TF(NT) | |
| 99 REM *INITIALIZATION* | |
| 100 RM=1:CT=0:CF=0:RT=-1:CA=0:MF=0:CD=0:WD=-1:LI=0:BT=-1 | |
| 120 FOR I=1 TO NR:READ RM$(I):NEXT I | |
| 130 FOR I=1 TO NV:READ VB$(I),VN(I):NEXT I | |
| 140 FOR I=1 TO NO:READ OB$(I):NEXT I | |
| 150 FOR I=1 TO NT:READ TD$(I),TL(I),TF(I):NEXT I | |
| 160 FOR I=1 TO NR:READ AC(I,1),AC(I,2),AC(I,3),AC(I,4),AC(I,5),AC(I,6):NEXT I | |
| 199 REM *MAIN LOOP: ROOM DESCRIPTION* | |
| 200 IF WD=0 THEN 400 | |
| 210 WD=0:PRINT RM$(RM) | |
| 220 K=0 | |
| 230 FOR I=1 TO NT | |
| 240 IF TL(I)<>RM THEN 270 | |
| 250 IF K=0 THEN PRINT "You see:":K=1 | |
| 260 PRINT TD$(I) | |
| 270 NEXT I | |
| 300 PRINT"Exits are:" | |
| 310 FOR I=1 TO 6 | |
| 320 IF AC(RM,I)<>0 THEN PRINT VB$(I);" "; | |
| 330 NEXT I | |
| 340 PRINT | |
| 399 REM *MAIN LOOP:COMMAND INPUT AND PARSER* | |
| 400 INPUT C$ | |
| 410 L=LEN(C$):IF L=0 THEN 400 | |
| 420 C1$="":C2$="":C2=0:X=0 | |
| 430 FOR I=1 TO L | |
| 440 A$=MID$(C$,I,1):A=ASC(A$):IF A>=97 AND A<=122 THEN A$=CHR$(A-32) | |
| 450 IF A$<>" " THEN 460 | |
| 455 IF C2$<>"" THEN 500 | |
| 457 X=1:GOTO 490 | |
| 460 IF X=0 THEN C1$=C1$+A$:GOTO 490 | |
| 470 C2$=C2$+A$ | |
| 490 NEXT I | |
| 500 IF C1$="" THEN PRINT "Excuse me?":GOTO 400 | |
| 510 C1$=LEFT$(C1$,5):C2$=LEFT$(C2$,5) | |
| 520 FOR C1=1 TO NV | |
| 530 IF VB$(C1)=C1$ THEN C1=VN(C1):GOTO 600 | |
| 540 NEXT C1 | |
| 550 PRINT"I don't know the verb ";C1$:GOTO 400 | |
| 600 IF C2$="" THEN 700 | |
| 610 FOR C2=1 TO NO | |
| 620 IF OB$(C2)=C2$ THEN 700 | |
| 630 NEXT C2 | |
| 635 IF C1=11 THEN C2=1:GOTO 700 | |
| 640 PRINT"I don't know the object ";C2$:GOTO 400 | |
| 699 REM *PRELIMINARY FILTERING OF COMMANDS* | |
| 700 IF C2>NT+5 AND C1<>7 AND C1<>11 THEN 640 | |
| 710 IF C2>NT AND C2<NT+5 THEN IF C1<>11 THEN 8010 | |
| 720 IF C2>NT THEN 750 | |
| 725 TL=TL(C2) | |
| 730 IF C1<>11 AND TL<>RM AND TL<>0 THEN PRINT"It isn't here.":GOTO 400 | |
| 750 ON C1 GOTO 1000,1000,1000,1000,1000,1000,1100,1200,1300,1400 | |
| 760 ON C1-10 GOTO 1500,1800,1900,2000,2100,2200,2300,2400,2500,9999 | |
| 770 ON C1-20 GOTO 2600,2700,2800 | |
| 999 REM *DIRECTIONS* | |
| 1000 IF AC(RM,C1)=0 THEN PRINT"You can't go that way.":GOTO 8200 | |
| 1010 IF RM=4 AND RT<>0 THEN PRINT"The rats look too fierce.":GOTO 8200 | |
| 1020 RM=AC(RM,C1):WD=-1:GOTO 8200 | |
| 1099 REM *GO* | |
| 1100 IF C2=0 THEN 8050 | |
| 1105 IF C2<=16 THEN 8040 | |
| 1110 C1=C2-16:GOTO 1000 | |
| 1199 REM *EAT* | |
| 1200 IF C2<>6 THEN 8010 | |
| 1210 TL(C2)=-1:PRINT"GAG! COUGH! CHOKE! PUKE!":GOTO 8200 | |
| 1299 REM *KICK* | |
| 1300 IF C2=0 THEN 8050 | |
| 1305 IF C2<>7 OR CD<>0 THEN 8020 | |
| 1310 IF CA<>0 THEN CT=9:GOTO 8200 | |
| 1320 PRINT"The computer starts up!" | |
| 1330 PRINT"The console displays: 'PLEASE LOG IN.'":CA=-1:GOTO 8200 | |
| 1399 REM *INSERT* | |
| 1400 IF C2=0 THEN 8050 | |
| 1410 IF C2<>5 THEN 8010 | |
| 1420 IF RM<>6 THEN 8030 | |
| 1430 TL(5)=-1:TL(6)=RM:PRINT "A candy bar comes out.":GOTO 8200 | |
| 1499 REM *TYPE* | |
| 1500 IF C2=0 THEN 8050 | |
| 1502 IF RM<>10 THEN 8030 | |
| 1510 IF CA=0 THEN PRINT "The computer isn't running.":GOTO 8200 | |
| 1520 IF LI<>0 THEN 1600 | |
| 1530 IF C2<>12 THEN PRINT "'Invalid login ID.'":GOTO 8200 | |
| 1540 LI=-1:PRINT "'";C2$;" Logged in.'":GOTO 8200 | |
| 1600 IF CP<>0 THEN 1700 | |
| 1605 IF C2<=12 THEN PRINT "'Invalid command.'":GOTO 8200 | |
| 1610 IF C2=13 THEN PRINT "'COPY LOGOU ADVEN'":GOTO 8200 | |
| 1620 IF C2=14 THEN PRINT "'Welcome to Adventure! W#uld Y#$*'":CT=9:GOTO 8200 | |
| 1630 IF C2=15 THEN PRINT "'Mount tape then type filename.'":CP=-1:GOTO 8200 | |
| 1640 PRINT "'Logged out.'":CP=-1:GOTO 8200 | |
| 1700 CP=0:IF C2<=12 THEN PRINT"'No such file.'":GOTO 8200 | |
| 1710 IF MT=0 THEN PRINT"'Error: Tape not mounted'":GOTO 8200 | |
| 1720 PRINT "The tape spins...":FOR I=1 TO 500:NEXT I | |
| 1730 PRINT "'File copied.'" | |
| 1740 IF C2=14 THEN PRINT "CONGRATULATIONS, you've done it!":END | |
| 1750 GOTO 8200 | |
| 1799 REM *TAKE* | |
| 1800 IF C2=0 THEN 8050 | |
| 1805 IF TF(C2)=0 THEN PRINT "That's beyond your ability.":GOTO 8200 | |
| 1810 IF TL=0 THEN PRINT"You already have it!":GOTO 200 | |
| 1820 IF C2=4 AND CF=0 THEN PRINT"There was a coin under it.":TL(5)=RM:CF=-1 | |
| 1825 IF C2=2 THEN MT=0 | |
| 1830 TL(C2)=0:GOTO 8000 | |
| 1899 REM *DROP* | |
| 1900 IF C2=0 THEN 8050 | |
| 1905 IF TL<>0 THEN PRINT "You don't have it.":GOTO 200 | |
| 1910 TL(C2)=RM:IF RM<>4 OR C2<>6 THEN 8000 | |
| 1920 PRINT"The rats devour the candy and get sleepy." | |
| 1930 TD$(1)="Sleepy rats":TL(6)=-1:RT=0 | |
| 1940 GOTO 8000 | |
| 1999 REM *INVENTORY* | |
| 2000 K=0:PRINT"You are carrying:" | |
| 2010 FOR I=1 TO NT | |
| 2020 IF TL(I)=0 THEN PRINT TD$(I):K=1 | |
| 2030 NEXT I | |
| 2040 IF K=0 THEN PRINT "Nothing." | |
| 2050 GOTO 8200 | |
| 2099 REM *MOUNT* | |
| 2100 IF C2=0 THEN 8050 | |
| 2110 IF C2<>2 THEN 8010 | |
| 2120 IF RM<>10 OR MT<>0 THEN 8030 | |
| 2130 TL(2)=RM:MT=-1:GOTO 8000 | |
| 2199 REM *READ* | |
| 2200 IF C2=0 THEN 8050 | |
| 2210 IF C2=3 THEN PRINT"'INSERT COIN.'":GOTO 8200 | |
| 2220 IF C2<>10 THEN PRINT "Nothing is written on it.":GOTO 8200 | |
| 2230 PRINT "'...USER ID IS ROAD...'" | |
| 2240 PRINT "'TYPE DIR FOR LIST OF COMMANDS...'" | |
| 2250 PRINT"The rest is illegible.":GOTO 8200 | |
| 2299 REM *FIGHT* | |
| 2300 PRINT"That won't work.":GOTO 8200 | |
| 2399 REM *START* | |
| 2400 IF C2=0 THEN 8050 | |
| 2410 IF C2=7 THEN 8020 | |
| 2420 GOTO 8010 | |
| 2499 REM *OPEN* | |
| 2500 IF C2=0 THEN 8050 | |
| 2510 IF C2<>9 THEN 8010 | |
| 2520 IF MF<>0 THEN PRINT"It already is.":GOTO 8200 | |
| 2530 PRINT"Inside it is a manual.":TL(10)=RM:MF=-1:GOTO 8200 | |
| 2599 REM *LOOK* | |
| 2600 IF C2<>0 THEN 8040 | |
| 2610 WD=-1:GOTO 8200 | |
| 2699 REM *WIND* | |
| 2700 IF C2<>11 THEN 8010 | |
| 2710 IF BT=0 THEN PRINT"It's fully wound.":GOTO 8200 | |
| 2720 PRINT "The clock chimes deafeningly and something flies past." | |
| 2730 BT=0:TL(8)=-1 | |
| 2740 GOTO 8200 | |
| 2799 REM *EXAMINE* | |
| 2800 IF C2=3 OR C2=10 THEN PRINT "Something is written there.":GOTO 8200 | |
| 2810 IF C2=9 AND MF=0 THEN PRINT"It is closed.":GOTO 8200 | |
| 2820 IF C2=4 THEN PRINT"It looks beyond repair.":GOTO 8200 | |
| 2830 IF C2=7 THEN PRINT"This is an ancient mainframe with a console.":GOTO 8200 | |
| 2840 IF C2=11 THEN PRINT"There is a large handle for winding the clock.":GOTO 8200 | |
| 2845 IF C2=2 AND MT<>0 THEN PRINT"It is mounted on the computer.":GOTO 8200 | |
| 2850 PRINT"You see nothing special.":GOTO 8200 | |
| 7999 REM *COMPLETION MESSAGES* | |
| 8000 PRINT"O.K.":GOTO 8200 | |
| 8010 PRINT"That's silly!":GOTO 200 | |
| 8020 PRINT"Nothing happens.":GOTO 8200 | |
| 8030 PRINT"You can't do that now.":GOTO 8200 | |
| 8040 PRINT"Who's your English teacher?":GOTO 200 | |
| 8050 PRINT"Please give an object.":GOTO 200 | |
| 8199 REM *COMPLECTION ROUTINES* | |
| 8200 IF CA=0 THEN 8300 | |
| 8210 CT=CT+1:IF CT<10 THEN 8300 | |
| 8220 IF RM=10 THEN PRINT"The computer dies with a loud pop." | |
| 8230 CD=-1:CA=0:TD$(7)="Dead computer" | |
| 8300 IF RM=TL(8) THEN PRINT"A horde of bats carries you out.":RM=1:WD=-1 | |
| 8310 GOTO 200 | |
| 9000 DATA You are in front of an old factory with a clock tower. | |
| 9002 DATA You are at the bottom of the stairwell. | |
| 9004 DATA You are at the top of some basement steps. | |
| 9006 DATA You are in a damp celler. | |
| 9008 DATA You are in a storeroom. | |
| 9010 DATA You are in the cafeteria. | |
| 9012 DATA You're at a landing on the stairs. | |
| 9014 DATA Around you is a manufacturing area. | |
| 9016 DATA You're at a landing on the third floor. | |
| 9018 DATA You are in the computer room. | |
| 9020 DATA You are inside the clock tower. | |
| 9022 DATA You're at the top of the stairs. | |
| 9024 DATA You are in a long corridor going east. | |
| 9026 DATA You're at the east end of the corridor. | |
| 9050 DATA N,1,S,2,E,3,W,4,U,5,D,6,GO,7,EAT,8,KICK,9,INSER,10,DEPOS,10,TYPE,11 | |
| 9055 DATA TAKE,12,GET,12,DROP,13,THROW,13,INVEN,14,I,14,MOUNT,15,READ,16 | |
| 9060 DATA FIGHT,17,KILL,17,START,18,POWER,18,OPEN,19,QUIT,20,LOOK,21 | |
| 9065 DATA WIND,22,EXAMI,23 | |
| 9100 DATA RATS,TAPE,MACHI,TERMI,COIN,CANDY,COMPU,BATS,DESK,MANUA,CLOCK,ROAD | |
| 9105 DATA DIR,ADVEN,COPY,LOGOU,NORTH,SOUTH,EAST,WEST,UP,DOWN | |
| 9150 DATA Hungry rats,4,0,Computer tape,5,1,Vending machine,6,0 | |
| 9155 DATA Broken-down terminal,8,1,Coin,-1,1,Candy Bar,-1,1,Computer,10,0 | |
| 9160 DATA Bats,13,0,Desk,14,0,Computer Manual,-1,1,Elaborate Clockwork,11,0 | |
| 9200 DATA 2,0,0,0,0,0 | |
| 9205 DATA 3,1,0,0,7,0 | |
| 9210 DATA 0,2,0,0,0,4 | |
| 9215 DATA 0,0,5,0,3,0 | |
| 9220 DATA 0,0,0,4,0,0 | |
| 9225 DATA 0,0,7,0,0,0 | |
| 9230 DATA 0,0,8,6,9,2 | |
| 9235 DATA 0,0,0,7,0,0 | |
| 9240 DATA 0,0,10,0,12,7 | |
| 9245 DATA 0,0,0,9,0,0 | |
| 9250 DATA 0,12,0,0,0,0 | |
| 9255 DATA 11,0,13,0,0,9 | |
| 9260 DATA 0,0,14,12,0,0 | |
| 9270 DATA 0,0,0,13,0,0 | |
| 9999 END | |
Xet Storage Details
- Size:
- 7.94 kB
- Xet hash:
- 1eef602d6a543aeb0531402d612db31537c2477d75a18ee55a6f92675c114533
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.