01-25-2015, 10:34 PM (This post was last modified: 01-28-2015 04:48 AM by Bit.)
Post: #1
 Bit Member Posts: 265 Joined: Jan 2014
The WP 34S provides a comprehensive set of bitwise operations but most are only accessible via catalogs, which is quite slow, especially if you often use more than just one such operation and cannot rely on the catalog remembering the last position. Fortunately there are plenty of unassigned keyboard positions in integer mode that can be used to provide quick access to bitwise operations without removing existing functions. I've designed a layout for bitwise operations that I believe is logical and easy to learn:

Rationale:
- Nand, nor and xnor are in obvious locations below their siblings.
- Shift and rotate are on the S and R keys as that's easy to remember.
- Rotate through carry operations are below rotate, and arithmetic shift right is below shift right.
- Bit tests are above the TEST catalog.
- Set bit is on + because it adds a bit, clear bit is on - because it removes a bit, and flip bit lines up with them nicely.
- Commands to select signed integer representations occupy the only place (on the A-D keys) where a group of four operations fit.
- Double word operations occupy the only remaining place where a group of three operations fit.
- Mask was placed next to other operations that require an argument.
- LJ and RJ were placed in the only remaining place for a pair of left and right oriented operations.
- Mirror was placed next to other bit shuffling operations.
- WSIZE is next to mode changing operations.
- LZ (LZON/LZOFF) was placed in the last remaining h-shifted position because it's similar to SEPON/SEPOFF and that's also h-shifted.
- The last remaining f-shifted position is used for nBITS.
- The two free hotkey positions are assigned to shift left and right by one bit because shifts are needed often. For shifting by only a few bits, it's faster to press A or B repeatedly than to type a number.
- The unshifted position on the EEX key remains unassigned because I couldn't think of an integer operation that should occupy such a prominent position.

If shift or rotate operations are invoked with the corresponding shift key (f or g) held down, they won't prompt for an argument but shift or rotate by a single bit instead. This greatly enhances usability in my experience and allows for quicker operation.

The only integer operations not available on the keyboard are *MOD and ^MOD. They could replace IP and FP, which would conflict with the key assignment on the unmodified 34S, but IP and FP are useless in integer mode so it probably wouldn't inconvenience anyone. If someone would like to see *MOD and ^MOD on the keyboard, please speak up.

All bitwise operations continue to be available in catalogs so you don't need to remember the position of rarely used functions. I've put some effort into optimizing the layout but someone else might have an even better idea, so suggestions are welcome.

I think this feature together with Y register display for integer modes, once they've been thoroughly tested, will make the WP 34S much more useful as a programmer's calculator and it'll be a superior replacement for the HP 16C in every way (except build quality and the keyboard). I've updated my custom builds, you'll find precompiled binaries as well as the patch there. Below I've attached PDF files with a cheat sheet that you can print out and stick to the back of the device, and an ASCII diagram of the layout that's easier to modify than a graphical file, in case someone would like to play with various designs.

Enjoy!

Attached File(s) Thumbnail(s)