The original listings for all 3 versions

This commit is contained in:
JJFlash 2022-09-02 11:08:03 +02:00
parent 2345e18077
commit ab78d63bcc
3 changed files with 432 additions and 0 deletions

View File

@ -0,0 +1,145 @@
30 HI=0:DIM F$(40),N$(3)
40 GOTO 14000
42 POKE 1,0:POKE 2,0
43 POKE 764,255
45 TRAP 40000
47 F$="":GOSUB 12000:SK=PEEK(0):P=PEEK(1)*256+PEEK(2):GOSUB 10000:GOTO 8000
990 REM READ JOY, MOVE
1000 REM
1010 PA=STICK(0)
1020 S3=(PA=7)
1030 S0=(PA=14):S1=(PA=13):S2=(PA=11)
1100 IF S0 THEN POKE X,7+128:C=20:GOTO 1160
1130 IF S3 THEN POKE X,6+128:C=-1:GOTO 1160
1140 IF S2 THEN POKE X,8+128:C=1:GOTO 1160
1150 IF S1 THEN POKE X,9+128:C=-20:GOTO 1160
1155 FOR J=1 TO 50:NEXT J:GOTO 1300
1160 X=X-C:IF PEEK(X)=129 THEN X=X+C:GOTO 1300
1165 SOUND 0,100,10,8
1170 F$(LEN(F$)+1)=CHR$(-C+99)
1180 J=PEEK(X):POKE X,2+64:IF J=10 THEN K=100:GOSUB 9000
1190 IF J=11 THEN K=50:GOSUB 9000
1200 IF J=12 THEN K=30:GOSUB 9000
1210 IF J=13 THEN K=20:GOSUB 9000
1220 IF J=14 THEN K=10:GOSUB 9000
1230 SOUND 0,0,0,0
1250 POSITION 6,22:? #6;P;" ";
1300 POKE X,3+64:RETURN
1990 REM "MOVE MONSTER
2000 IF LEN(F$)>=30 THEN GOSUB 3000
2005 O=O+1:IF O/S<>INT(O/S) THEN RETURN
2010 FOR J=1 TO SK:GOSUB 4000:POKE F,0:F=F+(ASC(F$)-99):F$=F$(1+((LEN(F$)>1)))
2030 POKE F,5+192:SOUND 0,120,0,8:FOR M=1 TO 50:NEXT M:POKE F,4+192:SOUND 0,80,0,8:NEXT J:SOUND 0,0,0,0:RETURN
2990 REM " SPEED UP MONSTER
3000 POKE F,0:S=S-1:IF S<1 THEN S=1
3005 POSITION 18,22:? #6;E-S;
3010 FOR N=1 TO 10:POKE F,0:F=F+(ASC(F$)-99):F$=F$(2):POKE F,5+192
3150 IF (N/SK=INT(N/SK)) AND PP THEN GOSUB 1000
3310 FOR M=N TO N+2:SOUND 0,M*3,0,8:NEXT M:NEXT N:SOUND 0,0,0,0
3500 RETURN
3990 REM " CHECK IF EATEN
4000 IF X<>F THEN RETURN
4005 POKE F,8:SOUND 0,0,0,0
4010 GOSUB 18000:POSITION 0,22:? #6;"A TASTY MORSEL INDEED_";
4015 FOR J=1 TO 2000
4025 NEXT J
4027 IF PP=0 THEN 16800
4060 GOTO 11000
6990 REM " GET PROMOTED
7000 J=INT(P/256):POKE 1,J:POKE 2,P-J*256
7100 SK=PEEK(0)+1:POKE 0,SK
7200 POSITION 0,23:? #6;"CONGRATULATIONS !!"
7205 FOR J=1 TO 1000:NEXT J
7400 PRINT "}":POKE 752,1:? " ONE AS FLEET-FOOTED AS YOU DESERVES":? " MORE CHALLENGE.":POKE 710,18
7405 FOR J=1 TO 500:NEXT J
7410 PRINT " YOU ARE THEREFORE PROMOTED TO":? " SKILL LEVEL ";SK
7420 FOR J=1 TO 1000:NEXT J
7500 GOTO 45
7990 REM " MAIN LOOP!
8000 FOR M=1 TO 500:GOSUB 1000:IF LEN(F$)<20 THEN NEXT M
8100 GOSUB 1000:GOSUB 2000:GOSUB 4000:GOTO 8100
8990 REM " PICKED UP TREASURE
9000 FOR I=1 TO 10:SOUND 0,10*RND(0),10,8:NEXT I:SOUND 0,0,0,0
9010 P=P+K*(E-S):PC=PC+1:IF PC>=61 THEN 7000
9100 RETURN
9990 REM " SET VARIABLES, ETC.
10000 REM
10030 S=10:PC=0:RO=22:PP=1
10110 W=5:E=11:GOSUB 18000
10600 POSITION 8,23:? #6;"顼<>"
10700 POSITION 0,22:? #6;"用弦藕 speed:1"
10800 X=SC+21:F=X
10900 RETURN
11000 REM " GAME OVER
11102 ? "}":POKE 752,1:POKE 710,212
11103 IF P>HI THEN HI=P:GOSUB 11150
11105 ?:? "YOUR SCORE IS: ";P
11107 ?:? "THE HIGH SCORE IS ";HI;" BY ";N$
11110 ?:?:? "PLAY AGAIN ? (Y/N): ";
11120 OPEN #1,4,0,"K:":GET #1,A:CLOSE #1
11130 IF A=ASC("N") THEN GRAPHICS 0:END
11140 POKE 764,255:POKE 77,0:GOTO 40
11150 ?:? "CONGRATULATIONS!! YOU HAVE THE NEW HIGH SCORE.":?:? "PLEASE ENTER YOUR INITIALS";:INPUT N$
11160 RETURN
11990 REM " MAKE MAZE (ALGORITHM FROM COMPUTE!)
12000 GRAPHICS 17:POKE 756,CHSET/256
12010 TRAP 12015:DIM A(3):A(0)=2:A(1)=-40:A(2)=-2:A(3)=40:WL=129:HL=0:TRAP 40000
12015 A=SC+21
12100 FOR I=1 TO 21:? #6;"         <E38080>":NEXT I:POKE A,5
12150 ? #6;"the dwarves mined":? #6;"here many years ago";
12200 J=INT(RND(1)*4):X=J
12205 B=A+A(J)
12210 IF PEEK(B)=WL THEN POKE B,J+1:POKE A+A(J)/2,HL:A=B:GOTO 12200
12240 J=(J+1)*(J<3):IF J<>X THEN 12205
12250 J=PEEK(A):POKE A,HL:IF J<5 THEN A=A-A(J-1):GOTO 12200
12255 GOSUB 18000
12260 POSITION 0,22:? #6;"翳妁犾彐魻磲铢":? #6;"赍麇祗犪钿狋蝈狍躜<E78B8D>";
12270 RESTORE
12300 FOR K=10 TO 14:READ J,C
12310 FOR A=1 TO J
12320 B=SC+40+INT(20*RND(0))*20+INT(19*RND(0))
12330 IF PEEK(B)<>0 THEN 12320
12340 POKE B,K
12350 NEXT A:NEXT K
12500 RESTORE:RETURN
12600 DATA 1,1,7,3,12,7,15,6,26,0
13990 REM " TITLE PAGE, ETC.
14000 GRAPHICS 17
14005 SC=PEEK(88)+256*PEEK(89):CHSET=PEEK(106)-8:CHSET=CHSET*256
14007 FOR I=0 TO 512:POKE CHSET+I,PEEK(57344+I):NEXT I
14010 ? #6;" 篚疱蜚栳箦<E6A0B3>":? #6
14020 ? #6
14030 GOTO 16000
14050 ? #6:? #6;"铀商虪膛峙炭 <1..9>"
14060 OPEN #1,4,0,"K:":GET #1,A:CLOSE #1
14070 SK=A-48:IF SK<1 OR SK>9 THEN 14060
14080 POKE 0,SK:GOTO 42
15990 REM " SHOW & DEFINE CHARACTERS
16000 FOR J=1 TO 7:POKE SC+J*40+80,J:NEXT J
16010 FOR J=8 TO 15:POKE SC+19+80+40*(J-7),J:NEXT J
16020 POKE 756,CHSET/256
16150 FOR J=0 TO 7:POKE CHSET+J,0:NEXT J
16160 FOR J=1 TO 10:READ K:NEXT J
16200 X=256:FOR J=0 TO 119:READ K
16250 X=X-0.81:SOUND 0,X,10,8
16300 POKE CHSET+8+J,K:NEXT J
16305 FOR I=0 TO 7:READ A:POKE CHSET+63*8+I,A:NEXT I
16310 SOUND 0,0,0,0:GOTO 14050
17111 REM " CHARACTER DATA
17112 DATA 85,42,85,42,85,42,85,0
17115 DATA 28,42,62,34,28,36,68,38
17120 DATA 28,42,62,34,28,21,18,24
17130 DATA 60,90,126,74,66,60,36,102
17140 DATA 60,90,126,74,126,66,66,195
17150 DATA 0,224,240,224,14,15,14,0
17160 DATA 4,14,14,14,32,112,112,112
17170 DATA 0,112,240,112,7,15,7,0
17180 DATA 14,14,14,4,112,112,112,32
17190 DATA 0,8,34,8,93,8,34,8
17200 DATA 1,76,18,34,68,72,50,128
17210 DATA 0,73,42,0,216,28,60,0
17220 DATA 0,2,24,36,36,24,64,0
17230 DATA 0,0,12,28,56,48,0,0
17235 DATA 0,126,126,126,122,126,126,0
17300 DATA 0,7,15,14,24,48,0,64
18000 COLOR 0:PLOT 0,21:DRAWTO 19,21:PLOT 0,22:DRAWTO 19,22:PLOT 0,23:DRAWTO 19,23:RETURN

View File

@ -0,0 +1,179 @@
100 CALL CLEAR
110 PRINT TAB(6);"**************"
120 PRINT TAB(6);"* SUPERCHASE *"
130 PRINT TAB(6);"**************"
140 CALL CHAR(96,"00183C7E7E3C18")
150 CALL COLOR(9,14,12)
160 PRINT : : : :"USE THE ARROW KEYS TO MOVE."
170 PRINT : :"TRY TO GATHER AS MANY"
180 PRINT :"TREASURES (`) IN THE MAZE"
190 PRINT :"AS POSSIBLE BEFORE THE"
200 PRINT :"ENEMY CATCHES YOU!"
210 CALL COLOR(10,5,5)
220 CALL COLOR(11,12,12)
230 CALL CHAR(120,"383810FE10387CFE")
240 CALL COLOR(12,7,12)
250 CALL CHAR(128,"383810FE10387CFE")
260 CALL COLOR(13,16,12)
270 PRINT : : :"PRESS ANY KEY TO BEGIN";
280 CALL KEY(0,K,S)
290 IF S<1 THEN 280
300 SC=0
310 LV=1
320 CALL CLEAR
330 CALL SCREEN(4)
340 FOR X=3 TO 21
350 CALL HCHAR(X,3,104,27)
360 NEXT X
370 RANDOMIZE
380 FOR I=1 TO 65
390 X=2*(INT(9*RND))+4
400 Y=2*(INT(11*RND))+4
410 CALL HCHAR(X,Y,112,5)
420 NEXT I
430 FOR I=1 TO 60
440 X=2*(INT(7*RND))+4
450 Y=2*(INT(13*RND))+4
460 CALL VCHAR(X,Y,112,5)
470 NEXT I
480 CALL HCHAR(4,4,112,5)
490 CALL VCHAR(4,4,112,5)
500 FOR I=1 TO 80
510 X=2*(INT(9*RND))+4
520 Y=2*(INT(13*RND))+4
530 CALL HCHAR(X,Y,96)
540 NEXT I
550 FOR I=1 TO 6
560 CALL HCHAR(23,2+I,ASC(SEG$("SCORE:",I,1)))
570 NEXT I
580 CALL SOUND(100,1497,2)
590 T=0
600 IF LV<8 THEN 620
610 LV=7
620 A=4
630 B=4
640 C=4
650 D=4
660 PG=112
670 CALL HCHAR(A,B,120)
680 IF T<8-LV THEN 1410
690 IF FL=0 THEN 740
700 IF FL/2=INT(FL/2)THEN 1140
710 CCX=CX
720 CCY=CY
730 FL=0
740 CALL GCHAR(C+1,D,GC)
750 IF GC=120 THEN 1760
760 IF GC=104 THEN 810
770 IF GC<>128 THEN 810
780 CX=1
790 CY=0
800 GOTO 1340
810 CALL GCHAR(C,D+1,GC)
820 IF GC=120 THEN 1760
830 IF GC=104 THEN 880
840 IF GC<>128 THEN 880
850 CX=0
860 CY=1
870 GOTO 1340
880 CALL GCHAR(C-1,D,GC)
890 IF GC=120 THEN 1760
900 IF GC=104 THEN 950
910 IF GC<>128 THEN 950
920 CX=-1
930 CY=0
940 GOTO 1340
950 CALL GCHAR(C,D-1,GC)
960 IF GC=120 THEN 1760
970 IF GC=128 THEN 1320
980 IF GC=112 THEN 1320
990 FL=FL+1
1000 IF FL/2=INT(FL/2)THEN 1040
1010 CX=CCX
1020 CY=CCY
1030 GOTO 1160
1040 CX=SGN(A-C)
1050 CY=0
1060 IF CX<>0 THEN 1080
1070 CY=SGN(D-B)
1080 CALL GCHAR(C+CX,D+CY,GC)
1090 IF GC=104 THEN 1110
1100 IF (GC=96)+(GC=112)THEN 1340
1110 CX=-1
1120 CY=0
1130 GOTO 1160
1140 FL=FL+1
1150 IF FL>1 THEN 1300
1160 CALL GCHAR(C+CX,D+CY,GC)
1170 IF (GC=112)+(GC=96)+(GC=128)THEN 1340
1180 CX=1
1190 CY=0
1200 CALL GCHAR(C+CX,D,GC)
1210 IF (GC=112)+(GC=96)+(GC=128)THEN 1340
1220 CX=-1
1230 CALL GCHAR(C+CX,D,GC)
1240 IF (GC=112)+(GC=96)+(GC=128)THEN 1340
1250 CX=0
1260 CY=-1
1270 CALL GCHAR(C,D+CY,GC)
1280 IF (GC=112)+(GC=96)+(GC=128)THEN 1340
1290 CY=1
1300 CALL GCHAR(C+CX,D+CY,GC)
1310 IF GC=104 THEN 1390 ELSE 1340
1320 CX=0
1330 CY=-1
1340 IF PG=96 THEN 1360
1350 PG=112+FL
1360 CALL HCHAR(C,D,PG)
1370 C=C+CX
1380 D=D+CY
1390 CALL HCHAR(C,D,42)
1400 PG=GC
1410 CALL KEY(1,K1,S)
1420 IF (K1<0)+(K1>5)THEN 1410
1430 CALL HCHAR(A,B,128)
1440 ON K1+1 GOTO 1540,1410,1590,1640,1410,1690
1450 IF G<>96 THEN 670
1460 CALL SOUND(100,-1,4)
1470 SC=SC+1
1480 SC$=STR$(SC)
1490 FOR I=1 TO LEN(SC$)
1500 CALL HCHAR(23,10+I,ASC(SEG$(SC$,I,1)))
1510 NEXT I
1520 T=T+1
1530 IF T<45 THEN 670 ELSE 320
1540 CALL GCHAR(A+1,B,G)
1550 IF G=104 THEN 1740
1560 IF G=42 THEN 1760
1570 A=A+1
1580 GOTO 1450
1590 CALL GCHAR(A,B-1,G)
1600 IF G=104 THEN 1740
1610 IF G=42 THEN 1760
1620 B=B-1
1630 GOTO 1450
1640 CALL GCHAR(A,B+1,G)
1650 IF G=104 THEN 1740
1660 IF G=42 THEN 1760
1670 B=B+1
1680 GOTO 1450
1690 CALL GCHAR(A-1,B,G)
1700 IF G=104 THEN 1740
1710 IF G=42 THEN 1760
1720 A=A-1
1730 GOTO 1450
1740 CALL SOUND(-100,-5,4)
1750 GOTO 670
1760 CALL SOUND(200,-6,4)
1770 FOR I=1 TO 3
1780 CALL SCREEN(16)
1790 CALL SCREEN(9)
1800 CALL SCREEN(8)
1810 NEXT I
1820 PRINT "GOT CAUGHT!!!"
1830 PRINT "TRY AGAIN? (Y/N)";
1840 CALL KEY(0,K,S)
1850 IF K=89 THEN 300
1860 IF K<>78 THEN 1840
1870 CALL CLEAR
1880 END

View File

@ -0,0 +1,108 @@
40 gosub 14000
42 poke 1,0:poke 2,0
45 gosub 12000:clr:sk=peek(0):p=peek(1)*256+peek(2)
100 goto 10000
1000 m$=""
1110 poke dd,127:p1=peek(d1) and ad:p2=peek(d2) 'legge joystick
1120 if p1=59 then m$="+{left}{up}":print m$;:y=y-1:c$="{down}":cx=0:cy=1:goto 1160: 'rem bugfix changed 58 to 59 (rms)
1130 if p2=119 then m$="+{left}{rght}":print m$;:x=x+1:c$="{left}":cx=-1:cy=0:goto 1160
1140 if p1=47 then m$="+{left}{left}":print m$;:x=x-1:c$="{rght}":cx=1:cy=0:goto 1160: 'rem bugfix changed 46 to 47 (rms)
1150 if p1=55 then m$="+{left}{down}":print m$;:y=y+1:c$="{up}":cy=-1:cx=0:goto 1160: 'rem bugfix changed 54 to 55 (rms)
1155 goto 1300
1160 if fnch(s)=wl then print c$;:x=x+cx:y=y+cy:goto 1300
1170 f$=f$+right$(m$,1)
1180 if fnch(s)=di then p=p+100*(el-s):pc=pc+1
1190 if fnch(s)=sp then p=p+50*(el-s):pc=pc+1
1200 if fnch(s)=cl then p=p+30*(el-s):pc=pc+1
1210 if fnch(s)=he then p=p+20*(el-s):pc=pc+1
1220 if fnch(s)=ci then p=p+10*(el-s):pc=pc+1
1250 j$=str$(p*sk):for j=1 to len(j$):poke sc+j+489,asc(mid$(j$,j,1)):next
1300 print"Q{left}";
1310 if pc>=61 then print dn$"no more treasure.";:goto 7000
1900 return
2000 if len(f$)>=30 then gosub 3000
2005 fm=fm+1:if fm/s<>int(fm/s) then return
2006 for h=1 to skl:
2007 poke fnplot(0),32
2010 j$=left$(f$,1):f$=mid$(f$,2)
2030 poke v,15:poke s1,254-len(f$):for m=1 to 10:next:poke 36875,0
2100 if j$="{up}"then yf=yf-1:goto 2200
2110 if j$="{rght}"then xf=xf+1:goto 2200
2120 if j$="{down}"then yf=yf+1:goto 2200
2130 if j$="{left}"then xf=xf-1:goto 2200
2150 goto 2200
2200 poke fnpl(0),42
2205 next
2210 return
3000 poke fnpl(0),32
3007 s=s-1:if s<1 then s=1
3008 j$=str$(el-s):for j=1 to len(j$):poke sc+j+502,asc(mid$(j$,j,1)):next
3010 for c= 1 to 10:j$=mid$(f$,c,1):if j$="{up}"then yf=yf-1:goto 3100
3020 if j$="{down}" then yf=yf+1:goto 3100
3030 if j$="{rght}" then xf=xf+1:goto 3100
3040 if j$="{left}" then xf=xf-1:goto 3100
3100 poke fnpl(0),42
3150 if c/sk=int(c/sk) then gosub 1000
3310 for m=c to c+2:poke s2,m*3+130:for n=1 to 10:next:next:poke s2,0
3350 poke fnplot(0),32
3400 next
3500 f$=mid$(f$,el):return
4000 if x=xf and y=yf then print dn$"a tasty morsel indeed!";:gosub 6000:goto 11000
4500 return
6000 poke 36877,220:for l=15 to 0 step -1:poke 36878,l:for m=1 to 300:next:next:poke 36877,0:poke 36878,15
6010 return
7000 for k=1 to 30
7005 poke 36876,220:for l=1 to 5:next:poke 36876,0:for l=1 to 5:next:poke 36876,200:for l=1 to 5:next
7010 poke 36876,0:for l=1 to 5:next:next
7100 j=int(p/256):poke 1,j:poke 2,p-j*256
7200 sk=peek(0)+1:poke 0,sk:goto 45
7999 goto 7000
8000 for m=1 to 500:gosub 1000:if len(f$)<20 then next
8010 for j=8142 to 8142+20:poke j,32:next
8100 gosub 1000:gosub 2000:gosub 4000:goto 8100
10000 dn$="{home}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{rvon}{wht}"
10030 s=10:pc=0:sc=7680:ro=22
10050 def fnpl(xx)=(yf*ro+xf)+sc
10060 def fnch(xx)=peek((y*ro+x)+sc)
10077 so=10:poke 36878,15
10100 dd=37154:d1=37151:d2=37152:ad=63
10110 wl=102:di=90:sp=65:cl=88:he=83:ci=87:el=11
10120 v=36878:s1=36875:s2=36876
10500 ti$="000000"
10600 print dn$" go !!!!!! "
10700 print dn$"{rvof}{down}{blk}score:{wht} {blk}speed:{wht} 1{home}"
10800 print"{home}{rght}{down}";:x=1:y=1:xf=1:yf=1
10900 goto 8000
11000 rem game over
11010 poke 37154,255 ' joystick, "rimette a posto la candela"
11105 print:print"{down}time was ";mid$(ti$,3,2);" minutes, ";right$(ti$,2);" seconds"
11110 print"play again ? {CBM-@}{left}";
11120 get j$:if j$="" then 11120
11130 print j$:if j$="n"then end
11140 if j$="y" then run
11150 print:print"{up}";:goto11110
12000 dim a(3):a(0)=2:a(1)=-44:a(2)=-2:a(3)=44:wl=102:hl=32:sc=7680:a=sc+23:j=rnd(-ti) ' sc:inizio schermo
12010 poke 36879,110 'colore
12100 print chr$(142)"{clr}{yel}{rvof}";:for i = 1 to 21:print"{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}{CBM-+}":next:poke a,4
12200 j=int(rnd(1)*4):x=j
12205 b=a+a(j)
12210 if peek(b) = wl then poke b,j:poke a+a(j)/2,hl:a=b:goto 12200
12240 j=(j+1)*-(j<3):ifj<>xthen12205
12250 j=peek(a):poke a,hl:if j<4 then a=a-a(j):goto 12200
12300 print"{home}{down}{rght}V"
12305 read j,k,c:if j<0 then 12500
12310 for a=1 to j
12320 b=int(rnd(1)*410):if(b-21)/22=int((b-21)/22) then 12320
12330 if peek(b+7702)<>32 then 12320
12340 poke b+7702,k:poke b+38422,c
12350 next:goto 12305
12400 data 2,90,1,4,65,0,7,88,5,9,83,2,39,87,3,-1,0,0
12450 print"12450:p="p
12500 return
14000 poke 36879,46 'colore
14010 print chr$(14)"{clr}{wht}{down}{down}{down}{down}{down}{down}{rght}{rght} {CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@} {rvon}SuperChase{rvof}"
14050 print"{down}{down}{down}{down}{down} Skill Level (1-9):{rvon} {rvof}{left}{left}";
14060 get j$:if j$ = ""then 14060
14070 sk =val(j$):if sk<1 or sk>9 then 14060
14075 poke 0,sk ' jump to USR...?
14080 print sk:poke 0,sk:return