REM"***************************‡" REM"*ƒ#######################*‡" REM"*ƒ#† BEAM BREAKER ƒ #*‡" REM"*ƒ# † COPYRIGHT ƒ#*‡" REM"*ƒ# ƒA.WHITTAKER #*‡" REM"*ƒ#######################*‡" REM"*ƒ# † CONSULTANT ƒ#*‡" REM"*ƒ# ƒK.ECCLESON ƒ#*‡" REM"*ƒ#######################*‡" REM"***************************‡" REM *** SET UP PORT *** *FX4 1 ?&FE62=15 REM *** TURN OFF MOTORS *** ?&FE60=0 REM *** TURN OFF HORN *** ?&FE6B=&10:?&FE6A=0:?&FE68=0 REM *** END ON ESCAPE *** ON ERROR ?&FE60=0:GOTO 1090 *K.10 O.|MRUN|M PROCsound PROCpokes MODE7:PROCinstr:MODE2 PROCscreen poke=&FE60 peek=&FE60 PROCfollow END REM"****************************" REM"**** ƒ SET UP DISPLAY  ****" REM"****************************" REM DEF PROCscreen VDU17,129,17,3,18,0,132,16,18,0,0,19,10,0;0;19,9,0;0;23;8202;0;0;0; PRINT TAB(0,1);" BEAM BREAKER " PRINT TAB(0,0);SPC(20) PRINT TAB(0,2);SPC(20) MOVE200,200:MOVE225,200:PLOT85,200,400:PLOT85,225,400:MOVE260,150:MOVE260,500:PLOT85,500,150:PLOT85,500,500:MOVE530,200:MOVE530,400:PLOT85,560,200:PLOT85,560,400: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 REM VDU4:PRINT TAB(0,30);" Escape to end "; PROCcircle(380,600,30,9) ENDPROC REM REM"****************************" REM"*****ƒ DRAW L.D.R'S  *****" REM"****************************" REM DEF PROCcircle(x%,y%,r%,c%) GCOL0,c% FOR A%=0 TO 360 STEP 20 MOVEx%,y% MOVESIN(RAD(A%))*r%+x%,COS(RAD(A%))*r%+y% PLOT85,SIN(RAD(A%+20))*r%+x%,COS(RAD(A%+20))*r%+y% NEXT ENDPROC REM REM"****************************" REM"*****ƒ FOLLOW LIGHT *****" REM"****************************" REM DEF PROCfollow VDU28,11,28,19,4,17,130,12,17,0,19,9,3;0; PRINT TAB(2,10);" ON "''" BEAM "'''':IF PE% PRINT"Poke = 6"''"Peek =";?peek;" " ?poke=6 IF ?peek <> 230 THEN PROCstop SOUND1,-15,100,5 SOUND1,0,0,10 GOTO 590 REM REM"****************************" REM"***ƒ STOP IF BEAM BROKEN***" REM"****************************" REM DEF PROCstop VDU19,9,0;0; ?poke=0:REM"?poke=15 FOR BACK MOD" PRINT TAB(2,10);"BEAM"''" BROKEN"'''':IF PE% PRINT"Poke = 0"''"Peek =";?peek;" " SOUND&11,0,0,1:REPEAT SOUND1,-15,10,2 SOUND1,-15,20,2 UNTIL ?peek=224 SOUND&11,0,0,1 PRINT TAB(2,10);" ON "''" BEAM "'''':IF PE% PRINT"Poke = 6"''"Peek =";?peek;" " ?poke=6:REM"ƒRESTART MOTORS‡" VDU19,9,3;0; ENDPROC DEF PROCinstr CLS PRINT TAB(0,0);"„";CHR$157;CHR$141;"‡BEAM BREAKER INSTRUCTIONS" PRINT TAB(0,1);"„";CHR$157;CHR$141;"‡BEAM BREAKER INSTRUCTIONS" PRINT TAB(0,3);"„";CHR$157;CHR$141;"‡SENSOR SWITCH BLOCK '8' 'ON'" PRINT TAB(0,4);"„";CHR$157;CHR$141;"‡SENSOR SWITCH BLOCK '8' 'ON'" PRINT TAB(0,6);"„";CHR$157;CHR$141;"‡ BULB 'OFF' ";CHR$156;"„";CHR$157;"‡ TREKKER 'OFF' " PRINT TAB(0,7);"„";CHR$157;CHR$141;"‡ BULB 'OFF' ";CHR$156;"„";CHR$157;"‡ TREKKER 'OFF' " FOR I%=9 TO 23 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." PRINT''"2) Place TREKKER facing a desk lamp, torch or window."''" This light must be strong." PRINT''"3) Press 'SPACE BAR'." VDU23;8202;0;0;0; REPEAT UNTIL GET=32 CLS PRINT TAB(0,5);"";CHR$157;SPC(31);"„";CHR$157 PRINT TAB(0,6);"";CHR$157;CHR$141;"ˆ ‡TURN TREKKER ON NOW ! „";CHR$157 PRINT TAB(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 PRINT TAB(0,6);"„";CHR$157;CHR$141;"‡ BULB 'OFF' ";CHR$156;"„";CHR$157;"‡ TREKKER 'ON' " PRINT TAB(0,7);"„";CHR$157;CHR$141;"‡ BULB 'OFF' ";CHR$156;"„";CHR$157;"‡ TREKKER 'ON' " REPEAT UNTIL GET=32 ENDPROC MODE7:VDU23;8202;0;0;0;:GOTO 1300 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; PROCdub(0,1,"‚Pressf0‚to LOAD next program") PROCdub(0,4,"‚PressRETURN‚to REPEAT") PRINT'' PROCdub(0,4,"‚PressRETURN‚to REPEAT") *FX18 *K.10 O.|MRUN|M *K.0 1|MCH."MAGNET"|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