ZX81 Program: FW.P


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 24028
VARS  : 24821
E-LINE: 24822
STKBOT: 24822
STKEND: 24822


LEGEND

[A] means INVERSE A
{A} means GRAPHICS A
PRINT means treat as KEYWORD P


PROGRAM LISTING

  10 REM **FLYWHEEL**SLR/1985***
  20 LET S=0
  30 PRINT AT 2,15;"{D}{A}{D}";AT 3,0;"{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}{H}[ ]{H}{H}{H}{H}{H}{H}{H}{H}[ ]{H}{H}{H}{H}{H}[ ]{H}{H}{H}{H}{H}{H}{H}{H}[ ]{H}{H}[ ]{H}{H}{H}{H}[ ][ ]{H}{H}[ ]{H}{H}[ ]{H}[ ][ ]{H}{H}{H}[ ][ ]{H}[ ]{H}{H}{H}[ ]{H}[ ][ ]{H}{H}[ ][ ]{H}[ ]{H}"
  40 FOR A=8 TO 21
  50 PRINT AT A,0;"[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]"
  60 NEXT A
  70 GOSUB 1000
  80 FOR A=10 TO 20 STEP 2
  90 PRINT AT A,15-(A-10)+(A-(5+A/2));"{5}";AT A,A/2+11;"{8}"
 100 PRINT AT A+1,15-(A-10)+(A-(5+A/2));"{8}";AT A+1,A/2+11;"{5}"
 110 NEXT A
 120 PRINT AT 20,14;A$;AT 21,14;B$(P)
 130 PRINT AT 16,10;"{H}{H}{H}START*{H}{H}{H}"
 140 FOR A=15 TO 21
 150 PRINT AT A,10;"{H}";TAB 21;"{H}"
 160 NEXT A
 170 FOR G=13 TO 17
 180 PRINT AT 16,G;"*"
 190 FOR A=1 TO 20
 200 NEXT A
 210 NEXT G
 220 FOR G=1 TO R1
 230 GOSUB 1000*Z(G)+1000
 240 NEXT G
 260 PRINT AT 16,10;"{H}{H}{H}FINISH{H}{H}{H}"
 270 FOR A=15 TO 21
 280 PRINT AT A,10;"{H}";TAB 21;"{H}"
 290 NEXT A
 300 LET S=S+500+INT (500*RND+1)
 310 PRINT AT 0,0;"SCORE:";S;"    KEEP IT UP**"
 320 FOR A=1 TO 300
 330 NEXT A
 340 GOTO 30
 400 PRINT AT 0,0;"SCORE:";S;"    YOU CRASHED**";AT 20,C;D$;AT 20,X;"{T}{Y}{T}{W}";AT 21,C;D$;AT 21,C;"{E}{1}{Y}{E}"
 410 PRINT AT 2,0;"PRESS ENTER TO BEGIN AGAIN..."
 420 PAUSE 4E4
 430 CLS
 440 RUN
 500 FOR A=10 TO 20 STEP 2
 510 PRINT AT A,0;"[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]"
 520 PRINT AT A,15-(A-10)+(A-(5+A/2));"{5}";AT A,A/2+11;"{8}"
 530 PRINT AT A+1,15-(A-10)+(A-(5+A/2));"{8}";AT A+1,A/2+11;"{5}"
 540 NEXT A
 550 RETURN
 600 FOR A=10 TO 20 STEP 2
 610 PRINT AT A,0;"[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]"
 620 PRINT AT A,7;"{5}{T}{7}" AND A=10;AT A+1,7;"{5}[ ][ ]{T}" AND A=10;AT A,8;"{8}[ ][ ]{T}" AND A=12;AT A+1,8;"{8}[ ][ ][ ]{T}" AND A=12;AT A,8;"{5}[ ][ ][ ][ ]{T}" AND A=14;AT A+1,8;"{5}[ ][ ][ ][ ][ ]{T}" AND A=14
 630 PRINT AT A,9;"{8}[ ][ ][ ][ ][ ]{6}{7}" AND A=16;AT A+1,9;"{8}[ ][ ][ ][ ][ ][ ][ ]{T}" AND A=16;AT A,9;"{5}[ ][ ][ ][ ][ ][ ][ ][ ]{T}" AND A=18;AT A+1,9;"{5}[ ][ ][ ][ ][ ][ ][ ][ ][ ]{T}" AND A=18;AT A,10;"{8}[ ][ ][ ][ ][ ][ ][ ][ ][ ]{T}" AND A=20;AT A+1,10;"{8}[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]{T}" AND A=20
 640 NEXT A
 650 RETURN
 700 FOR A=10 TO 20 STEP 2
 710 PRINT AT A,0;"[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]"
 720 PRINT AT A,22;"{7}{Y}{8}" AND A=10;AT A+1,21;"{Y}[ ][ ]{8}" AND A=10;AT A,20;"{Y}[ ][ ]{5}" AND A=12;AT A+1,19;"{Y}[ ][ ][ ]{5}" AND A=12;AT A,18;"{Y}[ ][ ][ ][ ]{8}" AND A=14;AT A+1,17;"{Y}[ ][ ][ ][ ][ ]{8}" AND A=14
 730 PRINT AT A,15;"{7}{6}[ ][ ][ ][ ][ ]{5}" AND A=16;AT A+1,14;"{Y}[ ][ ][ ][ ][ ][ ][ ]{5}" AND A=16;AT A,13;"{Y}[ ][ ][ ][ ][ ][ ][ ][ ]{8}" AND A=18;AT A+1,12;"{Y}[ ][ ][ ][ ][ ][ ][ ][ ][ ]{8}" AND A=18;AT A,11;"{Y}[ ][ ][ ][ ][ ][ ][ ][ ][ ]{5}" AND A=20;AT A+1,10;"{Y}[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]{5}" AND A=20
 740 NEXT A
 750 RETURN
1000 LET X=14
1010 LET A$="{6}{2}{1}{6}"
1020 DIM B$(2,4)
1030 LET R1=10+INT (RND*10+1)
1040 DIM Z(R1)
1050 FOR A=1 TO R1
1060 LET Z(A)=INT (RND*3+1)
1070 NEXT A
1080 LET B$(1)="{A}{6}{6}{A}"
1090 LET B$(2)="{H}{6}{6}{H}"
1100 LET P=1
1110 LET C=X
1120 LET D$="[ ][ ][ ][ ]"
1130 LET Z(1)=1
1140 RETURN
2000 IF Z(G-(G>1))<>1 OR G=1 THEN GOSUB 500
2010 FOR A=1 TO 2+INT (RND*4)
2020 PRINT AT 20,X;A$;AT 21,X;B$(P+1)
2030 LET R2=INT (RND*2)
2040 FOR V=14 TO 22
2050 PRINT AT 20,C;D$;AT 20,X;A$;AT 21,C;D$;AT 21,X;B$(P+1)
2060 LET C=X
2070 LET P=NOT P
2080 LET X=X-(INKEY$="Z" AND X>11)+(INKEY$="." AND X<17)
2090 GOSUB 2400+200*R2+20*(V-14)
2100 NEXT V
2120 IF (R2=0 AND X+3<19) OR (R2=1 AND X>12) THEN GOTO 400
2130 LET S=S+10
2140 NEXT A
2150 RETURN
2400 PRINT AT V,15;"{E}"
2410 RETURN
2420 PRINT AT V,15;"{7}";AT V-1,15;"[ ]"
2430 RETURN
2440 PRINT AT V,14;"{E}{7}";AT V-1,15;"[ ]"
2450 RETURN
2460 PRINT AT V,14;"{7}{7}";AT V-1,14;"[ ][ ]"
2470 RETURN
2480 PRINT AT V,13;"{E}{R}{7}";AT V-1,14;"[ ][ ]"
2490 RETURN
2500 PRINT AT V,13;" [ ] ";AT V-1,13;"[ ][ ][ ]"
2510 RETURN
2520 PRINT AT V,12;"{5}{8}[ ] ";AT V-1,13;"[ ][ ][ ]"
2530 RETURN
2540 PRINT AT V,12;" [ ][ ] ";AT V-1,12;"[ ][ ][ ][ ]"
2550 RETURN
2560 PRINT AT V-1,12;"[ ][ ][ ][ ]"
2570 RETURN
2600 PRINT AT V,16;"{R}"
2610 RETURN
2620 PRINT AT V,16;"{7}";AT V-1,16;"[ ]"
2630 RETURN
2640 PRINT AT V,16;"{7}{R}";AT V-1,16;"[ ]"
2650 RETURN
2660 PRINT AT V,16;"{7}{7}";AT V-1,16;"[ ][ ]"
2670 RETURN
2680 PRINT AT V,16;"{7}{E}{R}";AT V-1,16;"[ ][ ]"
2690 RETURN
2700 PRINT AT V,16;" [ ] ";AT V-1,16;"[ ][ ][ ]"
2710 RETURN
2720 PRINT AT V,16;" [ ]{5}{8}";AT V-1,16;"[ ][ ][ ]"
2730 RETURN
2740 PRINT AT V,16;" [ ][ ] ";AT V-1,16;"[ ][ ][ ][ ]"
2750 RETURN
2760 PRINT AT V-1,16;"[ ][ ][ ][ ]"
2770 RETURN
3000 IF Z(G-1)<>2 THEN GOSUB 600
3005 LET X=X-(X=17)
3008 LET C=X
3010 FOR A=1 TO 2+INT (RND*4)
3020 PRINT AT 20,X;A$;AT 21,X;B$(P+1)
3030 LET R2=INT (RND*2)
3040 FOR V=14 TO 22
3050 PRINT AT 20,C;D$;AT 20,X;A$;AT 21,C;D$;AT 21,X;B$(P+1)
3060 LET C=X
3070 LET P=NOT P
3080 LET X=X-(INKEY$="Z" AND X>11)+(INKEY$="." AND X<16)
3090 GOSUB 3400+200*R2+20*(V-14)
3100 LET S=S+1
3110 NEXT V
3120 IF (R2=0 AND X+3<18) OR (R2=1 AND X>12) THEN GOTO 400
3130 LET S=S+10
3140 NEXT A
3150 RETURN
3400 PRINT AT V,9;"{E}"
3410 RETURN
3420 PRINT AT V,10;"{7}";AT V-1,9;"[ ]"
3430 RETURN
3440 PRINT AT V,10;"{E}{7}";AT V-1,10;"[ ]"
3450 RETURN
3460 PRINT AT V,10;"{E}{7}{R}";AT V-1,10;"[ ][ ]"
3470 RETURN
3480 PRINT AT V,11;"{7}{E}{R}";AT V-1,10;"[ ][ ][ ]"
3490 RETURN
3500 PRINT AT V,11;" [ ] ";AT V-1,11;"[ ][ ][ ]"
3510 RETURN
3520 PRINT AT V,11;" [ ]{5}{8}";AT V-1,11;"[ ][ ][ ]"
3530 RETURN
3540 PRINT AT V,11;" [ ][ ] ";AT V-1,11;"[ ][ ][ ][ ]"
3550 RETURN
3560 PRINT AT V-1,11;"[ ][ ][ ][ ]"
3570 RETURN
3600 PRINT AT V,11;"{R}"
3610 RETURN
3620 PRINT AT V,12;"{7}";AT V-1,11;"[ ]"
3630 RETURN
3640 PRINT AT V,13;"{7}{R}";AT V-1,12;"[ ]"
3650 RETURN
3660 PRINT AT V,14;"{7}{7}";AT V-1,13;"[ ][ ]"
3670 RETURN
3680 PRINT AT V,14;"{E}{R}{7}";AT V-1,14;"[ ][ ]"
3690 RETURN
3700 PRINT AT V,15;" [ ] ";AT V-1,14;"[ ][ ][ ]"
3710 RETURN
3720 PRINT AT V,15;"{5}{8}[ ] ";AT V-1,15;"[ ][ ][ ]"
3730 RETURN
3740 PRINT AT V,15;" [ ][ ] ";AT V-1,15;"[ ][ ][ ][ ]"
3750 RETURN
3760 PRINT AT V-1,16;"[ ][ ][ ][ ]"
3770 RETURN
4000 IF Z(G-1)<>3 THEN GOSUB 700
4005 LET X=X+(X=11)
4008 LET C=X
4010 FOR A=1 TO 2+INT (RND*4)
4020 PRINT AT 20,X;A$;AT 21,X;B$(P+1)
4030 LET R2=INT (RND*2)
4040 FOR V=14 TO 22
4050 PRINT AT 20,C;D$;AT 20,X;A$;AT 21,C;D$;AT 21,X;B$(P+1)
4060 LET C=X
4070 LET P=NOT P
4080 LET X=X-(INKEY$="Z" AND X>12)+(INKEY$="." AND X<17)
4090 GOSUB 4400+200*R2+20*(V-14)
4100 LET S=S+1
4110 NEXT V
4120 IF (R2=0 AND X+3<19) OR (R2=1 AND X>13) THEN GOTO 400
4130 LET S=S+10
4140 NEXT A
4150 RETURN
4400 PRINT AT V,20;"{E}"
4410 RETURN
4420 PRINT AT V,19;"{7}";AT V-1,20;"[ ]"
4430 RETURN
4440 PRINT AT V,17;"{E}{7}";AT V-1,19;"[ ]"
4450 RETURN
4460 PRINT AT V,16;"{7}{7}";AT V-1,17;"[ ][ ]"
4470 RETURN
4480 PRINT AT V,15;"{7}{E}{R}";AT V-1,16;"[ ][ ]"
4490 RETURN
4500 PRINT AT V,14;" [ ] ";AT V-1,15;"[ ][ ][ ]"
4510 RETURN
4520 PRINT AT V,13;" [ ]{5}{8}";AT V-1,14;"[ ][ ][ ]"
4530 RETURN
4540 PRINT AT V,12;" [ ][ ] ";AT V-1,13;"[ ][ ][ ][ ]"
4550 RETURN
4560 PRINT AT V-1,12;"[ ][ ][ ][ ]"
4570 RETURN
4600 PRINT AT V,22;"{R}"
4610 RETURN
4620 PRINT AT V,21;"{7}";AT V-1,22;"[ ]"
4630 RETURN
4640 PRINT AT V,20;"{7}{R}";AT V-1,21;"[ ]"
4650 RETURN
4660 PRINT AT V,19;"{E}{7}{R}";AT V-1,20;"[ ][ ]"
4670 RETURN
4680 PRINT AT V,18;"{E}{R}{7}";AT V-1,19;"[ ][ ][ ]"
4690 RETURN
4700 PRINT AT V,18;" [ ] ";AT V-1,18;"[ ][ ][ ]"
4710 RETURN
4720 PRINT AT V,17;"{5}{8}[ ] ";AT V-1,18;"[ ][ ][ ]"
4730 RETURN
4740 PRINT AT V,17;" [ ][ ] ";AT V-1,17;"[ ][ ][ ][ ]"
4750 RETURN
4760 PRINT AT V-1,17;"[ ][ ][ ][ ]"
4770 RETURN
5000 CLS
5010 CLEAR
5020 SAVE "F[W]"
5030 PRINT "[*][*][F][L][Y][ ][W][H][E][E][L][*][*][B][Y][ ][S][T][E][V][E][N][ ][R][E][I][D][/][1][9][8][5][ ][ ]{F}{F}{F}{F}{F}{F}{F}{F}{F}[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][3][D][ ][C][A][R][ ][D][R][I][V][I][N][G][ ][P][R][O][G][R][A][M][.][ ][U][S][E][ ]"[Z]"[ ][F][O][R][ ][L][E][F][T][ ][A][N][D][ ]"[.]"[ ][F][O][R][ ][R][I][G][H][T][.][ ][ ][ ][ ][ ][G][O][O][D][ ][D][R][I][V][I][N][G][*][*][*][*][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]"
5040 PRINT AT 21,0;"[P][R][E][S][S][ ][E][N][T][E][R][ ][T][O][ ][B][E][G][I][N][ ][G][A][M][E][ ][P][L][A][Y][.][.]"
5050 GOTO 420