The Museum of HP Calculators

HP Forum Archive 13

[ Return to Index | Top of Index ]

Strange HP48GX Undo behavior
Message #1 Posted by GE (France) on 21 Nov 2003, 5:51 p.m.

Hello wizards,

Sorry the 48GX is not a vintage machine, but the behavior when mixing the 'CON' (create a constant matrix) and the UNDO capability is quite surprising. ( [Enter] is a press of the ENTER key) :

1. Type : {2 3} [Enter] 5 [Enter] CON [Enter] (UNDO) you get back both parameters of CON.

2. Type : {2 3} [Enter] 5 CON [Enter] (UNDO) you get back only {2 3}.

Can anyone shed some light on this ?

      
Re: Strange HP48GX Undo behavior
Message #2 Posted by James M. Prange on 21 Nov 2003, 8:27 p.m.,
in response to message #1 by GE (France)

I hope so. The first thing that the ENTER operation (either explicit or implicit) does, assuming that last stack saves are enabled, is save a copy of the current stack for use by the LeftShift STACK (last stack) operation in the 48SX/S, or UNDO as it's labeled in the other RPL calculators.

Note that by default, last stack saves, last command lines saves, and last arguments saves are enabled, but they can be disabled by menu keys in the LeftShift MODES MISC menu, and last argument saves can also be disabled by setting flag -55. For the rest of this post, I'll assume that they're all enabled.

Maybe a bit on explicit/implicit ENTER is in order. Pressing the ENTER key is an explicit ENTER. When in "immediate entry" mode (both the ALG and PRG indicators are absent from the status area), many keys, such as +, SIN, or the CON menu key, do an ENTER operation before executing the key or menu object; these are "implicit ENTERs".

Quote:
1. Type : {2 3} [Enter] 5 [Enter] CON [Enter] (UNDO) you get back both parameters of CON.
In this first example, when the last ENTER was done, the 5 was already on the stack in level 1, so it was in the saved last stack. CON was in the command line, so the CON command line can be recovered by the RightShift CMD (last command lines) operation. For that matter, up to four last command lines are saved, so the {2 3} and 5 command lines can also be recovered. You can use RightShift ARG (the LASTARG command) to enter both arguments to CON, { 2 3 } and 5, into the stack.
Quote:
2. Type : {2 3} [Enter] 5 CON [Enter] (UNDO) you get back only {2 3}.
In this example, the 5 wasn't on the the stack yet when the last ENTER was done; it was still in the command line followed by CON, so UNDO wouldn't put it back on the stack. If you want to retrieve it, you can use RightShift CMD to retrieve the command line 5 CON, or you can use RightShift ARG (the LASTARG command) to enter both arguments to CON into the stack.

In both of these cases, I take it that CON was typed into the command line with the calculator in "program entry" mode (the PRG but not the ALG indicator in the status area), so it didn't cause any implicit ENTER; the last keypress of ENTER put it on the stack and caused it to be executed.

If you had done:

LeftShift {} 2 SPC 3 CursorRight 5 ENTER MTH MATR MAKE CON

Then the { 2 3 } and 5 would be already on the stack before pressing the CON menu key (which would cause an implicit ENTER), so would be recovered by UNDO. {2 3}5 would be available as a last command line, and { 2 3 } and 5 would be entered into the stack by LASTARG. But since CON was never on the command line, it can't be retrieved by the last command lines operation.

If you had done:

LeftShift {} 2 SPC 3 CursorRight 5 MTH MATR MAKE CON
Then { 2 3 } and 5 wouldn't be on the stack yet when the implicit ENTER caused by pressing the CON menu key was started, so they wouldn't be recoverable by UNDO, but the {2 3}5 command line could be retrieved by the last command lines operation, and the LASTARG command would enter { 2 3 } and 5 into the stack.

So your 48GX is behaving exactly as intended, and in my opinion, as long as you understand it, it's a good design.

Regards,
James

Edited: 21 Nov 2003, 8:38 p.m.


[ Return to Index | Top of Index ]

Go back to the main exhibit hall