Nonpareil for Zaurus X/Qt (0.77) 05/06/2006

This is a Zaurus port of the Nonpareil calculator emulator for Unix/Linux + GTK.  Nonpareil is to classic HP calculators as MAME is to classic coin-ops.

Calculators and Options Emulated:

Class Classic
1981-Present (12C)
Display LED LCD
Scientific HP-35
Financial HP-80   HP-37E
Other         HP-16C
Options       82143A (Printer)
82182A (CV Time Module)

Beyond Voyager?  Check out and  IMHO, the most significant calculators in this collection are the HP-35 (for historical reasons), the HP-15C, and the HP41C.  The 15C and 41C artwork make the emulators quite usable, however Free42 is significantly faster even with the Zaurus clocked all the way down.

This port has only been tested with Cacko 1.23 on my c860 with X/Qt 1.9 for X11.  More information about Cacko and X/Qt can be found at

Installation Notes:

  1. Setup environment for GTK:

    mkdir /opt/QtPalmtop/etc/pango
    cd /opt/QtPalmtop/etc/pango
    pango-querymodules >pango.modules
    mkdir /opt/QtPalmtop/etc/gtk-2.0
    cd /opt/QtPalmtop/etc/gtk-2.0
    gdk-pixbuf-query-loaders >gdk-pixbuf.loaders

  2. Setup shared libraries.  Nonpareil requires libSDL and libts.  Both can be obtained below in the download section.  You have two installation options:
    1. Place both in /usr/lib.  First backup existing libraries with:

      cd /usr/lib

    2. Place in any directory, then when starting Nonpareil type:

      LD_LIBRARY_PATH=path_to_shared_libs nonpareil
  3. Download the nonpareil binary and save in /usr/local/bin (or any other directory in your PATH).
  4. Fix permissions:

    chmod 755 nonpareil
  5. Extract calculator images.  For desired image each type:

    mkdir -p /usr/local/lib/nonpareil
    cd /usr/local/lib/nonpareil
    tar zxvf type.tgz

  6. To run type:

    nonpareil type


    nonpareil 15c
  7. Help support open software.  Go to and donate today.

Known Bugs/Work-a-rounds:

  1. If you load a module (e.g. 82143A or 82182A) and then later exit you will be unable to startup again without removing the state file (~/.nonpareil/type.nst).  This will be fixed in the next release of Nonpareil.

    Solution:  If you plan to use a module do the following:
    1. File->Save
    2. cp ~/.nonpareil/type.nst to ~/.nonpareil/type.nst.SAVE
    3. Load up and use module with the knowledge that you will lose your work after loading the module.
    4. Exit Nonpareil
    5. cp ~/.nonpareil/type.nst.SAVE ~/.nonpareil/type.nst
  2. Nonpareil may start to use up all memory and crash or crash the Zaurus when returning from suspend.

    Solution:  Close Nonpareil sessions before suspend or immediately after resume.
  3. Nonpareil may start to use up all memory and crash or crash the Zaurus is there is no or corrupted state file.

    Solution:  After starting a calculator for the first time, exit and startup again.  This will create the ~/.nonpareil/type.nst file.  Unless the file is remove or you suspend (see #2 above) your classic calculator experience should be good.

Screen Shots:

35 Screen Shot

Experience the first handheld on your handheld.

The HP-35 was the first handheld calculator.  This calculator was designed with a slide rule (Scientific American, May 2006, Page 80) and it was the beginning of the end of the very same device.  Incredibly the microcode was dumped optically.  You have to see it to believe it:

The screen shot below is utilizing the 35s (s for short) image specifically developed for the Zaurus Clamshell running at 640x480.

35 Screen Shot

Zaurus 6000 users will have no problem with any vertically oriented calculators (i.e. non C).

15C Screen Shot

I still have a 15C on my desk.

12C Screen Shot

The only classic in production.

41CX Screen Shot

41cxs is a version of the Nonpareil 41cx modified to fix a 480 tall screen.  On the right is the output from the virtual HP 82143A printer.  Printer output can be saved as PNG.  Programming the 41CX is a lot easier with a printer.


Description Date File
Nonpareil Binary for Clamshell Zaurus w/ Cacko 1.23 and X/Qt 1.9 (-g) 05/02/2006 nonpareil
Same as above, but as gzip tar archive. 05/02/2006 nonpareil.tgz
Nonpareil Binary for Clamshell Zaurus w/ Cacko 1.23 and X/Qt 1.9 (-O2), same speed as above, but a bit smaller. 05/02/2006 nonpareil-O2
libSDL 04/29/2006
libts 04/29/2006
Build script 04/29/2006 buildit
mod1_file.c patch from 04/29/2006 mod1_file.c.patch
proc.c patch 04/29/2006 proc.c.patch
Nonpareil Home Page/Source
HP-11C Image, extract in /usr/local/lib/nonpareil   11c.tgz
HP-12C Image, extract in /usr/local/lib/nonpareil   12c.tgz
HP-15C Image, extract in /usr/local/lib/nonpareil   15c.tgz
HP-16C Image, extract in /usr/local/lib/nonpareil   16c.tgz
HP-21 Image, extract in /usr/local/lib/nonpareil   21.tgz
HP-25 Image, extract in /usr/local/lib/nonpareil   25.tgz
HP-32E Image, extract in /usr/local/lib/nonpareil   32e.tgz
HP-33C Image, extract in /usr/local/lib/nonpareil   33c.tgz
HP-34C Image, extract in /usr/local/lib/nonpareil   34c.tgz
HP-35 Image (includes 35s, s for short), extract in /usr/local/lib/nonpareil   35.tgz
HP-37E Image, extract in /usr/local/lib/nonpareil   37e.tgz
HP-38C Image, extract in /usr/local/lib/nonpareil   38c.tgz
HP-38E Image, extract in /usr/local/lib/nonpareil   38e.tgz
HP-41C Image (includes 41cxs/41cvs, s for short), extract in /usr/local/lib/nonpareil   41c.tgz
HP-45 Image, extract in /usr/local/lib/nonpareil   45.tgz
HP-55 Image, extract in /usr/local/lib/nonpareil   55.tgz
HP-80 Image, extract in /usr/local/lib/nonpareil   80.tgz
Fluxbox menus 04/29/2006 fluxboxmenu
HP Manuals
41CX RPN Savage Benchmark
  1. Shutdown all 41CX sessions and copy 41CX.nst into ~/.nonpareil as 41CX.nst (case sensitive) or manually enter:

  2. Set radian mode (not necessary of using 41CX.nst):

  3. Set max precision (not necessary of using 41CX.nst):

    FIX 9
  4. Run benchmark:


    Use a stopwatch to time, the Nonpareil 41CX stop watch may be inaccurate.

    NOTE:  Don't press that last [ALPHA] until your physical stopwatch is ready.
  5. Results (should be 2,499.970322) and time (HH.MMSSss) reported on the stack (press X<>Y to get the time).
05/06/2006 41CX.nst
Platform Time
Real 41CX (x: 2,499.970322)) 48:01 min
x86 Linux nonpareil 41cx
Dual Processor 2.4 GHz Xeon (CPU utilization <<1%)
~45 min (WC)
46:05 (CXSW)
c860(PXA255) nonpareil 41cxs
Base: 398 MHz, Turbo: 398 MHz (CPU utilization <5%)
~45 min (WC)
46:05 (CXSW)
15C RPN Savage Benchmark
  1. Shutdown all 15C sessions and copy 15C.nst into ~/.nonpareil as 15C.nst (case sensitive) or manually enter:
    LBL B
    STO I
    LBL 0
    DSE I
    GTO 0
    001 - 42,21,12
    002 -        2
    003 -        4
    004 -        9
    005 -        9
    006 -    44 25
    007 -        1
    008 - 42,21, 0
    009 -    43 11
    010 -       11
    011 -    43 12
    012 -       12
    013 -    43 25
    014 -       25
    015 -        1
    016 -       40
    017 - 42, 5,25
    018 -    22  0
    019 -    43 32
  2. Set radian mode (not necessary of using 15C.nst):

  3. Set max precision (not necessary of using 15C.nst):

    FIX 9
  4. Run benchmark:


    Use a stopwatch to time.
  5. Results should be 2,499.970322.
05/05/2006 15C.nst
Platform Time
Real Overclocked 15C (x: 2,499.970322) ~45 min
Real 15C (x: 2,499.970322) ~96 min
x86 Linux nonpareil 15c
Dual Processor 2.4 GHz Xeon (CPU utilization <<1%)
~93 min
c860(PXA255) nonpareil 15c
Base: 398 MHz, Turbo: 398 MHz (CPU utilization <5%)
~93 min

Send questions/comments: