first row | second row | third row | fourth row
description | stack | registers | modes | errors | programming
first row | ||||
---|---|---|---|---|
keystroke | label | stack effect | run mode | programming mode |
42,11 | A | net effect of program run | run program starting at label A. Error 4 if label not found | |
11 | [[$ \sqrt{x} $]] | (x -- [[$ \sqrt{x} $]]) | square root | IRMI |
43,11 | x2 | (x -- x2) | square | IRMI |
42,12 | B | net effect of program run | run program starting at label B. Error 4 if label not found | |
12 | ex | (x -- ex) | natural antilogarithm | IRMI |
43,12 | LN | (x -- LN) | natural logarithm | IRMI |
42,13 | C | net effect of program run | run program starting at label C. Error 4 if label not found | |
13 | 10x | (x -- 10x) | antilogarithm base 10 | IRMI |
43,13 | LOG | (x -- LOG) | logarithm base 10 | IRMI |
42,14 | D | net effect of program run | run program starting at label D. Error 4 if label not found | |
14 | yx | (y x -- yx) | power | IRMI |
43,14 | % | (y x -- y %) | [[$ \frac{ x \cdot y }{100} $]] | IRMI |
42,15 | E | net effect of program run | run program starting at label E. Error 4 if label not found | |
15 | 1/x | (x -- 1/x) | reciprocal | IRMI |
43,15 | Δ% | (y x -- y Δ%) | [[$ \frac{x - y}{y} \times 100 $]] | IRMI |
42,16 | π | (t z y x -- z y x π) | pushes pi onto the stack | IRMI |
16 | CHS | (x -- CHS) | change sign | IRMI |
43,16 | ABS | (x -- ABS) | absolute value | IRMI |
42,17,[0-9] | FIX | none | set display precision. After pressing FIX, press a number between 0 and 9. Numbers will be displayed in fixed notation with the selected number of decimals if possible | |
7 | 7 | number entry | enters 7 | IRMI |
43,17 | DEG | none | set angle mode to degrees. SIN, COS, and TAN will interpret their arguments as degrees. SIN-1, COS-1, and TAN-1 will return values in degrees | |
42,18,[0-7] | SCI | none | set display precision. After pressing SCI, press a number between 0 and 6. Pressing 7 through 9 is the same as pressing 6. Numbers will be displayed in scientific notation with the selected number of decimals | |
8 | 8 | number entry | enters 8 | IRMI |
43,18 | RAD | none | set angle mode to radians. SIN, COS, and TAN will interpret their arguments as radians. SIN-1, COS-1, and TAN-1 will return values in radians | |
42,19,[0-7] | ENG | none | set display precision. After pressing ENG, press a number between 0 and 6. Numbers will be displayed in scientific notation with an exponent that is a multiple of 3 | |
9 | 9 | number entry | enters 9 | IRMI |
43,19 | GRD | none | set angle mode to gradians. SIN, COS, and TAN will interpret their arguments as gradians. SIN-1, COS-1, and TAN-1 will return values in gradians | |
42,20 | x≤y | none | none | |
20 | ÷ | (y x -- ÷) | y ÷ x | IRMI |
43,20 | x<0 | none | none | execute the following instruction if the x register is less than zero, otherwise skip to subsequent instruction |
second row | ||||
keystroke | label | stack effect | run mode | programming mode |
42,21,LBL | LBL | none | none | when followed by the keys A, .. E, 0, .., 9, .0, ..., .9 inserts a label instruction |
21 | SST | none | none | move the current line ahead by one |
43,21 | BST | none | none | move the current line back by one |
42,22 | HYP | (x -- HYP) | used as prefix key with SIN, COS, and TAN to invoke the hyperbolic sine [[$ \frac{e^x - e^{-x}}{2} $]] hyperbolic cosine [[$ \frac{e^x + e^{-x}}{2} $]] and hyperbolic tangent [[$ \frac{e^x - e^{-x}}{e^x+e^{-x}} $]] | IRMI |
22,LBL | GTO | none | error | prefix key to insert instruction to execute instruction at following label next |
43,22 | HYP-1 | (x -- HYP-1) | used as prefix key with SIN, COS, and TAN to invoke the inverse hyperbolic sine, inverse hyperbolic cosine, and inverse hyperbolic tangent | IRMI |
42,23 | x≷(i) | none | none | execute the following instruction if the x register does not equal the value in the register indicated by I, otherwise skip to subsequent instruction |
23 | SIN | (x -- SIN) | sine | IRMI |
43,23 | SIN-1 | (x -- SIN-1 | arcsine | IRMI |
42,24 | (i) | ( -- (i)) | push contents of register referrenced by absolute value of integer portion of I register onto the stack. Error 3 if the value does not refer to a register | IRMI |
24 | COS | (x -- COS) | cosine | IRMI |
43,24 | COS-1 | (x -- COS-1) | arccosine | IRMI |
42,25 | I | ( -- I) | push contents of I register onto stack | |
25 | TAN | (x -- TAN) | tangent | IRMI |
43,25 | TAN-1 | (x -- TAN-1) | arctangent | IRMI |
42,26 | →R | (θ r -- y x) | convert polar coordinates to rectangular coordinates | |
26 | EEX | number entry | enter exponent of number | IRMI |
43,26 | →P | (y x -- θ r) | convert rectangular coordinates to polar coordinates | |
42,27 | x≷I | none | none | execute the following instruction if the x register does not equal the value in register I, otherwise skip to subsequent instruction |
4 | 4 | number entry | enters 4 | IRMI |
43,27,[01] | SF | none | when followed by 0 or 1 sets corresponding flag. Other values cause Error 6 | |
42,28 | DSE | subtract YY from NNNNN, where I register is NNNNN.XXXYY | ||
5 | 5 | number entry | enters 5 | IRMI |
43,28,[01] | CF | none | when followed by 0 or 1 clears corresponding flag. Other values cause Error 6 | |
42,29 | ISG | none | add YY to NNNNN, where I register is NNNNN.XXXYY | |
6 | 6 | number entry | enters 6 | IRMI |
43,29,[01] | F? | none | none | execute the following instruction if the flag provided as an argument (0 or 1) is set, otherwise skip to subsequent instruction. Other values cause Error 6 |
42,30 | x>y | none | none | execute the following instruction if the x register is greater than the y register, otherwise skip to subsequent instruction |
30 | × | (y x -- ×) | multiplies y and x | IRMI |
43,30 | x>0 | none | none | execute the following instruction if the x register greater than zero, otherwise skip to subsequent instruction |
third row | ||||
keystroke | label | stack effect | run mode | programming mode |
42,31 | PSE | none | executes programming mode instruction, though effect is not useful | inserts instruction to pause for 1 second while x register is displayed |
31 | R/S | none | if no programming is running, runs the program starting from current line number. If program is running, stops it. | inserts an instruction to stop the program |
43,31 | P/R | none | enter programming mode | enter run mode |
42,32 | CLEAR Σ | none | clears the statistical registers R0 through R5 | IRMI |
32,LBL | GSB | stack effect of subroutine | runs subroutine at specified label. Error 4 if no such label. Can be used to run programs at numeric labels | inserts instruction to go to label. When RTN is encountered, execution will continue on instruction after GSB |
43,32 | RTN | none | none | insert an instruction to set current line number to 000 and stop running. If instruction is encountered in a subroutine, returns to line after GSB |
42,33 | CLEAR PRGM | none | clears all programming instructions | |
33 | R↓ | (t z y x -- x t z y) | rotate stack | IRMI |
43,33 | R↑ | (t z y x -- z y x t) | rotate stack | IRMI |
42,34 | CLEAR REG | none | sets all registers to zero | IRMI |
34 | x≷y | (y x -- x y) | swap the values of the x and y registers | IRMI |
43,34 | RND | (x -- RND) | round off the x register so that it is exactly what is in the display | IRMI |
42,35 | CLEAR PREFIX | none | abort a partial keystroke entry. While held the full mantissa of the x register is displayed | |
35 | ← | varies | during number entry removes the last digit entered. Otherwise sets the x register to zero like CL X. | removes the current instruction |
43,35 | CL x | (x -- 0) | sets the x register and the display to zero | |
42,36 | RAN # | ( -- #) | random number between 0.0 and 1.0. The STO key can be used to set the seed, which is set to zero at initial power up or when the continuous memory is reset. | |
36 | ENTER | number entry | if in the middle of number entry, causes number entry session to stop so a new number can be entered. If not in a number entry session, pushes the value in the x register onto the stack | |
43,36 | LST x | (t z y x -- z y x lx) | pushes the contents of the x register before the last x register consuming operation onto the stack. | IRMI |
42,37 | P y,x | (y x -- P y,x) | number of arrangements of x items taken from a group of y items | IRMI |
1 | 1 | number entry | enters 1 | IRMI |
43,37 | C y,x | (y x -- C y,x) | y choose x | IRMI |
42,38 | →H.MS | (x -- H.MS) | convert hours in decimal format to hours in H.MS format. The first two digits after the radix will be the minutes, and the third and fourth digits will be the seconds | IRMI |
2 | 2 | number entry | enters 2 | IRMI |
43,38 | →H | (x -- H) | conver hours in H.MS format to hours in decimal format | IRMI |
42,39 | →RAD | (x -- RAD) | convert x register value in degrees to corresponding value in radians | IRMI |
3 | 3 | number entry | enters 3 | IRMI |
43,39 | →DEG | (x -- DEG) | convert x register value in radians to corresponding value in degrees | IRMI |
42,40 | x≠y | none | none | execute the following instruction if the x register does not equal the y register, otherwise skip to subsequent instruction |
40 | — | (y x -- diff) | subtracts x from y | IRMI |
43,40 | x≠0 | none | none | execute the following instruction if the x register is zero, otherwise skip to subsequent instruction |
fourth row | ||||
keystroke | label | stack effect | run mode | programming mode |
41 | ON | none | turns calculator on or off | turns calculator on or off. No instruction is entered. If hit twice when in programming mode, the calculator will come back on in run mode. |
42,KEY | f | none | prefix key used to access orange functions listed above the keys. | IRMI |
43,KEY | g | none | prefix key used to access teal functions on the bottom bezel of the keys. | IRMI |
42,44 | FRAC | (x -- frac) | the fractional portion of x. What x would be if all digits to the left of the radix point were set to zero. Has same sign as x. | IRMI |
44,REG | STO | none | puts contents of x register into register subsequently entered. Use {{STO}} RAN # to store the x register as the random number seed. | IRMI |
43,44 | INT | (x -- int) | closest integer to x between x and zero. The truncation of x | IRMI |
42,45 | USER | none | toggles USER mode. When in USER mode, it is not necessary to use the f prefix to run programs A through E. The normal functions of the keys can be accesses with the f prefix. | same behavior as when in run mode |
45,REG | RCL | (t z y x -- z y x reg) | pushes contents of register subsequently entered onto the stack | IRMI |
43,45 | MEM | ( -- ) | show the number of free programming instruction slots, not counting registers. Show the highest available register that is not being used to store programming instructions | same behavior as in run mode |
42,47 | x! | (x -- x!) | factorial of x. For non-integer values returns Γ(x+1) | IRMI |
0 | 0 | number entry | enters 0 | IRMI |
43,47 | [[$ \bar{x} $]] | ( -- [[$ \bar{y}\;\;\bar{x} $]]) | pushes the average of the y values and x values onto the stack | IRMI |
42,48 | [[$ \hat{y},r $]] | (x -- r [[$ \hat{y} $]]) | linear estimate for y given x and correlation. The correlation is a number from -1 to +1 describing how well the linear regression fits the data. +1 is a perfect fit. | IRMI |
48 | . | number entry | enters a decimal point | IRMI |
43,48 | s | ( -- [[$ \sigma_y\;\;\sigma_x $]]) | standard deviation of x and y | IRMI |
42,49 | L.R. | ( -- slope intercept) | linear regression of intercept data | IRMI |
49 | Σ+ | (y x -- y n) | adds y and x register values as a statistic. Replaces x register with the number of statistics which just increased by one | IRMI |
43,49 | Σ- | (y x -- y n) | removes y and x register values as a static. Replaces x register with the number of statistics which just decreased by one | IRMI |
42,50 | x=y | ( -- ) | none | insert test to skip next instruction unless values in x and y registers are equal |
50 | + | (y x -- sum) | adds x to y | IRMI |
43,50 | x=0 | ( -- ) | none | insert test to skip next instruction unless x register contains zero |
_____________ | ___________ | ________________ | ______________________ | _______________________ |
IRMI
IRMI stands for "Inserts Run Mode Instruction". It describes keys whose programming mode behavior is to insert an instruction which behaves like the run mode behavior of the key.
Description
The HP-11C is a programmable, reverse Polish notation calculator. The only data type is the floating point number. (Flags, instructions?) The floating point numbers have a mantissa with 10 decimal digits and an exponent with 2 decimal digits, both which can be signed. The amount of precision may be greater than what is displayed. Holding the PREFIX key will show the entire mantissa for the number in the x slot.
The stack effect of a number key depends on the previous key. If it was also a number key, then the value of the x slot is modified by appending the new digit to the representation. If the last key was not a number key then the new digit is pushed onto the stack as an integer.
If EEX is pressed during number entry, numbers before the EEX press become the mantissa and numbers after become the exponent. If more than two digits are pressed after the EEX only the last two are used for the exponent. EEX can also initiate number entry in which case the mantissa is one.
Stack effect notation describes how an operator alters the stack. The stack operator uses the slots listed on the left as arguments and replaces them with the values listed on the right. If there is one fewer values than arguments, other values in the stack will move down a slot and the t value will be duplicated. If there is one more values than arguments, other values in the stack will move up a slot and the t value will be discarded.
The Stack
The HP-11C has a stack with 4 slots. These are the slot names.
t |
z |
y |
x |
Push and pop happen at the bottom of the stack. Thinking of the stack with x on the bottom explains how the stack rotation keys work: R↑ and R↓
When a number is pushed, the value in the t slot is lost. When a number is popped, the all the values move down one slot. The value that was in the t slot gets duplicated, so that it is now in both the t and z slots.
Registers
These are the names of the 21 registers that are not part of the stack:
0 1 2 3 4 5 6 7 8 9 .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 I
The STO key is used to put the value in the x register into one of the above registers. After pressing the STO key, enter the name of the register. The f prefix must be used to enter I. After a value is entered in a register with the STO key, the previous value is lost.
The RCL key pushes the value in a register onto the stack. The name of the register is entered after pressing the RCL key.
The registers can all be set to zero with CLEAR REG. All registers except for the I register can be appropriated for programming instructions. Attempting to store a number or recall a number from an appropriated register results in Error 3. The registers are appropriated in the reverse of the order listed above; that is starting with .9 and ending with 0. Pressing and holding the MEM key will show the highest available register available for use. Pressing CLEAR PRGM in programming mode removes all programs and frees all registers for use.
Registers 0 through 5 are the statistics registers. If any of them are appropriated, an Error 3 will result if the Σ+, Σ-, or CLEAR Σ key is pressed. As described on the back of the calculator, the registers contain these values when used for statistics:
R0 | number of entries |
R1 | sum of x |
R2 | sum of x2 |
R3 | sum of y |
R4 | sum of y2 |
R5 | sum of xy |
Modes
run/programming
display mode
angle mode
user mode
Errors
- Error 0: division by zero
- Error 3: attempted to store a value in a register that was being used for programming instructions
- Error 4: attempted to enter a programming instruction when the memory was full
- Error 6: a flag other than 0 or 1 was provided to CF, SF, or F?
Programming
Describe keystroke notation here.
Programming notation with line number.
Keystroke notation.
Number of program instructions: 63 (203 using registers)
The HP-11C hex table
Number of registers: 21 including I
Numer of flags: 2
Gosub: stack nestable 4 deep
Other
To change the punctuation used for the radix mark, turn of the calculator. Press the ON key and hold it. Press the . key and hold it. Release the ON key, followed by the . key. The radix mark can be toggled between a . and a ,. The thousands separator will change correspondingly to a , or .
To reset the continuous memory and return the calculator to its initial factory state, turn the calculator off. Press the {{ON}} key and hold it. Press the {{—}} key and hold it. Release the {{ON}} key, followed by the {{— key. Hit any key to clear the Pr Error message.