[comp.sys.misc] HP-28C

conte@uicsrd.UUCP (02/07/87)

This may be interesting to some newsgroups I don't know about, so please
cross post it (with discretion).  (*Is* there a comp.sys.ppc or something?)

FIRST LOOK: THE NEW HP-28C

    The HP-28C is HP's newest calculator.  It is contained in a clamshell
case with the alpha keys in the lid.  The display is 4 lines by 23 characters,
dot-matrix, with keyboard adjustable contrast.  The lefthand lid can be
folded back behind the display/calculator half to hold it in the hand, or
it can be left spread out on a desk.  It measures 7 1/2" X 6 1/4" X 1/2" when
spread out.  The top row on the display/calculator half has a set of six
menu keys and most functions are accessed my selecting a menu and hitting
one of the keys.  Each menu can have up to four `menu lines', and NEXT
and [//] PREV (where [//] is the burgundy shift key) take you through
them.  I got my HP-29C from Educalc of Laguana Niguel, CA.  It took 8 days to
get to Illinois.  By the way, Elek-Tek of Chicago, IL, sells it for a little
less (but I would have had to pay tax....).  See the February Spectrum for
the adds.

    Functionally, the 28C is a superset of older HP calculators.  It has a
dynamic stack, as opposed to 4 levels like most other HP's.  Everything is
put in a `command line' below the stack, and ENTER puts the command line onto
the stack, or, if the command line contained a function, it executes the
function.  Symbolic equations may be written out using FORTRAN expression
syntax, entered on the stack, and operated on.  The operations include
symbolic differentiation, (limited) symbolic integration, numeric integration,
Taylor series (about x=0), and numeric and (limited) symbolic solving for an
unknown.  (After controlled experimentation I have determined that these
features are addictive.)  The symbolic integration is limited because it
only attempts to integrate polynomials, and does a Taylor series and then
integrates anything else (i.e., don't throw away your CRC math tables).
The symbolic solving is limited because sometimes it can't isolate a variable.
There is an expression editor, but it is non-obvious how to use it.  Sort
of a poor-man's MACSYMA.  It has such interesting operations as, `Merge
Right Factors M->', `Distribute to the left <-D', etc.  These strange
operations appear in the ALGEBRA menu and beep if they are non-applicable
to the current cursor position in the current expression.  (Usually I get
a concert of beeps and after trying to figure out what I am supposed to
do (i.e., intelligently), I resort to pushing every key in the menu.)
The beep can be turned off via a flag setting (thank God).

    The menus are:

    ARRAY
    The 28C can handle vectors and matrices, including inversion and
multiplication.  The nicest thing is that you can see the whole matrix
at once.  It can do dot and cross product of vectors also.  The elements
of the matrix/vector can be real or complex, too.

    BINARY
    The 28C supports HEX/OCT/BIN arithmetic/conversions with a setable
wordsize (up to 64 bits).

    CMPLX
    Complex numbers are represented as two numbers in parentheses, seperated
by a comma.  Functions include taking the conjugate, doing rectangular/polar
conversions, and arithmetic.

    STRING
    There is a string data type (object), delimitted by double quotes.  Things
on the stack can be made into strings and vice-versa, ascii from/to conversion
is provided, as is a POS (search) and lenght function.  The alpha keyboard
provides upper *and* lower case, a nice touch.

    LIST
    A list is a set of other objects, seperated by spaces.  A specified
number of stack levels can be made into a list, or a list can be exploded
into the stack.  Lists are used by some functions as parameters.

    REAL
    Real numbers have a 12-digit mantissa and a 3-digit (-499 to 499)
exponent.  They again are shown in the display in FORTRAN (or `E')
notation (e.g., 1.23*10^4 is shown as 1.23E4).  Oh yes, the 28C has
a built-in random number generator with a user-settable seed.

    STACK
    There are all types of stack manipulations provided, I won't
enumerate them.

    STORE
    Storage registers are no longer numbered locations in memory as in other
calculators.  In the 28C, they are named variables.  However, the old HP
ST+, ST-, ST*, ST/, etc. are provided.  The named variables are nice, the
memory is limiting (see below).

    ALGEBRA
    The 28C works on expressions, doing things like expanding `(A+B)^2'.
I had considerable trouble getting it to expand `(A+B)^5', though, again
because of memory problems.  Other features include the `FORM editor' that
I described earlier, and ways to pick out, or substitute in subexpressions
in an expression being edited.

    PRINT
    The printer for the 28C is `connected' via an infrared LED, no cables.
Since I don't have the printer, I can't say anything about it.

    Program features are included in three menus: CTRL, BRANCH, and TEST.
A program is an object on the stack (!) delimited by `<<' and '>>'.  These
program objects can be stored in named registers and then executed using
the USER menu.  Program control functions include single step, halt, abort,
etc.  Branch functions are the biggest surprise, they include IF/THEN,
IF/THEN/ELSE, WHILE, FOR/NEXT, REPEAT/UNTIL, block-oriented Pascal/Algol
like functions.  The expression for the IF, WHILE, etc., is in RPN, however.
These are generated using tests, like flag tests, AND, OR, NOT, ==, etc.
There can be arguments to functions (which are also local variables),
recursion, etc.  Pretty powerful.

    CATALOG
    A catalog of functions is provided with a nice touch: you can hit a
key and see the arguments the function expects to see on the stack.  Not
exactly a self-documenting feature because it doesn't tell you what the
function does, but it is (really) useful.

    UNITS
    The 28C has 120 built-in units defined (from are (=100 m^2) to
yr (year, = 31536000 s).)  It allows unit conversions between any
of these units, has provisions for creating ones own units, and the
units can be scanned in a fashion similar to the CATALOG display.

    MODE
    Scientific, engineering, and fixed-point notation are provided.
As a nice touch, HP (finally) has provided a floating-point format
much like TI calculators.  Also, one can set degrees/radians mode.
Interestingly, gradians are not supported on the 28C, not that I
ever used the mode on my 41C.  There are three types of ways to
recover from errors: COMMAND, UNDO, and LAST.  COMMAND recalls the
previous contents of the command line before the last ENTER (or a
function that executes and ENTER automatically).  UNDO restores the
entire state of the stack, and LAST puts the elements the last command
took off the stack back onto it.  All of these can be disabled, since
they use memory.

    TRIG, LOGS
    Trig and log functions are provided in a menu that is pretty straight
forward.  I won't elaborate here.

    SOLV
    The Solver is a menu and a routine for getting the solution of an
equation.  The ISOL (isolate) function tries to solve expressions
symbolically (but doesn't always succeed, as per the discussion above).
The solver, when active, displays the variable names in the menu line.
You can either enter a value onto the stack, press the key, and then press
EXPR=, to get the value of the expression at that point.  Or, you can
press [//] and the variable and the 28C does a numerical approximation
of the zero.  There is also a way to find min/max of equations using the
Solver.  All very nice.

    STAT
    Statistics include MEAN, SDEV, VAR (variance), CORR (correlation
coefficient), COV (covariance), LR (linear regression), and PREDV
(linear predictive value).  A good feature is the sigma- function.
It is basically an undo from the sigmaDAT register, and it returns
the last value (pair) to the stack.  This is a multiple undo.  This
beats the old method of having to remember the last value entered.

    USER
    Any variables (named objects in 28C parlance) appear as keys in
the USER menu.  If the variables contain a program, the program is
executed.  If they contain an algebraic expression, it is put onto
the stack.  This I suppose is the 28C's answer to the 41C's user mode.
Named objects are listed in the menu by order of creation, newest
first.  An ORDER command is provided to let you reorder them however
you want (you supply a list of the names in the order you wish them
to be put in).

    PLOT
    This is cool, the 28C can plot functions and, after it is done,
a crosshair appears and can be put on a point and the point digitized.
The plot can be zoomed (well, you have to re-plot), and portions of
the plot can be selected and plotted using the digitizing function to
define two corners of a rectangle.  Statistical data can be scatter
plotted, and program functions are provided to turn on pixels.

    The Cursor Menu
    When the <^> (or something that looks close to that) is pressed,
the cursor menu is selected.  This allows editing of an expression as
it goes into the command line.  There is no menu bar, the functions are
printed in white above the menu keys (INS, DEL, and four arrow keys),
and the whole display is used to display the stack (allowing one to
see four levels).  EDIT can be used to edit the object in the first
level of the stack using the menu keys.  When the editing is complete,
ENTER puts the new copy back onto the stack.  VISIT works like EDIT,
but it edits a named object's contents, and when ENTER is pressed the
new expression goes back into storage.

    Some notes/opinions:

    All in all, the 28C has only one major and serious flaw: its memory
capacity.  It has only 2K bytes to work with, and that gets real limiting
real fast.  Sometimes integration or ISOL will fail with `Insufficient
Memory', even though the stack was clear before the start, and there are
few or no variables in user memory.  This is (very needless to say)
frustraiting.  The manual handwaves it away with the line, "keep in mind
that [the 28C] is a *calculator* for interactive problem solving.  Its
power is in its built-in operations, not in its capacity to store large
databases or program libraries."  That's a crock and a shame.  It means
that all the very nice programming constructs can't really be used for
anything serious because the resulting program encroaches on the memory
the calculator needs.  In this day and age of 4Mbit memory chips, and
lesser volume but cheap and available memory chips, I don't see why HP
blundered here.  My guess is that the 28C is implemented on a monolithic
custom CMOS VLSI chip and they didn't have any more room to put in more
RAM.  If this is the case, the 28C is probably never going to come out
with more RAM either.

    Another quam I have is the 28C is totally closed.  There are no
visible ways to expand it, save the infrared printer port, no ways to
save programs to any permanent medium.  If there had been, the limited
memory wouldn't have been so bad.  Now I doubt I will ever program the
thing except for curiousity.  This is another blunder on HP's part.  They
should have made the infrared connector an HP-IL connector instead and
then all the IL peripherals could have been used with the 28C (or at
least the cassette drive!).

    I guess my recommendation is if you don't expect to do much programming,
but you want to take advantage of some of the 28C's capabilities, get it.
It's a smoothly engineered calculator with a well thought out operating
system.  If you own a 41C{,X,V}, though, don't sell it.  The 28C doesn't
replace the 41.

...no connections with HP, Educalc, Elek-Tek, etc.


Tom Conte      Center for Supercomputing Research & Development
               University of Illinois
uucp:	 {ihnp4,seismo,pur-ee,convex}!uiucdcs!uicsrd!conte
arpanet: conte%uicsrd@a.cs.uiuc.edu  or  conte@huey.udel.edu
csnet:	 conte%uicsrd@uiuc.csnet
bitnet:	 conte@uicsrd.csrd.uiuc.edu   usnail: 208 W. Oregon, Urbana, IL 61801