' +JJJJ ?\>m0M='+l> /+l   d]@ŵLҦ]]LF L}BBL]렮 鷎귭෍ᷩ췩緈JJJJx Lȿ L8ᷭ緍췩 緍i 8 `巬 췌`x (`(8`I`B` ``>J>J>VU)?`8'x0|&HhHh VY)'&Y)xꪽ)' `Hh`V0^*^*>&` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8  '  & x)*++`FG8`0($ p,&"ųųೳŪŪųųij  !"#$%&'()*+,-./0123456789:;<=>?   1 '" *"( (9"1 ( ,.(0# 2  /#0/#0 *?'#07#00/0/'#07#0:"4<*55/**5/*%5/)1/)1/)1/)'#0/#0*5/*75/**5/*:5//#0/#0'#07#0:::*::'#07#0"):$(%"%:$(%"%$$2%4%$$2%4%$(2()!)E(!8b $!H(+ "@H !D)"E` @ $ C ` DQ &J80^݌Hh ü ü݌ ռ ռ ռA ļD ļ? ļAEDE?HJ>h Լ ռ ռ ռ`HJ>݌h Hh݌`葠葠ȔЖȔЖȠHIHHHHhHH݌hHhHh݌H6 VDP (ED Z $0x8x D- ܸDD# H8`?E Vk *f???0xE Hh D#-EEE8` D ܸx D - ܸx8`-0ݩ?ʥD EEE`   LDcpq` [` ~  LӜu`".Q`pNФbptťܥm2<(-Py0\|e<6e<g< JJJJj귍hI  aUL@ kU8  L  Q^R(jQ0l^l\  wUuW ԧ H h@ [_ /QSIRb_L`LLLL`ª`LQLYLeLXLeLee ўQH\(h0L& Ꝥ$`( R \ZLl8 ўR HH\`\Z[YS6`LxQɿu3'RͲʎRʎ]]]ɍuL͟ɍ}RLRɍg^H8 ^hZLɍR LͲɊRR% QLܤͲ Z@ -^ ş\[Z QY\[Z8`l6Lş_Ȍb_Ͳ] )Y h( ֭ͲLɍ [LLĦ__ ^ 9 LҦ3 9 a   0LjLY u< (_9 ˭ɠuɠK_9 ?LˆʎõĵL õ ĵµ aµ`` L̦µ_bJLuLz`  ȟ QlXJ̥KlV  ȟ QlV eօ3L e3L &RL &QL d L4 Ne)n `@-eff L f`L . tQLѤ LҦL` OPu d L Ne)noon 8ɍ` ^f\õL ^NR  RΩLҦ)\Z ʽ LHv 3h`0h8` [L NС õ`A@` ŵL^Lõ`  \ 濭0 \  ȟ Q ^\lZl^?cqH şch`fhjõĵ@OAP`u@`@&`QR`E Ls  @DAE@u`8` %@ @A@`@`@A`Mµ ) LЦ`8@AWc@8@-@HAȑ@hHȑ@ȑ@hHȑ@Ȋ@ch8&ȑ@Hȑ@Ah@LHȑ@ȑ@ htphso`hMhL`9V8U897T6S67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABRUVERIF!pppp p p p p`" t""#x"p0p@p@@@p@!y q q p@  LANGUAGE NOT AVAILABLRANGE ERROWRITE PROTECTEEND OF DATFILE NOT FOUNVOLUME MISMATCI/O ERRODISK FULFILE LOCKESYNTAX ERRONO BUFFERS AVAILABLFILE TYPE MISMATCPROGRAM TOO LARGNOT DIRECT COMMANč$3>L[dmx- (  Ϡ@跻~!Wo*9~~~~ɬƬ~_ j ʪHɪH`Lc (L ܫ㵮赎 ɱ^_ J QL_Ls贩紎 DǴҵԵƴѵӵµȴ 7 ַ :ŵƴѵǴҵȴµ納贍﵎ٵ്ᵭⳍڵL^ѵ-I `  4 ò-յ!  8صٵ紭ﵝ 7L (0+BC  7L HH`LgL{0 HH` õL H hBL BH [ h`Lo õ ڬL B ڬ LʬH hB@ յյ [L (ȴ) ȴ 7L L ( L (ȴL{ƴѵ洩ƴǴҵ 7 ^* B0 HȱBh ӵԵ 8 L8 ݲ` ܫ  / / ED B / / ]ƴS0Jȴ ȴ)  紅D贅E B ƴ  / 0L Ν `HD٤DEEhiHLGh ` ŵBѵ-` ѵB-` ܫ XI볩쳢8 DH E𳈈췍Ȍ X0 · JLǵBȵC`,յp` 䯩 R-յյ`յ0` K R-յյ`ɵʵӵԵ` 4 K ( ѵҵLBȱBL8` DBHBH : ַ޵BȭߵBhhӵԵ RBܵmڵ޵ȱBݵm۵ߵ` 䯩LR˵̵ֵ׵`êĪLR E( 8` R` ELRŪƪ`췌 յյI뷭鷭귭ⵍ㵍跬ª 뷰` Lf ݵܵߵ޵ ^`8ܵ i B8` 4L ֵȱB׵ ܯ䵍൭嵍 ` DȑB׵Bֵ  ַ յյ`굎뵎쵬 뵎쵌``õĵBCõĵ`µµ`L õBĵCصص Qƴ0"Bƴ 󮜳` 0۰ϬBƴ8`i#`ЗLw!0>ﵭ` m ﳐ 7i볍 8 ЉLw`H h ݲL~ `浍국䵍뵩嵠Jm赍嵊mjnnn浈ۭm浍浭m䵍䵩m嵍`"L ŵ8ŵH ~(` d ֠z# u`NUM/NDEN  SET UP FOR RETURN4N3NNUM:D3NDEN:@d SUBROUTINE TO ORDER FRACTIONS} N1/D1 AND N2/D2 IN RETURNS:$ MARK=-1 IF N1/D1E OUT BY GCD:+pNNUMNUMGCD:NDENDENGCDKz REDUCED FORM IS NNUM/NDENQWz SUBROUTINE TO MULTIPLY FRACS N1/D1 AND N2/D2 IN, N3/D3 OUT COMPUTE UNREDUCED PRODUCT NUM/DENNUMN1N2DEND1D2790: REDUCE TO N -  SUBROUTINE TO REDUCE FRACTIONH  USING GCD SUBROUTINEk * NUM, DEN IN, NNUM,NDEN OUT 4 IF NUM = 0, SKIP GCD SUBRTN >NUM0NNUM0:NDEN1: HANUM:BDEN R690: GCD SUBROUTINE \ SUBROUTINE RETURNS GCD f NOW DIVIDROUTINE:A,B IN,GCD OUT4  SUBROUTINE ASSUMES B<>0Q Q(AB): DIVIDE A BY Bi RAQB: REMAINDER R0750: ALGORITHM FINISHED,GCD IS B  IF R <> 0 MUST DO ANOTHER DIVISION  NOW SET UP FOR NEXT DIVISION AB:BR:690 GCDB 1:"PRESS ANY KEY TO CONTINUE.") 0ANS$/ :M D10:"STARTING LOCATIONS"` N3:"GCD: 670"v X5:"REDUCE: 790" b7:"ADD: 1160" l9:"MULTIPLY: 920" v11:"ORDER: 1030" 13:"GETTER: 1270" 15:"LAST LINE: 1500"   GCD SUB OUT." 5:H! "USES A,B."( 75 "SUM:";P H:"N1/D1, N2/D2 IN,"Z 9:Hl "N3/D3 OUT."w 11:H "CALLS REDUCE SUBROUTINE." 13 "GETTER:"; H "RETURNS NUM, DEN." 15:H "USES VV$, A$, K, CHAR$." &2" 14 "MULTIPLY:";6 H:"N1/D1, N2/D2 IN,"A 16:HS ""N3/D3 OUT."^ ,18:H~ 6"CALLS REDUCE SUBROUTINE." @21:"PRESS ANY KEY TO CONTINUE." JANS$ T ^"ORDER:"; hH r"N1/D1, N2/D2 IN," |3:H "MARK = -1,0,1  2000d#nH14: HTABDx10:"FRACTIONS SUBROUTINES"K4Y"GCD :";qH:"A, B <> 0 IN,"{6:H"GCD OUT."8"REDUCE:";H:"NUM,DEN IN,"10:H"NNUM,NDEN OUT."12:H "CALLS GCD SUBROUTINE.$( ANS$"N"620: GET ANOTHER M,B4 :::2 GRAPH Y = MX + B "6 :"WHAT SLOPE M DO YOU WANT";= Md :"WHAT INTERCEPT B DO YOU WANT";k Bq  "PLOTTING Y = ";M;"X + ";B XXLXHXS YMXB 120: PLOTTER SUBROUTINE  :"PLOT ANOTHER LINE (Y OR N)"; ANS"PLOTTING X AXIS"'  PLOT X AXIS:/ Y0? XXLXHXS^ 120: PLOTTER SUBROUTINEd j & 0"PLOTTING Y AXIS" : PLOT Y AXIS: DX0 NYYLYHYS X120: PLOTTER SUBROUTINE b l v NOW PLOT LINE Y = MX+B: " TOANS$ r3 | SET HIGH AND LOW X AND Y BOUNDS:> XL10H XH10S YL10] YH10{  SET X AND Y STEP SIZES: XS(XHXL)140: 140 STEPS XL TO XH YS(YHYL)159: 159 STEPS YL TO YH :3 34,20  ANGE, RETURN: & U0U2792809 V0V159280B U,VH [ " MAIN PROGRAMa , 6" THIS PROGRAM PLOTS LINES " @:"Y = MX+B." J:"YOU SUPPLY THE SLOPE M" T:"AND Y-INTERCEPT B." ^23:"PRESS ANY KEY TO CONTINUE." h5d LINESn2901x PLOTTER SUBROUTINE7Q CONVERT X,Y TO U,V:Wj X=XL TO U=0 X=XH TO U=279 Y=YL TO V=159 Y=YH TO V=0U279(XXL)(XHXL)V159(YYH)(YHYL) IF U OR V OUT OF R     " BANS$L110AFACTORIZATION OF NUMBERS."I:" A TABLE OF PRIMES IS CONSTRUCTED"t:"USING THE SIEVE METHOD. THEN THE":"PRIMES IN THIS TABLE ARE TESTED":"FOR BEING DIVISORS OF THE GIVEN"$:"NUMBER.".238"PRESS ANY KEY TO CONTINUE.M(K)+MMPM(K): DIVIDE BY PRIME FACTORIM1940: FINISHED R800r:"PRIME TABLE EXHAUSTED.":"DO ANOTHER (Y OR N)";ANS$ANS$"Y"730:"SO LONG! "" THIS PROGRAM COMPUTES THE PRIME":"H N!K1: START WITH PRIME #1Q (MPM(K))MPM(K)890: PM(K) IS A FACTORu* HERE, PM(K) NOT A FACTOR OF M4KK1>KB2930: NO MORE PRIMESHPM(K)PM(K)M800: TRY THIS PRIMER HERE, M IS PRIME\Mf940: FINISHEDzP= K <= ";B2 ANS$"Y"700* K1B26 PM(K),< _ :"PRESS ANY KEY TO CONTINUE"i ANS$o  :"FOR WHAT NUMBER DO YOU WANT THE" :"PRIME FACTORIZATION"; N :"THE PRIME FACTORS OF ";N;" ARE:"  MN: START WIT A(K)0NN1 &7 0B2N: N PRIMES WERE FOUNDc :B2;" PRIMES WERE FOUND UP TO ";BOUND: D"LOADING PRIME TABLE PM(K)" NPM(B2) XN1 bK1BOUND lA(K)0PM(N)A(K):NN1 v  :"PRIME TABLE COMPLETE AS PM(K), FOR 1 <2370/t :"I DON'T KNOW HOW TO ";DIR$::23805~ ; \ SUB TO PRINT ALL EQUATIONSb l 34,4r  ROW1EQNS 1410  34,6EQNS  ONTINUE"ANS$9 "ADD:TYPE A ","MULT:TYPE M"? S "STOP :TYPE S"Y$ c. 34,4}8 1070: GET EQUATIONSB L "WHAT DO YOU WANT TO DO NOW";:DIR$V DIR$"S"Ĺ34,0::"SO LONG!":` DIR$"A"İ1990:2370j DIR$"M"İ1800:ROGRAM WORKS WITH LINEAR">:"EQUATIONS IN TWO VARIABLES."T:" IT CAN:":"MULTIPLY AN EQUATION BY A CONSTANT":"AND ADD ONE EQUATION TO ANOTHER."::"NUMBERS MAY BE ENTERED AS FRACTIONS X/Y"20:"PRESS ANY KEY TO CL1VARS1&  SET UP FOR ADD SUBRTNF*N1N(FST,COL):D1D(FST,COL)f4N2N(SND,COL):D2D(SND,COL)|>720: ADD SUBRTNHN(SND,COL)N3:D(SND,COL)D3R\ PRINT EQUATIONS:f2450pz MENU SUBROUTINE" THIS PD(ROW,COL)D3COL, PRINT EQUATIONS62450<BHNi SUB TO ADD EQUATIONS ADD EQN FST TO EQN SND  PUT RESULT IN EQN SND"ADD EQUATION I TO EQUATION J":" I = ":FST: " J = ":SND: COMULT EQN BY CONST&B0"MULTIPLY WHICH EQUATION";:ROWH:uD"MULTIPLY BY WHAT?":830: FRAC GETTER N SET UP FOR MULT SUBRTNXN1NUM:D1DENbCOL1VARS1lN2N(ROW,COL):D2D(ROW,COL)v480: MULT SUBRTN N(ROW,COL)N3:RMS 0, CONST NON-ZEROB HERE, FLAG<>0, SO HAVE NON-ZERO X TERML"=";`N(ROW,VARS1); DON'T PRINT "1" DENOMS:D(ROW,VARS1)1ĺ"/";D(ROW,VARS1); CLEAR TO END OF LINE:40(0))FLAG0  SUB TO ";D(ROW,COL);(T PRINT VARIABLE NAME:9^COL1ĺ"X";JhCOL2ĺ"Y";SrCOLw| HERE, HAVE DEALT WITH ALL X'S IF FLAG = 0, ALL COEFS WERE 0FLAG0N(ROW,VARS1)01760: WHOLE EQN IS ZEROFLAG0N(ROW,VARS1)0ĺ"ZERO";: X TE DON'T PRINT "1/1" COEFSG"D(ROW,COL)1ĭN(ROW,COL)1ĺN(ROW,COL);g, PUT "()" AROUND POS FRACS6D(ROW,COL)1N(ROW,COL)0ĺ"(";N(ROW,COL);"/";D(ROW,COL);")";@ DON'T PUT "()" AROUND NEG FRACS JD(ROW,COL)1N(ROW,COL)0ĺN(ROW,COL);"/,COL)0ĺ4):1650: NEXT COL= HERE, HAVE NON-ZERO COEFq IF FLAG = 1, IT'S NOT THE FIRST NON-ZERO COEF PRINT "+" ONLY FOR POS COEFS AFTER THE FIRSTFLAG1N(ROW,COL)0ĺ"+";FLAG1 DON'T PRINT "1" DENOMS"N"ė:1180PANS$"Y"1350(ZROW?d PRINT EQUATIONS:In2450OxUy SUB TO PRINT EQUATION "ROW"FLAG0: SET = 1 WHEN FIRST NON-ZERO COEF IS FOUNDROW;") ";COL1VARS IF COEF = 0, DON'T PRINTN(ROWNUM:D(ROW,1)DEN0"B = ";:830: FRAC GETTERNN(ROW,2)NUM:D(ROW,2)DENn"C = ";:830: FRAC GETTERN(ROW,3)NUM:D(ROW,3)DEN :"CHECK THE EQUATION":(14102:"IS THIS CORRECT (Y OR N)";< FANS$:ANS$ VVARS20`:"HOW MANY EQUATIONS";:EQNSSjN(EQNS,VARS1),D(EQNS,VARS1)ctROW1EQNSi~ GET EQUATION "ROW":"TYPE IN A,B,C FOR EQUATION ";ROW"AX + BY = C":"A = ";:830: FRAC GETTERN(ROW,1)DEN1 ; HERE, HAVE FOUND "/" AS K-TH CHAR OF A$NNUM$(A$,K1)eDEN$(A$,(A$)K)uNUM(NUM$)DEN(DEN$)DEN0ĺ:"DENOMINATOR NOT ALLOWED TO BE ZERO.":880$.8 SUBROUTINE TO GET EQUATIONSB LN" zA$& SEARCH FOR "/" IN A$:5K1(A$)X LOOK AT K TH CHARACTER OF A$lCHAR$(A$,K,1)CHAR$"/"1010: FOUND "/": KEEP LOOKING FOR "/" HERE, A$ HAS NO "/";ASSUME A$ IS INTEGERNUM(A$): NUMERICAL VAL OF A$ N3NNUM:D3NDEN* 4D> SUBRTN TO READ FRAC FROM KYBDhH SUBRTN EXPECTS STRING NUM/DENR AND EXTRACTS NUM AND DEN\ BEFORE ENTERING SBRTN, SETf VV$= SOME CONNECTING WORDp:PRINT : PRINT "PLEASE TYPE ";VV$;"FRACTIO1ABMARK0!ABMARK1'-O SUBROUTINE TO ADD FRACTIONSi N1/D1 AND N2/D2 IN,} SUM N3/D3 OUT FORM UNREDUCED SUM:NUMN1D2N2D1DEND1D2 NUM0N30:D31:810: SKIP REDUCE350: REDUCE TO NNUM/NDEN% N SUBROUTINE TO ORDER FRACTIONS> X N1/D1 AND N2/D2 INM b RETURNS:v l MARK=-1 IF N1/D1N2/D2  CROSS MULTIPLY: AN1D2:BN2D1ABMARKIS NNUM/NDEN  ;  SUBROUTINE TO MULTIPLY FRACS_  N1/D1 AND N2/D2 IN, N3/D3 OUTe   COMPUTE UNREDUCED PRODUCT NUM/DEN NUMN1N2 DEND1D2 350: REDUCE TO NNUM/NDEN & SET UP FOR RETURN 0N3NNUM:D3NDEN : DUBROUTINE, r NUM, DEN IN, NNUM,NDEN OUTN | IF NUM = 0, SKIP GCD SUBRTNi NUM0NNUM0:NDEN1:y ANUM:BDEN 250: GCD SUBROUTINE  SUBROUTINE RETURNS GCD  NOW DIVIDE OUT BY GCD: NNUMNUMGCD:NDENDENGCD  REDUCED FORM QB: REMAINDER< R0310: ALGORITHM FINISHED,GCD IS Be  IF R <> 0 MUST DO ANOTHER DIVISION " NOW SET UP FOR NEXT DIVISION ,AB:BR:250 6GCDB @ J SUBROUTINE FINISHED T ^ SUBROUTINE TO REDUCE FRACTION h USING GCD SD2 IN,"/ :" MARK = -1,0,1 OUT:590"^ :"SUM: N1/D1, N2/D2 IN, N3/D3 OUT : 720"~ :"GETTER:NUM,DEN OUT:830" :"LAST LINE: 1070": GCD SUBROUTINE:A,B IN,GCD OUT SUBROUTINE ASSUMES B<>0 Q(AB): DIVIDE A BY B RAd XY EQUATIONS!n2200'xD"FRACTIONS SUBROUTINES"a:"STARTING LOCATIONS:":"GCD : A,B<> 0 IN, GCD OUT:230":"REDUCE:NUM,DEN IN, NNUM,NDEN OUT:350":"MULTIPLY:N1/D1, N2/D2 IN, N3/D3 OUT:480" :"ORDER: N1/D1,N2/          S PRIME, START SIEVING ON N0 20:N;" IS OUT"Y  A(N)=0 MEANS N ALREADY CROSSED OUTs 400: GO TO NEXT N :"SIEVE COMPLETE":    SUBROUTINE TO MAKE ARRAY  OF PRIMES PM(K) "COUNTING PRIMES": N0 K1BOUNDSTART DELETING MULTIPLES OF 2? ^KN: START DELETING WITH N*NT h"SIEVING ON ";N rKNBOUND400: FINISHED WITH MULTIPLES OF N | CROSS OUT K*N A(KN)0:KK1:370 NN1: NEXT N NNBOUND460: STOP SIEVING A(N)0350: N ITO WHAT BOUND DO YOU WANT THE PRIMES";1 BOUNDW :"PRINT PRIME TABLE? (Y OR N)";a ANS$o A(BOUND)u (13):(10) "INITIALIZING ARRAY" K1BOUND "A(K)K , 6 @ BEGIN SIEVE JA(1)0: 1 IS NOT PRIME TN2:  d PRIME FACTORS-i990: GREETING3nYx PROGRAM TO COMPUTE PRIME TABLE BY SIEVE METHOD, WITH IN-PROCESS COMMENTS TO SIEVE TO AN ARRAY A(N). IF N IS PRIME, A(N)=N, OTHERWISE A(N)=0& "UP ORE PIVOT EQUATIONK! N(PEQN,PVAR)1D(PEQN,PVAR)12880: SKIP RESTORINGi! SET UP FOR MULT SUBRTN:v!" ROWPEQN!, N1D(PEQN,PVAR):D1N(PEQN,PVAR): NOTE RECIPROCAL !6 1780: MULT SUBRTN!@ : CLEAR X(PVAR) FROM NEXT EQN!J ING SUBROUTINE: ROWPEQNU N1N(RW,PVAR):D1D(RW,PVAR): NOTE ADDITIVE INVERSE{ 1780: MULT EQN "ROW" BY N1/D1 ADD NEW EQUATION PEQN TO EQN RW TO CANCEL X(PVAR) TERM FROM EQN RW: FSTPEQN:SNDRW:1960 ! REST" BY N1/D1x RW1EQNSX SKIP PIVOT EQN AND THOSE WITH COEF ON X(PVAR) ALREADY 0:w RWPEQNN(RW,PVAR)02880 MULT PEQN SO AS TO CANCEL MULT PIVOT EQN BY ADDITIVE INVERSE OF COEF OF X(PVAR) IN EQN RW: SET UP FOR MULTIPLY :"CLEAR WHICH VARIABLE";9( PVAR$:PVAR((PVAR$,1))V2 "USING WHICH EQUATION";`< PEQNF REDUCE PIVOT COEFFICIENT TO 1P SET UP FOR MULT SBRTNZ ROWPEQNd N1D(PEQN,PVAR):D1N(PEQN,PVAR): NOTE RECIPROCAL n 1780: MULT EQN "ROWNGE, TYPE I"1 :"TO CLEAR A VARIABLE, TYPE C"J :"TO STOP, TYPE S"l :"WHICH DO YOU WISH TO DO";v ANS$ ANS$"I"İ2150:2470 ANS$"C"İ2570:2470 ANS$"S"Ĺ34,0: 2500  SUBROUTINE TO CLEAR A VARIABLE ::" IT CAN INTERCHANGE EQUATIONS AND"UL :"CLEAR VARIABLES, GIVEN THE PIVOT"uV :"EQUATION AND VARIABLE."}` 20j "PRESS ANY KEY TO CONTINUE."t ANS$~  850: GET EQUATIONS  2060: PRINT EQUATIONS  :"TO INTERCHAD(FST,COL)D(SND,COL),N(SND,COL)NT>D(SND,COL)DT]:2060: PRINT EQUATIONSci  PROG TO REDUCE EQUATIONS $ " THIS PROGRAM WORKS WITH SYSTEMS OF". :"LINEAR EQUATIONS IN ONE OR MORE"8 :"VARIABLES."+B p SWITCH EQNS "FST" AND "SND")zN:"INTERCHANGE WHICH EQUATIONS"d:"FIRST=";:FSTy"SECOND=";:SNDCOL1VARS1 HOLD COEF OF X(COL) FROM EQN FST:NTN(FST,COL):DTD(FST,COL) NOW SWITCH:N(FST,COL)N(SND,COL)500: ADD SUBRTN0N(SND,COL)N3:D(SND,COL)D36N PRINT EQUATIONS:X2060^}  SUBRTN TO PRINT ALL EQNS34,0 *ROW1EQNS41310: SINGLE EQN PRINTER>H34,6EQNSR\f SUBRTN TO INTERCHANGE EQNS#l ADD EQN FST TO EQN SND 8v PUT RESULT IN EQN SND>d"ADD EQUATION I TO EQUATION J":x" I = ":FST:" J = ":SND:COL1VARS1 SET UP FOR ADD SUBRTNN1N(FST,COL):D1D(FST,COL)N2N(SND,COL):D2D(SND,COL)C GETTER & SET UP FOR MULT SUBRTN8N1NUM:D1DENJCOL1VARS1jN2N(ROW,COL):D2D(ROW,COL)380: MULT SUBRTNN(ROW,COL)N3:D(ROW,COL)D3COL& PRINT EQUATIONS02060:DNXb SUB TO ADD EQUATIONST PRINT "1" DENOMS:=^D(ROW,VARS1)1ĺ"/";D(ROW,VARS1);Yh CLEAR TO END OF LINE:hr40(0))s|FLAG0y  SUB TO MULT EQN BY CONST"MULTIPLY WHICH EQUATION";:ROW "MULTIPLY BY WHAT?":610: FRAITH ALL X'S/ IF FLAG = 0, ALL COEFS WERE 0e"FLAG0N(ROW,VARS1)01650: WHOLE EQN IS ZERO,FLAG0N(ROW,VARS1)0ĺ"ZERO";: X TERMS 0, CONST NON-ZERO6 HERE, FLAG<>0, SO HAVE NON-ZERO X TERM@"=";JN(ROW,VARS1);T DON'" AROUND POS FRACSVD(ROW,COL)1N(ROW,COL)0ĺ"(";N(ROW,COL);"/";D(ROW,COL);")";| DON'T PUT "()" AROUND NEG FRACSD(ROW,COL)1N(ROW,COL)0ĺN(ROW,COL);"/";D(ROW,COL); PRINT VARIABLE NAME:"X";COL;  HERE, HAVE DEALT W NOT THE FIRST NON-ZERO COEF? PRINT "+" ONLY FOR POS COEFS_ AFTER THE FIRST~FLAG1N(ROW,COL)0ĺ"+";FLAG1 DON'T PRINT "1" DENOMS DON'T PRINT "1/1" COEFSD(ROW,COL)1ĭN(ROW,COL)1ĺN(ROW,COL); PUT "()$( SUB TO PRINT EQUATION J*2a<FLAG0: SET = 1 WHEN FIRST NON-ZERO COEF IS FOUNDqFROW;") ";PCOL1VARSZ IF COEF = 0, DON'T PRINTdN(ROW,COL)0ĺ4):1540: NEXT COLn HERE, HAVE NON-ZERO COEFx IF FLAG = 1, IT'SNUM:D(ROW,COL)DEN$<.:"B";"=";:610: FRAC GETTERd8N(ROW,VARS1)NUM:D(ROW,VARS1)DENB:"CHECK THE EQUATION":L1310V:"IS THIS CORRECT (Y OR N)";`jANS$:ANS$"N"ė:960tANS$"Y"1130~ROW"TYPE IN A(1)...A(";VARS;"),";F"AND B "::"FOR EQUATION ";ROWX:COL1VARS~COLVARSĺ"A(";COL;")X";COL;"+";COLVARSĺ"A(";COL;")X";COL;"=";"B";:COL1VARS:"A(";COL;")=";:610: FRAC GETTERN(ROW,COL)DENOMINATOR NOT ALLOWED TO BE ZERO.":660/H5RQ\ SUB TO GET EQUATIONSYf _pz"HOW MANY VARIABLES";:VARS:"HOW MANY EQUATIONS";:EQNSN(EQNS,VARS1),D(EQNS,VARS1)ROW1EQNS GET EQUATION "ROW":! KEEP LOOKING FOR "/"D HERE, A$ HAS NO "/";ASSUME A$ IS INTEGERhNUM(A$): NUMERICAL VAL OF A$rDEN1x  HERE, HAVE FOUND "/" AS K-TH CHAR OF A$NUM$(A$,K1) DEN$(A$,(A$)K)*NUM(NUM$)4DEN(DEN$))>DEN0ĺ:"EFORE ENTERING SBRTN, SET:  VV$= SOME CONNECTING WORDl :PRINT : PRINT "PLEASE TYPE ";VV$;"FRACTION"t A$  SEARCH FOR "/" IN A$: K1(A$)  LOOK AT K TH CHARACTER OF A$: CHAR$(A$,K,1) CHAR$"/"790: FOUND "/":: NUMN1D2N2D1# &DEND1D2K 0NUM0N30:D31:590: SKIP REDUCEj :250: REDUCE TO NNUM/NDEN~ DN3NNUM:D3NDEN N X b SUBRTN TO READ FRAC FROM KYBD l SUBRTN EXPECTS STRING NUM/DEN v AND EXTRACTS NUM AND DEN  BUTE UNREDUCED PRODUCT NUM/DEN+ NUMN1N29 DEND1D2Y 250: REDUCE TO NNUM/NDENq  SET UP FOR RETURN N3NNUM:D3NDEN     SUBROUTINE TO ADD FRACTIONS  N1/D1 AND N2/D2 IN,  SUM N3/D3 OUT  FORM UNREDUCED SUMNUM:BDEN# 6150: GCD SUBROUTINE@ @ SUBROUTINE RETURNS GCD^ J NOW DIVIDE OUT BY GCD:| TNNUMNUMGCD:NDENDENGCD ^ REDUCED FORM IS NNUM/NDEN h r | SUBROUTINE TO MULTIPLY FRACS  N1/D1 AND N2/D2 IN, N3/D3 OUT   COMPSET UP FOR NEXT DIVISION) AB:BR:1503 GCDB9 S SUBROUTINE FINISHEDY ~ SUBROUTINE TO REDUCE FRACTION  USING GCD SUBROUTINE  NUM, DEN IN, NNUM,NDEN OUT  IF NUM = 0, SKIP GCD SUBRTN "NUM0NNUM0:NDEN1: ,Ad EQUATIONS CLEAR#n2320)xM GCD SUBROUTINE:A,B IN,GCD OUTk SUBROUTINE ASSUMES B<>0Q(AB): DIVIDE A BY BRAQB: REMAINDERR0210: ALGORITHM FINISHED,GCD IS B IF R <> 0 MUST DO ANOTHER DIVISION NOW             START SHIFTING X:- $ MAKE X >= 0:F .X0X1X:SC1SC\ 8 HERE, X >= 0s B SEE IF X <= PI: LXPI1140: SKIP SHIFT V HERE, X > PI, SO SHIFT: `XX2PI j1100: SEE IF X <= PI t HERE, -PI < X <= PI ~E: KK2 350 34,0H :"COMPUTER'S SIN(";XI;") = ";(XI)g :"DO ANOTHER ONE";:ANS$w ANS$"N"Ā}  200  SUBROUTINE TO SHIFT X  EVALUATE COMPUTER'S PI: PI4(1)  INITIALIZE SIGN CHANGE VARIABLE: SC1ITIALIZE TERM VARIABLE: 6TX> @ INITIALIZE SUM VARIABLE:F JS0a T UPDATE SUM VARIABLE:k ^SST h PRINT DEGREE AND SUM: rK,SSC |ANS$ ANS$"S"450: END  COMPUTE NEW TERM: TT(1)XX((K1)(K2))  UPDATE DEGRE RECORD INITIAL X:! XIX' U "HIT 'S' TO STOP, 'RETURN' TO CONTINUE."f :"X = ";X :"DEGREE SUM" 7 34,5: PROTECT FROM SCROLLING 1000: REDUCE X  INITIALIZE DEGREE VARIABLE: "K1 , IN   3 SUB TO PRINT ALL EQUATIONSV ERASE EQUATIONS FROM SCREEN` 34,4f } PRINT EQUATIONS: ROW1EQNS 1400: PRINT EQUATION "ROW"  34,6EQNS: PROTECT EQUATIONS  1060: GET EQUATIONS. E8 "WHAT DO YOU WANT TO DO NOW";:DIR$kB DIR$"S"2410: ENDING CEREMONY L DIR$"A"İ1970:2350V DIR$"M"İ1780:2350` :"I DON'T KNOW HOW TO ";DIR$::2360j ENDING CEREMONYt 34,0~  "SO LONG!"ONE EQUATION TO ANOTHER."#::S:"YOU MAY ENTER NUMBERS AS FRACTIONS X/Y"x23:"PRESS ANY KEY TO CONTINUE"ANS$"ADD:TYPE A ","MULT:TYPE M" "STOP :TYPE S"  34,4: RESERVE SCREEN SPACE FOR INSTRUCTIONS$H PRINT EQUATIONS:#R2480)\/fEp MENU SUBROUTINEKzQ|" THIS PROGRAM WORKS WITH LINEAR":"EQUATIONS IN ONE OR MORE VARIABLES.":" IT CAN:":"(A) MULTIPLY AN EQUATION BY A CONSTANT":"(B) ADD ':"ADD EQUATION I TO EQUATION J"?:"FOR I = ";:FSTW:"FOR J = ";:SNDiCOL1VARS1  SET UP FOR ADD SUBRTNN1N(FST,COL):D1D(FST,COL) N2N(SND,COL):D2D(SND,COL)*710: ADD SUBRTN4N(SND,COL)N3:D(SND,COL)D3>COL1VARS1-XN2N(ROW,COL):D2D(ROW,COL)Db470: MULT SUBRTNdlN(ROW,COL)N3:D(ROW,COL)D3mvCOL PRINT EQUATIONS2480 SUB TO ADD EQUATIONS ADD EQN FST TO EQN SND  PUT RESULT IN EQN SND CLEAR TO END OF LINE:*40(0))5FLAG0;AH g SUB TO MULT EQN BY CONSTms"MULTIPLY WHICH EQUATION";:ROW&0"MULTIPLY BY WHAT";:820: FRAC GETTER : SET UP FOR MULT SUBRTNDN1NUM:D1DEN NROW,VARS1)01740: WHOLE EQN IS ZEROkFLAG0N(ROW,VARS1)0ĺ"ZERO";: X TERMS 0, CONST NON-ZERO HERE, FLAG<>0, SO HAVE NON-ZERO X TERM"=";N(ROW,VARS1); DON'T PRINT "1" DENOMS:D(ROW,VARS1)1ĺ"/";D(ROW,VARS1););"/";D(ROW,COL);")";;6 DON'T PUT "()" AROUND NEG FRACSw@D(ROW,COL)1N(ROW,COL)0ĺN(ROW,COL);"/";D(ROW,COL);J PRINT VARIABLE NAME:T"X";COL;^COLh HERE, HAVE DEALT WITH ALL X'Sr IF FLAG = 0, ALL COEFS WERE 0'|FLAG0N( AFTER THE FIRST=FLAG1N(ROW,COL)0ĺ"+";HFLAG1e DON'T PRINT "1" DENOMS DON'T PRINT "1/1" COEFSD(ROW,COL)1ĭN(ROW,COL)1ĺN(ROW,COL);" PUT "()" AROUND POS FRACS,D(ROW,COL)1N(ROW,COL)0ĺ"(";N(ROW,COLHEN FIRST NON-ZERO COEF IS FOUND0ROW;") ";@COL1VARS_ IF COEF = 0, DON'T PRINTN(ROW,COL)0ĺ4):1630: NEXT COL HERE, HAVE NON-ZERO COEF IF FLAG = 1, IT'S NOT THE FIRST NON-ZERO COEF PRINT "+" ONLY FOR POS COEFSS1)DEN&:"CHECK THE EQUATION":01400S(:"IS THIS CORRECT (Y OR N)";Y2u<ANS$:ANS$"N"ė:1170FANS$"Y"1320PROWZ PRINT EQUATIONS:d2480nx SUB TO PRINT EQUATION "ROW" FLAG0: SET = 1 WLVARSĺ"A(";COL;")X";COL;" + ";HCOLVARSĺ"A(";COL;")X";COL;" = ";NZ"B";:jCOL1VARS:"A(";COL;")=";:820: FRAC GETTERN(ROW,COL)NUM:D(ROW,COL)DEN:"B";"=";:820: FRAC GETTER N(ROW,VARS1)NUM:D(ROW,VAR L"HOW MANY VARIABLES";:VARSCV:"HOW MANY EQUATIONS";:EQNSf`N(EQNS,VARS1),D(EQNS,VARS1)vjROW1EQNS|t~ GET EQUATION "ROW":"TYPE IN A(1)...A(";VARS;"),";"AND B "::"FOR EQUATION ";ROW:COL1VARS COEN1 8 HERE, HAVE FOUND "/" AS K-TH CHAR OF A$KNUM$(A$,K1)bDEN$(A$,(A$)K)rNUM(NUM$)DEN(DEN$)DEN0ĺ:"DENOMINATOR NOT ALLOWED TO BE ZERO.":870$. SUBROUTINE TO GET EQUATIONS8 BpA$#z SEARCH FOR "/" IN A$:2K1(A$)U LOOK AT K TH CHARACTER OF A$iCHAR$(A$,K,1)CHAR$"/"1000: FOUND "/": KEEP LOOKING FOR "/" HERE, A$ HAS NO "/";ASSUME A$ IS INTEGERNUM(A$): NUMERICAL VAL OF A$DN3NNUM:D3NDEN *A4 SUBRTN TO READ FRAC FROM KYBDe> SUBRTN EXPECTS STRING NUM/DENH AND EXTRACTS NUM AND DENR BEFORE ENTERING SBRTN, SET\ VV$= SOME CONNECTING WORDf:PRINT : PRINT "PLEASE TYPE ";VV$;"FRACTION"ABMARK0ABMARK1$*L SUBROUTINE TO ADD FRACTIONSf N1/D1 AND N2/D2 IN,z SUM N3/D3 OUT FORM UNREDUCED SUM:NUMN1D2N2D1DEND1D2NUM0N30:D31:800: SKIP REDUCE 340: REDUCE TO NNUM/NDEN D SUBROUTINE TO ORDER FRACTIONS; N N1/D1 AND N2/D2 INJ X RETURNS:s b MARK=-1 IF N1/D1N2/D2  CROSS MULTIPLY: AN1D2:BN2D1 ABMARK1NNUM/NDEN  8  SUBROUTINE TO MULTIPLY FRACS\  N1/D1 AND N2/D2 IN, N3/D3 OUTb   COMPUTE UNREDUCED PRODUCT NUM/DEN NUMN1N2 DEND1D2 340: REDUCE TO NNUM/NDEN  SET UP FOR RETURN &N3NNUM:D3NDEN 0 :"OUTINE) h NUM, DEN IN, NNUM,NDEN OUTK r IF NUM = 0, SKIP GCD SUBRTNf |NUM0NNUM0:NDEN1:v ANUM:BDEN 240: GCD SUBROUTINE  SUBROUTINE RETURNS GCD  NOW DIVIDE OUT BY GCD: NNUMNUMGCD:NDENDENGCD  REDUCED FORM IS B: REMAINDER9 R0300: ALGORITHM FINISHED,GCD IS Bb  IF R <> 0 MUST DO ANOTHER DIVISION  NOW SET UP FOR NEXT DIVISION "AB:BR:240 ,GCDB 6 @ SUBROUTINE FINISHED J T SUBROUTINE TO REDUCE FRACTION ^ USING GCD SUBRIN,", :" MARK = -1,0,1 OUT:580"[ :"SUM: N1/D1, N2/D2 IN, N3/D3 OUT : 710"{ :"GETTER:NUM,DEN OUT:820" :"LAST LINE: 1060": GCD SUBROUTINE:A,B IN,GCD OUT SUBROUTINE ASSUMES B<>0 Q(AB): DIVIDE A BY B RAQZ EQUATIONSd2180$nAx"FRACTIONS SUBROUTINES"^:"STARTING LOCATIONS:":"GCD : A,B<> 0 IN, GCD OUT:220":"REDUCE:NUM,DEN IN, NNUM,NDEN OUT:340":"MULTIPLY:N1/D1, N2/D2 IN, N3/D3 OUT:470" :"ORDER: N1/D1,N2/D2               d SINE SHIFTERnJx" THIS PROGRAM COMPUTES THE SUMS OF"q:"THE TERMS OF THE POWER SERIES"w:" 3 5 7""X - X /3! + X /5! - X /7! + ..."::"YOU SUPPLY THE VALUE FOR X:" "X = ";X UM:D(ROW,VARS1)DEN2:"CHECK THE EQUATION":Q1400: PRINT EQUATION ROWt(:"IS THIS CORRECT (Y OR N)";z2<ANS$:ANS$"N"ė:1170FANS$"Y"1340PROWZ PRINT ALL EQUATIONS:d2600nxRS(COLVARSĺ"A(";COL;")X";COL;"+";NCOLVARSĺ"A(";COL;")X";COL;"=";WCOLc"B";:sCOL1VARS:"A(";COL;")=";:820: FRAC GETTERN(ROW,COL)NUM:D(ROW,COL)DENCOL:"B";"=";:820: FRAC GETTER N(ROW,VARS1)N B)L"HOW MANY VARIABLES";:VARSLV:"HOW MANY EQUATIONS";:EQNSo`N(EQNS,VARS1),D(EQNS,VARS1)jROW1EQNSt~ GET EQUATION "ROW":"TYPE IN A(1)...A(";VARS;"),";" AND B "::"FOR EQUATION ";ROW:COL1VAA$ DEN1@ HERE, HAVE FOUND "/" AS K-TH CHAR OF A$SNUM$(A$,K1)jDEN$(A$,(A$)K)zNUM(NUM$)DEN(DEN$)DEN0ĺ:"DENOMINATOR NOT ALLOWED TO BE ZERO.":870$. SUBROUTINE TO GET EQUATIONS8 TION" pA$)z SEARCH FOR "/" IN A$:8K1(A$)] LOOK AT K TH CHARACTER OF A$:qCHAR$(A$,K,1)CHAR$"/"1000: FOUND "/": KEEP LOOKING FOR "/" HERE, A$ HAS NO "/";ASSUME A$ IS INTEGERNUM(A$): NUMERICAL VAL OF DENN3NNUM:D3NDEN #*G4 SUBRTN TO READ FRAC FROM KYBDk> SUBRTN EXPECTS STRING NUM/DENH AND EXTRACTS NUM AND DENR BEFORE ENTERING SBRTN, SET\ VV$= SOME CONNECTING WORDf:PRINT : PRINT "PLEASE TYPE ";VV$;"FRACK1ABMARK0$ABMARK1*0R SUBROUTINE TO ADD FRACTIONSl N1/D1 AND N2/D2 IN, SUM N3/D3 OUT FORM UNREDUCED SUM:NUMN1D2N2D1DEND1D2NUM0N30:D31:800: SKIP REDUCE 340: REDUCE TO NNUM/N :( D SUBROUTINE TO ORDER FRACTIONSA N N1/D1 AND N2/D2 INP X RETURNS:y b MARK=-1 IF N1/D1N2/D2  CROSS MULTIPLY: AN1D2:BN2D1ABMARRM IS NNUM/NDEN  >  SUBROUTINE TO MULTIPLY FRACSb  N1/D1 AND N2/D2 IN, N3/D3 OUTh   COMPUTE UNREDUCED PRODUCT NUM/DEN NUMN1N2 DEND1D2 340: REDUCE TO NNUM/NDEN  SET UP FOR RETURN &N3NNUM:D3NDEN 0D SUBROUTINE/ h NUM, DEN IN, NNUM,NDEN OUTQ r IF NUM = 0, SKIP GCD SUBRTNl |NUM0NNUM0:NDEN1:| ANUM:BDEN 240: GCD SUBROUTINE  SUBROUTINE RETURNS GCD  NOW DIVIDE OUT BY GCD: NNUMNUMGCD:NDENDENGCD  REDUCED FORAQB: REMAINDER? R0300: ALGORITHM FINISHED,GCD IS Bh  IF R <> 0 MUST DO ANOTHER DIVISION  NOW SET UP FOR NEXT DIVISION "AB:BR:240 ,GCDB 6 @ SUBROUTINE FINISHED J T SUBROUTINE TO REDUCE FRACTION ^ USING GC' :" MARK = -1,0,1 OUT:580"V :"SUM: N1/D1, N2/D2 IN, N3/D3 OUT : 710" :"FRACTION GETTER: NUM, DEN OUT:820" :"LAST LINE: 1400": GCD SUBROUTINE:A,B IN,GCD OUT SUBROUTINE ASSUMES B<>0 Q(AB): DIVIDE A BY B d EQUATION GETTERn<x"FRACTIONS SUBROUTINES"Y:"STARTING LOCATIONS:":"GCD : A,B<> 0 IN, GCD OUT:220":"REDUCE:NUM,DEN IN, NNUM,NDEN OUT:340":"MULTIPLY:N1/D1, N2/D2 IN, N3/D3 OUT:470":"ORDER: N1/D1,N2/D2 IN,"        ") = ";(X)* :"DO ANOTHER ONE";:ANS$: ANS$"N"Ā@ I 200OIABLE: JS0) T UPDATE SUM VARIABLE:3 ^SSTO h PRINT DEGREE AND SUM:X rK,Sb |ANS${ ANS$"S"450: END  COMPUTE NEW TERM: TT(1)XX((K1)(K2))  UPDATE DEGREE: KK2 350 34,0 :"COMPUTER'S SIN(";X; 2 "HIT 'S' TO STOP, 'RETURN' TO CONTINUE."C :"X = ";Xd :"DEGREE SUM"j q 7 34,5: PROTECT FROM SCROLLING  INITIALIZE DEGREE VARIABLE: "K1 , INITIALIZE TERM VARIABLE: 6TX @ INITIALIZE SUM VARJd SINE SERIESnHx" THIS PROGRAM COMPUTES THE SUMS OF"o:"THE TERMS OF THE POWER SERIES"u:" 3 5 7""X - X /3! + X /5! - X /7! + ..."::"YOU SUPPLY THE VALUE FOR X:""X = ";X     DIGIT QGRR: RECORD FIRST REPEATING REMAINDERVSKIP$"TRUE": TO SKIP REMAINDER COMPARING p: BREAK TO NEW LINE340: GET NEXT DIGIT HERE, MAGICR HAS ALREADY BEEN FOUND IF R = MAGICR, PRINT ON NEW LINERMAGICRĺ340: GET NEXTTCHES A PREVIOUS R#$K1COUNTER4.RR(K)1140:8`B HERE, NO MATCH WITH PREVIOUS RL ADVANCE COUNTER AND STORE R IN ARRAY:VCOUNTERCOUNTER1`R(COUNTER)Rj340: GET NEXT DIGITt HERE, R MATCHES PREVIOUS REMAINDER&~MAGICANS$"N"180* :"PROGRAM STOPPED."0 N  HAS R ALREADY REPEATED?} SKIP$"TRUE"1190: SKIP COMPARING OF R'S  HERE, R HAS NOT YET REPEATED  SEE IF THIS IS FIRST R COUNTER01090: NO PREVIOUS R TO COMPARE SEE IF R MAINT FLAG0ĺ".";:FLAG1. ANS$: PAUSEF ANS$"S"460: END_ RDNBQ: REMAINDERz DNR10: NEW DIVIDEND 1000: SEE IF R HAS REPEATED 34,0: STOP SCROLL PROTECTION ::"DO YOU WANT TO DO ANOTHER ONE? (Y OR N)"; ANS$ JDNAB OFLAG0: SET FLAG = 1 AFTER DECIMAL POINT IS PRINTEDk T COMPUTE DECIMAL DIGIT Q ^ BY DIVIDING DN BY B hQ0 rDNB(Q1)400: QUOTIENT IS Q |QQ1 370 Q;  IF THIS WAS FIRST DIVISION, PRINT DECIMAL PONG) ":" THE DECIMAL EXPANSION OF"? ,:A;"/";B;" IS "E 6h 7COUNTER0: INITIALIZE COUNTER 8SKIP$"FALSE": SET = "TRUE" AFTER R REPEATS : INITIALIZE ARRAY OF REMAINDERS: <K1BOUND >R(K)0 ?K @ INITIALIZE FOR ALGORITHM:UE." ANS$ C " TYPE IN THE FRACTION A/B FOR WHICH"l :"YOU WANT THE DECIMAL EXPANSION."{ :"A = "; A :"B = "; B "HIT S TO STOP THE EXPANSION" "HIT RETURN TO CONTINUE" 34,3: PROTECT FROM SCROLLI d LD AUTO BREAK)fBOUND100QhR(BOUND): FOR ARRAY OF REMAINDERSWnx" THIS PROGRAM FINDS THE DECIMAL":"EXPANSION OF FRACTIONS.":" IT USES THE LONG DIVISION ALGORITHM."23 " PRESS ANY KEY TO CONTIN    " AND SUM: K,S  PAUSE:) ANS$D ANS$"S"510: END \  COMPUTE NEW TERM:f TTR|  UPDATE COUNTER: KK1 390: DO IT AGAIN 34,0: END SCROLLING PROTECTION :"DO ANOTHER ONE";:ANS$ ANS$"N"Ā  &210 SUM" , 611: @34,10: PROTECT FROM SCROLLINGh J INITIALIZE COUNTER FOR NUMBER OF TERMS:p TK1 ^ INITIALIZE TERM VARIABLE: hTA r INITIALIZE SUM VARIABLE: |S0  UPDATE SUM VARIABLE: SST  PRINT NUMBER OF TERMSD THE RATIO R." :4 :"FIRST TERM A = ";:AL :"RATIO R = ";:RR u :" 2 3 4 " " A + AR + AR + AR + AR + ...." "A = ";A "R = ";R :"HIT 'S' TO STOP, 'RETURN' TO CONTINUE." ":"# OF TERMS d GEOMETRIC SERIESnKx" THIS PROGRAM COMPUTES THE SUM OF"v:"THE TERMS OF THE GEOMETRIC SERIES"~:" 2 3 4 "" A + AR + AR + AR + AR + ....":" YOU SUPPLY THE FIRST TERM A" :"AN    ER DNR10: NEW DIVIDEND& 340I 34,0: STOP SCROLL PROTECTION} ::"DO YOU WANT TO DO ANOTHER ONE? (Y OR N)"; ANS$ ANS$"N"180 :"PROGRAM STOPPED." Y IS " 6+ @ INITIALIZE FOR ALGORITHM:4 JDNA] T COMPUTE DECIMAL DIGIT Q x ^ BY DIVIDING DN BY B hQ0 rDNB(Q1)400: QUOTIENT IS Q |QQ1 370 Q; ANS$: PAUSE ANS$"S"460: END RDNBQ: REMAINDOR WHICH"2 :"YOU WANT THE DECIMAL EXPANSION."A :"A = ";H AW :"B = ";^ Bd "HIT S TO STOP THE EXPANSION" "HIT RETURN TO CONTINUE" 34,3: PROTECT FROM SCROLLING ":" THE DECIMAL EXPANSION OF" ,:A;"/";B;"d LONG DIVISIONnHx" THIS PROGRAM FINDS THE DECIMAL"i:"EXPANSION OF FRACTIONS.":" IT USES THE LONG DIVISION ALGORITHM."23" PRESS ANY KEY TO CONTINUE."ANS$ " TYPE IN THE FRACTION A/B F  1000:2000-p:"I DON'T KNOW HOW TO ";ANS$7z2110A+ "TO CHANGE FUNCTION OR STOP, TYPE 'S'X :"TO MAKE A TABLE OF FUNCTION VALUES,"p *:" TYPE 'T'" 4:"TO USE BISECTION METHOD, TYPE 'B'" >:"WHICH DO YOU WANT TO DO"; HANS$ RANS$"S"Ā \ANS$"T"İ500:2000 fANS$"B"İS$"S"1220 1110. :"ROOT AT X = ";XMK :"F(";XL;") = ";F(XL)h :"F(";XH;") = ";F(XH) :"PRESS ANY KEY TO CLEAR SCREEN." ANS$   MENU SUBROUTINE  "THE FUNCTION IS " 110 3 " " 10ESIRED Q T 0NUMQ;"/";DEN;" <= ";A;"/";B;" < ";NUMQ1;"/";DEN| ::"DO ANOTHER ONE (Y OR N)";:ANS$ DANS$"N"Ā N200PINITIALIZE Q: Q0?  SEE IF DESIRED Q HAS BEEN FOUND i  THAT IS, SEE IF A/B < (NUM+Q+1)/DEN ADENB(NUMQ1)550: END  HERE, Q NOT YET LARGE ENOUGH QQ1 NUMQ;"/";DEN;" <= ";A;"/";B 480 & HERE, HAVE FOUND D CHOOSE SO THAT"< r:" NUM/";DEN;" <= ";A;"/";BR |:"NUM = ";:NUMX u  SEE IF NUM/DEN <= A/B NUMBADEN460  HERE, STARTING NUM/DEN WAS TOO BIG :"YOU GOOFED!" :A;"/";B;" < ";NUM;"/";DEN 570: END  CTIONS";:DEN "9 ,:"WE WILL SEARCH FOR FRACTIONS"d 6:" NUM/";DEN;" AND (NUM+1)/";DENw @:"SUCH THAT" J:" NUM/";DEN;" <= ";A;"/";B;" < (NUM+1)/";DEN T:"WHAT NUMERATOR DO YOU WANT" ^:"TO START WITH?" h:"TRY TO TO CONTINUE." ANS$ G " ENTER THE FRACTION A/B WHICH"e :"YOU WANT TO BRACKET."| :" A = ";:A :" B = ";:B :" WHAT DENOMINATOR DO YOU WANT" :"DO YOU WANT TO USE FOR THE " :"BRACKETING FRA%d FRACTION BRACKETER +nTx" THIS PROGRAM FINDS FRACTIONS"{:"WHICH BRACKET A USER-SUPPLIED":"FRACTION.":" YOU SUPPLY THE DENOMINATOR FOR ":"THE BRACKETING FRACTIONS."23 " PRESS ANY KEY  = X <= XH." :"XL = ";# XL3 :"XH = ";; $XHW .:" XL XH"] 8k BYLF(XL)y LYHF(XH) VXM(XLXH)2 `YMF(XM) jYM01210 tYLYM0XHXM:YHYM:1160 ~XLXM:YLYM XL,XH  PAUSE: ANS$ ANX VALUE = "; X0- :"X STEP SIZE = ";5 &DX; 0V :" X F(X)"b DK020p NXX0KDX} XX,F(X) b l:"PRESS ANY KEY TO CLEAR SCREEN."; vANS$   BISECTION SUBROUTINE  "ENTER STARTING INTERVAL XL N2/D2\ CROSS MULTIPLY:fAN1D2:BN2D1pABMARK1zABMARK0ABMARK1F ENDING CEREMONY:>:"THIS IS THE CLOSEST BRACKETING"f:"WITH DENOMINATORS UP TO ";BOUND34,0: END SCROLLING PROTECTION   SUBROUTINE TO ORDER FRACTIONS* N1/D1 AND N2/D2 IN4 RETURNS:> MARK = DM:530, IF SQUARE OF MEDIANT > TARGET,Q MAKE MEDIANT NEW HIGH BOUNDnMARK0NHNM:DHDM:530 HERE, MARK = 0, SO SQUARE OF MEDIANT = TARGET:"PERFECT SQUARE!":"SQUARE OF ";NM;"/";DM;" = ";NTARG;"/";DTARG770: ENDXDMBOUND740: ENDNb SQUARE MEDIANT AND PREPARE FOR ORDER SUBROUTINEdlN1NMNM:D1DMDMv800: COMPARE MEDIANT AND TARGET IN ORDER SUBROUTINE IF SQUARE OF MEDIANT < TARGET, MAKE MEDIANT NEW LOW BOUNDMARK0NLNM:DLDTARG+  INITIALIZE BRACKETING FRACTIONSH NLLOW:DL1:NHHIGH:DH1e  PRINT CURRENT BRACKET:w :NL;"/";DL; &20 0NH;"/";DH : COMPUTE MEDIANT OF BRACKETING FRACTIONS: DNMNLNH:DMDLDHN SEE IF DENOMINATOR HAS EXCEEDED BOUND:NN1:3806  HERE, MARK = 0, SO N*N = NTARG/DTARGO :"PERFECT SQUARE!"| :N;"*";N;" = ";NTARG;"/";DTARG:34,0:  INITIALIZE BRACKETING INTEGERS LOW AND HIGH: LOWN1:HIGHN  INITIALIZE TARGET FOR ORDER SUBROUTINE N2NTARG:D2E N/ h INITIALIZE N2/D2 FOR ORDER SUBROUTINEE rN2NTARG:D2DTARGx | SQUARE N AND SET N1/D1 FOR ORDER SUBROUTINE N1NN:D11 800: COMPARE N*N TO TARGET MARK1470: N*N > TARGET  IF N*N < NTARG/DTARG, ADVANCE N: MARK1" :"FRACTIONS";:BOUND" 6  PRINT HEADER:m ":"APPROXIMATING SQUARE ROOT OF ";NTARG;"/";DTARG ,:"LOW ESTIMATE"; 620 @"HIGH ESTIMATE" J34,4: PROTECT HEADER FROM SCROLLING T FIND BRACKETING INTEGERS: ^N0: INITIALIZD USES THEM AS NEW LOW AND HIGH"C :"ESTIMATES AS APPROPRIATE."i 23:"PRESS ANY KEY TO CONTINUE."s ANS$y :"ENTER THE TARGET FRACTION." :"NUMERATOR";:NTARG :"DENOMINATOR";:DTARG :"MAXIMUM DENOMINATOR FOR BRACKETING (d MEDIANT ROOT SEARCH .nUx" THIS PROGRAM APPROXIMATES ":"THE SQUARE ROOT OF A TARGET FRACTION":"BY STARTING WITH CONSECUTIVE BRACKETING":"INTEGERS.":" IT COMPUTES SUCCESSIVE MEDIANTS" :"AN     K=1 IF N1/D1>N2/D2(d CROSS MULTIPLY:<nAN1D2:BN2D1LxABMARK0]ABMARK1mABMARK1syFOR NEXT DIVISION#AB:BR:1210-GCDB3M  SUBROUTINE FINISHEDSY}( SUBROUTINE TO ORDER FRACTIONS2 N1/D1 AND N2/D2 IN< RETURNS:F MARK=0 IF EQUALP MARK=-1 IF N1/D10Q(AB): DIVIDE A BY BRAQB: REMAINDERR01270: ALGORITHM FINISHED,GCD IS B IF R <> 0 MUST DO ANOTHER DIVISION NOW SET UP HAN TARGET. IF J = 1, ALL ENTRIES ARE LARGER THAN TARGET>8LBJ11110wL"SQUARE OF ";N(J1);"/";D(J1);" < ";VNTARG;"/";DTARG;`" < ";"SQUARE OF ";N(J);"/";D(J)j23:"DO YOU WANT TO DO ANOTHER (Y OR N )";tANS$ ~ANS$"Y"ĺ:XHAUSTED ARRAY WITHOUT FINDING ONE LARGER THAN TARGETw"SQUARE OF ";N(LAST);"/";D(LAST);" < ";NTARG;"/";DTARG:1130 HERE, HAVE HIT TARGET$"SQUARE OF ";N(J);"/";D(J);" = ";NTARG;"/";DTARG:11308. HERE, HAVE FIRST ENTRY, N(J)/D(J) LARGER TLAST4 SQUARE N(J)/D(J) AND SET FOR ORDER SUBRTNRN1N(J)N(J):D1D(J)D(J)r1320: ORDER, MARK RETURNSMARK01020: NEXT JMARK01050: HIT TARGET!MARK01070: HAVE FOUND FIRST ENTRY LARGER THAN TARGETJ5 HERE, ED ";HIGH/f:"WITH DENOMINATORS UP TO ";DMAX[p:"THE CLOSEST BRACKETING IS GIVEN BY"az SEARCH ARRAY FOR ENTRIES WHOSE SQUARES BRACKET NTARG/DTARG SET UP TARGET FOR ORDER SUBRTNN2NTARG:D2DTARG BEGIN SEARCHJ1(23), :"PRESS ANY KEY TO CONTINUE."6ANS$< i*" FOR WHAT FRACTION DO YOU WANT TO"4:"APPROXIMATE THE SQUARE ROOT?">:"NUMERATOR = ";:NTARGH:"DENOMINATOR = ";:DTARGR\"AMONG ALL FRACTIONS BETWEEN ";LOW;" ANT1N(J):T2D(J).N(J)N(J1):D(J)D(J1)FN(J1)T1:D(J1)T2eFLAG1: RECORD THE SWITCH: GO TO NEXT FRAC PAIR IF FLAG = 1 HERE, A SWITCH WAS MADE, SO ANOTHER PASS MAY BE NEEDEDFLAG1610:" SORTING IS COMPLETE." PUTTING THE ARRAY IN ORDER"" X( bE lFLAG0: INITIALIZE FLAGU vJ1LAST1w  SET UP FOR ORDER SUBROUTINE N1N(J):D1D(J):N2N(J1):D2D(J1) 1310: ORDER, MARK RETURNS MARK0730: NO SWITCH  HERE, MARK > 0, SO SWITCHRMS, ALREADY IN ARRAYB  HERE,N/D IN LOWEST TERMS, PUT IN ARRAYT N(J)N:D(J)Dn JJ1: ADVANCE INDEXu N| D    RECORD J-1, LENGTH OF ARRAY &LASTJ1 0:ARRAY OF FRACS COMPLETE ::NOW SORT THE ARRAY D N" ALL FRACTIONS "G r:"BETWEEN ";LOW;" AND ";HIGH;" WITH DENOMINATORS"` |:"UP TO ";DMAX;"."f  J1: SET INDEX FOR ARRAY D1DMAX NLOWDHIGHD  SET UP FOR GCD SUBROUTINE AN:BD 1180 GCD1500: NOT IN LOWEST TE" :"TO BE"; DMAX9 :"LOW INTEGER = ";:LOWY ":"HIGH INTEGER = ";:HIGH_ , 6 COMPUTE ADEQUATE SIZE FOR ARRAY @SIZE(HIGHLOW)DMAX(3DMAX1)2 JN(SIZE),D(SIZE) T SET UP UNORDERED ARRAY ^ h" LOADING ARRAY OF / :"WHOSE SQUARES BRACKET A GIVEN TARGET "B :"FRACTION."L (23)n "PRESS ANY KEY TO CONTINUE."x ANS$ PROG TO SORT AND PRINT FRACTIONS " FOR THE BRACKETING FRACTIONS, WHAT" :"DO YOU WANT THE LARGEST DENOMINATORzd FRACTION ROOT SEARCH%nRx" THIS PROGRAM APPROXIMATES SQUARE"o:"ROOTS BY FRACTIONS.":" IT SEARCHES THROUGH ALL FRACTIONS":"BETWEEN TWO INTEGERS, WITH DENOMINATORS" :"UP TO A USER-SUPPLIED BOUND, FOR ONES "     ARE = ";(N)(N)* :"DO ANOTHER ONE";4 ANS$I &ANS$"Y"ė:150O 0 S: XNXOYOYP<  UPDATE COUNTER FOR NUMBER OF STEPS:R COUNTERCOUNTER1f  UPDATE X:p XOXN 310: DO IT AGAIN :"ROOT AT XO = ";XO :"NUMBER OF STEPS = ";COUNTER :"COMPUTER'S SQR(";N;") = ";(N) :" ITS SQUMPUTE Y COORDINATE:! JYOF(XO)B T IF YO = 0, HAVE FOUND ROOTV ^YO0490: ENDc h PAUSE:m rANS$ | IF OPERATOR HIT "S" THEN END: ANS$"S"500  COMPUTE SLOPE OF TANGENT LINE: YPDF(XO)  X PT WHERE TANGENT HITS X AXIINITIALIZE COUNTER FOR NUMBER OF STEPS:5 COUNTER0O DEFINE FUNCTION:` F(X)XXN DEFINE DERIVATIVE FUNCTION: DF(X)2X  "HIT 'S' TO STOP, 'RETURN' TO CONTINUE." ":" X"," X*X" , 6XO,XOXO @ COPd NEWTON'S METHOD nLx" THIS PROGRAM APPROXIMATES SQUARE"o:"ROOTS BY NEWTON'S METHOD."w::" FOR WHAT NUMBER DO YOU WANT TO":"APPROXIMATE THE SQUARE ROOT";N SET INITIAL GUESS:XON' FLAG1810) HERE, SORT IS COMPLETEF NOW PRINT SORTED ARRAYLi"HERE IS SORTED ARRAY:"o}K1LASTN(K);"/";D(K);" ";`0: NO SWITCH/p HERE, MARK > 0, SO SWITCHCzT1N(J):T2D(J)_N(J)N(J1):D(J)D(J1)wN(J1)T1:D(J1)T2FLAG1: RECORD THE SWITCH: GO TO NEXT FRAC PAIR IF FLAG = 1 HERE, A SWITCH WAS MADE, SO ANOTHER PASS MAY BE NEEDED RACS COMPLETE&:NOW SORT THE ARRAY, N"PUTTING THE ARRAY IN ORDER"T Z*w4FLAG0: INITIALIZE FLAG>J1LAST1H SET UP FOR ORDER SUBROUTINERN1N(J):D1D(J):N2N(J1):D2D(J1)\330: ORDER, MARK RETURNSfMARK093EST TERMS, ALREADY IN ARRAYM  HERE, N/D IN LOWEST TERMS, SO PUT IN ARRAY_ N(J)N:D(J)D "PUTTING ";N(J);"/";D(J);" IN ARRAY" JJ1: ADVANCE INDEX N D    RECORD J-1, LENGTH OF ARRAY LASTJ1 :ARRAY OF FT UP UNORDERED ARRAYB 0"LOADING ARRAY OF FRACS, 0 <= N/D <= 1,"d ::"DENOMINATORS UP TO ";DMAXj D NJ1: SET INDEX FOR ARRAY XD1DMAX bN0D l SET UP FOR GCD SUBROUTINE vAN:BD 200: FIND GCD  GCD1700: NOT IN LOWABMARK1 ABMARK1$ * Q  PROG TO SORT AND PRINT FRACTIONSm 15:"WHAT DO YOU WANT" :"THE LARGEST DENOMINATOR TO BE"; DMAX   COMPUTE ADEQUATE SIZE FOR ARRAY SIZEDMAX(DMAX1) N(SIZE),D(SIZE) & SE @ J. T SUBROUTINE TO ORDER FRACTIONSG ^ N1/D1 AND N2/D2 INV h RETURNS:v r MARK=0 IF EQUAL | MARK=-1 IF N1/D1N2/D2  CROSS MULTIPLY: AN1D2:BN2D1 ABMARK0 UBROUTINE ASSUMES B<>03 Q(AB): DIVIDE A BY BK RAQB: REMAINDERw R0290: ALGORITHM FINISHED,GCD IS B  IF R <> 0 MUST DO ANOTHER DIVISION  NOW SET UP FOR NEXT DIVISION AB:BR:230 "GCDB , 6 SUBROUTINE FINISHED!d FRACTION SORTER 'nQx" THIS PROGRAM SORTS AND PRINTS"W"ALL FRACTIONS BETWEEN 0 AND 1 WITH""DENOMINATORS UP TO A USER-SUPPLIED""BOUND."470 GCD SUBROUTINE:A,B IN,GCD OUT S     z#?ΠàҠ " ΠΧӠΠ̠ àӠ ŠӠ ŠҠŠӠ  ҠҠ  ҠӠ ԠҠ ŠԠŠΠ ̠Ԡ! ̠Π  Ҡ  ٠ Π  Р  ΧӠϠ àӠ ҠԠҠ ǠΠ ĠϠˠ ΠҠ ӠӠҠ٠ӠӠ ŠӠ٠!Ҡ"ҠΠҠ ΠԠȠԠԠȠ ΠҠ ŠԠȠŠàȠ ӠΠӠŠԠϠϠǠӠŠҠΠĠϠӠŠϠ ROUTINE, SETP VV$= SOME CONNECTING PHRASE SUCH AS "A",OR "THE FIRST",ETC.u(:"PLEASE TYPE ";VV$;"FRACTION"}2A$< SEARCH FOR "/" IN A$:FK1(A$)P LOOK AT K TH CHARACTER OF A$ZCHAR$(A$,K,1)dCHAR$"/"1450: HAVE FOUNM0N30:D31:1250: SKIP REDUCE@790: REDUCE TO NNUM/NDENTN3NNUM:D3NDENZ` SUBROUTINE TO READ FRAC FROM KEYBOARD  SUBRTN EXPECTS STRING OF FORM X/Y  AND EXTRACTS NUM=X AND DEN=Y  BEFORE ENTERING SUBN2/D2B CROSS MULTIPLY:/LAN1D2:BN2D1@VABMARK1P`ABMARK0`jABMARK1ftl~ SUBROUTINE TO ADD FRACTIONS N1/D1 AND N2/D2 IN, SUM N3/D3 OUT FORM UNREDUCED SUM:NUMN1D2N2D1DEND1D2!NU1050V0V1591050!U,V' CONVERT X,Y TO U,V:7 X=XL TO U=0S X=XH TO U=279Yu Y=YL TO V=159 Y=YH TO V=0U279(XXL)(XHXL)V159(YYH)(YHYL) IF U OR V OUT OF RANGE, SKIP PLOT:U0U279890: PLOT X,Y ="PRESS ANY KEY TO CONTINUE.";G ANS$M*U421y>:"HIGH Y = ";YH;" AT X = ";XUH"LOW Y = ";YL;" AT X = ";XDR"PRESS ANY KEY TO CLEAR AND END.";\ANS$f:::pz PLOTTER SUBROUTINEX(K) v UPDATE LOW POINT:; Y(K)YLYLY(K):XDX(K)A G O 21m 130: DISPLAY FUNCTION u 22 " ": WIPE OFF LINE NUMBER  SET SCREEN FOR GRAPHICS: :3  NOW PLOT THE POINTS: K1NUM XX(K) YY(K) AND LOW Y: XXL* 120: COMPUTE YB YHY:YLY:XUX:XDXH T 10:17e &"COMPUTING" 0 COMPUTE X,Y PTS ON GRAPH: :K1NUM DX(K)XLKXS NXX(K):120: COMPUTE Y XY(K)Y b UPDATE HIGH POINT: lY(K)YHYHY(K):XUE SCREEN:"! :"LOW X = ";:XL9 :"HIGH X = ";:XH] NUM140: NUMBER OF X STEPS  SET UP ARRAY FOR X,Y COORDINATES X(NUM),Y(NUM)  COMPUTE X STEP VALUE: XS(XHXL)NUM: NUM STEPS XL TO XH  INITIALIZE HIGHECIFIED IN LINE 130:" "130K ,:"DO YOU WISH TO CHANGE THE FUNCTION "^ 6:"(Y OR N)";h @ANS${ JANS$"Y"390 T ^"ENDING FOR NOW SO YOU CAN CHANGE" h:"LINE 130." r130 |  :" ENTER THE X BOUNDS" :"FOR THHE Y COORDINATES OF THE TOP"D :"AND BOTTOM EDGES OF THE SCREEN"o :"ARE SET TO THE HIGHEST AND LOWEST" :"LOWEST FUNCTION VALUES." 23 "PRESS ANY KEY TO CONTINUE. " ANS$  " THE FUNCTION TO BE GRAPHED IS" :"SP(d GRAPHER $n150Kx SUBROUTINE TO COMPUTE Y FROM X:]Y(X)(3X)ci" THIS PROGRAM GRAPHS A FUNCTION.":"YOU SUPPLY X COORDINATES OF THE LEFT-":"AND RIGHT-HAND EDGES OF THE SCREEN." :" T   85" K11500:( D$(4): CTRL-D: D$;"CATALOG"@ Ad HELLO n)x4:4T"INVESTIGATING SECONDARY MATHEMATICS"`6::15v"WITH COMPUTERS"9:17"CLASS DISK"17:16"JON L. SICKS"19:8"UNIVERSITY OF MASSACHUSETTS"23:15 "COPYRIGHT 19 ER ,1270: FRAC GETTER, NUM,DEN RETURN\790: REDUCE SUBROUTINE, NNUM,NDEN RETURN:"THE REDUCED FORM OF ";NUM;"/";DEN;" IS ";NNUM;"/";NDEN  SUBROUTINE TO ADD AND PRINT "WHAT FRACTIONS DO YOU WISH TO ADD?"$ VV$"FIRST GG$"M"İ2450:2150,GG$"O"İ2580:2150EGG$"R"İ2250:2150hGG$"S"Ĺ34,0::"SO LONG!":"I DON'T KNOW HOW TO ";GG$2150 SUBROUTINE TO REDUCE AND PRINT"WHAT FRACTION DO YOU WISH TO REDUCE?"VV$"A ": FOR GETT+ 23:"PRESS ANY KEY TO CONTINUE"5ANS$; _*"ADD:TYPE A","MULTIPLY:TYPE M"4"ORDER:TYPE O","REDUCE:TYPE R">"STOP:TYPE S"HR34,5\f:" WHAT OPERATION DO YOU WANT";pGG$zGG$"A"İ2320:2150M(NUM$)DEN(DEN$)SDEN0ĺ:"DENOMINATOR NOT ALLOWED TO BE ZERO.":1320Yo MENU SUBROUTINEu" THIS PROGRAM WORKS WITH FRACTIONS.":"IT CAN DO ADDITION, MULTIPLICATION,":"REDUCING AND ORDERING WITH FRACTIONS."D "/"4n: HAVEN'T FOUND "/" SO ADVANCE K gx HERE, A$ HAS NO "/";ASSUME A$ IS AN INTEGERNUM(A$): NUMERICAL VAL OF A$DEN1 HERE, HAVE FOUND "/" AS K-TH CHARACTER OF A$NUM$(A$,K1)DEN$(A$,(A$)K) NU RANGE, RETURN ( U0U279830;*V0V159830D4U,VJ>$"Y"330 :: 2  PLOTTER SUBROUTINE8 R  CONVERT X,Y TO U,V:X k  X=XL TO U=0  X=XH TO U=279   Y=YL TO V=159  Y=YH TO V=0  U279(XXL)(XHXL) V159(YYH)(YHYL) IF U OR V OUT OF YYLYYH6000  WIPE OUT OLD LOCATION:< 0:670e  COMPUTE NEW X AND Y COORDINATES:s XXDTVX &YYDTVY 0 PLOT NEW LOCATION: :3 D670: PLOTTER N490 X:24 b"OFF SCREEN." l"DO ANOTHER"; vANS$ ANS :YL;" <= Y <= ";YH! YI>  PLOT INITIAL LOCATION:E 3` XXI:YYI:670: PLOT "WHAT INITIAL X VELOCITY DO YOU WANT"; VX :"WHAT INITIAL Y VELOCITY DO YOU WANT"; VY  IF POINT IS OFF SCREEN, END: XXLXXH600  COMPUTE LOW Y AND HIGH Y A " EQUIDISTANT FROM YC AND SO_ , THAT (YH-YL)/(XH-XL)=S:u 6YHYCS(XHXL)2 @YLYCS(XHXL)2 J T23 ^"ENTER INITIAL X COORDINATE" h:XL;" <= X <= ";XH rXI |:"ENTER INITIAL Y COORDINATE"IS NO ACCELERATION IN"8 18:"THE X OR Y DIRECTIONS."^ 23:"PRESS ANY KEY TO CONTINUE."h ANS$ SET TIME INCREMENT: DT.1 SET X BOUNDS: XL100:XH100 SET Y COORD FOR SCREEN CENTER: YC0 S.625: SCALE FACTORKd VELOCITY nOx" THIS PROGRAM DEMONSTRATES CONSTANT"s:"VELOCITY IN THE X-Y PLANE."7:" YOU WILL SPECIFY THE INITIAL ":"X AND Y COORDINATES AND THE INITIAL":"X AND Y VELOCITIES." 16:" THERE    XXSTP "X = ";X K# < X2ĺ"X MISSED 2 "Q X2ĺ"X HIT 2 "w :"FOR STEP SIZE 1/";N;" = ";STPxd STEPPINGnCx" THIS PROGRAM STARTS AT X = 1 AND"s:"ADDS 1/N TO X FOR N TIMES, THEN CHECKS":"WHETHER X = 2.":"WHAT WOULD YOU LIKE THE DENOMINATOR":"N TO BE";:NSTP1NX1:"X = ";XK1N  "WHAT FRACTIONS DO YOU WISH TO ORDER?"D( VV$"FIRST ": FOR GETTERg2 1270: GETTER, NUM,DEN RETURN< N1NUM:D1DEN: FOR ORDER SUBROUTINEF VV$"SECOND ": FOR GETTERP 1270: GETTER, NUM,DEN RETURN Z N2NUM:D2DEN: FOR ORDER SUBROUTINEdFOR GETTER- 1270 GETTER, NUM, DEN RETURNU N2NUM:D2DEN: FOR MULT SUBROUTINEz 920: MULT SUBRTN, N3,D3 RETURN :"THE PRODUCT OF ";N1;"/";D1;" AND ";N2;"/";D2;" IS ";N3; D31ĺ"/";D3   SUBROUTINE TO ORDER FRACS& AND ";N2;"/";D2;" IS ";N3;.t D31ĺ"/";D34~ : _ SUBROUTINE TO MULT AND PRINT "WHAT FRACTIONS DO YOU WISH TO MULTIPLY?" VV$"FIRST " 1270: GETTER, NUM,DEN RETURN N1NUM:D1DEN: FOR MULT SUBROUTINE  VV$"SECOND ": ": FOR GETTER1. 1270: GETTER, NUM,DEN RETURNT8 N1NUM:D1DEN: FOR SUM SUBRTNtB VV$"SECOND ": FOR GETTERL 1270: GETTER, NUM,DEN RETURNV N2NUM:D2DEN: FOR SUM SUBRTN` 1160: SUM SUBRTN,N3/D3 RETURNSj :"THE SUM OF ";N1;"/";D1;"U279(XXL)(XHXL).fV159(YYH)(YHYL)\p IF U OR V OUT OF RANGE, RETURN: ozU0U279920V0V159920U,V IS OFF SCREEN!"OFF SCREEN."D"DO ANOTHER (Y OR N) ";:ANS$WANS$"N"320a::z PLOTTER SUBROUTINE  CONVERT X,Y TO U,V:  X=XL TO U=0* X=XH TO U=2794> Y=YL TO V=159H Y=YH TO V=0R\ NXXLXXH7102 X COMPUTE NEW Y COORDINATE:@ bYYDTVY^ l IF Y OUT OF RANGE, END:l vYYL710  COMPUTE NEW X AND Y VELOCITIES: VXVXDTAX VYVYDTAY  PLOT NEW LOCATION: 3 760: PLOTTER 540 HERE POINTI;", Y = ";YI: " X VEL = ";VX;", Y VEL = ";VY[  SET X AND Y ACCELERATIONS:d AX0 AY32: FEET PER SEC PER SEC  WIPE OUT OLD LOCATION: &0:760 0 COMPUTE NEW X COORDINATE: :XXDTVX D IF X OUT OF RANGE, END:" |:YL;" <= Y <= ";YH" YI?  PLOT INITIAL LOCATION:F 3a XXI:YYI:760: PLOT "WHAT INITIAL X VELOCITY DO YOU WANT"; VX :"WHAT INITIAL Y VELOCITY DO YOU WANT"; VY :23 "INITIAL CONDITIONS: "; "X = ";X COORD FOR SCREEN BOTTOM: # YL0> S.625: SCALE FACTOR` " COMPUTE HIGH Y SO THAT { , (YH-YL)/(XH-XL)=S: 6YHS(XHXL) @ J23 T"ENTER INITIAL X COORDINATE" ^:XL;" <= X <= ";XH hXI r:"ENTER INITIAL Y COORDINATETHERE IS A CONSTANT NEGATIVE"G :"ACCELERATION IN THE Y DIRECTION "v :"(AS IN GRAVITY) AND NO X ACCELERATION" 23:"PRESS ANY KEY TO CONTINUE." ANS$ SET TIME INCREMENT: DT.1 SET X BOUNDS: XL100:XH100  SET Yd ACCELERATIONnLx" THIS PROGRAM DEMONSTRATES CONSTANT"t:"ACCELERATION IN THE X-Y PLANE."8:" YOU WILL SPECIFY:"11:" INITIAL X AND Y COORDINATES"13:" INITIAL X AND Y VELOCITIES" 16:"     "TO STOP, TYPE S"7 :"TO CONTINUE, HIT RETURN"g 34,5: PROTECT INSTRUCTIONS FROM SCROLLINGn 6v Q0 B;"*";Q;" = ";BQ "ANS$ ,ANS$"S"330: END 6QQ1 @280 J34,0: END SCROLLING PROTECTION T d MULTIPLESn!x10N" THIS PROGRAM LISTS THE MULTIPLES"r:"OF A USER-SUPPLIED NUMBER."z23" PRESS ANY KEY TO CONTINUE."ANS$" FOR WHAT NUMBER DO YOU ":"WANT THE MULTIPLES";B 1030: ORDER, MARK RETURNS,n N1;"/";D1;Ax MARK1ĺ" < ";U MARK0ĺ" = ";i MARK1ĺ" > ";x N2;"/";D2~ AARIABLES FOR NEXT COMPUTATION:.XOXN:YOYN8RORNHHOHN:VOVN_910: DO IT AGAINOLD HORIZ, VERT VELOCITIES:RORI: OLD RADIAL DISTANCEV MAIN PROGRAM:q PLOT LOCATION XO,YO:XXO:YYO120: PLOT X,Y COMPUTE NEW LOCATION AND VELOCITIES:280: XO,YO,HO,VO,RO IN, XN,YN,HN,VN ,RN OUT RESET V:3  PLOT SUN:&*X0:Y0:120.423J>"STARTING CONDITIONS:"eH"X = ";XI;" Y = ";YIR"X VEL = ";HI;" Y VEL = ";VI\ INTITIALIZE VARIABLES:fRI(XI2YI2): RADIAL DISTANCE TO SUNpXOXI:YOYI: OLD X,Y zHOHI:VOVI: X COORDINATE,",:XL;" <= X <= ";XH;" :"?:"X = ";:XIe:"ENTER STARTING Y COORDINATE,":YL;" <= Y <= ";YH;" :":"Y = ";:YI:"STARTING X VELOCITY";:HI: H="HORIZONTAL" :"STARTING Y VELOCITY";:VI: V = "VERTICAL" PROPORTIONS& l SET LOW AND HIGH X:7 vXL20:XH20g  SET Y COORD OF VERTICAL CENTER OF SCREEN:p YC0  GET YL,YH SYMMENTRIC ABOUT YC  SO THAT (YH-YL)/(XH-XL)=S: YLYCS(XHXL)2 YHYCS(XHXL)2 "ENTER STARTING W OF GRAVITY.": :" THE LOCATION IS THEN PLOTTED."B 20d &"PRESS ANY KEY TO CONTINUE."n 0ANS$ : SET CONSTANTS: DM750: MASS OF SUN NDT.1: TIME INCREMENT X SET X,Y BOUNDS FOR SCREEN: bS.625: SCALE FACTOR FOR SCREENIPSE"' "WITH THE SUN AT ONE FOCUS."/ 20Q "PRESS ANY KEY TO CONTINUE."[ ANS$a  " YOU SUPPLY INITIAL X,Y LOCATIONS" :"AND INITIAL X AND Y VELOCITIES" :" NEW X AND Y LOCATIONS ARE COMPUTED" :"USING NEWTON'S LAORIZ AND VERT VELOCITIES:8 ^ NEWTON'S LAW OF GRAVITY!Q hHNHOMDTXO(RO3)j rVNVOMDTYO(RO3)p |v  " THIS PROGRAM ILLUSTRATES KEPLER'S" :"FIRST LAW OF PLANETARY MOTION:" :: " THE ORBIT OF A PLANET IS AN ELLOFF SCREEN, RETURN:& U0U2792709 V0V159270B U,VH r  SUBROUTINE TO UPDATE VARIABLES: " COMPUTE NEW X,Y COORDINATES: ,XNXODTHO 6YNYODTVO @ COMPUTE NEW DISTANCE TO SUN: JRN(XN2YN2) T COMPUTE NEW H` d KEP 1n3906x PLOTTER SUBROUTINEP CONVERT X,Y TO U,V:W n X=XL TO U=0 X=XH TO U=279 Y=YL TO V=159 Y=YH TO V=0U279(XXL)(XHXL)V159(YYH)(YHYL) IF   & h34,0: END SCROLLING PROTECTION :"DIVIDING ";A$ :"BY ";BI 34,5: PROTECT FROM SCROLLINGP 6X Q0o "Q;"*";B;" = ";QB ,AB(Q1)330: END 6QQ1 @290 J:"WHEN ";A;" IS DIVIDED BY ";B T"THE QUOTIENT IS ";Q ^"AND THE REMAINDER IS ";AQB'd WHOLE NUMBER DIVISION%n-x10X" THIS PROGRAM DOES WHOLE NUMBER"d12:17u"DIVISION."}23" PRESS ANY KEY TO CONTINUE."ANS$" WE WILL DIVIDE A BY B":"A = ";:A:"B = ";:B   Y(K):XUX(K)& v UPDATE LOW POINT:C Y(K)YLYLY(K):XDX(K)I O W 21u 130: DISPLAY FUNCTION } 22 " ": WIPE OFF LINE NUMBER  SET SCREEN FOR GRAPHICS: :3  NOW PLOT THE POINTS: K1NUM XX(K)IZE HIGH AND LOW Y: XXL2 120: COMPUTE YJ YHY:YLY:XUX:XDXP \ 10:17m &"COMPUTING" 0 COMPUTE X,Y PTS ON GRAPH: :K1NUM DX(K)XLKXS NXX(K):120: COMPUTE Y XY(K)Y b UPDATE HIGH POINT: lY(K)YHYHR THE SCREEN:"% :"LOW X = ";:XL= :"HIGH X = ";:XHe NUM140: NUMBER OF X STEPS  SET UP ARRAY FOR X,Y COORDINATES X(NUM),Y(NUM)  COMPUTE X STEP VALUE: XS(XHXL)NUM: NUM STEPS XL TO XH  INITIAL"SPECIFIED IN LINE 130:"" "130O ,:"DO YOU WISH TO CHANGE THE FUNCTION "b 6:"(Y OR N)";l @ANS$ JANS$"Y"390 T ^"ENDING FOR NOW SO YOU CAN CHANGE" h:"LINE 130." r130 |  :" ENTER THE X BOUNDS" :"FO THE Y COORDINATES OF THE TOP"H :"AND BOTTOM EDGES OF THE SCREEN"s :"ARE SET TO THE HIGHEST AND LOWEST" :"LOWEST FUNCTION VALUES." 23 "PRESS ANY KEY TO CONTINUE. " ANS$  " THE FUNCTION TO BE GRAPHED IS" : d GRAPHER 2 (n150Ox SUBROUTINE TO COMPUTE Y FROM X:aY(X)(3X)gm" THIS PROGRAM GRAPHS A FUNCTION.":"YOU SUPPLY X COORDINATES OF THE LEFT-":"AND RIGHT-HAND EDGES OF THE SCREEN." :" :"HALF BASE TIMES HEIGHT: ";ALTBASE2C :"LENGTHS OF SIDES:"^ :S1;" ";S2;" ";S3 :"HERON'S FORMULA GIVES:";HNS (X1X2)2(Y1Y2)2)* SEMI(S1S2S3)2X HNS(SEMI(SEMIS1)(SEMIS2)(SEMIS3))^ u " FOR POINTS" :"(";X1;",0)" :"(";X2;",0)" :"(";X3;",";Y3;")" :"ALTITUDE TO X-AXIS BASE:";ALT :"LENGTH OF BASE :";BASE( ; X1* :"FOR SECOND POINT, X = ";2 "X28 ,d 6"ENTER X AND Y COORDINATES FOR THIRD "t @:"VERTEX: J:"X = ";:X3 T:"Y = ";:Y3 ^ALT(Y3) hBASE(X1X2) rS1((X2X3)2(Y2Y3)2) |S2((X1X3)2(Y1Y3)2) S3(-S2)*(S-S3)) "6 :"WHERE S=SEMI-PERIMETER AND THE"b :"LENGTHS OF THE SIDES ARE S1,S2,S3."j 23 "PRESS ANY KEY TO CONTINUE." ANS$ "ENTER THE X COORDINATES OF TWO POINTS" :"ON THE X-AXIS:" :"FOR FIRST POINT, X = "d HERON'S DEMOnBx" THIS PROGRAM DEMONSTRATES"k:"THE EQUIVALENCE OF TWO FORMULAS":"FOR THE AREA OF A TRIANGLE:"::"BASE-HEIGHT FORMULA: AREA=BASE*HEIGHT/2":"HERON'S FORMULA:" :" AREA=SQR(S*(S-S1)*(S   0250: ALGORITHM FINISHED, GCD IS BN IF R <> 0 MUST DO ANOTHER DIVISIONb FIRST, PAUSE:l ANS$ NOW SET UP FOR NEXT DIVISION AB:BR:160 :"GCD(";N1;",";N2;")= ";Bd GCD DEMOnCx"FOR WHAT NUMBERS DO YOU WANT THE GCD?"a:"FIRST NUMBER = ";:N1:"SECOND NUMBER = ";:N2AN1:BN2: SET UP FOR ALGORITHM Q(AB): DIVIDE A BY BRAQB: REMAINDER:A;"=";Q;"*";B;"+";R% R V:! X=XL TO U=0= X=XH TO U=279C_ Y=YL TO V=159x Y=YH TO V=0~U279(XXL)(XHXL)V159(YYH)(YHYL) IF U OR V OUT OF RANGE, SKIP PLOT:U0U2791050V0V15910YY(K)890: PLOT X,Y" E"PRESS ANY KEY TO CONTINUE.";O ANS$U*]421>:"HIGH Y = ";YH;" AT X = ";XUH"LOW Y = ";YL;" AT X = ";XDR1200\ANS$f:::pz PLOTTER SUBROUTINE CONVERT X,Y TO U, ANS$ANS$"Y"İ720'1070:ER (Y OR N)";8ANS$+BANS$"N"ĉ::DL"CHANGE EQUATIONS";NVANS$c`ANS$"Y"ĉ:430j"CHANGE SCREEN BOUNDS";tANS$~ANS$"Y"İ530"CHANGE TIME INTERVAL OR NUMBER OF STEPS";ANS$ANS$"Y"İ650"READY TO PLOT";U279(XXL)(XHXL).V159(YYH)(YHYL)W IF U OR V OUT OF RANGE, SKIP PLOT:kU0U2791020V0V1591020U,V MAIN PROGRAM490: SET SCREEN BOUNDS640: SET TIME INTERVAL$720: PLOT CURVE ."DO ANOTH ";TH;", ";BOUND;" STEPS") TTLTHTS4*X(T)?4Y(T)S>860: PLOT X,YYH_Rx\ PLOTTER SUBROUTINE~fp CONVERT X,Y TO U,V:z X=XL TO U=0 X=XH TO U=279 Y=YL TO V=159 Y=YH TO V=0 STEPS TO BE PLOTTED = ";:BOUNDHTS(THTL)BOUND: TIME STEP SIZENm SUBROUTINE TO DRAW CURVEv:3 DISPLAY FUNCTION FORMULA::(21)810,820(21) " ":" ": WIPE OFF LINE NUMBERS" T FROM ";TL;" TOFROM YC AND SO, N THAT (YH-YL)/(XH-XL)=S:B XYHYCS(XHXL)2X bYLYCS(XHXL)2~ l:"LOW Y = ";YL;", HIGH Y = ";YH v  SUBROUTINE TO SET TIME INTERVAL :"STARTING TIME = "; TL :"ENDING TIME = "; TH :"NUMBER OFO SET SCREEN BOUNDS I :" ENTER THE X BOUNDS FOR THE SCREEN:"Q :h :"LOW X = ";:XL :"HIGH X = ";:XH &YC0: CENTRAL Y COORDINATE 0S.625: SCALE FACTOR : COMPUTE LOW Y AND HIGH Y  D EQUIDISTANT 810 r820 |@ :"DO YOU WISH TO CHANGE THE EQUATIONS"U :"( Y OR N )";_ ANS$s ANS$"Y"1030y  "ENDING NOW SO YOU CAN CHANGE" :"THE EQUATIONS." 810,820 :"TO RESTART, TYPE 'RUN 1030'"   SUBROUTINE TO THE GRAPHS."= :" YOU WILL ALSO SPECIFY THE NUMBER"g :"OF TIME VALUES TO BE USED IN THE"z ":"PLOTTING." ,(23):" PRESS ANY KEY TO CONTINUE." 6ANS$ @ J:" THE EQUATIONS ARE SPECIFIED IN " T:"LINES " ^ hANS$ : :" YOU WILL SUPPLY THE X BOUNDS FOR "h :"THE SCREEN. THE Y COORDINATE OF THE" :"CENTER OF THE SCREEN IS SET TO 0." :" HIGH AND LOW Y BOUNDS ARE THEN" :"COMPUTED WHICH WILL GIVE CORRECT" :"PROPORTIONS T( !d PARAMETRIC EQUATIONS'nUx" THIS PROGRAM DRAWS THE PATH OF A ":"POINT MOVING ACCORDING TO PARAMETRIC":"EQUATIONS":" X = F(T)":" Y = G(T)"23" PRESS ANY KEY TO CONTINUE."     d DIVISORSn6x"FOR WHAT NUMBER DO YOU"R:"WANT THE DIVISORS";YN}:" THE DIVISORS OF ";N;" ARE"K1(NK)NK200K,KK1KN180 50 U,V?"DO YOU WANT TO DRAW A HORIZONTAL LINE";IANS$\ANS$"N"1280|"HORIZONTAL LINE AT Y = ";YXXLXHXS890: PLOT X,Y"DO YOU WANT TO PLOT A VERTICAL LINE"; ANS$ANS$"N"1370YS : Y=YH TO V=0 D3 NU279(XXL)(XHXL)M XV159(YYH)(YHYL)v b IF U OR V OUT OF RANGE, SKIP PLOT: lU0U279650 vV0V159650 U,V  OFF SCREEN":4602 YYLYYHĺ"OFF SCREEN":460F 490: PLOT X,Y_ "DO ANOTHER";:ANS$u ANS$"N"đ:::~ 360  PLOTTER SUBROUTINE   CONVERT X,Y TO U,V:   X=XL TO U=0  X=XH TO U=279 & 0 Y=YL TO V=159TER'S PI ,:3( 6 DRAW POLAR AXIS:0 @Y0C JX0XHXH140W T490: PLOT X,Y] ^g h:21w r"R = ";:R |"THETA = K*PI FOR K = ";:K THETAKPI  CONVERT (R,THETA) TO (X,Y): XR(THETA) YR(THETA) XXLXXHĺ"XL10 XH10A YC0: CENTRAL Y COORDINATE ^ S.625: SCALE FACTOR~ COMPUTE LOW Y AND HIGH Y EQUIDISTANT FROM YC AND SO  THAT (YH-YL)/(XH-XL)=S: YHYCS(XHXL)2 YLYCS(XHXL)2 "PI4(1): COMPUd POLAR POINT PLOTTER"nMx" THIS PROGRAM PLOTS POINTS WITH"y:"GIVEN POLAR COORDINATES (R,THETA).":"YOU SPECIFY THETA AS A MULTIPLE OF PI."23"PRESS ANY KEY TO CONTINUE."ANS$ SET SCREEN BOUNDS:  MOVE SMALLER NUMBERS TO RIGHT:6NUM9Ė(HRZL2)U10NUMNUM99Ė(HRZL1)kNUM100Ė(HRZL)tNUMzRING BELL PAUSE:# J1500)/ H* NOW BLACK OUT K*N:T4(VRTL)`>(HRZL)kH" . "qRw\f SBRTN TO PLACE NUM ON SCREEN p z570: FIND SCREEN PLACE FOR NUM (VRTL) OVE K*N FROM SCREEN O  IF K*N ALREADY REMOVED, SHOW BRIEFLY IN INVERSE  IF K*N A NEW REMOVAL, FLASH BEFORE REMOVING NUMKN A(KN)0Ğ A(KN)0ğ 870: PRINT K*N ON SCREEN N2800: SKIP PAUSE A(KN)0ĺ"";:  "ALL DONE!"; & 0L : SBRTN TO FIND SCREEN LOCATION FOR NUMi D VRTL IS VERTICAL TAB N HRZL IS HORIZONTAL TAB X bQUOT((NUM1)10) lRDR(NUM1)QUOT10 vVRTLQUOT1 HRZL4RDR1    SBRTN TO REM(KN)0: REMOVE K*N FROM ARRAY2 KK1: NEXT K; 420e NUMA(N):870: STOP FLASHING NUM o NN1 NBOUND530: END  IF A(N) <> 0, N IS NEW PRIME, SO FLASH IT: A(N)0ğ:NUMA(N):870::370 480: NEXT N (2):(23) FLASH 2C r(1):(24):A(N);" IS PRIME. PRESS ANY KEY TO GO ON";X |ANS$: PAUSEo  CLEAR TEXT LINE: (1):(24):39); K2: START SIEVING WITH 2*N KNBOUND470: DONE WITH MULTIPLES OF N 670: REMOVE K*N FROM SCREEN A A(BOUND) K1BOUND' A(K)K- F PRINT TABLE:P  _ N1BOUNDl NUMA(N) "870: PLACE NUM ON SCREEN , 6 BEGIN SIEVE @A(1)0: 1 NOT PRIME J CROSS 1 OFF SCREEN: T(1):(1):" . "; ^N2 h510:{d SIEVE DEMOnJx" THIS PROGRAM DEMONSTRATES THE SIEVE"v:"METHOD FOR CONSTRUCTING A TABLE OF":"PRIMES."(23)"PRESS ANY KEY TO CONTINUE. "ANS$BOUND220: SIEVE UP TO 220 INITIALIZE ARRAY:      OT ORIGIN:*X0:Y0 410600>TTLTHTS=HR3(T)bR CONVERT (R,THETA) TO (X,Y):o\XR(T)|fYR(T)p1060: PLOT X,Yz MAIN PROGRAM400: GET SCREEN BOUNDS590: GET THETA SET UP710: GRAPH FUNCER OF THETA STEPS = ";:BOUNDDTS(THTL)BOUND: THETA STEP SIZEJh SBRTN TO GRAPH FUNCTIONq:3 DISPLAY FUNCTION FORMULA:(21)840(22) " ": WIPE OFF LINE NUMBERKL;"*PI <= T <= ";KH;"*PI"   PL :ANS$ D. N SBRTN TO SET THETA VALUESL XPI4(1): COMPUTER'S PIR bo l"STARTING THETA = K*PI" v:"FOR WHAT K";:KL TLKLPI: LOW THETA :"ENDING THETA = K*PI" :"FOR WHAT K";:KH THKHPI: HIGH THETA:"NUMB.625: SCALE FACTOR6  COMPUTE LOW Y AND HIGH Y W  EQUIDISTANT FROM YC AND SOu  THAT (YH-YL)/(XH-XL)=S: YHYCS(XHXL)2 YLYCS(XHXL)2 :24:"LOW Y = ";YL :24:"HIGH Y = ";YH &20 0"PRESS ANY KEY TO CONTINUE."ANGE" r8400 |"TO RESTART, TYPE 'RUN 910'"6 \  SUBROUTINE TO SET SCREEN BOUNDSb  :" ENTER THE X BOUNDS FOR THE SCREEN:" : :"LOW X = ";:XL :"HIGH X = ";:XH YC0: CENTRAL Y COORDINATE  SRESS ANY KEY TO CONTINUE."$ ANS$* Z :" THE FUNCTION IS SPECIFIED IN LINE"h :"840:"n w "840} , 6:"DO YOU WISH TO CHANGE THE FUNCTION" @:"( Y OR N )"; JANS$ TANS$"Y"910 ^ h"ENDING NOW SO YOU CAN CHSET TO 0."7 :" HIGH AND LOW Y BOUNDS ARE THEN"a :"COMPUTED WHICH WILL GIVE CORRECT" :"PROPORTIONS TO THE GRAPHS." :" YOU WILL ALSO SPECIFY THE NUMBER" :"OF THETA VALUES TO BE USED IN THE" :"PLOTTING." (23):"PY d POLAR GRAPHER$nSx" THIS PROGRAM PLOTS THE GRAPH OF A ":"POLAR COORDINATE FUNCTION R=F(THETA).":" YOU WILL SUPPLY THE X BOUNDS FOR ":"THE SCREEN. THE Y COORDINATE OF THE" :"CENTER OF THE SCREEN IS    ANS$"Y"720 K1B2( PM(K),. 4  B2N: N PRIMES WERE FOUNDF :B2;" PRIMES WERE FOUND UP TO ";BOUND:g D"LOADING PRIME TABLE PM(K)"s NPM(B2){ XN1 bK1BOUND lA(K)0PM(N)A(K):NN1 v  :"PRIME TABLE COMPLETE AS PM(K)," :"FOR 1 <= K <= ";B2  20:N;" IS OUT"<  A(N)=0 MEANS N ALREADY CROSSED OUTV 400: GO TO NEXT N p :"SIEVE COMPLETE":v |   SUBROUTINE TO MAKE ARRAY  OF PRIMES PM(K) "COUNTING PRIMES": N0 K1BOUND A(K)0NN1 & 0" ^KN: START DELETING WITH N*N7 h"SIEVING ON ";Ni rKNBOUND400: FINISHED WITH MULTIPLES OF N~ | CROSS OUT K*N A(KN)0:KK1:370 NN1: NEXT N NNBOUND460: STOP SIEVING A(N)0350: N IS PRIME, START SIEVING ON N PRIMES"; BOUND: :"PRINT PRIME TABLE? (Y OR N)";D ANS$R A(BOUND)X h (13):(10) "INITIALIZING ARRAY" K1BOUND "A(K)K , 6 @ BEGIN SIEVE JA(1)0: 1 IS NOT PRIME TN2: START DELETING MULTIPLES OF 25d SIEVEn<x PROGRAM TO COMPUTE PRIME TABLEn BY SIEVE METHOD, WITH IN-PROCESS COMMENTStz TO SIEVE TO AN ARRAY A(N). IF N IS PRIME, A(N)=N, OTHERWISE A(N)=0 "UP TO WHAT BOUND DO YOU WANT THE     (YHYL)160: Y STEP SIZE7("VERTICAL LINE AT X = ";>2XN<YYLYHYSdF890: PLOT X,YjP{Z"ALL DONE";dANS$nANS$"N"1200x:::AF U OR V OUT OF RANGE, SKIP PLOT:5U0U2791220IV0V1591220RU,VXW"Y"İ710)950: PRESENT OPTIONS AGAINB$ PLOTTER SUBROUTINEH.b8 CONVERT X,Y TO U,V:hB{L X=XL TO U=0V X=XH TO U=279`j Y=YL TO V=159t Y=YH TO V=0~U279(XXL)(XHXL)V159(YYH)(YHYL)! ITION!"DO ANOTHER ONE";:ANS$7ANS$"N"đ:::U"CHANGE FUNCTION";:ANS$jANS$"Y"ĉ:350"CHANGE SCREEN BOUNDS";:ANS$ANS$"Y"ĉ:400"CHANGE THETA SET UP";:ANS$ANS$"Y"ĉ:590"READY TO PLOT";:ANS$ANS$N2500 6 NOW HAVE S THE SUM OF ALL DIVISORSN @SNNĺN;" IS PERFECT":c J: GO TO NEXT Ns T"ALL DONE" 1M K IS POSSIBLE DIVISOR; S IS SUM OF DIVISORSU INITIALIZE K AND S:] K1e S0 (NK)NK290: K NOT A DIVISOR, SO GO TO NEXT K  HERE, K IS A DIVISOR, SO ADD K AND N/K TO S SSK NKKSSNK "KK1 ,KKtd PERFECT SEARCHnEx" THIS PROGRAM SEARCHES FOR"u:"PERFECT NUMBERS BY TESTING ALL NUMBERS":"FROM 1 UP TO M.":" UP TO WHAT M DO YOU WANT TO SEARCH";:M" OF THE NUMBERS UP TO ";M;",": N  pANS$"Y"ė:380+z760: OPTIONS AGAINTNS$ ANS$"N"đ:::4"CLEAR SCREEN";:ANS$D ANS$"Y"đf*"CHANGE ECCENTRICITY";:ANS$y4ANS$"Y"840>"ECCENTRICITY =";:ECCH"CHANGE DIRECTRIX";:ANS$RANS$"Y"870\"DIRECTRIX X = ";:Pf"READY TO PLOT";:ANS$  Y=YL TO V=159)  Y=YH TO V=0/ H U279(XXL)(XHXL)b V159(YYH)(YHYL)  IF U OR V OUT OF RANGE, SKIP PLOT: U0U279730 V0V159730 U,V   ENDING OPTIONS 23 "DO ANOTHER (Y OR N)";ALTHTS RECCP(1ECC(T))E  CONVERT (R,THETA) TO (X,Y):R XR(T)_ YR(T)s 570: PLOT X,Yy & 0740: ENDING OPTIONS : PLOTTER SUBROUTINE D N CONVERT X,Y TO U,V: X b X=XL TO U=0 l X=XH TO U=279 v21) "DIRECTRIX X = ";P6 "ECCENTRICITY = ";ECCI  PLOT ORIGIN:U X0:Y0s 570: PLOTTER SUBROUTINE  DRAW DIRECTRIX: PXHPXLĺ"DIRECTRIX OFF SCREEN":490 U279(PXL)(XHXL) U,0U,159  DRAW CONIC SECTION: TT YLYCS(XHXL)24 "PI4(1): COMPUTER'S PI: ,R 6 SET THETA VALUES:g @TL0: LOW THETA JTH2PI: HIGH THETA TBOUND70: NUMBER OF POINTS TO PLOT ^TS(THTL)BOUND: THETA STEP SIZE h:3 r DISPLAY ECC AND DIRECTRIX: |( P, -10 <= P <= 10") :"FOR P = ";:P4 XL10> XH10n YC0: CENTRAL Y COORDINATE S.625: SCALE FACTOR COMPUTE LOW Y AND HIGH Y EQUIDISTANT FROM YC AND SO  THAT (YH-YL)/(XH-XL)=S: YHYCS(XHXL)2,d POLAR CONICSnJx" THIS PROGRAM DRAWS THE GRAPH OF A"z:"CONIC SECTION USING POLAR COORDINATES.":" YOU SPECIFY THE ECCENTRICITY":"AND DIRECTRIX X = P."::"ECCENTRICITY = ";:ECC :"DIRECTRIX X =  IVIDE A BY B$ RAQB: REMAINDERQ R01080: ALGORITHM FINISHED,GCD IS Bz  IF R <> 0 MUST DO ANOTHER DIVISION $ NOW SET UP FOR NEXT DIVISION .AB:BR:1020 8GCDB BOCD SUBROUTINE* SUBROUTINE RETURNS GCDH NOW DIVIDE OUT BY GCD:f NNUMNUMGCD:NDENDENGCD :"REDUCED FORM OF ";NUM;"/";DEN;" IS "; NNUM;"/";NDEN   GCD SUBROUTINE:A,B IN,GCD OUT  SUBROUTINE ASSUMES B<>0 Q(AB): Dd REDUCE2n PROGRAM TO REDUCE FRACTIONMx USING GCD SUBROUTINESY"WHAT FRACTION DO YOU WANT TO REDUCE?":"NUMERATOR = ";:NUM:"DENOMINATOR = ";:DEN SET UP FOR GCD SUBROUTINE:ANUM:BDEN 1000: G  NE WITH SAME FUNCTION?", :"( Y OR N )";6 ANS$I ANS$"N"290R= ";X0+ 34,3: PROTECT FROM SCROLLING2 4G XX0DX: NEW X[ YF(X): NEW Ys "X = ";X;" Y = ";Y DXDX.9: NEW DX ANS$ ANS$"S"500: END 430: DO ANOTHER ONE 34,0: END SCROLLING PROTECTION :"DO ANOTHER OF(X)XX' 6"BASE POINT X0 = ";:X0V @:"APPROACH FROM LEFT OR RIGHT (L OR R)";` JDIR$u T INITIALIZE DX: ^DIR$"L"DX1 hDIR$"R"DX1 rDIR$"L"DIR$"R"320 | "HIT 'S' TO STOP, RETURN TO CONTINUE." "BASE POINT X0 . :" THE FUNCTION IS DEFINED IN LINE"< :"300:"E 300r :"DO YOU WANT TO CHANGE THE FUNCTION";| ANS$ ANS$"Y"290 "ENDING SO YOU CAN CHANGE THE FUNCTION." 300 :"TO RESTART, TYPE 'RUN 300'  " ,Jd LIMIT TESTERnHx" THIS PROGRAM COMPUTES THE VALUES"v:"OF A FUNCTION F(X) AS X APPROACHES A":"BASE POINT X0.":" YOU SPECIFY THE BASE POINT AND":"SAY WHETHER TO APPROACH X0 FROM" :"THE RIGHT OR LEFT." D31ĺ"/";D3  ;" AND ";N2;"/";D2;" IS ";N3;Q D31ĺ"/";D3W ] ' N1NUM:D1DEN: FOR MULT SUBROUTINEG VV$"SECOND ": FOR GETTERj 1270 GETTER, NUM, DEN RETURN N2NUM:D2DEN: FOR MULT SUBROUTINE 920: "MULTIPLY" SUBRTN, N3,D3 RETURN :"THE PRODUCT OF ";N1;"/";D1;" AND ";N2;"/";D2;" IS ";N3;DEN$(A$,(A$)K)#NUM(NUM$)3DEN(DEN$)mDEN0ĺ:"DENOMINATOR NOT ALLOWED TO BE ZERO.":1320s SUBROUTINE "MULTIPLY AND PRINT" "WHAT FRACTIONS DO YOU WISH TO MULTIPLY?" VV$"FIRST " 1270: GETTER, NUM,DEN RETURNHAR$"/"1450: HAVE FOUND "/"N n: HAVEN'T FOUND "/" SO ADVANCE K x HERE, A$ HAS NO "/";ASSUME A$ IS AN INTEGER NUM(A$): NUMERICAL VAL OF A$ DEN1   HERE, HAVE FOUND "/" AS K-TH CHARACTER OF A$ NUM$(A$,K1)  BEFORE ENTERING SUBROUTINE, SETi  VV$= SOME CONNECTING PHRASE SUCH AS "A",OR "THE FIRST",ETC. (:"PLEASE TYPE ";VV$;"FRACTION" 2A$ < SEARCH FOR "/" IN A$: FK1(A$) P LOOK AT K TH CHARACTER IN A$: ZCHAR$(A$,K,1) dCN NUMN1N2 DEND1D2= 790: REDUCE TO NNUM/NDENU  SET UP FOR RETURNi N3NNUM:D3NDENo   SUBROUTINE "GETTER" TO READ FRAC FROM KEYBOARD  SUBRTN EXPECTS STRING OF FORM X/Y  AND EXTRACTS NUM=X AND DEN=Y% SUBROUTINE RETURNS GCD7 f NOW DIVIDE OUT BY GCD:U pNNUMNUMGCD:NDENDENGCDu z REDUCED FORM IS NNUM/NDEN{    SUBROUTINE "MULTIPY" TO MULTIPLY FRACS  N1/D1 AND N2/D2 IN, N3/D3 OUT   COMPUTE UNREDUCED PRODUCT NUM/DEN AB:BR:690 GCDB" ( W  SUBROUTINE "REDUCE" TO REDUCE FRACTIONr  USING GCD SUBROUTINE * NUM, DEN IN, NNUM,NDEN OUT 4 IF NUM = 0, SKIP GCD SUBRTN >NUM0NNUM0:NDEN1: HANUM:BDEN R690: GCD SUBROUTINE \ FRAC ARITH6 GCD SUBROUTINE:A,B IN,GCD OUTT SUBROUTINE ASSUMES B<>0qQ(AB): DIVIDE A BY BRAQB: REMAINDERR0750: ALGORITHM FINISHED,GCD IS B IF R <> 0 MUST DO ANOTHER DIVISION  NOW SET UP FOR NEXT DIVISIO     X0): NEW DY/ "X = ";X;" DY/DX = ";DYDXG DXDX.5: NEW DXQ ANS$i &ANS$"S"570: END 0500: DO ANOTHER ONE :34,0: END SCROLLING PROTECTION D:"DO AGAIN WITH THIS FUNCTION (Y OR N)"; NANS$ XANS$"N"360 bv DIR$  INITIALIZE DX:1 DIR$"L"DX1D DIR$"R"DX1a DIR$"L"DIR$"R"390g  "HIT 'S' TO STOP, RETURN TO CONTINUE." "BASE POINT X0 = ";X0 34,3: PROTECT FROM SCROLLING 4 XX0DX: NEW X DYF(X)F(T TO CHANGE THE FUNCTION";$ "ANS$7 ,ANS$"Y"360= 6k @"ENDING SO YOU CAN CHANGE THE FUNCTION."t J370 T:"TO RESTART, TYPE 'RUN 360' ^ h rF(X)X2 |"BASE POINT X0 = ";:X0 :"APPROACH FROM LEFT OR RIGHT (L OR R)";:" YOU SPECIFY THE BASE POINT AND"R :"SAY WHETHER TO APPROACH X0 FROM"n :"THE RIGHT OR LEFT."v 23 "PRESS ANY KEY TO CONTINUE." ANS$ :" THE FUNCTION IS DEFINED IN LINE" :"370:" 370 :"DO YOU WANd DERIVATIVE LIMIT nIx" THIS PROGRAM APPROXIMATES THE"s:"DERIVATIVE OF A FUNCTION F(X) AT":"A POINT X0.":" IT COMPUTES THE QUOTIENT":" DY/DX = (F(X)-F(X0))/DX":"FOR X = X0 + DX APPROACHING X0.")  NR JA(K) T UPDATE S,R,P:( ^SSA(K)9 hRR(1A(K))F rPPA(K)L |R i "FOR THE NUMBERS"o z K1N A(K),  : :"THE ARITHMETIC MEAN IS ";SN :"THE GEOMETRIC MEAN IS ";P(1N) :"THE HARMONIC MEAN IS ";HE MEANS"; N :# A(N)D S = RUNNING SUM OF NUMBERSi R = RUNNING SUM OF RECIPROCALS  P = RUNNING PRODUCT OF NUMBERS  INITIALIZE S,R,P: S0:R0:P1 ":"PLEASE ENTER THE NUMBERS." , 6K1N @"A(";K;")= "; d MEANSn?x" THIS PROGRAM COMPUTES THE "k:"ARITHMETIC, GEOMETRIC,AND HARMONIC":"MEANS OF USER-SUPPLIED NUMBERS."20"PRESS ANY KEY TO CONTINUE."ANS$"FOR HOW MANY NUMBERS DO YOU" :"WANT T   d DERIVATIVE FUNCTION$nMx" THIS PROGRAM APPROXIMATES THE"u:"DERIVATIVE OF A FUNCTION F(X).":" IT COMPUTES THE QUOTIENT"::" DY/DX = (F(X)-F(X0))/DX"::"FOR POINTS X0 OF YOUR CHOOSING." :" YOU S    (NUM$)DEN(DEN$)PDEN0ĺ:"DENOMINATOR NOT ALLOWED TO BE ZERO.":1320VdCHAR$"/"1450: FOUND "/";n: KEEP LOOKING FOR "/"jx HERE, A$ HAS NO "/";ASSUME A$ IS INTEGERNUM(A$): NUMERICAL VAL OF A$DEN1 HERE, HAVE FOUND "/" AS K-TH CHAR OF A$NUM$(A$,K1)DEN$(A$,(A$)K)NUMM/DEN+  AND EXTRACTS NUM AND DENL BEFORE ENTERING SBRTN, SETm VV$= SOME CONNECTING WORD(:"PLEASE TYPE ";VV$;"FRACTION"2A$< SEARCH FOR "/" IN A$:FK1(A$)P LOOK AT K TH CHARACTER OF A$:ZCHAR$(A$,K,1)2 IN, SUM N3/D3 OUT3 FORM UNREDUCED SUM:GNUMN1D2N2D1UDEND1D2~NUM0N30:D31:1250: SKIP REDUCE790: REDUCE TO NNUM/NDENN3NNUM:D3NDEN SUBRTN TO READ FRAC FROM KYBD SUBRTN EXPECTS STRING NU=-1 IF N1/D1N2/D2xB CROSS MULTIPLY:LAN1D2:BN2D1VABMARK1`ABMARK0jABMARK1t~ SUBROUTINE TO ADD FRACTIONS N1/D1 AND N2/D) COMPUTE UNREDUCED PRODUCT NUM/DEN7NUMN1N2EDEND1D2e790: REDUCE TO NNUM/NDEN} SET UP FOR RETURNN3NNUM:D3NDEN SUBROUTINE TO ORDER FRACTIONS N1/D1 AND N2/D2 IN RETURNS:$ MARKN1:HANUM:BDEN/R690: GCD SUBROUTINEL\ SUBROUTINE RETURNS GCDjf NOW DIVIDE OUT BY GCD:pNNUMNUMGCD:NDENDENGCDz REDUCED FORM IS NNUM/NDEN SUBROUTINE TO MULTIPLY FRACS N1/D1 AND N2/D2 IN, N3/D3 OUTN$  NOW SET UP FOR NEXT DIVISION5 AB:BR:690? GCDBE _  SUBROUTINE FINISHEDe   SUBROUTINE TO REDUCE FRACTION  USING GCD SUBROUTINE * NUM, DEN IN, NNUM,NDEN OUT 4 IF NUM = 0, SKIP GCD SUBRTN>NUM0NNUM0:NDE13:"GETTER: 1270"/ 15:"LAST LINE: 1500"5 Y  GCD SUBROUTINE:A,B IN,GCD OUTw  SUBROUTINE ASSUMES B<>0 Q(AB): DIVIDE A BY B RAQB: REMAINDER R0750: ALGORITHM FINISHED,GCD IS B  IF R <> 0 MUST DO ANOTHER DIVISIO ! H:"VV$, A$, K, CHAR$,"' < H:"NUM$, DEN$"b &21:"PRESS ANY KEY TO CONTINUE."l 0ANS$r : D10:"STARTING LOCATIONS" N3:"GCD: 670" X5:"REDUCE: 790" b7:"ADD: 1160" l9:"MULTIPLY: 920" v11:"ORDER: 1030" H:"MARK = -1,0,1 OUT." r; |H:"USES VARIABLES A,B."A N "ADD:";i H:"N1/D1, N2/D2 IN,"o  H:"N3/D3 OUT."  H:"CALLS REDUCE SUBROUTINE."  "GETTER:"; H:"RETURNS NUM, DEN."  H:"USES VARIABLES"H:"CALLS GCD SUBROUTINE."1 :"MULTIPLY:";L H:"N1/D1, N2/D2 IN,"R g H:"N3/D3 OUT."m  H:"CALLS REDUCE SUBROUTINE." "21:"PRESS ANY KEY TO CONTINUE." ,ANS$ 6 @"ORDER:"; JH T"N1/D1, N2/D2 IN," ^ hW Z FRACTION SUBROUTINES%d7nH14: HTABXx10:"FRACTIONS SUBROUTINES"h:"GCD :";H:"A, B <> 0 IN, GCD OUT"H:"USES VARIABLES Q AND R.":"REDUCE:";H:"NUM,DEN IN,"H:"NNUM,NDEN OUT."      '# & IF NOT, ASSUME X0$ WAS 'S'< 0X0$"0"620: END Q : COMPUTE DY/DX:] DXX0DXq NDYF(X)F(X0) X" DY/DX = ";DYDX b490: DO ANOTHER ONE l34,0: END SCROLLING PROTECTION v NG INSTRUCTION: 4/ "TYPE 'S' TO STOP."M  PROTECT FROM SCROLLING:W 34,5^ 6o "X0 = ";X0$  EVALUATE X0 STRING: X0(X0$)  SEE IF X0$ WAS A NUMBER: X00570: X0$ WAS A NUMBER  HERE, X0=0, SO SEE IF X0$ WAS '0 "3 ,"ENDING SO YOU CAN CHANGE THE FUNCTION."< 6350_ @:"TO RESTART, TYPE 'RUN 340'e Jk Tz ^F(X)X2 h:"DX = ";:DX r | DISPLAY FUNCTION: 350  WIPE OFF '350 DEF FN' : 2 " "  PRINT ENDIPECIFY IN ADVANCE THE X-SHIFT"6 :"DX TO BE USED."> 23` "PRESS ANY KEY TO CONTINUE."j ANS$p :" THE FUNCTION IS DEFINED IN LINE" :"350:" 350 :"DO YOU WANT TO CHANGE THE FUNCTION"; ANS$ ANS$"Y"340 SQUARE IS LARGER THAN ";NG ZZNĺ"BUT ITS SQUARE IS LESS THAN ";Nx :"DO YOU WANT TO DO ANOTHER ONE (Y OR N)"; ANS$ ANS$"Y"110 Ed SQUARE ROOT DEMO"nEx"FOR WHAT NUMBER DO YOU WANT"Kc"THE SQUARE ROOT";jNuZ(N):"MY VALUE FOR THE ROOT IS ";ZZZNĺ"AND ITS SQUARE IS ";N:230 HERE, SQUARE OF Z IS NOT N  ZZNĺ"BUT ITS INTEGRAL = ";AN :ANS$2 DANS$"S"620: ENDS N GET NEW NUMBER N OF STEPS:] XNN2f b450p l34,0v v  INITIALIZE N: N1, "N = ";N;", ";B  INITIALIZE SUM:L SUM0e  COMPUTE STEP SIZE:t DX(BA)N  COMPUTE SUM OF FUNCTION VALUES: K1N SUMSUMF(AKDX) K  MULTIPLY BY BASE LENGTH: &ANSUMDX 0"APPROX.:A" 6:"ENDING POINT B = ";:B( @J J DISPLAY FUNCTION ON SCREEN:S T290Z ^2n h"FOR FUNCTION" r:"STARTING POINT: A = ";A |:"ENDING POINT: B = ";B :"N = NUMBER OF RECTANGLES" :"TYPE 'S' TO STOP." 34,11 12 O YOU WISH TO CHANGE THE FUNCTION?"< :"(Y OR N)";:ANS$O ANS$"Y"270U :"ENDING SO YOU CAN CHANGE THE FUNCTION:" 290 :"TO RESTART, TYPE 'RUN 270'"    DEFINE FUNCTION: "F(X)X ,:"STARTING POINT A = ";wd INTEGRAL LIMIT nKx" THIS PROGRAM USES THE RECTANGLE"u:"RULE TO APPROXIMATE THE INTEGRAL":"OF A FUNCTION Y = F(X) FROM":"X = A TO X = B."::"THE FUNCTION IS SPECIFIED IN LINE 290:"290# ::"D    Z% :"AND SQUARING K TIMES GIVES"H :"K SQUARES:"N ] K1TIMESg ZZZp K,Zv  :"THE STARTING NUMBER WAS ";NUM : 23:"DO ANOTHER (Y OR N)"; ANS$ ANS$"N"230"NUMBER ";NUM= ,:"AND TAKING THE SQUARE ROOT K TIME GIVES"b 6:" K SQUARE ROOTS"h @w JK1TIMES TZ(Z) ^K,Z hK r: |23 "PRESS ANY KEY TO SEE THE SQUARES." ANS$  "STARTING WITH THE LAST ROOT "; WILL ALSO SPECIFY THE "D :"NUMBER OF SQUARE ROOTS TO BE DONE."L 23n "PRESS ANY KEY TO CONTINUE."x ANS$~ "STARTING NUMBER = "; NUM :"TAKE THE SQUARE ROOT HOW MANY TIMES";:TIMES ZNUM  ""STARTING WITH THE d SQUARE ROOTS REPEATEDLY%nSx" THIS PROGRAM REPEATEDLY TAKES THE"u:"SQUARE ROOT OF A NUMBER.":" THEN IT REPEATEDLY SQUARES ":"THE RESULT.":" YOU WILL SUPPLY THE STARTING":"NUMBER. :" YOU  M OF FUNCTION VALUES:" &K1N19 0SUMSUMF(AKDX)@ :K` D MULTIPLY BY BASE LENGTH:n NANSUMDX X" APPROX. INTEGRAL = ";AN b420 l34,0: END SCROLLING PROTECTION vT$)  SEE IF B$ WAS A NUMBER:A B0490: B$ WAS A NUMBERh  HERE, B=0, SO SEE IF B$ WAS '0' B$"0"620: END  COMPUTE INTEGRAL  INITIALIZE SUM: SUM(F(A)F(B))2  COMPUTE STEP SIZE: DX(BA)N  COMPUTE SUT A = ";:A 63 @ DISPLAY FUNCTION ON SCREEN:< J290C T2W ^"FOR FUNCTION"w h:"STARTING POINT: A = ";A r:"TYPE 'S' TO STOP." |34,7 8  SET NUMBER OF TRAPEZOIDS: N100 "B = ";B$  EVALUATE B STRING: B(B::"DO YOU WISH TO CHANGE THE FUNCTION?"B :"(Y OR N)";:ANS$U ANS$"Y"270[ :"ENDING SO YOU CAN CHANGE THE FUNCTION:" 290 :"TO RESTART, TYPE 'RUN 270'"    DEFINE FUNCTION: "F(X)XX ,:"STARTING POINd INTEGRAL FUNCTION$nQx" THIS PROGRAM USES THE TRAPEZOIDAL"{:"RULE TO APPROXIMATE THE INTEGRAL":"OF A FUNCTION Y = F(X) FROM":"X = A TO X = B."::"THE FUNCTION IS SPECIFIED IN LINE 290:"290) ! ! ! !! xABMARK1! ABMARK1' - E.  ORDER1 SUBROUTINE TO ORDER FRACTIONSJ( N1/D1 AND N2/D2 INY2 RETURNS:y< MARK=0 IF EQUALF MARK=-1 IF N1/D1N2/D2Z CROSS MULTIPLY:dAN1D2:BN2D1 nABMARK0!! ROLLING PROTECTION'ANS$"Y"ė:150-A BISECT AGAIN' b HERE, HAVE HIT ROOT@ l:"ROOT AT X = ";XMi v:"NUMBER OF BISECTIONS = ";COUNTER :"XL*XL = ";XLXL :"XH*XH = ";XHXH :"INTERVAL LENGTH XH-XL = ";XHXL :"DO ANOTHER ONE (Y OR N)"; ANS$34,0: END SCYM0XHXM:YHYM:540A  HERE, THE ROOT IS BETWEEN XM,XH.c  SO SET THE NEW XL = XM:s XLXM:YLYM  PRINT INTERVAL END POINTS: &XL,XH 0 PAUSE: :ANS$ D STOP IF OPERATOR HIT "S": NANS$"S"630: END X390: R: COUNTERCOUNTER16  COMPUTE Y AT MID-POINT:D YMF(XM)f  SEE IF MID-POINT IS A ROOT:z YM0610: END  SEE IF YL AND YM HAVE DIFFERENT SIGNS  IF SO, THE ROOT IS BETWEEN XL,XM,  SO SET THE NEW XH = XM: YL ,75 634,6: PROTECT INSTRUCTIONS FROM SCROLLINGY @ PRINT INITIAL INTERVAL ENDS:d JXL,XHq T PAUSE:{ ^ANS$ h COMPUTE Y VALUES AT XL,XH: rYLF(XL) |YHF(XH)  COMPUTE INTERVAL MID-POINT: XM(XLXH)2  UPDATE COUNTEHN N1XLN:XH1- DEFINE FUNCTION:> F(X)XXNp INTIALIZE COUNTER FOR NUMBER OF BISECTIONS:~ COUNTER0 "HIT 'S' TO STOP, 'RETURN' TO CONTINUE" :"APPROXIMATING SQUARE ROOT OF ";N  "" XL XH".d BISECTIONnGx" THIS PROGRAM APPROXIMATES SQUARE"o:"ROOTS BY THE BISECTION METHOD."w::" FOR WHAT NUMBER N DO YOU WANT TO":"APPROXIMATE THE SQUARE ROOT";N SET INITIAL INTERVAL: N1XL1:X" """"""0: MORE INTERCHANGES MAY BE NEEDED, DO ANOTHER PASSs  HERE, FLAG = 0;NO INTERCHANGES WERE NEEDED;SORT COMPLETE  PRINT SORTED ARRAY K1BOUND A(K);" "; N ; 6 INTERCHANGE A(J) AND A(J+1)^ @TEMPA(J): HOLD VALUE OF A(J)n JA(J)A(J1)~ TA(J1)TEMP ^FLAG1: RECORD INTERCHANGE h r IF FLAG = 1, AN INTERCHANGE WAS MADE IN LAST PASS. OTHERWISE, FLAG = 04 |FLAG128E SORTED A(BOUND)B :"TYPE IN THE NUMBERS, ONE AT A TIME"H W K1BOUNDq "A(";K;") = ";:A(K)w  :USE FLAG TO RECORD PRESENCE OF INTERCHANGE FLAG0: INITIALIZE FLAG "J1BOUND1 ,A(J)A(J1)360: SKIP INTERCHANGEd SORTERnDx" THIS PROGRAM SORTS USER-SUPPLIED"t:"NUMBERS USING A BUBBLE SORT TECHNIQUE."~(23)"PRESS ANY KEY TO CONTINUE."ANS$"HOW MANY NUMBERS DO YOU WANT TO SORT";BOUND SET UP ARRAY TO B"" " "