Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xcalc(X) — OpenDesktop 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

X(X)

xrdb(X)


 xcalc(X)                      06 January 1993                       xcalc(X)


 Name

    xcalc - scientific calculator for X

 Syntax

    xcalc [-stipple] [-rpn] [-toolkitoption...]

 Description

    xcalc is a scientific calculator desktop accessory that can emulate a
    TI-30 or an HP-10C.

 Options

    xcalc accepts all of the standard toolkit command line options along with
    two additional options:

    -stipple This option indicates that the
            background of the calculator should be drawn using a stipple of
            the foreground and background colors.  On monochrome displays
            improves the appearance.

    -rpn    This option indicates that Reverse Polish Notation should be
            used.  In this mode the calculator will look and behave like an
            HP-10C.  Without this flag, it will emulate a TI-30.

 Operation

    Pointer Usage:  Operations may be performed with pointer button 1, or in
    some cases, with the keyboard.  Many common calculator operations have
    keyboard accelerators.  To quit, press pointer button 3 on the AC key of
    the TI calculator, or the ON key of the HP calculator.

    Calculator Key Usage (TI mode):  The numbered keys, the +/- key, and the
    +, -, *, /, and = keys all do exactly what you would expect them to.  It
    should be noted that the operators obey the standard rules of precedence.
    Thus, entering ``3+4*5='' results in ``23'', not ``35''.  The parentheses
    can be used to override this.  For example, ``(1+2+3)*(4+5+6)='' results
    in ``6*15=90''.

    The entire number in the calculator display can be selected, in order to
    paste the result of a calculation into text.

    The action procedures associated with each function are given below.
    These are useful if you are interested in defining a custom calculator.
    The action used for all digit keys is digit(n), where n is the corre-
    sponding digit, 0..9.

    1/x       Replaces the number in the display with its reciprocal.  The
              corresponding action procedure is reciprocal().


    x^2       Squares the number in the display.  The corresponding action
              procedure is square().


    SQRT      Takes the square root of the number in the display.  The corre-
              sponding action procedure is squareRoot().


    CE/C      When pressed once, clears the number in the display without
              clearing the state of the machine.  Allows you to re-enter a
              number if you make a mistake.  Pressing it twice clears the
              state, also.  The corresponding action procedure for TI mode is
              clear().


    AC        Clears the display, the state, and the memory.  Pressing it
              with the third pointer button turns off the calculator, in that
              it exits the program.  The action procedure to clear the state
              is off(); to quit, quit().


    INV       Invert function.  See the individual function keys for details.
              The corresponding action procedure is inverse().


    sin       Computes the sine of the number in the display, as interpreted
              by the current DRG mode (see DRG, below).  If inverted, it com-
              putes the arcsine.  The corresponding action procedure is
              sine().


    cos       Computes the cosine, or arccosine when inverted.  The corre-
              sponding action procedure is cosine().


    tan       Computes the tangent, or arctangent when inverted.  The corre-
              sponding action procedure is tangent().


    DRG       Changes the DRG mode, as indicated by 'DEG', 'RAD', or 'GRAD'
              at the bottom of of the calculator ``liquid crystal'' display.
              When in 'DEG' mode, numbers in the display are taken as being
              degrees.  In 'RAD' mode, numbers are in radians, and in 'GRAD'
              mode, numbers are in grads.  When inverted, the DRG key has a
              feature of converting degrees to radians to grads and vice-
              versa.  Example:  put the calculator into 'DEG' mode, and enter
              ``45 INV DRG''.  The display should now show something along
              the lines of ``.785398'', which is 45 degrees converted to
              radians.  The corresponding action procedure is degree().


    e         The constant 'e'.  (2.7182818...).  The corresponding action
              procedure is e().


    EE        Used for entering exponential numbers.  For example, to get
              ``-2.3E-4'' you'd enter ``2 . 3 +/- EE 4 +/-''.  The corre-
              sponding action procedure is scientific().


    log       Calculates the log (base 10) of the number in the display.
              When inverted, it raises ``10.0'' to the number in the display.
              For example, entering ``3 INV log'' should result in ``1000''.
              The corresponding action procedure is logarithm().


    ln        Calculates the log (base e) of the number in the display.  When
              inverted, it raises ``e'' to the number in the display.  For
              example, entering ``e ln'' should result in ``1''.  The corre-
              sponding action procedure is naturalLog().

    y^x       Raises the number on the left to the power of the number on the
              right.  For example ``2 y^x 3 ='' results in ``8'', which is
              2^3.  For a further example, ``(1+2+3) y^x (1+2) ='' equals ``6
              y^x 3'' which equals ``216''.  The corresponding action pro-
              cedure is power().

    PI        The constant 'pi'.  (3.1415927....)  The corresponding action
              procedure is pi().

    x!        Computes the factorial of the number in the display.  The num-
              ber in the display must be an integer in the range 0-500,
              though, depending on your math library, it might overflow long
              before that.  The corresponding action procedure is fac-
              torial().

    (         Left parenthesis.  The corresponding action procedure for TI
              calculators is leftParen().

    )         Right parenthesis.  The corresponding action procedure for TI
              calculators is rightParen().

    /         Division.  The corresponding action procedure is divide().

    *         Multiplication.  The corresponding action procedure is multi-
              ply().

    -         Subtraction.  The corresponding action procedure is subtract().

    +         Addition.  The corresponding action procedure is add().

    =         Perform calculation.  The TI-specific action procedure is
              equal().

    STO       Copies the number in the display to the memory location.  The
              corresponding action procedure is store().

    RCL       Copies the number from the memory location to the display.  The
              corresponding action procedure is recall().

    SUM       Adds the number in the display to the number in the memory
              location.  The corresponding action procedure is sum().

    EXC       Swaps the number in the display with the number in the memory
              location.  The corresponding action procedure for the TI calcu-
              lator is exchange().

    +/-       Negate; change sign.  The corresponding action procedure is
              negate().

    .         Decimal point.  The action procedure is decimal().
    Calculator Key Usage (RPN mode):  The number keys, CHS (change sign), +,
    -, *, /, and ENTR keys all do exactly what you would expect them to do.
    Many of the remaining keys are the same as in TI mode.  The differences
    are detailed below.  The action procedure for the ENTR key is enter().

    <-        This is a backspace key that can be used if you make a mistake
              while entering a number.  It will erase digits from the dis-
              play.  (See BUGS).  Inverse backspace will clear the X regis-
              ter.  The corresponding action procedure is back().

    ON        Clears the display, the state, and the memory.  Pressing it
              with the third pointer button turns off the calculator, in that
              it exits the program.  To clear state, the action procedure is
              off; to quit, quit().

    INV       Inverts the meaning of the function keys.  This would be the  f
              key on an HP calculator, but xcalc does not display multiple
              legends on each key.  See the individual function keys for
              details.

    10^x      Raises ``10.0'' to the number in the top of the stack. When
              inverted, it calculates the log (base 10) of the number in the
              display.  The corresponding action procedure is tenpower().

    e^x       Raises ``e'' to the number in the top of the stack. When
              inverted, it calculates the log (base e) of the number in the
              display.  The action procedure is epower().

    STO       Copies the number in the top of the stack to a memory location.
              There are 10 memory locations.  The desired memory is specified
              by following this key with a digit key.

    RCL       Pushes the number from the specified memory location onto the
              stack.

    SUM       Adds the number on top of the stack to the number in the speci-
              fied memory location.

    x:y       Exchanges the numbers in the top two stack positions, the X and
              Y registers.  The corresponding action procedure is Xex-
              changeY().

    Rv        Rolls the stack downward.  When inverted, it rolls the stack
              upward.  The corresponding action procedure is roll().

    blank     These keys were used for programming functions on the HP-10C.
              Their functionality has not been duplicated in xcalc.

    Finally, there are two additional action procedures:  bell(), which rings
    the bell; and selection(), which performs a cut on the entire number in
    the calculator's ``liquid crystal'' display.

 Accelerators

    Accelerators are shortcuts for entering commands.  xcalc provides some
    sample keyboard accelerators; also users can customize accelerators.  The
    numeric keypad accelerators provided by xcalc should be intuitively
    correct.  The accelerators defined by xcalc on the main keyboard are
    given below:

    _________________________________________________________________________
                        Keyboard
    TI Key    HP Key    Accelerator    TI Function     HP Function
    _________________________________________________________________________
    SQRT      SQRT      r              squareRoot()    squareRoot()
    AC        ON        space          clear()         clear()
    AC        <-        Delete         clear()         back()
    AC        <-        Backspace      clear()         back()
    AC        <-        Control-H      clear()         back()
    AC                  Clear          clear()
    AC        ON        q              quit()          quit()
    AC        ON        Control-C      quit()          quit()

    INV       i         i              inverse()       inverse()
    sin       s         s              sine()          sine()
    cos       c         c              cosine()        cosine()
    tan       t         t              tangent()       tangent()
    DRG       DRG       d              degree()        degree()

    e                   e              e()
    ln        ln        l              naturalLog()    naturalLog()
    y^x       y^x       ^              power()         power()

    PI        PI        p              pi()            pi()
    x!        x!        !              factorial()     factorial()
    (                   (              leftParen()
    )                   )              rightParen()

    /         /         /              divide()        divide()
    *         *         *              multiply()      multiply()
    -         -         -              subtract()      subtract()
    +         +         +              add()           add()
    =                   =              equal()

    0..9      0..9      0..9           digit()         digit()
    +/-       CHS       n              negate()        negate()

              x:y       x                              XexchangeY()
              ENTR      Return                         enter()
              ENTR      Linefeed                       enter()


 Customization

    The application class name is XCalc.

    xcalc has an enormous application defaults file which specifies the posi-
    tion, label, and function of each key on the calculator.  It also gives
    translations to serve as keyboard accelerators.

    The foreground and background colors of each calculator key can be indi-
    vidually specified.  For the TI calculator, a classical color resource
    specification might be:

    XCalc.ti.Command.background:    gray50
    XCalc.ti.Command.foreground:    white

    For each of buttons 20, 25, 30, 35, and 40, specify:
    XCalc.ti.button20.background:   black
    XCalc.ti.button20.foreground:   white

    For each of buttons 22, 23, 24, 27, 28, 29, 32, 33, 34, 37, 38, and 39:
    XCalc.ti.button22.background:   white
    XCalc.ti.button22.foreground:   black

 Widget hierarchy

    In order to specify resources, it is useful to know the hierarchy of the
    widgets which compose xcalc.  In the notation below, indentation indi-
    cates hierarchical structure.  The widget class name is given first, fol-
    lowed by the widget instance name.

    XCalc xcalc
        Form  ti  or  rpn    (the name depends on the mode)
            Form  bevel
                    Form  screen
                        Label  M
                        Toggle  LCD
                        Label  INV
                        Label  DEG
                        Label  RAD
                        Label  GRAD
                        Label  P
            Command  button1
            Command  button2
            Command  button3
    and so on, ...
            Command  button38
            Command  button39
            Command  button40

 Application resources


    rpn (Class Rpn)       Specifies that the rpn mode should be used.  The
                          default is TI mode.

    stipple (Class Stipple)
                          Indicates that the background should be stippled.
                          The default is ``on'' for monochrome displays, and
                          ``off'' for color displays.

    cursor (Class Cursor) The name of the symbol used to represent the
                          pointer.  The default is ``hand2''.

 See also

    X(X), xrdb(X)

 Known Limitations

    HP mode:  A bug report claims that the sequence of keys 5, ENTER, <-
    should clear the display, but it does not.


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026