REM"***************************‡" REM"*ƒ#######################*‡" REM"*ƒ#† BUMP BACK ƒ#*‡" REM"*ƒ# † COPYRIGHT ƒ#*‡" REM"*ƒ# ƒA.WHITTAKER #*‡" REM"*ƒ#######################*‡" REM"*ƒ# † CONSULTANT ƒ#*‡" REM"*ƒ# ƒK.ECCLESON ƒ#*‡" REM"*ƒ#######################*‡" REM"***************************‡" *FX4 1 REM *** SET UP PORT *** ?&FE62=15 REM *** TURN OFF MOTORS *** ?&FE60=0 REM *** TURN OFF HORN *** ?&FE6B=&10:?&FE6A=0:?&FE68=0 *K.10 O.|MRUN|M REM *** END ON ESCAPE *** ON ERROR ?&FE60=0:GOTO 950 PROCsound:PROCpokes MODE7:PROCprogmode:PROCinst:PROCinstr:MODE2 PROCscreen poke%=&FE60 peek%=&FE60 PROCforward END REM"****************************" REM"**** ƒSET UP DISPLAY ****" REM"****************************" REM DEF PROCscreen VDU17,129,17,3,18,0,132,16,18,0,0,23;8202;0;0;0;19,9,0;0;19,10,0;0;:PRINT TAB(0,0);SPC(60);TAB(5,1);"BUMP BACK" MOVE200,200:MOVE225,200:PLOT85,200,400:PLOT85,225,400:GCOL0,0:MOVE260,150:MOVE260,500:PLOT85,500,150:PLOT85,500,500:MOVE530,200:MOVE530,400:PLOT85,560,200:PLOT85,560,400:GCOL0,0:MOVE300,500:MOVE300,550:PLOT85,460,500:PLOT85,460,550 GCOL0,7:MOVE230,290:MOVE230,310:PLOT85,260,290:PLOT85,260,310:MOVE500,290:MOVE500,310:PLOT85,530,290:PLOT85,530,310:MOVE260,500:MOVE300,500:PLOT85,260,550:PLOT85,300,550:MOVE460,500:MOVE500,500:PLOT85,460,550:PLOT85,500,550 MOVE260,550:MOVE340,550:PLOT85,340,625:PLOT85,420,550:PLOT85,420,625:PLOT85,500,550:VDU18,0,3,18,0,129,5:P$="REKKERT":FOR I%=1TO7:MOVE350,(260+40*I%):PRINT MID$(P$,I%,1):NEXT:MOVE262,220:PRINT"MkVI":VDU4:PRINT TAB(0,30);" Escape to end "; GCOL0,1:MOVE260,550:MOVE260,600:PLOT85,360,575:PLOT85,360,625:MOVE500,550:MOVE500,600:PLOT85,400,575:PLOT85,400,625:GCOL0,9:MOVE360,625:DRAW260,650:PLOT1,8,4:DRAW368,629:GCOL0,10:MOVE400,625:DRAW500,650:PLOT1,-8,4:DRAW392,629 ENDPROC REM REM"****************************" REM"*****ƒ MOVE FORWARD *****" REM"****************************" REM DEF PROCforward:VDU28,11,28,19,4,17,130,12,17,0,19,9,3;0;19,10,3;0; PRINT TAB(2,10);" ALL "''" CLEAR "'''':IF PE% PRINT"Poke = 6"''"Peek =";?peek%;" " ?poke%=6:A1%=?peek%:IF A1%=198PROCbhit:ELSE IF A1%=214PROCblef:ELSE IF A1%=230PROCbrig SOUND1,-15,100,5:SOUND1,0,0,10:GOTO 350 REM REM"****************************" REM"*****ƒREVERSE LEFT HIT*****" REM"****************************" REM DEF PROCblef:VDU19,9,0;0;:PRINT TAB(2,10);"LEFT "''" BUMPED"'''':IF PE% PRINT"Poke = 15"''"Peek =";?peek%;" " PROCrev:VDU19,9,3;0;:ENDPROC REM REM"****************************" REM"****ƒREVERSE RIGHT HIT****" REM"****************************" REM DEF PROCbrig:VDU19,10,0;0;:PRINT TAB(2,10);"RIGHT "''" BUMPED"'''':IF PE% PRINT"Poke = 15"''"Peek =";?peek%;" " PROCrev:VDU19,10,3;0;:ENDPROC REM"****************************" REM"*****ƒREVERSE BOTH HIT*****" REM"****************************" DEF PROCbhit:VDU19,9,0;0;19,10,0;0;:PRINT TAB(2,10);"BOTH "''" BUMPED"'''':IF PE% PRINT"Poke = 15"''"Peek =";?peek%;" " PROCrev:VDU19,9,3;0;19,10,3;0;:ENDPROC REM REM"****************************" REM"*********ƒREVERSE**********" REM"****************************" REM DEF PROCrev:?poke%=15:SOUND&11,0,0,1:FOR I%=0TO255STEP8:TIME=0:delay%=266 REM *** DISTANCE BACK *** delay%=266 REPEAT:SOUND1,-15,10,2:SOUND1,-15,20,2:UNTIL TIME>delay%:?poke%=0:SOUND&11,0,0,0:?&FE6A=5:FOR I%=0TO255STEP8:?&FE68=I%:A=INKEY(10):NEXT:?&FE6A=0:ENDPROC DEF PROCinstr CLS PROCdo("‡BUMP INSTRUCTIONS",0):PROCdo("‡SENSOR SWITCH BLOCK '5' AND '7' 'ON'",3):PROCdo("‡ BULB 'OFF' "+CHR$156+"„"+CHR$157+"‡ TREKKER 'OFF' ",6) FOR I%=9TO23:VDU31,0,I%,132,157,131:NEXT:PRINT TAB(0,24);"‚";CHR$157;"ˆ„Press 'SPACE BAR' to continue.";:VDU28,3,23,39,9:PRINT'''"1) Set switches as above."'''"2) Place TREKKER on floor about 1 metre from wall."'''"3) Press 'SPACE BAR'." *FX15 1 VDU23;8202;0;0;0;:REPEAT UNTIL GET=32:CLS:PRINT TAB(0,5);"";CHR$157;SPC(31);"„";CHR$157TAB(0,6);"";CHR$157;CHR$141;"ˆ ‡TURN TREKKER ON NOW ! „";CHR$157TAB(0,7);"";CHR$157;CHR$141;"ˆ ‡TURN TREKKER ON NOW ! „";CHR$157 PRINT TAB(0,8);"";CHR$157;SPC(31);"„";CHR$157:VDU28,0,24,39,0:PROCdo("‡ BULB 'OFF' "+CHR$156+"„"+CHR$157+"‡ TREKKER 'ON'",6) *FX15 1 REPEAT UNTIL GET=32:ENDPROC DEF PROCinst:CLS:VDU23;8202;0;0;0;:A$=CHR$135+CHR$141+"In this mode Trekker will react to":B$=CHR$135+CHR$141+" his BUMP SENSORS":FOR L=0TO23:VDU31,0,L,132,157:NEXT:PRINT TAB(1,10);A$TAB(1,11);A$TAB(1,13);B$TAB(1,14);B$ FOR L=0TO5000:NEXT:ENDPROC DEF PROCprogmode:VDU23;8202;0;0;0;:CLS:PRINT TAB(9,10);CHR$132;CHR$157;CHR$135;CHR$141;"SENSOR MODE ";CHR$156;TAB(9,11);CHR$132;CHR$157;CHR$135;CHR$141;"SENSOR MODE ";CHR$156:FOR L=0TO3000:NEXT:ENDPROC DEF PROCdo(P$,Y%):FOR I%=0TO1:PRINT TAB(0,Y%+I%);"„"+CHR$157;CHR$141;P$:NEXT:ENDPROC DEF PROCdub(X,Y,A$):PRINT TAB(X,Y);CHR$141;A$;TAB(X,Y+1);CHR$141;A$;:ENDPROC DEF PROCsound VDU22,7,23;8202;0;0;0;:PRINT TAB(0,11);"":PRINT TAB(0,12);"‡";CHR$141;"DO YOU WANT SOUND (ˆY‰/ˆN‰)†ˆ?":PRINT TAB(0,13);"‡";CHR$141;"DO YOU WANT SOUND (ˆY‰/ˆN‰)†ˆ?":PRINT TAB(0,14);"" REPEAT:*FX202 32 *FX15 1 A$=GET$:UNTIL A$="Y" OR A$="N" IF A$="Y" THEN *FX210 0 IF A$="N" THEN *FX210 1 *FX4 1 ENDPROC DEF PROCpokes VDU22,7,23;8202;0;0;0;:PRINT TAB(0,11);"":PRINT TAB(0,12);"‡";CHR$141;"DO YOU WANT PEEK AND POKES (Y/N)":PRINT TAB(0,13);"‡";CHR$141;"DO YOU WANT PEEK AND POKES (Y/N)":PRINT TAB(0,14);"" REPEAT:*FX202 32 *FX15 1 A$=GET$:UNTIL A$="Y" OR A$="N" IF A$="Y" THEN PE%=TRUE IF A$="N" THEN PE%=FALSE *FX4 1 ENDPROC MODE7:VDU23;8202;0;0;0; ?&FE6A=0 PROCdub(0,1,"‚Pressf0‚to LOAD next program") PROCdub(0,4,"‚PressRETURN‚to REPEAT") *FX18 *K.0 1|MCH."PROG4"|M *K.10 O.|MRUN|M REPEAT:A$=GET$:REPEAT UNTIL A$=CHR$13ORA$=CHR$49 IF A$=CHR$13CLEAR:RUN FOR L=19TO23:PRINT TAB(0,L);"ƒ";:NEXT:VDU28,10,23,30,19 END