The M register in the HP-65 is used for a lot of very interesting things. Maybe not quite “give me the contents of the M register and I’ll show you the world”; but it is very close to that.
The M register has, of course, 14 digits. The digits are numbered by HP from right to left starting with 0 so we have:
M= 13 12 11 10 9 8 7 6 5 4 3 2 1 0
The three rightmost [2,1,0] are the exponent (“[x]” in the microcode) including [2], the exponent sign (“[xs]” in the microcode).
The other digits are [13] – the mantissa sign (“[ms]”) and [12,…,3] – the mantissa (“[m]”).
When you copy the contents of the M register into the C register individual digits are accessible via the “c[p]” construct in microcode instructions.
Okay, enough of the basis. Here’s what is in it:
M[13]: ???
M[12]: 1= DSP was pressed, 2= DSP . pressed
M[11]: 1= GTO was pressed.
M[10]: 1= LBL was pressed.
M[ 9]: ???
M[ 8]: ???
M[ 7]: 1= f was pressed.
M[ 6]: 1= f-1 was pressed.
M[ 5]: 1= STO was pressed, 2-5= STO {-+*/} pressed.
M[ 4]: 1= RCL was pressed.
M[ 3]: 1= g was pressed.
M[ 2]: precision (2 if DSP . 2, 5 if DSP 5)
M[ 1]: mode (0=SCI, 2=FIX)
M[ 0]: angle mode (0=RAD, 1=DEG, 2=GRD)
There is an elegant simplicity to it. The content looks a lot like what we see in RAM[62] of a HP-67 although a lot of that is blank as the ’67 tracks prefix keys through a different mechanism.