HP-15C notes.

This is somewhat distilled from the actual scribblings I made when discovering this stuff in 1983 or 1984.

The display consists of 10 digits, which I shall number from the left as 9 through 0. There is an extra sign at the left, and each digit carries a period and comma alongside.

This is a BCD calculator, and as such, has 16 possible "digits" for each 4-bit byte. They are 0123456789r-oPE and a blank. The P character turns into an upper u in digit position 6. This set does not include the 16 matrix descriptor names, which are displayed in the digit positions 9 and 8 (and sometimes 7 when the LU flag is set) as b, =_, ?, n_, Y, =user, ', du_, d_, ?, A, b, C, d, E, and blank. Some of these names are approximate because the segments displayed do not make up a recognizable ASCII character.

Anyway, to create a matrix which can access all of the machine's memory space, do the following.

Step
Description
Keystrokes
Display
0
(optional) Put machine in known or standard stateON/-[ Pr Error ]
1
generate a strange matrix descriptor, such as Y 5 EEX CHS 8 ENTER 1 + ON/D STO I [ Y 1 1 ]
2
make it big enough to address the matrix sizes register 6 ENTER f DIM A [ Y 6 6 ]
3
At this point you could go exploring to find a number of things, such as the random number seed, or the I register (it has the Y descriptor in it) by doing f MATRIX 1 f USER and repeating RCL (i) until something interesting comes by. I did just that to find where the most useful register so far, the matrix sizes register, lives ENTER RCL g (i) [ 6.0600 ]
4
Make the matrix big enough to explore the whole machine 9.63 ENTER 6 ENTER STO g (i) RCL I [ Y 9 99 ]

From here you ought to be able to find things and map them out. Note that the f PREFIX display is more accurate for determining actual bit patterns than is the ordinary X display, since the calculator tries real hard to display a normal-looking number, even if the underlying bit pattern is denormalized.

I've gone further than this, mapping out what instructions look like, and figuring out how to put new instructions in, and so forth. More later.

Note also that you can crash your calculator if you do too much to one of these odd matrix descriptors, and at that point the machine is as good as cleared, although it will remember some things.


From this point I should transcribe the rest of my notes as well as seems possible. There are a lot of representations of what the display looks like, given as seven-segment characters, which aren't going to reproduce here. I'll also elide the section where I work out how far the X register gets rotated (34 bits) by ON/D.

About the only useful info I see now is a few generated instructions (some unkeyable). I have no idea what they do.

STO x RESULT
RCL MATRIX RESULT
RCL MATRIX MATRIX
RCL x MATRIX
RCL g RESULT