Post Reply 
HP-29C: 98 Program Steps, So, why not an even 100?
08-26-2019, 07:21 PM
Post: #1
HP-29C: 98 Program Steps, So, why not an even 100?
Hi all.

Since the 29C was released after the SR-56 and seeing that the SR-56 had a 100 step program memory, why was the 29C program memory 98 steps?

Thanks
Find all posts by this user
Quote this message in a reply
08-26-2019, 07:52 PM
Post: #2
RE: HP-29C: 98 Program Steps, So, why not an even 100?
The HP-29C used two memory chips similar to the single chip used by the HP 25/25c. It had 49 steps, so the two chips had 98.

To get 100 or 99 would have required much more than merely doubling the number of memory chips. Probably not worth the cost/time.
Find all posts by this user
Quote this message in a reply
08-26-2019, 08:27 PM (This post was last modified: 08-26-2019 08:28 PM by Thomas Okken.)
Post: #3
RE: HP-29C: 98 Program Steps, So, why not an even 100?
They probably also wanted to avoid having the 19C/29C cannibalize sales of the 67/97. In terms of storage capacity they were pretty close, with 44 registers for the 19C/29C and 58 registers for the 67/97 (counting 7 program lines as 1 register), so keeping the number of program lines in the former at "only" 98 positioned them as less powerful, lower-cost models, while still a big step up from the 25. N.B. I don't have any inside information on this, I'm just thinking out loud, but it would account for the weirdly large number of data registers in the 19C/29C, even more than in the 67/97.
Visit this user's website Find all posts by this user
Quote this message in a reply
08-26-2019, 09:26 PM
Post: #4
RE: HP-29C: 98 Program Steps, So, why not an even 100?
I see both your groups of points. Now it makes sense. Thanks.
Find all posts by this user
Quote this message in a reply
08-26-2019, 09:43 PM
Post: #5
RE: HP-29C: 98 Program Steps, So, why not an even 100?
As I don't have an HP-29C on hand (or 19C), the following ideas are mainly from memory (and old memories, I should say), so there may be some errors or missing details.

IIRC, 16 data registers were non-volatile, and 14 non-volatile registers were assigned to program space. Since each register amounts to 7 bytes (all numbers in these calculators take 56 bits), there are 14 x 7 = 98 program steps. Please note that each and every step occupies one byte.

Now, if the non-volatile registers are 32 at the hardware level, there are 16 registers for data, 14 for program steps, 1 for the X register (which was non-volatile on the 19C/29C) and possibly the remaining non-volatile register was used for keeping the calculator state (display mode, angular mode, position of the program counter, etc.).

It appears there were 16 volatile registers at the hardware level. There were 14 volatile data registers (indirectly addressed). The stack registers were internal to the ACT chip (CPU), but at least one external register was needed for LAST X. So at least 15 non-volatile registers were needed. Subroutine return addresses must be kept somewhere, so perhaps the last remaining register may be used for them.

To look for detailed information about these issues, I suggest looking at the invaluable work of Eric Smith including Nonpareil and related documents.

Andrés C. Rodríguez (Argentina)

Please disregard idiomatic mistakes.
My posts are mostly from old memories, not from current research.
Find all posts by this user
Quote this message in a reply
08-27-2019, 03:10 PM
Post: #6
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-26-2019 07:52 PM)Gene Wrote:  The HP-29C used two memory chips similar to the single chip used by the HP 25/25c. It had 49 steps, so the two chips had 98.

To get 100 or 99 would have required much more than merely doubling the number of memory chips. Probably not worth the cost/time.

So what you're saying is that the real question is why did the 25 have 49 steps instead of 50. Smile
Visit this user's website Find all posts by this user
Quote this message in a reply
08-27-2019, 04:57 PM
Post: #7
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-27-2019 03:10 PM)Dave Britten Wrote:  So what you're saying is that the real question is why did the 25 have 49 steps instead of 50. Smile

Because the RAM chips hold a whole number of 56-bit (7-byte) registers. The total number of program steps, each occupying one byte, is therefore necessarily going to be a multiple of 7.

There are only 10 types of people in this world. Those who understand binary and those who don't.
Find all posts by this user
Quote this message in a reply
08-27-2019, 09:54 PM
Post: #8
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-27-2019 04:57 PM)grsbanks Wrote:  Because the RAM chips hold a whole number of 56-bit (7-byte) registers. The total number of program steps, each occupying one byte, is therefore necessarily going to be a multiple of 7.

The HP-38E is a bit different as it has 50 steps. It uses nibbles 12 and 13 from register 8 as the first program step.

cheers

Tony
Find all posts by this user
Quote this message in a reply
08-27-2019, 10:35 PM
Post: #9
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-27-2019 09:54 PM)teenix Wrote:  
(08-27-2019 04:57 PM)grsbanks Wrote:  Because the RAM chips hold a whole number of 56-bit (7-byte) registers. The total number of program steps, each occupying one byte, is therefore necessarily going to be a multiple of 7.

The HP-38E is a bit different as it has 50 steps. It uses nibbles 12 and 13 from register 8 as the first program step.

cheers

Tony

Easily wins the prize for the most obscure HP Calculator fact of the week (perhaps month).

Is the 38E (and I assume not the 38C) the only Spice that does this?

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
08-27-2019, 11:18 PM
Post: #10
Counting steps is never equivalent
(08-26-2019 07:21 PM)Matt Agajanian Wrote:  ... the SR-56 had a 100 step program memory, why was the 29C program memory 98 steps?
...
The HP programming model was more efficient due to RPN and merging steps. e.g. STO 0 on an HP was one step vs. two steps for the TI model.
Find all posts by this user
Quote this message in a reply
08-28-2019, 12:55 AM
Post: #11
RE: HP-29C: 98 Program Steps, So, why not an even 100?
Yes. I completely agree. Plus, compared to the SR-52, the 67 was completely efficient and much more math & stat functionality. Even in light of the continuing battle, I’d take the HP-67 over the TI-58. On that note, I’d take the 41C or CV over the fully loaded TI-59.
Find all posts by this user
Quote this message in a reply
08-28-2019, 04:39 AM (This post was last modified: 08-28-2019 11:39 AM by teenix.)
Post: #12
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-27-2019 10:35 PM)rprosperi Wrote:  Easily wins the prize for the most obscure HP Calculator fact of the week (perhaps month).

Is the 38E (and I assume not the 38C) the only Spice that does this?

The HP-38C does the same thing, but register 30 is used for the first step instead. The other programmable Spice models all have multiples of 7 program steps.

cheers

Tony
Find all posts by this user
Quote this message in a reply
08-28-2019, 01:18 PM
Post: #13
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-28-2019 04:39 AM)teenix Wrote:  The HP-38C does the same thing, but register 30 is used for the first step instead. The other programmable Spice models all have multiples of 7 program steps.

Thanks Tony. I'm curious how these machines can use register storage to also (simultaneously?) store program steps, so I looked at the manual, which I've not seen in many years.

This confirms that the 38E/38C can actually use as many as 100 program steps (0-99, while step 00 is really just 'before' active steps begin, so effectively 99 steps of merged instructions).

Out of the box it defaults to 20 storage registers (R0-R9 and R.0-R.9) and 9 program steps, but as you say registers can be 'traded' for program steps at 7 steps each (7 bytes -> 56 bits) as needed, using up to 13 registers, so 13*7+9 => 100.

That said, I've 2 questions:

A. There seems to be no register 30, so is that some internal register numbering scheme, and

B. How can both a value and program steps be stored in the same register? The 38C with Continuous memory stores both program and register storage even when off.

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
08-28-2019, 02:18 PM
Post: #14
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-28-2019 01:18 PM)rprosperi Wrote:  That said, I've 2 questions:

A. There seems to be no register 30, so is that some internal register numbering scheme, and

B. How can both a value and program steps be stored in the same register? The 38C with Continuous memory stores both program and register storage even when off.

Sorry, my error, there are 99 program steps. Registers 16 - 29 (14 x 7) + 1

There are 32 registers available. Not all are available as housekeeping requires some RAM storage.

Register 30 holds data for the program pointer and the value E32D85 stored. If this value does not exist in RAM at switch on, Pr Error will appear on the display, memory is cleared and the value is written to RAM 30. If the value is there at switch on then the calculator retains memory.

The calculator stores a pointer where the program memory resides and as the program grows, less general storage memory is made available to the user.

cheers

Tony
Find all posts by this user
Quote this message in a reply
08-28-2019, 03:40 PM
Post: #15
RE: HP-29C: 98 Program Steps, So, why not an even 100?
Ah, got it, that explains several small points, thanks Tony!

In the memory allocation diagrams, they show the N0-N20 financial registers (for cash flows) implying separate storage area, but the text does clarify these are stored in the R0-R9 and R.0-R.9.

I often wonder where the values used for the cold start constant come from...

Thanks again!

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
08-28-2019, 07:27 PM (This post was last modified: 08-28-2019 07:28 PM by bshoring.)
Post: #16
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-28-2019 03:40 PM)rprosperi Wrote:  Ah, got it, that explains several small points, thanks Tony!

In the memory allocation diagrams, they show the N0-N20 financial registers (for cash flows) implying separate storage area, but the text does clarify these are stored in the R0-R9 and R.0-R.9.

I often wonder where the values used for the cold start constant come from...

Thanks again!

Bob in “N0-N20” are you referring to the 2 digit registers used for storing the number of cash flows?
HP-38 E/C & HP-12C have those.


Regards,
Bob
Find all posts by this user
Quote this message in a reply
08-28-2019, 09:37 PM
Post: #17
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-28-2019 07:27 PM)bshoring Wrote:  Bob in “N0-N20” are you referring to the 2 digit registers used for storing the number of cash flows?
HP-38 E/C & HP-12C have those.

Yes, exactly. In the 38C manual there are diagrams illustrating the various storage areas, and under "Financial Registers" it shows N, I , PV, PMT, FV and N0 - N20 (with the zero thru 20 shown as subscripts). But the text on p. 49 explains the CFj key stores the various entered cash flows into the normal R1-R9 and R.1-R.9 registers, so there really aren't dedicated CF registers as the diagrams imply.

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
08-31-2019, 02:18 AM
Post: #18
RE: HP-29C: 98 Program Steps, So, why not an even 100?
Hi Bob,

I presume you are referring to the paragraph near the middle of page 49 (of the HP-38 Owner's Handbook), that begins with "The Nj key is designed..."

My take is that this is not necessarily in conflict with the diagram at the beginning of the manual. I have my HP-38C right next to me. The CFo and CFj functions do store the value of the original or subsequent cash flows in R0 through R.9. That would be amounts such as -100,000, 5,000, etc. But the Nj key allows the user to enter a number between 1 and 99 (to indicate the number of times such cash flow occurs. When you enter a value using CFo or CFj, the value of Nj is set by default to 1. But if you want to show, for example monthly cash flows in the same amount then you have the option to set Nj to 12 or any number as long as you don't go higher than 99.

So that tells me there is a small memory space set aside to accommodate the 21 Nj registers of 2 digits. I believe 2 digits can be stored in one byte, so if there are 21, then it seems to me they set aside 3 full (7 byte) registers to hold the 21 values.

My two cents...


Regards,
Bob
Find all posts by this user
Quote this message in a reply
08-31-2019, 03:08 AM
Post: #19
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-31-2019 02:18 AM)bshoring Wrote:  Hi Bob,

I presume you are referring to the paragraph near the middle of page 49 (of the HP-38 Owner's Handbook), that begins with "The Nj key is designed..."

My take is that this is not necessarily in conflict with the diagram at the beginning of the manual. I have my HP-38C right next to me. The CFo and CFj functions do store the value of the original or subsequent cash flows in R0 through R.9. That would be amounts such as -100,000, 5,000, etc. But the Nj key allows the user to enter a number between 1 and 99 (to indicate the number of times such cash flow occurs. When you enter a value using CFo or CFj, the value of Nj is set by default to 1. But if you want to show, for example monthly cash flows in the same amount then you have the option to set Nj to 12 or any number as long as you don't go higher than 99.

So that tells me there is a small memory space set aside to accommodate the 21 Nj registers of 2 digits. I believe 2 digits can be stored in one byte, so if there are 21, then it seems to me they set aside 3 full (7 byte) registers to hold the 21 values.

My two cents...

I suspect you're exactly right Bob, nice catch! The diagram at the front of the manual labels these financial registers as N0 - N20, so a total of 21 registers which matches the allowed number of groups of cash flows (20) plus the initial investment, all labeled Nn.

So these cash flow 'counts' are stored in these dedicated 2-digit storage places, apparently part of the 32 available registers Tony described. Also, I've just now noticed that these N registers are shown smaller (narrower) than all the other registers in the graphic illustration.

I also checked the Quick Ref Guide, which also has a pictorial depiction of all the storage on the cover, but these cash flow counts are not shown or mentioned.

Thanks for your comments Bob, I always enjoy discussing and learning about these great old machines. Sadly, it appears you and I are about the only folks left that like and use a 38E/38C.

--Bob Prosperi
Find all posts by this user
Quote this message in a reply
08-31-2019, 04:37 AM
Post: #20
RE: HP-29C: 98 Program Steps, So, why not an even 100?
(08-31-2019 02:18 AM)bshoring Wrote:  So that tells me there is a small memory space set aside to accommodate the 21 Nj registers of 2 digits. I believe 2 digits can be stored in one byte, so if there are 21, then it seems to me they set aside 3 full (7 byte) registers to hold the 21 values.

My two cents...

It looks like the 38 has more than 32 RAM registers, but I'm not sure how many registers they actually have. I'll have to adjust the emulator memory size.

For the 38E The Nj numbers are stored from RAM address 32 onward. For the 38C these are stored starting at address 7.

cheers

Tony
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: