​
100
110 COLOR 15,1,1:SCREEN 2,2,0
119 CALL TURBO ON
120 DEFINT B-W
130
140 GOSUB 10000: GOSUB 4000: GOSUB 6000
190 X=12:Y=160:AX=0:AY=0
​
200
210 FOR I=0 TO 31
220 FOR J=0 TO 23
230 IF J=0 OR J=23 OR I=0 OR I=31 THEN TC=1 ELSE TC=0
231 IF J=22 AND I>0 AND I<3 THEN TC=2
232 IF J=22 AND I>28 AND I<31 THEN TC=3
233 IF I=8 AND J>6 THEN TC=1
234 IF I=14 AND J<16 THEN TC=1
235 IF I=20 AND J>6 THEN TC=1
250 VPOKE &H1800+I+J*&H20, TC
280 NEXT J
290 NEXT I
​
500
510 TIME=0
600
610 PUT SPRITE 0,(X,Y),4,0
620 PUT SPRITE 1,(X,Y+3),BD,1
630 PUT SPRITE 2,(X-4,Y),BL,2
640 PUT SPRITE 3,(X+3,Y), BR,3
​
700
710 BD=0:BR=0:BL=0
720 S=STICK(0)
730 IF S=1 THEN BD=10:AY=AY-.2
740 IF S=7 THEN BR=10:AX=AX-.2
750 IF S=3 THEN BL=10:AX=AX+.2
800
810 AY=AY+.1
820 AX=AX*.95
830 X=X+AX
840 Y=Y+AY
​
900
910 IF AY>0 THEN 920 ELSE 930
920 C1=VPEEK(&H1800+((Y+13)\8)*&H20+(X+2)\8):C2=VPEEK(&H1800+((Y+14)\8)*&H20+(X+6)\8)
921 C3=VPEEK(&H1800+((Y+14)\8)*&H20+(X+9)\8):C4=VPEEK(&H1800+((Y+13)\8)*&H20+(X+12)\8)
929 GOTO 940
930 C1=VPEEK(&H1800+((Y+8)\8)*&H20+(X+2)\8):C2=VPEEK(&H1800+((Y+1)\8)*&H20+(X+6)\8)
931 C3=VPEEK(&H1800+((Y+1)\8)*&H20+(X+9)\8):C4=VPEEK(&H1800+((Y+8)\8)*&H20+(X+12)\8)
939 GOTO 940
​
940 IF AX>0 THEN 950 ELSE 960
950 D1=VPEEK(&H1800+((Y+1)\8)*&H20+(X+9)\8):D2=VPEEK(&H1800+((Y+8)\8)*&H20+(X+13)\8)
951 D3=VPEEK(&H1800+((Y+11)\8)*&H20+(X+13)\8):D4=VPEEK(&H1800+((Y+13)\8)*&H20+(X+11)\8)
959 GOTO 970
960 D1=VPEEK(&H1800+((Y+1)\8)*&H20+(X+5)\8):D2=VPEEK(&H1800+((Y+8)\8)*&H20+(X+1)\8)
961 D3=VPEEK(&H1800+((Y+11)\8)*&H20+(X+1)\8):D4=VPEEK(&H1800+((Y+13)\8)*&H20+(X+3)\8)
969 GOTO 970
​
​
970 IF C1>0 OR C2>0 OR C3>0 OR C4>0 THEN IF ABS(AY)>1.2 THEN GOTO 1100 ELSE Y=Y-AY:AY=0
980 IF D1>0 OR D2>0 OR D3>0 OR D4>0 THEN IF ABS(AX)>1.2 THEN GOTO 1100 ELSE X=X-AX:AX=0
989 IF C2=3 AND C3=3 AND AY=0 THEN GOSUB 1000
990 IF TIME<3 GOTO 990
999 GOTO 500
​
1000 PUT SPRITE 0,,10
1010 IF STRIG(0) GOTO 190 ELSE GOTO 1010
​
1100 PUT SPRITE 0,,8
1110 IF STRIG(0) GOTO 190 ELSE GOTO 1110
​
2000 DATA 04,03,07,05,07,03,04,07,3A,75,7F,3F,0F,07,00,00
2010 DATA 40,80,C0,40,C0,80,40,C0,B8,5C,FC,F8,E0,C0,00,00
2020 DATA 00,00,00,00,00,00,00,00,00,00,00,03,06,07,03,01
2030 DATA 00,00,00,00,00,00,00,00,00,00,00,80,C0,C0,80,00
2040 DATA 00,00,00,00,00,00,00,00,30,78,F8,30,00,00,00,00
2050 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
2060 DATA 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
2070 DATA 00,00,00,00,00,00,00,00,0C,1E,1F,0C,00,00,00,00
2080 DATA *
​
3000 DATA FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF
3010 DATA FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF,FF
3020 DATA *
​
4000 S=8: RESTORE 3000
4010 READ R$: IF R$="*" THEN RETURN
4020 VPOKE S,VAL("&H"+R$)
4030 VPOKE &H800+S,VAL("&H"+R$)
4040 VPOKE &H1000+S,VAL("&H"+R$)
4050 S=S+1:GOTO 4010
​
5000 DATA B0,B0,B0,B0,B0,B0,B0,B0,F0,F0,F0,F0,F0,F0,F0,F0
5010 DATA E0,E0,E0,E0,E0,E0,E0,E0,80,80,80,80,80,80,80,80
5020 DATA *
​
6000 S=8: RESTORE 5000
6010 READ R$: IF R$="*" THEN RETURN
6020 VPOKE &H2000+S,VAL("&H"+R$)
6030 VPOKE &H2800+S,VAL("&H"+R$)
6040 VPOKE &H3000+S,VAL("&H"+R$)
6050 S=S+1:GOTO 6010
​
10000 REM -- LOAD SPRITES
10010 S=&H3800
10020 READ R$: IF R$="*" THEN RETURN ELSE VPOKE S,VAL("&H"+R$):S=S+1:GOTO 10020
​
​