revisted: the 4 banger+



#29

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


#30

Paul,

nice exercise! And your ASCII art approach (AAA) is perfectly sufficient to see your intentions. However, as you may have expected, there are some questions. Please take everything as MHO:

  • Basically, do we really want to load such a small keyboard with such a big function set, now even including programmability? Remember this thing started as a 4-banger.
  • You invented quite some tricky keystroke combinations to overcome the hard key space limits. But cui bono? One more line of keys will be significantly better.
  • You need key sequences like TEST 2, which I'll have to look up on the calc's back (my bad memory, I know ;-). I expect something similar for INTG. Seems outdated for me in the era of soft keys and menus.
  • 256 registers! Who shall remember all these locations and their contents?
  • There's an SST, but no BST. Even very old HPs featured more.
  • Please revert "+" and "-".
Summary: IMHO, you're running in the wrong direction. I'd recommend to ditch programmability for this model. Let it be a cute little scientific gadget. Include trigs on the keyboard. Cut the overhead. 10 or 20 registers are enough by far for quick and dirty applications.

Just my 0,02 Euros :-)


#31

Quote:
Summary: IMHO, you're running in the wrong direction. I'd recommend to ditch programmability for this model. Let it be a cute little scientific gadget. Include trigs on the keyboard. Cut the overhead. 10 or 20 registers are enough by far for quick and dirty applications.

Just my 0,02 Euros :-)


Precisely what I think also.
It should just be a nice simple non-programmable scientific.

I'd be happy with just the one memory register on a basic scientific.

Dave.

#32

Yes, a simple keyboard is desireable. My solution: What does a keypress mean? In classic HPs, the keycode has been used as an address in the ROM to execute the function.
Nowadays ROM is cheap; you can implement many scientific functions in your simple calc. In contrast to that, keyboard space is scarce.

My approach would be to create overlays (paper or plastic) for your keys. These overlays would include some metal contacts (that work like hardwired jumpers) that select the function of some keys. Now you can keep your keyboard small, while the user can heavily customize her/his calc. You want the basic arithmetic (+-*/) on the left side? No problem! You need logs & trigs? Just use the right overlay!

[Edited to correct some typos]


Edited: 19 June 2007, 6:28 a.m.

#33

Hello!

Quote:
Summary: IMHO, you're running in the wrong direction.

Agreed... Either you build a single-seater sailplane (to use an example from my world), or a 500-passenger supersonic vertical-takeoff transport aeroplane with worldwide range. You can't have both within the same package, I'm afraid.



But of course, one could think of an expandable 4-banger like Mr. Bango here (sorry, my image editing capabilities are somewhat limited):



(Please note the beautiful luminous display and the ':' time entry key without which this thing is a no-go-item for me :-) )


At home or in the office, you connect your little shirt-pocket four banger to its expansion unit, that has gotten as many keys as you wish (scientific, financial, alpha, whatever...), the solar cells for recharging the batteries of the portable unit (a tribute to the soft orange glowing display) and the USB connection for remote storage and/or printing (look at the 'Ti-Connect' software that comes with Ti CAS systems to see, what's possible).




For people who would rather have a multi-digit display on their desktop, an alternate expansion unit like this one here could be devised:




Just kidding of course ;-)


Greetings, Max


#34

Awesome, truly awesome!

Dave.

#35

Really great design! And so customer-oriented! Next to perfection!! :-D

#36

Good points. There is reason behind my madness...

Quote:
  • You invented quite some tricky keystroke combinations to overcome the hard key space limits. But cui bono? One more line of keys will be significantly better.

Fiddling with this from my computer keybaord leads me to believe that the tricky keystroke combinations aren't so bad. My current program gives you feedback on every keystroke, doesn't care about the ordering and most of the modifiers are reversable i.e. it is fairly flexible about entry.

An extra line of keys would be better but that wasn't the point :-)


Quote:
  • You need key sequences like TEST 2, which I'll have to look up on the calc's back (my bad memory, I know ;-).

Isn't this the same method use by the "almost perfect" 15c for both the test and matrix functions? This is one feature of the 15c user interface that I don't much like but there isn't any other obvious way to get the functionality there or here.


Quote:
  • Please revert "+" and "-".

Oops, sorry. Don't know how that got mixed up again :-(


Quote:
Summary: IMHO, you're running in the wrong direction. I'd recommend to ditch programmability for this model. Let it be a cute little scientific gadget. Include trigs on the keyboard. Cut the overhead. 10 or 20 registers are enough by far for quick and dirty applications.

I actually agree my direction here is somewhat skew, I didn't design this with the intention of seeing it in production (although I will admit that that would be kind of neat). I designed it as a first step towards the realisation of something closer to a traditional scientific programmable.

To this aim, I needed it to be programmable so my emulator could handle that aspect. I needed a few representative functions so I could build the framework for them. I needed some kind of input state machine to handle prefixes etc. I also wanted to keep it relatively simple and still retain some meaure of "complete" functionality.


- Pauli


#37

OK, after reading your post I don't understand what's your design goal (I am only knowing what's *not*), but I don't have to ;-)

Just one point: Maybe just such sequences like TEST 2 are the reason for the 15C being only "almost" perfect. IMHO the 15C is a very nice little calc with a perfect function set for its time 25 years ago. No less, no more. You will find stronger believers in the eternal power of the 15C in this forum. Once upon a time, we had a project with the objective to create a modern calc with about the same outer dimensions. I do not remember anything like TEST 2 in its function set, but my bad memory, you know ;-)

Best regards, Walter

#38

Where is the 'on' button? Solar? Always on? How about hold-shift for on/off?

I have to agree with the others, there is no need for INTG or programmability. I think the BANGO-EXPANDER is a bit extreme, but the right idea. My thoughts were that the device have some form of I/O. Many embedded processors have a serial device. It would be easy to add, say, Bluetooth. The "Expander" would be a very nice emulator/debugger for your desktop. All programming and testing would be there, then BT downloaded to the BANGO. This would also enable others to share data/code with other BANGOs. If your mobile phone was BT-enabled, then your BANGO could get code/data online (iRPN, iCode, iCalc?)

Since few want to carry around, yet-another-device, I would suggest that you create Windows Mobile (PDA and Smartphone), Blackberry, Symbian, and Palm versions first.

For a few extra bucks, add a jack, miniSD slot, dot matrix display and play tunes on it.

I'd also like it to float and be water resistance to 1M (like my GPS).


#39

Hi!

Quote:
Where is the 'on' button?

Ooops, I forgot about that one... Here it is (press 'CLX' for more than a second and it wakes up without clearing anything, auto-power off after 5 minutes with no loss of stack contents of course), together with the red status LED that will start flashing when the battery gets low. And the waterproof cast titanium housing :-). The whole thing could also have a simple USB connector so that one could use his existing PC/Macintosh keyboard to access the 'invisible' functions.





Greetings, Max


NB: On Apples support pages a software called 'Dashcode' can be downloaded for free that allows the development of little applications for the iPhone that will soon be released. The ideal platform for testing little hp-lookalikes!

#40

Quote:
I've been fiddling around with the super 4 banger that got mentioned a few weeks back.

Here is my interpretation of a "super 4 banger", meaning (for me) a basic, non-programmable scientific calculator.

I tried to keep it as simple as possible while including most common functions (common for me). I limited myself to a 20-key pad, since physical size was an important constraint.

Some notes:

1. There is no on/off key. To turn it on, push any key. To turn it off, hold SHIFT down for a couple seconds (or wait 10 minutes).

2. Note the INV function (on the 4 key), applicable to SIN, COS, TAN, LN, LOG, R->P, ->DMS, D->R and SQRT to compute the inverse function. It can also be applied to y^x to compute y^(1/x) (saving one keystroke). There is of course no need to use the shift key again after INV. E.g., push SHIFT then 4 then 1 to compute the arcsine.

3. There is only one memory. STO and RCL do not take an argument.

4. Fractional numbers can be input in 32S-like syntax (e.g., 3.1.2 for 3 and a half, or 9..7 for nine sevenths), but they are immediately converted to floating point. There is no FDISP equivalent.

5. I like the idea of having a 2-line display, but I'd rather have a sharper, numbers-only display instead of the 42S bitmapped display pictured here.

6. The DISP key is used to set the display mode (normal/scientific, number of digits displayed) and also the angular mode (degrees/radians).

7. Designing keyboards for imaginary calculators is a great way to waste time!


#41

Nice model! Three remarks only:

Quote:
3. There is only one memory. STO and RCL do not take an argument.
Why not more? I'd like to have 10 registers. And with your keyboard, e.g. SHIFT STO + 0 is easily accomplished.
Quote:
4. Fractional numbers can be input in 32S-like syntax (e.g., 3.1.2 for 3 and a half, or 9..7 for nine sevenths)
Hope they use .9.7 to enter nine seventh. Else I need an extra push in logics.
Quote:
7. Designing keyboards for imaginary calculators is a great way to waste time!
Great indeed! :-))

#42

Quote:
I'd like to have 10 registers. And with your keyboard, e.g. SHIFT STO + 0 is easily accomplished.

I hesitated between the ease of use of one register and the power of ten. In the end, simplicity won, mostly because I rarely use more than one register. This can of course be changed without any modification to the keyboard if you prefer more registers and register arithmetic.

Quote:
Hope they use .9.7 to enter nine seventh. Else I need an extra push in logics.

The input formats are a.b.c to enter a + b/c, or a..b to enter a/b. So both .9.7 and 9..7 can be used to enter 9/7.


#43

Quote:
I hesitated between the ease of use of one register and the power of ten. In the end, simplicity won, mostly because I rarely use more than one register. This can of course be changed without any modification to the keyboard if you prefer more registers and register arithmetic.

I think one register is enough on a calc like this.
I rarely use more than one myself.
Having to select the register number every time would be a bit annoying for me.

I really like this calc, and I think it has more merit than any other "theoretical" calc proposed on here that I've seen. Compared with all those Voyager and HP35S variations etc, I'd buy this one instead!

Dave.

#44

Excellent!
I would make a few changes:

I would have had the exponent key unshifted in place of the X-Y key.

I would also swap the SHIFT and X-Y keys.

R-P but no P-R?, or is that a typo with D-R?

I would remove the INV shift function on the 4 key and rely on a double press of SHIFT to enable the inverse functions.

An ENG and <ENG function would be really nice!, drop the factorial or D.MS keys if needed.

Yes, a super 4-banger would of course use a more readable segmented LCD instead of dot matrix.

I would so want one of these!

Dave.


#45

Thank you for your insightful comments.

Quote:
I would have had the exponent key unshifted in place of the X-Y key.

I probably use scientific notation less often than most potential users of this calculator. Your suggestion has a lot of merit. What do others think? If you had to choose only one, which would you make unshifted: x<>y or EEX?

Quote:
I would also swap the SHIFT and X-Y keys.

I'm confused because as per your suggestion above, there would not be an X<>Y key. Do you mean put the new EEX key at the bottom?

With the SHIFT key at the bottom, it is close to often-used functions such as SQRT and RCL. Keeping it there seems to minimize finger travel.

Quote:
R-P but no P-R?

INV R-P gives P-R. The other two conversions can also be inverted.

Quote:
I would remove the INV shift function on the 4 key and rely on a double press of SHIFT to enable the inverse functions.

It's like you were reading my mind. I had the same idea
this morning, and already modified my picture with it.
This allowed me to free the 4 key and use it for a pet
function which I had to leave out in the first version:
area under the normal curve (and its inverse).

Quote:
An ENG and <ENG function would be really nice!,

An ENG display mode could be set up using the DISP key.
What is <ENG?


#46

Quote:
Thank you for your insightful comments.

Quote: I would have had the exponent key unshifted in place of the X-Y key.

I probably use scientific notation less often than most potential users of this calculator. Your suggestion has a lot of merit. What do others think? If you had to choose only one, which would you make unshifted: x<>y or EEX?


Yep, just my preference. As an electronics engineer, most calculations I do involve the EXP key.

Quote:
Quote: I would also swap the SHIFT and X-Y keys.

I'm confused because as per your suggestion above, there would not be an X<>Y key. Do you mean put the new EEX key at the bottom?


Yes, sorry for the confusion. I just prefer it in that position, just like they have on the Casio's, I think it's a more sensible location. Kinda makes the key more important and prominate in that location.

Quote:
With the SHIFT key at the bottom, it is close to often-used functions such as SQRT and RCL. Keeping it there seems to minimize finger travel.

You'll never be able to suit everyone with this!
For me the EXP key would be more frequently used than the shift key functions.

Quote:
Quote: R-P but no P-R?

INV R-P gives P-R. The other two conversions can also be inverted.


Of course. *embarrassed look*

Quote:
Quote: An ENG and <ENG function would be really nice!,

An ENG display mode could be set up using the DISP key. What is <ENG?


No, I'm not talking about an ENG display mode, I'm talking about an ENG display "function" that operates like the Casio calcs. i.e. scientific display is the normal "mode", but if you press ENG you convert that display into engineering notation. Press it again and the display shifts an extra 3 digits. Next operation causes the display to revert back to the usual display mode.
<ENG is ENG in the other direction.
I discussed this in one of the recent HP35S threads, the new HP35S has ENG and <ENG.
I could live without <ENG, but ENG is essential on any calc IMHO.

BTW, the calc would of course not be as tall as the pictured unit, it would stop just at the top of the display.

Dave.

#47

Quote:
I probably use scientific notation less often than most potential users of this calculator. Your suggestion has a lot of merit. What do others think? If you had to choose only one, which would you make unshifted: x<>y or EEX?

Keep the x<>y unshifted. I use this significantly more than EEX (which I do use fairly often).

- Pauli

#48

Quote:
This allowed me to free the 4 key and use it for a pet function which I had to leave out in the first version: area under the normal curve (and its inverse).

Putting HYP in this unused slot would also be possible and in line with more normal scientific calculators. Not that I've ever used a hyperbolic function (excepting for a few of the challenges on this site). I do use normal curves from time to time and used them heaps when I was studying.

- Pauli

#49

Quote:
I would remove the INV shift function on the 4 key and rely on a double press of SHIFT to enable the inverse functions.

This opens a realm of new possibilities. Not only freeing up the 4 key position by removing the need for INV, but we'd also gain roll up (shift shift X<>Y) and we can free up one of the shifted - or + keys since STO is the inverse of RCL :-)

- Pauli

#50

Here's a new version.

Changes (hopefully improvements) from the 4S:

  1. Smaller size. Still need to work on the display, though.

  2. INV is now shift-shift instead of shift-4. So to compute an arcsine, push shift TWICE, then 1. Pushing shift three times cancels shifting. An indicator on the LCD shows the shift status.

  3. EEX is now a primary function; I reordered +/-, EEX and CLX to conform to other models.

  4. There is still only one memory register, but two memory operations have been added.
    As before, shift-sto and shift-rcl store and recall from the memory register. In addition, shift-shift-sto adds X to the memory register, and shift-shift-rcl swaps X and the memory register.

  5. The Q function on 4 computes the area under the normal curve from -infinity to x.


  6. Use and abuse of the INV (shift-shift) function:

    • INV is applicable to the following functions and computes the obvious inverse:
      SIN, COS, TAN, Q, LN, LOG, r->p, ->dms, d->r, SQRT, Rdown.

    • INV y^x computes y^(1/x), the xth root of y.

    • INV x! computes (y choose x), the binomial coefficient.

    • INV / computes y mod x, the remainder.

    • INV +/- returns pi. Strange place to put it, I know, but space is tight.
      An alternative would be to put it on . (double-shifted) but then we'd lose x^2,
      and sometimes it's nice to do x^2 without losing T.

      Another idea I've seen on another calculator is to overload the EEX key with pi.
      If typed at the beginning of entry, the key means pi. Otherwise it means EEX. That
      would mean that powers of ten such as 1000 would have to be entered as 1 EEX 3 and
      not EEX 3. It would also mean that we'd need to do 2 ENTER Pi * to compute 2pi,
      instead of just 2 Pi * (but this would actually save one keystroke, since Pi
      would be primary instead of double-shifted). What do y'all think?

  7. ENG display function

    Similar to the Casio and the upcoming HP-35S, there is no ENG display mode, but shift-ENG displays x in engineering notation, and multiple presses add 3 to the exponent.
    Double-shifted, it does <ENG.


  8. Use of the DISP function (which is now double-shifted ENTER):

    • DISP followed by + toggles between degrees and radian mode
    • DISP followed by . toggles between . and , for decimal separator
    • DISP followed by 0 to 9 sets FIX 0 to FIX 9
    • DISP followed by EEX 0 to EEX 9 sets SCI 0 to SCI 9
    • DISP followed by ENTER shows the whole mantissa while held down

IAQ (Infrequently asked questions)

  1. x<>y or EEX as a primary?

    That's probably the most difficult choice I had to make. Good arguments
    can be made for either. x<>y as a primary means all the functions necessary
    for a basic 4-banger are accessible without SHIFT. EEX as a primary makes
    life easier for engineers. I guess the question boils down to: Is the 4S
    a 4-banger with some scientific functions, or a basic scientific calculator?
    It started life as a "4-banger plus", but the more I play with it, the more
    I tend to think of it as a scientific.


  2. Why not HYP / HYP^-1 instead of Q / Q^-1?

    I don't have anything against hyperbolic functions but I like Q, and I
    feel it is unjustly discriminated against in modern scientific calculators,
    so Q stays. Anyway, computing hyperbolics is easy once you have e^x and ln,
    which are already provided.


  3. Why not STO as INV RCL?

    I don't want STO to be buried too far, it's a useful function. Also,
    by doing it this way, SHIFT SHIFT STO for STO+ and SHIFT SHIFT RCL for x<>m
    really improve the usefulness of the memory.


  4. I want one.

    That's not a question.


#51

Quote:
Here's a new version.

  • x<>y or EEX as a primary?

    That's probably the most difficult choice I had to make. Good arguments
    can be made for either. x<>y as a primary means all the functions necessary
    for a basic 4-banger are accessible without SHIFT. EEX as a primary makes
    life easier for engineers. I guess the question boils down to: Is the 4S
    a 4-banger with some scientific functions, or a basic scientific calculator?
    It started life as a "4-banger plus", but the more I play with it, the more
    I tend to think of it as a scientific.


  • It has indeed transitioned into a proper scientific, and as such should have EEX as a primary key.

    The latest model is beautiful, just beautiful...

    Dave.

    #52

    I like the looks and size, but ...

    All those key combinations go against the idea of a "simple" 4-banger. If this is supposed to be simple, the average idiot (who is smart enought to know RPN!) should be able to pick it up and use it to its fullest without having to read the manual or ask somebody "what key do I press to get arcsin?" I don't find the concept of "The Q function" particularly simple/necessary, either. I've done a lot of scientific analysis and I never felt the urge to have normal curve integrals available on my calculator.

    #53

    Quote:
    • Use of the DISP function (which is now double-shifted ENTER):

      • DISP followed by 0 to 9 sets FIX 0 to FIX 9
      • DISP followed by EEX 0 to EEX 9 sets SCI 0 to SCI 9

    No provision for ALL display mode like the 42s here. This is the mode I use by far the most.


    - Pauli

    #54

    The longer I look at it the more it reminds me of the Sinclair Scientific: cute package design, extraordinary small, extensive use of SHIFT and INV. IMHO such a user interface will limit this model to a conspiratorial community of enlighted monks, who will press SHIFT SHIFT . SHIFT SHIFT +/- * SHIFT SHIFT ENTER EEX 4 humming happily to calculate the area of a circle with 4 decimals. Ommmmmmh ;-)

    Edited: 26 June 2007, 1:58 a.m.


    #55

    . . . or,

    Quote:
    conspiratorial community of enlighted monks

    Not far off the mark!

    #56

    What about exchanging ln & e^x and log & 10^x then we've got e^x, 10^x & y^x next to each other and the inverse ln, log & log-base-y next to each other too. y^(1/x) isn't the inverse of y^x after all.

    I'm tending to agree with Walter on the complexity of entry...

    Still, I might look into implementing it :-)


    - Pauli


    Possibly Related Threads...
    Thread Author Replies Views Last Post
      FWIW - km to miles conversion factor on a four-banger calculator Gerson W. Barbosa 37 3,558 10-19-2011, 03:49 PM
    Last Post: Martin Pinckney
      HP-55 odd behavior revisted Martin Pinckney 0 342 06-13-2011, 10:09 PM
    Last Post: Martin Pinckney
      Organic Display Technolgy - Don't miss TI's latest Four-Banger! Joerg Woerner 6 870 04-02-2009, 05:48 AM
    Last Post: Hans-Erik Lehndal
      El-Cheapo Wally-World Four-Banger W. Bruce Maguire II 18 1,761 08-26-2003, 12:45 PM
    Last Post: bill platt

    Forum Jump: