The Museum of HP Calculators

HP Forum Archive 16

 16C QuestionMessage #1 Posted by Katie Wasserman on 22 Oct 2006, 12:11 p.m. I'm trying to better understand the 16C and came across this in the manual: Quote: Unlike the other storage registers the Index register is always 68 bits, regardless of the word size..... Should this read 64 bits? If not, what are the extra 4 bits used for? Thanks, Katie Programming trivia question: Which are the only HP calculators (I think that there are only 2) that allow any line to be called as a subroutine? Edited: 22 Oct 2006, 12:12 p.m.

 Re: 16C QuestionMessage #2 Posted by Gerson W. Barbosa on 22 Oct 2006, 12:32 p.m.,in response to message #1 by Katie Wasserman Quote: Which are the only HP calculators (I think that there are only 2) that allow any line to be called as a subroutine? 33E/C; 29C? Edited: 22 Oct 2006, 12:40 p.m.

 Re: 16C QuestionMessage #3 Posted by Katie Wasserman on 22 Oct 2006, 7:37 p.m.,in response to message #2 by Gerson W. Barbosa I really had the 9815 and 33E/C in mind. The 29C has relative line number subroutines using the register 0, but the line number doesn't appear in the program (e.g., [GSB 27]). I should have stated this more carefully, because there are several other calculators that allow the use of the index register for indirect relative or absolute subroutines. Off the top of my head the: 19C, 67, 97, 11C, 15C, 34C (and more?) do this. -Katie

 Re: 16C QuestionMessage #4 Posted by Gerson W. Barbosa on 22 Oct 2006, 9:59 p.m.,in response to message #3 by Katie Wasserman I was sure about the 33C, as I was playing with one of mine lately. I don't have any of the 20-series, much less a 9815 :-) I was misled by the 29C faceplate: it has SST, GSB and GTO keys in the same position as in the 33C (I think I deserve a C- because of that :-)

 Re: 16C QuestionMessage #5 Posted by Etienne Victoria on 22 Oct 2006, 1:31 p.m.,in response to message #1 by Katie Wasserman Hello Katie, Answering your subroutine question, I think my Cesar Julius (9815) is one of those calcs that provide both step and label addressing. Kind regards! Etienne

 Re: 16C Question (Index Register)Message #6 Posted by Vieira, Luiz C. (Brazil) on 22 Oct 2006, 2:03 p.m.,in response to message #1 by Katie Wasserman Hi, Katie; this subject has already been discussed in this thread sometime ago (Feb. 2006). I am not sure if its contents will answer your question, but maybe, somehow, it will give you a glimpse. Cheers. Luiz (Brazil)

 Re: 16C Question (Index Register)Message #7 Posted by Katie Wasserman on 22 Oct 2006, 7:01 p.m.,in response to message #6 by Vieira, Luiz C. (Brazil) Hi Luiz, Thanks for pointing that out, I don't know how I missed that discussion. It seems like there was no general conclusion reached as to why it's 68 bits, just that it is 68 bits. David Davies guessed that the extra 4 bits might be uses for some type of nybble address calculation. But Eric Smith says that he doesn't see it being used for anything at all. What bothers me about it is that HP makes a point of it being 68 bits (mentioned at least twice in the manual) and they typically have a reason for everything they put in their manuals -- especially back in the good old days! -Katie

 Ditto!(N.T.)Message #8 Posted by Vieira, Luiz C. (Brazil) on 22 Oct 2006, 7:10 p.m.,in response to message #7 by Katie Wasserman

 Re: 16C Question (Index Register)Message #9 Posted by Paul Dale on 22 Oct 2006, 7:35 p.m.,in response to message #7 by Katie Wasserman I'd have thought it was a natural contination once the decision to make the I register length invariant with respect to word size had been made. The I register needs to be longer than the maximum word size so that ISZ/DSZ operate correctly and 68 bits is the next obvious size up from 64. Yes, a little contrived but plausible nonetheless. - Pauli

 Re: 16C Question (Index Register)Message #10 Posted by Eric Smith on 22 Oct 2006, 7:52 p.m.,in response to message #9 by Paul Dale I think ISZ and DSZ would have worked correctly even if it was 64 bits. If it was FFFFFFFF, and you did an ISZ, the result would be 00000000, and it would skip since the result was zero. That would make more sense to me than having hidden bits such that it can have a value that looks like 00000000 but the skip didn't occur. Anyhow, I still think the reason it is 68 bits is that it was easier to use three extra digits than two (avoids a masking step). And the reason it's documented as 68 bits is because it's 68 bits. No mystery to that part.

 Re: 16C Question (Index Register)Message #11 Posted by Paul Dale on 23 Oct 2006, 4:26 a.m.,in response to message #10 by Eric Smith Quote: I think ISZ and DSZ would have worked correctly even if it was 64 bits. If it was FFFFFFFF, and you did an ISZ, the result would be 00000000, and it would skip since the result was zero. That would make more sense to me than having hidden bits such that it can have a value that looks like 00000000 but the skip didn't occur. Doesn't exactly this happen in unsigned mode? - Pauli

 Re: 16C Question (Index Register)Message #12 Posted by Eric Smith on 22 Oct 2006, 7:53 p.m.,in response to message #7 by Katie Wasserman Quote: What bothers me about it is that HP makes a point of it being 68 bits (mentioned at least twice in the manual) and they typically have a reason for everything they put in their manuals -- especially back in the good old days! Presumably they said it was 68 bits in the manual because if they'd said it was some other size, the manual would be incorrect.

Go back to the main exhibit hall