HP-85 EMULATOR 2.0 - Jun 1, 2006
HP-85/85B/87 EMULATOR 3.1 - Mar 4, 2015 (self-extract .exe)
HP-85/85B/87 EMULATOR 3.1 - Mar 4, 2015 (.zip file)
If you use the .zip file to get the 3.1 emulator, be SURE to preserve the sub-folder tree!

This is a hobby project of mine, and has very little to do with my puzzle games (although the Games Pac II included some of my earliest arcade games). See the "HISTORY" section of the README.TXT file for more about my involvement with the HP-85 and HP-87.

The HP-85 was a computer designed by Hewlett-Packard in the late 1970's and was introduced in December 1979. This emulator is a Microsoft Windows 32-bit program that emulates the hardware of an HP-85, including the CPU, RAM, ROM, keyboard, CRT, beeper, internal thermal printer, tape cartridges, two diskette drives, and an external printer. There is no support for the back-plane I/O ports, except for the access to the diskette drives and the external printer. The actual bytes from the system and plug-in ROMs are used and "executed". The displayed output will give you a very close approximation of a real HP-85 computer.

NOTE: This release does not have very extensive documentation or instructions. Please read the README.TXT file in the installed directory, as it has some valuable information (this is the file that's shown when you click on HELP, but it's much easier to read in a separate text editor). The download includes three tape cartridges, the HP-85 Games Pac, the Assembler ROM tape, and the Standard Pak. Once you download and install the emulator (just download and run the file above to install it, which will unZIP itself into c:\hp85 (for version 2) or c:\series80 (for version 3) unless you change that), then run the HP85.EXE program from the installed directory. The emulator can be drawn at "normal" size or "double" size (double pretty much requires that your display be running at 1280-pixel horizontal resolution or higher, otherwise you'll want to stick to "normal" size (see the "EMULATOR OPTIONS" menu).

The emulator includes a disassembler and debugger that lets you examine the Series 80 ROM code, single-step through it, set breakpoints, etc.

TAPES: to load a tape cartridge, just click on the tape drive door (above the "CRT"), and a dialog will open showing the available cartridges. In the TAPES dialog, you can also create "new" tapes by clicking on the NEW pushbutton and entering a new name. Before you can use the new tape, you will need to do an ERASETAPE command on the HP-85. If you try to access the blank tape BEFORE doing an ERASETAPE, the tape will search and search and search and very likely end up off the end of the tape. I believe this to be a bug in the tape emulation code, and I plan to investigate and fix it. The TAPES dialog also lets you RENAME, DELETE, or toggle the Write-Protect switch on the currently selected tape. The status bar above the tape display will have a light-red background if the tape is write protected and a light-green background if not. If one tape is loaded, and you load another tape, the already loaded tape will be automatically ejected and the new tape loaded. The "tapes" are stored in individual files in the TAPES sub-directory. The status output above the tape cartridge (above the "CRT"), besides showing the write-protect status, also shows the two tracks of the tape and a moving indicator that shows where (and how) the HP-85 is currently accessing the tape. A blue '<' or '>' indicates hi-speed searching, a green ']' or '[' indicates lo-speed reading or searching, and a red ']' or '[' indicates lo-speed writing.

DISKS: these are handled much like the tapes. Click on the left or right diskette drive latch, and a dialog will appear. The "disks" are stored in a DISKS0 through DISKS9 sub-directories with up to 30 'diskettes' in each sub-directory. When you write-protect a diskette in this dialog, it does NOT make the file in the DISKS sub-directory write-protected, but rather sets a byte (at offset 255 in the file, the last byte of the "volume" sector) to 0 or 1, and that value is used by the emulator to control the write-protected status of the diskette.

If you have any questions, problems, suggestions, etc. regarding this emulator, please feel to contact me.


For those interested in the assembly language source code to the Series 80 ROMs and Binary Programs (which frequently isn't available, here's a disassembler. It's still a work-in-progress, but this 2.1 version is pretty functional for disassembling both ROMs and binary programs for the Series 80 computers. The ZIP file contains the program itself (HP80DIS.EXE, a Windows command-line program), the source to the disassembler (main.c), documentation about using it (readme.txt), a file of entry points into the Series 80 System ROMs (globals85.txt and globals87.txt, more expansive and inclusive than the ones included with the Assembler ROMs), the bits for the HP-85 Assembler ROM (rom050.rom), and a full disassembly of the Assembler ROM (rom050.lst) with the associated DOT-COMMANDS included (at the end) which were used to control the disassembly. The download link for the 2.1 version is below.

This disassembler is more than just a straight-forward disassembler. It also helps you to comment, add labels, etc, to make a more complete source code listing. You do this by running it once on the input ROM or binary program file to get the initial disassembly to an ASCII .LST file. Then you edit that .LST file, adding labels and comments. Then you run HP80DIS again, and it will read the labels and comments and other instructions you enter (telling it where to format bytes as BYT statements or actual CODE or DEF statments, etc), then RE-disassemble the input ROM file and replace matching addresses with references to those labels you entered, plus reformat and space comments, etc. By repeating this cycle over and over, you'll eventually reach a respectably good source listing of the original ROM. Of course, the HARD part is figuing out what the ROM code is DOING. But that's made easier because the disassembler gets you started by showing you the RUNTIME, PARSE, ERROR MESSAGE, KEYWORD (TOKEN) tables and the INITIALIZATION routine. That then lets you start breaking the ROM apart into individual routines that execute various keywords, or that parse those keywords, etc. It's not trivial, but it's easier than you'd think (once you become familiar with the Series 80 assembly language and the operation of the OS... :-).

HP80DIS.ZIP - version 2.1


Here's the beginning of some source code listings for HP-85 and HP-87 ROMs.

HP-85B Mass Storage ROM (ASCII list file) This file was generated by freshly assembling the original source code (so it includes all the original comments, including any mistakes therein) using the Series 80 emulator, the HP-87 Assembler ROM, and my Extension ROM (both included in the emulator), after having done a "PRINTER IS 710, 96" statement, which caused the emulator to print to a Windows PRT710.TXT file with a line length of 96 characters. However, there was a bug in the emulator's version of my Extension ROM that caused the LOC statements to generate errors, so I had to patch and assemble it first, then get the output file converted to a simple 8K binary file in Windows, then replace the Extension ROM in the emulator, THEN I could assemble the original HP-85B Mass Storage ROM files to generate this listing. The resulting Mass Storage ROM matches the actual ROM bits from the one built into the HP-85B except for the last 6 bytes. That's because the Assembler ROM output SPACE characters to "fill to the end of the ROM" whereas the HP 1000 cross-assembler output NUL bytes. So, the sixth- and fifth-to-the-last bytes were SPACEs instead of NULs, which then caused the checksum bytes (the last four bytes) to also be different. So, for all intents and purposes, this listing IS an exact, correct listing for the HP-85B Mass Storage ROM, including all addresses within it. (I haven't updated the emulator with the patched EXTROM yet, that will happen at some point, along with a couple of other bug fixes. But not today.

HP-85 Assembler ROM This zip contains three files:
rom050.lst disassembled and commented by Everett Kaser using HP80DIS.
rom050.src source output (-s) from HP80DIS.
85asmrom.txt printed via "PRINTER IS 710,96" by HP-87 Assembler ROM in the Series 80 emulator.

I was aided in this project by the fact that I wrote the ROM (35 years ago, now). While I had to figure a lot of things out, it was amazing how much of it came back to me as I worked on the disassembly. Once the rom050.lst file was completely disassembled and commented (FAR better than the original source code EVER was...), then I used HP80DIS's -s option to output just the source code, then used the 3.1 version of the Series 80 emulator to "type" rom050.src into the emulated HP-87's Assembler ROM mode. I then added a few statements (the LST, GLO, and ABS statements), and then assembled it. The file then had to be checksummed and written out to a data file as a single string of 8192 bytes (using the CONVERT Basic program). That file was then exported to Windows, where another program (HP80ROMconvert.exe) was used to strip the LIFutil headers and the 3-byte string header and an 8192-byte long file was written with JUST the actual ROM bits. Lather, rinse, repeat innumerable times until the output ROM bits matched the input 'real' ROM bits (and all of the needed features were implemented in the emulator and HP80DIS... and debugged). So, rom050.lst is the original disassembly file that still contains all of the DOT-COMMANDS used by HP80DIS to control the disassembly, whereas 85asmrom.txt is suitable for printing and looks much like any ROM listing would look that was assembled directly on an HP-87. I did import the source code to the emulated HP-85 ROM, too, but due to the limited RAM space, I had to strip all of the comments out and hack the source file up into 7 separate LNK'd files, but it DID assemble correctly. However, doing so in HP-87 mode gives a much more pleasing result.

So, while all of the labels and comments in this disassembly were freshly made up, the code itself and accuracy of the comments are quite valid (should there be anyone besides myself that's ever interested in looking at it... :-) I want to eventually repeat this process for the HP-87 Assembler ROM (and much more quickly, now that all the tools are developed and debugged, AND I have the 85 ROM listing for reference). However, that won't be happening any time soon, as I have too many other irons that are cooling in the fire...

HP-87 Extension ROM (047) This zip contains EXTROM.SRC, and ASCII assembly listing of the 2015 patched version of my Extension ROM for the HP-87. See the README.TXT file in the Series 80 Emulator's DOC folder for details about this ROM.


The HP-85 Emulator distribution (above) includes many HP-85 Application Pacs, including the Games Pac and the Games Pac II. However, for those of you with a REAL HP-85 who might like to get the Games Pac II (or Games Pac Misc) onto LIF diskettes and into your real HP-85, below are ZIP files of those Pacs. The files were saved using the LIFUTIL utility, with LFS headers on each file. The LIFUTIL is also available here, but BEWARE: it requires an older PC for it to run, as it won't run on most modern PCs.

LIFUTIL - self-extracting archive of the LIF->DOS and DOS->LIF file conversion utility (requires 3.5" or 5.25" diskette drive and an older PC).
HP-85 Games Pac II - ZIP file of all the files (in LIFUTIL format) from the 2nd HP-85 Games Pac (includes a JPG file containing the BasicExchange newsletter article describing the games).
HP-85 Games Pac Misc - ZIP file of miscellaneous HP-85 Games that were never officially distributed.


At the time of this writing, these other web sites exist that contain a great deal of information and files regarding the HP Series 80 computers, including ROM images, software, and manuals
for both the HP-85 and the HP-86/87:


Note: at this time (Nov 2008) www.series80.org seems to have disappeared.  Here are some of the files that were available from that site:
NOTE: The site seems to be back up, but I'll leave the downloads here for now anyway...


A completely different emulator for the Series 80 was written by Olivier De Smet. His emulator can be downloaded from:
or directly from here:
ZIP of source for Olivier De Smet's HP-85B/HP-87 Emulator
ZIP of Windows version of Olivier De Smet's HP-85B/HP-87 Emulator
Wikipedia Series 80 page

I have no connection with any of these additional websites, so WYSIWYG ("what you see is what you get").


Around 1979, someone in Ft. Collins, Colorado had some metal "Capricorn" belt-buckles made for the HP-85 sales force (I think). (HP's internal code name for the HP-85 project was "Capricorn".) Bill Kemper, an HP-85 Applications Engineer, received some of these, and he gave me one of them. I still
have the buckle, which has zodiacal capricorn goat on the front, and on the back says, "(c) CAPRICORN HP-85 A/S * DESIGNED AND SCULPTURED BY: HAL PLATT * HEWLETT-PACKARD CO. FT. COLLINS CO. * NOGARIS ART FOUNDRY". I wore that belt buckle for 15-20 years, until I got tired
of wearing a belt... These are pictures of its front and back: