16C is still available on some keys…. e.g.
SHIFT 6 = 16C
so… SHIFT 6 USR → ∑MOD
John's VademecumTry to learn something about everything, and everything about something -Thomas Huxley “Darwin's bulldog” (1824-1895)
This is an old revision of the document!
The HP16C Programmer's Calculator is made for manipulating numbers in Binary/Octal/Hexadecimal/Decimal to help with programming and other areas that rely on the nitty-gritty of bit-twiddling.
Swiss Micros make a modern hardware emulation (similar in form to the DM15L I already own) but rather than adding another calculator to my (growing) collection I found there is a ROM/Module method to add all (and more) the same features to the DM41X (and presumably the HP41, if you can find a hardware ROM plugin with it).
I occasionally need to do some conversions/calculations into Hex and Binary (thinking of TCP/IP networking, subnet masks etc. or perhaps debugging RS232 serial data, or when writing rig control software?) and being able to do everything on the DM41X (along with the Complex Number module) means the DM41X will become even more useful day-to-day.
The manual for the HP16C Module hp_16c_emulator_manual.pdf
The versions of modules I'm using : hp-16c_rev.1a.zip
The HP16C Manual : https://literature.hpcalc.org/community/hp16c-oh-en.pdf
Like the 41Z Complex Number module, a USER keyboard assignment is made to a trigger command which then automagically re-maps the whole keyboard for one command, then it reverts to normal. A mental image of the re-mapped keyboard starts to develop with use, making operation easier with time.
I've assigned the LN key to the trigger command 16C for the USER keyboard
SHIFT ASN ALPHA SHIFT 1 SHIFT 6 C ALPHA LN
With USER keyboard active I generally won't miss the loss of LN as I rarely use it.
If I do need LN I can simply turn off the USER keyboard.
The same applies for using the ∑+ key for entering Statistical Data - it's assigned to the Complex Keyboard trigger ΣZL.
I won't ever be using statistics at the same time as complex numbers (or HP16C functions).
The USER keyboard can generally remain active all the time except when I want to do statistics or calculate a natural logarithm. Two easy sacrificed keys. Are there others I can do without for additional assignments to frequently used functions or modules?
I played with the LADYBUG module recently ( see DM41X Ladybug Module ) and enjoyed the more “immediate” keyboard input - with the whole keyboard re-mapped while using the module (in “INTEGER” mode). No need to preface each instruction with a trigger to enable the special keyboard for one command at a time.
I found that the HP16C Module can be switched to “full-time” 16KEYS mode too….
You need to get to the ∑BITS launcher and then select Y (for 16KEYS) and answer Y or N.
The 16KEYS function can't be reached any other way, that I've found. The simplest way is to use the DM41X CST menu to run the 16C ∑MOD launcher, then press SHIFT to switch to the ∑BITS launcher, then select Y (for 16KEYS).
You'll need to enable USER key mode, and then the 16C module can be used without the the need to trigger every command with 16C (normally ASN'd to LN key).
You still need to use 16NPT to input numbers (this is mapped to the A (∑+) key. Otherwise most things are just more intuitive. No need to use 16C before an arithmetic operation like + or - etc.
Switch to BIN view
B
Enter a binary number 10111011
16NPT10111011ENTER
Convert to HEX
E
H: bb
Convert to DEC
D
d: 187
Enter a Decimal Number 23
16NPT23ENTER
d : 23
Add them
+
d: 210
Convert to BIN
B
b: 11010010
Much more intuitive….
USER keyboard active.
16C is USER assigned to LN - referred to as 16C hereafter.
I'll use the alpha letter for the top-row keys to describe them for Base Selection
16C B = BINARY
16C C = OCTAL
16C D = DECIMAL
16C E = HEX
Enter HEX value 5F
Use the 16NPT function which lives on the Σ+ button (it switches from ΣZL to 16NPT when the 16C key is invoked)
16C E (to get into HEX mode)
16C 16NPT 5 F ENTER
16C B gives 1011111
16C 16NPT (i.e. Σ+) 1101100 ENTER
16C + gives 11001011
16C E gives Cb
16C D gives 203
always enter numbers with 16C 16NPT the number ENTER
always use the 16 versions of mathematical functions
16C +
16C X
etc.
These are on shifted (and triggered with 16C) math keys:
- = NOT
+ = OR
x = AND
÷ = XOR
Example, in binary….
AND two numbers:
11011101 AND 10001001 →
16C B (to get into Binary mode if needed)
16C 16NPT 11011101 ENTER
16C 16NPT 10001001 ENTER
16C SHIFT X gives 10001001
In HEX…. XOR →
16C E (to get into HEX)
16C 16NPT BEEF ENTER (first number) (make sure at least 16-bit word size for this example Word Size
16C 16NPT CAFE ENTER (second number)
16C SHIFT ÷ (XOR) gives 7411
Convert answer to DEC
16C D gives 29713
Convert answer to BIN
16C B gives a long string of 1 and 0 that scroll across the screen…
View the long BIN number using a WINDOW to look at 8 bits at a time…
16C SHIFT R/S
This asks WINDOW _ and enter 0 for the 1st (MSB) 8 bits:
W0: 11101000:b
Scroll to sequential WINDOW slices with + and - →
+ →
W1: 0010001:b
+ →
W2: :b
The full 16-bit number is therefore:
111010000010001
The word size can be up to 64 bits. In general most stuff is 4, 8 or 16 bits wide, so you can set the size of the binary number in the ∑MOD launcher:
16C USR (one of several different ways of getting to ∑MOD)
if 16KEYS keyboard is active then the quickest way is SHIFT 2 as the last method isn't available (no 16C assignment) 1)
There is then a choice of settings
B:O:D:H:F - 0: 1:2:W:S:?
The first four can set the mode to Binary, Octal, Decimal, Float.
0 sets UNSIGNED integers1 sets ONE'S COMPLEMENT2 sets TWO'S COMPLEMENT
Word size is checked with S
Word size is set with W then enter (eg) 16 to set 16-bit words.
Word Size can also be set directly from a 16C keyboard function 16WSZ accessed via 16C SHIFT 5 rather than via the ∑MOD menu/launcher
? displays the current settings (press ? the quickly press again to hold the displayed info
0c - 16 - DEC
This means unsigned integers, 16-bit words, DECIMAL mode.
Lots of functions are available in launcher sub-menus, eg a menu of rotate functions, or shift functions.
The various launchers are available cyclically via the 16C XEQ along with SHIFT and A
Some trial and error is needed to find what you want, but it starts:
16C XEQ → R: L LN RN R which is a menu to do bit-rotations.
Rotate 1-bit Left by pressing top-row button B
Rotate N-bits left with top-row button C (and enter the number of bits)
Rotate N-bits Right with top-row button D (and enter the number of bits)
Rotate 1-bit Right with top-row button E.
From the R menu:
A give the S: L LN RN R menu to SHIFT bits Left or Right
From the S menu:
XEQ gives ∑R : …………………. which gives lots of options to do things rightwards with the bits. list them
This goes on via XEQ and SHIFT (ORANGE button) to access several menu launchers. Trial and Error and muscle memory.
assumes 16KEYS is active
XEQ → ∑ROT
∑ROT → XEQ → ∑LEFT → XEQ → ∑MOD → XEQ → ∑ROT
∑ROT → A → ∑SHF
∑SHF → XEQ → ∑RIGHT → XEQ → ∑BIT → XEQ → ∑SHF
∑LEFT ↔ SHIFT ↔ ∑RIGHT
∑MOD ↔ SHIFT ↔ ∑BIT
∑SHF ↔ SHIFT ↔ S“:
∑ROT ↔ SHIFT ↔ RC:
Numbers can be saved in 16C registers via 16C STO NN
e.g. save a subnet mask of 11111100 into REG 00 (a /30 network 255.255.255.252)
16C B (go to BINARY mode)
16C 16NPT 11111100 ENTER 16C STO 00
What is 123 AND MASK ? (what's the network base number for host address of 123 using a netmask of 252?)
16C D (decimal so you can enter 123 rather than a BINARY number)
16C 16NPT 123 ENTER
recall mask (it doesn't matter that it was initially stored as a BINARY number, it's displayed in whatever base you are currently using)
16C RCL 00
AND them
16C SHIFT x
answer is 120
The MASK is still in 16-Register 00 if needed again….
Net address of a host with address 43?
16C D
16C 16NPT 43 ENTER
16C RCL 00
16C SHIFT X
answer : 40
xxx.xxx.xxx.43 has a network address of xxx.xxx.xxx.40
16C = LN (i.e. E on top-row)
16NPT = ∑+ (i.e. A on top-row, must be triggered with 16C) 2)
16C 16NPT type in a number ENTER (enter a number in whatever base is currently selected)
BIN OCT DEC HEX = 16C then one of top-row buttons B, C, D, E (select the required base)
∑MOD = 16C USR …. or 16C SHIFT 2 (open a settings menu to set the choice of mode/word/signed)
NOT / OR / AND / XOR = 16C SHIFT then one of - + x ÷ (logic functions)
RR / RL = 16C then one of SIN or COS (rotate Left or Right 1-bit)
RRN / RLN = 16C SHIFT then one of SIN or COS (rotate Left or Right N-bits)
SLN = 16C TAN (shift Left N-bits)
SRN = 16C SHIFT TAN (shift Right N-bits)
Sb = 16C SHIFT 7 (set a bit _ _)
Cb = 16C SHIFT 8 (clear a bit _ _)
B? = 16C SHIFT 9 (is a bit set or not?)
#BITS = 16C SHIFT ∑+ (i.e. A on top-row) (how many bits are high?)
See Keyboard Overlay Pic above for more hints on 16C key assignments
It is recommended to change the assigned key occasionally to prevent wearing it out…..
Page created Fri May 27 21:31:20 2022 by John Pumford-Green
Page last updated: 06/03/25 06:49 GMT