home *** CD-ROM | disk | FTP | other *** search
- 10 REM **********************
- 20 REM * ACS.PLAYER *
- 30 REM * BY JENNY SCHMIDT *
- 40 REM * COPYRIGHT (C) 1985 *
- 50 REM * BY MICROSPARC, INC *
- 60 REM * CONCORD, MA 01742 *
- 70 REM **********************
- 80 DIM D$(100),N%(100),S%(100),E%(100),W%(100),U%(100),D%(100),CT%(750),A$(750),O$(300),V%(300),R%(300),C$(400),CC%(400),F(99)
- 90 D$ = CHR$(4)
- 100 HOME : VTAB 2: HTAB 15: PRINT "ACS.PLAYER": VTAB 3: HTAB 12: PRINT "BY JENNY SCHMIDT": VTAB 5: PRINT "** COPYRIGHT 1985 BY MICROSPARC, INC **": VTAB 12
- 110 PRINT "ADVENTURE NAME (? FOR CATALOG): ": INPUT "";N$
- 120 IF LEFT$(N$,1) = "?" THEN HOME : PRINT D$"CATALOG": PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 110
- 130 ONERR GOTO 2020
- 140 ES$ = "DESCRIPTION"
- 150 PRINT D$;"OPEN DES.";N$: PRINT D$;"READ DES.";N$
- 160 INPUT A
- 170 FOR W = 1 TO A
- 180 INPUT D$(W): INPUT N%(W): INPUT S%(W): INPUT E%(W): INPUT W%(W): INPUT U%(W): INPUT D%(W)
- 190 NEXT W
- 200 PRINT D$;"CLOSE DES.";N$
- 210 ES$ = "USER-PROMPTED ACTIONS"
- 220 PRINT D$;"OPEN USR.";N$
- 230 PRINT D$;"READ USR.";N$
- 240 INPUT B
- 250 FOR W = 1 TO B
- 260 INPUT A$(W): INPUT CT%(W)
- 270 NEXT W
- 280 PRINT D$;"CLOSE USR.";N$
- 290 ES$ = "NON-USER-PROMPTED ACTION"
- 300 PRINT D$;"OPEN NUP.";N$
- 310 PRINT D$;"READ NUP.";N$
- 320 INPUT C
- 330 FOR W = 1 TO C
- 340 INPUT C$(W): INPUT CC%(W)
- 350 NEXT W
- 360 PRINT D$;"CLOSE NUP.";N$
- 370 INPUT "DO YOU WANT TO LOAD A PREVIOUSLY SAVED GAME?";Q$: IF LEFT$(Q$,1) = "N" THEN 510
- 380 ONERR GOTO 2000
- 390 PRINT D$"VERIFY SAV."N$
- 400 PRINT D$;"OPEN SAV.";N$: PRINT D$;"READ SAV.";N$
- 410 FOR W = 0 TO 99
- 420 INPUT F(W)
- 430 NEXT W
- 440 INPUT N1
- 450 FOR W = 1 TO N1
- 460 INPUT O$(W): INPUT V%(W): INPUT R%(W)
- 470 NEXT W: INPUT R: INPUT T
- 480 PRINT D$;"CLOSE SAV.";N$: GOTO 610
- 490 ONERR GOTO 2020
- 500 ES$ = "OBJECTS"
- 510 PRINT D$;"OPEN OBJ.";N$: PRINT D$;"READ OBJ.";N$
- 520 INPUT N1
- 530 FOR W = 1 TO N1
- 540 INPUT O$(W): INPUT V%(W): INPUT R%(W)
- 550 NEXT W
- 560 PRINT D$;"CLOSE OBJ.";N$
- 570 POKE 216,0
- 580 FOR W = 1 TO N1: IF R%(W) = 1 THEN T = T +V%(W)
- 590 NEXT W
- 600 R = 1:
- 610 HOME : TEXT
- 620 GOSUB 1460
- 630 P = 0:FL = 3
- 640 FOR W = 1 TO C
- 650 IF FL = 0 AND CC%(W) = P THEN 700
- 660 IF FL = 1 AND CC%(W) >P THEN 700
- 670 T$ = C$(W):T1 = VAL( LEFT$(C$(W),2))
- 680 ON T1 GOSUB 850,890,930,970,1010,1030,1050,1150,1160,1190,1230,1240,1280,1300,1340,1360
- 690 P = CC%(W)
- 700 NEXT W
- 710 PRINT
- 720 INPUT Q$:Q$ = "6 " +Q$
- 730 PRINT
- 740 P = 0:FL = 3
- 750 FOR W = 1 TO B
- 760 IF FL = 0 AND CT%(W) = P THEN 820
- 770 IF FL = 1 AND CT%(W) >P THEN 820
- 780 T$ = A$(W):T1 = VAL( LEFT$(A$(W),2))
- 790 ON T1 GOSUB 850,890,930,970,1010,1030,1050,1150,1160,1190,1230,1240,1280,1300,1340,1360
- 800 IF FL = 2 THEN K = 2
- 810 P = CT%(W)
- 820 NEXT W
- 830 GOSUB 1380
- 840 GOTO 630
- 850 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
- 860 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = 0 THEN FL = 0: RETURN
- 870 NEXT Q
- 880 FL = 1: RETURN
- 890 XX$ = RIGHT$(T$,4):FL = 0: FOR Q = 1 TO N1
- 900 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = 0 THEN FL = 1: RETURN
- 910 NEXT Q
- 920 RETURN
- 930 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
- 940 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = R THEN FL = 0: RETURN
- 950 NEXT Q
- 960 FL = 1: RETURN
- 970 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
- 980 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = R THEN FL = 1: RETURN
- 990 NEXT Q
- 1000 FL = 0: RETURN
- 1010 IF R = VAL( MID$ (T$,2)) THEN FL = 0: RETURN
- 1020 FL = 1: RETURN
- 1030 IF ( RIGHT$(T$,4) = RIGHT$(Q$,4) OR RIGHT$(T$,4) = "????") AND ( LEFT$(Q$,7) = LEFT$(T$,7) OR LEFT$(T$,7) = "6 ????") THEN FL = 0: RETURN
- 1040 FL = 1: RETURN
- 1050 XX$ = MID$ (T$,7,1):FX = F( VAL( MID$ (T$,4,2))):FY = VAL( MID$ (T$,9))
- 1060 IF XX$ < >"=" THEN 1090
- 1070 IF FX = FY THEN FL = 0: RETURN
- 1080 FL = 1: RETURN
- 1090 IF XX$ < >"<" THEN 1120
- 1100 IF FX <FY THEN FL = 0: RETURN
- 1110 FL = 1: RETURN
- 1120 IF XX$ < >">" THEN 1370
- 1130 IF FX >FY THEN FL = 0: RETURN
- 1140 FL = 1: RETURN
- 1150 PRINT MID$ (T$,4):FL = 2: RETURN
- 1160 N1 = N1 +1
- 1170 O$(N1) = MID$ (T$,8):R%(N1) = 0:V%(N1) = VAL( MID$ (T$,4,3)):F%(0) = F%(0) +1:T = T +V%(N1)
- 1180 FL = 2: RETURN
- 1190 IF N1 = 0 THEN FL = 2: RETURN
- 1200 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
- 1210 IF XX$ = RIGHT$(O$(Q),4) AND R%(Q) = 0 THEN T = T -V%(Q):O$(Q) = O$(N1):R%(Q) = R%(N1):V%(Q) = V%(N1):FL = 2:N1 = N1 -1:F%(0) = F%(0) -1: RETURN
- 1220 NEXT Q:FL = 2: RETURN
- 1230 N1 = N1 +1:O$(N1) = MID$ (T$,8):R%(N1) = R:V%(N1) = VAL( MID$ (T$,4,3)):FL = 2: RETURN
- 1240 IF N1 = 0 THEN FL = 2: RETURN
- 1250 FOR Q = 1 TO N1
- 1260 IF RIGHT$(T$,4) = RIGHT$(O$(Q),4) AND R%(Q) = R THEN O$(Q) = O$(N1):R%(Q) = R%(N1):V%(Q) = V%(N1):FL = 2:N1 = N1 -1: RETURN
- 1270 NEXT Q:FL = 2: RETURN
- 1280 T = T + VAL( MID$ (T$,4))
- 1290 FL = 2: RETURN
- 1300 XX$ = MID$ (T$,7,1):FX = VAL( MID$ (T$,4,2)):FY = VAL( MID$ (T$,9))
- 1310 IF XX$ = "=" THEN F(FX) = FY:FL = 2: RETURN
- 1320 IF XX$ = "+" THEN F(FX) = F(FX) +FY:FL = 2: RETURN
- 1330 IF XX$ = "%" THEN F(FX) = INT( RND(1) *100):FL = 2: RETURN
- 1340 R = VAL( MID$ (T$,4)): GOSUB 1460
- 1350 FL = 2: RETURN
- 1360 PRINT "YOUR SCORE IS ";T: END
- 1370 PRINT CHR$(7) CHR$(7)"ERROR IN LINE ";W: END
- 1380 IF K = 2 THEN K = 0: RETURN
- 1390 QL$ = LEFT$(Q$,7)
- 1400 IF QL$ < >"6 INVE" THEN 1450
- 1410 PRINT "YOU HAVE"
- 1420 FOR W = 1 TO N1
- 1430 IF R%(W) = 0 THEN PRINT O$(W)
- 1440 NEXT W: RETURN
- 1450 IF QL$ < >"6 LOOK" THEN 1510
- 1460 PRINT D$(R)
- 1470 FOR Q = 1 TO N1
- 1480 IF R%(Q) = R THEN PRINT O$(Q);" IS HERE"
- 1490 NEXT Q
- 1500 RETURN
- 1510 IF LEFT$(Q$,6) < >"6 GET" AND QL$ < >"6 TAKE" THEN 1580
- 1520 QR$ = RIGHT$(Q$,4): FOR W = 1 TO N1
- 1530 IF R%(W) = R AND QR$ = RIGHT$(O$(W),4) THEN R%(W) = 0: PRINT "OKAY":F(0) = F(0) +1: GOTO 1560
- 1540 NEXT W
- 1550 PRINT "IT ISN'T HERE": RETURN
- 1560 IF R < >1 THEN T = T +V%(W)
- 1570 RETURN
- 1580 IF QL$ < >"6 DROP" THEN 1650
- 1590 FOR W = 1 TO N1
- 1600 IF RIGHT$(O$(W),4) = RIGHT$(Q$,4) AND R%(W) = 0 THEN R%(W) = R: PRINT "OKAY":F(0) = F(0) -1: GOTO 1630
- 1610 NEXT W
- 1620 PRINT "YOU AREN'T CARRYING IT"
- 1630 IF R < >1 THEN T = T -V%(W)
- 1640 RETURN
- 1650 QR$ = RIGHT$(Q$,5):QM$ = MID$ (Q$,4)
- 1660 IF QR$ < >"NORTH" AND QM$ < >"N" THEN 1690
- 1670 IF R = N%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
- 1680 R = N%(R): GOSUB 1460: RETURN
- 1690 IF QR$ < >"SOUTH" AND QM$ < >"S" THEN 1720
- 1700 IF R = S%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
- 1710 R = S%(R): GOSUB 1460: RETURN
- 1720 QR$ = RIGHT$(Q$,4): IF QR$ < >"EAST" AND QM$ < >"E" THEN 1750
- 1730 IF R = E%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
- 1740 R = E%(R): GOSUB 1460: RETURN
- 1750 IF QR$ < >"WEST" AND QM$ < >"W" THEN 1780
- 1760 IF R = W%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
- 1770 R = W%(R): GOSUB 1460: RETURN
- 1780 IF RIGHT$(Q$,2) < >"UP" AND QM$ < >"U" THEN 1810
- 1790 IF R = U%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
- 1800 R = U%(R): GOSUB 1460: RETURN
- 1810 IF QR$ < >"DOWN" AND QM$ < >"D" THEN 1840
- 1820 IF R = D%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
- 1830 R = D%(R): GOSUB 1460: RETURN
- 1840 IF Q$ = "6 SCORE" THEN PRINT T: RETURN
- 1850 IF Q$ = "6 QUIT" THEN PRINT "YOUR SCORE IS ";T: PRINT "COME AND PLAY AGAIN SOMETIME.": END
- 1860 IF Q$ < >"6 SAVE" THEN PRINT "I DON'T UNDERSTAND": RETURN
- 1870 ONERR GOTO 2010
- 1880 PRINT D$;"OPEN SAV.";N$: PRINT D$;"CLOSE SAV.";N$: PRINT D$;"DELETE SAV.";N$: PRINT D$;"OPEN SAV.";N$: PRINT D$;"WRITE SAV.";N$
- 1890 FOR W = 0 TO 99
- 1900 PRINT F(W)
- 1910 NEXT W
- 1920 PRINT N1
- 1930 FOR W = 1 TO N1
- 1940 PRINT O$(W): PRINT V%(W): PRINT R%(W)
- 1950 NEXT W
- 1960 PRINT R: PRINT T
- 1970 PRINT D$;"CLOSE SAV.";N$: POKE 216,0: RETURN
- 1980 CALL -3288: POKE 216,0: PRINT D$"CLOSE": RETURN
- 1990 END
- 2000 EL = 3: GOTO 2030
- 2010 EL = 1: GOTO 2030: REM ENTRY POINT FOR DISK WRITE
- 2020 EL = 2: REM ENTRY POINT FOR DISK READ
- 2030 ER = PEEK(222)
- 2040 IF ER = 4 THEN PRINT "DISK WRITE PROTECTED": GOTO 2130
- 2050 IF ER = 5 THEN PRINT "FILE NOT FOUND OR EMPTY": GOTO 2130
- 2060 IF ER = 6 THEN PRINT "FILE NOT FOUND": GOTO 2130
- 2070 IF ER = 8 THEN PRINT "DISK I/O ERROR": GOTO 2130
- 2080 IF ER = 9 THEN PRINT "DISK FULL": GOTO 2130
- 2090 IF ER = 10 THEN PRINT "FILE LOCKED": GOTO 2130
- 2100 IF ER = 11 THEN PRINT "ILLEGAL FILE NAME": GOTO 2130
- 2110 IF ER = 13 THEN PRINT "FILE TYPE MISMATCH": GOTO 2130
- 2120 PRINT "ERROR #";ER" IN LINE "; PEEK(218) + PEEK(219) *256
- 2130 ON EL GOTO 2170,2160
- 2140 PRINT "UNABLE TO LOAD SAVED GAME.": INPUT "TRY AGAIN? ";YN$: IF LEFT$(YN$,1) = "Y" THEN PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 390
- 2150 END
- 2160 PRINT "UNABLE TO LOAD "ES$: PRINT "FILE FOR "N$: POKE 216,0: PRINT : PRINT "ANY KEY WHEN READY": GET T$: GOTO 100
- 2170 PRINT "UNABLE TO SAVE GAME.": PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 1980