1! MLKAN SIMULATES MILLIKAN'S OIL DROP EXPERIMENT J.KEITH JAMESON, LOYOLA U.,CHICAGO, JULY 1976 3! MODIFIED FOR ADDS-580 OR ADDS-520 CURSOR CONTROL BY R.T.O'NEILL, XAVIER U.,CINCINNATI AUG.1976 37 L5$=SYS(CHR$(6%)+CHR$(-7%)) \ ONERRORGOTO 32000 \ L7$="BEGUN" \ L6$=CVT$$(TIME$(0%),2%) \ PRINT"PRIVACY WARNING! USAGE IS BEING RECORDED"\ SLEEP(6) 90 PRINT"MILLIKAN'S OIL DROP EXPERIMENT"\PRINT 95 INPUT"DO YOU WANT INSRUCTIONS (YES OR NO)";Z9$ \IF LEFT(Z9$,1%)="Y" THEN 7000 100 DIM C(12),D(6) 110 RANDOMIZE 120 ON ERRORGOTO 32000 499! 500 PRINT CHR$(12%) 540 PRINT FNA$(2%,2%,"1.00 -----") 550 FOR I=.9 TO 0 STEP -.1 560 PRINT FNA$(3%,-20*I+22,NUM$(I)) 570 NEXT I 580 PRINT FNA$(2%,22%,"0.00 -----") 1020 LET X=0 1030 DEF FNR(X)=RND(0) 1040 PRINT FNA$(28%,1%,"MILLIKAN'S OIL DROP SIMULATION") 1070 GOSUB 1620 !RANDOMIZES CHARGES FOR DROPLETS 1076 PRINT FNA$(28%,7%,"ENTER A NEGATIVE VOLTAGE TO GET NEXT DROP.") 1079! 1080 FOR I5=1 TO 6 1082 PRINT FNA$(2%,22%,"0.00 -----"); 1085 C9%=0% 1090 PRINT FNA$(28,8,"OIL DROP #"+NUM$(I5) ) 1091 PRINT FNA$(2%,22%,"0.00 -----") 1095 PRINT FNA$(50%,8%,"TIME INTERVAL") 1099 PRINT FNA$(65%,8%,"DISTANCE") 1100 LET H1=.5 1110 LET V2=.1*C[I5] 1120 LET P=INT(10*(1-H1)) 1130 GOSUB 1820 1140 REM APPARATUS CONDITIONS: GRAVITY EFFECT**0.1 CM IN 15 SEC, 1150 REM 1000 VOLTS ON 1 ELECTRON**0.1 CM IN 15 SEC. 1160 PRINT FNA$(28,C9%+9%,"WHAT VOLTAGE"); 1165 C9%=C9%+1% 1170 INPUT V 1175 IF C9%>10% THEN C9%=1%\ GOSUB 8015 1180 IF V<0 THEN GOTO 1420 1190 LET D[I5]=V 1200 LET H2=V2*V/1000-.1 1210 IF V<=1500 THEN 1240 1220 PRINT FNA$(28%,C9%+8%,"*1500 VOLTS MAX ") 1221 FOR I=1 TO 10 1222 PRINT FNA$(28%,C9%+8%," ") 1223 PRINT CHR$(7%) !RING BELL 1224 PRINT FNA$(43%,C9%+8%,"*") 1225 PRINT FNA$(28%,C9%+8%,"*") 1226 PRINT FNA$(43%,C9%+8%," ") 1228 NEXT I 1230 GOTO 1160 1240 LET H4=ABS(H2) 1250 IF H4>.0005 THEN GOTO 1280 1260 LET H3=20 1270 GOTO 1300 1280 LET H3=INT(.01/H4)+1 1290 IF H3=1 THEN PRINT FNA$(50%,C9%+8%," 15 SEC") 1295 GOTO 1320 1300 LET T3=15*H3 1310 T3=.001*INT(1000*T3) 1315 PRINT FNA$(50%,C9%+8%,NUM$(T3)+" SEC") 1320 LET H1=H1+H2*H3 1330 IF H1>0 THEN GOTO 1380 1340 PRINT FNA$(28%,C9%+9%,"OOPS! YOU LOST THIS ONE. THE OIL DROP") 1341 PRINT FNA$(28%,C9%+10%,"RAN INTO AN ELECTRODE. LET'S GO ON") 1342 PRINT FNA$(28%,C9%+11%,"TO THE NEXT OIL DROPLET."); 1360 LET D[I5]=0 1370 GOTO 1420 1380 IF H1>1 THEN GOTO 1340 1390 LET P=INT(10*(1-H1)) 1400 GOSUB 1790 1410 GOTO 1160 1420 GOSUB 8000 1421 NEXT I5 1429 PRINT CHR$(12%) \PRINT"COPY DOWN YOUR RESULTS FOR LATER ANALYSIS." \PRINT 1430 PRINT "DROPLET NO. BEST VOLTAGE(VOLTS)" 1440 FOR I=1 TO 6 1450 IF D[I]=0 THEN GOTO 1470 1460 PRINT USING " ###. ####.",I,D[I] 1470 NEXT I 1480 L7$="FINISHED" \GOTO 32110 1610 REM NEXT SUBROUTINE RANDOMIZES A SET OF CHARGES FOR DROPLETS 1620 FOR I=1 TO 12 1630 READ C[I] 1640 NEXT I 1650 DATA 0,1,1,1,1,2,2,2,3,3,4,6,8,10 1660 LET V2=100000 1670 FOR I=1 TO 12 1680 LET I1=1+INT(12*FNR(X)) 1690 IF I1>12 THEN LET I1=12 1700 LET T5=C[I] 1710 LET C[I]=C[I1] 1720 LET C[I1]=T5 1730 NEXT I 1740 RETURN 1750 REM NEXT SUBROUTINE GENERATES THE EFFECT OF THE APPLIED VOLTAGE 1760 IF C[I5]=0 THEN GOTO 1780 1770 LET V2=1000/C[I5] 1780 RETURN 1790! 1820 IF P<1 THEN GOTO 1860 1830 PRINT FNA$(6%,H5,SPACE$(20%)); 1840 H5=INT(22.5-20*H1) 1850 PRINT FNA$(7%,H5,""); 1860 PRINT USING " * ##.## CM",H1; 1865 IF C9%=0% THEN 1940 1870 PRINT FNA$(65%,C9%+8%,NUM$(H1)+"CM") 1940 RETURN 7000 PRINT CHR$(12%) \PRINT \PRINT" THIS PROGRAM SIMULATES AN EXPERIMENT DONE BY MILLIKAN." 7010 PRINT "SIX OIL DROPLETS--YOURS ARE ALL THE SAME SIZE AND MASS--" 7020 PRINT "ARE INJECTED ONE AT A TIME BETWEEN TWO CHARGED ELECTRODES." 7030 PRINT "YOU CAN WATCH THE MOVEMENT OF EACH DROPLET WITH GRAVITY " 7040 PRINT "PULLING IN ONE DIRECTION, AND THE ELECTRIC FIELD PULLING" 7050 PRINT "IN THE OTHER (+ ELECTRODE AT TOP, - AT THE BOTTOM). YOU" 7060 PRINT "WILL BE ABLE TO VARY THE VOLTAGE (0 TO 1500 VOLTS), TRYING" 7070 PRINT "TO FIND THE CONDITIONS WHICH WILL CAUSE THE DROPLET TO " 7080 PRINT "REMAIN STATIONARY. WHEN YOU ARE READY TO GO ON TO THE NEXT" 7090 PRINT "DROPLET TYPE IN A NEGATIVE VALUE FOR THE VOLTAGE." 7100 PRINT"YOU ARE 'CLOSE ENOUGH' WHEN THERE IS NO APPARENT MOVEMENT" 7110 PRINT"IN AN INTERVAL OF 300 SECONDS." 7900 INPUT"HIT THE 'NEW LINE' KEY WHEN YOU ARE READY TO DO THE EXPERIMENT.";I 7910 GOTO 100 8000!GOSUB TO CLEAR BOTTOM OF SCREEN 8010 PRINT FNA$(6%,H5,SPACE$(20%)) 8015 FOR I%=9% TO 22% 8016 PRINT FNA$(28%,I%,""); 8018 PRINT SPACE$(51%) 8020 NEXT I% 8030 PRINT FNA$(2%,22%,"0.00 -----") 8499 RETURN 9999 L7$=L7$+"FINISHED" \ GOTO 32110 11000 DEF FNA$(A0%,A1%,A0$) ! CURSOR FUNCTION FOR ADDS-580 OR ADDS-520 ! REVISED BY ROBERT P. CARROLL ! SEPTEMBER 15, 1975 ! 11020 DIM A2%(4%) ! A0%=VERTICAL COORDINATE ! A1%=HORIZONTAL COORDINATE ! A0$=STRING TO BE DISPLAYED 11030 A2%(0%)=4% \ A2%(1%)=144% \ A2%(2%)=INT(A0%/10%)*16%+A0%-INT(A0%/10%)*10%+128% \ A2%(3%)=139% \ A2%(4%)=64%+A1% 11040 CHANGE A2% TO A2$ \ FNA$=A2$+A0$ 11050 FNEND ! TO USE, PRINT FNA$(A0%,A1%,A0$) 32000 IF ERR=50 OR ERR=52 THEN RESUME 1160 32001 IF ERR<>28% THEN ONERRORGOTO 0% ELSE L5$=SYS(CHR$(6%)+CHR$(-7%) ) \RESUME 32110 32110 L5$="MLKAN" 32120 OPEN L5$+".REC(140,0)" AS FILE 11%, MODE 2% 32130 IF I5<>6 THEN L7$="DID"+NUM$(I5)+"OUT OF 6 DROPS" 32410 K$=CVT$$(NUM$(ASCII(RIGHT(SYS(CHR$(6%)+CHR$(9%)),2%))/2%),2%) \ DIM S7%(30%) 32420 MAT S7%=ZER \ S7%(0%)=0% \ CHANGE S7% TO S7$ \ S7$=SYS(CHR$(6%)+CHR$(14%)+S7$) \ CHANGE S7$ TO S7% 32440 U$= CVT$$("[" + NUM$(S7%(8%))+","+NUM$(S7%(7%))+"]",2%) \ U$=U$+" "+DATE$(0%)+" "+L6$+"-"+TIME$(0%)+"KB:"+K$+" C.T.=" \ U$=U$+NUM$(TIME(2%))+"MIN. "+L7$ \ PRINT #11,U$ \ CLOSE 11 \ GOTO 32767 32766 ONERROR GOTO 0 32767 END