Post Reply 
Online HP-80 and HP-70 emulations
01-02-2024, 06:56 PM
Post: #1
Online HP-80 and HP-70 emulations
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.
Find all posts by this user
Quote this message in a reply
01-02-2024, 07:17 PM
Post: #2
RE: Online HP-80 and HP-70 emulations
(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.
Find all posts by this user
Quote this message in a reply
01-02-2024, 08:13 PM (This post was last modified: 01-02-2024 08:21 PM by teenix.)
Post: #3
RE: Online HP-80 and HP-70 emulations
(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
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)