snake_sss.tap
snake_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

   10 WINDOW
  150 DIM R(4),HI(3),SP(8,5),U(4),UM(4)
  160 DATA-1,-40,1,40
  180 RESTORE
  190 FOR I=1 TO 4:READ R(I):NEXT I
  220 GOSUB 1410
  230 PAPER 4:INK 5:CLS:BORDER 2
  240 PRINT AT(12,5);"STAGE NR. 1, 2 or 3 ?"
  250 PRINT AT(0,0);" ":Q$=INKEY$
  260 IF Q$<"1"OR Q$>"3"THEN 250 ELSE ST=ASC(Q$)-48
  270 H=INT(ST)*10
  280 E=-4379:ER=-1:C=-1:KR=0:SC=0:T=0:A=-4380:TH=-50
  300 PAPER 5:INK 4:CLS:BORDER 4
  310 GOSUB 700:INK 4
  320 POKE A,195
  330 POKE A+1,207
  340 PRINT AT(23,3);"HI : ",HI(ST)
  350 PRINT AT(23,15);"SCORE : ",SC
  360 PRINT AT(23,29);"STAGE : ",ST
  370 FOR I=1 TO 1500:NEXT I:BEEP:BEEP:BEEP
  380 GOSUB 400
  390 END
  400!SPIELSCHLEIFE
  430 FOR AA=0 TO 5:NEXT AA:AA=JOYST$(1)
  440 IF AA=8 THEN C=-40:GOTO 476
  450 IF AA=2 THEN C=1  :GOTO 476
  460 IF AA=4 THEN C=40 :GOTO 476
  470 IF AA=1 THEN C=-1 :GOTO 476
  471 LV=NOT LV:IF ST=1 OR(ST=2 AND LV)THEN 430
  476 IF E<-5120 OR E>-4160 THEN 1010
  480 IF(PEEK(A+C)=255)OR(PEEK(A+C)=207)THEN 1010
  490 IF(PEEK(A+C)>48)AND(PEEK(A+C)<58)THEN T=Z+1:GOSUB 1300
  500 POKE A,207:A=A+C:T=T-1
  510 POKE A,195
  515 IF PEEK(E)=32 OR PEEK(E)=255 THEN 530
  520 POKE E,32 
  530 IF T>0 THEN 430
  540 IF PEEK(E+ER)=207 THEN 580
  550 FOR I=1 TO 4
  560 IF PEEK(E+R(I))=207 THEN ER=R(I):GOTO 580
  570 NEXT I
  580 E=E+ER
  590 IF T=TH THEN GOSUB 610
  600 GOTO 430
  610!ZAHL GENERIEREN
  640 Z=INT(9*RND(1))+1
  650 P=INT(880*RND(1))+(-5161)
  660 IF PEEK(P)<>32 THEN 640
  670 POKE P,Z+48:BEEP:BEEP
  690 RETURN
  700 INK 2:FOR I=0 TO 38
  750 PRINT AT(0,I);CHR$(255)
  760 PRINT AT(22,I);CHR$(255)
  770 NEXT I
  780 FOR I=0 TO 22
  790 PRINT AT(I,0);CHR$(255)
  800 PRINT AT(I,39);CHR$(255)
  810 NEXT I
  820 FOR I=5 TO 1 STEP-1
  830 SP(2,I)=-4910+I*40
  840 SP(4,I)=-4430-I*40
  850 SP(6,I)=-4892+I*40
  860 SP(8,I)=-4412-I*40
  870 NEXT I
  880 FOR I=5 TO 1 STEP-1
  890 SP(1,I)=-4676+I*1
  900 SP(3,I)=-4664-I*1
  910 SP(5,I)=-4658+I*1
  920 SP(7,I)=-4646-I*1
  930 NEXT I
  940 FOR I=1 TO 11
  950 PRINT AT(5+I,10);CHR$(255)
  960 PRINT AT(5+I,28);CHR$(255)
  970 PRINT AT(11,4+I);CHR$(255)
  980 PRINT AT(11,22+I);CHR$(255)
  990 NEXT I
 1000 RETURN
 1010 U(1)=A+1:U(2)=A+40:U(3)=A-1:U(4)=A-40
 1012 FOR I=1 TO 4:UM(I)=PEEK(U(I)):NEXT I
 1014 Z=42
 1016 FOR I=1 TO 15:BEEP
 1018 FOR K=1 TO 4
 1020 POKE U(K),Z:NEXT K
 1021 FOR K=1 TO 4
 1022 POKE U(K),32:NEXT K:NEXT I
 1023 FOR I=1 TO 4
 1024 POKE U(I),UM(I):NEXT I
 1040 T=SC+1
 1050 POKE A,42:Z=208
 1060 IF PEEK(A+ER)=207 THEN 1100
 1070 ER=0:FOR I=1 TO 4
 1080 IF PEEK(A+R(I))=207 THEN ER=R(I)
 1090 NEXT I:IF ER=0 THEN T=0:GOTO 1150
 1100 A=A+ER
 1102 IF Z>223 THEN Z=208
 1105 IF PEEK(A+ER)=255 THEN 1120
 1110 POKE A,Z:BEEP
 1120 T=T-1:Z=Z+1
 1130 IF T>0 THEN 1060
 1150 FOR I=1 TO 2000:NEXT I
 1160 PAPER 7:INK 2:CLS:BORDER 2:PRINT AT(0,0);" "
 1170 PRINT INK 5;AT(3,15);"STAGE ",ST
 1180 PRINT INK 1;AT(4,15);"========"
 1190 PRINT INK 6;AT(7,10);"SCORE ",SC
 1200 IF SC>HI(ST)THEN HI(ST)=SC
 1210 PRINT INK 6;AT(11,10);"HIGH-SCORE :",HI(ST)
 1220 PAUSE 10:IF SC=HI(ST)THEN PRINT AT(18,5);"YOUR SCORE IS HIGH-SCORE !":BEEP
 1230 PRINT INK 1;AT(22,5);"HIT ANY KEY TO CONTINUE !"
 1240 IF PEEK(36)=0 OR PEEK(36)=127 THEN 1240
 1250 GOTO 180
 1300 SC=SC+Z
 1310 PRINT AT(23,15);"SCORE : ",SC
 1320 IF(KR<4)AND(SC>=H)THEN KR=KR+1:GOSUB 1370:H=H+H/KR
 1330 RETURN
 1370 FOR I=1 TO 8
 1380 POKE SP(I,KR),32:POKE SP(I,KR)-1024,52
 1390 NEXT I:GOSUB 2350:TH=-50+INT(HI(ST)/4)
 1400 RETURN
 1410!TITELBILD
 1460 PAPER 5:INK 4:CLS:BORDER 5:RESTORE 2220:PRINT AT(0,0);" "
 1470 INK 2:FOR I=1 TO 5
 1480 READ Z
 1490 FOR K=1 TO Z
 1500 READ Y,X
 1510 PRINT AT(X,Y);""
 1530 GOSUB 2310:!TASTENABFRAGE
 1540 NEXT K
 1550 NEXT I
 1560 INK 4
 1570 FOR I=16 TO 19
 1580 READ A$
 1590 FOR K=1 TO 21
 1600 PRINT AT(I,K+10);MID$(A$,K,1):FOR P=1 TO 5:NEXT P
 1610 NEXT K
 1640 NEXT I
 1650 PRINT AT(21,10);"Ready ? Then hit any key !"
 1660 GOSUB 2310:Z=128
 1670 POKE-4397,Z+1
 1680 POKE-4356,Z+2
 1690 POKE-4317,Z+3
 1700 POKE-4358,Z+4:Z=Z+4
 1710 A=-4166:POKE A,195
 1720 E=A:ER=-1
 1730 FOR I=1 TO 5
 1740 E=E+1:POKE E,207
 1750 GOSUB 2310
 1760 NEXT I
 1770 GOSUB 2120
 1780 FOR K=1 TO 4
 1790 S=R(K)
 1800 IF K=1 THEN X=2:Y=19:P=-4358:Z=Z+1
 1810 IF K=2 THEN X=3:Y=18:P=-4397:Z=Z+1 
 1820 IF K=3 THEN X=4:Y=19:P=-4356:Z=Z+1
 1830 IF K=4 THEN X=3:Y=20:P=-4317:Z=Z+1
 1835 IF Z>255 THEN Z=128
 1840 POKE P,Z
 1850 IF ABS(S)=40 THEN RZ=9:GOTO 1870
 1860 RZ=27
 1870 FOR I=1 TO RZ
 1880 GOSUB 2310
 1900 POKE A,207:A=A+S
 1910 POKE A,195:POKE E,32
 1920 IF PEEK(E+ER)=103 THEN 1960
 1930 FOR J=1 TO 4
 1940 IF PEEK(E+R(J))=207 THEN ER=R(J):GOTO 1960
 1950 NEXT J
 1960 E=E+ER
 1970 GOSUB 2030
 1980 NEXT I
 1990 POKE P,Z
 2000 NEXT K
 2010 GOTO 1780
 2030 IF B=-4760 THEN GOSUB 2120
 2040 IF(PEEK(B-1)>52)AND(PEEK(B-1)<57)THEN T=N+1
 2050 POKE B,207:B=B-1:T=T-1
 2060 POKE B,195
 2070 POKE F,32
 2080 IF T>0 THEN 2100
 2090 F=F-1
 2100 RETURN
 2120 FOR J=0 TO 18
 2130 POKE-4760+J,32
 2140 NEXT J
 2150 B=-4602:F=B+1
 2160 POKE B,195:POKE F,207
 2170 N=INT(4*RND(1))+5
 2180 L=INT(11*RND(1))+(-4618)
 2190 POKE L,48+N:BEEP:POKE L-60,48+N
 2200 RETURN
 2210!
 2220 DATA 12,6,0,5,0,4,0,3,1,3,2,4,3,5,3,6,4,6,5,5,6,4,6,3,6  
 2230 DATA 19,10,6,10,5,10,4,10,3,10,2,10,1,10,0,11,1,11,2,12,3 
 2235 DATA 13,4,13,5,14,6,14,5,14,4,14,3,14,2,14,1,14,0 
 2240 DATA 16,17,6,17,5,18,4,18,3,19,2,19,1,20,0,21,1,21 
 2245 DATA 2,22,3,22,4,23,5,23,6,19,3,20,3,21,3 
 2250 DATA 14,26,6,26,5,26,4,26,3,26,2,26,1,26,0,30 
 2255 DATA 0,29,1,28,2,27,3,28,4,29,5,30,6,15,36,6,35,6,34,6,33 
 2260 DATA 6,33,5,33,4,33,3,33,2,33,1,33,0,34,0,35,0,36,0,34,3,35,3 
 2270 DATA "Copyright  4/1985    " 
 2280 DATA "by  Uwe Ahrendt       "
 2290 DATA "7050 Leipzig         "
 2295 DATA "E.-Thaelmann-Str.172b"
 2300 DATA-1,-40,1,40  
 2310 B$=""
 2320 B$=INKEY$
 2330 IF B$=""THEN RETURN
 2340 GOTO 230
 2350 Y$=" GRATULATION "
 2360 X$=""
 2370 FOR K=1 TO 20
 2380 PRINT INK 4;AT(0,10);Y$:PRINT INK 4;AT(22,10);Y$:BEEP:PAUSE 1
 2390 PRINT INK 2;AT(22,10);X$:PRINT INK 2;AT(0,10);X$:PAUSE 1
 2400 NEXT K:RETURN