An RPN Calculator for RiscOs Computers

ECALC is an RPN calculator with an emphasis on the sort of display and
calculations required by an audio electronics engineer.

The program is written in Basic using DrWimp and is a translation of one
originally written in Tcl/Tk for Linux/Unix. The structure simple enough
that it could easily be modified or extended. As supplied it runs under
BASIC64 (see the !Run file). It will run unmodified under ordinary BASIC

The RPN style calculator is greatly superior to the algebraic type for
pretty well any calculation that can realistically be carried out without
programming. It does, however, require that the user has at least some
understanding of how algebraic formulae and numbers work which is probably
why the algebraic type is dominant.

The program has no on-screen 'keyboard' but instead is controlled directly
from the computer keyboard when the entry field in the display window has
focus. The window includes a display of the first five levels of the stack,
which has a fixed depth of 100. The stack is never empty but is filled with
zeros beyond the used levels.

Error recovery is possible with undo and last x.

Angles may be in degrees or radians; toggle deg/rad by select clicking on
the word at the top left corner of the window.

All functions are entered as character strings, the most common
ones being single characters. This, and the ability to enter several
operations at once, makes the calculator really easy to use.

Only real numbers are handled and all calculations are carried out
using double precision floating point (BASIC64).

Numbers may be entered as 3300 3.3e3 3k3
and are case sensitive e.g.     2m2 = 2.2e-3
                                2M2 = 2.2e6
Numbers may also be entered in any of the
conventional mathematical forms.

Numbers are always displayed in engineering format, i.e. mantissa and exponent
with the exponent always a multiple of 3. Normally the exponent is removed and
the decimal point replaced by the appropriate letter (see 'math' and 'elec').


  A series of numbers and operations may be entered at once, separated by
  spaces or commas. Any action is carried out when return <ret> is pressed.

  resistors in parallel: 22k 150k pp <ret> > 19k19 -150k pp <ret> > 22k00

  noise voltage in a 15k resistor, 20kHz bandwidth (default):
                           15k vn rb x <ret> > 2u222  dbu <ret> > -110.8

  num^2 by multiplication: 125 # x <ret> > 15k62 sqr <ret> > 125.0

  three resistors in parallel, longhand: 1/(1/a+1/b+1/c)
                           22k r 33k r 150k r a a r <ret> > 12k13

  three resistors in parallel using the pp function
                           22k 33k pp 150k pp <ret> > 12k13

  db loss in a potential divider, 100k to source 2k2 to ground
                           100k 2k2 pd db <ret> > -33.34

  3dB frequency of 2k2 and 15uF
                           2k2 15u cf <ret> > 4.823

  What resistor will achieve the same cut off frequency with 10nF
                           4.823 10n cf <ret> > 3M300

  In any of the examples, spaces may be replaced by returns, making
  intermediate results available. These results may be saved on the
  stack using # <ret> or in the memory using ms <ret> or a right click
  on any of the displayed stack registers.


The menu operation 'save' saves the calculator state; 'recall' retrieves
the previously saved state.

 Key Words:

 nA, na
 nG#, nAb       frequency from note (A 440)

 # , '          duplicate
 2# , 2'        dup x & y
 2]             swap z & y
 ]              swap x & y
 [              drop
 2x             2X
 2d             0.5X
 a , +          add
 abs            absolute
 acos           acos
 asin           asin
 atan           atan
 al2            antilog 2^x
 all            antilog 10^x
 bw             set bandwidth for rb
 cf             R, C and frequency calculation
 clear ccc      clear stack and last x
 cos            cosine
 ct             cents from frequency ratio
 d , /          divide
 db             dB from voltage ratio
 dbu            dBu from voltage
 dbw            dB from power ratio
 elec           electrical format (e.g. 3k3)
 exp            exponent e^x
 figs           set displayed significant figures
 mmi            convert mm to inches ( x * (1.0/25.4) )
 l2             log2
 ll             log_10
 ln             log_e
 lra            rms add voltage dBs
 lx             push last x
 math           math format (e.g. 3.3e3)
 imm            convert inches to mm ( x * 25.4 )
 mr             recall (push) memory
 ms             transfer x to memory (a right click on any
                stack register also copies it to memory)
 n              negate
 nn             nearest note with deviation in cents pushed on stack
 O              X 2 (octave up)
 o              X 1/2 (octave down)
 pi             push pi
 pow , ^        y^x
 pd             potential divider, y to input x to ground
 pp             resistors x & y in parallel
 pv             convert x to nearest preferred value
 qq ,  QQ       quit
 r              reciprocal
 ra             root of sum of squares (RMS add)
 rb             push sqare root of bandwidth
 rn             resistor producing x voltage noise in 1 Hz bandwidth
 rnb            resistor producing x voltage noise in the set bandwidth
 rs             root of difference of squares (RMS subtract)
 s , -          subtract
 sin            sine
 sq             square
 sqr            square root
 tan            tangent
 undo           undo last operation
 vn             noise voltage of resistor x in 1 Hz bandwidth
 vnb            noise voltage of resistor x in the set bandwidth
 x , *          multiply
 xct            frequency ratio from cents
 xdb            voltage ratio from db
 xdbu           voltage from dbu
 xdbw           power ratio from db

Ecalc is free software released under the GNU General Public License;
see the file 'COPYING' within the application.
The DrWimp library on which it depends for access
to the RISCOS Wimp functions can be obtained here.

Download The application with full source.

Download The application with full source, linked
with the necessary parts of the DrWimp library.

        Contact                Home