HP Forums
Online HP-80 and HP-70 emulations - Printable Version

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html)
+--- Forum: General Forum (/forum-4.html)
+--- Thread: Online HP-80 and HP-70 emulations (/thread-21095.html)



Online HP-80 and HP-70 emulations - van2z - 01-02-2024 06:56 PM

I finished emulation of the hp-80 and hp-70:
https://veniamin-ilmer.github.io/hp80/
https://veniamin-ilmer.github.io/hp70/

A few notes of interest:

* HP-80 was the first calculator to call Keys -> Address instruction more than once for the same key stroke. It does this because it had to jump to the same location, but in a different rom.
* The HP-80 swapped the key codes between the top row (n,i,pmt,pv,fv) and the bottom (x,1,2,3). This was not swapped on the HP-70.
* For some reason, when you first power up the HP-70, it has "12" stored inside of K.


RE: Online HP-80 and HP-70 emulations - Thomas Klemm - 01-02-2024 07:17 PM

(01-02-2024 06:56 PM)van2z Wrote:  https://veniamin-ilmer.github.io/hp70/

Just in time for: Musings on the HP-70

(01-02-2024 06:56 PM)van2z Wrote:  * For some reason, when you first power up the HP-70, it has "12" stored inside of K.

Later business-models even had 12× and 12÷ as separate keys.
It is useful to translate between yearly and monthly iterest rates.

Thanks a lot for your contributions.


RE: Online HP-80 and HP-70 emulations - teenix - 01-02-2024 08:13 PM

(01-02-2024 06:56 PM)van2z Wrote:  * For some reason, when you first power up the HP-70, it has "12" stored inside of K.

Here is the code that does this when the calculator starts up.

Code:

set the storage memory address pointer to 1
$03D5 0CE           0 -> c[w]              C=00000000000000 
$03D6 30C           12 -> p                P=12 
$03D7 1E2           c + 1 -> c[p]          C=01000000000000
$03D8 270           c -> data address

put 12 into the C register
$03D9 1E2           c + 1 -> c[p]          C=02000000000000
$03DA 24E           shift right c[w]       C=00200000000000 
$03DB 1E2           c + 1 -> c[p]          C=01200000000000
$03DC 1EA           c + 1 -> c[x]          C=01200000000001 

transfer C register to storage memory[1]
$03DD 2F0           c -> data              C=01200000000001

cheers

Tony