10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  *******************
20  REM
30  REM              BFIELD:  MAGNETIC FIELD PICTURE
40  REM
50  REM              36312  (A833)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  ************************************
80  REM A.C. CAGGIANO; PATCHOGUE H.S.; PHYSICS; 7-'69 
90  REM  THIS PROGRAM PERMITS A STUDENT TO VISUALIZE THE MAGNETIC
100  REM INDUCTION ABOUT A SINGLE CONDUCTER AND THE INFLUENCE OF THE
110  REM CURRENT ON THE MAGNITUDE OF THE FIELD. THE STUDENT MAY ALSO
120  REM VIEW THE MAGNETIC FIELD DUE TO TWO CURRENTS IN THE 
130  REM SAME OR OPPOSITE DIRECTIONS. 
140  REM
150  REM IT SHOULD BE NOTED THAT THE PRINTOUT FOR EACH FIELD PLOT TAKES
160  REM ABOUT 4 MINUTES
170  REM
180  REM  REVISED BY L. BRAUN AND C. LOSIK  7-28-70 
190  REM
200  REM COPYRIGHT 1970, POLYTECHNIC INSTITUTE OF BROOKLYN
210  LET K=Q=0
220  PRINT "THIS PROGRAM WILL PERMIT YOU TO EXPLORE THE MAGNETIC FIELD"
230  PRINT "ABOUT A CURRENT DIRECTED INTO THE PAGE AS A FUNCTION OF THE"
240  PRINT "CURRENT MAGNITUDE."
250  PRINT 
260  PRINT "WHAT WILL BE YOUR INITIAL CURRENT (SELECT POSITIVE VALUES"
270  PRINT "BETWEEN 1 AND 8 AMPERES)."
280  PRINT "ENTER YOUR VALUE OF CURRENT";
290  INPUT I1
300  IF ABS(I1)>8 THEN 320
310  IF ABS(I1) >= 1 THEN 340
320  PRINT "C'MON NOW-- ENTER PROPER VALUES."
330  GOTO 280
340  IF K>0 THEN 400
350  PRINT 
360  PRINT "THE MAGNITUDE OF THE FIELD DECREASES FROM 9 TO 0. "
370  PRINT "9 IS THE HIGHEST POSSIBLE FIELD STRENGTH, AND 0"
380  PRINT "(WHICH MEANS A ZERO FIELD) THE LOWEST."
390  PRINT 
400  GOSUB 690
410  LET K=K+1
420  PRINT 
430  IF K=2 THEN 460
440  PRINT "SELECT A DIFFERENT CURRENT."
450  GOTO 280
460  PRINT "WOULD YOU LIKE TO TRY TWO DIFFERENT CURRENTS AT THE SAME"
470  PRINT "TIME (YES=1; NO=0)";
480  INPUT Q
490  IF Q=1 THEN 570
500  IF Q <> 0 THEN 460
510  PRINT "WOULD YOU RATHER TRY ANOTHER CURRENT (YES=1; NO=0)";
520  INPUT P
530  IF P=1 THEN 280
540  IF P <> 0 THEN 510
550  PRINT "WELL I GUESS YOU'RE ALL THROUGH. THANKS-- SEE Y'A"
560  STOP 
570  PRINT "THE TWO CURRENTS WILL BE SEPARATED BY 1.0 METER. (NOTE: IF"
580  PRINT "THE CURRENTS ARE TO BE OPPOSITELY DIRECTED, STATE ONE OF THEM"
590  PRINT "AS A NEGATIVE VALUE)."
600  PRINT "ENTER THE TWO CURRENTS";
610  INPUT I1,I2
620  PRINT 
630  GOSUB 690
640  PRINT "WANT TO TRY AGAIN (YES=1; NO=0)";
650  INPUT P
660  IF P=1 THEN 570
670  IF P=0 THEN 550
680  GOTO 640
690  PRINT 
700  PRINT " "," ","METERS"
710  PRINT " ","-1.2      -.6        0        .6        1.2"
720  PRINT "     METERS",".+.........+.........+.........+.........+."
730  FOR Y=1.2 TO -1.2 STEP (-.1)
740  PRINT "   ";INT(10*Y+.5)/10;TAB(15);".";
750  FOR Z=-2 TO 2 STEP (.1)
760  LET X=.6*Z
770  LET Y2=Y*Y
780  IF Q <> 1 THEN 1000
790  IF ABS(Y)>.001 THEN 900
800  IF ABS(Z+.8)>.001 THEN 860
810  IF I1>0 THEN 840
820  PRINT "-";
830  GOTO 1380
840  PRINT "+";
850  GOTO 1380
860  IF ABS(Z-.8)>.001 THEN 900
870  IF I2>0 THEN 840
880  GOTO 820
890  REM  R1 AND R2 ARE SQUARES !!! 
900  LET X1=X+.5
910  LET X2=X-.5
920  LET R1=X1*X1+Y2
930  LET R2=X2*X2+Y2
940  REM  PARALLEL WIRES
950  LET H1=I1*Y/R1+I2*Y/R2
960  REM  H2 IS REALLY MINUS OF WHAT WE HAVE
970  LET H2=I1*X1/R1+I2*X2/R2
980  LET B=SQR(H1*H1+H2*H2)
990  GOTO 1030
1000  LET R=SQR(X*X+Y2)
1010  IF ABS(R)<.001 THEN 810
1020  LET B=ABS(I1/R)
1030  IF B>.001 THEN 1060
1040  PRINT "0";
1050  GOTO 1380
1060  FOR J=1 TO 9
1070  IF ABS(B-2.5*J)<.75 THEN 1110
1080  NEXT J
1090  PRINT " ";
1100  GOTO 1380
1110  IF J>5 THEN 1270
1120  IF J <> 1 THEN 1150
1130  PRINT "1";
1140  GOTO 1380
1150  IF J <> 2 THEN 1180
1160  PRINT "2";
1170  GOTO 1380
1180  IF J <> 3 THEN 1210
1190  PRINT "3";
1200  GOTO 1380
1210  IF J <> 4 THEN 1240
1220  PRINT "4";
1230  GOTO 1380
1240  IF J <> 5 THEN 1270
1250  PRINT "5";
1260  GOTO 1380
1270  IF J <> 6 THEN 1300
1280  PRINT "6";
1290  GOTO 1380
1300  IF J <> 7 THEN 1330
1310  PRINT "7";
1320  GOTO 1380
1330  IF J <> 8 THEN 1360
1340  PRINT "8";
1350  GOTO 1380
1360  IF J <> 9 THEN 1090
1370  PRINT "9";
1380  NEXT Z
1390  PRINT "."
1400  NEXT Y
1410  PRINT " ",".+.........+.........+.........+.........+."
1420  PRINT 
1430  RETURN 
1440  END 
