10 REM TITLE 20 REM Keith Anderson 30 REM (c) CET 1983 Published by BBC Publications 40 REM version 2.0 50 : 60 ON ERROR IF ERR=17 THEN GOTO 720 ELSE MODE7:REPORT:PRINT" at line ";ERL:END 70 MODE 7 80 IF?B%<>9THEN PRINT TAB(0,3) CHR$ 130; "BBC Buggy" TAB(0,5) CHR$ 131; "Please wait while" TAB(0,6) CHR$ 131; "TITLE sequence is loaded...":PRINT:*LOAD"BTITLE" 90 B%=&6FE0:HIMEM=B% 100 PROCoff 110 PROCsetup 120 PROCgra 130 PROCinit (25) 140 PROCcop (d,c) 150 PROCscol 160 PROCstart 170 PROCcop (c,d) 180 PROCcop (c,s) 190 PROCS (BU,9,10) 200 PROCcop (c,d) 210 PROCD 220 PROCcop (s,c) 230 PROCS (BL,8,10) 240 PROCcop (c,d) 250 FOR I=1 TO 3000 260 NEXT 270 PROCA (2820) 280 PROCA (2830) 290 PROCA (2840) 300 PROCcop (s,c) 310 PROCcol (0) 320 PROCS (B,9,34) 330 PROCS (U,8,22) 340 PROCcop (c,s) 350 PROCcol (1) 360 PROCpush (46,34,-2,3,2690) 370 PROCD 380 PROCcol (0) 390 PROCS (BD,8,34) 400 PROCcol (1) 410 PROCS (BR,8,34) 420 PROCcop (c,d) 430 PROCcol (0) 440 PROCS (BR,8,34) 450 PROCS (Y,18,34) 460 PROCS (B,29,34) 470 PROCcop (c,s) 480 PROCcol (1) 490 PROCB (2850) 500 PROCE (2860) 510 PROCD 520 PROCcop (s,c) 530 PROCS (BR,38,22) 540 PROCcop (c,d) 550 PROCB (2900) 560 PROCB (2910) 570 PROCE (2920) 580 PROCA (2960) 590 PROCA (2970) 600 FOR D=1 TO 2000 610 NEXT 620 FOR J%=20 TO 7 STEP -1 630 PRINT TAB(4,J%) CHR$ N%; 640 SOUND 1,1,90-(J%*4),2 650 FOR D=1 TO 40 660 NEXT 670 NEXT 680 FOR D=1 TO 500 690 NEXT 700 : 710 : 720 MODE 7 730 PROCon 740 PRINT TAB(9,2) CHR$ 131 "Buggy programs" 750 C$ = CHR$ 130 760 D$ = CHR$ 134 770 RESTORE 3010 780 FOR I%=6 TO 18 790 READ name$,title$ 800 PRINT TAB(2,I%) C$ name$ TAB(25,I%) D$ "(" title$ ")" 810 NEXT 820 PRINT TAB(3,20) 830 END 840 : 850 : 860 DEF PROCA (line) 870 RESTORE line 880 READ P1,P2,P3,P4,P5,Q1,Q2,Q3 890 PROCpush (P1,P2,P3,P4,P5) 900 PROCD 910 PROCcop (s,c) 920 PROCS (Q1,Q2,Q3) 930 PROCcop (c,d) 940 ENDPROC 950 : 960 : 970 DEF PROCB (line) 980 RESTORE line 990 READ P1,P2,P3,P4,P5,Q1,Q2,Q3 1000 PROCpush (P1,P2,P3,P4,P5) 1010 PROCC (Q1,Q2,Q3) 1020 PROCcop (c,s) 1030 ENDPROC 1040 : 1050 : 1060 DEF PROCC (Q1,Q2,Q3) 1070 PROCcol (0) 1080 PROCS (Q1,Q2,Q3) 1090 PROCcol (1) 1100 ENDPROC 1110 : 1120 : 1130 DEF PROCD 1140 FOR D=1 TO 300 1150 NEXT 1160 SOUND 1,-15,180,1 1170 ENDPROC 1180 : 1190 : 1200 DEF PROCE (line) 1210 RESTORE line 1220 READ S1,S2,S3,L1,L2,S4,S5,S6,S7,S8,S9,L3 1230 PROCD 1240 PROCcop (s,c) 1250 PROCS (S1,S2,S3) 1260 PROCcop (c,d) 1270 PROCA (L1) 1280 PROCA (L2) 1290 PROCcol (0) 1300 PROCS (S4,S5,S6) 1310 PROCS (S7,S8,S9) 1320 PROCcol (1) 1330 PROCcop (c,s) 1340 PROCB (L3) 1350 ENDPROC 1360 : 1370 : 1380 DEF PROCM 1390 SOUND 0,1,200,1 1400 FOR D=1TO 30 1410 NEXT 1420 ENDPROC 1430 : 1440 : 1450 DEF PROCS (A%,X%,Y%) 1460 !&72 = A(A%)+1 1470 ?&77 = X% 1480 ?&78 = Y% 1490 ?&76 = ?A(A%) 1500 CALL sp 1510 ENDPROC 1520 : 1530 : 1540 DEF PROCcol (C%) 1550 ?&83 = C% 1560 ENDPROC 1570 : 1580 : 1590 DEF PROCcop (f,t) 1600 ?&7B = 0 1610 ?&7C = f 1620 ?&7D = 0 1630 ?&7E = t 1640 CALL cop 1650 ENDPROC 1660 : 1670 : 1680 DEF PROCgra 1690 CALL gra 1700 ENDPROC 1710 : 1720 : 1730 DEF PROCinit (g) 1740 ?&8A = g 1750 ?&8B = (25-g)*3 1760 ENDPROC 1770 : 1780 : 1790 DEF PROCoff 1800 VDU 23;11,0;0;0;0; 1810 ENDPROC 1820 : 1830 : 1840 DEF PROCon 1850 VDU 23;11,255;0;0;0; 1860 ENDPROC 1870 : 1880 : 1890 DEF PROCpush (start,finish,step,number,line) 1900 FOR X%=start TO finish STEP step 1910 RESTORE line 1920 PROCM 1930 PROCcop (s,c) 1940 FOR J%=1 TO number 1950 READ R1,R2,R3 1960 PROCS (R1,R2,R3) 1970 NEXT 1980 PROCcop (c,d) 1990 NEXT 2000 ENDPROC 2010 : 2020 : 2030 DEF PROCscol 2040 ?&7F = L% 2050 ?&80 = 157 2060 ?&81 = N% 2070 CALL sc 2080 ENDPROC 2090 : 2100 : 2110 DEF PROCsetup 2120 ENVELOPE 1,2,0,0,0,0,0,0,40,-4,-100,-100,126,0 2130 ENVELOPE 0,2,0,0,0,0,0,0,40,-4,-100,-100,126,0 2140 DIM A(?B%) 2150 L = 0 2160 FOR I=1 TO ?B% 2170 L = L+1 2180 L = L+LEN($(B%+L))+1 2190 A(I) = B%+L 2200 L = L+?(B%+L) 2210 NEXT 2220 c = &78 2230 d = &7C 2240 s = &74 2250 B = 1 2260 C = 2 2270 G = 3 2280 U = 4 2290 Y = 5 2300 BU = 6 2310 BL = 7 2320 BR = 8 2330 BD = 9 2340 Q% = &726B 2350 sp = &73A9 2360 gra = &72D7 2370 sc = &728A 2380 cop = &73D2 2390 L% = 130 :REM screen border colour 2400 N% = 134 :REM screen centre colour 2410 RESTORE 2620 2420 FOR J%=24 TO 0 STEP -1 2430 READ A 2440 Q%?J% = A 2450 NEXT 2460 ENDPROC 2470 : 2480 : 2490 DEF PROCstart 2500 PROCS (B,9,34) 2510 PROCS (Y,18,34) 2520 PROCS (B,29,34) 2530 PROCS (U,8,22) 2540 PROCS (B,19,22) 2550 PROCS (C,28,22) 2560 PROCS (G,18,10) 2570 PROCS (G,28,10) 2580 ENDPROC 2590 : 2600 : 2610 REM Graphic screen colours:_ 2620 DATA 17,17,20,20,20,20,20,20,20,20,17,17,17,17,21,21,21,21,20,20,20,20,20,20,20 2630 : 2640 : 2650 REM Data for Buggy movements 2660 DATA BL,X%,10 2670 DATA BU,-2,X% 2680 DATA BR,X%,46 2690 DATA BD,8,X%,B,9,X%-12,U,8,X%-24 2700 DATA BR,X%,34,Y,X%+10,34,B,X%+21,34 2710 DATA BU,28,X% 2720 DATA BR,X%,46 2730 DATA BD,38,X%,Y,38,X%-12 2740 DATA BR,X%,22 2750 DATA BL,X%,34,B,X%-9,34 2760 DATA BU,8,X% 2770 DATA BL,X%,46 2780 DATA BD,-2,X%,B,-1,X%-12 2790 DATA BD,-2,X% 2800 DATA BR,X%,34 2810 : 2820 DATA 8,-2,-2,1,2660,BU,-2,10 2830 DATA 10,46,2,1,2670,BR,-2,46 2840 DATA -2,8,2,1,2680,BD,8,46 2850 DATA 8,28,2,3,2700,BR,28,34 2860 DATA BU,28,34,2870,2880,BD,38,46,Y,38,34,2890 2870 DATA 34,46,2,1,2710,BR,28,46 2880 DATA 28,38,2,1,2720,BD,38,46 2890 DATA 46,22,-2,2,2730,BD,38,22 2900 DATA 38,60,2,1,2740,B,49,34 2910 DATA 58,8,-2,2,2750,BL,8,34 2920 DATA BU,8,34,2930,2940,BD,-2,46,B,-1,34,2950 2930 DATA 34,46,2,1,2760,BL,8,46 2940 DATA 8,-2,-2,1,2770,BD,-2,46 2950 DATA 46,22,-2,2,2780,BD,-2,22 2960 DATA 22,34,2,1,2790,BR,-2,34 2970 DATA -2,18,1,1,2800,BU,18,34 2980 : 2990 : 3000 REM Data for list of programs 3010 DATA TEST,TEST,SWITCH,SWITCH,MEMORY SWITCH,MSWITCH,ROUTE PLANNER,RPLAN,RECORDER,RECORDR,SNAIL,SNAIL 3020 DATA EXPLORE FOR WALL,EXWALL,EXPLORE FOR OBJECT,EXOBJ,BAR CODE ROUTE PLANNER,BARPLAN,TIN PAN ALLEY,ALLEY,MAN v BUGGY,MVB,SUN SEEKER,SUNSEEK,LINE FOLLOWER,LINE 3030 : 3040 :