10 REM ================================== 20 REM == SPACE INVADERS DE LUX = 30 REM == KONSTRUKT\R : JUHA HIRVONEN = 40 REM == COPYRIGHT : LID@NDATA = 50 REM ================================== 60 ; CHR$(12%) 70 GOTO 1060 80 RANDOMIZE 90 S8%=10% : S9%=10% : S%=0% : K1%=3% 100 GOSUB 110 : GOSUB 170 : GOSUB 880 : GOTO 260 110 REM == START V[RDEN == 120 DIM A$(10%) : DIM F1%(10%) : DIM F2%(10%) 130 FOR A%=1% TO 5% : A$(A%)=' d$ d$ d$ d$ d$ d$ d$ d$ ' : NEXT A% 140 B%=2% : D%=5% : W=23/8 : R9%=0% : Y%=1% : X%=1% : X1%=1% : I%=-1% 150 B$=' ' : N%=0% : C%=0% 160 RETURN 170 REM == GRAFISKT MOD == 180 ; CUR(0%,0%); : FOR A%=0% TO 21% : ; CHR$(151%) : NEXT A% 190 REM == BANA == 200 IF K1%=3% ; CUR(22%,30%)'x}0 x}0' ELSE IF K1%=2% ; CUR(22%,30%)'x}0' 210 ; CUR(21%,1%)STRING$(39%,35%) 220 ; CUR(17%,4%)'  ' 230 ; CUR(18%,4%)'  ' 240 ; CUR(19%,4%)'     ' 250 RETURN 260 REM == SPELET UNDER G]NG == 270 GOSUB 740 : REM == BASR\RELSER == 280 IF K1%=0% 1060 290 REM == SKOTT == 300 L%=L%+1% : IF L%=10% L%=0% : OUT 6%,0% 310 IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 320 IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : GOTO 350 330 IF INP(56%)-128%=32% THEN GOSUB 680 340 IF N%=40% THEN 1230 350 REM == FIENDEN == 360 IF S%>4000% AND INT(RND*2%)<>1% THEN 390 370 IF S%>2000% AND INT(RND*5%)<>3% THEN 480 380 IF S%<=2000% AND INT(RND*10%)<>5% THEN 480 390 OUT 6%,49% : X%=X%-I% : IF X%<2% OR X%>12% I%=-1%*I% 400 IF X%<2% OR X%>12% Y%=Y%+1% : OUT 6%,131% 410 FOR A%=1% TO D% 420 IF A%=D% AND A$(D%)=SPACE$(25%) D%=D%-1% 430 IF A%=1% ; CUR(Y%-1%+A%,X%)' ' 440 ; CUR(Y%+A%,X%)A$(A%) 450 IF Y%+A%=20% THEN 1080 460 NEXT A% 470 REM == BOMBER == 480 GOSUB 500 : GOSUB 500 : GOSUB 500 : GOTO 270 490 REM == BOMBER == 500 IF C1%=1% THEN 540 510 IF N%>35% THEN GOSUB 1150 : GOTO 540 520 B1%=(Y%+D%)*3%+1% : E%=INT(RND*8%)+1% : F%=INT(E%*W) : B2%=(F%+X%)*2%-1% 530 IF MID$(A$(1%),F%,1%)<>'d' 520 540 C1%=1% : B1%=B1%+1% : IF B1%=63% GOSUB 930 550 SETDOT B1%,B2% : CLRDOT B1%-1%,B2% 560 IF B1%>60% AND B1%<62% AND DOT(B1%+1%,B2%) THEN GOSUB 960 570 IF DOT(B1%+1%,B2%) AND B1%/3%>Y%+D% AND B1%<60% GOSUB 1020 580 IF C2%=1% THEN 620 590 IF N%>35% THEN GOSUB 1150 : GOTO 620 600 B3%=(Y%+D%)*3%+1% : E%=INT(RND*8%)+1% : F%=INT(E%*W) : B4%=(F%+X%)*2%-1% 610 IF MID$(A$(1%),F%,1%)<>'d' 600 620 C2%=1% : B3%=B3%+1% : IF B3%=63% GOSUB 940 630 SETDOT B3%,B4% : CLRDOT B3%-1%,B4% 640 IF B3%>60% AND B3%<62% AND DOT(B3%+1%,B4%) THEN GOSUB 960 650 IF DOT(B3%+1%,B4%) AND B3%/3%>Y%+D% AND B3%<60% GOSUB 1040 660 RETURN 670 REM == SKOTT == 680 S1%=60% : S2%=B%*2%+4% : C%=1% : OUT 6%,157% 690 SETDOT S1%,S2% : CLRDOT S8%,S9% 700 IF R9%=2% AND S1%<10% AND S2%/2%X1% THEN RETURN 710 IF S1%<5% CLRDOT S8%-1%,S9% : C%=0% : RETURN 720 IF DOT(S1%-1%,S2%) GOSUB 790 730 S8%=S1% : S9%=S2% : S1%=S1%-1% : RETURN 740 GOSUB 760 : GOSUB 760 : RETURN 750 REM == BAS R\RELSER == 760 B%=B%+(INP(56%)-128%=90% AND B%>1%)-(INP(56%)-128%=45% AND B%<35%) 770 ; CUR(20%,B%)' x}0 ' : RETURN 780 REM == TR[FF == 790 IF R9%=1% AND S1%(Y%+D%)*3% THEN CLRDOT S1%,S2% : CLRDOT S1%-1%,S2% : C%=0% : RETURN 810 IF R9%=2% AND S1%<62% THEN CLRDOT S1%,S2% : CLRDOT S1%-1%,S2% : C%=0% 820 C%=0% : OUT 6%,135% 830 IF R9%=2% OR R9%=1% THEN RETURN 840 S3%=INT(S1%/3%)-Y% : S4%=INT(S2%/2%)-X% 850 A$(S3%)=LEFT$(A$(S3%),S4%-1%)+B$+RIGHT$(A$(S3%),S4%+3%) 860 FOR A%=1% TO D% : ; CUR(Y%+A%,X%)A$(A%) : NEXT A% 870 N%=N%+1% : S%=S%+(6%-S3%)*10% 880 ; CUR(22%,1%)CHR$(135%)'=SCORE 'S%'='CHR$(151%) 890 IF S%>H9% THEN H9%=S% 900 ; CUR(0%,9%)CHR$(135%)'=HIGH SCORE 'H9%'='CHR$(151%) 910 RETURN 920 REM == TR[FF P] MARK== 930 C1%=0% : RETURN 940 C2%=0% : RETURN 950 REM == TR[FF P] BAS== 960 ; CUR(20%,B%)' e=1 ' : FOR T1%=1% TO 1000% : OUT 6%,11% : NEXT T1% : OUT 6%,0% 970 K1%=K1%-1% 980 IF K1%=2% THEN ; CUR(22%,30%)'x}0 ' 990 IF K1%=1% THEN ; CUR(22%,30%)' ' 1000 RETURN 1010 REM == BOMB P] SKYDD== 1020 CLRDOT B1%,B2% : CLRDOT B1%+1%,B2% : CLRDOT B1%+1%,B2%+1% : CLRDOT B1%+2%,B2% 1030 OUT 6%,137% : C1%=0% : RETURN 1040 CLRDOT B3%,B4% : CLRDOT B3%+2%,B4% : CLRDOT B3%+1%,B4%-1% : CLRDOT B3%+2%,B4%-1% 1050 OUT 6%,137% : C2%=0% : RETURN 1060 REM == GAME OVER == 1070 OUT 6%,0% 1080 ; CUR(10%,13%)CHR$(135%)'GAME OVER'CHR$(151%) 1090 ; CUR(12%,8%)CHR$(135%)'PRESS RET. TO START'CHR$(151%); 1100 FOR A%=31744 TO 32719 : POKE A%,PEEK(A%)+128% : NEXT A% 1110 FOR A%=31744 TO 32719 : POKE A%,PEEK(A%)-128% : NEXT A% 1120 GET U$ : IF U$<>CHR$(13%) THEN 1080 : ; CHR$(12%) 1130 GOTO 80 1140 REM ============= 1150 FOR A%=D% TO 1% STEP -1% : FOR H%=2% TO 24% 1160 IF MID$(A$(A%),H%,1%)='d' THEN 1180 1170 NEXT H% : NEXT A% 1180 IF C1%=1% THEN 1200 1190 B1%=(Y%+D%)*3%+4% : B2%=(H%+X%)*2%-2% 1200 IF C2%=1% THEN 1220 1210 B3%=(Y%+D%)*3%+4% : B4%=(H%+X%)*2%-2% 1220 RETURN 1230 REM == KAMIKAZES == 1240 ; CHR$(12%) : GOSUB 1820 : GOSUB 170 : GOSUB 880 : I%=-1% : R9%=1% 1250 FOR A%=1% TO 30% 1260 OUT 6%,43% : L%=L%+1% : IF L%>10% L%=0% : OUT 6%,0% 1270 IF K1%<1% 1060 1280 GOSUB 740 1290 IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : GOTO 1310 1300 IF INP(56%)-128%=32% THEN GOSUB 680 1310 IF P1%<1% THEN GOSUB 1370 ELSE GOSUB 1380 1320 IF P1%=21% AND P2%=B% GOSUB 960 1330 IF P1%=21% AND P2%+1%=B% GOSUB 960 1340 IF P1%>20% THEN GOSUB 1430 : GOTO 1450 1350 GOTO 1280 1360 REM == RITA KAM. == 1370 P1%=1% : P2%=INT(RND*30%)+2% 1380 ; CUR(P1%,P2%)' 91 ' : ; CUR(P8%,P9%)' ' 1390 P8%=P1% : P9%=P2% : P1%=P1%+1% : P2%=P2%-I% : IF P2%<2% OR P2%>35% THEN I%=-1%*I% 1400 IF C%=0% THEN FOR T%=1% TO 60% : NEXT T% 1410 RETURN 1420 REM == MARK TR[FF == 1430 ; CUR(P1%-1%,P2%)'gf2' : FOR T%=1% TO 100% : NEXT T% : ; CUR(P1%-1%,P2%)' ' : P1%=0% 1440 ; CUR(21%,1%)STRING$(39%,35%) : RETURN 1450 NEXT A% : GOTO 1510 1460 REM == TR[FF == 1470 [%=INT((RND*5%)+1%)*100% : ; CUR(P1%-1%,P2%)CHR$(135%)[%' 'CHR$(151%) 1480 FOR T%=1% TO 600% : NEXT T% : OUT 6%,7% : ; CUR(P1%-1%,P2%-1%)' ' 1490 S%=S%+[% : ; CUR(22%,1%)CHR$(135%)'=SCORE 'S%'='CHR$(151%) : P1%=0% : RETURN 1500 REM == MODER SKEPPET == 1510 ; CHR$(12%) : B%=2% : X1%=15% : I%=1% : R9%=2% 1520 GOSUB 1810 : GOSUB 170 : GOSUB 880 : GOSUB 1870 1530 GOSUB 740 1540 L%=L%+1% : IF L%>5% L%=0% : OUT 6%,0% 1550 IF K1%<1% 1060 1560 IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 1570 IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : IF C%=1% GOSUB 690 : GOTO 1590 1580 IF INP(56%)-128%=32% THEN GOSUB 680 1590 IF C%=1% AND S1%<10% AND S2%/2%X1% THEN 1760 1600 FOR T%=1% TO 10% 1610 IF F1%(T%)>1% THEN 1630 1620 F1%(T%)=12% : F2%(T%)=INT(RND*22%)+(X1%*2%) 1630 F1%(T%)=F1%(T%)+1% : IF F1%(T%)>62% THEN GOTO 1690 1640 SETDOT F1%(T%),F2%(T%) : CLRDOT F1%(T%)-1%,F2%(T%) 1650 IF DOT(F1%(T%)+1%,F2%(T%)) AND F1%(T%)>50% THEN 1720 1660 NEXT T% 1670 IF INT(RND*10%)=5% THEN X1%=X1%-I% : GOSUB 1870 : IF X1%<5% OR X1%>25% THEN I%=-1%*I% 1680 GOTO 1530 1690 CLRDOT F1%(T%),F2%(T%) : F1%(T%)=0% : OUT 6%,137% 1700 IF T%>=2% THEN T%=T%-1% 1710 GOTO 1610 1720 IF F1%(T%)>59% AND F1%(T%)<62% THEN GOSUB 960 : GOTO 1690 1730 IF F1%(T%)<60% CLRDOT F1%(T%)+1%,F2%(T%) : OUT 6%,151% 1740 GOTO 1690 1750 REM == EXPLOSION == 1760 OUT 6%,11% : FOR T%=1% TO 55% 1770 ; CUR(1%,X1%)'jfheiufd' : ; CUR(2%,X1%)'f|slk||als' : ; CUR(3%,X1%)'wlkdokssa' 1780 ; CUR(1%,X1%)'dksdks23s' : ; CUR(2%,X1%)'9884598efjs' : ; CUR(3%,X1%)'erjkj45jr' 1790 NEXT T% 1800 OUT 6%,0% : GOSUB 1820 : GOTO 100 1810 REM == BONUS == 1820 [%=INT((RND*5%)+1%)*100% : S%=S%+[% 1830 ; CUR(10%,10%)CHR$(135%)'BONUS ';[%CHR$(151%) 1840 ; CUR(22%,1%)CHR$(135%)'==SCORE 'S%'=='CHR$(151%) 1850 FOR T%=1% TO 10000% : NEXT T% : ; CHR$(12%) : RETURN 1860 REM == RITA MODERSK. == 1870 ; CUR(1%,X1%+2%)' `hzu40 ' : ; CUR(2%,X1%)' p||p ' : ; CUR(3%,X1%)' #||||||||# ' : RETURN