Where should I post new HP35s bugs


Well, this is probably not new but I was not aware of it before...

In indirect addressing mode (I) or (J), if the program stores 0 in the register 55 or higher and then when it tries to recall it, it shows Invalid(I) or Invalid(J).








If I replace the 55 with a lower number then it's fine or if I replace 0 with any other number then it's also okay.

Does this bring any bell?

Thank you.


Posting as did is just fine.

Paul has been keeping a comprehensive list here: http://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/articles.cgi?read=735


Is this a bug? Try storing a non-zero number there? Does that work?

What is in register 54 on your device?

After storing 0 in register 55, does doing the same with register 54 produce the error?

The 35S deallocates the highest numbered registers if they contain zero & I'm guessing this is what is happening here.

- Pauli


Is there a workaround?


Is there a workaround?

Store a non-zero value in a register numbered higher than 55. Storing a zero in a register only deallocates registers if no higher-numbered register contains a non-zero value.


This confirms what I was experimenting with last night. I took the base code and I experimented with several variations between changing the '55' value and the '0' value. I changed both or either of these numbers in various combinations: reg>55, val<>0; reg<55, val<0, reg>55, val>0, etc. And yes, I did notice that when a non-zero quantity for 'val' was involved, I was allowed access to the higher registers.


I do not see what the problem is in the first place. From p14-24 of the manual:

The calculator allocates memory for variable 0 to the last non-zero variable. It is important to store 0 in variables after using them in order to release the memory.

The training module on using the HP-35s Indirect Registers, it states it more clearly:
If the highest used register is cleared or has a zero stored into it, the allocation will shrink down to the next highest non-zero indirect register.

If you need to work with 0 values in indirect registers, then allocate a non-0 value to your highest required register + 1 (just store 0 in it at the end of your program to release the memory).


Thank you Bart for the clarification, it makes sense now.

I appreciate the inputs received from everybody.


SO, the questions become:

1--how do you find the highest register available at the time so that you can store a non-zero value in the n+1th register that you set at the max register?

2--if the highest register you want to use is not accessible (already has been de-allocated), how do you reset the availability of all registers so that you can set your max+1th register by placing a non-zero value there?


You can store a non-zero value any time in any register. This will create the necessary allocation for the register and all lower numbered registers. You normally should know how many registers your program will need. Just allocate one more as the "curtain" by storing a 1 into it. De-allocating can be done with the clear command.


Would it break anything if RCL from an unallocated register returned zero instead of invalid j?


I doubt it.

- Pauli


1--how do you find the highest register available at the time so that you can store a non-zero value in the n+1th register that you set at the max register?
Let's say my program has just started using the nth indirect register, which may contain a 0 at some time - and I wish to be able to recall that 0.


nth register allocated, now allocate n+1th register:
  • Line numbers omitted
  • assumes I was used to reference indirect registers
  • increments and decrements I so that eventual reference doesn't change
  • Rv is roll down and restores the X-register present before incrementing I
  • uses one stack register
  • you can manually clear all indirects after the program finishes

2--if the highest register you want to use is not accessible (already has been de-allocated), how do you reset the availability of all registers so that you can set your max+1th register by placing a non-zero value there?
Seeing that as in the text above, the register that is one higher than which you want to use is allocated with a non-0 value, it should not be a problem. Remember that when an indirect register is allocated, all lower registers are automatically allocated too - this means memory management as I stated here.

edited to correct spelling.

Edited: 10 Mar 2012, 2:44 p.m.


Normally you should know in advance how many registers to allocate and can do it once for the whole program. For a polynomial of degree N you will need (N+1) registers for the coefficients. In this case you even know that the highest coefficient can't be zero so it's just a matter of how you store the coefficients: just assign the highest coefficient to the highest indirect register and you are done.


Then I was playing with SOLVE and found this very odd behavior, maybe someone can explain it...

If I try to SOLVE this program everything works as expected:
Example 1 (no problem here):

D001 LBL D

D002 10

D003 STO N

D004 DSE N

D005 GTO D006

D006 RCL X

D007 COS

D008 RTN

And I assign this to FN=D and finally SOLVE X, then no problem. However if instead of jumping forward (line D005) I jump backward the calculator displays "SOLVING" for ever until I hit R/S or C:
Example 2 (problem when try to SOLVE):

D001 LBL D

D002 10

D003 STO N

D004 DSE N

D005 GTO D004

D006 RCL X

D007 COS

D008 RTN

Running this simple program outside SOLVE returns the expected result.

Both tests on the HP41 with the Advantage module work fine.

Am I doing something wrong, a bug, or a "feature"?

Thanks in advance.


Seems like a bug to me. Once someone confirms this, I'll add it to the list.

- Pauli


Hi Pauli,

I've seen this person complaining about the same issue:


Thank you!



That's good enough for me. Added as a bug.

I really do wonder why people still bother enough with this lemon of a calculator to keep uncovering its flaws.

- Pauli


Haha! that's a good question... I was trying to port some programs from my old 41.... but I gave up now and getting the promising WP34S, I think it's going to get here this Saturday! BTW, even when I haven't experienced it yet, I can tell that you have done a tremendous job, congratulations to you and all the other contributors.




why people still bother

Easy: Because it is the best looking calculator in portrait version that HP ever made and it does everything I need in daily use, none of the bugs ever bothers me while doing basic programming and checking my high school kid`s homework.


It has a "sexy" design indeed, too bad it has no flash memory and any PC connectivity or flash card slot to be able to load new FW versions and for long term memory for programs and data.


It can't have I/O because it has a specific target marchet which bans that.

For I/O, go to the 50G...I know, I know, too bad there isn't a small I/O machine. Perhaps someday they will make a small I/O machine. Maybe the 30b platform will go this direction.


Bill, there is a version of the 30b with I/O. It's just not running the original firmware. :-)


That's what I suspected. But is that I/O a "stock" feature of the WP34s or is it another project?


I/O is an integral part of the design. You can write programs on your PC (with an editor), compile it, test it on the emulator, and then send it to the calculator through the same cable used for flashing the firmware. Programs written on the device can be sent back to the emulator and even disassembled to a text file for archiving, sharing, and for further development.


Holy cow, I hadn't noticed this! If this is an easy and painless interface, then that is TERRIFIC!

One of


The holy cow must have eaten your third sentence ;-) Yes, the WP 34S contains everything we always wanted to have and the HW of the 30b allows. d:-)


WP 34S is the intersection of two sets: { whishes } and { possibilities }. :-)


WP 34S is the intersection of two sets: { whishes } and { possibilities }. :-)

'union' of both would still be better than 'intersection'. ;-)


Once we figure out the impossibilities we'll give it a try :-)

- Pauli


Sorry, Franz, but { possibilities } was an unsurmountable constraint. { whishes } includes many aspects not contained in { possibilities } such as more memory to handle tagged objects like in the RPL machines or a better display for more readable fonts and a more elaborate user interface. I have the feeling we went pretty far given the contents of { possibilities } but at some point we just had to give up. :-(


Sorry for being a pain... I observed the same bug integrating a "program". Therefore no jump backward possible in a program if you expect to integrate it... I'll put it away now, I promise!!!



This is not related to the bugs. I am new here and this was the first article related to the HP35s.
I have a question:
Is there any way to attach caracters to a LBL or variable that are visible (to indentify them later easier)?




There is no direct way to attach characters to a label or variable with the 35s. You can use equations to provide prompts or reminders of the program, for example.

A001 LBL A
A002 SF 10
A003 QUADRATIC (entered as an equation, i.e., press EQN first then type it in)
A004 PSE
A005 CF 10

The above assumes you have a program you would like to label "QUADRATIC". When viewing the program listing, it will be there to tell you what the program is. When run, the program will pause, display QUADRATIC briefly then continue. Similar messages can be used to tell you what variables are going into what registers.

Sorry if you are well aware of the above.

Edited: 13 Mar 2012, 1:54 p.m.

Possibly Related Threads...
Thread Author Replies Views Last Post
  HP35s Program Four Slings Lift Calculation Jean-Marc Biram (Australia) 2 815 12-16-2013, 07:21 PM
Last Post: Jean-Marc Biram (Australia)
  HP35s Calculator Max Rope Tension Program Jean-Marc Biram (Australia) 10 1,584 12-12-2013, 12:03 AM
Last Post: Jean-Marc Biram (Australia)
  Digging for bugs Stefan Dröge (Germany) 2 532 11-13-2013, 04:39 PM
Last Post: Stefan Dröge (Germany)
  (deleted post) deleted 2 513 11-03-2013, 06:24 AM
Last Post: deleted
  [HP-Prime] Simple Game (Bugs) CompSystems 1 485 11-01-2013, 10:18 AM
Last Post: Han
  HP-35s Cos[x] and Tan[x] bugs resolved? Thomas Windisch 2 559 10-31-2013, 01:12 PM
Last Post: Dieter
  RPN bugs both present in Prime Calc and emulator Eelco Rouw 9 1,045 10-16-2013, 12:22 PM
Last Post: Eelco Rouw
  [HP-Prime] AND, OR BUGs? CompSystems 0 322 10-04-2013, 04:03 PM
Last Post: CompSystems
  HP 50g: question about bugs Miguel Toro 2 509 09-26-2013, 01:27 PM
Last Post: Miguel Toro
  trig scales on the Post Versalog slide rule Al 12 1,373 09-15-2013, 06:01 AM
Last Post: John I.

Forum Jump: