1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        MKS2:   COMPUTER-AUGMENTED PHYSICS TOPICS (CONVERTS
4  REM                ENGLISH UNITS TO MKS UNITS)
5  REM        36673 REV  A   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
8  LET A=1
10  PRINT "AND SO WE CONTINUE WITH THE MKS SYSTEM OF UNITS."
15  PRINT "REMEMBER-- 999999 FOR CALCULATOR MODE."
30  PRINT "IF A CAR HAS A MASS OF 1000 KILOGRAMS, WHAT IS ITS"
35  PRINT "WEIGHT IN NEWTONS";
40  INPUT A1
50  IF A1=9800 THEN 200
60  IF ABS(A1-9800)/9800<.02 THEN 300
70  PRINT "CHECK YOUR WORK AND RE ENTER YOUR ANSWER"
71  LET A=A+1
72  IF A>2 THEN 3000
73  GOTO 40
200  PRINT "VERY GOOD."
201  GOSUB 1000
210  LET Z=B1+B2+B3+B4
215  PRINT "NOW TRY THIS ONE.  WHAT IS THE WEIGHT OF AN OBJECT"
220  PRINT "WHICH HAS A MASS OF ";Z;"KILOGRAMS?"
225  INPUT A2
226  IF A2 <> 999999. THEN 240
227  GOSUB 9000
228  GOTO 225
240  IF ABS(A2-Z*9.8)/Z/9.8<.0001 THEN 400
250  IF ABS(A2-9.8*Z)/Z/9.8<.02 THEN 500
260  PRINT "NOPE. CHECK YOUR WORK AND RETYPE YOUR ANSWER."
265  LET A=A+1
266  IF A>2 THEN 3000
267  GOTO 225
300  PRINT "YOU ARE FAIRLY CLOSE. ON THE EARTH'S SURFACE A MASS"
305  PRINT "OF 1000 KILOGRAMS HAS A WEIGHT OF 9800 NEWTONS."
310  GOSUB 1000
315  LET A=0
320  GOTO 210
400  PRINT "GOOD. SOON YOU'LL BE AN EXPERT."
405  PRINT "WOULD YOU LIKE TO TRY ANOTHER CONVERSION OF MASS "
450  PRINT "TO WEIGHT? (1=YES, 0=NO)";
455  INPUT A3
460  IF A3=1 THEN 310
470  GOTO 1100
500  LET A=A+1
505  IF A>2 THEN 550
510  PRINT "PRETTY CLOSE (THAT'S WORTH SOMETHING...)"
515  PRINT A;"KILOGRAMS IS EQUAL TO";Z*9.8;"NEWTONS."
520  GOTO 405
550  PRINT "YOU ARE NOT BEING TOO ACCURATE IN YOUR CALCULATIONS."
555  PRINT "TRY TO BE A LITTLE MORE CAREFUL. ";Z;"KILOGRAMS IS EQUAL"
556  PRINT "TO";Z*9.8;"NEWTONS."
560  GOTO 405
1000  LET B1=INT(10*RND(1))*100
1010  LET B2=INT(10*RND(1))*10
1020  LET B3=INT(10*RND(1))*1000
1030  LET B4=INT(10*RND(1))
1035  IF B1+B2+B3+B4=0 THEN 1000
1040  RETURN 
1100  PRINT "OK, THEN, TRY SOME DISTANCES:"
1105  LET A=1
1110  PRINT "HOW MANY METERS ARE THERE IN A MILE?"
1120  INPUT A4
1121  IF A4 <> 999999. THEN 1125
1122  GOSUB 9000
1124  GOTO 1110
1125  LET D=5280*12*.0254
1130  IF ABS(A4-D)/D<.001 THEN 1500
1140  PRINT "CHECK YOUR ANSWER AND RETYPE IT."
1144  LET A=A+1
1145  IF A>2 THEN 3000
1150  GOTO 1120
1500  PRINT "O.K. YOU ARE GETTING THE IDEA.  GO TO THE DESK CALCULATOR MODE"
1502  LET A=1
1505  PRINT "AND CALCULATE EACH OF THE FOLLOWING DISTANCES IN METERS"
1510  FOR I=1 TO 4
1515  GOSUB 1000
1516  IF B1+B3=0 THEN 1515
1520  LET M[I]=B1+B3
1540  PRINT M[I];"MILES"
1545  LET M[I]=1609*M[I]
1550  NEXT I
1555  GOSUB 9000
1557  PRINT "INPUT YOUR FOUR ANSWERS:"
1560  INPUT A5,A6,A7,A8
1570  LET P=0
1575  LET Q=0
1580  GOSUB 2000
1590  IF P=4 THEN 1800
1600  IF Q=4 THEN 1700
1610  GOTO 1750
1700  PRINT "CONGRATULATIONS! SEE YOU LATER."
1710  STOP 
1750  PRINT "YOU GOT ";Q;"RIGHT AND ";P;"WRONG."
1760  PRINT "CHECK ANY ERRORS. BEST WISHES."
1770  STOP 
1800  PRINT "YOU BLEW IT!!!  THEY ARE ALL WRONG. TRY THIS NEW SET."
1802  IF A=2 THEN 3000
1805  LET A=2
1810  GOTO 1505
2000  IF ABS(A5-M[1])/M[1]<.01 THEN 2010
2005  LET P=P+1
2006  GOTO 2020
2010  LET Q=Q+1
2020  IF ABS(A6-M[2])/M[2]<.01 THEN 2030
2025  LET P=P+1
2027  GOTO 2040
2030  LET Q=Q+1
2040  IF ABS(A7-M[3])/M[3]<.01 THEN 2050
2045  LET P=P+1
2046  GOTO 2060
2050  LET Q=Q+1
2060  IF ABS(A8-M[4])/M[4] <> 1 THEN 2070
2065  LET P=P+1
2066  GOTO 2080
2070  LET Q=Q+1
2080  RETURN 
3000  PRINT "I THINK YOU NEED SOME HELP. TRY YOUR TEACHER."
3100  PRINT "OK??"
3200  STOP 
9000  REM CALCULATOR SUBROUTINE HP/PCC JAN. 73
9001  DIM Z$[60],X$[3]
9005  Z$="EXTCLREXCADDSUBMULDIVPOWHYPRCPNEGEXPLOGSQRSINCOSTANATNRTDDTR"
9010  PRINT "CALCULATOR MODE."
9020  PRINT "CLEARED TO ZERO"
9022  Z1=0
9024  Z2=0
9030  PRINT "1ST NUMBER";
9040  INPUT Z1
9050  PRINT "FUNCTION";
9060  INPUT X$
9062  FOR Z0=1 TO 58 STEP 3
9064  IF X$=Z$[Z0,Z0+2] THEN 9068
9066  NEXT Z0
9068  Z0=INT(Z0/3)
9070  IF Z0=0 THEN 9170
9072  IF Z0=1 THEN 9020
9073  IF Z0>19 THEN 9050
9074  IF Z0>8 THEN 9130
9076  IF Z0<0 THEN 9050
9080  PRINT "2ND NUMBER";
9090  INPUT Z2
9100  REM BRANCH TO FUNCTIONS 2 THROUGH 8
9110  GOSUB Z0-1 OF 9210,9220,9230,9240,9250,9260,9270
9120  GOTO 9150
9130  REM BRANCH TO FUNCTIONS 9 THROUGH 19
9140  GOSUB Z0-8 OF 9310,9320,9330,9340,9350,9360,9370,9380,9390,9400,9410
9150  REM PRINT ANSWER, LOOP TO FUNCTION REQUEST, OR RETURN
9155  PRINT X$;"=";Z1
9157  PRINT 
9160  GOTO 9050
9170  PRINT "EXIT."
9180  RETURN 
9190  REM *************************************************************
9200  REM BINARY FUNCTIONS (2-8) BEGIN HERE.
9210  Z0=Z1
9212  Z1=Z2
9214  Z2=Z0
9216  RETURN 
9220  Z1=Z1+Z2
9224  RETURN 
9230  Z1=Z1-Z2
9234  RETURN 
9240  Z1=Z1*Z2
9244  RETURN 
9250  IF Z2 <> 0 THEN 9256
9252  PRINT "DIVISION BY ZERO IS UNDEFINED."
9254  GOTO 9258
9256  Z1=Z1/Z2
9258  RETURN 
9260  Z1=Z1^Z2
9264  RETURN 
9270  Z1=SQR(Z1^2+Z2^2)
9274  RETURN 
9300  REM UNARY FUNCTIONS (9-19) BEGIN HERE.
9310  IF Z1 <> 0 THEN 9316
9312  PRINT "DIVISION BY ZERO IS UNDEFINED."
9314  GOTO 9318
9316  Z1=1/Z1
9318  RETURN 
9320  Z1=-Z1
9324  RETURN 
9330  Z1=EXP(Z1)
9334  RETURN 
9340  Z1=LOG(Z1)
9344  RETURN 
9350  IF Z1 >= 0 THEN 9356
9352  PRINT "SQR OF NEGATIVE NUMBER IS UNDEFINED."
9354  GOTO 9358
9356  Z1=SQR(Z1)
9358  RETURN 
9360  Z1=SIN(Z1)
9364  RETURN 
9370  Z1=COS(Z1)
9374  RETURN 
9380  Z1=TAN(Z1)
9384  RETURN 
9390  Z1=ATN(Z1)
9394  RETURN 
9400  Z1=Z1*57.2958
9404  RETURN 
9410  Z1=Z1/57.2958
9414  RETURN 
9999  END 
