10 CALL INIT :: CALL LOAD(8196,63,248) :: CALL LOAD(16376,65,32,32,32,32,32,255,48) :: CALL LINK("A")
100 REM
170 CALL LINK("TILTCD") :: CALL CLEAR :: CALL SCREEN(15)
180 GOSUB 4000 :: GOSUB 5000 :: GOSUB 5100
190 CALL KEY(0,K,S)
200 IF S=0 THEN 190
210 _1=POS("DdMm",CHR$(K),1) :: _1=INT((_1+1)/2)
220 IF _1<1 THEN 190
230 ON _1 GOTO 240,290
240 CALL CLEAR :: GOSUB 5000 :: GOSUB 5200
250 CALL KEY(0,K,S)
260 IF S=0 THEN 250
270 _1=POS("Mm",CHR$(K),1)
280 IF _1<1 THEN 250
290 GOSUB 5220
300 CALL CLEAR
310 GOSUB 3000
320 CALL KEY(0,K,S)
330 IF S=0 THEN 320
340 _1=POS("EeSsDdXxRrQqMm",CHR$(K),1)
350 IF _1<1 THEN 320
360 _1=INT((_1+1)/2)
370 IF _1=7 THEN 290
380 IF _1=6 THEN 8000
390 ON _1 GOSUB 7000,7500,7510,7010,2900,8000
400 GOTO 320
2900 ON P GOSUB 3011,3021,3031,3041,3051,3061,3071,3081,3091,3101,3110,3131,3121,3141
2905 RETURN
3000 CALL DELSPRITE(ALL) :: CALL MAGNIFY(3) :: CALL LINK("CM") :: ON P GOTO 3010,3020,3030,3040,3050,3060,3070,3080,3090,3100,3110,3130,3120,3140
3010 CALL LINK("S5A") :: GOTO 3012
3011 CALL LINK("RS1") :: CALL LINK("AK")
3012 R=7 :: C=11 :: BR=42 :: BC=77 :: GR=106 :: GC=141 :: CALL SPRITE(#1,136,7,42,77) :: CALL SPRITE(#2,39,5,110,145) :: RETURN
3020 CALL LINK("S6A") :: GOTO 3022
3021 CALL LINK("RS2") :: CALL LINK("AK")
3022 R=10 :: C=14 :: BR=66 :: BC=101 :: GR=82 :: GC=117 :: CALL SPRITE(#1,136,7,66,101) :: CALL SPRITE(#2,39,5,86,121) :: RETURN
3030 CALL LINK("S6B") :: GOTO 3032
3031 CALL LINK("RS3") :: CALL LINK("AK")
3032 R=12 :: C=10 :: BR=82 :: BC=69 :: GR=66 :: GC=149 :: CALL SPRITE(#1,136,7,82,69) :: CALL SPRITE(#2,39,5,70,153) :: RETURN
3040 CALL LINK("S7A") :: GOTO 3042
3041 CALL LINK("RS4") :: CALL LINK("AK")
3042 R=9 :: C=9 :: BR=58 :: BC=61 :: GR=90 :: GC=157 :: CALL SPRITE(#1,136,7,58,61) :: CALL SPRITE(#2,39,5,94,161) :: RETURN
3050 CALL LINK("S7B") :: GOTO 3052
3051 CALL LINK("RS5") :: CALL LINK("AK")
3052 R=7 :: C=17 :: BR=42 :: BC=125 :: GR=106 :: GC=93 :: CALL SPRITE(#1,136,7,42,125) :: CALL SPRITE(#2,39,5,110,97) :: RETURN
3060 CALL LINK("S7C") :: GOTO 3062
3061 CALL LINK("RS6") :: CALL LINK("AK")
3062 R=5 :: C=9 :: BR=26 :: BC=61 :: GR=122 :: GC=157 :: CALL SPRITE(#1,136,7,26,61) :: CALL SPRITE(#2,39,5,126,161) :: RETURN
3070 CALL LINK("S8A") :: GOTO 3072
3071 CALL LINK("RS7") :: CALL LINK("AK")
3072 R=8 :: C=8 :: BR=50 :: BC=53 :: GR=98 :: GC=165 :: CALL SPRITE(#1,136,7,50,53) :: CALL SPRITE(#2,39,5,102,169) :: RETURN
3080 CALL LINK("S9A") :: GOTO 3082
3081 CALL LINK("RS8") :: CALL LINK("AK")
3082 R=9 :: C=17 :: BR=58 :: BC=125 :: GR=90 :: GC=93 :: CALL SPRITE(#1,136,7,58,125) :: CALL SPRITE(#2,39,5,94,97) :: RETURN
3090 CALL LINK("S9B") :: GOTO 3092
3091 CALL LINK("RS9") :: CALL LINK("AK")
3092 R=19 :: C=9 :: BR=138 :: BC=61 :: GR=138 :: GC=157 :: CALL SPRITE(#1,136,7,138,61) :: CALL SPRITE(#2,39,5,142,161) :: RETURN
3100 CALL LINK("S10A") :: GOTO 3122
3101 CALL LINK("RSA") :: CALL LINK("AK") :: GOTO 3122
3110 CALL LINK("S10B") :: GOTO 3122
3111 CALL LINK("RSB") :: CALL LINK("AK") :: GOTO 3122
3120 CALL LINK("S10D") :: GOTO 3122
3121 CALL LINK("RSD") :: CALL LINK("AK")
3122 R=2 :: C=6 :: BR=2 :: BC=37 :: GR=146 :: GC=181 :: CALL SPRITE(#1,136,7,2,37) :: CALL SPRITE(#2,39,5,150,185) :: RETURN
3130 CALL LINK("S10C") :: GOTO 3132
3131 CALL LINK("RSC") :: CALL LINK("AK")
3132 R=2 :: C=8 :: BR=2 :: BC=53 :: GR=146 :: GC=165 :: CALL SPRITE(#1,136,7,2,53) :: CALL SPRITE(#2,39,5,150,169) :: RETURN
3140 CALL LINK("S10E") :: GOTO 3142
3141 CALL LINK("RSE") :: CALL LINK("AK")
3142 R=4 :: C=8 :: BR=18 :: BC=53 :: GR=130 :: GC=165 :: CALL SPRITE(#1,136,7,18,53) :: CALL SPRITE(#2,39,5,134,169) :: RETURN
4000 A1$="LT MAZES" :: A2$="single" :: A3$="goal" :: A4$="Mazes created by" :: A5$="Andrea Gilbert" :: A6$="(www.clickmazes.com)" :: A7$="Used with permission"
4005 A8$="TI XBASIC programming by" :: A9$="Norman Rokke" :: A10$="e-mail n_rokke@yahoo.com" :: A11$="2017" :: A12$="Press D for Directions" :: A13$="Press M for Menu"
4010 B1$="A red ball sits in a flat" :: B2$="tray containing a blue" :: B3$="square (goal). The challenge" :: B4$="is to guide the ball around"
4015 B5$="the tray and collect the" :: B6$="blue square. Tilt the tray" :: B7$="to literally, start the" :: B8$="ball rolling. The ball rolls"
4020 B9$="in a straight line until it" :: B10$="hits a wall. You can then" :: B11$="tilt again."
4025 C1$="A)S5A (5X5)   H)S9A (9X9)" :: C2$="B)S6A (6X6)   I)S9B (9X9)" :: C3$="C)S6B (6X6)   J)S10A (10X10)" :: C4$="D)S7A (7X7)   K)S10B (10X10)"
4030 C5$="E)S7B (7X7)   L)S10C (10X10)" :: C6$="F)S7C (7X7)   M)S10D (10X10)" :: C7$="G)S8A (8X8)   N)S10E (10X10)" :: C8$="Select your maze by Letter"
4900 RETURN
5000 CALL MAGNIFY(2) :: CALL SPRITE(#1,84,2,4,80) :: CALL SPRITE(#2,73,2,4,96) :: DISPLAY AT(2,13):A1$
5005 RETURN
5100 DISPLAY AT(4,12):A2$ :: DISPLAY AT(5,13):A3$ :: DISPLAY AT(8,7):A4$ :: DISPLAY AT(10,8):A5$ :: DISPLAY AT(11,5):A6$ :: DISPLAY AT(13,5):A7$ :: DISPLAY AT(15,3):A8$
5105 DISPLAY AT(17,9):A9$ :: DISPLAY AT(18,3):A10$ :: DISPLAY AT(20,13):A11$ :: DISPLAY AT(22,4):A12$ :: DISPLAY AT(23,7):A13$
5110 RETURN
5200 DISPLAY AT(9,4):B1$ :: DISPLAY AT(10,1):B2$ :: DISPLAY AT(11,1):B3$ :: DISPLAY AT(12,1):B4$ :: DISPLAY AT(13,1):B5$ :: DISPLAY AT(14,1):B6$ :: DISPLAY AT(15,1):B7$ :: DISPLAY AT(16,1):B8$
5205 DISPLAY AT(17,1):B9$ :: DISPLAY AT(18,1):B10$ :: DISPLAY AT(19,1):B11$ :: DISPLAY AT(22,7):A13$
5210 RETURN
5220 CALL CLEAR :: CALL MAGNIFY(2) :: GOSUB 5000
5300 DISPLAY AT(7,1):C1$ :: DISPLAY AT(9,1):C2$ :: DISPLAY AT(11,1):C3$ :: DISPLAY AT(13,1):C4$ :: DISPLAY AT(15,1):C5$ :: DISPLAY AT(17,1):C6$ :: DISPLAY AT(19,1):C7$ :: DISPLAY AT(22,2):C8$
5305 CALL KEY(0,K,S)
5310 IF S=0 THEN 5305
5320 _1=POS("AaBbCcDdEeFfGgHhIiJjKkLlMmNn",CHR$(K),1)
5325 IF _1<1 THEN 5305
5330 P=INT((_1+1)/2)
5335 _3=-1 :: RETURN
7000 M=-1 :: GOTO 7020
7010 M=1
7020 D=0
7030 F=R+M
7040 CALL GCHAR(F,C,G)
7050 IF G=129 THEN 7080
7060 D=D+1 :: R=F+M
7070 GOTO 7030
7080 IF D=0 THEN 7140
7090 Q=BR+16*D*M
7100 FOR I=BR TO Q STEP M
7110 CALL LOCATE(#1,I,BC)
7120 NEXT I
7130 BR=Q
7140 GOTO 7640
7500 M=-1 :: GOTO 7520
7510 M=1
7520 D=0
7530 F=C+M
7540 CALL GCHAR(R,F,G)
7550 IF G=132 THEN 7580
7560 D=D+1 :: C=F+M
7570 GOTO 7530
7580 IF D=0 THEN 7640
7590 Q=BC+16*D*M
7600 FOR I=BC TO Q STEP M
7610 CALL LOCATE(#1,BR,I)
7620 NEXT I
7630 BC=Q
7640 CALL COINC(ALL,_2)
7650 IF _2<>-1 THEN 7740
7655 IF P<>2 THEN 7670
7660 DISPLAY AT(10,5)SIZE(17):"CONGRATULATIONS!!"
7662 GOTO 7680
7670 DISPLAY AT(11,5)SIZE(17):"CONGRATULATIONS!!"
7680 CALL LINK("ED")
7690 CALL KEY(0,K,S)
7700 IF S=0 THEN 7690
7710 _1=POS("RrQqMm",CHR$(K),1)
7720 IF _1<1 THEN 7690
7730 _1=INT((_1+1)/2)+4
7740 RETURN
8000 CALL DELSPRITE(ALL) :: CALL CLEAR
8005 END
