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

   10 CLEAR 512,15999
   20 GOSUB 8000: GOSUB 7000: GOTO 40
   30 GOSUB 9000: GOSUB 8000
   40 GOSUB 6000: GOSUB 6500: GOSUB 4600
   50 REM LESEZYKLUS 1
   60 IF SP<1 AND EK=0 THEN EK=1: GOTO 30
   70 E$=INKEY$
   80 IF LEN(E$)<1 THEN 70
   90 E=ASC(E$)
  100 IF E=13 THEN GOSUB 1000: GOTO 60
  110 GOSUB 3000
  120 IF K<K1 OR K>K2 THEN 140
  130 IF L>=L1 AND L<=L2 THEN 60
  140 W=0: EK=0
  150 REM LESEZYKLUS 2
  160 W=W+1:E$=INKEY$
  170 IF PEEK(634)<>0 THEN GOSUB 4400: GOTO 80
  180 IF RND(1)<S*W THEN GOSUB 4000
  190 IF LEN(E$)<1 THEN 160
  200 E=ASC(E$)
  210 IF E=13 THEN GOSUB 1000: GOTO 160
  220 GOSUB 3000: IF EK=2 THEN 30
  230 GOTO 160
 1000 REM KAPSEL GEZUENDET
 1010 IF SP<1 THEN RETURN
 1020 POKE 600,1:SP=SP-1:PK=0:GOSUB 4800
 1030 Z1=ASC(MID$(G$(K),L-1,1))
 1040 IF Z1<128 THEN 1080
 1050 Z1=Z1*RND(1)+80-L
 1060 IF Z1<128 THEN Z1=32: EK=3
 1070 IF Z1>255 THEN Z1=255
 1080 Z2=ASC(MID$(G$(K),L+1,1))
 1090 IF Z2<128 THEN 1130
 1100 Z2=Z2*RND(1)+40+L
 1110 IF Z2<128 THEN Z2=32: EK=3
 1120 IF Z2>255 THEN Z2=255
 1130 G$(K)=LEFT$(G$(K),L-2)+CHR$(Z1)+" "+CHR$(Z2)+RIGHT$(G$(K),37-L)
 1140 PRINT AT (K,1);G$(K)
 1150 PRINT AT (K,L);""
 1160 Z1=ASC(MID$(G$(K-1),L,1))
 1170 IF Z1<128 THEN 1230
 1180 Z1=Z1*RND(1)+80-2*K
 1190 IF Z1<128 THEN Z1=32: EK=3
 1200 IF Z1>255 THEN Z1=255
 1210 G$(K-1)=LEFT$(G$(K-1),L-1)+CHR$(Z1)+RIGHT$(G$(K-1),38-L)
 1220 PRINT AT (K-1,1);G$(K-1)
 1230 Z2=ASC(MID$(G$(K+1),L,1))*RND(1)+40+2*K
 1240 IF Z2<128 THEN 1300
 1250 Z2=Z2*RND(1)+40+2*K
 1260 IF Z2<128 THEN Z2=32: EK=3
 1270 IF Z2>255 THEN Z2=255
 1280 G$(K+1)=LEFT$(G$(K+1),L-1)+CHR$(Z2)+RIGHT$(G$(K+1),38-L)
 1290 PRINT AT (K+1,1);G$(K+1)
 1300 W=W+300
 1310 RETURN
 2000 REM MAUER
 2010 POKE 600,2: W=W+50
 2020 RETURN
 3000 REM BEWEGUNG
 3010 M=0:N=0
 3020 IF E=8 THEN N=-1: GOTO 3070
 3030 IF E=9 THEN N=1: GOTO 3070
 3040 IF E=10 THEN M=1: GOTO 3070
 3050 IF E=11 THEN M=-1: GOTO 3070
 3060 RETURN
 3070 IF (K+M=0)OR(K+M=21)OR(L+N=0)OR(L+N=39) THEN EK=2: RETURN
 3080 IF MID$(G$(K+M),L+N,1)=" " THEN K=K+M:L=L+N:ELSE M=0:N=0
 3090 PRINT AT (K,L);""
 3100 IF (M<>0)OR(N<>0) THEN PRINT AT (K-M,L-N);" "
 3110 IF M=0 AND N=0 THEN GOSUB 2000
 3120 IF PEEK(601)=0 THEN GOSUB 4800
 3130 RETURN
 4000 REM TEST AUF WACHE
 4010 IF PEEK(601)>15 THEN RETURN
 4020 GOSUB 4200: RETURN
 4200 REM WACHE IM ANMARSCH
 4210 POKE 600,4: PK=1
 4220 PRINT "Die Wache ist im Anmarsch."
 4230 RETURN
 4400 REM WACHE ERWISCHT
 4410 POKE 634,0: POKE 600,8: PK=2: EK=0
 4420 PRINT "Die Wache hat Sie erwischt!"
 4430 GOSUB 6500: GOSUB 4600
 4440 RETURN
 4600 REM GEFANGNIS ANZEIGEN
 4610 FOR I=1 TO 20: PRINT AT (I,1);G$(I): NEXT I
 4620 PRINT AT (K,L);""
 4630 RETURN
 4800 REM SPRENGKAPSELZAHL
 4810 IF PK=3 THEN RETURN
 4820 PK=3: IF SP>0 THEN 4850
 4830 PRINT "Sie haben keine Sprengkapseln mehr."
 4840 RETURN
 4850 IF SP>1 THEN 4880
 4860 PRINT "Sie haben noch eine Sprengkapsel."
 4870 RETURN
 4880 PRINT "Sie haben noch";SP;"Sprengkapseln."
 4890 RETURN
 5000 REM SPEICHERANZEIGE
 5010 K$="0123456789ABCDEF"
 5020 INPUT "Adr.:";A
 5030 PRINT A;":";
 5040 FOR I=A TO A+100
 5050 B=PEEK(I):C=INT(B/16)+1:D=B-C*16+17
 5060 H$=MID$(K$,C,1)+MID$(K$,D,1)
 5070 PRINT " ";H$;
 5080 NEXT I
 5090 GOTO 5020
 6000 CLS: EK=0: PK=0
 6010 REM ALLES RUECKSETZEN
 6020 WINDOW 22,23,0,39
 6030 GOSUB 4800
 6040 REM VORBEREITUNG
 6050 POKE 600,0: POKE 601,0
 6060 POKE 610,40: POKE 611,0
 6070 DOKE 512,16340            
 6080 POKE 620,4: POKE 621,3
 6090 POKE 622,0: POKE 623,0
 6100 POKE 630,50: POKE 631,8
 6110 POKE 632,0: POKE 633,0
 6120 POKE 634,0
 6130 POKE 640,200: POKE 641,0
 6140 DOKE 514,16000
 6150 OUT 129,167: OUT 129,128
 6160 OUT 128,3: OUT 136,128
 6170 RETURN
 6500 REM GRUNDBILD
 6510 DATA  ""
 6520 DATA "               "
 6530 DATA "                     "
 6540 DATA "                  "
 6550 DATA "                          "
 6560 DATA "          "
 6570 DATA "                             "
 6580 DATA "                 "
 6590 DATA "                "
 6600 DATA "                        "
 6610 DATA "                          "
 6620 DATA "             "
 6630 DATA "                           "
 6640 DATA "             "
 6650 DATA "                          "
 6660 DATA "              "
 6670 DATA "                           "
 6680 DATA "       "
 6690 DATA "                         "
 6700 DATA " "
 6710 REM BS-ANFANGSZUSTAND
 6720 RESTORE 6500
 6730 FOR I=1 TO 20: READ G$(I): NEXT I
 6740 K=KA: L=LA: W=0
 6750 RETURN
 7000 REM
 7010 REM EXPL.-GERAEUSCH '3FD4"=16340
 7020 DATA "E5F53E85D380215A02CB3E200B"
 7030 DATA "DB82F680325A023E9518063E49"
 7040 DATA "30023E25D380F1E1FBED4D"
 7050 REM LAENGE DER EXPL. '3FAC'=16300
 7060 DATA "216302CB61280B168135C0"
 7070 DATA "1603CB81CBA1C9"
 7080 DATA "3A62027716875ACBE1C9"
 7090 REM MAUERANSTOSS '3F70'=16240
 7100 DATA "CB69200ACBE9216D027E2377180A"
 7110 DATA "216F023520092B352810"
 7120 DATA "233A6C02772B7EE6012809"
 7130 DATA "16051E64C9CB89CBA91603C9"
 7140 REM WACHE KOMMT '3F20'=16160
 7150 DATA "CB71200ACBF12177027E2377180A"
 7160 DATA "2179023520092B352818"
 7170 DATA "233A76027716055E2B7EE6012805
 7180 DATA "3A7602935F7BC6205FC9"
 7190 DATA "CB91CBB11603232336FFC9"
 7200 REM ERWISCHT '3ED0'=16080
 7210 DATA "218102CB792006CBF93A80027735"
 7220 DATA "280B5E3A800293C6145F1605C9"
 7230 DATA "CB99CBB91603C9"
 7240 REM UB-BEHANDLUNG '3E80'=16000
 7250 DATA "E5F52158027E360023B6282C"
 7260 DATA "77C5D5E54F1600CB59C4D03ECB51"
 7270 DATA "C4203FCB49C4703FCB41C4AC3F"
 7280 DATA "E1717AB72809D380E6042803"
 7290 DATA "7BD380D1C1F1E1FBED4D"
 7300 RESTORE 7010: I0=16340
 7310 FOR I1=1 TO 3:GOSUB 7900:NEXT I1
 7320 RESTORE 7050:I0=16300
 7330 FOR I1=1 TO 3:GOSUB 7900:NEXT I1
 7340 RESTORE 7090:I0=16240
 7350 FOR I1=1 TO 4:GOSUB 7900:NEXT I1
 7360 RESTORE 7140:I0=16160
 7370 FOR I1=1 TO 5:GOSUB 7900:NEXT I1
 7380 RESTORE 7200:I0=16080
 7390 FOR I1=1 TO 3:GOSUB 7900:NEXT I1
 7400 RESTORE 7240:I0=16000
 7410 FOR I1=1 TO 5:GOSUB 7900:NEXT I1
 7420 REM ZELLE
 7430 DATA 9,11,18,20
 7440 REM SPRENGKAPSELN
 7450 DATA 30
 7460 REM ANFANGSPOSITION
 7470 DATA 10,19
 7480 DIM G$(20)
 7490 REM ALLES RUECKSETZEN
 7500 RESTORE 7430
 7510 READ K1,K2,L1,L2,SP,KA,LA
 7520 RETURN
 7900 REM HEX ABSPEICHERN
 7910 READ P$:FOR I7=1 TO LEN(P$) STEP 2
 7920 I8=ASC(MID$(P$,I7,1))-48
 7930 IF I8>9 THEN I9=16*(I8-7): ELSE I9=16*I8
 7940 I8=ASC(MID$(P$,I7+1,1))-48
 7950 IF I8>9 THEN I9=I9+I8-7: ELSE I9=I9+I8
 7960 POKE I0,I9:I0=I0+1:NEXT I7
 7970 RETURN
 8000 REM ANFANGSILD
 8010 CLS
 8020 PRINT AT (0,7);"Fleischer's Computerspiel"
 8030 PRINT AT (2,0);""
 8040 PRINT AT (3,0);"         G E F A E N G N I S          "
 8050 PRINT AT (4,0);""
 8060 PRINT AT (9,0);"Bitte Schwierigkeitsgrad von 1 (leicht)"
 8070 PRINT AT (10,0);"bis 9 (schwer) auswaehlen:"
 8080 E$=INKEY$:IF LEN(E$)<1 THEN GOTO 8080
 8090 S=(1+VAL(E$))*.00005
 8100 SP=30-2*VAL(E$)
 8110 PRINT AT (6,0);"Die Bedienung ist  denkbar einfach.  Sie"
 8120 PRINT AT (7,0);"haben die Aufgabe, aus  einem Gefaengnis"
 8130 PRINT AT (8,0);"auszubrechen.  Auf  dem  Bildschirm  ist"
 8140 PRINT AT (9,0);"der Grundriss  des  Gefaengnisses darge-"
 8150 PRINT AT (10,0);"stellt. Mit den Tasten  <,>,, wird die"
 8160 PRINT AT (11,0);"Fluchtrichtung vorgegeben. Mit der Taste"
 8170 PRINT AT (12,0);"'ENTER'  kann eine Kapsel  zur Sprengung"
 8180 PRINT AT (13,0);"einer den  Weg  versperrenden  Mauer ge-"
 8190 PRINT AT (14,0);"zuendet werden.  Falls  die Wachen Ihren"
 8200 PRINT AT (15,0);"Ausbruch bemerken,  werden Sie wieder in"
 8210 PRINT AT (16,0);"die Zelle  gesteckt  und die Loescher in"
 8220 PRINT AT (17,0);"den Mauern  werden  schnell wieder zuge-"
 8230 PRINT AT (18,0);"mauert."
 8240 PRINT AT (20,0);"Bitte warten. Es geht gleich los."
 8250 PRINT AT (23,5);"Viel Spass. Viel Erfolg!"
 8260 RETURN
 9000 REM PROGAMMENDE
 9010 OUT 136,0: OUT 129,3: OUT 128,3
 9020 WINDOW:CLS
 9030 IF EK<>2 THEN 9130
 9040 PRINT AT (5,5);"Sie sind erfolgreich getuermt."
 9050 IF SP>0 THEN 9080
 9060 PRINT AT (10,0);"Sie haben alle Sprengkapseln verbraucht."
 9070 GOTO 9160
 9080 IF SP>1 THEN 9110
 9090 PRINT AT (10,1);"Sie haben nur noch eine Sprengkapsel."
 9100 GOTO 9160
 9110 PRINT AT (10,2);"Sie haben noch",SP,"Sprengkapseln."
 9120 GOTO 9160
 9130 PRINT AT (5,6);"Die Lage ist hoffnungslos."
 9140 PRINT AT (10,2);"Alle Sprengkapseln sind verbraucht."
 9150 PRINT AT (15,1);"Sie kommen sowieso nicht mehr heraus."
 9160 PRINT AT (22,5);"Durch Druecken einer beliebigen"
 9170 PRINT AT (23,5);"Taste beginnt das Spiel von vo{n."
 9180 E$=INKEY$
 9190 E$=INKEY$:IF LEN(E$)<1 THEN GOTO 9190
 9200 RETURN