8

Wikipedia's page on numeral systems claims:

14 Tetradecimal

Programming for the HP 9100A/B calculator and image processing applications; pound and stone

Exactly how did the HP 9100A/B use base 14? How was this internally represented (e.g. 4 bits per digit)?

6
  • 2
    It is not clear what exactly the Wikipedia is referring to. From this online article: 'Each register in the HP 9100A could hold one floating-point value (a 10-digit, signed mantissa and a 2-digit, signed exponent). Registers “0” through “9” and “a” through “d” could also hold 14 program steps each, for a total capacity of 196 program steps.'
    – njuffa
    Sep 13 at 5:42
  • 1
    hpmuseum.org/prog/hp9100pr.htm is the programming manual but it doesn't say how the numbers are broken down. Quite a lot of info in the HP museum. hpmuseum.org Also tells you about the 2 guard digits which I never knew existed.
    – cup
    Sep 13 at 8:59
  • 2
    It seems like the idea is that since there were 14 program registers, each containing up to 14 steps, then an individual step of the program could be addressed by one character 0-d for the register and another 0-d for the step within that register. Those two characters together could be viewed as a two-digit base-14 number. It's not clear that the designers ever encouraged people to actually think about it that way. Sep 13 at 14:15
  • 1
    Also, since each step of the program basically corresponded to one keystroke, you needed two keystrokes to specify a two-digit program address. So this "base 14" number was represented internally just as two characters. Sep 13 at 14:17
  • 1
    Not sure what that should say. AFAIR the 9100 used BCD for all numerical representation - much like many/most machines of the time.
    – Raffzahn
    Sep 13 at 18:20
7

Note: I have no personal experience with this calculator. Also, a lot of this has appeared already in comments.

References: the main HP 9100A/B page and the programming page at hpmuseum.org.

The 9100A/B worked with floating-point registers that had 10 visible decimal digits, two guard digits, and a two-digit exponent. This was represented internally by 14 BCD nibbles. (And, I guess, two additional sign bits for the mantissa and exponent.)

The 9100A had 16 storage registers (not counting the RPN stack) which could be used for either code or data. To maximize the amount of data space, of course the program counter would advance through a single register first before moving on to the next, so the low "digit" of the PC was effectively base 14. For some reason that isn't clear to me (maybe a limitation of the magnetic storage cards?) you could only use the first 14 of the registers for code, so the high digit of the PC was also base 14.

That was the only use of base 14. Presumably the PC was stored as two nibbles internally with some binary-coded-tetradecimal logic to increment it. Branch targets were encoded in two nibbles which couldn't have the value E or F.

The 9100B doubled the storage register count to two pages of 16, but otherwise the programming model was the same.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.