10 '*MAZE* 20 CLS:CLV 30 FOR Y=0 TO 22 40 LC 0,Y 50 FOR X=0 TO 30 60 ?CHR$(1); 70 NEXT:NEXT 80 X=29:Y=21:LC X,Y:?" "; 90 P=1:[P]=X*128+Y*4+2:G=2 100 '@ANA 110 D=RND(4):GOSUB 280:IF W OR SCR(U,V)<>1 GOTO 100 120 [P]=[P]-1:IF [P]&3=0 P=P-1:IF P=0 GOTO 330 130 FOR G=1 TO 2 140 GOSUB 280:LC U,V:?" "; 150 NEXT 160 X=U:Y=V:P=P+1:G=2 170 '@CL 180 IF P=0 GOTO 330 190 C=0 200 FOR D=0 TO 3 210 GOSUB 280:IF W GOTO 230 220 IF SCR(U,V)=1 C=C+1 230 '@DN 240 NEXT 250 IF C=0 P=P-1:X=[P]/128:Y=([P]-X*128)/4:GOTO 170 260 [P]=X*128+Y*4+C 270 GOTO 100 280 '@UV 290 E=(D<2)*((D*2)-1):U=X+E*G 300 F=(D>1)*((D*2)-5):V=Y+F*G 310 W=0:IF U<1 OR U>29 OR V<1 OR V>21 W=1 320 RETURN 330 '@GA 340 G=1:X=1:Y=1:LC X,Y:?CHR$(7); 350 LC 29,21:?"G"; 360 BEEP:LC 9,23:?"START!";:WAIT 60 370 LC 9,23:?"TIME=";:CLT 380 '@GA1 390 LC 14,23:?TICK()/60; 400 D=INKEY()-28:IF D<0 OR D>3 GOTO 380 410 GOSUB 280:IF W OR SCR(U,V)=1 GOTO 380 420 LC X,Y:?" ";:LC U,V:?CHR$(7);:X=U:Y=V 430 IF X<>29 OR Y<>21 GOTO 380 440 BEEP:LC 9,23:?"GOAL! TIME=";TICK()/60; 450 LC 0,22:END