Synthetic Programming on the HP-9815A/S


Before there was Synthetic Programming on the HP41 (and even the 67/97), there could have been SP on the 9815. To wit:

The HP-IB interface for the 9815 has some commands that allow you to manipulate individual bytes in storage registers and then transfer them to program memory! (The reason for this was to allow character strings to be sent to and from the HPIB interface under program control). Some interesting facts so far:

* Most instructions occupy one byte; some are two bytes, with a prefix and an argument. Storage register operations and GOTO/GOSUBs are examples of the two-byte instructions.

* There are several one-byte instructions that are undocumented.

- One instruction appears to be a NOP, except it doesn't print onthe printer. There does not seem to be a way to enter it from the keyboard.

- CALL A through CALL E can actually be typed on the keyboard, but they make no sense; CALL A tries to access the cartridge drive, but it's unclear what it's doing (it reports "WRONG FILE TYPE"). CALL B through CALL D appear to be no-ops, and CALL E must be trying to access some I/O device unsuccessfully.

* Some 2-byte instructions have interesting properties

- FIX n, SCI n, and SCI3 n (they hadn't invented the term Engineering Notation yet) with n not in the range 0-9 just set the mode to FIX, SCI, and SCI3 without changing the number of visible digits, thus behaving like the HP-67/97 FIX, SCI, and ENG.

- LBL xx, GOTO L xx and GOSUB L xx are prefixes that take the actual label number (00 through 99) as an argument. With SP you can set the argument to any number between 0 and 255, so in effect you have 256 labels, rather than "only" 99. It's also amusing how these print on the printer.

- For some weird reason, the argument for the register operations is only 7 bits; there are separate prefixes for RCL Rxx and RCL R+128xx. The high bit of the argument appears to be ignored.

- The prefix for STO I A through STO I J can be used with arguments other than A through J (101-110). I'm still trying to decipher the results.

I'm in the process of formatting properly a complete "byte table", which I'll post here. Let's see if we can uncover some more secrets :)



Congratulations, John! Great job of paleocybernetics there. 8) I suppose the relative cost of the 9815 and the HP-41 explains why more hacking was done on the latter than the former.


Something else that I've not had time to fully investigate yet :

The 9815A has 7 off 2K ROM chips on the CPU board and a space for an eighth. The 9815S has 2 off 8K ROM chips (and more RAM). The address decoder circuit only enables a total of 14K of the ROM, same as for the 9815A.

If you solder in a link on the CPU board it enables all 16K of ROM (this is obvious from the schematics). The extra 2K of ROM has the correct headers for being an I/O device ROM, and in fact seems to contain meaningful names.

One day I am going to sit down with a 6800 disassembler and figure out just what those extra functions do.


Can you make ROM dumps available?


Have you actually tried soldering the jumper? If the upper 2K looks like an I/O rom, then [CALL] [n] [A-J] would probably be the way to access its functions.

Were there any patents filed for the insides of the 9815?



US Patent 4,089,059: Programmable calculator employing a read-write memory having a movable boundary between program and data storage sections thereof


Yes, I've soldered the jumper in my 9815S.

From what I remember CALL 7 A, etc produce names that print out sensibly on the built-in printer, but I haven't worked out what they do yet.


My case says "9815 A" in the front, and has a "9815S" sticker inside the paper well. I opened the beastie again, and sure enough it only has 7 ROMs with space for an 8th, but it has eight 2114 RAM chips (so 4K of RAM) and no edge connector for an extension RAM board.

I wonder if this is an early-run 9815S board?


John; Or possibly a repaired unit. Did hp ever do factory upgrades? It would have made sense to want more memory if you were using the plotter.


yes, HP did factory upgrades, hence the 9815S sticker inside the printer well. A repaired A would just have received a regular A board, with the 2111 RAM chips.

According to a prior post by Tony Duell, the S had the eight 2114 chips and two 8K ROMs. I would guess that configuration must have been a later-model version, when 8K ROMs had become cheaper. HP would change the innards of their machines during the machine's lifetime, so that doesn't surprise me.

Possibly Related Threads...
Thread Author Replies Views Last Post
  Non-Prime question alert: Hp-41 and synthetic instructions Marcel Samek 11 1,843 11-04-2013, 09:31 PM
Last Post: sjthomas
  HP-67 and Synthetic Programming Matt Agajanian 3 649 05-11-2012, 04:37 AM
Last Post: Olivier De Smet
  hp 41 synthetic programming Sok-khieng Chum Hun 7 1,299 05-15-2011, 01:09 AM
Last Post: Sok-khieng Chum Hun
  9815A/S option ROM Joel Setton (France) 0 363 03-08-2011, 12:43 PM
Last Post: Joel Setton (France)
  9815A manual Joel Setton (France) 0 338 05-21-2010, 04:25 PM
Last Post: Joel Setton (France)
  hp 9815a/s program tapes frankabc 3 644 10-28-2009, 09:46 AM
Last Post: Joel Setton (France)
  hp 9815a/s repair frankabc 33 3,304 09-28-2009, 03:26 PM
Last Post: Joel Setton (France)
  Purely Synthetic PCAT 1 PeterP 1 427 04-16-2009, 11:09 PM
Last Post: Dan Grelinger
  Synthetic Programming and the HP-41C Trent Moseley 12 1,337 02-22-2009, 10:12 PM
Last Post: ZOleg
  HP-42S, 41CX and synthetic programming thoughts Vincent Weber 0 392 06-25-2008, 09:13 AM
Last Post: Vincent Weber

Forum Jump: