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