[comp.sys.handhelds] Bugs in the HP48SX

jurjen@cwi.nl (Jurjen NE Bos) (08/27/90)

			Bugs in the HP48SX Version D

-------------------------------------------------------------------------------
This is a translation of an article, published by STORC. STORC (Stichting Ter
Ondersteuning van RPL Calculators) is the Dutch support-group for the HP48SX,
HP28S and HP28C. STORC publishes a (dutch) magazine, called "STORC
Nieuwsbrief", 10 times a year.

Our address:	STORC p.a. Christ van Willegen
		Dordognelaan 45
		5627 HB  Eindhoven
		The Netherlands
-------------------------------------------------------------------------------

		These are the known bugs in the HP48SX, Version D.
		Written by	Eric Toonen
				Djept-Zuid 6
				5502 RP  Veldhoven
				The Netherlands

(STORC intends to inform users about everything that is of interest about RPL
calculators.  We do not want to say this is a bad calculator.  In fact, it
isn't, otherwise we wouldn't even exist as a user group!)

[1]	(This one was documented by HP) (X,\<)Y) in the equationwriter has X
	and Y interchanged.

[2]	(This one was documented on the net) ARCHIVE crashes when done if the
	clock is in the display.

[3]	SST\|v recalls a directory rather than entering it. Side note: it is
	made into a new object.
	(Solution: Use NEXT to check whether or not the next is an unquoted
	directory name, and use SST if it is)

[4]	The evaluation of undefined local names does not function properly.
	For example, try the following program. The 1 and 2 can be any value.

		1 2
		\<< \-> x
		  \<<
		    \<< \-> y 'x'
		    \>>
		  \>>
		\>>
		EVAL EVAL
	
	This program leaves an 'External' after giving the error "Undefined
	Local Name"
	(This bug is in both HP28C's, the HP28S and HP48's A through D !)
	
[5]	When you enter a command line (without starting PRG entry mode), and
	you go to the PTYPE menu, select a plot-type, the command line is
	evaluated, but left in the display, and you can start a new command
	line underneath.

[6]	You cannot enter a GROB of size 0 x 0 unless it is the last thing on
	the command line. A syntax error occurs on the thing after the
	"GROB 0 0".
	(Solution: You can type #0 #0 BLANK)

[7]	The calculator can be made to recurse by defining a unit in terms of
	itself. (Press ON and C to exit the recursion.)

[8]	The parser does not check enough in an edited Directory object.
	With some holes resulting:

[8a]	Resulting from [8], the calculator can be made to recurse by editing a
	Directory object, defining a variable as itself. (Press ON and C to
	exit the recursion.)

[8b]	Resulting from [8], you can 'hide' a variable, by editing a Directory
	object, and name a variable the same. Then you have a directory
	containing variables with the same name, of which only the first can
	be evaluated, recalled or stored in. There are labels for every
	entry, but only the first one determines whether or not a directory
	overscore is displayed for (all) the labels.

[8c]	With [8b] in effect, if one of these (named-the-same) variables is a
	directory, you can see the first (even if that one isn't the
	directory!) in the plot-catalog.

[9]	When you VISIT a directory, it recalls and edits correctly, but the
	edited directory cannot be stored back.

[10]	When you strike any key, and quickly thereafter hit [ON], you will go
	to the HOME directory. All flags are left intact, you can even
	continue with your command line (if you had one).

[11]	While typing an equation in the equationwriter with implicit () off,
	and then turn the implicit () on, when typing a backspace, the
	equation changes as if implicit () were on all the time (losing the
	correct equation). You cannot restore your original equation, because
	if you reverse these actions, it inserts parentheses.
	(Bill Wickes says this is not a bug, but STORC considers this a bug,
	because you can not reverse this action.)

[12]	Some kermit error messages have carriage-return and line-feed
	characters at the end. This results in blocks on the screen. They
	occur (at least) after the messages "Transfer failed" and
	"Interrupted".

[13]	This is not really a bug, but it is weird. When you type CLUSR
	(preferably in a list or a program :-), it is displayed as CLVAR.
	The history of this fact is that CLUSR was the HP28 command, and
	CLVAR is the HP48SX command.

[14]	The keys STO and PURGE don't have correct string descriptors inside.
	This is because the LASTARG work-around is in the key descriptor,
	rather than in the command itself.
	This results in the following facts:

[14a]	When you type STO or PURGE with too few arguments, you get "Error:".
	When you type STO or PURGE with enough, but wrong type arguments
	(reals, for example,) you get "STO Error:" (Yeah, or "PURGE Error:")
	(Solution: (This disables the LASTARG work-around.) When Usr mode is
	on, explicitly re-assign PURGE and STO to the PURGE and STO keys. You
	can do this with the following command:
	{ STO 32 PURGE 54.2 } STOKEYS)

[14b]	\GbENTER (with vectored enter in effect) gets an empty string when
	you pressed the STO or PURGE keys.
	(Solution: (This disables the LASTARG work-around.) explicitly
	re-assign PURGE and STO to the PURGE and STO keys.  You can do this
	with the following command:
	{ STO 32 PURGE 54.2 } STOKEYS)

[15]	\|vMATCH and \|^MATCH don't check for equations or expressions. This
	results in the fact that you can get multiple equal signs in a single
	symbolic. (You can do this with EXSUB on the HP28S and HP28C.)
	Example:
		'A=A'
		{ 'A' '7=8' }
		\|vMATCH

	resulting in '7=8=7=8'.

	(Recalling this in the equation writer correctly results in an
	"Invalid Syntax" error.)

[16]	If the custom menu is your current menu, and you enter a directory of
	which the variable 'CST' does not contain a list (or a name of a
	variable that does), you will cause a system halt.
	(Solution: do not use bad values in 'CST' to disable the CST button.)

[17]	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

	returning 'RND(UNKNOWN,7/8)'


Since this note will get to Bill Wickes, I am sure, let me end with this
question:

What does RCL do with lists??? I saw the code, doing *A LOT* but I thought it
better to ask you before decoding all these routines.

That's all (for now...)

----------------------------------------------------------------------
Eric Toonen
Djept-Zuid 6
5502 RP  Veldhoven
The Netherlands
----------------------------------------------------------------------
--
|                 | "Never imagine yourself not to be otherwise than what |
| Jurjen N.E. Bos | it might appear to others that what you were or might |
|                 | have been was not otherwise than what you had been    |
|  jurjen@cwi.nl  | would have appeared to them to be otherwise."         |

edp@jareth.enet.dec.com (Eric Postpischil (Always mount a scratch monkey.)) (08/28/90)

> What does RCL do with lists??? I saw the code, doing *A LOT* but I thought it
> better to ask you before decoding all these routines.

HP (probably Bill Wickes?) has told us this already:  It follows the directory
path specified in the list and then recalls the last object.


				-- edp

pedz@bigben.mpd.tandem.com (Perry Smith) (08/31/90)

> What does RCL do with lists??? I saw the code, doing *A LOT* but I thought it
> better to ask you before decoding all these routines.

Eric> HP (probably Bill Wickes?) has told us this already: It follows
Eric> the directory path specified in the list and then recalls the
Eric> last object.

I knew that but my complaint is that it actually changes the current
directory which is not what I want.  I'd like to think of { DIRLIST
VAR } as an path to VAR much like it is in Unix.

pedz

edp@jareth.enet.dec.com (Eric Postpischil (Always mount a scratch monkey.)) (08/31/90)

In article <PEDZ.90Aug30120814@bigben.mpd.tandem.com>,
pedz@bigben.mpd.tandem.com (Perry Smith) writes:

[About the fact that RCL follows a directory path in a list and then recalls the
last object.]

>I knew that but my complaint is that it actually changes the current
>directory which is not what I want.  I'd like to think of { DIRLIST
>VAR } as an path to VAR much like it is in Unix.

Huh?  No, it doesn't.  Perhaps you are thinking of evaluating a list?  That
changes the current directory path.  But performing a RCL on a list follows the
directory path and recalls the last object, but leaves the current directory
unchanged.


				-- edp

lennartb@lne.kth.se (Lennart Boerjeson @ KTH/LNE, The Royal Inst. of Tech.) (08/31/90)

In article <PEDZ.90Aug30120814@bigben.mpd.tandem.com>, pedz@bigben.mpd.tandem.com (Perry Smith) writes:
>> What does RCL do with lists??? I saw the code, doing *A LOT* but I thought it
>> better to ask you before decoding all these routines.
>
>Eric> HP (probably Bill Wickes?) has told us this already: It follows
>Eric> the directory path specified in the list and then recalls the
>Eric> last object.
>
>I knew that but my complaint is that it actually changes the current
>directory which is not what I want.  I'd like to think of { DIRLIST
>VAR } as an path to VAR much like it is in Unix.
>
>pedz

???? It dosn't change the current directory on my 48. How did you manage
to do that? It works exactly as a path. Too bad it doesn't work with STO.

!++
! Lennart Boerjeson, System Manager
! School of Electrical Engineering
! Royal Institute of Technology
! S-100 44 Stockholm, Sweden
! tel: int+46-8-7907814
! Internet: lennartb@lne.kth.se
!--

pedz@bigben.mpd.tandem.com (Perry Smith) (08/31/90)

>>>>> On 31 Aug 90 14:51:07 GMT, lennartb@lne.kth.se (Lennart Boerjeson @ KTH/LNE, The Royal Inst. of Tech.) said:

>
>I knew that but my complaint is that it actually changes the current
>directory which is not what I want.  I'd like to think of { DIRLIST
>VAR } as an path to VAR much like it is in Unix.
>
>pedz

Lennart> ???? It dosn't change the current directory on my 48. How did
Lennart> you manage to do that? It works exactly as a path. Too bad it
Lennart> doesn't work with STO.

Cool.  If you do RCL it doesn't change directories; if you do EVAL it
does.  I guess I didn't know that.

pedz