PROGRAM magnetismLIBRARY "mygraphics"DIM x(50),y(50),z(50),dLx(50),dLy(50),dLz(50)CALL wire(N,a,delta,x,y,z,dLx,dLy,dLz)CALL screen(a)DO   GET POINT xcursor,ycursor   CALL draw(N,delta,x,y,z,dLx,dLy,dLz,xcursor,ycursor)LOOP until (abs(xcursor) < .1) and (abs(ycursor) < .1)ENDSUB wire(N,a,delta,x(),y(),z(),dLx(),dLy(),dLz())    ! read in current segments    ! assume current equals unity    INPUT prompt "radius of loop = ": a    INPUT prompt "number of segments = ": N    ! magnitude of magnetic field line segment    INPUT prompt "delta = ": delta    LET delta_angle = 2*pi/N    LET angle = 0    LET dL = 2*pi*a/N    FOR i = 1 to N        LET x(i) = a*cos(angle)        LET y(i) = 0        LET z(i) = a*sin(angle)        ! direction of current segment at (x,y,z)        LET dLx(i) = -dL*sin(angle)        LET dLy(i) = 0        LET dLz(i) = dL*cos(angle)        LET angle = angle + delta_angle    NEXT iEND SUBSUB screen(a)    ! unit of distance is 1/10 screen width    CALL compute_aspect_ratio(3*a,xwin,ywin)    SET WINDOW -xwin,xwin,-ywin,ywin    BOX CIRCLE -a,a,-0.4,0.4    BOX AREA -0.1,0.1,-0.1,0.1    PRINT "Click with mouse to start line"    PRINT "Hit any key to stop line"    PRINT "Click on filled box and hit any key to end"END SUBSUB draw(N,delta,x(),y(),z(),dLx(),dLy(),dLz(),xcursor,ycursor)    LET rx = xcursor    LET ry = ycursor    DO       LET Bx = 0.0       LET By = 0.0       LET Bz = 0.0       FOR i = 1 to N           ! compute displacement from position to current segment           LET dx = rx - x(i)           LET dy = ry - y(i)           LET dz = zcursor - z(i)           LET r = sqr(dx*dx + dy*dy + dz*dz)           LET B0 = 1/(r*r*r)     ! assume current equals 1            ! B proportional to dL x r           LET Bx = Bx + B0*(dLy(i)*dz - dLz(i)*dy)           LET By = By + B0*(dLz(i)*dx - dLx(i)*dz)           LET Bz = Bz + B0*(dLx(i)*dy - dLy(i)*dx)       NEXT i       LET B = sqr(Bx*Bx + By*By + Bz*Bz)       LET rx = rx + delta*Bx/B   ! new position on flux line       LET ry = ry + delta*By/B       LET rz = rz + delta*Bz/B       PLOT rx,ry;    LOOP until key input    GET KEY kk                    ! reset key input    PLOTEND SUB