I've been fiddling around with the super 4 banger that got mentioned a few weeks back. The items in question are down near the end of the Sneek Preview: Anniversary Edition thread.
Using my ugly ASCII art approach, the main keyboard I've come up with is:
ENTER^ X<>Y CHS Clx
7 8 9 /
4 5 6 *
1 2 3 +
0 . shift -
and the shifted keyspace:
LASTx Rv EEX CLREG/CLPRG
n! sqrt 1/x PGRM
ln e^x y^x SST
STO INTG TEST GSB
RCL PI shift R/S
What I've ditched are the trigometrics and HMS functionality. In their place I've added factorial (gamma?) and integer part functions and some degree of programmability. Basically, I tried to maintain as much of the 12c's non-financial instructions as I could.
Anyway, some details:
- Mathematics are supplied by the decNumber library (IEEE 854, 16 digit decimal arithmetic).
- There are 255 registers. STO and RCL take a three digit argument ranging from 000 through 199. They can optionally be followed by the four arithmetic operators and/or shift (for indirection).
- Program mode supports 1000 steps and each function occupies exactly one step (merged keystrokes).
- GSB doubles as GTO (via the . key) and branches are to step numbers (as per the 12c). GSB and GTO can also operate indirectly using a register for the step number (again by pressing shift before entering all the digits).
- RET is entered as GSB 000
- END is entered as GTO 000
- Subroutine nesting depth is sixty four.
- There are twelve conditional tests supported testing the x register against either 0 or the y register. Enter tests by following the TEST command with a single digit. Enter . to test against y instead of 0.
0 x=0?
1 x!=0?
2 x<0?
3 x<=0?
4 x>0?
5 x>=0?
I've coded pretty much all of this in C (command line/terminal window). I'm still finding bugs but if you want the code...
One thing I'm yet to code include shortcuts to GSB to the low program addresses via pressing GSB followed by one of the top row of keys possibly shifted. This will be implemented via a jump table and it will give easy access to eight user defined functions. Which happens to be enough to support trigonometric operations if desired.
Thoughts?
- Pauli