100 CALL CLEAR :: DISPLAY AT(1,1):"WHAT KEY DO YOU WANT TO USE"
110 DISPLAY AT(4,1):"TO JUMP UP ?" :: CALL KEY(O,K,S) :: IF S<>1 THEN 110 ELSE K1=K
120 DISPLAY AT(8,1):"TO JUMP DOWN ?" :: CALL KEY(O,K,S) :: IF S<>1 THEN 120 ELSE K2=K
130 DISPLAY AT(12,1):"TO JUMP LEFT ?" :: CALL KEY(O,K,S) :: IF S<>1 THEN 130 ELSE K3=K
140 DISPLAY AT(16,1):"TO JUMP RIGHT ?" :: CALL KEY(O,K,S) :: IF S<>1 THEN 140 ELSE K4=K
150 DISPLAY AT(22,1):"   PRESS ANY KEY TO PLAY" :: CALL KEY(O,K,S) :: IF S<>1 THEN 150
160 DATA 24,-23,20,-21,5,-17,18
170 CALL CLEAR :: ON ERROR 470 :: CALL MAGNIFY(3) :: CALL SCREEN(2) :: LI=6 :: SC=0 :: BR=1 :: HY=5
180 CALL CHAR(33,"FFFFFFFFFFFFFFFFFF00000000000000AA55AA5500000000AA54A8500000000",37,"0F1F2F5FAF5FAF5F1010101010101010")
190 CALL CHAR(40,"F0783C1F3C78F0000000000000000000000078FF780000000000000000000000")
200 CALL CHAR(44,"0000001EFF1E00000000000000000000000F1E3CF83C1E0F00000000000000000")
210 CALL CHAR(48,"007E62524A46427E0008080808080808007E02027E40407E007E02027E02027E")
220 CALL CHAR(52,"004242427E020202007E40407E02027E007E40407E42427E007E020202020202")
230 CALL CHAR(56,"007E42427E42427E007E42427E02027E00387CFEFEFE7C38FFFFFFFFFFFFFFFF")
240 CALL CHAR(132,"071F3F7F7FFFFFFFE0F8FCFEFEFFFFFF071F3F7F7FFFFFFE",136,"FFFFFF7F7F3F1F07FFFFFFFEFEFCF8E0")
250 CALL CHAR(96,"071F3F7F7FFFFFFFFFFFFF7F7F3F1F07E0F8FCFEFEFFFFFFFFFFFFFEFEFCF8E0")
260 CALL CHAR(100,"00000000030F1F1F3F3F3F3F1F1F0F0300000000C0F0F8F8FCFCFCFCF8F8F0C0")
270 CALL CHAR(104,"000000000000000003070F0F0F0F07030000000000000000C0E0F0F0F0F0E0C0")
280 CALL CHAR(108,"0000000000000000000000000103030100000000000000000000000080C0C080")
290 CALL CHAR(112,"00000000000000000111090400380000000000000000000000081020001C0000")
300 CALL CHAR(120,"000000000000000002040810204080800000000000000000000000000000000")
310 CALL CHAR(124,"FFFFFF7F7F3F1F07FFFFFFFEFEFCF8E000000000000000FF",116,"FFFFFFFFFFFF000000FFFFFFFFFF0000")
320 CALL CHAR(140,"FFFF070F1F3F7FFFFFFF1F0000000000FFFFFFFEFCF8F0E0E0E0FC0000000000")
330 CALL HCHAR(1,2,33,30) :: CALL HCHAR(1,13,32,6) :: DISPLAY AT(24,13):"~  ~" :: CALL HCHAR(2,2,35,30) :: DISPLAY AT(2,1):"###########$   #############"
340 CALL HCHAR(1,18,37) :: CALL HCHAR(1,2,37) :: CALL HCHAR(2,31,36)
350 DISPLAY AT(1,1)SIZE(12):"SCORE!"&RPT$("0",6-LEN(STR$(SC)))&STR$(SC) :: DISPLAY AT(1,17)SIZE(12):"LIVES!"&RPT$(":",LI) :: GOTO 410
360 FOR A=2 TO 8 :: CALL COLOR(#A,1) :: NEXT A :: FOR C=1 TO 2 :: FOR A=96 TO 108 STEP 4 :: CALL SOUND(-100,A+314,10) :: CALL PATTERN(#1,A)
370 NEXT A :: FOR A=108 TO 96 STEP-4 :: CALL SOUND(-100,A+314,10) :: CALL PATTERN(#1,A) :: NEXT A :: NEXT C
380 CALL SOUND(-1,500,0) :: SC=SC+CO*20 :: CO=0
390 SC=SC+200*BR :: DISPLAY AT(1,7)SIZE(6):RPT$("0",6-LEN(STR$(SC)))&STR$(SC) :: DISPLAY AT(1,23)SIZE(6):RPT$(":",LI)&"!!!!!!" :: CALL DELSPRITE(#1)
400 CALL COLOR(12,1,1,13,1,1,14,1,1) :: CALL HCHAR(4,1,32,608)
410 IF BR=9 THEN BR=1 :: RESTORE
420 ON BR GOTO 720,770,790,910,810,860,880,910
430 CALL COLOR(2,8,1,3,2,13,4,2,13,5,12,13,6,12,13,7,12,13,8,12,13,9,12,13,12,8,1,13,16,1,14,16,8)
440 FOR A=2 TO 8 :: CALL COLOR(#A,7) :: NEXT A :: CALL COLOR(1,13,2) :: CALL SPRITE(#1,96,13,177,121) :: YP=177 :: XP=121
450 CALL KEY(0,K,S) :: IF S<>0 THEN 520
460 CALL COINC(ALL ,L) :: IF L=0 THEN 450
470 FOR A=2 TO 8 :: CALL COLOR(#A,1) :: NEXT A :: FOR A=96 TO 112 STEP 4 :: CALL SOUND(-100,A+14,10) :: CALL PATTERN(#1,A) :: NEXT A
480 SC=SC+CO*20 :: LI=LI-1 :: IF LI=-1 THEN 1110 ELSE DISPLAY AT(1,23)SIZE(6):RPT$(":",LI)&"!!!!!!" :: CALL COLOR(#1,1)
490 CALL PATTERN(#1,96) :: CALL SOUND(-100,110,0) :: ON ERROR 470 :: YP=177 :: XP=121 :: CALL LOCATE(#1,YP,XP) :: DISPLAY AT(1,7)SIZE(6):RPT$("0",6-LEN(STR$(SC)))&STR$(SC)
500 FOR A=2 TO 8 :: CALL COLOR(#A,7) :: NEXT A :: CALL COLOR(#1,13) :: GOTO 450
510 !*KEYBORD SCAN*!
520 IF K<>K1 THEN 560 ELSE CALL COINC(ALL ,L) :: IF L=-1 THEN 470
530 CALL LOCATE(#1,YP-16,XP) :: CALL SOUND(-1,400,0) :: CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL LOCATE(#1,YP-32,XP) :: YP=YP-32
540 CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL GCHAR((YP+15)/8,(XP+7)/8,CH) :: IF CH=132 THEN 450
550 IF CH<>134 THEN 470 ELSE CALL HCHAR((YP+15)/8,(XP+7)/8,132) :: CO=CO+1 :: IF CO=NO THEN BR=BR+1 :: GOTO 360 ELSE 450
560 IF K<>K3 THEN 600 ELSE CALL COINC(ALL ,L) :: IF L=-1 THEN 470
570 CALL LOCATE(#1,YP-4,XP-12) :: CALL SOUND(-1,200,0) :: CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL LOCATE(#1,YP,XP-24) :: XP=XP-24
580 CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL GCHAR((YP+15)/8,(XP+7)/8,CH) :: IF CH=132 THEN 450
590 IF CH<>134 THEN 470 ELSE CALL HCHAR((YP+15)/8,(XP+7)/8,132) :: CO=CO+1 :: IF CO=NO THEN BR=BR+1 :: GOTO 360 ELSE 450
600 IF K<>K4 THEN 640 ELSE CALL COINC(ALL ,L) :: IF L=-1 THEN 470
610 CALL LOCATE(#1,YP-4,XP+12) :: CALL SOUND(-1,200,0) :: CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL LOCATE(#1,YP,XP+24) :: XP=XP+24
620 CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL GCHAR((YP+15)/8,(XP+7)/8,CH) :: IF CH=132 THEN 450
630 IF CH<>134 THEN 470 ELSE CALL HCHAR((YP+15)/8,(XP+7)/8,132) :: CO=CO+1 :: IF CO=NO THEN BR=BR+1 :: GOTO 360 ELSE 450
640 IF K<>K2 THEN 680 ELSE CALL COINC(ALL ,L) :: IF L=-1 THEN 470
650 CALL LOCATE(#1,YP+16,XP) :: CALL SOUND(-1,110,0) :: CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL LOCATE(#1,YP+32,XP) :: YP=YP+32
660 CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE CALL GCHAR((YP+15)/8,(XP+7)/8,CH) :: IF CH=132 THEN 450
670 IF CH<>134 THEN 470 ELSE CALL HCHAR((YP+15)/8,(XP+7)/8,132) :: CO=CO+1 :: IF CO=NO THEN BR=BR+1 :: GOTO 360 ELSE 450
680 CALL COINC(ALL ,L) :: IF L=-1 THEN 470 ELSE HY=HY-1 :: IF HY<0 THEN 450
690 FOR A=96 TO 108 STEP 4 :: CALL SOUND(-100,A+314,10,A+14,5,A+114,7) :: CALL PATTERN(#1,A) :: NEXT A
700 !*ONE*!
710 YP=177 :: XP=121 :: CALL LOCATE(#1,YP,XP) :: FOR A=108 TO 96 STEP-4 :: CALL SOUND(-100,A+414,10,A+214,7,A+114,5) :: CALL PATTERN(#1,A) :: NEXT A :: GOTO 450
720 NO=25 :: FOR A=4 TO 20 STEP 4 :: CALL TMP(A,8,5) :: NEXT A
730 S=2 :: FOR A=49 TO 150 STEP 64 :: CALL SPRITE(#S,40,1,A,1,#S+1,44,1,A+8,1) :: S=S+2 :: NEXT A
740 S=6 :: S1=1 :: FOR A=17 TO 164 STEP 64 :: CALL SPRITE(#S,42+(-2*S1),1,A,1) :: S=S+1 :: S1=S1*-1 :: NEXT A
750 RESTORE :: FOR A=2 TO 8 :: READ S :: CALL MOTION(#A,0,S) :: NEXT A :: GOTO 430
760 !*TWO*!
770 NO=27 :: CALL TMP(4,5,7) :: CALL TMP(8,8,5) :: CALL TMP(12,11,3) :: CALL TMP(16,8,5) :: CALL TMP(20,5,7) :: GOTO 890
780 !*THREE*!
790 NO=29 :: CALL TMP(4,8,5) :: CALL TMP(8,5,7) :: CALL TMP(12,8,5) :: CALL TMP(16,5,7) :: CALL TMP(20,8,5) :: GOTO 890
800 !*FOUR*!
810 NO=33 :: CALL TMP(4,8,5) :: CALL TMP(8,5,7) :: CALL TMP(12,2,9) :: CALL TMP(16,5,7) :: CALL TMP(20,8,5)
820 S=2 :: FOR A=49 TO 150 STEP 64 :: CALL SPRITE(#S,40,1,A,1,#S+1,44,1,A+8,1) :: S=S+2 :: NEXT A
830 S=6 :: S1=1 :: FOR A=17 TO 164 STEP 64 :: CALL SPRITE(#S,42+(-2*S1),1,A,1) :: S=S+1 :: S1=S1*-1 :: NEXT A
840 RESTORE :: FOR A=2 TO 8 :: READ S :: CALL MOTION(#A,0,S) :: NEXT A :: GOTO 430
850 !*FIVE*!
860 NO=37 :: FOR A=4 TO 20 STEP 8 :: CALL TMP(A,2,9) :: NEXT A :: FOR A=8 TO 16 STEP 8 :: FOR B=2 TO 26 STEP 3 :: CALL TMP(A,B,1) :: NEXT B :: NEXT A :: GOTO 890
870 !*SIX*!
880 NO=29 :: Z=1 :: FOR A=4 TO 20 STEP 4 :: CALL TMP(A,2,Z) :: CALL TMP(A,29-Z*3,Z) :: Z=Z+1 :: NEXT A
890 CALL SPRITE(#1,96,1,177,121) :: YP=177 :: XP=121 :: CALL COLOR(12,8,1,13,16,1,14,16,8) :: GOTO 500
900 !*BONUS*!
910 CALL DELSPRITE(ALL) :: S=1 :: CALL COLOR(11,1,1) :: FOR A=3 TO 24 STEP 3 :: CALL HCHAR(A,1,116,32) :: CALL SPRITE(#A-1,140,2,A*8-9,1,0,S*(RND*25+10)) :: S=S*-1
920 NEXT A :: CALL COLOR(11,12,13) :: CALL SPRITE(#1,96,13,172,121) :: YP=172 :: XP=121 :: ON ERROR STOP
930 CALL KEY(O,K,S) :: IF K=K1 THEN 990
940 IF K<>K3 THEN 960 ELSE CALL COINC(ALL ,L) :: IF L=-1 THEN 1080 ELSE XP=XP-16 :: CALL LOCATE(#1,YP-2,XP+8) :: CALL SOUND(-1,200,0)
950 CALL COINC(ALL ,L) :: IF L=-1 THEN 1080 ELSE CALL LOCATE(#1,YP,XP)
960 IF K<>K4 THEN 980 ELSE CALL COINC(ALL ,L) :: IF L=-1 THEN 1080 ELSE XP=XP+16 :: CALL LOCATE(#1,YP-2,XP-8) :: CALL SOUND(-1,200,0)
970 CALL COINC(ALL ,L) :: IF L=-1 THEN 1080 ELSE CALL LOCATE(#1,YP,XP)
980 CALL COINC(ALL ,L) :: IF L=-1 THEN 1080 ELSE 930
990 CALL LOCATE(#1,YP-4,XP) :: CALL SOUND(-1,300,0) :: CALL COINC(ALL ,L) :: IF L=0 THEN 1080 ELSE YP=YP-24 :: CALL LOCATE(#1,YP,XP)
1000 SC=SC+300 :: IF YP<20 THEN 1080
1010 FOR A=1 TO 4
1020 CALL KEY(O,K,S) :: IF K=K1 THEN 990
1030 IF K<>K3 THEN 1050 ELSE XP=XP-16 :: CALL LOCATE(#1,YP-2,XP+8) :: CALL SOUND(-1,200,0)
1040 CALL LOCATE(#1,YP,XP)
1050 IF K<>K4 THEN 1070 ELSE XP=XP+16 :: CALL LOCATE(#1,YP-2,XP-8) :: CALL SOUND(-1,200,0)
1060 CALL LOCATE(#1,YP,XP)
1070 NEXT A :: GOTO 930
1080 FOR A=96 TO 108 STEP 4 :: CALL SOUND(-100,A+314,10) :: CALL PATTERN(#1,A) :: NEXT A :: ON ERROR 450 :: CALL DELSPRITE(ALL)
1090 LI=LI+1 :: DISPLAY AT(1,7)SIZE(6):RPT$("0",6-LEN(STR$(SC)))&STR$(SC) :: DISPLAY AT(1,23)SIZE(6):RPT$(":",LI)&"!!!!!!" :: CALL COLOR(11,1,1)
1100 CALL HCHAR(3,1,32,704) :: DISPLAY AT(24,13):"~  ~" :: BR=BR+1 :: GOTO 410
1110 CALL DELSPRITE(ALL) :: CALL CLEAR :: FOR A=1 TO 14 :: CALL COLOR(A,1,1) :: NEXT A
1120 FOR A=1 TO 7 :: IF SC>HI(A)THEN 1140
1130 NEXT A :: GOTO 1150
1140 FOR B=7 TO A STEP-1 :: HI(B+1)=HI(B) :: HI$(B+1)=HI$(B) :: NEXT B :: HI(A)=SC :: HI$(A)=N$
1150 FOR C=3 TO 21 STEP 3 :: DISPLAY AT(C+1,1):STR$(C/3) :: DISPLAY AT(C+1,4)SIZE(16):HI$(C/3)
1160 DISPLAY AT(C+1,22)SIZE(6):RPT$("0",6-LEN(STR$(HI(C/3))))&STR$(HI(C/3)) :: NEXT C :: CALL VCHAR(2,5,38,23) :: CALL VCHAR(2,22,38,23)
1170 DISPLAY AT(1,1):" %!!!P!O!W!E!R!B!A!L!L!!!!   ########################$"
1180 CALL COLOR(0,16,1,1,13,1,3,7,1,4,7,1,5,5,1,6,5,1,7,5,1,8,5,1,9,5,1)
1190 ACCEPT AT(A*3+1,4)VALIDATE(UALPHA)BEEPSIZE(16):HI$(A)
1200 DISPLAY AT(23,1):"                                PRESS ANY  KEY TO PLAY  "
1210 CALL KEY(O,K,S) :: IF S<>1 THEN 1210 ELSE CALL CLEAR :: CALL COLOR(1,1,1,2,1,1,3,1,1,4,1,1,5,1,1,6,1,1,7,1,1,8,1,1,9,1,1)
1220 ON ERROR 470 :: CALL SCREEN(2) :: CO=0 :: LI=6 :: SC=0 :: BR=1 :: HY=5 :: GOTO 330
1230 SUB TMP(A,B,C) :: FOR D=1 TO C :: DISPLAY AT(A,B)SIZE(3):"" :: DISPLAY AT(A+1,B)SIZE(3):"" :: DISPLAY AT(A+2,B)SIZE(3):"|}"
1236 DISPLAY AT(24,1):"MARSHALL             NEW.DAY"
1240 B=B+3 :: NEXT D :: SUBEND
