home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / calculat / rpn30doc.zip / RPN.MAN < prev    next >
Text File  |  1990-05-29  |  24KB  |  569 lines

  1.  
  2.   RPN  ---  A simulation of a Hewlett-Packard scientific calculator.
  3. ______________________________
  4.  
  5.     SYNOPSIS
  6.     rpn  -b <-t top> <-l left> <-c [config-file]>>
  7.  
  8.     All command-line arguments are optional.  Angle brackets indicate
  9.     associated arguments, square braces indicate optional filenames.
  10. ______________________________
  11.  
  12.     Contents:
  13.     SYNOPSIS
  14.     Contents
  15.     DESCRIPTION
  16.     A Quick Sketch of the HP Calculator Style.
  17.     AVAILABLE FUNCTIONS
  18.         FUNCTIONS
  19.         CONSTANTS
  20.         UNIT CONVERSION functions
  21.         TIME functions
  22.         ANGULAR functions
  23.         MEMORY functions
  24.         STATISTICAL functions
  25.         PRINTING
  26.         MISCELLANEOUS
  27.     SCREEN COLORS
  28.     MEANS
  29.     STANDARD DEVIATION
  30.     LINEAR REGRESSION
  31.     CONFIGURATION FILE
  32.     KNOWN BUGS
  33.     ACKNOWLEDGEMENTS
  34.     VERSION HISTORY
  35.     AUTHOR
  36. ______________________________
  37.  
  38.  
  39.     DESCRIPTION
  40.     RPN is another calculator, this one using rpn logic in the
  41.     manner of my dear departed HP-29c (R.I.P.).  Almost all of
  42.     the functions are implemented.  There is no programmability
  43.     feature.  All math is done in double-precision floating-point.
  44.     There are 100 memory "registers" (rather than the HP-29c's
  45.     31 "registers"), referred to as M[0] .. M[99].  The memory
  46.     registers are long-double-precision, to give the statistical
  47.     functions somewhat more accuracy.
  48.  
  49.     A display is drawn on the right side of the screen, showing
  50.     the stack registers, LastX register, last-executed-function,
  51.     the function name currently being entered, and the number base
  52.     in use.  Two Help screens can be called up via the F1 function
  53.     key; these list the available functions and the hexadecimal
  54.     "digits".  The program was written and tested on a CGA display;
  55.     it has been reported to work on a Hercules display.
  56.  
  57.     (version 2.1)  Optional arguments -t and -l can be supplied
  58.     to open the display at a specified upper-left corner.  Once
  59.     opened, the display may be repositioned as desired by toggling
  60.     on the ScrollLock key and then using the cursor keys.  The Help
  61.     screens may overlap the display in this case, and will get
  62.     turned off as the display moves.  ScrollLock status is
  63.     displayed in the trig-mode window, if it's on.
  64.  
  65.     (version 3.0) Optional argument -b allows use of the slower
  66.     BIOS output mode, which may be work on less-compatible machines.
  67.     Optional argument -c allows use of a configuration file.  If
  68.     a filename is supplied, that file is used (if it exists).
  69.     Without a filename, RPN will look for an environment variable
  70.     named RPN, whose value is taken as the fully path-qualified
  71.     name of the configuration file.  If the environment variable
  72.     is absent, RPN will look for the filename CONFIG.RPN in the
  73.     current directory and in the root directory.  If no configuration
  74.     file is found, the -c option is a harmless error.
  75.  
  76.     With version 3.0, RPN departs from straight interpretation of
  77.     an HP-29, by adding a number of numerical and controlling
  78.     functions.
  79. ______________________________
  80.  
  81.     A Quick Sketch of the HP Calculator Style.
  82.     "RPN" is Reverse Polish (in honor of Lukasiewiez) Notation.
  83.     Numbers are entered onto a 4-deep stack, then a function is
  84.     invoked.  The function removes whatever arguments it needs
  85.     from the stack, and puts its result on the stack instead.
  86.     The previous top-of-stack is saved in the "LastX" register,
  87.     from which it can be recalled for reuse or undoing of the
  88.     last function.  The four stack "registers" are named, from
  89.     top to bottom, X, Y, Z, and T.  When a function pops the
  90.     stack the T register replicates itself.
  91. ______________________________
  92.  
  93.  
  94.     AVAILABLE FUNCTIONS
  95.     Some functions are represented by single keys.  Most of them
  96.     are represented by a multiple-character, carriage-return-
  97.     terminated string.  This string is processed character by
  98.     character (necessary with console input).  Some functions
  99.     have more than one "name" for user convenience.
  100.  
  101.     In the following list, a comma separates alternate forms
  102.     for a function.  A `#' indicates an integer representing a
  103.     memory register (0..99), a precision (number of displayed
  104.     places, 1..19), or a number base (8,10,16 work).  <CR>,
  105.     <SPACE>, and <ESC> are keys.  A `^' indicates a control
  106.     character; a `@' indicates an ALTernate character.
  107.     All other characters must be entered as shown.
  108.  
  109.  
  110.     FUNCTIONS
  111.         +                Y + X
  112.         -                Y - X
  113.         *                Y * X
  114.         /                Y / X
  115.         %                X percent of Y (Y unchanged)
  116.         I                invert X register to (1.0 / X)
  117.         pow, ^           power function (Y^X  or  Y raised-to-power X)
  118.         pow10, p10       anti-common-log (10^X)
  119.         exp              anti-natural-log (e^X  or  exp(X))
  120.         ln               natural logarithm of X
  121.         lg               base-2 logarithm of X
  122.         log              base-10 (common) logarithm of X
  123.         !, fact          factorial of X register  ( == gamma(X+1) )
  124.         gamma            gamma function of X register  ( == (X-1)! );
  125.                 gamma values are approximated to five
  126.                 decimal places (by table lookup)
  127.         sqr              square of X
  128.         sqrt             square root of X
  129.         abs              absolute value of X
  130.         int              integer portion of X
  131.         frac             fractional portion of X
  132.         L                retrieve last X value back into X register
  133.         C                clear X register
  134.         X                exchange X register and Y register
  135.         N, '             change-sign (negate) X register  (quote-mark
  136.                 is alternate 1-key form, for convenience)
  137.                 This key changes the sign of the mantissa or
  138.                 of the exponent, if either is being entered.
  139.  
  140.         ru, UpArrow      roll stack up
  141.         rd, DownArrow    roll stack down
  142.         clrstk           clear all four stack registers
  143.         sinh             hyperbolic sine of X
  144.         cosh             hyperbolic cosine of X
  145.         tanh             hyperbolic tangent of X
  146.         isinh            inverse hyperbolic sine of X
  147.         icosh            inverse hyperbolic cosine of X
  148.         itanh            inverse hyperbolic tangent of X
  149.         csch             hyperbolic cosecant of X
  150.         sech             hyperbolic secant of X
  151.         coth             hyperbolic cotangent of X
  152.         icsch            inverse hyperbolic cosecant of X
  153.         isech            inverse hyperbolic secant of X
  154.         icoth            inverse hyperbolic cotangent of X
  155.  
  156.  
  157.     CONSTANTS
  158.         pi               load value of pi (3.14159...) into X register
  159.         c                load 299792.4562 (km/second;
  160.                 speed of light in free space)
  161.         fc               load 1797610211686.842 (c, in furlongs/fortnight)
  162.         planck           load 6.6261965e-34
  163.                 (Joules/second; Planck's Constant)
  164.         avogadro         load 6.0221694e23  (/ mole;  molecules / mole)
  165.         epsi             load 8.854e-12  (Farads/meter;
  166.                 permittivity of free space (epsilon0))
  167.  
  168.  
  169.     UNIT CONVERSION functions -- all these alter the X-register
  170.         acres            convert hectares to acres
  171.         cal              convert Joules to calories (not Kilocal.)
  172.         celsius          convert Fahrenheit to Celsius
  173.         cuinch           convert gallons to cubic inches
  174.         deg              convert X from degrees to radians
  175.         fahr             convert Celsius to Fahrenheit
  176.         feet             convert meters to feet
  177.         furlongs         convert yards to furlongs
  178.         gal              convert liters to gallons
  179.         hectares         convert acres to hectares
  180.         igal             convert cubic inches to gallons
  181.         joules           convert calories to Joules
  182.         kg               convert pounds (avoirdupois) to kilograms
  183.         km               convert miles to kilometers
  184.         lb               convert kilograms to pounds (avdp.)
  185.         liters           convert gallons (U.S. liq.) to liters
  186.         ly               convert meters to lightyears
  187.         lymeters         convert lightyears to meters
  188.         meters           convert feet to meters
  189.         miles            convert kilometers to miles
  190.         mph              convert miles/hour to meters/second
  191.         mps              convert meters/second to miles/hour
  192.         rad              convert X from radians to degrees
  193.         yards            convert furlongs to yards
  194.  
  195.  
  196.     TIME functions -- convert between decimal-formatted hours
  197.     and "sexagesimal-formatted" hours, where sexagesimal, or
  198.     base 60, is represented as HH.MMSSfff...  Here HH represents
  199.     hours, MM represents minutes, SS represents seconds, and fff...
  200.     represents fractions of seconds.  (HH may be more than two
  201.     digits.)  Base conversion and roundoff anomalies occasionally
  202.     produce a value such as "12.1860" instead of "12.1900".  Values
  203.     are rounded to nanoseconds to alleviate this.
  204.     Usage note:  these functions also convert degrees-minutes-seconds
  205.     to and from decimal degrees.
  206.         hms              convert decimal hours in X register to
  207.                 sexagesimal format
  208.         hrs              convert sexagesimal formatted hours in
  209.                 X register to decimal format.
  210.  
  211.  
  212.     ANGULAR functions
  213.         ^D               put calculator in "Degree" mode (default)
  214.         ^R               put calculator in "Radians" mode
  215.         rad              convert X from degrees to radians
  216.         deg              convert X from radians to degrees
  217.         sin              sine of X
  218.         cos              cosine of X
  219.         tan              tangent of X
  220.         asin, arcsin     arcsine of X
  221.         acos, arccos     arccosine of X
  222.         atan, arctan     arctangent of X
  223.         atan2            arctangent of the ratio Y-register / X-register
  224.                 (better accuracy for some values)
  225.         polar            convert X,Y Cartesian coordinates (in X-register
  226.                 and Y-register) To R,Theta polar coordinates 
  227.                 (R -> X, Theta in radians -> Y)
  228.         rect             convert polar coordinates (R in X, Theta in Y)
  229.                 into X,Y Cartesian coordinates
  230.  
  231.  
  232.     MEMORY functions (see also STATISTICAL) -- in the following
  233.     the `#' symbol refers to an address in the range 0..99, or
  234.     `i' (meaning use M[0] contents as an address).
  235.     `#' is a "metanumber", always specified in base 10.
  236.         clrmem           load 0.0 into all Memory locations
  237.         clrblk           load 0.0 into range of Memory locations,
  238.                 with the lowest index in Y reg. and
  239.                 highest index in X reg.
  240.         sto#, S#         store X into M[ # ]
  241.         sto+#, S+#       add X-contents to M[ # ]
  242.         sto-#, S-#       subtract X-contents from M[ # ]
  243.         sto*#, S*#       multiply M[ # ] by X-contents
  244.         sto*#, S/#       divide M[ # ] by X-contents
  245.         rcl#, R#         recall M[ # ] into X-register
  246.  
  247.  
  248.     STATISTICAL functions
  249.         rcls, Rs         recall M[11] into X, M[13] into Y
  250.         clrsum           load 0.0 into each of M[10] .. M[17],
  251.                 load 1.0 into M[18] and M[19].
  252.         sum+, ]          add X into M[11], X*X into M[12], Y into M[13],
  253.                 Y*Y into M[14], X*Y into M[15];
  254.                 add inverse of X into M[16], inverse of Y
  255.                 into M[17]; multiply X into M[18],
  256.                 multiply Y into M[19]; increment M[10]
  257.                 (X saved in lastX-reg., M[10] into X-reg.)
  258.         sum-, [          subtract X from M[11], X*X from M[12], Y from
  259.                 M[13], Y*Y from M[14], X*Y from M[15];
  260.                 subtract inverse of X from M[16], inverse
  261.                 of Y from M[17]; divide M[18] by X,
  262.                 divide M[19] by Y; decrement M[10]
  263.                 (used to undo a mistaken sum+ function)
  264.         mean             M[11] / M[10] into X,  M[13] / M[10] into Y
  265.         sd               sample std.dev. of X's and Y's into X-register
  266.                 and Y-register respectively
  267.                 (see "STANDARD DEVIATION" below)
  268.         geomean          n'th root of M[18] into X, n'th root of M[19]
  269.                 into Y (M[10] == n)
  270.         harmean          M[10] / M[16] into X,  M[10] / M[17] into Y
  271.  
  272.         clrlin           load 0.0 into each of M[90] .. M[99]
  273.         linreg           perform a linear regression on X-Y pairs
  274.                 accumulated in the summation registers.
  275.                 B1 coefficient into X,  B0 coeff. into Y,
  276.                 s(y|x) into Z, r-squared into T,
  277.                 covariance into LastX.
  278.                 * Memory registers also affected; see below.
  279.         linstats         retrieve statistics from a previous linear
  280.                 regression.  s(B1) into X, t(B1) into Y,
  281.                 s(B0) into Z, t(B0) into T, F-ratio into
  282.                 LastX.  * See below.
  283.         interpy          perform linear interpolation on x value in X,
  284.                 put resulting y value back into X.  This
  285.                 uses B0 and B1 coefficients in registers
  286.                 90 and 91, and is compatible with the
  287.                 `linreg' function.  Also see `lincoeffs'.
  288.         interpx          perform inverse linear interpolation on
  289.                 x value in X, put resulting y value back
  290.                 into X.  This uses B0 and B1 coefficients
  291.                 in registers 90 and 91, and is compatible
  292.                 with `linreg'.  See `lincoeffs'.
  293.         lincoeffs        calculate and store B0 and B1 coefficients
  294.                 into Memory[90] and Memory[91], using
  295.                 two points: x1 from T, y1 from Z, and
  296.                 x2 from Y, y2 from X.  Order of x and y
  297.                 input values differs from `linreg'.
  298.  
  299.  
  300.     PRINTING
  301.         <F2>             Toggle saving of results.  If a savefile
  302.                 is already open it is closed.  Otherwise
  303.                 a file is opened in the current directory.
  304.                 If a name has been typed in, like a
  305.                 function (but not entered), then that is
  306.                 the filename.  Otherwise the name
  307.                 "save-out.rpn" is used.  As each function
  308.                 is performed, its name and the contents
  309.                 of the Y, X, and LastX registers are
  310.                 written.
  311.         prtstk           print the T, Z, Y, X, and LastX registers
  312.         prtreg           print the contents of all non-zero memories
  313.         prtsum           print the contents of the summation memories
  314.                 M[10]..M[19]; also the means, stddev's,
  315.                 geometric means, and harmonic means
  316.         prtlin           print the results of a linear regression.
  317.                 These are precisely the outputs of the
  318.                 `linreg' and `linstats' functions.
  319.  
  320.  
  321.     MISCELLANEOUS -- keys used in entering numbers and controlling
  322.     the calculator.  In the following, '#' is a "metanumber",
  323.     specified in base 10.
  324.         E#               exponent of number currently being entered
  325.                 (mantissa is set to 1 if no current value)
  326.         P#               display # decimal places of the X register
  327.                  (# range should be 0..15)
  328.         B#               display numbers in Base # (anything other than
  329.                  10, 16, 8 is rather flakey; attempting to
  330.                  display non-integers or oversize numbers
  331.                  in other than base 10 forces base 10 again)
  332.         0 .. 9, @A, @B, @C, @D, @E, @F
  333.                 The digits for 0 through 15 (10..15 only
  334.                  needed in base 16).  ALTernate characters
  335.                  @A .. @F generate the last six digits.
  336.                 (Can be changed via the configuration file.)
  337.         <F3>             toggle between Fixed, Scientific, and Default
  338.                 (Base-10) display modes
  339.         init             re-initialize the calculator (like start-up)
  340.         <DEL>, <BACKSPACE>  erase the last-entered digit of a new number
  341.         <CR>             execute the current function;  or,
  342.                  ENTER the current number or metanumber
  343.         <SPACE>          ENTER the current number (push stack)
  344.         <ESC>            close the Help Window if it's showing;
  345.                  or, erase the current function and go back
  346.                  to number entry
  347.         <F1>             Toggle between Help screens 1 & 2, and no screen.
  348.         <F10>            quit the calculator
  349.         <CONTROL>-<F10>  quit the calculator but leave windows showing
  350.         <SHIFT>-<F10>    escape to a subshell pointed to by COMSPEC.
  351.         <SCROLLLOCK>     use cursor keys to move display window about
  352. ______________________________
  353.  
  354.  
  355.     SCREEN COLORS
  356.     The program RPNINST may be used to alter the colors of the
  357.     display and help screens.  If it is invoked without a filename
  358.     it will try to use "RPN.EXE".  Its poening menu offers a choice
  359.     of Display (D), Help (H), or Quit (Q).  If D or H is chosen, the
  360.     appropriate screen is shown with a menu indicating groups of
  361.     colors that can be changed by pressing the appropriate Capitalized
  362.     letter.  For the Help screens you can also press `O' to see the
  363.     effect on the "other" help screen.  Other choices are Reset (R)
  364.     to reset the original colors, Save (S) to save the colors you've
  365.     selected, and Quit (Q or <CR>) to abandon your changes.
  366. ______________________________
  367.  
  368.  
  369.     MEANS
  370.     Given N different values v1 through vN, the `mean', `geometric
  371.     mean', and `harmonic mean' are defined as:
  372.  
  373.                    v1 + ... + vN
  374.               mean =  ---------------
  375.                          N
  376.                      _______________
  377.                   N /            |
  378.         geometric mean =   /  v1 * ... * vN
  379.                  \/
  380.  
  381.                         N
  382.          harmonic mean = -----------------------
  383.                   (1/v1) + ... + (1/vN)
  384. ______________________________
  385.  
  386.  
  387.     STANDARD DEVIATION
  388.     Like the HP calculators, and unlike the inferior, cheap (but
  389.     popularly inexpensive) TI things, this calculates the SAMPLE
  390.     standard deviation rather than the POPULATION standard
  391.     deviation.  The formula for the standard deviation of X,
  392.     given N samples, is:
  393.  
  394.                         /  sum(X * X) + [sum(X) * sum(X) / N]  \
  395.          sd(X) =   sqrt | ------------------------------------ |
  396.                         \                 N - 1                /
  397.  
  398.     The difference is in the divisor, which is (N-1) for samples
  399.     but N for populations.  Thus the sample s.d.  is slightly
  400.     larger than the population s.d., reflecting less certainty
  401.     about the location of the mean.
  402.  
  403.     Population standard deviation is related to sample standard
  404.     deviation by the formula:
  405.  
  406.         sqr(POP) = sqr(SAMP) * (N - 1) / N .
  407. ______________________________
  408.  
  409.  
  410.     LINEAR REGRESSION
  411.     The linear regression routine performs a y(x) least-squares
  412.     fit to the data collected in the summation memories.  The
  413.     Y,X pairs in the summation memories are fitted to the line
  414.  
  415.         y = B0 + B1 * x .
  416.  
  417.     The standard errors of the coefficients, s(B0) and s(B1),
  418.     and their t-statistics, t(B0) and t(B1), are calculated;
  419.     also the standard error of the regression, s(y|x), the
  420.     correlation coefficient of the Y's and X's (r-squared),
  421.     the F-ratio of the regression (for two degrees of freedom
  422.     used by the regression), and the covariance.  These values
  423.     are stored in the high memory registers:
  424.  
  425.         B0        ->  M[90]
  426.         B1        ->  M[91]
  427.         sqr[ s(B0) ]    ->  M[92]
  428.         t(B0)        ->  M[93]
  429.         sqr[ s(B1) ]    ->  M[94]
  430.         t(B1)        ->  M[95]
  431.         sqr[ s(y|x) ]    ->  M[96]
  432.         r-squared    ->  M[97]
  433.         F-ratio(2, N-2)    ->  M[98]
  434.         covariance    ->  M[99]
  435.  
  436.     The defining formulae for these:
  437.  
  438.         c   =  N*sum(x*y) - sum(x)*sum(y)
  439.          det =  N*sum(x*x) - sum(x)*sum(x)
  440.         R1  =  c*c / det    
  441.         T1  =  N*sum(y*y) - sum(y)*sum(y)
  442.         M   =  [ T1 - R1 ] / [ N-2 ]
  443.  
  444.         B1         =  c / det
  445.         s(B1)      =  sqrt[ M / det ]
  446.         t(B1)      =  B1 / s(B1)
  447.         B0         =  sum(y) / N  -  B1*sum(x) / N
  448.         s(B0)      =  sqrt[ (M / det) * sum(x*x) / N ]
  449.         t(B0)      =  B0 / s(B0)
  450.         s(y|x)     =  sqrt[ M / N ]
  451.         r-squared  =  R / T
  452.         F-ratio    =  R1 / M
  453.         covariance =  c / [ N*(N-1) ]
  454.  
  455.     References: "Design of Experiments", Richard A. Freund (Eastman
  456.     Kodak Co.); "Glossary and Tables for Statistical Quality Control,
  457.     American Society for Quality Control, 1973
  458. ______________________________
  459.  
  460.  
  461.     CONFIGURATION FILE
  462.     If RPN.EXE is invoked with a "-c" option, it will attempt to
  463.     read a configuration file.  The path-qualified name may be
  464.     supplied (viz. "rpn -c \etc\myconfig.rpn"); if no name is
  465.     supplied, RPN will check for an environment variable named
  466.     "RPN" whose value is a file name; if that fails it will search
  467.     in the current directory and the device root directory for a
  468.     file named "CONFIG.RPN".  If no file is found, an error message
  469.     is displayed and the calculator starts with default values.
  470.  
  471.     RPN will not look for the configuration file unless given the
  472.     "-c" option, to allow slightly faster startup.
  473.  
  474.     The configuration file presently supports three options.  These
  475.     include starting in "BIOS mode" (also a command-line option)
  476.     in which screen display are done through BIOS calls.  This is
  477.     slow, but may be more portable.  The CONST option allows
  478.     pre-storing numeric values into memory registers.  A HEX-
  479.     characters option, in two forms, allows the hexadecimal digits
  480.     to be bound to any keys on the keyboard (instead of the default
  481.     <ALT>-A through <ALT>-F keys).  The keycodes to be used for
  482.     this are in a separate document, "scancode.doc".  Note that
  483.     the option names and values are case-sensitive:  the keywords
  484.     BIOS, CONST, HEXVAL, and HEXCHAR, must be in Capitals.
  485.     Comments preceded by `#' and blank lines are ignored.
  486.  
  487.     Examples of the usage of these options are given in the supplied
  488.     sample CONFIG.RPN file.
  489. ______________________________
  490.  
  491.  
  492.     KNOWN BUGS
  493.     Only bases 10, 8, and 16 work.  Any other base shows in red
  494.     and leaves the display in base 10; it may also crash the DFA
  495.     and require an <ESC> and an `init'.
  496.  
  497.     The input/output is strongly tied to an IBMpc CGA display.
  498.     Source code obeys TurboCv2.0 notions of dpANSI compatibility.
  499.  
  500.     Decimal-sexagesimal conversions don't really round the
  501.     base-60 numbers correctly on display, because 59.999...
  502.     wants to round to 60 instead of 100.  The underlying
  503.     calculations are rounded to nanoseconds.
  504.  
  505.     The gamma() function is only approximation, based on a 5-place
  506.     table of gamma values in the range 1.00 to 1.99 (copied from
  507.     the CRC Handbook of Chemistry and Physics, 55th edition), with
  508.     linear interpolation between table entries.  Accuracy will be
  509.     fewer than 5 decimal places (for fractional inputs).  Inputs
  510.     greater than 171 will overflow.
  511. ______________________________
  512.  
  513.  
  514.     ACKNOWLEDGEMENTS
  515.     This program owes a very little bit to the "rpn calculator"
  516.     in K&R 1st ed. (other than the entire C language, of course).
  517.     Machine description comes from the "Hewlett-Packard
  518.     HP19C/HP29C Owners Handbook and Programming Guide".
  519.  
  520.     Statistics: "Design of Experiments", Richard A. Freund (Eastman
  521.     Kodak Co.); "Glossary and Tables for Statistical Quality Control,
  522.     American Society for Quality Control, 1973
  523.  
  524.     Bug reports: Nathan Glasser, Mike Mueller, Martin R. Wittmann.
  525.  
  526.  
  527.     VERSION HISTORY
  528.     v3.0 90.05.29  Feeping Creaturism rears its ugly head.
  529.          Configuration files, save (output) files, sub-shell.
  530.          Linear-regression and extended statistics,
  531.          unit conversions, stored constants (fixed ones and
  532.          loadable-from-configuration-file ones).
  533.          Screens may be recolored using rpninst.exe.
  534.          Document `sqr(X)' function, which existed but wasn't
  535.          listed previously (another oops).
  536.          Fixed/scientific display notation available.
  537.          Thoroughly redesigned Help screens.
  538.          Overflow problems (with statistics and other) are now
  539.          trapped and handled.
  540.     v2.3 May 1990 Fix a Mem[0] bug and hex-digit/^C gaffe.
  541.          Hex digits can be set from a configuration file.
  542.          This maintenance release leads into v3.0.
  543.     v2.2 90.01.23  stack display simplified so that it doesn't
  544.          round so strangely.  Deletion of fractional digits fixed?
  545.          Possible bug in error-message display fixed.
  546.          v2.1 only sent to 3 people; this one will get released.
  547.     v2.1 90.01.04  hrs bugfix, movable display position.
  548.          Second released version?
  549.     v2.0 90.01.01, RAMontante --- Add sexagesimal conversions,
  550.          exponent-number entry, degree-mode trig calculations,
  551.          percent function.  Help screens are statically stored
  552.          instead of being constructed at first invocation; this
  553.          is both faster and smaller (but harder to set up in the
  554.          source code), and may avoid a reported problem with
  555.          mislocated helpscreens.  Minimal conversions for TCv2.0.
  556.     v1.1 89.12.20, RAMontante (bobmon@iuvax.cs.indiana.edu)
  557.          documentation fixups, esp. Inverse function!
  558.          fix `pi' entry bug.
  559.     v1.0 89.01.01, RAMontante  (start the year out right)
  560.  
  561.  
  562.     AUTHOR
  563.     R A Montante (bobmon@cs.indiana.edu, bobmon@ucs.indiana.edu)
  564.     Computer Science Department
  565.     Indiana University
  566.     Bloomington, Indiana  47405
  567.  
  568.     May 29th, 1990
  569.