Direkter Monitoraufruf geändert
CALL*F50B KILL
die INKEY Routine verhält sich im Vergleich zum A2 Monitor etwas behäbig,
vielleicht hätte man die Speicherzelle 0x0004 erst auf 0 setzen sollen,
wie implizit beim A2 Monitor schon erreicht.
---
Sie fuehren 3 Flakstellungen. Mittels Kursortasten
koennen sie die Stellung wechseln. Als Feuertaste
dient >SPACE<.
Sie duerfen keinen der 99 Bomber durchlassen.
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)
10 REM BILDS.AUFBAU
20 GOTO 110
30 POKE 27,00
40 POKE 28,236
50 POKE 29,255
60 POKE 30,239
70 POKE 35,AB
80 CALL*F50B
90 WINDOW
100 RETURN
110 AB=32:GOSUB 30:GOSUB 920
120 PAUSE 40:F=5
130 AB=32:GOSUB 30
140 PRINT AT(0,0);" "
150 FOR I=0 TO 31:PRINT AT(7,I);CHR$(250):NEXT I
160 FOR I=8 TO 31:PRINT AT(I,21);CHR$(161):NEXT I
170 PRINT AT(1,2);"MRB Z 1013 H.&> N.BARTSCH"
180 PRINT AT(3,2);">GAME BASIC 6500 GERA"
190 PRINT AT(5,2);" 6,7 kByte Otto-Dix-Str.14"
200 PRINT AT(9,0);"Sie fuehren 3 Flak-"
210 PRINT AT(11,0);"stellungen. Mittels "
220 PRINT AT(13,0);"Kursortasten koennen"
230 PRINT AT(15,0);"sie die Stellung"
240 PRINT AT(17,0);"wechseln. Als Feuer-"
250 PRINT AT(19,0);"taste dient >SPACE<."
260 PRINT AT(21,0);"Sie duerfen keinen"
270 PRINT AT(23,0);"der 99 Bomber durch-"
280 PRINT AT(25,0);"lassen."
290 WINDOW 14,19,22,31
300 PRINT;"CSAVE :"
310 PRINT:PRINT;"BREAK :"
320 PRINT:PRINT;"START :"
330 PRINT AT(19,22);" "
340 LL=18
350 PRINT AT(LL,30);CHR$(203)
360 I$=INKEY$:IF I$=""THEN 360
370 IF I$=CHR$(85)THEN PRINT AT(LL,30);" ":LL=LL-2
380 IF I$=CHR$(32)THEN PRINT AT(LL,30);" ":LL=LL+2
390 IF LL<14 THEN LL=14
400 IF LL>18 THEN LL=18
410 IF I$=CHR$(13)THEN 430
420 GOTO 350
430 WINDOW
440 IF LL= 14 THEN GOSUB 3710:GOTO 300
450 IF LL= 16 THEN AB=32:GOSUB 30:END
460 IF LL= 18 THEN 480
470 REM SPIELAUFBAU
480 C=29:Z=1:G=15:B=0:L=0:N=0
490 AB=32:GOSUB 30:WINDOW 10,31,0,31
500 PRINT AT(1,2);"SCHUSSZAHL:"
510 PRINT AT(2,2);"TREFFER :"
520 PRINT AT(3,2);"BOMBERZAHL:"
530 PRINT AT(1,26);CHR$(174)+CHR$(158)+CHR$(173)
540 PRINT AT(2,26);CHR$(159)+CHR$(32)+CHR$(192)
550 PRINT AT(3,26);CHR$(171)+CHR$(248)+CHR$(172)
560 FOR X=13 TO 26
570 PRINT AT (X,1);":":PRINT AT (X,29);":"
580 NEXT X
590 FOR I=2 TO 28
600 PRINT AT (26,I);"_"
610 NEXT I
620 PRINT AT(10,0);" "
630 FOR I=0 TO F
640 PRINT AT(28,0);">>>ACHTUNG 99BOMBER GREIFEN AN!"
650 PAUSE 5
660 PRINT AT(28,0);" "
670 FOR D=0 TO 3
680 BEEP
690 PAUSE 1
700 NEXT D
710 NEXT I
720 F=1
730 PRINT AT(26,G);CHR$(157)
740!BOMBERBERECHNUNG
750 IF N=99 THEN 9190
760 E=INT(16*RND(1)+10)
770 IF C=28 THEN N=N+1
780 C=C-1
790 PRINT AT(M,H);CHR$(32)
800 PRINT AT(E,C);CHR$(148)
810 IF C=1 THEN 3430
820 IF C=G+1 THEN PRINT AT(2,27);CHR$(148):ELSE PRINT AT(2,27);" "
830 M=E:H=C
840 GOSUB 2900
850 IF C=G THEN GOSUB 3240
860 IF T$=CHR$(32)THEN GOSUB 3010
870 PRINT AT(1,13);B
880 PRINT AT(2,13);L
890 PRINT AT(3,13);N
900 GOTO 730
910!UP
920 AB=42:GOSUB 30:PRINT AT(0,T0);CHR$(42)
930 T=255:TA=190:TB=143:TC=191:TD=142
940 RESTORE 980
950 FOR I=1 TO 6
960 READ EC
970 A=-5015+EC
980 DATA 1,2,3,11,12,13
990 POKE A,T:NEXT I
1000 RESTORE 1040
1010 FOR I=1 TO 2
1020 READ EC
1030 A=-5016+EC
1040 DATA 1,11
1050 POKE A,TA:NEXT I
1060 RESTORE 1100
1070 FOR I=1 TO 2
1080 READ EC
1090 A=-5012+EC
1100 DATA 1,11
1110 POKE A,TB:NEXT I
1120 RESTORE 1160
1130 FOR I=1 TO 4
1140 READ EC
1150 A=-4984+EC
1160 DATA 1,5,11,15
1170 POKE A,T:NEXT I
1180 RESTORE 1210
1190 FOR I=1 TO 2:READ EC
1200 A=-4985+EC
1210 DATA 1,11
1220 POKE A,TA:NEXT I
1230 RESTORE 1260
1240 FOR I=1 TO 2:READ EC
1250 A=-4983+EC
1260 DATA 1,11
1270 POKE A,TD:NEXT I
1280 RESTORE 1310
1290 FOR I=1 TO 2:READ EC
1300 A=-4981+EC
1310 DATA 1,11
1320 POKE A,TC:NEXT I
1330 RESTORE 1360
1340 FOR I=1 TO 2:READ EC
1350 A=-4979+EC
1360 DATA 1,11
1370 POKE A,TB:NEXT I
1380 RESTORE 1410
1390 FOR I=1 TO 4:READ EC
1400 A=-4953+EC
1410 DATA 1,7,11,17
1420 POKE A,T:NEXT I
1430 RESTORE 1460
1440 FOR I=1 TO 2:READ EC
1450 A=-4952+EC
1460 DATA 1,11
1470 POKE A,TD:NEXT I
1480 RESTORE 1510
1490 FOR I=1 TO 2:READ EC
1500 A=-4948+EC
1510 DATA 1,11
1520 POKE A,TC:NEXT I
1530 RESTORE 1560
1540 FOR I=1 TO 4:READ EC
1550 A=-4921+EC
1560 DATA 1,7,11,17
1570 POKE A,T:NEXT I
1580 RESTORE 1610
1590 FOR I=1 TO 2:READ EC
1600 A=-4920+EC
1610 DATA 1,11
1620 POKE A,TB:NEXT I
1630 RESTORE 1660
1640 FOR I=1 TO 2:READ EC
1650 A=-4916+EC
1660 DATA 1,11
1670 POKE A,TA:NEXT I
1680 RESTORE 1710
1690 FOR I=1 TO 6:READ EC
1700 A=-4888+EC
1710 DATA 1,5,6,11,15,16
1720 POKE A,T:NEXT I
1730 RESTORE 1760
1740 FOR I=1 TO 2:READ EC
1750 A=-4889+EC
1760 DATA 1,11
1770 POKE A,TC:NEXT I
1780 RESTORE 1810
1790 FOR I=1 TO 2:READ EC
1800 A=-4887+EC
1810 DATA 1,11
1820 POKE A,TB:NEXT I
1830 RESTORE 1860
1840 FOR I=1 TO 2:READ EC
1850 A=-4885+EC
1860 DATA 1,11
1870 POKE A,TA:NEXT I
1880 RESTORE 1910
1890 FOR I=1 TO 8:READ EC
1900 A=-4855+EC
1910 DATA 1,2,3,5,11,12,13,15
1920 POKE A,T:NEXT I
1930 RESTORE 1960
1940 FOR I=1 TO 2:READ EC
1950 A=-4856+EC
1960 DATA 1,11
1970 POKE A,TC:NEXT I
1980 RESTORE 2010
1990 FOR I=1 TO 2:READ EC
2000 A=-4852+EC
2010 DATA 1,11
2020 POKE A,TD:NEXT I
2030 RESTORE 2060
2040 FOR I=1 TO 12:READ EC
2050 A=-4820+EC
2060 DATA 2,12,34,44,60,66,70,76,92,98,102,108
2070 POKE A,T:NEXT I
2080 RESTORE 2110
2090 FOR I=1 TO 2:READ EC
2100 A=-4728+EC
2110 DATA 1,11
2120 POKE A,TB:NEXT I
2130 RESTORE 2160
2140 FOR I=1 TO 2:READ EC
2150 A=-4724+EC
2160 DATA 1,11
2170 POKE A,TA:NEXT I
2180 RESTORE 2210
2190 FOR I=1 TO 4:READ EC
2200 A=-4696+EC
2210 DATA 1,5,11,15
2220 POKE A,T:NEXT I
2230 RESTORE 2260
2240 FOR I=1 TO 2:READ EC
2250 A=-4697+EC
2260 DATA 1,11
2270 POKE A,TC:NEXT I
2280 RESTORE 2310
2290 FOR I=1 TO 2:READ EC
2300 A=-4695+EC
2310 DATA 1,11
2320 POKE A,TB:NEXT I
2330 RESTORE 2360
2340 FOR I=1 TO 2:READ EC
2350 A=-4693+EC
2360 DATA 1,11
2370 POKE A,TA:NEXT I
2380 RESTORE 2410
2390 FOR I=1 TO 2:READ EC
2400 A=-4691+EC
2410 DATA 1,11
2420 POKE A,TD:NEXT I
2430 RESTORE 2460
2440 FOR I=1 TO 6:READ EC
2450 A=-4663+EC
2460 DATA 1,2,3,11,12,13
2470 POKE A,T:NEXT I
2480 RESTORE 2510
2490 FOR I=1 TO 2:READ EC
2500 A=-4664+EC
2510 DATA 1,11
2520 POKE A,TC:NEXT I
2530 RESTORE 2560
2540 FOR I=1 TO 2:READ EC
2550 A=-4660+EC
2560 DATA 1,11
2570 POKE A,TD:NEXT I
2580 RESTORE 2610
2590 FOR I=1 TO 15:READ EC
2600 A=-4542+EC
2610 DATA 1,33,65,97,98,99,129,131,161,163,193,195,225,226,227
2620 POKE A,T:NEXT I
2630 RESTORE 2660
2640 FOR I=1 TO 12:READ EC
2650 A=-4442+EC
2660 DATA 1,2,3,33,35,65,67,97,99,129,130,131
2670 POKE A,T:NEXT I
2680 RESTORE 2710
2690 FOR I=1 TO 19:READ EC
2700 A=-4438+EC
2710 DATA 1,3,4,6,7,33,34,36,37,39,65,68,71,97,100,103,129,132,135
2720 POKE A,T:NEXT I
2730 RESTORE 2760
2740 FOR I=1 TO 15:READ EC
2750 A=-4526+EC
2760 DATA 1,33,65,97,98,99,129,131,161,163,193,195,225,226,227
2770 POKE A,T:NEXT I
2780 RESTORE 2810
2790 FOR I=1 TO 12:READ EC
2800 A=-4426+EC
2810 DATA 1,2,3,33,35,65,66,67,97,129,130,131
2820 POKE A,T:NEXT I
2830 RESTORE 2860
2840 FOR I=1 TO 7:READ EC
2850 A=-4422+EC
2860 DATA 1,3,33,34,65,97,129
2870 POKE A,T:NEXT I
2880 PRINT AT(29,23);">1988<"
2890 RETURN
2900 REM GESCHUETZVERSCHIEBUNG
2910 T$=INKEY$
2920 IF T$=CHR$(8) THEN P=G:G=G-12
2930 IF T$=CHR$(9) THEN P=G:G=G+12
2940 IF G<3 THEN G=3
2950 IF G>27 THEN G=27
2960 IF P=G THEN Z=Z+1
2970 IF Z=2 THEN P=0:Z=1
2980 IF P=0 THEN 3000
2990 PRINT AT(26,P);"_"
3000 RETURN
3010! SCHIESSEN
3020 IF B>160 THEN PAUSE 50:GOTO 3420
3030 IF B=45 THEN 3040:ELSE 3070
3040 IF C<11 AND B=45 THEN WINDOW 28,31,0,31:CLS:GOTO 3070
3050 PRINT AT(29,5);"GESCHUETZ MUSS NACHLADEN !!"
3060 RETURN
3070 B=B+1:PRINT AT(28,0);" "
3080 IF G<>C THEN Q=23:ELSE Q=E
3090 FOR I=1 TO 2
3100 FOR U=25 TO Q STEP -1
3110 PRINT AT(2,27);"*"
3120 PRINT AT(U,G);"*"
3130 NEXT U
3140 FOR U=25 TO Q STEP -1
3150 PRINT AT(U,G);CHR$(32)
3160 PRINT AT(2,27);" "
3170 NEXT U
3180 NEXT I
3190 IF G=C THEN L=L+1:C=29:E=0:ELSE RETURN
3200 FOR J=10 TO 0 STEP -1
3210 BEEP
3220 NEXT J
3230 RETURN
3240!ZURUECKSCHIESEN
3250 G1=G
3260 DJ=INT(11*RND(1)+2.5)
3270 IF DJ>7 AND E<23 AND C>11 THEN 3280:ELSE RETURN
3280 PRINT AT(2,27);CHR$(161)
3290 FOR I=(E+2) TO 26
3300 BEEP
3310 GOSUB 2900
3320 IF G<>G1 THEN PRINT AT(I-1,G1);" ":I=26:RETURN
3330 PRINT AT(I,G1);CHR$(161)
3340 PRINT AT(I-1,G1);" "
3350 NEXT I
3360 PRINT AT(I-1,G1);CHR$(204)
3370 PRINT AT(I,G1);CHR$(130)
3380 PRINT AT(I-2,G1);CHR$(213)
3390 PRINT AT(I-1,G1+1);CHR$(156)
3400 PRINT AT(I-1,G1-1);CHR$(152)
3410 GOTO 3510
3420!SPIELAUSWERTUNG
3430 PAUSE 30:AB=32:GOSUB 30
3440 PRINT AT(7,4);"SIE HABEN MIT ":PRINT AT(7,17);B:PRINT AT(7,21);"SCHUSS"
3450 PRINT AT(9,4);L:PRINT AT(9,8);"BOMBER ABGESCHOSSEN !"
3460 PRINT AT(11,4);"DER":PRINT AT(11,7);N:PRINT AT(11,11);"BOMBER IST DURCHGE-"
3470 PRINT AT(13,4);"BROCHEN UND IHRE STELLUNG"
3480 PRINT AT(15,4);"VERNICHTET."
3490 PRINT AT(0,0);" "
3500 PAUSE 20:GOTO 3590
3510 WINDOW 28,31,0,31
3520 PRINT " >> GESCHUETZ VERNICHTET <<"
3530 PRINT AT(29,0);" ":PAUSE 50:AB=32:GOSUB 30
3540 PRINT AT(11,4);"SIE SIND VON EINER LUFT-"
3550 PRINT AT(13,4);"BODENRAKETE GETROFFEN WURDEN."
3560 PRINT AT(15,4);"LEIDER VERLOREN !"
3570 PRINT AT(0,0);" "
3580 PRINT AT(14,0);" "
3590 PAUSE 40
3600 GOTO 130
3610 PRINT AT(0,0);" "
3620 PRINT AT(5,0);" SIE HABEN DEN ANGRIFF ERFOLG-"
3630 PRINT AT(7,0);" REICH ABGEWEHRT !"
3640 FOR I=1 TO 10
3650 PRINT AT(20,11);">GEWONNEN<"
3660 PAUSE 5
3670 PRINT AT(20,10);" "
3680 PAUSE 5
3690 NEXT I
3700 PAUSE 20:GOTO 130
3710 WINDOW 14,19,22,31:CLS
3720 PRINT "NAME :"
3730 PRINT "99BOMBER"
3740 PAUSE 10
3750 CSAVE "99BOMBER
3760 RETURN