HP Classic Calculator Emulator +

EDUC 8 Emulator

                  
Replacement CPU boards
Email for enquiries

cpuBds HP-55 $Aus85.00  Current Version V06
  • Internal memory storage for up to 100 programs
  • Can fine tune timer
HP-65 $Aus85.00  Current Version V17
  • Supports original features of the magnetic card reader
  • Programmable option to bypass the card write protection
  • Has internal memory storage for up to 810 program cards
  • Store and recall calculator state
HP-67 $Aus85.00  Current Version V40 (Updated 25 Aug 24)
  • Can operate in Continuous Memory mode
  • Turbo fast code execution mode
  • Supports original features of the magnetic card reader
  • Has internal memory storage for up to 810 program cards
  • Programmable option to bypass the card write protection
  • Supports up to 100 user defined messages
  • Software version display
  • Supports a memory dump to the CCE33 Emulator
  • Can transfer RAW card data to the PC to see what the card reader actually read
wspcb Woodstock $Aus125.00  Current Version V11 - Last Update 01 08 24
  • Supported models HP-21, HP-22, HP-25C, HP-27, HP-29C
  • Continuous Memory storage for all models - requires no battery power
  • Storage: HP-25C, 207 program files. HP29C, 360 files, either program or data
  • Continuous memory has reset
  • Internal USB battery charger with charge indicator, can run calculator as well
  • LiPo battery powered
  • Selectable low battery reference
  • Constant current LED driver
  • Text editor for creating names for stored programs
  • Turbo Mode, fast code execution
  • Decimal/Binary/Hex/Octal convertor
  • Least fraction calculator
  • Option to display program text instead of original key numbers
  • Real time clock with alarm, +/- 5 PPM
  • Separate count up and count down timers with alarm
  • Selectable DDMMYY, MMDDYY, YYMMDD or Text date format
  • Clock display in numeric or text format - 5 Past 3, 29 to 11, Noon, etc
  • Menu activated right switch (in case user's model does not have one)
  • Selectable key de-bounce
  • Beeper - selectable Off, Loud or Soft
  • Display setting – Bright or Dim
  • Sleep Function
  • 29C printer interface via Bluetooth link to PC - NRM or TRC modes, font is same as 97
  • Power on model display
  • Temperature display
  • Version display
  • 3 extra programmable functions for the HP-25C
    - Beep
    - GSB 49
    - RTN
  • 6 extra programmable functions for the HP-29C
    - Random Number
    - Constants
    - Beep
    - Data Swap
    - File access - load programs or load/save data files (similar to 67/97)
    - Notes Display
  • 2 inbuilt games, Tetris and 21 with music and sound effects
hp97cpu HP-97 $Aus175.00  Current Version V19
  • Can operate in Continuous Memory mode
  • Supports original features of the magnetic card reader
  • Has internal memory storage for up to 810 program cards
  • Programmable option to bypass the card write protection
  • Supports original printer
  • Menu driven adjustable print speed and intensity
  • HP-82240 IR printer interface
  • HP-97S mode via isolated serial interface
  • Real time battery backed alarm clock, +/- 5ppm
  • Beeper
  • Turbo Mode, fast code execution
  • Supports up to 100 user defined messages
  • Supports a memory dump to the CCE33 Emulator
  • Can transfer RAW card data to the PC to see what the card reader actually read
  • Some soldering required - see operating manual
spcins Spice $Aus135.00  Current Version V13
  • Supports HP-31E, 32E, 33C, 34C, 37E and 38C models
  • C models operate in Continuous Memory mode
  • Turbo fast code execution mode
  • Runs on small LiPo battery
  • Inbuilt battery charger with charge indicator
  • New membrane keypad
  • Has internal memory storage for 300 programs each for the HP-33C, 34C and 38C models
  • Real time battery backed alarm clock, +/-5ppm
  • Two clock display modes, digital and text
  • Text editor for creating names for stored program
  • Separate count up and count down timers with alarm
  • Selectable display brightness
  • Selectable DDMMYY, MMDDYY or YYMMDD date format
  • Menu activated right switch
  • Selectable US or Euro display mode
  • Beeper - selectable Off, Loud or Soft, usable in programs
  • Memory reset, simulated battery removal
  • Sleep function
  • Temperature display
  • Software version display
  • Printer interface to Windows program, prints in standard HP printer font
  • HEX DEC BIN OCT conversions (24 bit)
  • Random number generator - 34C, usable in programs
cpu19 Coming Soon!
HP-19C
  Current Version V01
  • Supports HP-10
  • Turbo fast code execution mode
  • Supports original printer
  • Adjustable print speed and intensity
  • Printer disable
  • Selectable display brightness
  • Can store data memory to a file
  • Has internal memory storage for up to 400 program or data files
  • Storage for 10 constants, store/recall via menu or Windows app
  • Text editor for creating names for stored program or data files
  • New Program steps:
    • Random Number
    • Constant storage and recall
    • Memory bank swap
    • File access - program or data, programs can have 1000's of steps
    • Beep
  • Beeper - selectable Off, Loud or Soft
  • Memory reset, simulated battery removal
  • Software version display
  • Supports original charger if original batteries used
  • Programmable low battery indicator voltage
  • Some soldering required - see operating manual
All models
Notes:
  • All prices are plus tracked airmail postage cost
  • The HP-10 uses micro code written by the author using the emulator
  • These CPU boards will not fix problems with the display, keyboard (Spice excluded) or card reader components. However, if the card reader has failed, you can still save and recall programs using internal memory
  • Continuous Memory CPU board is still compatable with earlier versions


Contact Teenix for details

CalCom PC Program

This is the program that communicates with the CPU boards via Bluetooth or the USB port.
It also contains the help and other operational files.

Download - Updated 01 Nov 24
Can be unzipped into its own directory or into the Emulator files directory if installed.

3550
The HP-35 has reached its 50th anniversary since being manufactured so to commemerate this event, this A1 size HP-35 poster project was created.

Click on the poster image to download in PDF format.
All construction, circuit and help details are in the CalCom download above.
Updated 070621
Poster Project Features:
  •  A1 sized poster
  • The buttons work by touching the front glass of the poster panel
  • Selectable HP-35 (LN bug), 35, 45, 55, 65, 67, 70 and 80 models.
  • 15 digit LED display
  • Decimal points are centred like real Classic display
  • Up to 7 programs can be stored for use with the HP55, 65 and 67 models
  • 12/24 hour clock, timing derived from 50/60Hz mains supply
  • Display dimming
  • CalCom connectivity via a wired FTDI RS232 connection for PC data transfers and reprogramming.
35pcb45pcb55pcb
These zip files contain circuit diagrams, component overlays, and Gerber details that a PCB manufacturer can use to create the boards. Note: See Readme in each zip file.

2 Layer Circuit Board design for HP-35 HP-45 and HP-55. (16 pin Clock Driver)

Download HP35       Download HP45       Download HP55

hp65pcbhp67pcb

4 Layer Circuit Board design for HP-65.
2 Layer Circuit Board design for HP-67.

senPCB
Sense Circuit Board replacement design for HP-65 and HP-67



Multi Calculator
This project gives you the opportunity to experience 31 different HP calculator models from the late 60's and 70's era.

PC Emulator Features
Hardware Emulator Features

While pottering around the web some time ago I came across the HP-45 scientific calculator which was made by Hewlett Packard back in the 1970’s. Seeing it again fired up feelings of nostalgia and took me on a journey back to my school days when I used to own one of these so many years ago. Back in the day the HP-45 was one of the first in a new breed of pocket scientific calculators which are referred to as the Classic Series.

Calculators are pretty much taken for granted these days, cheap and plentiful, tossed back into the drawer after use and even for the technically inquisitive, hardly worth the look inside when all you see is a small black blob on a circuit board. There was a time when the calculator was a prized item and although not as fast as today’s variants, were much faster and more accurate than the well used slide rule and amazingly some mainframe computers as well. For the curious, even to this day, there are still interesting goodies inside to fire up a technical imagination. A few of the carry cases were nicely crafted items too. Some were made from real leather and others made from metal with a luxurious leatherette cover with a soft lining inside. There were also lockable accessory items to chain those expensive items to the desktop.

Back in those school days we had to use paper, pencils, grey sandy erasers that loved to munch holes through your work notes, and awful logarithm books to help solve multiply and divide problems. Modern technology came to our maths class one day when we were presented with a pile of odd looking cardboard computer cards and given a simple problem to try and solve. Armed with a high tech paper-clip we poked through the pre-punched numbers imprinted on these cards causing a small snow storm of paper dots that scattered around the classroom. Well, not that bad, but the cards were soon gathered up by the teacher and mysteriously sent off to a university mainframe computer and I’m guessing now that its error routines went into overdrive as it tried to digest them. A few weeks passed and the results came back printed on a pile of folded perforated paper sheets, but sadly our paper clips were probably bent in the wrong shape and none of us were ready to join the computer age just yet.

It was about that time when calculators began to creep into the classroom and like most I decided that I would like to own one too. Some I had seen at the time were big with a tiny eight digit display, had the basic four functions and maybe a square root key. I decided the one I wanted was the new HP-45 scientific calculator but it had a "reduced" price tag of around $240.00 and as my family was one of the usual battlers, the challenge was up to me to figure out how to get one. No small feat for a wee school lad in those days.


HP-45

Working before and after school and on weekends eventually paid off and I found myself in the store excitedly handing over my hard earned savings to a salesman who presented me with a large white box in return. Bouncing around in an old “Red Rattler” train during the trip home, I couldn’t wait any longer and I still remember the strangely sweet but strong plastic odour that rose up as I opened the box. At the flick of a switch my brand new calculator came to life with the now familiar [0.00] displayed in bright red LEDs. Sifting through the box, I found a spiral bound owner manual, in colour, plus a smaller quick reference guide which in itself would rival some of today’s manuals, (if any are supplied), a battery charger and a soft real leather carry case. I couldn’t wait to try it out at school. Geeks in the 70's, who would have thought....

Package

An example of the HP-65 delivery package compared to todays models.

This series of calculators have held their value over the years with many still working today or have been restored back to working condition and kept as collector’s items.

Internal Design

Having an early interest in electronics, after awhile I couldn’t resist and had to open up the calculator and see what was hiding inside. I didn’t understand much about the internals back then but hopefully here is a better albeit brief insight.

Internal

The architecture of the Classic Series was similar although the HP-65 had the unique magnetic card reader. The circuitry was optimized for floating point operations and because silicon real estate was expensive back then, the data bus paths were serial not parallel as you might expect. This meant the circuitry and PCB design could be much simpler and therefore cheaper. Sections of data such as the exponent of a number could be intercepted in the serial bit stream and used individually for the computations. The 3 busses were the SYNC line, the Is line used for instructions, and the WS line used for gating the serial stream.

The chips used were MOS/LSI types and included multiple ROMs, an Arithmetic and Register Circuit (ARC), a Control and Timing Circuit (CTC), a two phase clock generator, LED anode cathode drivers and some models had a RAM storage chip. The internal resgisters were made up of 56 bits each. Low power consumption requirements soon meant that CMOS chips would be used, however at the time the extra gate required more silicon and the additional manufacturing processes added up to a higher cost. Negative Logic was used where 0V represented Logic 1 and 6V represented Logic 0. The Classic Series consumed about 500mW and the switching power supply transformed the 3.75V NiCad battery output to +6V, +8V and -12V for circuit operation. The batteries would generally last for a day depending on usage, and once flat, they would require an overnight recharge.

Internally, numerical data is made up of 14 digits in binary coded decimal (BCD) format giving a word size of 56 bits. Ten of the digits were allocated for the mantissa, one for the mantissa sign, two for the exponent and one for the exponent sign.

Registers

The ARC executes instructions from the Is line and sends out display data to the LED anode driver and carry bit information to the CTC chip. It also incorporates the seven 56 bit working registers A to M which include the operational stack registers X, Y, Z and T. Not all of these registers could communicate with each other. For example the M register could only be accessed through the C register. The CTC controls the house keeping functions of the calculator including interrogating the keyboard, checking system status, synchronization and modifying instruction addresses. The anode driver was responsible for final decoding of the display data, driving the LED anodes, sending clock signals to the cathode driver and low power indication which lit all decimal points. The cathode driver is a 15 bit shift register for sequentially controlling the on / off state of each display digit.

The ROM chips could hold 256 ten bit words using serial address in and serial data out. Three of these chips were used in the HP-35, shown below as round cans. More program memory was required in the other models so DIL packages were produced with four times the memory and were referred to as Quad ROMs. To save space in models like the HP-65 and HP-80, all the logic chips, with the exception of the ROMs were placed on a hybrid chip carrier inside a rectangular metal can.

Chips

To run the internals, a series LC oscillator is used to generate a frequency of about 800KHz. This signal was divided down to a 2 phase 200KHz system clock which was the maximum allowed for the chips and gave a CPU word cycle time of about 286uS. LC oscillators are not that accurate, so a more stable crystal oscillator circuit was used in the HP-55 because it had a usable timer function. The HP-45 had a non documented timer but could be accessed by pressing RCL and then the CHS, 7 and 8 keys simultaneously. Word got around that you could modify the underside of the HP-45 ENTER key and then the timer could be activated more easily by pressing RCL then ENTER. It was also possible to install a 784KHz crystal to make the timer more accurate.
The timers were implemented by a fixed 35 instruction code loop which set the time delay for a 100th second counter. (35 x 286uS = 10mS, x 100 = 1 second).  Because there were no software interrupts, you either had a calculator or a timer.

Some average calculation speeds are as follows:

    Add, Subtract           60mS
    Multiply Divide        100mS
    Trigonometric          500mS

These delays will compound themselves when executing complex algorithms from a running program, and the calculators could appear to ‘hang’ for sometimes quite long periods. Registers A and B are used both for holding display data and for general software tasks, so while programs were running and with some calculations, the display shows the jumble of data going through these registers to give some user feedback while the calculator is at work. The following original demonstration shows the length of time it took someone using a slide rule and the new HP-35 calculator to solve the great circle distance between San Francisco and Miami.

   Slide Rule    2255                      5 minutes
   HP-35          2254.093016        65 seconds

Breathtakingly fast back in the day no doubt, and many of the engineers quickly replaced the slide rules in their top pockets with these new calculators. In fact the HP-35 quickly became a sought after item far exceeding initial market expectations with over 300,000 units being delivered in the 3 years following introduction. However, going unnoticed until after production began, a problem occurred when calculating the natural log of  2.02 using the ln key. Reversing the process with the eX key gave an answer of 2 rather than the correct 2.02. This bug was discovered after many units were sold and while it could have been ignored, all affected owners were notified and offered replacements. Interestingly some owners decided not to take up the offer and some of those buggy calculators are still floating around today making good collector’s items.


Display

All the Classic calculators had a 15 digit display. The decimal point position was not part of the 14 digit numerical data. Instead, its position was decoded by the anode driver and occupied one whole digit on the display. Its true position could still be seen even if all decimal points were lit during a low power condition. Register A held the BCD digits for the display while register B was used as a mask register. Nibbles in register B were decoded by the anode driver such that 9 = Digit Off, 0 = Digit On, and 2 = Decimal Point On. On detecting the decimal point, the anode driver would display the next digit and then add an extra step cycle to display the decimal point in the following digit. Numbers were formatted in 10’s complement notation with 9’s in the sign digits indicating negative numbers and were decoded by the anode driver to display the negative sign. An interesting feature of the multiplexed LED display was its brightness and was achieved by using small inductors to dump their stored charge into each LED segment. Timing was critical so that the charge would not bleed into adjacent displays causing them to be partially lit. The inductors had a charge time of 2.5uS and the discharge time through the LED segment was about 5uS and gave an average single LED current of about 0.73mA.

The Status register is made up of 12 bits and can be used as software flags but some bits are connected directly to hardware logic. An example is Status bit [0] which is set to 1 when a key is pressed and back to 0 when it is released. Register C nibbles 12 and 11 were used to load the Data register with a RAM address from the instruction [c -> data address]. The C register could then be loaded with a new number which could be stored in RAM with the instruction [c -> data]. RAM was transferred back into the C register with the instruction [data -> c].

Unique key press values are generated from the CTC scanning process. For example the ENTER key when pressed returns a value of 62. (60 if modified as mentioned above.) The actual key values are transferred to the program counter by using the instruction [keys -> rom address]. In this way each key press provides an index to a simple but efficient jump table. In this part of the HP-45 code listing from ROM 4 you can see that the two entry points for the ENTER key (60 and 62) do essentially the same thing, which in this case was after the Shift key was pressed and executes microcode to set  the [Deg] mode of operation.

60  clok:    no operation
61           no operation
62  degr:    a - 1 -> a[w]

There was a lot of effort put into the keyboard operation to make it user friendly even down to the key spacing and colouring. Each key had an “oil canning” roll forward operation which gave them a high quality positive feel and were double injection moulded for long lasting readability and even after 40 years they still work.

RPN

After purchasing the calculator I soon realised that the keyboard was missing the [=] key and this confused me for a while. I had never heard of RPN previously, but it was well demonstrated in the manual and the concept was easy to learn. I have to say even to this day, I still prefer it over conventional calculator operation.

A book by Jan Lukasiewicz in 1951 first demonstrated that arbitrary expressions could be specified unambiguously without parentheses. In other words, (a + b) x (c – d) could be specified as:

a (enter) b (enter) [add]   c (enter) d (enter) [subtract]   [multiply]

This method is referred to postfix notation and became known as Reverse Polish Notation or RPN in honour of Lukasiewicz.

Stack

Implementing this concept in a computer environment requires an arrangement in memory called a stack. The Classic Series have 4 levels of stack named X, Y, Z and T and these appear in registers C, D, E and F. Keying in number (a) initially goes into the X register and pushes the other values in the stack up by one level with the value in T being lost. Number (b) is then entered followed by the operator [add]. This causes the values in X and Y to be added with the result being placed back into X. The upper stack levels all drop down by one with the T value being duplicated into Z.

Stack manipulation in the calculators is software driven and uses instructions like [c -> stack] which pushes the stack up 1 level and copies the X register into Y. As an example, it is used in code when the ENTER key is pressed. The user can also manipulate the stack by rolling it up or down and swapping the X and Y registers from the keyboard.

During the design phase, building the circuits discretely for testing was considered but would not be practical. Fortunately there was some computing power available which could simulate designs down to gate level, although the data input was on punched cards, (presumably better paper clips than mine) and the output was printed on paper and had to be evaluated.

The HP-35 actually had numerical algorithms that exceeded the precision of some mainframe computers at the time and writing those calculator algorithms offered some interesting challenges for the engineers. Maintaining the accuracy of the various calculator functions was difficult to achieve especially when rounding errors compound themselves. Calculating SIN(x) for example required a divide, multiply, subtract, two more divides another multiply, an addition and a square root, with each process adding to rounding errors creating an undesirable outcome. The code therefore had to be written using various mathematical techniques and the engineers did a remarkable job getting around these problems given the limited hardware available.

Coding

All code for these calculators was listed in OCTAL format as shown in the following instruction listing example at address @54 (44dec). The CPU code is binary with dots representing 0’s.

   Address          10 bit CPU Code           Instruction
   44  L00054:      ..1..1....                :   select rom 1

Here’s a small taste of one of the many problems those engineers would have been faced with.

The ROM address space is limited by 256 word boundaries even in the Quad ROMs. After an instruction executes at decimal address 255 the program counter will wrap around and the next instruction will be fetched from address 0. This actually happens purposely in some code segments. The instruction that gives access to the other ROMs is called [select rom n], where n can be 0 – 7. For the HP-35, n can be either 0, 1 or 2, for the three available ROMs. However, a limitation is that you cannot jump to a random address in another ROM, it is always the current program counter + 1. Imagine the program counter is at address 44 in ROM 0 and the instruction [select rom 1] executes. The program counter will increase by one to address 45 as normal, but access is now from ROM chip 1. That doesn’t sound like a big deal but it can be. For example, as a talented engineer you try to fix that bug in the HP-35 code by inserting a “clear register b” instruction into ROM 0 at address @20 - Not the real fix :-)

   16  L00020:      ....1.111.               :   0 -> B[W]

No problem, there is ROM space available and you just insert the instruction and recompile. Today this would be a trivial thing to do, but alas not so in this case. Imagine there is a [select rom 0] instruction in ROM 2 at address @33. After this instruction executes, the program counter will increment to @34 and the program continues from ROM 0. Unfortunately the instruction that was supposed to be there in ROM 0 is now one address higher because of the code change and the program will now fail. To fix this new problem you will have to go through the entire code listing and locate every [select rom 0] instruction that is positioned at or above address @20 and move them up by one address or move the instructions at the other end down by one address. As you might imagine, this could potentially disturb even more instructions causing a coding nightmare. (Try the concept out using the emulator described below)

Some calculator models required more than 8 ROMs so an extra hardware bit was added to enable addressing for 2 groups of 8 ROMs. New instructions were introduced and were called [delayed select group] and [delayed select rom]. They were “delayed” because they only preset the ROM or group addressing bits and had no effect until a jump or subroutine instruction was executed. That way you could select a group and a ROM in that group prior to the actual program counter change. As a bonus they also allowed jumps to random memory addresses which simplified the programmer’s job quite a bit.

Magnetic Card

The HP-65 and HP-67 were unique in that they incorporated a miniature magnetic card read/write mechanism and with 100 words of usable program memory (224 for the HP-67) they were formidable devices in thier day. Mind you, the earlier HP-9100A/B models also had program card capabillity, but a box full of HP-67s could fit in the case of one of those old beasties.The program elements were just copies of the key codes and each occupied 6 bits in memory, (8 bits for the HP-67). In some cases two or three keys could be saved as one code and therefore conserve expensive memory space. Merging key codes like this was a new concept back then and in the HP-65, they were allocated to 25 commonly used key combinations such as STO 1, which stores the displayed number into memory 1. The HP-67 had many more merged codes available.
The HP-65 program memory was essentially a 600 bit serial buffer. It had provision for a fixed top of memory marker, plus a program pointer and a subroutine pointer which were both free to circulate inside the buffer. The single subroutine pointer allowed for one level of subroutine only.

HP65

The magnetic card read/write mechanism posed many mechanical and electrical design difficulties such as card alignment, low battery, temperature problems and greasy cards to name but a few. They were eventually overcome and the result was a calculator that was only slightly deeper in size than the others in the Classic Series. It was impressive engineering for the day and without modern CAD systems some cases were moulded in clear plastic to see how things would fit inside. The HP-67 used 32 x 56 bit RAM registers to store the program data. The memory cards for this calculator could also store data memory and if required the programs and data could be stored on 2 cards.

HP65 Reader

The HP-67 magnetic cards stored the program data, a header and checksum and were written onto the magnetic media at 300 bits per inch. It took about 2 1/2 seconds for the card to move over the head for the read/write process. Once stored in the calculator memory, individual program functions were generally activated from the A to E or R/S keys. If desired, you could use a marker pen to write program details onto the face of the card which you could slide into a slot above the keyboard for reference. Many programs were available for purchase and you could write and share your own which was quite popular.

Try it all out

The emulator program allows you to use these calculators either by themselves on screen or open them up to simulate, set break points, modify, compile and experiment with all the operating code and registers.


The project was put together using freely available documentation from the web, however some microcode information proved to be unreliable or totally unavailable so in these cases a "best guess" approach was used to fill in the blanks and do the repairs, however all calculators operate as presented in thier respective owner handbooks and documentation. For example, the microcode for the HP-10 will probably never become available as it is embedded inside a single large multipurpose chip, so the microcode for this model was written completely from scratch using the owners manual as a guide and assembled using the emulator described here.



Emulator

Free Downloads - Windows only

The software was developed in a Windows 10 en
vironment. The MultiCalc and Extras downloads include the PC emulator, Help file, PIC HEX file, schematics, PCB design files, and key overlays. After installation, see the help file (PDF) for setup information. Also included are construction details on how to build the real working calculator.

The other downloads are modules that implement the respective calculator.

All files are in zipped format. Download MultiCalc.zip (and for new installs - the Extras file) and unzip into a directory of your choice. All calculator modules (except stand alone applications) must be unzipped into this directory or they won't work.



HP-65 includes over 150 program card files, each with memory card graphics           std01
HP-67 includes 24 program card files for all the demo programs from the owners handbook 
HP-91 now has original microcode thanks to Bernhard at Panamatik
HP-92 now has original microcode
HP-9100B includes simulated Marked Card Reader, Plotter, Printer and Extended Memory Unit
The owner handbooks for some calculators and some of the quick reference guides and patent documents are also available.

Note: Please make sure you have the latest calculator module if it has been updated or it might not work with the current MultiCalc files.


Emulator Download   MultiCalc.zip  Updated 040924

Some manuals available in some of the downloads are a bit grainy. If you would like to get some better ones and also see a lot of interesting HP calculator information, take a leisurley visit to the HP Museum.
PIC code updated - 270523

*      Models not supported with current PIC code

hp01
HP-01 *
Updated 200218
HP10
HP-10
Updated 171123
hp19c
HP-19c
Updated 020124
hp21
HP-21
Updated 020119
hp22
HP-22

hp25
HP-25
Updated 260224
hp25c
HP-25C
Updated 260224
hp27\
HP-27

hp29
HP-29C
Updated 170619
hp31
HP-31E

hp32
HP-32E
Updated 150122
hp33
HP-33E
Updated 150122
hp33
HP-33C
Updated 170619
hp34
HP-34C
Updated 020124
hp37
HP-37E

hp38
HP-38E
Updated 061020
hp38
HP-38C 
Updated 061020
hp35
HP-35 Red Dot, HP-35
Updated 150620
hp45
HP-45

hp55
HP-55
Updated 140620
hp65
HP-65
Updated 240724
hp67
HP-67
Updated 071122
hp70
HP-70

hp80
HP-80
Updated 290523

Stand alone applications.  These do not need the MultiCalc files.  Unzip into a seperate directory
HP46
HP-46

HP91
HP-91
Updated 010824
HP92
HP-92  *
Updated 010824
HP95
HP-95C  *
Updated 160320
(Manufactured, never released)
HP97
HP-97
Updated 010823
Includes HP-97S*
HP9100
HP-9100B  *

hp56i
HP-56i  *
(Never manufactured)
hp67C
HP-67C  *
Updated 130621
(Concept Calculator)
Edit9100
HP-9100B Code Editor  *
Updated 300324

HP Printer

Download HP Printer font.

All software is suitable for emulators
Application PACs for HP-67/97 Compiled by M Fleming.
Math PAC1
Updated 180718
mathPac
Games PAC1    
Updated 230120
gamesPac
Standard PAC
Updated 240120
stanPacStat PAC1  
Updated 180718
statPac
Business Decisions
PAC
Updated 240120
busDecPac
EE PAC1
Updated 300120
eePac
Mech Eng PAC1
Updated 060320
ME1Civil Eng PAC1
Updated 280922
cvEng


Programs for HP-19C/HP29C
HPappsgamesHP19eehp19cmath19cNav
Applications
Games Electrical
Engineering
MathematicsNavigation
19cfin19Ccivil19cMech19cStat19cStEng
FinanceCivil
Engineering
Mechanical
Engineering
StatisticsStudent
Engineering

Programs for HP-3x
33apps33math33seng33stat33surv33re12
HP-33
Applications
HP-33
Math
HP-33
Student Apps
HP-33
Statistics
HP-33
Survey
HP-33
Real Estate I II
34surv34stat34math38lend38Mark39pfin
HP-34
Survey
HP-34
Statistics
HP-34
Mathematics
HP-38
Lending
HP-38
Marketing
HP-38
Finance


Formatted programs from the HP-25 Applications Program Manual, 55 in all. (Updated 050218)
hp25prgs
Some HP67 Programs from Dave Eaton.
(Updated 080419)
HP67zip
A collection of 63 HP-25 programs from the PPC Journal V5 N6, compatable with the Emulator and in *.txt format.
(Updated 180518)
HP25zip
Notes on the Classic calculators.
(Updated 050924)
leds
CPU Instruction Notesclip
ROM Listings, Program and Print Codes
clip
HP-97 Service Manual svman97


Build A Real Working Calculator

multicalc

All design files are provided to create a real calculator that can be built from cheap and easy to get components and is based on the PIC18F47K40 microcontroller. The one circuit emulates the original code and functionallity for 22 calculator models which can be selected by using an inbuilt menu directly from the keyboard. It also includes the slide switches for functions like the Run-PGM-Timer function used on the HP-55 and the Run-W/PGM functions for the HP-65 and  HP-67. Printable keyboard overlays for each calculator are also available. The original low power display modes are also fully working. The PC emulator program can communicate with it via the USB port and lets you change calculator models, upgrade the driver software, and transfer a large range of programs for the HP-65 and HP-67 memory cards and programs for other programmable models like the HP-25.

This is a totally new version of the MultiCalc based on a PIC 18F47K40 chip. Unfortunately due to the complex code changes, it was not possible to make it compatable with the earlier hardware calculator based on the PIC16F1519. If you want to keep using the original version and also want this one, download these newer files to a new directory.

The original microcode for all calculators (HP-10 is my code) is stored inside the PIC chip and each model is instantly selectable from the menu accessed from the keyboard.
Red LED display
Works on 3xAAA batteries, 3.7V LiPo, and can be powered via the USB port.
The calculator can store and recall up to 8 blocks of 51 programs for the HP65 and HP67 plus a total of 8 blocks of 32 programs for the other programmable models.
Continuous memory supported for the HP-19c, HP-25c, HP-29c, HP33c, HP-34c and HP-38c.
Battery monitoring and gives original looking low battery display when activated.
Working switches for each model
USB interface built in, but requires a generic USB cable for connection to a PC.
Reprogrammable via USB or PICkit3 ICSP
The HP-10, HP-19c, HP-46, HP-91 and HP-97 all have a printer, so the PIC calculator can transfer all the microcode printer instructions to the PC (if connected to the USB port) and it will display the printer output from these models. You can also print a hard copy to paper if desired. All printouts are in the original thermal or mechanical printer style.