Abstract:
A translation system for directing an optical signal through predeterminedoordinates of a window mounted in a soil penetration probe includes a tube having a sidewall and an aperture through said sidewall; an optically transparent window mounted in said aperture; an optical system for emitting an optical signal through said aperture; and a translation mechanism mounted within said tube. The translation mechanism may be selectively operated to translate independently and simultaneously the optical system along two orthogonal vectors so that the optical signal scans across the window. Scanning the optical signal extends the useful life of the window before its transmissibility becomes too impaired by damage caused from the optical signal.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This is a continuation-in-part of application Ser. No. 08/820,662 (Navy Case No. 78165) filed Mar. 17, 1997, pending, entitled Laser Induced Breakdown Spectroscopy Soil Contamination Probe. 
    
    
     BACKGROUND OF THE INVENTION 
     The present invention generally relates to the field of soil penetration probes, and more particularly, to a translation mechanism for directing an optical signal emitted by an optical system mounted in a soil penetration probe through predetermined coordinates of a window fitted in the wall of the probe. 
     Increasing concern with soil and groundwater contamination and governmentally mandated requirements to clean up hazardous waste sites have created a need for cost effective systems and methods for determining the characterization of a subsurface environments. In response to such needs, soil-penetrating probes have been developed generally comprising a tube with a tapered tip, which is forced into the ground. Instrumentation inside the tube detects various properties of the surrounding geological environment. 
     Laser induced Breakdown Spectroscopy (LIBS) is a method for detecting the presence of various elements in a sample by directing a high power emission from a laser onto the sample to form a plasma. The plasma then is analyzed spectroscopically to determine the composition of the sample. The LIBS technique offers promise as a method suitable for use with a soil-penetrating probe to detect heavy metal contamination in soil, because it is highly sensitive and requires no sample preparation. Usually the LIBS technique involves delivery of the laser energy to the sample through air due to the high power densities required to ionize the sample. Recently, fiber optic cable has been used successfully in LIBS measurements, allowing measurement of samples that are located at a considerable distance away from the excitation laser and analyzing equipment. 
     In a typical LIBS probe, laser light emitted from an optical fiber is collimated and then directed through a focusing lens and into the surrounding soil through a window mounted in the wall of the probe. However, the laser energy density required to stimulate the soil to generate atomic emissions tends to damage the sapphire window generally used in such probes. After several bursts of laser energy, the windows are damaged to the extent that the capability of the LIBS probe to detect atomic emissions from the soil is greatly impaired. Continued use of the probe requires that it be withdrawn from the soil so that the window may be replaced. Such repair is time consuming and hence, costly. Therefore, a need exists for a way to extend the life of the window to reduce the frequency of replacement. 
     SUMMARY OF THE INVENTION 
     The present invention provides a translation system for supporting an optical system so that an optical signal emitted from the optical system may be directed through predetermined coordinates. The invention is particularly well suited for directing the optical signal through predetermined coordinates of a window fitted in the wall of a soil penetration probe. Scanning the optical signal extends the useful life of the window by presenting fresh window area to the optical signal in applications in which the window becomes obscured due to damage from the optical signal. The translation system and optical system are typically mounted in a soil penetration probe. The invention includes a tube having a sidewall and an aperture through the sidewall; an optically transparent window mounted in the aperture; an optical system for emitting an optical signal through the aperture; and a translation mechanism mounted within the tube. The translation mechanism may be selectively operated to translate independently and simultaneously the optical system along two orthogonal vectors. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a translation system embodying various features of the present invention. 
     FIG. 2 is an exploded view of an example of one embodiment of the translation system of FIG. 1. 
     FIG. 3 is a cross-sectional view of the frame of FIG. 2. 
     FIG. 4 shows an embodiment of the translation system wherein the motor drive systems each include a stepper motor and a gear reducer. 
     FIG. 5 shows an optical system mounted on the cam follower of the translation system all mounted within a tube. 
     FIG. 6 is block diagram of the control system for controlling the operation of the stepping motors shown in FIG. 4. 
     FIG. 7 illustrates illumination spots from the optical signal arranged in a circular pattern on the sapphire window. 
    
    
     Throughout the several views, like elements are referenced using like references. 
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, there is shown a translation system 300 which supports an optical system 332 so that the optical output signal 382 (FIG. 5) of the optical system 332 may be scanned in two orthogonal directions independently of one another. The translation system 300 includes a motor drive system 304 which is coupled to a cam 308 by a screw drive 312, a motor drive system 316 coupled to a cam 320 by a screw drive 324, a cam follower 328, a frame 330, and a spring 326. Rotation of the screw drive 312 by motor drive system 304 causes cam 308 to slide within frame 330 along translation axis a--a. Similarly, rotation of the screw drive 324 by motor drive system 316 causes cam 320 to slide within frame 330 along translation axis a--a. Cam 308 has a generally planer cam surface 309 having a normal 311 which defines an angle α 1  with respect to the translation axis a--a, where α 1  ≠0. Cam 320 has a generally planer cam surface 321 having a normal 323 which defines an angle α 2  with respect to translation axis a--a, where α 2  ≠0, and preferably, where α 2  =180°-α 1 , and by way of example, α 1  preferably may be in the range of about 30°. Cam follower 328 has cam follower surfaces, 329 and 331, which are parallel to cam follower surfaces 309 and 321, respectively. Spring 326 interposed between frame 330 and cam follower 328 forces cam follower 328 against cams 308 and 320. 
     When cams 308 and 320 are both directed to move in the direction of A by an equal distance, cam follower 328 and optical system 332 are moved in the +X direction. Conversely, when cams 308 and 320 are both directed to move in the direction of B by an equal distance, cam follower 328, and hence, optical system 332 are moved in the -X direction. When cams 308 and 320 are moved towards each other, the cam surfaces 309 and 321 pushing against cam follower surfaces 329 and 331, respectively, force cam follower 328 to move in the +Y direction of C. When cams 308 and 320 are moved away from each other, the cam surfaces 309 and 321 spread apart so that spring 326 pushes cam follower 328 in the -Y direction of D. The directions of A and B are both orthogonal to the directions of C and D. 
     An example of one embodiment of translation system 300 is shown in FIG. 2. Frame 330 preferably comprises cylindrical half-shells 340 and 342 in which are formed rectangular channels 341 and 343, respectively. When half-shells 340 and 342 are assembled, the rectangular channels 341 and 343 define a bore 345 having a rectangular cross-sectional area, as shown in FIG. 3, and the exterior of frame 330 is generally cylindrically shaped. Half shell 340 includes mounting surfaces 347a and 347b through which are formed apertures 349. Half-shell 342 includes mounting surfaces 351a and 351b in which are formed threaded apertures 359. The half shells 340 and 342 are assembled to form frame 330 whereby mating surfaces 347a and 351a are placed in contact with each other, and mating surfaces 347b and 351b are placed in contact with each other. The half-shells are fastened together by fitting threaded fasteners 370 through apertures 349 and threading them into threaded apertures 359. Aperture 352 is formed in cylindrical half-shell 340 and provides a portal through which optical signal (FIG. 5) may pass. 
     Still referring to FIG. 2, cam 320 may be generally shaped as a trapezoid having a generally planar cam surface 309 on which a lip, or flange 342 is formed at one end. Cam 308 is configured as generally a mirror image of cam 320. Cam 308 has a generally planar cam surface 321 on which a lip, or flange 350 is formed at one end. Cam follower 328 further includes lips, or flanges 346 and 348 formed at the undersides of planar surfaces 329 and 331, respectively. Cam follower 328 includes two slotted recesses 351 and 353 formed in sidewall 361, which receive springs 326a and 326b, respectively. Springs 326a and 326b are also fitted in slots 355 and 357, respectively, in flange 351b of half-shell 342 and are held in place when the shells are fastened together. Springs 326a and 326b urge cam follower 328 against cams 320 and 308. Screw drives 324 and 312 are threaded into cams 320 and 308, respectively, in accordance with well-known techniques. Screw drives 324 and 312 are coupled to the output shafts, not shown, of motor drive systems 316 and 304. 
     Cams 308 and 320 and cam follower 328 are preferably made of a material having self-lubricating properties, such as Nylon® or Delrin®, although in one embodiment of the invention, cam follower 328 was made of aluminum. Cams 308 and 320 are constrained to smoothly slide within bore 345 (FIG. 3) such that the lips 346 and 348 of cam follower 328 are in contact with lip 342 of cam 320 and with lip 350 of cam 308, respectively, in the manner of a lap joint. In the preferred embodiment of translation system 300, the angles α 1  and α 2  are on the order of about 30° and 150°, respectively, with respect to axis a--a. Moreover, as shown in FIG. 4, motor drive systems 304 and 316 may each be implemented to include a stepping motor 400 that is coupled to gear reducer 402 having, for example, a 30:1 reduction ratio. Screw drives 312 and 324 may each have 32 threads per inch, although other pitches may also be used. Cams 308 and 320 each have a width, W 1 , transverse to axis a--a. Cam follower 328 has a width, W 2 , transverse to axis a--a, where preferably, W 2  &lt;W 1  so that cam follower 328 has room to translate between cams 308 and 320 in the ±Y-directions within bore 345 of frame 330. 
     Optical system 332 is described with reference to FIG. 5 and includes optical fiber 106, terminator 204, collimating lens 206, prism 210, focusing lens 214, and support structure 217 mounted to cam follower 328. Optical signal 382 is ejected from optical fiber 106, collimated by collimating lens 206 and then is reflected by about 90° by prism 210. The reflected optical signal 382 is focused by focusing lens 214 and is directed through sapphire window 362 of tube 360. Focusing lens 214 is affixed to support structure 217. Translation system 300 is typically mounted in tube 360, an element of a soil penetration probe. Optical fiber 106, terminator 204, collimating lens 206, prism 210, focusing lens 214, tube 360, and window 362 are functionally interrelated and characterized as described in application Ser. No. 08/820,662 (Navy Case No. 78165), filed Mar. 17, 1997, entitled Laser Induced Breakdown Spectroscopy Soil Contamination Probe, incorporated herein by reference. The optical system 332 may be mounted on cam follower 328 within frame 330 so that optical signal 382 may be directed through aperture 352 of frame 330 and window 362 fitted in tube 360 (FIG. 5). 
     FIG. 6 illustrates an example of control system 420 for directing the operation of motor drive systems 304 and 316, and includes a computer 422, microcontroller 424, and stepping motor driver/controllers 426. Computer 422, such as a Pentium®-based PC, receives an input command signal 423, which may include information such as operating system parameters, start-up, and shutdown commands. A host BASIC editor/terminal program resides in computer 422 and operates while cam follower 328 is translated, causing optical signal 382 to irradiate window 362 at predetermined locations. Signal 423 may be provided by an input device (not shown) such as a keyboard, or even another computer. Computer 422 provides command signals 421 to microcontroller 424, which implements a program that controls the directions and angular displacements of the stepping motors 400. Command signals 421, by way of example, is an RS422 formal differential serial data signal which includes the programming for microcontroller 424, where such programming is exemplified in APPENDIX 1. By way of example, microcontroller 424 may include an EEPROM programmed with a computer program, such as exemplified in APPENDIX 1, which controls the translation of cam follower 328 so that the optical signal 382 scans window 362 in a predetermined pattern. The program may be written in BASIC 3.0. Microcontroller 424 generates a signal pair comprising a logic signal 425 and frequency signal 427 for each particular stepping motor 400. Each signal pair comprising logic signal 425 and frequency signal 427 is provided to a stepping motor driver/controller 426. Each stepping motor driver/controller 426, in turn, generates an appropriately 4-phased motor control output signal 430 for controlling the direction of rotation and number of steps of a stepping motor 400. Representative implementations of microcontroller 424, stepping motor driver controllers 426, and stepping motors 400 are provided in TABLE 1. An important feature of microcontroller 424 is that the angular positions of the stepping motors 400 only change when the logic level of input signal 429 is at a first predetermined logic level, as for example, a logic &#34;high,&#34; representing that optical signal 382 is being emitted from optical fiber 106. Conversely, the motor drive systems 304 and 316 are inhibited when the logic level of signal 429 is at a second logic level, such as a logic low,&#34; representing that optical signal 382 is not being emitted from optical system 332. This feature provides the benefit of optimizing the available transparent area of sapphire window 362. 
     
                       TABLE 1______________________________________Element      Reference No.                   Manufacturer                              Model No.______________________________________Microcontroller        424        MICROMINT  DOMINO-                   INC.       52AStepping motor driver/        426        HURST      9550controllerStepping motor        400        HURST      BAS-12______________________________________ 
    
     Translation mechanism 300 has the ability to selectively move the optical system 332 mounted on cam follower 328 independently in two orthogonal (X and Y) directions, and for example, may be employed to move the optical system 332 in a circular or any other suitable pattern. The purpose of this translation is to scan optical signal 382 through different regions of optical window 362 to extend the operational life of the sapphire window. Such scanning presents fresh window area to the optical signal 382, since the energy from the optical signal impairs the transmissibility of the window if the optical signal 382 were to dwell too long on one region of the window. 
     Motion in the X-direction is described with reference to FIGS. 1 and 4. The rotational direction of stepping motor 400 of motor drive system 304 is considered counter-clockwise (CCW) when looking at stepping motor 400 in the -X direction along axis a--a. The rotational direction of stepping motor 400 of motor drive system 316 is considered counter-clockwise (CCW) when looking at stepping motor 400 in the +X direction along axis a--a. Each stepping motor 400 of motor drive systems 308 and 316 requires, by way of example, 20 steps for 1 rotation of its output shaft (not shown). As previously stated, gear reducers 402 have, by way of example, reduction ratios of 30:1. Therefore, 30 rotations of a motors 400 will result in 1 rotation of corresponding drive screw 312 or 324, where it is to be understood that stepping motors 400, and hence, drive screws 312 and 324 may be driven independently of one another. Converting the number of motor steps into a translation distance in inches is obtained by ##EQU1## Therefore, 1&#34; of motion of a cam 320 or 308 in the positive or negative X-direction along axis a--a requires 19200 steps of a motor 400. 
     Motion in the Y-Direction, i.e., perpendicular to axis a--a is described with reference to FIG. 1. Cam follower surfaces 329 and 331 define, by way of example, 30° and 150° angles, respectively, with respect to axis a--a. Therefore, a translation of Δx will result in a translation of Δy given by ##EQU2## and using equation (1) and (3), the number of steps in the x direction for a given displacement in the y-direction is given in inches by 
     
         Δx.sub.steps =Δy·tan 60°(19200)(4) 
    
     Combinations of Δx and Δy displacements may be achieved using translation system 300 to move cam follower 328 and hence, optical system 332 mounted to cam follower 328, in a circular pattern. Shown in FIG. 7 is a circle 450, representing the area of window 362 (FIG. 5), having radius R and a beam spot 452, representing the area illuminated on window 362 by optical signal 382, having radius r. The number of spots 452 which fit on circle 450 without overlap is determined by ##EQU3## Therefore, the angle, θ, between each adjacent spot 452 is given by ##EQU4## The Host 52 Basic software operating in microprocessor 424 prompts a human to input the desired circle radius R and radius r of the beam spot 452 to computer 422 as input signal 423. Radius R of circle 450 is given by 
     
         R=X+Y                                                      (7) 
    
     Where 
     
         |X|=|R| cos θ→x.sub.steps =|R| cos θ(19200) Inches          (8) 
    
     And 
     
         |Y|=|R| sin θ→y.sub.steps =|R| sin θ·tan 60°(19200) Inches(9) 
    
     In order to transform between polar coordinates and the required stepper motor inputs two unit vectors are defined whose magnitude is a single CCW step of a given motor 400: 
     
         u.sub.ccw =+u is a single CCW step of the UP motor         (10) 
    
     And 
     
         d.sub.ccw =+d is a single CCW step of the DOWN motor       (11) 
    
     Combining the two unit vectors to transform between the polar coordinate reference frame and the motor rotation reference may be achieved by considering the relation between the rotation of a motor drive system 304 and/or 316 the corresponding translation of cams 308 and 320. Translation in the +X direction requires both motor drive systems 304 and 316 to rotate CW. Translation in the -X direction requires both motor drive systems 304 and 316 to rotate CCW. Motion in the +Y direction requires the motor drive system 304 to rotate CCW and motor drive system 316 to rotate CW. Motion in the -Y direction requires motor drive system 304 to rotate CW and motor drive system 316 to rotate CCW. In order to maintain proper contact between cam follower 328, and cams 308 and 320, for both +X and -X translations of cam follower, 328, cams 308 and 320 are generally translated equal distances in the same direction. 
     Thus, the vectors, X, Y, and R can be written in terms of motor steps as: 
     
         +X=|R| cos θ(19200)(u+d)           (12) 
    
     
         +Y=|R| sin θ(19200)tan 60°(u-d)(13) 
    
     
         R=X+Y=19200|R|(cos θ+sin θ tan 60°)u+192000|R|(cos θ-sin θ tan 60°)d                                              (14) 
    
     For a combination of input steps given by the coefficients of the rotation unit vectors (where CCW is + and CW is -) cam follower 328 moves in polar coordinates according to equation 14. 
     Software implemented by microcomputer 424, such as Host 52 BASIC, uses the values determined by equations (5) and (6) to compute the number of steps for the motor drive systems 304 and 316 by equations (8) and (9) to provide circular motion for cam follower 328 and optical system 332 in accordance with equation (14). 
     In a typical operation of translation system 300, cams 308 and 320 are started from the stops (max CCW displacement for motor drive system 316 and max CW for motor drive system 304) and then translated so that the optical signal 382 is centered in window 362. However, at this stage, optical signal 382 is not being emitted. Such positioning of cam follower 328 results from 6811 steps CW for motor drive system 304 and 6811 steps CCW for motor drive system 316. This &#34;centers&#34; optical system 332 with respect to window 362, where by way of example, window 362 has a useful area having a 0.375 inch diameter. While optical signal 382 is being generated, cam follower 328, and hence optical system 332, are positioned so that optical signal 382 is directed to the desired radius and angle on window 362 by the motor drive systems 304 and 316 according to equation (14). Optical signal 382 is moved from point to point on a given radius circle on window 362 as microcomputer 424 recalculates equation (14) for the various angles specified in equation (6) taking the difference in steps between the current position of cam follower 328 and its recalculated position. The software implemented in microcontroller 424 also steps the radius from the center of circle 450 (representing the center of window 362) at which the center of optical signal 382 irradiates window 362, i.e., the center of irradiation. Such stepping of the center of irradiation may be about one diameter of optical signal 382 after the completion of a circle to form a pattern of concentric circles with preferably no overlap. However, the scope of the invention includes directing translation system 300 so that optical signal 382 may irradiate window 362 in other suitable patterns as well. 
     If translation system 300 is going to be shutdown and later used again, the Host 52 BASIC software operating in microcomputer 424 has the capability to save all existing radii and angle parameters. Saving such parameters has the benefit of facilitating continuing use of system 300 so that optical system 332 is positioned whereby optical signal 382 illuminates window 362 at the immediately preceding spot of illumination. The benefit of this feature is that it allows optimum use of sapphire window 362 before the window needs to be replaced. 
     Obviously, many modifications and variations of the present invention are possible in light of the above teachings. It is therefore to be understood that within the scope of the appended claims, the invention may be practiced otherwise than as specifically described. 
     
                                           APPENDIX 1__________________________________________________________________________10 MTOP=3FFFH: GOSUB 192020 HZ=200:HZ = (461250/HZ):OPT1=0:OPT2=0:OPT3=030 IRAD=0:RAD=0:FD=0:FU=0:SS=340 INC=0:CHO=0:SP=0:AG=(PI/3)50 DIRECT1=0:DIRECT2=0:PTL1=0:PTL2=0:MOT=0:BLOCK1=0:BLOCK2=060 PRINT &#34;For motor direction and steps press:&#34;70 print &#34;at 51 Rad=&#34;,rad:print &#34;Irad=&#34;,irad:print &#34;Deltarad=&#34;,deltarad80 PRINT &#34;1 for DOWN motor&#34;90 PRINT &#34;2 for UP motor&#34;100 PRINT &#34;3 for both motors&#34;110 PRINT &#34;4 to start circle&#34;120 PRINT &#34;5 to retrieve circle position and continue&#34;130 PRINT &#34;6 to goto center from lock-out&#34;140 INPUT &#34;7 to end program&#34;,MOT150 IF MOT&lt;1 THEN GOTO 60160 IF MOT&gt;7 THEN GOTO 60170 IF MOT=1 THEN GOSUB 250180 IF MOT=2 THEN GOSUB 290190 IF MOT=3 THEN GOSUB 530200 IF MOT=4 THEN GOTO 1040210 IF MOT=5 THEN GOSUB 2100 : GOTO 1530220 IF MOT=6 THEN GOSUB 1820 : GOTO 60230 IF MOT=7 THEN END240 GOTO 60250 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT260 INPUT &#34;Enter amount of steps for DOWN motor&#34;,PTL1270 IF PTL1&lt;1 THEN GOTO 260280 INPUT &#34;Press 1 for IN or 2 for OUT for DOWN motor&#34;,DIRECT1290 IF DIRECT1&lt;1 THEN GOTO 280300 IF DIRECT1&gt;2 THEN GOTO 280310 IF DRIECT1=1 THEN PORT1=PORT1.OR.080H320 IF DIRECT1=2 THEN PORT1=PORT1.AND.04FH330 BLOCK1=0340 BLOCK1=BLOCK1+SS350 IF BLOCK1&gt;PTL1 THEN GOTO 800360 PUSH HZ,HZ,SS370 CALL 0F060H380 GOTO 340390 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT400 INPUT&#34;Enter amount of steps for UP motor&#34;,PTL2410 IF PTL2&lt;1 THEN GOTO 400420 INPUT &#34;Press 1 for IN or 2 for OUT for UP motor&#34;,DIRECT2430 IF DIRECT2&lt;1 THEN GOTO 420440 IF DIRECT2&gt;2 THEN GOTO 420450 IF DIRECT2=1 THEN PORT1=PORT1.AND.0BFH460 IF DIRECT2=2 THEN PORT1=PORT1.OR.040H470 BLOCK2=0480 BLOCK2=BLOCK2+SS490 IF BLOCK2&gt;PTL2 THEN GOTO 880500 PUSH HZ,HZ,SS510 CALL 0F064H520 GOTO 480530 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT540 INPUT &#34;Enter amount of steps for DOWN motor&#34;,PTL1550 IF PTL1&lt;1 THEN GOTO 540560 INPUT &#34;Enter amount of steps for UP motor&#34;,PTL2570 IF PTL2&lt;1 THEN GOTO 560580 INPUT &#34;Press 1 for IN or 2 for OUT for DOWN motor&#34;,DIRECT1590 IF DIRECT1&lt;1 THEN GOTO 580600 IF DIRECT1&gt;2 THEN GOTO 580610 IF DIRECT1=1 THEN PORT1=PORT1.OR.080H620 IF DIRECT1=2 THEN PORT1=PORT1.AND.04FH630 INPUT &#34;Press 1 for IN or 2 for OUT for UP motor&#34;,DIRECT2640 IF DIRECT2&lt;1 THEN GOTO 630650 IF DIRECT2&gt;2 THEN GOTO 630660 IF DIRECT2=1 THEN PORT1=PORT1.AND.0BFH670 IF DIRECT2=2 THEN PORT1=PORT1.OR.040H680 BLOCK1=0:BLOCK2=0690 IF BLOCK1&gt;PTL1.AND.BLOCK2&gt;PTL2 THEN GOTO 960700 BLOCK1=BLOCK1+SS710 IF BLOCK1&gt;PTL1 THEN GOTO 740720 PUSH HZ,HZ,SS730 CALL 0F060H740 BLOCK2=BLOCK2+SS750 IF BLOCK2&gt;PTL2.AND.BLOCK1&gt;PTL1 THEN GOTO 960760 IF BLOCK2&gt;PTL2 THEN GOTO 690770 PUSH HZ,HZ,SS780 CALL 0F064H790 GOTO 690800 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT&#34;]Press:&#34;810 PRINT &#34;1 to repeat or&#34;820 PINRT &#34;2 to return to main menu&#34;,OPT1830 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT840 IF OPT1&lt;1 THEN GOTO 800850 IF OPT1&gt;2 THEN GOTO 800860 IF OPT1=1 THEN GOTO 330870 IF OPT1=2 THEN RETURN880 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT&#34; Press:&#34;890 PRINT &#34;1 to repeat or&#34;900 INPUT &#34;2 to return to main menu &#34;,OPT2910 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT920 IF OPT2&lt;1 THEN GOTO 880930 IF OPT2&gt;2 THEN GOTO 880940 IF OPT2=1 THEN GOTO 470950 IF OPT2=2 THEN RETURN960 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT&#34;Press:&#34;970 PRINT &#34; 1 to repeat or&#34;980 INPUT &#34; 2 to return to main menu &#34;,OPT3990 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT1000 IF OPT3&lt;1 THEN GOTO 9601010 IF OPT3&gt;2 THEN GOTO 9601020 IF OPT3=1 THEN GOTO 6801030 IF OPT3=2 THEN RETURN1040 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT1050 INPUT &#34;Enter value for SPOT SIZE in um (range= 0 to 2000um)&#34;,SP1060 IF SP&lt;0 THEN GOTO 10501070 IF SP&gt;2000 THEN GOTO 10501080 SP=SP*.0001/2.541090 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT1100 INPUT &#34;Enter value for R in inches (range= 0 to .17)&#34;,RAD1110 IF RAD&lt;0 THEN 11001120 IF RAD&gt;.17 THEN 11001130 INC=0:FA=0:FB=0:AN=(SP/RAD);AN1=AN1140 DELTARAD=RAD-IRAD1150 print &#34;at 1072 Rad=&#34;,rad:print &#34;Irad=&#34;,irad:print &#34;Deltarad=&#34;,deltara1160 PRINT &#34;THE NUMBER OF STEPS IN THIS CIRCLE IS &#34;,2*PI/AN11170 V0=PORT1.AND.11180 IF V0=1 THEN PRINT : PRINT &#34;Turn the blue box off&#34;1190 FOR DELAY=1 TO 1000:NEXT DELAY1200 V0=PORT1.AND.11210 IF V0=1 THEN GOTO 11801220 DELTAFD=19200*DELTARAD*(COS(0)-TAN(AG)*SIN(0))1230 DELTAFU=19200*DELTARAD*(COS(0)+TAN(AG)*SIN(0))1240 ID=FD+DELTAFD:IU=FU+DELTAFU1250 DELTAFD=ABS(DELTAFD):DELTAFU=ABS(DELTAFU)1260 BLOCK1=0:BLOCK2=01270 PORT1=PORT1.AND.04FH:REM Down motor out1280 PORT1=PORT1.AND.0BFH:REM Up motor in1290 BLOCK1=BLOCK1+SS1300 PUSH HZ,HZ,SS1310 CALL 0F060H1320 BLOCK2=BLOCK2+SS1330 PUSH HZ,HZ,SS1340 CALL 0F064H1350 IF BLOCK1&gt;=DELTAFD.AND.BLOCK2&gt;=DELTAFU THEN GOTO 13701360 GOTO 12901370 V0=PORT1.AND.11380 IF V0=0 THEN PRINT : PRINT &#34;Turn blue box on&#34;1390 FOR DELAY=1 to 1000:NEXT DELAY1400 V0=PORT1.AND.11410 IF V0=0 THEN GOTO 13801420 IF V0=1 THEN GOTO 14301430 FD=0:FU=0:BLOCK1=0:BLOCK2=0:IRAD=RAD1440 FD=19200*RAD*(COS(AN)-TAN(AG)*SIN(AN))1450 FU=19200*RAD*(+TAN(AG)*SIN(AN)+COS(AN))1460 DELTAD=FD-ID:DELTAU=FU-IU1470 ID=FD:IU=FU1480 IF DELTAD&lt;0 THEN PORT1=PORT1.AND.04FH1490 IF DELTAD&lt;0 THEN PORT1=PORT1.OR.080H1500 IF DELTAU&gt;0 THEN PORT1=PORT.AND.0BFH1510 IF DELTAU&lt;0 THEN PORT1=PORT1.OR.040H1520 BLK1=ABS(DELTAD):BLK2=ABS(DELTAU)1530 V0=PORT1.AND.11540 IF V0=1 THEN GOSUB 17601550 CC=GET : IF CC=ASC(S) THEN GOTO 20101560 IF BLOCK1&gt;=BLK1 THEN GOTO 16001570 BLOCK1=BLOCK1+11580 PUSH HZ,HZ,11590 CALL 0F060H1600 IF BLOCK2&gt;=BLK2 THEN GOTO 16401610 BLOCK2=BLOCK2+11620 PUSH HZ,HZ,11630 CALL 0F064H1640 IF BLOCK1&gt;=BLK1.AND.BLOCK2&gt;=BLK2 THEN GOTO 16601650 GOTO 15301660 IF AN=2*PI THEN GOTO 17101670 IF RAD&lt;=0 THEN PRINT &#34;Finished!!!&#34; : STOP1680 AN=AN+AN1:BLK1=0:BLK2=01690 IF AN&lt;2*PI THEN GOTO 1430 ELSE AN=2*PI1700 GOTO 14301710 RAD=RAD-SP1720 AN=(SP/RAD):AN1=AN1730 print &#34;at 1690 Rad=&#34;,rad1740 PRINT &#34;THE NUMBER OF STEPS IN THIS CIRCLE IS&#34;,2*PI/AN11750 GOTO 14301760 PRINT:PRINT &#34;Motors stopped&#34;1770 CC=GET : IF CC=ASC(S) THEN GOTO 20201780 V0=PORT1.AND.11790 IF V0=0 THEN PRINT:PRINT &#34;Motors moving&#34;1800 IF V0=0 THEN RETURN1810 GOTO 17701820 PORT1=PORT1.AND.0BFH1830 PORT1=PORT1.OR.080H1840 BLOCK1=01850 BLOCK1=BLOCK1+SS1860 PUSH HZ,HZ,SS1870 CALL 0F060H1880 PUSH HZ,HZ,SS1890 CALL 0F064H1900 IF BLOCK1&gt;6811 THEN RETURN1910 GOTO 18501920 A=7000H : CS=184951930 READ D1940 IF (D=0A5H.AND.K=0A4H) THEN GOTO 19901950 XBY(A)=D1960 C=C+D:K=D1970 A=A+11980 GOTO 19301990 IF (C&lt;&gt;CS) THEN PRINT &#34;DATA ERROR IN SAVE CFG-&#34;,CS,C : STOP2000 RETURN2010 GOSUB 23102020 P=02030 PUSH P2040 CALL 7000H2050 POP S2060 PRINT2070 IF (S=0) THEN PRINT &#34;Storage OK&#34; ELSE PRINT &#34;Storage ERROR&#34; : END2080 GOSUB 21002090 END2100 P=02110 FOR X=0 TO 632120 XBY(7FC0H+X)=XBY(0F800H+(P*64)+X)2130 NEXT X2140 LD@ 7FC5H:POP SP:?&#34;SP=&#34;,SP,2150 LD@ 7FCBH:POP RAD:?&#34;RAD=&#34;,RAD,2160 LD@ 7FD1H:POP BLOCK1:?&#34;BLOCK1=&#34;,BLOCK1,2170 LD@ 7FD7H:POP BLOCK2:?&#34;BLOCK2=&#34;,BLOCK2,2180 LD@ 7FDDH:POP AN:?&#34;AN=&#34;,AN2190 LD@ 7FE3H:POP BLK1:?&#34;BLK1=&#34;,BLK1,2200 LD@ 7FE9H:POP BLK2:?&#34;BLK2=&#34;,BLK2,2210 LD@ 7FEFH:POP ID:?&#34;ID=&#34;,ID,2220 LD@ 7FF5H:POP IU:?&#34;IU=&#34;,IU,2230 LD@ 7FFBH:POP A:?A2240 AN1=(SP/RAD)2250 V0=PORT1.AND.12260 IF V0=0 THEN PRINT : PRINT &#34;Turn blue box on&#34;2270 FOR DELAY=1 TO 1000: NEXT DELAY2280 IF V0=0 THEN GOTO 22502290 RETURN2300 REM Store in RAM Buffer2310 PUSH SP:ST@ 7FC5H2320 PUSH RAD:ST@ 7FCBH2330 PUSH BLOCK1:ST@ 7FD1H2340 PUSH BLOCK2:ST@ 7FD7H2350 PUSH AN:ST@ 7FDDH2360 PUSH BLK1:ST@ 7FE3H2370 PUSH BLK2:ST@ 7FE9H2380 PUSH ID:ST@ 7FEFH2390 PUSH IU:ST@ 7FF5H2400 PUSH A:ST@ 7FFBH2410 RETURN2420 DATA 0C0H, 0A8H2430 DATA 0C2H, 0AFH2440 DATA 074H, 001H2450 DATA 012H, 000H, 030H2460 DATA 0C3H2470 DATA 0E9H2480 DATA 094H, 00AH2490 DATA 040H, 002H2500 DATA 079H, 009H2510 DATA 090H, 0D5H, 055H2520 DATA 074H, 0AAH2530 DATA 0F0H2540 DATA 090H, 0AAH, 0AAH2550 DATA 074H, 055H2560 DATA 0F0H2570 DATA 090H, 0D5H, 055H2580 DATA 074H, 0A0H2590 DATA 0F0H2600 DATA 074H, 040H2610 DATA 089H, 0F0H2620 DATA 0A4H2630 DATA 090H, 07FH, 0C0H2640 DATA 07AH, 000H2650 DATA 07BH, 0F8H2660 DATA 0C3H2670 DATA 02AH2680 DATA 0FAH2690 DATA 0E5H, 0F0H2700 DATA 03BH2710 DATA 0FBH2720 DATA 075H, 0F0H, 03FH2730 DATA 012H, 070H, 067H2740 DATA 07FH, 064H2750 DATA 0DFH, 0FEH2760 DATA 07EH, 000H2770 DATA 07FH, 064H2780 DATA 0E0H2790 DATA 0B5H, 0F0H, 002H2800 DATA 080H, 008H2810 DATA 0DEH, 0F8H2820 DATA 0DFH, 0F6H2830 DATA 078H, 0FFH2840 DATA 080H, 002H2850 DATA 078H, 000H2860 DATA 090H, 000H, 000H2870 DATA 0D5H, 082H, 0FDH2880 DATA 0D5H, 083H, 0FAH2890 DATA 0D0H, 0A8H2900 DATA 07AH, 000H2910 DATA 074H, 09AH2920 DATA 012H, 000H, 030H2930 DATA 022H2940 DATA 0E0H2950 DATA 0C0H, 082H2960 DATA 0C0H, 083H2970 DATA 08AH, 082H2980 DATA 08BH, 083H2990 DATA 0F0H3000 DATA 0A3H3010 DATA 0AAH, 082H3020 DATA 0ABH, 083H3030 DATA 0D0H, 083H3040 DATA 0D0H, 082H3050 DATA 0D5H, 0F0H, 003H3060 DATA 0F5H, 0F0H3070 DATA 022H3080 DATA 0A3H3090 DATA 080H, 0E4H3100 DATA 0A5H, 0A5H__________________________________________________________________________