The following warnings occurred:
Warning [2] Undefined array key 241100 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 241103 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 241107 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 241121 - Line: 275 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 275 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $thread - Line: 295 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 295 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Trying to access array offset on value of type null - Line: 295 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 295 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $fid - Line: 295 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 295 errorHandler->error_callback
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 241107 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined array key 241121 - Line: 331 - File: inc/plugins/threaded_mode.php PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php 331 errorHandler->error_callback
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 332 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 304 ThreadedMode::buildtree
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $theme - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Trying to access array offset on value of type null - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $theme - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Trying to access array offset on value of type null - Line: 3 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 3 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Undefined variable $lang - Line: 5 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 5 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks
Warning [2] Attempt to read property "messages_in_thread" on null - Line: 5 - File: inc/plugins/threaded_mode.php(305) : eval()'d code PHP 8.1.2-1ubuntu2.14 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/inc/plugins/threaded_mode.php(305) : eval()'d code 5 errorHandler->error_callback
/inc/plugins/threaded_mode.php 305 eval
/inc/plugins/threaded_mode.php 23 ThreadedMode::showthread_threaded
/inc/class_plugins.php 142 threaded_mode_showthread_threaded
/showthread.php 918 pluginSystem->run_hooks





HP-80 Financial Calculator (1973)



#2

Probably most people who've used HP Financial Calculators such as the HP-12C are familiar with the top row interactive financial functions that include (in varying orders):
n - number of periods,
i - interest rate of rate of return,
PMT - periodic payment amount,
PV - Present Value,
FV - Future Value.

In nearly every financial calculator there is a dedicated memory register for each of these functions. The only exception is the HP-80, the very first pocket financial calculator that came out in 1973. On the HP-80 the only memory locations are the 4-level stack, the single storage register, plus a couple of internal registers (A&B). As a result, entering a value and then pressing one of the financial functions places that value on the stack.

For example, to find the monthly interest rate on a 36 month loan, you would enter 36 and press n, enter the monthly payment amount and press PMT (negative on later machines), enter the loan amount and press PV. As such, the number of payments is stored in the Z register, payment amount in Y register and the loan (PV) in X. Pressing i gives you the monthly interest rate.

What is fascinating to me is how the HP-80 keeps track of what values are on the stack. For example how would it know that the X register contains the PV and not a FV? I can only guess that when you press one of the financial keys, some sort of flag is set to identify what that value is. Pressing "i" could trigger different functions, depending on what previous values were input.

Has anyone else figured out how this works?

Considering its limited ROM and RAM, which was very expensive at the time, the HP-80 is an amazing little machine with a ton of different functions packed into it. Despite its limitations it yields very accurate results, as long as you enter the values in the correct order.


#3

IIRC, the HP-80 requires the financial variables to be entered in specific orders depending on what kind of calculation you're doing. It does use flags to track which things have been entered, but if you enter them in the wrong order you'll get the wrong results.

The HP-70 and HP-22 added dedicated TVM registers, but still used the "TVM4" algorithms, thus didn't have the full flexibility of the later models. See the TVM4 notes at the bottom of the HP-70 entry in Craig Finseth's HPDATAbase.

The fully generalized "TVM5" algorithms first appeared in the HP-92 desktop, and were used in all financial models starting with the 30 series.


#4

I think that dedicated TVM registers started with the HP-81. While some people think of the 81 as a printing version of the 80, it did much more than the 80 and had a lot quite a lot of memory registers for a calculator made in 1973.

#5

Thanks Eric and Katie for your insights. What I find interesting about all of the early Financial calculators is that they all are quite different. Would love to get my hands on an HP-81 to see it in person. The odd thing is that the HP-70 was supposed to be the low end financial of the "Classics" and it did have fewer functions than the HP-80, but in several respects the HP-70 was superior. For one it does have the dedicated TVM registers so you can enter values in any order and you can play "what if" scenarios without reentering all the data as with the 80. Also the 70 has two data registers apart from the financial ones and they are not modified by some of the functions as happens with the 80. Also the 70 has storage addition on the M register and can display a full 9 decimal digits in fix mode. Nice calculator, though it only lasted a year. I think the HP-80 lasted until the HP-37E and HP-38E came in.


Possibly Related Threads…
Thread Author Replies Views Last Post
  HP-80 History, Design and Interesting Facts BShoring 1 1,304 11-30-2013, 08:50 AM
Last Post: Xavier A. (Brazil)
  10bii Financial Calculator is on launch sale - 0.99$ only John 4 1,959 11-10-2013, 08:02 PM
Last Post: BShoring
  HP-80 Teardown with pictures Max Stone 10 3,734 10-24-2013, 09:10 PM
Last Post: Walter B
  HP-80 CHS Exponent Curiosity Max Stone 4 1,828 10-22-2013, 02:39 PM
Last Post: Max Stone
  HP 80 emulator Olivier De Smet 4 1,807 09-02-2013, 09:39 AM
Last Post: Vincent Weber
  HP 35 ... 80 Olivier De Smet 6 2,427 08-29-2013, 07:25 AM
Last Post: Olivier De Smet
  Series 80 EPROM cards Paul Berger (Canada) 0 1,130 12-08-2012, 07:50 PM
Last Post: Paul Berger (Canada)
  Simple financial problem with a HP-12c Platinum Lapin 3 1,545 11-11-2012, 09:33 AM
Last Post: Lapin
  Series 80 UCSD Pascal Juergen Keller 3 1,369 10-23-2012, 02:16 PM
Last Post: Olivier De Smet
  HP financial calculator prototypes Keith Midson 4 1,648 10-06-2012, 03:13 PM
Last Post: Harald

Forum Jump: