RPN DOC„ãRPN PAS+íRPN COMDWí RPN Calculator by Jon Dart 1866 Diamond St., San Diego 92109 May 4, 1984 RPN is a simple calculator program using Reverse Polish Notation. The source code is compatible with the TURBO PASCAL compiler (Version 1, 2 or 3). It could also be adapted to run on other versions of Pascal, such as UCSD or MT+, but if you want to do this, you're on your own. If you have used a Hewlett Packard calculator before, you will understand how RPN works. If you have never used an RPN calculator before, here is a brief description of how to use it: The calculator maintains a set of four registers which are organized as a stack. When you type in a number, and hit RETURN, the program stores the number in the top two levels of the stack (anything that was on the top of the stack before gets "pushed down" to levels 3 and 4). To add something to the number on the stack, enter a second number, followed immediately by a "+" (the add command). When you hit "+", the second number will be pushed onto the stack, it will be added to the number at stack level 2, and then the stack will be "popped" so that the sum is at level 1. This sounds complicated, but once you get used to it, it is easy. The basic rule is that you always enter the two numbers you want to operate on first, and THEN enter the operation: e.g. to add 2 and 3, type 2 RETURN 3 +. To add more numbers, you only have to keep entering the numbers and a plus sign, since the sum is always saved on the top of the stack. E.g. to add 34 and 45 and 56, type: 34 RETURN 45 + 56 +. The use of the stack for temporary storage can be illustrated by the following example. Suppose you want to add a 5% shipping charge and a 6% sales tax for items priced at $114.95. Type: 114.95 RETURN pushes 114.95 onto the stack 114.95 RETURN pushes an extra copy of 114.95 114.95 5% calculates 5% 5.75 X exchanges the top two levels 114.95 6% calculates 6% 6.90 + adds the shipping and tax together 12.65 + adds the shipping and tax to the price 127.60 Try this example and use the D command to look at the stack at each step. This will give you a good idea of how the calculator works. program rpncalc; {$X-} (* RPN calculator program by: Jon Dart Department of Anthropology UCSD C-001 La Jolla, CA 92093 Version 1.3, 18-Nov-84 *) (* compile with Turbo Pascal *) const ctrl_d = #4; bel = #7; bks = #8; cr = #13; ctrl_x = #24; space = #32; del = #127; width = 16; (* field width for numeric output *) stack_depth = 4; type stacktype = array[0..stack_depth] of real; numstr = string[12]; var cmds,numbers :set of char; decimals :integer; (* # decimal places to display *) i,numlen :integer; ch :char; numbuf :numstr; endofline,exit :boolean; stack :stacktype; function keyin:char; (* returns next key pressed on keyboard *) (* the key is not echoed *) var key :integer; begin repeat key := bdos(6,255); until key<>0; keyin := chr(key); end; procedure echo(ch:char); (* echo chars, print control chars. as "^A", etc. *) begin if ord(ch)>=32 then write(ch) else write('^',chr(ord(ch)+ord('A')-1)); end; function uc(ch:char):char; (* makes character upper-case *) begin if ch in ['a'..'z'] then uc:=chr(ord(ch)-ord('a')+ord('A')) else uc := ch; end; procedure give_instructions; begin writeln('Commands:'); writeln; writeln('+ = Add'); writeln('- = Subtract'); writeln('* = Multiply'); writeln('/ = Divide'); writeln('^ = Exponent'); writeln('% = Percent'); writeln('D = Display Stack'); writeln('R = Square Root'); writeln('W = Set Number of Decimals'); writeln('X = Exchange Top Two Levels of Stack'); writeln('^D = Exit to CP/M'); writeln('^X = Clear Entry'); writeln; end; procedure docommand(ch:char;var numbuf:numstr;var exit:boolean); (* do the command corresponding to character ch *) var temp, t, value :real; i,code :integer; decstr :numstr; error :boolean; procedure pop; (* pop stack *) var i :integer; begin for i:=0 to stack_depth-1 do stack[i]:=stack[i+1]; end; procedure push(value:real); (* push value onto stack *) var i :integer; begin for i:=stack_depth downto 2 do stack[i] := stack[i-1]; stack[1] := value; end (*push*); procedure numout(num:real); (* output num according to current format *) begin writeln(num:width:decimals); end; begin (* docommand *) error := false; if (length(numbuf) > 0) then begin (* decode number in numbuf *) val(numbuf,t,code); if code <> 0 then begin error := true; writeln('Illegal number') end else push(t); end else if ch=cr then push(stack[1]); if not error then case ch of '?': give_instructions; '+': begin stack[2] := stack[2] + stack[1]; pop; numout(stack[1]); end; '-': begin stack[2] := stack[2] - stack[1]; pop; numout(stack[1]); end; '*': begin stack[2] := stack[2] * stack[1]; pop; numout(stack[1]); end; '/': begin stack[2] := stack[2] / stack[1]; pop; numout(stack[1]); end; '^': begin stack[2] := exp(stack[1]*ln(stack[2])); pop; numout(stack[1]); end; '%': begin stack[2] := (stack[1]/100)*stack[2]; pop; numout(stack[1]); end; 'X': begin temp:=stack[2]; stack[2]:=stack[1]; stack[1]:=temp; numout(stack[1]); end; 'D': begin for i:=1 to stack_depth do numout(stack[i]); end; 'R': begin stack[1]:=sqrt(stack[1]); numout(stack[1]); end; 'W': begin write('Number of Decimals? '); readln(decstr); if length(decstr)>0 then begin val(decstr,value,code); if code=0 then begin decimals := trunc(value); numout(stack[1]); end else Writeln('Illegal number.'); end; end; cr: begin numout(stack[1]); end; ctrl_d: exit:=true; ctrl_x: (* do nothing *); end (*case*) end (* docommand *); begin (* main program *) lowvideo; writeln; writeln('RPN Calculator'); writeln('by Jon Dart ... Version 1.3 (18-Nov-84)'); give_instructions; cmds := ['+','-','*','/','%','^','X','D','R','W','?',ctrl_d,ctrl_x, cr]; numbers := ['0'..'9','.']; exit := false; decimals := 2; for i:=1 to stack_depth do stack[i]:=0; repeat write('#'); numbuf := ''; numlen := 0; endofline := false; repeat ch := uc(keyin); if ch in cmds then (* have command *) begin if ch <> cr then echo(ch); writeln; docommand(ch,numbuf,exit); endofline := true; (* treat command as end of line *) end else if ch in numbers then begin write(ch); numbuf := numbuf + ch; numlen := numlen + 1; end else if ch in [bks,del] then begin if numlen > 0 then begin write(bks,space,bks); delete(numbuf,numlen,1); numlen := numlen - 1; end end else write(bel); (* error, ding bell *) until endofline; until exit; end. Ãâ Í«Copyright (C) 1985 BORLAND Inc¡BHeath/Zenith H89ctedPqtqY ELE MKp1q1~·7È#õå~Íèáñ=ÈóÍ ÉoåͦÉþ€ÜkÔ„æîå!îå!è"áãõÅÕ~#·(åÍèáôÑÁñãÉ}´È:$‡‡‡ããããÅÒÁ= ô+èÍÐØ*ÎßõÅÕå!¨Í5!¢ÍÐ*ºÔáÑÁñÉõÅÕå!´éõÅÕå!®àõ:à·(ÅÕå¯2à!ÈÍ5áÑÁñÉõ:àþÿ(öÅÕå>ÿ2à!ÂãõÅÕå!¼ÚõÅÕååð!‹í°Ñ:žO:œ‚ÕÍÜÑ:ŸO:�ƒÍÜ!ðÍÐ* ÍáÑÁñÉ!ð ë!›45(É! +/ –0ü†õyþ0(ñíÉ d!kÃ5!{Ã5Í_æÍ_o&Éô  áÁå:Ý·(ÕÅÍ |µ(Íáþ ÍáþÊÔ ÁÑ*é"Òx2Ýy·( >Ã28!û"9!¥ í°!½¸ í°¯og2Ð"Ô"Ö>~2Ñ2àÉÃà Ã9Ã/Ã4Ã*Ã9à Á‚CÄÅÁÅÕåÝåýåõo&åͦñýáÝááÑÁÉÅÕåÝåýåÍ£}ëÿ í[Òþ (ú!eÍ{ͦþA8þQ0Gþ: xÖ@¯!\w# (Í‚ þ?(þ*( þ.( ÍwÍ^þ. Í^!h6#ûÉ (þ?( þ*( Í‚( w#éÉ>?> w#üÉͦþ 8 åÅ!˜í±ÁáÉ¿É .,;:=?*[]<>{}þaØþ{ÐÖ É|Í´}õͽñæÆ�'Î@'Ãɯ7Ë|À|·}È>ÿÉ2ØÅͯÁ*·íBÚ¨ ëÑùü "Ưog"Î2Ü>Ã2Ù!Þ "Úë"Ìéå*Æ·íB"Æí[Ä·íRëáÚuí°É*Æí°"ÆÙÉ^#V#Õ^#V#N#FáÉÝáëO/o&ÿ9ùëí°ÝéÑO/o&ÿ9ùëí°éÝáë!àÿ9ùëÅ(¯üí°Á> �‘(G¯üÝéÝá!àÿ9ù ¯w#üÝéÝáEͺ¶wÝéÝáÑ}“8÷�Ã' ·íR·íB0 É>‘Ã' ·íRëêqðøÉÕë·íRëáë·íR!È+ÉÍß õͰ ð·íR!À+ÉÍß õͰ ðÍr!Ð+ÉÍß õͰ ðÍr!ÈØ+ÉÍß ôͰ ïÍr!ÈØ#ÉÍß ôͰ ïÍr!Ø+ÉÍß õͰ ðT]KBë!z·> S>)ë)ë0 = öÉ|µÊ |ªõÍ€ëÍ€ëDM¯go>íjíB0 7?ËË= ðëñðHåÍ’Ë<ËÑëÍëËzÈ5ÍaÈ)ýÉÍaÈË<ËúÉëz· {þ0G·É¯goÉë|ª|ú~ºÀ}»ÉÉË|È|/g}/o#É}æo&ÉíKÊí[ÈÅÕxAJSËËËËáëáíJDM!éb"Èë!6íJ"ÊDMÉ'ÍâèÍâdÍâ Íâ} ¯<íR0û= ÈÆ0ÝwÝ#ÉÝ~Ö$O! Ý#Ý~ͦÖ08)þ 8 !Öþ 8þ0T])Ø)Ø T]Ø)Ø_ØËy·È|‡ÉÝááå}&#9N�8wë!DíB9ùëåí°ëá+Oí¸ë#ùÝé>Ã) ÝáÍÈWáÍÝ _áå}“8(º8J`9{‚T]=o`9yí¸ë ¯Ã) Í Ð>Ã' Í� õͬÍ— íÙ}·Ù>Ê' Íõ ßÙËxÙˆ Ù}·ÙÈÙÅÕåÙ}· Ù˸TÅËø¯ÙËø}Ù•(0íD=ÙÍz ,= ù(Ùñæ€ Í’ 0%Í{ ·, 7 ÍÆ ?õ(8Ùͬ Ëx ͆ - öÍr ñ8˸·ÙáÑÁÙÉÙËxÙ Í� Í Ø,-Èxî€GÉÙ}·ÙÊr }·ÈÙ…ÙÍM ÅÕåÝ9Ír Ù.Ù>Ý#ÝnË0Í’ Í{ = ñÙ-Ù åÝnûËx ͇ ,-(-ñññ·ñÙÁáÙÝá˸°G,-Ìr É}·ÈÙ•Ù?ÍM åååÝ9Ù.Ù>ÍÆ 8ͬ ?Ë= ÝuÝ+Ù-Ù(>͆ 0ßͬ ·á͆ 8ÍÆ ?áÑÁËx ͇ š, —7•8Æ€8Æ€8oÝãÙåÅxËøÙ¨æ€õËøÝåÝ!ÉáØ¯oGOW_gÉ·ËËËËËÉ·ËËËËËÉ|Ù„Ùg{Ù‹Ù_zÙŠÙWyÙ‰ÙOxÙˆÙGÉ|Ù”Ùg{Ù›Ù_zÙšÙWyÙ™ÙOxÙ˜ÙGÉxÙ¸ÙÀyÙ¹ÙÀzÙºÙÀ{Ù»ÙÀ|Ù¼ÙÉÙxÙ¨òé xÉËx(Íó È?É}Ù½ÙÀ·ÈÃÆ }Ö�Úr <þ(ÐÙÅÕåÍr 7Í{ = ùÙ|Ù¤Ùg{Ù£Ù_zÙ¢ÙWyÙ¡ÙOxÙ ÙGÃ{ ÙÅÕåÙͬÙÍý ÙÍ� ë}·ÈËx>Â' ͬ}Æ€Ë/Æ€oÖõÙÅÕåÍõ Í -ÅÕåÍ� }áÑÁÙáÑÁã¼ã0ãñÙÉÙÍŽ-Í� ÙÍŽ,Ù}þlØÅ˸Íß Á8 Íõ Í4 Í— Ëx(Í Ù-ÙÍß õ8Í� Ù-ÙÍß 8Ù,Í� }þl8;Ùª*ªª!ªÍ— ÝåÝ! >Í4ÝáͬÍ— Í— ÅÕåÙͬ--Ù-Í ÙáÑÁÙÍ� ,,ñ,-ÈØxî€GÉgª?+2×n¶*ï8t Ð Ðzˆˆˆˆ~«ªªªª,->Ê' ËxÂ' Ù͘Ù}.�•õÍõ Ù͆ÙÍ� ÅÕåÙ,Í ÙáÑÁÍõ ÝåÝ!Œ >Í4Ýá,ÙÍ¢-ÙÍ ñÅÕåo&0%ÍÙ,Í— ÙáÑÁÍ }þgÚr É}Š�؉}颋.:}Žã8Žc~I’$I~ÍÌÌÌL«ªªª*ÙÍ¢Ù·Ëxõ˸Íõ }þˆ0GÅÕå,ÍÐåË<Ë}áõÍ,-(-ÙñáÑÁõÍ� ÝåÝ!>ÍIÝáñ0 õÙ͘ÙÍ— ñ…o8 ñÈÙ͆Ãõ á>Ã' m.`1pF,þåt6|‰„!wS<ÿÃ.zÒ}[•|%¸FXc~üïýu€Ò÷r1}·ÈÝåÙ͆Ù¯Ëx(<˸õÍß 8ÙÍõ ñËÿõÙÏŽé!~JÙÍß 0Í.OÝ!Î>ÙÝÍsÙÍß 8 = ìÙ ÝÙÙÍnËøÍ ÅÕåÍsÍ— Ù͆Í ÙáÑÁÍõ ÝåÍ.ÝáÙÍnÍ ñ0 õÙÍŽ-Í� ñÝáËOÈËøÉçÏÌTöô¢0 jÁ‘ €µžŠoD€‚,:Í€jÁ‘ �€!¢ÚI}袋.º}Žã8Žc~I’$I’~ÍÌÌÌL«ªªªªÝ! >ÅÕåõͬÍ— ñÍIÙáÑÁ× õÙÍnõÙÅÕåÍnÍ ÙáÑÁÙÍ— ñ= éÙ͆à ÝÝnÝfÝ^ÝVÝNÝFÉ!�DLT\ÉI¢Ú!‚!É53ó!�úÉr1÷!€ÒÉÅÕåÙáÑÁÉÍ’!€> Ëx Ë#ËËË-= ðo˸ÉËxÙ͆(Ëø-Í ·Ë}(ËxËø>�½8(Íz ,óÍz `iÈÃ!É>’Ã' |µÊr Ë|Í€>�)=Ë|(úDMboÀ˸ÉÍÈë8þ8ÍÈÙËxÙ(’0¯þ 8> ÕÍ€ÑËx(>-ÍåË{(aËy(ÍãÍÙ ò�z·(>.Íå (Íã ÷ú±ÍÙ÷Ë{È>EÍå>+Ë|(|íDg>-Íå|/Ö 0ûÆ:ÝpÝ# ý~ý#· ý+>0ÝwÝ#Éýå,-  ý60ý#ø¯Ã}Å˸}ÙÖ€oŸgMÍõ|þÙ <ýwíDÍ@}þ�0ͳý5Ëø>„•.(Íz Ë= øý~õ> xæÆ0ýwý#xæGÅÕåË%͇ Ë%͇ ëãÑãíZëáãíJDMáË%͇ = ÈñÁýáÉýåá_~6þ5Øúœ+~¨¥Ôh¶¿ÉìÅëx-ÐÍÎÂSÞùx9?ë+¨­ÅøÉ{Η@}·ÈËøÅÕ|Íz Íz „gãíZëáãíJDMá0Í{ ,7È}Æo˸ÉÍ?¾ #øyîO!@9ùi&ÝéÍ? ë¶¾ â#÷ÚÍ?¶w#ùëùÝéÍ?/¦w#øïÍ?¦w#ùãýáÝá!9ë! E9ýéÝá!!9~·(¯+Fͺ¦!"9ù!(#Ýé>¯2èýá*ÒÍâ¯á"âýå|· >"2ÐÉ:è·( Ͷ *âwÉÍò*â6 ë!\$í°É!æÅåí[Òþ (úͦ–( áÁã·É#ëÁÁþ:À~ÉCONÁTRMÁKBD‚LSTCAUXÄUSRÅ>¯2èÍi:зÀ*âË®~æÀÍ0:зÀ*â:è·€€(@q##pÉÍZ*â ë:è·( ÕÍÑñÅÍÁ<Àx2ÐÉ*â6#ûÉ"â~æÀËv( >ÍÆÍ Ë~È*âå ëÍá< >ÿ2Ð6Éã"äãå!Â"âáÉã"äã"âË~À>2ÐÉã"äã"âËvÀ>2ÐÉ>¯ã"äãå!Â"âË®õÍèñ·(ÍááÉ!Ñ~þ8>~O6~*Ò"ÔÍáwþ(6þ(2þ(-þ()þ(6þ (8þ 0þ Ù:Ý·(ÓÝ*äà yº(È~#ÍÉÀúý+Í (±ï(« 6Íá6 #6 #"ÖÉ*â:з y~Ëo pæ .##~·ò—åͺá(å.6á¯w4Æ._~þ =*â##55= *Ôí[Ö·íR8ÿÍê*Ô~#"Ô= Í£}== ͯ}͵}*âËî#w+É#~+É>Éå*â~æþ('Íkþ!0þ(Ë®ñ]ÅÕÍkÑÁþ!8Ë®ï¯áÉÝ!]Ý~·Èþ-ÀÝ#É8Ý~·È>2Ð7ÉåÍkË®áwÉ>¯OÅÍðÁÍ$ÈÅåÍ÷ÑÁÍ6Ø̃ës #rëÉÍðÍ$ÈÅåÍ£ÙáÁÍ6ØÙÌ� ÙÃÑåëÅÕÍkÑÁþ ( þ(Ë® êáqÉÍkþ(Ë®þ ( þ ïÍkþ Ë®É*âO:зÀ~æ ##å~Æ._qá4ð(þ(áÅå=ʦ==Ê©=ʬò*è:ê¾È4^qÉ*â##~·È6ͺÈ>ð2ÐÉ}ÃÆÁÑÅÝ*ÒË|(̓ëëË|( ̓Ý6-Ý#ÕÍÆáÍÈí[ÒÝåá·íRMë‘8( Gå> ÅÍÆÁ÷áAÈ~ÅåÍÆáÁ#óÁÑÙáÑÁÙÅÝ*ÒÕÍ'¾ÁÑÅÍÈËC!¡ ¿!¥¸TRUEFALSEÍÈ!9N#ÍYÑùÕÉá~#·( G~ÅåÍÆáÁ#õé> ÍÆ> ÃÆ   "âË~(ÕÍkÑ»(þ( þ!0 (Ë®è!É!É>¯2èíSæÍz:зÀÍ0:зÀ*â6Ð##ww#w$w#wÖÿ:è· å¯Í á##N#F*æ·íBÈ>�2ÐÉå¯w#w#í[æs#rá>à "â~æÀÈÍ®*â-¯w#wÔÿw##>Í Í®Ã�ã"äã"â~æÀÀ>2ÐÉ:зÀåÍZë·íRá0¯Í *â4À#4É>™2ÐÉ:зÀåÍZ·íR> *â4 #4(>áÍ Èá>ò2ÐÉ2éë*âËf(/˦:éËG(##~++· :éËO x· y·úCÅÕ!ͺÑÁ Q*â:éËG(Ëî##~Æ.Õ_ÑÖ.Íší âf<ò\=<Íš*â##æw ÅÕåÍ®áÑÁ Õ+Ñ4 #4x±Â ëÉ>™>ð2ÐÉõ:éËG(ëñÉ"âÍ®Èæ"*âËæËnÈË®*âåÅ0ëÍÁá ëÍ·ÉÁÑíSâÅåÍZÑ·íR8@*â N#F#s#rÍ, 0}æ)ëíjëS\*â##w+ N#Fë·íB ÈÕåÍ®Ñár+sÉ>‘2ÐÉÕÙáÙ!T]>)ëíjëÙ)Ù0 0= ïÉÍ]·íR!À#ÉÍ]ëÉ*â^#V#ÕN#F#^#VáÉ>¯2èͰ:зÀÍ0:зÀ*â6Àå ë#Íá-¯Nw#FwÖÿq#p#6€#w#w#wÉ"â~æÀÈÃ�>">!DM!ð"æÝáÑáÝåÅÍýÁ:зÀ*ðíBÈ:éþ!>™(>ð2ÐÉ>">!"æÝáÁÑáÝå2é"â~æÀʰ*æ¯w#wx±(9ÅÕÍ*â ë:éOÍÑÁ· Õ*â-4 #4Ñ!€ë*æ4 #4 Ã*â-N#FÚÿq#püÿV+^ë·íBÐëq#pÉÁÑíSâÅåÍZÑ·íRÚ&*â s#r$ s#rÉÍLÀ ëÍ<À?ýá*ÒÍâ¯áýåÍLÀåÍòáåë!\ í°á åëÍÑ<( !\$í°É>2ÐÉ>¯2èÍLÀ:Ø·>!(ë*â \$í°\Í<(Ï!3°í°:è· í[1ðÕÍ\ÍÑ!€ë·(é7"â~æÈ> 2ÐÉ"æíSèëá"âNs#Frë·íB(Zë#\:Ü í°¯üå\ÍÑ<(?*æ"}íKèÅÕÍ\!ÍÑÁ· !*}#"}!€ë x± Û\Í*â éÝ*â>ðÃ) ÍÈþÐ2ÜÉ"ðëáã"ò{æü_!Þ"øÝ*ÞÝnÝf}´(HíR0ÝnÝfåÝ"øÝáã Ý^ÝVÝåMDÝnÝfÝåÝÝuÝtÝqÝpÝåÑ*øs#rÑ*òs#rÉÝåá"Ä*ð ÝåÁ ÚuíKÆíB!Ú0>ÿÃ' ëáã~#fo{æü_ë"ð*ÞåÝá·íR0RÝnÝfå·íR0ÝáðáÕýáíKðýqýpýuýtÝsÝrÝåáÝNÝFÍ( Ý^ÝVÕÝáÝåáÝNÝFÝ^ÝV*ÞíSÞÕÝáÝuÝtíKðÝqÝpë ·íRÀÕýá*Ä·íR(ý~Ýwý~Ýwýnýf ÝuÝt¯ÉÝåá"Ä6#ûÉÍK*ôÉÍK*öÉ!"ô"öÝ*ÞÝNÝFy°(*ô "ô*ö·íB0íCöÝnÝfåÝáØ*Æûÿ í[Ä·íRØë*ô"ô*ö·íRÐíSöÉí[Äs#rÉ^#Vë"Ä"Þ6#ûÉ>¯O"è¯w2Ðx2ê*â"í!F"âá"äá Í&Íy*í"â*äé>¯2ì"è*â"í!F"âá"äá"ê!\Íâ¯*ê:ì· ÍNÍr!Ð~6·go(Ýåá\íRë*ès#r£Æí_2ËÉëÝáÁáx±( s x±(T]í°ÝéDMÝáÑáx±(ôíR0í ë ëí¸ÝéU(Í�ÝáO/o&ÿ9ùq#ë (í°Ýé!€>F¸0#( ~þ (þ #ï]( ~þ (þ (#ï}“(  Õi&TÉÑÁÕ-a%â}ͦoÉ*é!Ð~6o&ÉÍ|µÈ:Ýõ¯2ÝÍ ñ2Ý}þÀÝá:зÈÝá_Ýá_ÕÍzѯ2Ý*Î|µÝåáíKÌíB "η ÕÕåÍÙÑz· Í^C User break+= Í I/OÍ Run-timeÍ error {Í´Í, PC=*ÎͯÍNot enough memoryÍ Program aborted :Ø·ÊŽ'ÃáÑÑé1!ÂÌÿÍd!,ÇËBÍ>ÍÔÃŽ)!å!ÿëÁÍo&";Ì*;Ìå!ÑÍ’ËEÊÿ *;Ì}2EÌ*EÌ&Éýáá}2:Ìýå*:Ì&å! ÑÍ¥ËEÊZ!*:Ì&Í›Í"Í Ã}!Í›!^Í"*:Ì&å!AÑå!Ñë·íRÍ"Í Éýáá}20Ìýå*0Ì&åÍ�!aå!zÍ›ÍOËEʽ!*0Ì&å!aÑë·íRå!AÑ}21ÌÃÆ!*0Ì&}21Ì*1Ì&ÉÍ›ͺ Commands:ÍÍÍ Í›ÍÍÍ Í›ͺ+ = AddÍÍÍ Í›ͺ - = SubtractÍÍÍ Í›ͺ * = MultiplyÍÍÍ Í›ͺ / = DivideÍÍÍ Í›ͺ ^ = ExponentÍÍÍ Í›ͺ % = PercentÍÍÍ Í›ͺD = Display StackÍÍÍ Í›ͺR = Square RootÍÍÍ Í›ͺW = Set Number of DecimalsÍÍÍ Í›ͺ$X = Exchange Top Two Levels of StackÍÍÍ Í›ͺ^D = Exit to CP/MÍÍÍ Í›ͺ^X = Clear EntryÍÍÍ Í›ÍÍÍ ÉÃD$!å!å!Ñë·íRÑÍfz³Ê¤#Õ"åË!FÌå*åË)]T)Ñå!FÌå*åËå!Ñ)]T)ÑÍ,ÙáÍÑ*åË#ÑÃg#ÉýááÑÁÙ!ßËÍÑýå!å!ÑÍvz³Êþ#Õ"ÕË!FÌå*ÕË)]T)Ñå!FÌå*ÕËå!Ñë·íR)]T)ÑÍ,ÙáÍÑ*ÕË+Ñþ#!FÌå!)]T)Ñå!ßËÍ,ÙáÍÑÉýááÑÁÙ!ÏËÍÑýå!ÏËÍ,Í›ÅÕå!å*xÌÍyÍÍÍ Éýáá"Ìá"Ìá}2Ìýå!}2ïË*ÌÍ:Í£å!ÑÍÌËEÊÆ$*ÌÍ:!Ìå!ýËÍó*ýËå!ÑÍ’ËEÊ·$!}2ïËÍ›ͺIllegal numberÍÍÍ ÃÃ$!ÌÍ,ÅÕåÍ¥#Ãï$*Ì&å! ÑÍËEÊï$!FÌå!)]T)ÑÍ,ÅÕåÍ¥#*ïË&}îoËEÊ�)*Ì&?·íRÂ%ÍÌ!Ã�)+·íRÂx%!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÅÕå!FÌå!)]T)ÑÍ,ÙáÑÁÍé ÙáÍÑÍS#!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)-·íRÂß%!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÅÕå!FÌå!)]T)ÑÍ,ÙáÑÁÍò ÙáÍÑÍS#!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)*·íRÂF&!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÅÕå!FÌå!)]T)ÑÍ,ÙáÑÁÍú ÙáÍÑÍS#!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)/·íR­&!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÅÕå!FÌå!)]T)ÑÍ,ÙáÑÁÍÿ ÙáÍÑÍS#!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)^·íRÂ'!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÅÕå!FÌå!)]T)ÑÍ,Í+ ÙáÑÁÍú Ͷ ÙáÍÑÍS#!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)%·íR‘'!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÅÕå!dÍÙáÑÁÍÿ ÅÕå!FÌå!)]T)ÑÍ,ÙáÑÁÍú ÙáÍÑÍS#!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)X·íR (!FÌå!)]T)ÑÍ,Ù! ÌÍÑ!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÙáÍÑ!FÌå!)]T)Ñå! ÌÍ,ÙáÍÑ!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)D·íRÂM(!å!ÑÍfz³ÊJ(Õ"ÿË!FÌå*ÿË)]T)ÑÍ,ÅÕåÍ$*ÿË#ÑÃ!(Ã�)R·íR™(!FÌå!)]T)Ñå!FÌå!)]T)ÑÍ,ÍF ÙáÍÑ!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)W·íRÂJ)Í›ͺNumber of Decimals? Í !ðËÍË ÍŽÍ !ðËÍ:Í£å!ÑÍÌËEÊG)!ðËÍ:!Ìå!ýËÍó*ýËå!ÑÍËEÊ+)!ÌÍ,ÍÞ"xÌ!FÌå!)]T)ÑÍ,ÅÕåÍ$ÃG)Í›ͺIllegal number.ÍÍÍ Ã�) ·íRÂn)!FÌå!)]T)ÑÍ,ÅÕåÍ$Ã�)·íRƒ)!ë*ÌsÃ�)·íRÂ�)ÉÍkÍ›ÍÍÍ Í›ͺRPN CalculatorÍÍÍ Í›ͺ'by Jon Dart ... Version 1.3 (18-Nov-84)ÍÍÍ ÍÌ!Í�!+Í‘!-Í‘!*Í‘!/Í‘!%Í‘!^Í‘!XÍ‘!DÍ‘!RÍ‘!WÍ‘!?Í‘!Í‘!Í‘! Í‘ !šÌÍÍ�!0å!9Í›!.Í‘ !zÌÍ!}2dÌ!"xÌ!å!ÑÍfz³Ê¬*Õ"vÌ!FÌå*vÌ)]T)Ñå!ÍÙáÍÑ*vÌ#ÑÀ*Í›!#Í"Í ÍM !fÌÍâ!"tÌ!}2eÌÍÿ åÍ~!}2sÌ*sÌ&å!šÌ Í]ÍOËEÊ2+*sÌ&å! ÑÍ’ËEÊ+*sÌ&åÍ.!Í›ÍÍÍ *sÌ&å!fÌå!dÌåÍP#!}2eÌÃñ+*sÌ&å!zÌ Í]ÍOËEÊ€+*sÌ&Í›Í"Í !fÌÍ:*sÌ&e.åÍ= !fÌÍâ*tÌå!Ñ"tÌÃñ+*sÌ&åÍ�!Í‘!Í‘ÍOËEÊå+*tÌå!ÑÍÌËEÊâ+Í›!Í"! Í"!Í"Í !fÌå*tÌå!Íó*tÌå!Ñë·íR"tÌÃñ+Í›!Í"Í *eÌ&ËEÊÑ**dÌ&ËEʬ*ÃÔ !Í‘!Í‘ÍOËEÊO*tÌå!ÑÍÌËEÊÌÍ›!Í"! Í"!Í"Í !fÌå*tÌå!Íó*tÌå!Ñë·íR"tÌÛ+Í›!Í"Í *eÌ&ËEÊÑ**dÌ&