HP48 FAQ Section 3: Questions about ROM versions
- SX:
The HP48 S is the same as the HP48 SX except that the HP48 S does
not have the two expansion slots of the HP48 SX. This means that
the HP48 S cannot be expanded and can only access 32K of memory,
versus 288K for the HP48 SX (two 128K RAM cards). (Actually, there
are third-party RAM cards that contain 256K or 512K on a single
card -- this memory is accessed via a bank-switching mechanism.)
- GX:
The HP48 G is the same as the GX except for two differences. The GX
has the 2 expansion ports, and also has 128K RAM built in, whereas
the G only has 32K.
If you plan on heavily using your calculator, you will probably find
that 32K is not enough memory. In fact, some of the best HP48
Programs will not even fit in this memory!
The HP48 G/GX calculators are, basically, slightly faster (by 40%) versions
of the HP48 S and HP48 SX calculators, with more features, such as
3D-plotting and a new forms-based interface. Much of the HP Solve
Equation Library card is now built-in. See Appendix B-1 for a detailed
list of GX features.
Note, however, that the HP48 G/GX is different from the HP48 S/SX in
a number of significant areas:
- The HP48 GX comes with 128KB RAM, as opposed to 32KB RAM in the
HP48 SX. The HP48 G still has 32KB RAM, however. The HP48
G/GX also has twice the ROM (512K), compared the HP48 S/SX
(256K).
- Much of the HP48 G/GX internals have changed, compared with the
HP48 S/SX. Unfortunately, this means that many programs
written in assembly language or System RPL won't work on the
HP48 G/GX. This is especially true of any program that tried
to access the display memory directly.
- The HP48 G/GX CPU runs at 4 MHz, instead of the 2 MHz used with
the HP48 S/SX CPUs. However, due to various overheads (memory
bank switching, etc.), the speed increase between the S/SX and
G/GX is less than 2 times. G/GX throughput is approximately 40%
faster.
- Slot 2 of the HP48 GX can access up to 32 ports (ports 2-33) by
bank switching. Each port is 128KB, for a maximum total of
4 MB in slot 2.
The HP48 G+ was announced 30 March 1998. It is essentially a HP48 G with
more memory - it has 128K of memory instead of 32K. All G+ machines have
revision R ROMs.
There is no change to other aspects of the calculator model offerings.
Specifically, it looks like HP has added to the HP48 family without
withdrawing anything. The G, G+, and GX will all continue to be sold.
The press release for the HP48 G+ is at:
http://www.hp.com/pressrel/mar98/30mar98.htm
- GX:
Type the command "VERSION". Note that this command is not part of
any key or menu, and so you must spell it out.
Type #30794h SYSEVAL. It returns a string, "HPHP48-x", where x is
your ROM revision. This works for both SX and GX.
- SX:
- Turn the calculator on (press ON and then release).
- Press ON again, and hold it down.
- While holding down the ON key, press and hold down the
"D" key (the fourth white key in the top row).
- While holding down the "D" key, release the ON key.
- Release the "D" key. The display should be blank, with
the exception of three vertical lines (one down the
centre, and one down each of the right and left sides).
- Press the backspace key (it says DROP and CLR over it).
A meaningless string of digits should appear in the
top line of the display (mine says
"705D9:1B8DA178E5A111B6" -- yours may be different).
- Press and hold down the EVAL key. It should say
something like the following, where the ? is an
uppercase letter indicating the ROM version:
Version HP48-?
Copyright HP 1989
- Release the EVAL key. Hold down ON and hit "C" (the
third white key in the top row. This is a general
reset operation that returns the calculator to normal
from the diagnostic stuff (which is where ON-D puts
you).
- Rom: A
- DEFINE rounds numbers in user-defined functions if STD is not
the current display mode.
- KGET on a zero length file from another machine will cause
the calculator memory to be cleared.
- NXEQ from the Graphics Environment with flag -3 set (SYM off
in Modes) can overwrite the current equation with a number.
- Displaying the clock in 24-hour format causes the one-digits
for minutes to be incorrect in the alarm catalog.
- Roms: A-C
- INV returns an incorrect result if used on an 8x8 or larger
matrix. To get around this problem, divide the identity
matrix with the matrix to invert.
- Roms: A-D
- Entering a symbolic complex number in polar form like
(A,<B) (where < is really the funny little angle
symbol), gives an expression in A and B that is wrong (the
A and B are interchanged so A is the angle and B is
the magnitude).
- If the clock is displayed during an ARCHIVE via RS-232,
there is a chance (not 100%) that calculator memory will
be cleared, after the transfer. The work-around is to
turn the clock display off before doing the transfer. Should
your memory be cleared, you will have to restore the
contents of memory from the archive.
- TRNC and RND allow for an array in level 2 and a symbolic
in level 1 of the stack. This allows you to put an array
in a symbolic. Example: [ 2 3 ] '7/8' RND returns
'RND(UNKNOWN,7/8'
- Roms: A-E
- There's a bug in the EquationWriter that is "fixed" in the
Rev J ROM. See Appendix C-1 for details.
- Roms: E, J
- BESTFIT: Occurs when a two dimensional array is stored in
\GSDAT (SigmaDAT). Pressing the BESTFIT softkey
multiple times will leave a lot of useless reals on the stack.
- Rom: K
- First HP48 G/GX released; includes various bugs affecting
ports. Therefore, the version K ROM was only used in
HP48 G units.
- Roms: K, L, M, P
- XROOT Function fails when used with list processing unless
X=Y. It does not corrupt memory.
FIX: Preceed any XROOT which will use list processing with
a SWAP
- Rom: L
- Second HP48 G/GX released; fixed the port bugs. This ROM
version is that present in the 2,000 HP48 GXs sold at the
ASEE conference for $90 apiece.
- Roms: L, M
- HP48 GX may lose all of user memory when: clock is displayed,
a library object is be stored in user memory, and a RAM card
is lugged in to port one and merged with User Memory. If
all four of these conditions are present and the calculator
is turned on when the clock is being updated by the system,
a loss of all User Memory may occur.
FIX: Just type the following in on your calculator:
<< RCLF -> f << -40 CF OFF f STOF >> >> 91.3 ASN
Then turn on USER mode
- EquationWriter/Character Picker Bug: If the size of the
equation is greater than the regular size of the screen,
calling the Character Picker in Equation Writer will
garble the screen.
- If you store an object into a port > 1 while there is a card
installed in slot 1, the end-of-obj-sequence marker (00000)
is written to port 1 instead to the destination port. This
will cause the 'Invalid Card Data' warning to pop up each
power on after a while and, in addition, the memory of port 1
gets currupted (if it's writeable). A temporary fix is to
remove the card from slot 1 when changing the contents of the
card in slot 2. However a better fix is to get the STOFIX
library (available on GD#10 or at HPCVBBS, ~1K in
size).
- Tail Bug: The TAIL command returns an error on single length
strings. This was fixed to return an empty string in later
Roms. Examples:
"X" TAIL --> Error: Invalid Dimension (Rom M)
"X" TAIL --> "" (Rom R)
- Rom: M
- Evaluating a tagged object which contains an operator (+, -,
*, /, etc) as the second or subsequent character will leave
an External and System Binary on the stack, as well as the
original object.
- Roms: L, M, P
- SigmaDAT: Put a NON-MATRIX in \GSDAT (SigmaDAT), run
STAT graphical apps, edit \GSDAT. Causes a crash.
- XRECV will fail or cause memory lost if the amount of free
RAM left is not about twice the size of the expected file.
FIX: See FXRECV on GD 9. Note that FXRECV is not necessary
for Rom R, and in fact will not even run properly on Rom R.
- RREF does not transform the matrix into Row Reduced Echelon
Form correctly if the first column of the matrix consists
entirely of zeros. It may also return incorrect answers in
some matrices.
A work-around for this bug is to delete any leading all-zero
column(s) from the matrix; this may be done using the Matrix Writer,
via its -COL menu key, or via commands: 1 COL- DROP (to drop the
first column). Since row-reduction operations never change any
all-zero column, you already know in advance that the given column(s)
must be all-zero in the final result.
- Roms: L, M, P, R
- portnum: { dir ... var } RCL/EVAL fails if portnum >= 2
- Rotation rate to angular frequency conversion bug. See
Appendix C-2 for a complete write-up.
- Roms: M, P, R
- Repeated executions of FFT or IFFT can cause a memory loss.
The FFT and IFFT warmstart problem is caused by a CPU
return stack overflow during interrupt handling. The
problem can only occur when the argument to FFT or IFFT
is an MxN matrix with both M > 1 and N > 1. The vector
argument case is immune to this problem.
FIX: To compute the FFT of a matrix without risking warmstart,
expand the matrix into its row vectors using ->ROW,
compute the FFT of each row vector, collect the results
into a matrix using ROW->, expand the matrix into its
column vectors using ->COL, compute the FFT of each
column vector, and finally collect the results into a matrix
using COL->. Except for less precision, this is the
same result as would be obtained by applying FFT on the
original matrix. Use the same procedure with FFT replaced
by IFFT to compute the IFFT of a matrix.
Here are program examples implementing the "Matrix FFT"
and "Matrix IFFT":
MFFT << ->ROW FFTLP ROW-> ->COL FFTLP COL-> >>
MIFFT << ->ROW IFFTLP ROW-> ->COL IFFTLP COL-> >>
FFTLP << -> n << 1 n START n ROLL FFT NEXT n >> >>
IFFTLP << -> n << 1 n START n ROLL IFFT NEXT n >> >>
- Equation Writer/Equation Library interaction bug: If you pick
an equation from the EQ library, enter solver for that
equation, enter an algebraic on the stack like 'X^2', and
press the down arrow key to view algebraic in EquationWriter,
the name of the equation will appear in the EquationWriter
along with the unassociated algebraic.
- Roms: M, P
- BESTFIT: Occurs when a two dimensional array is stored in
\GSDAT (SigmaDAT). Pressing the BESTFIT softkey
multiple times quickly can cause a warmstart, or SigmaDAT
to be erased. This occurs sometimes just by pressing BESTFIT
repeatedly, regardless of \GSDAT content. This bug can
also be triggered by pressing the BESTFIT softkey quickly
after pressing any other key. Simply pressing MODL then
BESTKEY quickly will trigger the bug.
- Rom: P
- PROOT: If you put a matrix of coefficients on the stack
and press PROOT repeatedly, you will get a warmstart.
- Roms: A-R
- MatrixWriter Bug: This shows up when deactivating and
reactivating any of the two direction movement fields. If
you do this, the active matrix field won't move as it's
supposed to. For example: Launch the matrix writer (check
that your GOFORWARD field is activated). Type [1]
[ENTER]. The active matrix field moves forward as it
should. Deactivate the GOFORWARD field and activate it again.
Now enter [2] [ENTER] [3]
[ENTER]. The digits should show up on the same row,
but they don't, because after you deactivated and reactivated
the GOFORWARD field, the active matrix field stops moving
according to the movement fields.
- DTAG Bug: When the
DTAG
command is executed without any
arguments on the stack, the error message "XLIB 0 0 Error"
is given, which is non-standard.
- Roms: K-R
- Equation Library Solver and Multiple Equation Solver Bug:
Pressing MSOLVR or MUSER after setting user flag 63
can cause Memory Clear. Example: CLEAR, 63 CF, EQNLIB,
down-arrow, ENTER, down-arrow, [SOLV], NXT, 63 SF,
right-shift MUSER, DROP --> Memory Clear. This bug is
also found in the HP Solve Equation Library Card (HP 82211B,
but not 82211A) for the SX.
The revision J ROM has a faster equation writer, as well as some bug
fixes. Scrolling of graphics is also faster.
One "problem" is that the revision J ROM changed some undocumented
ROM entry points, which broke those programs that used them. If you
have a Rev J ROM, you will not be able to run some old programs.
These versions either were never released to the public, or were skipped over.
I have received confirmation of the existence of a HP48 S with ROM revision F.
So it appears revision F was in fact released to the public, although very
few must have made before revision J came out.
When the G/GX first came out, HP had a trade in program. This is no longer
in operation. The only option remaining is to try to sell your S/SX privately.
As far as I know, not any more. They had a program a in early '94, but
it is over now. Contact the following for more info:
Hewlett-Packard Corporation
Calculator Support
1000 NE Circle Blvd
Corvallis, OR 97330
Phone: (970)-392-1001
- Revision R is the latest ROM version of the G/GX series.
- Revision J is the last ROM version of the S/SX series.
Here's the top reasons to buy a S/SX instead of a G/GX (Thanks to all who
contributed):
- May be slightly cheaper, having only 32K RAM.
- It isn't THAT outdated.
- So what if it's a little slower?
- You didn't need all those useless equations, graphics
capabilities, and math and science functions anyways!
- If you break it, you're out of less money!
- You like seeing how much you can fit into 32K RAM.
- You like slow file transfers, using Kermit instead of X-Modem.
- You want to be able to use all those lists of SYSEVALs for the SX.
- You like having only 3 ports available max. 33 is ridiculous!
- Since it doesn't have a built in equations library it is less
likely to be banned on tests.
- Only wimps need GUI's, dialog boxes, and choose lists.
Part of the HP Calculator Archive - http://www.hpcalc.org/