HP-85/85B/87 EMULATOR 3.3 - July 18, 2016 (self-extract .exe)
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.
HP80DIS - HP SERIES 80 DISASSEMBLER
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.2
SERIES 80 SOURCE CODE LISTINGS
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
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.
ADDITIONAL HP SERIES 80 FILES
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.
- self-extracting archive of the LIF->DOS and DOS->LIF
file conversion utility (requires 3.5" or 5.25" diskette drive and an
OTHER SERIES 80 WEB SITES
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
at this time (Nov 2008) www.series80.org seems to have disappeared.
Here are some of the files that were available from that site:
A completely different emulator for the Series 80 was
written by Olivier De Smet. His emulator can be downloaded from:
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