Project Abacus Notes


Title: ABACUS
Author: David A. Bagley, bagleyd AT verizon.net
Copyright: BSD
Description: ABACI from different countries and times

Contents

Things To Do...
JavaScript - Latest Tweaks...
Android - Latest Tweaks...
Java - Latest Tweaks...
Java - Older Releases
X and Windows - Latest Tweaks...
X and Windows - Older Releases

Things To Do...

  1. The decimal places is governed by the number of rails to right of decimal marker. But if there is a big difference between the base and the display base, this should be govered by the logarithm also. E.g. The Babyloninans used 3 decimal places base 60 to figure out sqrt(2). It would be nice to show the proper decimal places for base 60 abacus when showing base 10 digits on the display. ceil(r*log(60)/log(10)) more places (where r = rail decimal places). Currently, it does not look right to move beads to right of decimal point and not see a corresponding change in the number in display sometimes.
  2. Add features to new Android App version. Current major problem is that the animation did not port from applet/application to Android.
  3. "xabacus really bad": (Oow got ripped by a review...) Not my idea to distribute C version without Motif, but the intent was that its supposed to be minimalistic, sort of like oclock, i.e. a retro-look. I kind of like it, but its not for everybody.
  4. "xmabacus app is out of date": Added a few new things in 7.7.1 (see below) but kept Motif interface, not really specific on what was out of date. Possibly its time to adopt Gnome or KDE but do not yet see the value added over available Java version. Also a big problem I see is that these other libraries keep changing. Another thing is that Motif works great with Xt Widgets which allows you to group widgets together easily like in "Lee's Abacus" where I have a main abacus widget grouped together with 2 auxiliary abacus widgets. I am not sure how I can port this feature.
  5. What graphics in menu would help?
  6. The calculator portion does not work for big numbers, i.e. where one can type in math operations and see the abacus perform, e.g. 1,000,000,000,000,000.0+1. Now use BigDecimal for calculations for Java but problem remains, probably due to some remaining long/double dependencies.
  7. When displayBase != base calculate with strings instead of "long long". I.e. the number of rails can be large if displayBase = base, but may error out when this is not true for a large number of rails. Now use BigDecimal for calculations for Java but problem remains, probably due to some remaining long/double dependencies.
  8. Allow for locale to use "," for "." and vice versa. It might be confusing to change this if one actually wanted to try different locales, e.g. Danish Abacus.
  9. Handling of negatives would be nice (work started with complement function).
  10. "Demo" and "Teach" have beads and rail highlighted to make clear the current position of calculation for digit; should this be extended to highlight a printed digit in a result? (For Java: JTextField will not work, need to change to JEditorPane).
  11. Developing Custom Draw Controls i.e. NM_CUSTOMDRAW. Would this help make "widgets" in Windows (so Lee's Abacus could run there)? customdraw
  12. Added gettext for languages. It seems like Motif just uses ISO8859-1 encoding and does not not handle UTF-8 non-ascii characters well, the work around was to use escape sequence for each non-ascii letter. (More languages translations would be nice). ./configure --enable-gettext LANGUAGE=fr_FR; export LANGUAGE make msgfmt
  13. Teach strings at command-line for vanilla X so do not need Motif/Athena.
  14. Fukutaro's method for sqrt is faster then Lee's method and should be adopted by teach mode. http://totton.idirect.com/soroban/katoSq/ Similarly https://xlinux.nist.gov/dads/HTML/cubeRoot.html
  15. Have a way to have buffer rails (beads in middle of rail is an option) so as to have registers similar to Lee's Abacus but as one long abacus.
  16. For Lee's Abacus should have way of synchronizing options like format or stuff like xabacus -group -groupSize 2 (normally 3)
  17. More detection of limited rows for calculation. Probably more examples where teach mode fails for simple calculations when decimal offset or limited number of rails. I have fixed cases I have seen.
  18. Hard coded keys like 's' and 't', etc. may be confusing so should be a way to turn off.
  19. Change granularity in teach mode. I.e. skip teaching addition for multiplication.
  20. Implement undo and redo for teach and demo mode.
  21. Athena: sometimes gives BadGC on Cygwin for scrollbar or format menu.
  22. JavaScript teach mode needs more highlighting to show its finished.
  23. setDecimalPosition offset by 1 in Java version when initialized if need special rails like quarter. X version OK.

JavaScript - Latest Tweaks...

  8.5.5:
    Fix for only piece 1/4 set and Roman Numerals.
    Fix for only piece 1/12, one bead up, and Roman Numerals.
    Added calculation for piece 1/8 and Roman Numerals.
  8.5.4:
    Teach mode: Fix "1 *" causing a NaN.
  8.4.3
    Added square root and cube root in teach mode.
  8.4.2
    Added multiplication, division in teach mode.
  8.4.1:
    Language support added.  Translations for teach mode.  Need help
      for more translations!
  8.3.9:
    Removed keyCode and which which were deprecated.
  8.3.7:
    Scale decimal places for Sumerian and base2 abacus when
      showing base 10 on display.
  8.3.6:
    Complement now works with undo and redo.
    Dropping Babylon Watch idea, as I see that the Sumerians and
      the early Babylonians did not generally work with groups of
      five.  Added support for a Sumerian Abacus which is closer
      to what they probably had, if they had one.
  8.3.5:
    Added group separators on right side of decimal point.
    Roman Ivory and British 17th Century Abacus
      Allow setting of marker colors
      New format for Roman numerals and markers
      Allow subbead placement to be on right of markers
      Allow to choose if subdecks are separate
    Handle teach mode for new Vietnamese abacus.
    Lee: added spacing, gap now in middle.
    Lee: Only "c" press clear affect auxiliary and primary.
    Added References for all examples.
  8.3.4:
    Fix for teach mode that broke Russian/Danish abacus in 8.2.9.
  8.3.3:
    Allow new color scheme for abacus found at the British Museum
      from the 17th century.
  8.3.2:
    Noticed that Lee's abacus has the group and decimal separtors
      after a specified rail, so added an option to fix that
      with placeOnRail, off by default.
  8.3.1:
    Teach mode fixed and updated subtract operation to say borrow
      instead of carry.
  8.3.0:
    Now uses "r" for redo.
  8.2.9:
    Fix teach to make Chinese Abacus base 16 algorithm more generic
      to work with other bases and bottom bead count.
  8.2.8:
    Fix teach mode for Chinese Abacus base 16.  Problem was that the
      top factor not divisible by base, which broke algorithm.
  8.2.7:
    Added teach mode to Abacus.html for addition and subtraction.
      (Multiplication, division, etc are available in Java and C
      versions).
    WARNING: did not test that much yet.
  8.2.6:
    Fix for Chinese Base 16 complement.
    Show digits for bases greater than 10 in uppercase.
  8.2.5:
    Added a undo and redo for regular manipulation.  Also added
      complement.
  8.2.4:
    Updated references to website to https.  https://www.sillycycle.com
  8.2.3:
    Added new color scheme and used for Mesoamerican abacus.
    Added European currency.
    Fixed rail shading for Japanese currency.
  8.1.7:
    Changed increment/decrement buttons to spinner.
  8.1.6:
    Added rail shading.
  8.1.5:
    Russian abacus the spaces were increased by 3.
    Nonround beads.
    Added options for commas.
    Added some currency stuff.
    Updated look of "X" and "<>" in medieval abacus.
  8.0.4:
    Will now calculate if display base = 10 but will not use precedence.
    Now allow typing in text to move beads (not available if base != display
      base and anomalies).  This also allows increment and decrement not
      to erase calculations.
  8.0.3:
    Animated beads.
  8.0.0:
    Implemented.

Android - Latest Tweaks...

  8.3.6:
    Complement now works with undo and redo.
  8.3.5:
    Added group separators on right side of decimal point.
  8.3.2:
    Noticed that Lee's abacus has the group and decimal separators
      after a specified rail, so added an option to fix that
      with placeOnRail, off by default.
   Fixed to not use exponential notiation for 0.000000001 on display.
  8.3.0
    Added new options menu to bottom of screen as the new gestures
      does not allow old menu to come up.
  8.2.5:
    Added a undo and redo for regular manipulation.
  8.2.4:
    Beads and rails will now maintain their orientation when cycling
      through formats.  This seems better as window is frequently setup
      to for a certain orientation.
    Spelling of Schoty corrected again.
    Updated references to website to https.  https://www.sillycycle.com
  8.2.3:
    Added new group color scheme and used for Mesoamerican abacus.
  8.1.6:
    Added rail shading.
  8.1.5:
    Russian abacus the spaces were increased by 3.
    Spelling of Suanpan, Jupan, and Schoty corrected.
    Updated look of "X" and "<>" in medieval abacus.
  8.0.4:
    Updates to Roman display.
    Old website http://www.tux.org/~bagleyd died, shifted code base to
      new website http://www.sillycycle.com
  8.0.3:
    Android Lollipop 5.0 fix to turn off hardware acceleration or would
      crash with Sig 11.
  8.0.2:
    Increment/Decrement of rails added.
    Many bugs fixed for the new Counter including highlighting.
  8.0.1:
    Medieval Counter added.  Click left of X to add or right of X to
      subtract.  Middle of line is a counts as 5 (for base 10).
  8.0.0:
    Fixed counter digits when format changes.  If above say 999.. as is
      possible for Chinese, Korean, Russian and Danish it will revert to
      0.
    Android App version.

Java - Latest Tweaks...

  8.6.2:
    Fixed calculation when using decimal (off since V8.3.6) also fixed
      for piece and piece percent where its not used.
    Switching formats was broken since 8.3.6.
  8.5.5:
    Moved Roman Makers under Roman Numerals.
    Fix for only piece 1/4 set and Roman Numerals.
    Fix for only piece 1/12, one bead up, and Roman Numerals.
    Added calculation for piece 1/8 and Roman Numerals.
    Fix for piece percent gray when decimal offset 2 and piece set.
  8.5.4:
    Teach mode: Fix "1 *" and "1 +" causing an exception.
  8.4.3:
    Small fixes in teach mode for language handling.
  8.4.2:
    Now displays message in teach mode when too few rails or
      not enough precision.
  8.4.1:
    Language support added.  Translations for teach mode.  Need help
      for more translations!
  8.3.7:
    If display base != base of abacus now should have appropriate
      fractional portion using log(abacusBase)/log(displayBase)
      as a guide.
    Added some rounding as it was taking floor value where the
      display base != base.
    These two things were noticeable on Base 2 Abacus and Sumerian
      Abacus.
  8.3.6:
    Complement now works with undo and redo.
    Dropping Babylon Watch idea, as I see that the Sumerians and
      the early Babylonians did not generally work with groups of
      five.  Added support for a Sumerian Abacus which is closer
      to what they probably had, if they had one.
    Restructured support for piece, piece percent, and subnet to
      now all support [quarters|eighths|twelfths].
    Piece Percent fixes.
  8.3.5:
    Added group separators on right side of decimal point.
    Roman Ivory and British 17th Century Abacus
      Allow setting of marker colors
      New format for Roman numerals and markers
      Allow subbead placement to be on right of markers
      Allow to choose if subdecks are separate
    Handle teach mode for new Vietnamese abacus.
  8.3.4:
    Fix for teach mode that broke Russian/Danish abacus in 8.2.9.
  8.3.3:
    Allow new color scheme for abacus found at the British Museum
      from the 17th century.
  8.3.2:
    Noticed that Lee's abacus has the group and decimal separators
      after a specified rail, so added an option to fix that
      with placeOnRail, off by default.
  8.3.1:
    See some that the Roman abacus needed rounding of the slots
      and fix for moving the upper subdeck beads.
    Updated subtract operation to say borrow instead of carry.
  8.3.0:
    Swap 'e' and 'r' where 'e' now is for Enter in demo and 'r' is for
      Redo to synchronize with other versions.
    Clear primary abacus when starting demo.
  8.2.9:
    Fix teach to make Chinese Abacus base 16 algorithm more generic
      to work with other bases and bottom bead count.
  8.2.8:
    Fix teach mode for Chinese Abacus base 16.  Problem was that the
      top factor not divisible by base, which broke algorithm.
  8.2.7:
    Added more keypad access.
    Fix sound for OpenJDK.
  8.2.6:
    Fix for Chinese Base 16 complement.
  8.2.5:
    Having 3rd decimal place in right auxiliary and then teach mode of
      was 25/3 giving error.
    Added a undo and redo for regular manipulation.
  8.2.4:
    Vertical formatting available with "|" key or menu.  Beads and rails
      will now maintain their orientation when cycling through formats.
      This seems better as window is frequently setup to for a certain
      orientation.
    Museum selection fix.
    Broke teach mode by adding feature in 8.1.5 that did not have all
      references in MessagesBundle.properties.  Feel free to email me
      with translations.
    Spelling of Schoty corrected again.
    Updated references to website to https.  https://www.sillycycle.com
  8.2.3:
    Added new group color scheme and used for Mesoamerican abacus.
    Fix for frame icon broken previously.
  8.2.2:
    Fixed a Roman rail setting.
    Dropped support for applets :(.  This was dropped because applets are
      deprecated and for security.  Now only runs as a application.  (Some
      puzzles are available in HTML5 and JavaScript to run directly from
      web.  Let me know if some favorite feature or puzzle not available
      on HTML5 version  and I will see if I can remedy.)
    Sound now uses ".wav" format, ".au" format was dropped as there seemed
       be less support for ULAW audio files.
    Fixed sound menu item check box.
    Added support for more icon sizes.
  8.1.7:
    Changed slider to spinner as it takes up less room.
  8.1.6:
    Added rail shading.
  8.1.5:
    Fix for topSpaces and topNumber, can now be set to 0 in generic
       mode.
    Russian abacus the spaces were increased by 3.
    Adding an experimental feature, property files for locales.  Its only
      experimental and used only in teach mode.
    Fixing special decimal position when not enough room for special
      rails.
    Spelling of Suanpan, Jupan, and Schoty corrected.
    Updated look of "X" and "<>" in medieval abacus.
  8.1.4:
    Teach fix for (division or root) and piece rail.
    Teach fix for for lower bounds of rails with cube roots.
    Fixed shifting of rails for teach or demo and piece rail.
    Exiting from demo and teach now cleans all rails of highlighting,
      even auxiliary rails.
  8.1.3:
    Quarter percent now independent of piece rail for quarter and
      twelfths.
    Fix a long standing bug when adding under teach and piece rail
      is set.
    Fixing when subdeck and changing format.
  8.1.2:
    When showing demo moves it now highlights the rail being moved.
    Added GUI interface for Ancient Roman in display and Modern Roman
      on rails (not historical), also will show fractions in Latin.
    Turn off Roman Numeral display when using decimal fractions.
    Subrails and quarters now mapped in Roman Numerals (by factor of
      3, not historical).  (Symbols on right are not correct but not
      correct for subdeck eighths either.)
    Adding/removing sign no longer clears subrail.
    Removing subdeck or format left extra values and beads.
  8.1.0:
    Fixed demo where end of lesson was being cut off.  Added delay.
    Added another book from Abacus Guide.  Only first few chapters
      and examples so far.  (Not available in fallback mode.)
  8.0.9:
    Demo now in an xml with a fallback if it can not be found.
    Updates to Roman display.
    Old website http://www.tux.org/~bagleyd died, shifted code base to
      new website http://www.sillycycle.com
  8.0.8:
    Fixed test, removed some NetBeans warnings.
  8.0.7:
    Fixed decimal point movement, broken earlier in 8.0.5.
  8.0.6:
    Fixed the "wrench" look for X when showing anomalies.
    Added group markers after last anomaly.
  8.0.5:
    Added small pointer for feedback when moving decimal point.
  8.0.4:
    Moved demo to xml file.
  8.0.3:
    Medieval sound fixes.
  8.0.2:
    Many bugs fixed for the new Counter including highlighting.
  8.0.1:
    Medieval Counter added.  Click left of X to add or right of X to
      subtract.  Middle of line is a counts as 5 (for base 10).
  8.0.0:
    Added drip sound for format change.
    Moving the decimal point needs a select and a release to a different
      point on "tape".  Now behavior more consistent with a real abacus.
      Also consistent with Android, as a big finger moving beads would
      too easily move decimal point.
    Scalable frame.
  7.7.3:
    Reorganized icons directory.
    Separating to smaller Java files to help port to Android.
  7.7.2:
    Fixed bug for Lee's Abacus, putting a value in a field then erasing
      with a return would not clear beads.
  7.7.1:
    Beads were drawing to far right when vertical with two decks.
    Added scrolls to most help dialogs.  Dialogs now use swing.
    Submenus for controls.
    Moved sliders for base into menu.  Added delay slider in menu.
    Label added like Motif version "Format:" for ComboBox.
    Labeling of Auxiliaries and Primary.  It should disappear when prompt
      is used.  Color of text is 2 shades darker than the default bead.
      This is only done for Lee's abacus.
    Made "Generic" mode disabled in menu (only can use if set at start).
    Radio buttons added for museum choice, disabled in all but Roman
      Hand-Abacus.
    Added check boxes to menus.  Subdeck and eighth enabling etc
      kind of complicated as it needs exactly 2 places for decimal,
      twelfth (or quarter), and slots (Roman). I hope I got all the cases.
    Fixed problem where bottom bead does not work with arrow.
    Not that it mades sense, but 12ths added to broken bar example
      caused not enough room for beads.
  7.7.0:
    Added mouse scroll.  Also arrow keys with mouse work similarly now.
    Added a line so ComboBox does not get cut off by Canvas.
    Abacus canvas now has default focus when applet comes up.
    Abacus control left/right (or if vertical up/down) changes number of
      rails (synchronized with slider).
  7.6.8:
    New test mode to help teachers give tests on the Abacus.  Now with
      timeout feature.
    Took out JPopup and put in JMenu stuff from application.  Would have
      done before but did not realize Applet needs to be JApplet for this
      to work.
    Added border for htmls thanks to
      http://www.squidoo.com/html-backgrounds-
    Added Attach/Detach thanks to code snippet Code Ranch and JavaKB by
      Brian Pipa.
    Also found something in stackoverflow from Alex for resizing JFrame.
    Had to reorganize the shortcut letters:
      v Roman Nvmerals (was m)
      m Museum (was e)
      e Eighth (was h)
      h now used in attach/detach in Java html window.
    Fixed an error when switching from eighths to twelfths.
    Now have sound initialization only run on first try to make a sound as
      I found sound initialization hangs on one of my systems.
  7.6.6:
    Cbrt in teach now works, try like "3u" (cbrt of 3).
    It flashes now when reached final answer in teach mode.
  7.6.5:
    "2v" (sqrt of 2) in teach now works.  Place decimal place appropriately
      to give wanted precision.
  7.6.3:
    Highlighting of beads added in teach mode.
  7.6.2:
    Highlighting of rail added in teach mode.
  7.5.5:
    teach division information: remove redundancy for single digit calc
    more teach information for add/subtract
  7.5.4:
    Fractional fix for division.
    Teach mode base fixes: division, multiplication, lee.
    Teach mode: fixes for error handling.
  7.5.3:
    Teach mode: bug fixes and better error handling.
    Lee's abacus: handle teach mode when formats are different.
    Resynced C and Java code, man pages should closely relate to both
      now.
    Started on sqrt and cbrt but have trouble understanding the method
      in "How to Learn Lee's Abacus" by Lee Kai-chen (which is using
      a strange variant of Newton's method).
    Started on colorizing "Teach" to make clear the current position
      of calculation for digit and rail.  Nothing to show for it yet,
      but new "highlight" colors will be used for this.
  7.5.2:
    Division using teach now works.
  7.5.1:
    1/7 now works for long digits (only Java).
    Found problem with borrow for subtraction and teach (e.g. 39-28).
    Multiplication using teach now works.
  7.5:
    Cleaned up menu look.
    Added "Teach" utility to allow teaching of addition and subtraction.
      Tables are taken from "How to Learn Lee's Abacus" by Lee Kai-chen.
    Generalized so bases should also work with "Teach".
    Fixed bug in calculate when using quarters or quarter percents.
    Changed name of flexible mode from "Other" to "Generic" and changed
      default to be Chinese.
    Moving beads when base was large for Russian or Danish format could
      cause a false display of corruption error.
    Put non-English names of Abacus in pull-down.
    Added complement function, may be useful in future for negatives.
    Added rightToLeft for "Teach".  With it you can change from the
     traditional left to right for addition and subtraction.

Java - Older Releases

  7.4.2:
    Panel info length was trying to be 4 times bigger than it should be.
    Vary the images displayed depending on kind being used, do not have
      all yet.
  7.4.1:
    Keyboard entry and gui were not working together.
  7.4:
    Leading function names in lowercase.
    findbugs and pmd changes.
  7.3.8:
    Fixed various corruption and overflows.
    Fixed goof in ancientRoman.
  7.3.7:
    Allow latin for fractions when using Roman Numerals with -latin.
    Allow signs on bars to be "modern" Roman Numerals with -modernRoman.
    Allow older Roman Numerals to be displayed with -ancientRoman.
    No group positions on abacus when anomaly is on.
  7.3.6:
    Allow "," for decimal point and "." for group separator.  Probably,
      should be done using locale but there are so many ways to configure
      the abacus, I was not sure I should make an exception here and
      configure it a different way.
    Fixed bottom bead click which was 3 pixels off.
    -pressOffset option added.  Beads are now closer together.
      Use option to access older way.
      Beads are rounder with light bordering to distinguish beads easier.
  7.3.5:
    Calculation support when displayBase != base.
    Commas should be ignored in calculations.
    Implemented calculations for anomalies.
    Calculation support up to base 20, which historically,
      was the maximum base used.  Babylonians used 60, but was a
      conglomeration of base 10 and 6.
  7.3.4:
    Calculations turned off when there are anomalies present.
    Calculations like 4! can now be done in auxiliary fields.
    Fixed 4! = 23.99.
    Changed cursor to hand pointer.
    Added javadoc info.
    Change bead configuration depending on line.separator.
  7.3.3:
    Constants changed.
    Added script option: java -jar AbacusApp.jar -script=on
  7.3.2:
    gcj warning cleanups.
    Abacus Demo upgrade to allow chapters.
  7.3.1:
    Updated action codes and synced Java and C code.
    Added eighths ability for Roman Hand Abacus, as suggested by Stephen
      Stephenson.  Setup for UK Museum version may not work as expected on
      FR and IT versions.
  7.3:
    Spawned off a Canvas.java from main java code.
    Better keyboard interface code.
  7.2.9:
    Named fractions added for Roman numerals using 12ths and subdeck.
  7.2.8:
    Roman Hand Abacus fix for subdeck part 1/3 of 1/12 should really be
      1/12 of 1/12 thanks to Ray Greaves .
  7.2.7:
    New bump.au sound and db lowered, thanks to
      http://audacity.sourceforge.net to help clean the sound up.
    Setting decimal a little off for vertical.
  7.2.6:
    Got the multiplication demo from xabacus to work on the Java
      Lee's Abacus.
    Option to format output to use commas so numbers can be read easier,
      shortcut use "g" for group.
    Made a Lee's Abacus.
    Fixed an overflow if number entered in display is too large.
    Implemented JavaScript applet quit option.
    Now has left alignment so it will work cleaner with IE.
    Application flashing removed.
    Now use http://netpbm.sourceforge.net to generate images from xpm.
  7.2.5:
    Check for noninteger parameter input.
    Roman subdeck to Russian error fixed (ffftb.04f).
    Roman subdeck error fixed (ffftb.04b).
    Roman fix for pieces and piece percents.
    Russian to Danish fix for twelfths.
    Added more debugging.
    Assorted fixes for changing number of rails.
    Danish fix for coloring percents when using twelfths.
  7.2.4:
    Minor resyncing of code with X/Windows version.
  7.2.3:
    Line feed fixes.
    Cookies more readable.
    JavaScript/Cookie code back in.
    Ant build now fully supported.
    Tan frame.
    Danish Elementary School abacus added (teaching aid).
      Do not know how its used, setup as:
        clears when pushed left
        lowest order beads at bottom
        kept simple so decimal point is at bottom
    Jar file now has a MANIFEST so it can run as an application if
      downloaded.
  7.2.2:
    AWT to Swing... (I kind of liked AWT... but won over to get Mnemonics
      to look right).
    Fixed bug for signs and quarter percents and subdecks.
    Changed definition of CARRY buffer from 2 to 1, fixed display bug.
    Anomaly now works when carries are possible.  Although there is no
      historical abacus like this, its nice to remove this requirement.
    Pieces and piece percents now use "+" on rail except Roman Abacus.
    Right click clear fix (off by one).
    Fix for calculation so will not get tripped by Roman Numerals if on.
    Automatic calculation is back, do not know when I broke it.
    Fix for random Roman Hand Abacus.
  7.2.1:
    Simplified code to switch to and from Russian abacus.
    Redesigned rounded beads to always account for slots.  I.e. a bead is
      either an overlay of 2 circles and a rectangle if a wide bead or an
      overlay of 4 circles and two rectangles (a cross) where there would
      always be a flat edge along the width of a rail or slot.
  7.2 and older:
    Added on 3 subdecks with 4 beads.
      ./xabacus -roman -rails 10 -tpiece 2 -bpiece 6 -subdeck 3 -subbead 4
      1/2,1/4,1/3 ounces column now work for a Roman Abacus.  This
      comes in two flavors, where possibly the simpler one, needs 3 decks
      (where a single bottom column would be) (one known example in
      museum in British Museum in London).  In the other flavor, the
      beads could stop midway on a single slot (in IMHO not a well defined
      way) (two known examples one in Museum of the Thermae in Rome and
      one in Cabinet des medailles, Bibliotheque nationale, Paris).
      Type "e" or use Museum option to cycle through museum pieces.
    Added older Roman Signs "|x| (((|))) ((|)) (|) c x |" on bar.
      Also allow these signs to be Roman Numerals.
    If anomaly, calculations are not allowed.
    Switching from/to Russian with a negative was broken.
    Added more sanity checks for configuration, or it could go into a
      weird state.
    Fixed for small beads and PC version, would not have rounded slots.
    Fixed top level room and spaces if top pieces or piecePercents
      greater than 2.
   There were some cases where resizing the number of rails causes
      the calculation to change unnecessarily.
    Signed overflow fixes e.g. 50000000000*2=-5000 or
      -100000000000 Chinese converted to Japanese.
    Assorted tweaks discovered when porting code to Java version.
    Moved Anomaly from "a" to "l" to be consistent with Java version.
    Move bar problems with quarter percent.
    Sign, quarter, and quarterPercent code all rewritten to be less buggy.
    Quarter percents option for 1/4 Kopecks.
    Use of "piece" instead of "quarter" for more variability.  This now
      allows a "twelfths" capability (Roman ounces) for Roman Hand Abacus.
      Its pretty configurable (with the configuration file) so you can have
      a range from halves to sixteenths (stock market pricing, pieces of
      eight, etc), and possibly beyond if you want to get crazy.
    New symbols on the bar for "-" for sign, "O" for pieces.  If the base and
      piece and format in Russian style set weird it could otherwise be hard
      hard to read.  O used because it was used on the Roman Hand Abacus.
    Anomaly option for Mesoamerican Nepohualtzintzin Abacus.  Basically a
      JP Abacus in base 20 (3/4) where the columns left of the 2nd digit are
      multiples of 360 (instead of 400).  4th column of unit beads would be
      20x360.  Bar marked with an "X" where the anomaly is.  Note: this
      is turned off if there are extra beads as in the Chinese mode or
      Korean mode or this leads to even more unexpected anomalies.
    AnomalySq option to make more Anomaly more configurable, now can have a
      representation of time using hours, minutes, seconds.  Babylonians are
      responsible for that mess.  Though they probably did not use an
      abacus.
    Vertical for proper Russian schoty (rotate xabacus clockwise 90 degrees).
      Use "v" or menu to toggle.
    Each bead that is a multiple of 1000 gets a darker color on Russian
      Abacus.
    build.xml
    Synced up with X version.  Does not do Lee's Abacus but most features
      are there.  All deprecations are now removed.
      As long as the bases are equal... it can figure out pi...
      enter p, e... enter e, 2v sqrt of 2, 3u cbrt of 3.
      Also try 5! and 4.9! (related to gamma function).
    Left and Right icons commented out, take up too much valuable room and
      may be confusing.
    Got rid of some deprecations and Xlints.
    Initial conversion from C to Java by Sarat Chandran
      .

X and Windows - Latest Tweaks...

 [Aug 30, 2023]  V8.7.1:
    Fixing configure to not use -std=c89 as it may not always work with
      installed includes.
  [Dec 16, 2022]  V8.6.2:
    Fixed calculation when using decimal (off since V8.3.6) also fixed
      for piece and piece percent where its not used.
    Athena: Simplified menu code and fixed check.
  [Dec 14, 2022]  V8.6.1:
    Updating Athena libs as seen in xterm build and adding XawPlus.
    Fixing up and down bitmaps.
  [Dec 09, 2022]  V8.6.0:
    Redesign gui parts as getting too unwieldy.  Ripping out xgui.h
      xgui.c from main file.
    Athena: Adding new spinner, updating old slider and toggle.
    Motif/Athena: Using spinner on base stuff now for consistency.
    Bugs fixed when going from changing base stuff back to demo for gui.
  [Oct 31, 2022]  V8.5.6:
    Updating for Xaw3dxft and neXtaw.
    Fix for possible buffer overflow for previous 1/8 fix.
    Fixing possible double free from checkcpp.
  [Oct 14, 2022]  V8.5.5:
    Athena: Added label for pulldowns.
    Athena: Added more controls in Controls.
    Athena: Lee's Abacus now works.
    Windows/Motif/Athena moved Roman Makers under Roman Numerals.
    Fixes for things broken since V8.3.6:
      Motif: fixed percent rails broken when picked first 
      Motif: keeps adding rails changing piece setting
      Fix for only piece 1/4 set and Roman Numerals 
      Fix for only piece 1/12, one bead up, and Roman Numerals
    Added calculation for piece 1/8 and Roman Numerals.
    Piece rail was not being added to piece percent rail with same
      precision.
  [Oct 04, 2022]  V8.5.4:
    Teach mode: Fix "1 *" causing a divide by zero internally.
    Athena: adding teach mode and fixing initialization of demo mode.
    Motif/Athena: Updated menus and popup titles.
    Motif/Athena: Added sound and demo toggle in menu.
  [Sep 01, 2022]  V8.5.3:
    Updated to use XtAppInitialize from XtInitialize.
    Athena: added scroll bar dialog box for features and options added
      as this was too big not to scroll.
    Athena: added calculate dialog.  Works a bit different than the
      Motif version as the math operations are typed in a separate
      window.
  [Jul 30, 2022]  V8.5.2:
    Changed default size to be slightly bigger, with correct proportion.
    Athena scrolling fix and partial menus added.
  [Jul 11, 2022]  V8.5.1:
    Cleanup and configuration updates.
    Fix for changing format in Cygwin.
  [Jul 07, 2022]  V8.5.0:
    Athena version, because I got complaints about Motif being old.
  [May 20, 2022]  V8.4.3:
    Small fixes in teach mode for language handling.
  [Apr 22, 2022]  V8.4.2:
    Now displays message in teach mode when too few rails or
      not enough precision.
    Bad use of strcpy was causing bad result in running sum
      during a multiplication operation in teach mode.
  [Apr 18, 2022]  V8.4.1:
    Lots of language internationalization added for teach mode.
      See README for --enable-gettext and msgfmt.
  [Mar 20, 2022]  V8.4.0:
    Fix for compiling without Motif.
  [May 23, 2021]  V8.3.7:
    If display base != base of abacus now should have appropriate
      fractional portion using log(abacusBase)/log(displayBase)
      as a guide.
   Added some rounding as it was taking floor value where the
     display base != base.
   These two things were noticeable on Base 2 Abacus and Sumerian
     Abacus.
  [May 09, 2021]  V8.3.6:
    Complement now works with undo and redo.
   Dropping Babylon Watch idea, as I see that the Sumerians and
      the early Babylonians did not generally work with groups of
      five.  Added support for a Sumerian Abacus which is closer
      to what they probably had, if they had one.
    Restructured support for piece, piece percent, and subnet to
      now all support [quarters|eighths|twelfths].
    Fixed old bug where it was not showing pick for radio buttons.
    Removed clear query.  It would seem to pop up at random times.
  [Mar 28, 2021]  V8.3.5:
    Added group separators on right side of decimal point.
    Roman Ivory and British 17th Century Abacus
      Allow setting of marker colors
      New format for Roman numerals and markers
      Allow subbead placement to be on right of markers
      Allow to choose if subdecks are separate
    Handle teach mode for new Vietnamese abacus.
    Broke EnterWindow focusing in 8.3.0, restored.
  [Feb 02, 2021]  V8.3.4:
    Fix for teach mode that broke Russian/Danish abacus in 8.2.9.
  [Jan 31, 2021]  V8.3.3:
    Allow new color scheme for abacus found at the British Museum
      from the 17th century.
  [Dec 27, 2020]  V8.3.2:
    Noticed that Lee's abacus has the group and decimal separators
      after a specified rail, so added an option to fix that
      placeOnRail, off by default.
  [Dec 11, 2020]  V8.3.1:
    Updated subtract operation to say borrow instead of carry.
  [Nov 20, 2020]  V8.3.0:
    Swap 'e' and 'r' where 'e' now is for Enter in demo and 'r' is for
      Redo to synchronize with other versions.
  [Aug 04, 2020]  V8.2.9:
    Fix teach to make Chinese Abacus base 16 algorithm more generic
      to work with other bases and bottom bead count.
  [Jul 10, 2020]  V8.2.8:
    Fix teach mode for Chinese Abacus base 16.  Problem was that the
      top factor not divisible by base, which broke algorithm.
  [Apr 11, 2020]  V8.2.7:
    Can now hold down Enter key in teach mode.
    Fixing a few buffer overflows from latest gcc.
  [Apr 04, 2020]  V8.2.6:
    Lots of spelling errors fixed due to codespell
      https://manpages.debian.org/testing/codespell/codespell.1.en.html
    Fix for clear query to clear auxiliary.
    Fix for Chinese Base 16 complement.
    Drop display of decimal point if decimalPosition on rightmost rail.
  [Mar 23, 2020]  V8.2.5:
    Added a pause popup after calculation is done in teach mode.  The
      reason being is that you can have a long calculation and may
      be hitting return a few times and miss the solution.  Does not
      work if you hold it down however.
    Having 3rd decimal place in right auxiliary and then teach mode of
      was 25/3 giving error.
    Added a undo and redo for regular manipulation.
  [Jan 05, 2020]  V8.2.4:
    Vertical formatting available with "|" key or menu.  Beads and rails
      will now maintain their orientation when cycling through formats.
      This seems better as window is frequently setup to for a certain
      orientation.
    Museum selection fix for windows.
    Handle "4281829918390249v" or "728028431936u" better in teach mode.
      Before it would get stuck and would not redraw screen if not
      enough rails are available.
    Spelling of Schoty corrected again.
    Updated references to website to https.  https://www.sillycycle.com
  [Nov 30, 2019]  V8.2.3:
    Added new group color scheme and used for Mesoamerican abacus.
    Fixed where -sign was not adding sign rail.
  [Oct 09, 2019]  V8.2.2:
    Made the rails a little thicker.
    Build on win32 can now use libxml2-2.  make all-xml  This is not the
      default because it requires the xml dll libraries to be in path at
      runtime.  This is used for reading abacusDemo.xml.
    Fixed demo in windows to start at the beginning.  (Was starting on
      second lesson).
    Fixed windows code where quitting demo mode or teach mode might
      leave magenta colored rails and beads.
  [Feb 15, 2019]  V8.2.1:
    Fixed spinner to not wrap and be unlimited where appropriate.
  [Oct 02, 2018]  V8.2.0:
    Removing strcpy and strcat calls by migrating to strncpy and strncat.
      Added snprintf compile-time option.  Did for all files except
      AbacusT.c, (for teach mode) here it was reduced but not eliminated.
    Fixed drawing especially for Roman Hand Abacus and Medieval Counter.
    Fixed clearing decimal when changing format from Roman Hand Abacus.
    Fixed problem pointed out by clang using uninitialized variables.
  [Jul 21, 2018]  V8.1.8:
    Fixing sound installation.
    Fixing potential some buffer overruns pointed out in mingw in
      AbacusT.c.
  [Apr 03, 2018]  V8.1.7:
    Updated to use spinner (using latest Motif  ;) ).
  [Feb 05, 2018]  V8.1.6:
    Added rail shading.
  [Nov 16, 2017]  V8.1.5:
    Fix for railIndex, can now be set in generic mode.
    Russian abacus the spaces were increased by 3.
    Adding an experimental feature, configure --enable-gettext for
      locales.  Its only experimental and only used for teach mode.  For
      now Motif does not handle non-ASCII very well.  Looking to just
      handle a simple change first like French accents.  Any examples
      of handling this in Motif would be appreciated.
    Spelling of Suanpan, Jupan, and Scoety corrected.
    Updated look of "X" and "<>" in medieval abacus.
  [Oct 15, 2017]  V8.1.4:
    Teach fix for (division or root) and piece rail.
    Teach fix for for lower bounds of rails with cube roots.
    Teach fix for presentation of groups for root operations.
    Removed gcc-7 warnings.
  [Oct 01, 2017]  V8.1.3:
    Updates for 64 bit compilation in Windows.
    Quarter percent now independent of piece rail for quarter and
      twelfths.
    Fixing when subdeck and changing format.  Also could crash
      when changing format on some machines.
    Fix a long standing bug when adding under teach and piece rail
      is set.
    Windows now grays out options where appropriate.
  [Aug 21, 2017]  V8.1.2:
    When showing demo moves it now highlights the rail being moved.
    Added GUI interface for Ancient Roman in display and Modern Roman
      on rails (not historical), also will show fractions in Latin.
    Turn off Roman Numeral display when using decimal fractions.
    Subrails and quarters now mapped in Roman Numerals (by factor of
      3, not historical).  (Symbols on right are not correct but not
      correct for subdeck eighths either.)
    Adding/removing sign no longer clears subrail.
    Removing subdeck or format left extra values and beads.
    Fixed eighth sensitivity issue in Motif menu.
  [Aug 01, 2017]  V8.1.1:
    Valgrind helped find some definite memory leaks.
    Show last move in lesson.
  [Jul 17, 2017]  V8.1.0:
    Removed the lesson files and now use same abacusDemo.xml in Java port.
    Added fallback code to use a static demo if can not read XML demo file.
      Windows version always uses fallback, some issue with libxml2-2.dll
      at runtime.  The X version if compiled without libxml2 will also use
      fallback to use static demo.
    Added another book from Abacus Guide.  Only first few chapters and
      examples so far.  (Not available in fallback mode.)
    Updated sound configuration for X version.  Uses a simple included
      script play.sh, that is now used by default.
  [Sep 03, 2016]  V8.0.8:
    Updates to Roman display.
    Old website http://www.tux.org/~bagleyd died, shifted code base to
      new website http://www.sillycycle.com
  [Jan 18, 2016]  V8.0.7:
    Bases other than 10 broken since 8.0.0.
  [Dec 12, 2015]  V8.0.6:
    Fixed the "wrench" look for X when showing anomalies.
    Added group markers after last anomaly.
  [Oct 22, 2015]  V8.0.5:
    Added small pointer for feedback when moving decimal point.
  [Sep 28, 2015]  V8.0.4:
    Some lessons had some lines too long causing problem.
  [Feb 24, 2015]  V8.0.3:
    Sound and install fixes.
    Fix for switching from Chinese to Medieval and vice versa.
  [Nov 28, 2014]  V8.0.2:
    Many bugs fixed for the new Counter including highlighting.
  [Nov 18, 2014]  V8.0.1: Not released
    Medieval Counter added.  Click left of X to add or right of X to
      subtract.  Middle of line is a counts as 5 (for base 10).
  [Mar 18, 2014]  V8.0.0:
    Added drip sound for format change.
    Moving the decimal point needs a select and a release to a different
      point on "tape".  Now behavior more consistent with a real abacus.
      Also consistent with Android, as a big finger moving beads would
      too easily move decimal point.
    Scalable frame.
  [Jan 20, 2014]  V7.7.3: Not released
    Reorganized pixmap directory.
  [Jan 10, 2013]  V7.7.1:
    Fixed draw of diamond beads when vertical.
    Added scrolls to help dialogs where needed.
    "xmabacus difficult to use": criticism was not clear but added:
      Submenus for controls.
      Moved sliders for base into menu.  Added delay slider in menu.
        Motif has problems with sliders in menus so they are actually
        in a pop-up.
      Added toggles to many toggles to menu buttons.
      Moved Learn stuff into menubar and base stuff into menu like
        Java version.
      Made "Generic" mode disabled in menu (only can use if set at start).
      Added check boxes to menus.  Subdeck and eighth enabling etc
        kind of complicated as it needs exactly 2 places for decimal,
        twelfth (or quarter), and slots (Roman). I hope I got all the cases.
      Radio buttons added for museum choice, disabled in all but Roman
        Hand-Abacus.
    "xmabacus not all fields labeled": Primary and Auxiliaries are now
      labeled.  It disappears when prompt is used.  Color of text is 2
      shades darker than the default bead.  Done only for Lee's abacus.
    Motif: quick "o" or "$" does not change gui choice
    Xt: pressing "o" twice causes "Warning: XtRemoveGrab asked to remove
      a widget not on the list".  Instead of XtDestroyWidget just
      XtUnrealizeWidget shell.  Add NULL check when creating shell.
    Windows + Roman Numerals: problem with doing "calculate".
    Windows + Anomaly/Watch: failing because of MAX_INT... needed to
      change from 2^63-1 to 2^31-1.
    "xmabacus hard to read": new bold fontlist in Abacus resource file
      should address this.
    Not that it mades sense, but 12ths added to broken bar example
      caused not enough room for beads.
  [Aug 31, 2012]  V7.7.0:
    Added mouse scroll.  Also arrow keys with mouse work similarly now.
    Abacus control left/right (or if vertical up/down) changes number of
      rails.
  [Jan 28, 2011]  V7.6.8:
    Had to reorganize letters to be in sync with Java version.
      v Roman Nvmerals (was m)
      m Museum (was e)
      e Eighth (was h)
      (h now used in attach/detach in Java html window)
    Fixed a core dump when switching from eighths to twelfths.
  [Sep 29, 2010]  V7.6.7:
    An old version got out in 7.6.6.
  [Sep 27, 2010]  V7.6.6:
    Cbrt in teach now works, try like "3u" (cbrt of 3).
    It flashes now when reached final answer in teach mode.
    -decimalPosition now set auxiliary rails also.
  [Sep 02, 2010]  V7.6.5:
     "2v" (sqrt of 2) in teach now works.  Place decimal place appropriately
       to give appropriate precision.
  [Aug 03, 2010]  V7.6.4:
Work around for LessTif bug #2801540.
      Problem is that LessTif will not automatically adjust its
      displayed widgets to accommodate a new widget after the topLevel
      is realized.  So when choice of Teach/Demo/Base is chosen the
      subwindow would have height of 1.  Added a force to adjust the
      frame in xabacus.c, if initial size of new window less than 2.
      Works fine in Motif/OpenMotif.  Did not use a check LESSTIF_VERSION
      because it could be compiled on one and later used with different
      library.
  [Jul 06, 2010]  V7.6.3:
    Highlighting of beads added in teach mode.
  [Jul 01, 2010]  V7.6.2:
    Highlighting of rail added in teach mode.
  [Apr 14, 2010]  V7.6.1:
    Ran cppcheck which showed me I was using some non-portable sprintf's.
      Now updated to use strcat.
  [Jan 21, 2010]  V7.6:
    Version handling changed to a single version.h (and man page).
    Sound fixed for esound.
  [Nov 10, 2009]  V7.5.5:
    Windows version: fix to make demo, calc and teach dialogs consistent
    Windows version: added accelerator for references.
    teach division information: remove redundancy for single digit calc
    more teach information for add/subtract
  [Nov 02, 2009]  V7.5.4:
    Fractional fix for division.
    Teach mode base fixes: division, multiplication, lee.
    Teach mode: fixes for error handling.
  [Oct 15, 2009]  V7.5.3:
    Teach mode: bug fixes and better error handling.
    Lee's abacus: handle teach mode when formats are different.
    Resynced C and Java code, man pages should closely relate to both
      now.
    Started on sqrt and cbrt but have trouble understanding the method
      in "How to Learn Lee's Abacus" by Lee Kai-chen (which is using
      Newton's method).
    Started on colorizing "Teach" to make clear the current position
      of calculation for digit and rail.  Nothing to show for it yet,
      but new "highlight" colors will be used for this.
  [Oct 05, 2009]  V7.5.2:
    Division using teach should now work except for decimals.
    Windows version has no auxiliary rails so this part just has to be
      imagined.  Values from current answer are just represented on
      this rail so this is not a big leap.
  [Jul 30, 2009]  V7.5.1:
    Found problem with borrow for subtraction and teach (e.g. 39-28).
    Fixed demo to work more in sync with Java version.
    Multiplication using teach should now should work.
    Added lee options for controlling color and number of rails for
      auxiliary decks from command line.
  [Jun 05, 2009]  V7.5:
    Cleaned up menu look.
    Fixed again for NAS sound.
    Added "Teach" utility to allow teaching of addition and subtraction.
      Tables are taken from "How to Learn Lee's Abacus" by Lee Kai-chen.
    Generalized so bases should also work with "Teach".
    Fixed bug in calculate when using quarters or quarter percents.
    Changed name of flexible mode from "Other" to "Generic" and changed
      default to be Chinese.
    Moving beads when base was large for Russian or Danish format could
      cause a false display of corruption error.
    Put non-English names of Abacus in pull-down.
    Added complement function, may be useful in future for negatives.
    Added rightToLeft for "Teach".  With it you can change from the
     traditional left to right for addition and subtraction.

X and Windows - Older Releases

  [Dec 14, 2008]  V7.4.3:
    Fixed for NAS sound.
  [Jul 21, 2008]  V7.4.1:
    Strange character at end of help title removed.
    Quit menu selection now works.
    Fix for make install-png, thanks to solsTiCe d'Hiver .
  [Jul 11, 2008]  V7.4:
    Leading function names in lowercase.
  [Jun 01, 2008]  V7.3.9: Not released
    Made "t" and "b" names consistent with Java version ie, -tpiece now
      -topPiece and -bpiece now -bottomPiece.
    Japanese format 1,000,000,000,000,000,000,000,000.0+1 corruption fix.
       Still does not add accurately as the math is using double.
    Fixed various corruption and overflows.
  [May 18, 2008]  V7.3.8:
    Fixed goof in ancientRoman.
  [May 12, 2008]  7.3.7:
    Allow latin for fractions when using Roman Numerals with -latin.
    Allow signs on bars to be "modern" Roman Numerals with -modernRoman.
    Allow older Roman Numerals to be displayed with -ancientRoman.
    No group positions on abacus when anomaly is on.
  [Apr 11, 2008]  V7.3.6:
    Allow "," for decimal point and "." for group separator.  Probably,
      should be done using locale but there are so many ways to configure
      the abacus, I was not sure I should make an exception here and
      configure it a different way.
    Fixed bottom bead click which was 3 pixels off.
    -pressOffset option added.  Beads are now closer together.
      Use option to access older way.
      Beads are rounder with light bordering to distinguish beads easier.
    Added color options for auxiliary beads.
  [Apr 08, 2008]  V7.3.5:
    Eighths half added to menu and off by one error.
    Eighths 1/2 bead was showing wrong value.
    Calculation support when displayBase != base.
    Commas should be ignored in calculations.
    Implemented calculations for anomalies.
    Calculation support up to base 20, which historically,
      was the maximum base used.  Babylonians used 60, but was a
      conglomeration of base 10 and 6.
  [Feb 29, 2008]  V7.3.4:
    Calculations like 4! can now be done in auxiliary fields.
    Auxiliary text windows now proper sizes.
    -script now defaults to stdout for X-Windows.  Aux stuff now works
      here also.
    Changed pointer from crosshair to hand2.
    gs has problems reading the distributed postscript file.  In pixmaps
      directory, I now distribute png files in case there are others like
      me who have trouble reading it.  As of now, these are not installed
      automatically.
  [Dec 24, 2007]  V7.3.3:
    Constants changed.
  [Nov 27, 2007]  V7.3.2:
    Added -nolee option when compiled with -DABACUS_LEE.
    Merging in GNU standards.
    Abacus Demo upgrade to allow chapters.
    Variable xpm icons controlled by resource file.
    Default "Other" is now not printed on non-Motif.
    Number in X version on left side in-case window is small.
    Updated action codes and synchronized Java and C code.
    Various small changes.
  [Jul 26, 2007]  V7.3.1:
    Updated action codes and synchronized Java and C code.
    Added eighths ability for Roman Hand Abacus, as suggested by Stephen
      Stephenson.  Setup for UK Museum version may not work as expected on
      FR and IT versions.
    Condense various menu defines to one set: "ACTION_*".
    Windows fix for strange memory corruption when 'o' pressed for demo mode.
    Windows now has black text for demo by default instead of green.
  [Feb 23, 2007]  V7.3:
    HTML no longer corrupted.
    mono and reverseVideo update.
    Named fractions added for Roman numerals using 12ths and subdeck.
  [Feb 20, 2007]  V7.2.8:
    Roman Hand Abacus fix for subdeck part 1/3 of 1/12 should really be
      1/12 of 1/12 thanks to Ray Greaves .
  [Feb 20, 2007]  V7.2.7:
    Setting up Roman Hand Abacus from .ad file caused core.
    Fix for setting up twelfths and quarters from .ini file.
    New bump.au sound, db lowered, and bumpdat.au removed, thanks to
      http://audacity.sourceforge.net to help clean the sound up.
    Setting decimal a little off for vertical.
  [Dec 12, 2006]  V7.2.6:
    Option to format output to use commas so numbers can be read easier,
      shortcut use "g" for group.
    Fixed an overflow if number entered in display is too large.
    Fixed menu to assure the OK part of queries is handled correctly.
    Now use http://netpbm.sourceforge.net to generate images from xpm.
  [Aug 08, 2006]  V7.2.5:
    Roman subdeck to Russian error fixed (ffftb.04f).
    Roman subdeck error fixed (ffftb.04b).
    Roman fix for pieces and piece percents.
    Russian to Danish fix for twelfths.
    Added more debugging.
  [Jul 21, 2006]  V7.2.4:
    Fixed assorted memory leaks and uninitialized memory access reads.
  [May 14, 2006]  V7.2.3:
    Tan frame.
    Danish Elementary School abacus added (teaching aid).
      Do not know how its used, setup as:
        clears when pushed left
        lowest order beads at bottom
        kept simple so decimal point is at bottom
  [Mar 06, 2006]  V7.2.2:
    Fixed bug for signs and quarter percents and subdecks.
    Changed definition of CARRY buffer from 2 to 1, fixed display bug.
    Anomaly now works when carries are possible.  Although there is no
      historical abacus like this, its nice to remove this requirement.
    Pieces and piece percents now use "+" on bar except Roman Abacus.
    Right click clear fix (off by one).
    Made usage string compatible with versions of Motif and screen.
    Fixed a problem for quarter percents where beads would get stuck.
    Windows fix for printing of subdeck chars in Roman Abacus for Museum
      of the Thermae in Rome.
  [Feb 27, 2006]  V7.2.1:
    rngs.h left out of distribution, also some permission problems
      on installation scripts.
    Simplified code to switch to and from Russian abacus.
    Redesigned rounded beads to always account for slots.  I.e. a bead is
      either an overlay of 2 circles and a rectangle if a wide bead or an
      overlay of 4 circles and two rectangles (a cross) where there would
      always be a flat edge along the width of a rail or slot.
  [Jan 17, 2006]  V7.2:
    Added on 3 subdecks with 4 beads.
      ./xabacus -roman -rails 10 -tpiece 2 -bpiece 6 -subdeck 3 -subbead 4
      1/2,1/4,1/3 ounces column now work for a Roman Abacus.  This
      comes in two flavors, where possibly the simpler one, needs 3 decks
      (where a single bottom column would be) (one known example in
      museum in British Museum in London).  In the other flavor, the
      beads could stop midway on a single slot (in IMHO not a well defined
      way) (two known examples one in Museum of the Thermae in Rome and
      one in Cabinet des medailles, Bibliotheque nationale, Paris).
      Type "e" or use Museum option to cycle through museum pieces.
    Added older Roman Signs "|x| (((|))) ((|)) (|) c x |" on bar.
      Also allow these signs to be Roman Numerals.
    If anomaly, calculations are not allowed.
    Switching from/to Russian with a negative was broken.
    Added more sanity checks for configuration, or it could go into a
      weird state.
    Fixed for small beads and PC version, would not have rounded slots.
    Fixed top level room and spaces if top pieces or piecePercents
      greater than 2.
  [Jan 05, 2006]  V7.1.8:
    There were some cases where resizing the number of rails causes
      the calculation to change unnecessarily.
    Signed overflow fixes e.g. 50000000000*2=-5000 or
      -100000000000 Chinese converted to Japanese.
    Assorted tweaks discovered when porting code to Java version.
    Moved Anomaly from "a" to "l" to be consistent with Java version.
    Move bar problems with quarter percent.
    Quarter percent for Russian format would give an X error, fixed.
  [Jan 01, 2006]  V7.1.7:
    Sign, quarter, and quarterPercent code all rewritten to be less buggy.
    Quarter percents option for 1/4 Kopecks.
    Use of "piece" instead of "quarter" for more variability.  This now
      allows a "twelfths" capability (Roman ounces) for Roman Hand Abacus.
      Its pretty configurable (with the configuration file) so you can have
      a range from halves to sixteenths (stock market pricing, pieces of
      eight, etc), and possibly beyond if you want to get crazy.
    New symbols on the bar for "-" for sign, "O" for pieces.  If the base and
      piece and format in Russian style set weird it could otherwise be hard
      hard to read.  O used because it was used on the Roman Hand Abacus.
    Anomaly option for Mesoamerican Nepohualtzintzin Abacus.  Basically a
      JP Abacus in base 20 (3/4) where the columns left of the 2nd digit are
      multiples of 360 (instead of 400).  4th column of unit beads would be
      20x360.  Bar marked with an "X" where the anomaly is.  Note: this
      is turned off if there are extra beads as in the Chinese mode or
      Korean mode or this leads to even more unexpected anomalies.
    AnomalySq option to make more Anomaly more configurable, now can have a
      representation of time using hours, minutes, seconds.  Babylonians are
      responsible for that mess.  Though they probably did not use an
      abacus.
  [Nov 19, 2005]  V7.1.6:
    Vertical for proper Russian schoty (rotate xabacus clockwise 90 degrees).
      Use "v" or from the command line -vertical.
    The first bead that is 3 decimal places >= 1000 gets a darker color
      on Russian Abacus.
  [Oct 05, 2005]  V7.1.5:
    -version added
    Common option help for X and X-Motif
  [May 31, 2005]  V7.1.4:
    Separated out compatible components.
  [Nov 21, 2004]  V7.1.3:
    Bug fixes for auto-calculation and small base values.
    Thanks to Debian maintainer Florian Ernst  for
      esound fix.
  [Oct 22, 2004]  V7.1.2:
    Small changes synchronizing with Java code.
    Fixed goof introduced in previous which make quarter not work right.
  [Sep 25, 2004]  V7.1.1:
    Installation of sound files.
    bufferBead and colormap not properly initialized and could cause core
      dumps.
  [Aug 23, 2004]  V7.1:
    Thanks to Debian maintainer Florian Ernst  for
      pointing out that the demo breaks without Motif.  Fixed this and 'f'
      should now work better for X.
    Beads are now double buffered.  Faster and looks better on slow machines.
    Beads now slide in small increments.
    Got rid of turning the beads "inside-out" when pressed.  Too annoying.
    "<", ">" to speed up and slow down movement of the beads.  Actually,
      it changes "delay" inversely.
    Got rid of some drawing errors when beads are long.
    Sound added.
    Sort of real time using gettimeofday.
  [May 31, 2004]  V7.0.6:
    Demo now works with the other "standard" abaci.  Korean (or Pre-WWII
      Japanese) 1/5 (ko), Japanese 1/4 (or Roman) (jp), or Russian 0/10
      (ru).
  [Jan 23, 2004]  V7.0.5: Not released
    The idea with the calculator stuff is to see the beads
      move with input from the display line.  This will do a calculation
      but it is not meant as a demonstration of a mathematical operation.
      Do not use this for your taxes yet...
      Has some special features... 2v = sqrt of 2, 2u = cbrt of 2, e for e,
        p for pi, ! for factorial (should do a gamma function if real?), and
        ^ for power.  Display Base must equal Abacus Base.  Eventually want
        to do operations on strings so abacus could be an "infinite" size.
      Answers that result in an error default to zero (maybe all the beads
        should fall off?).
  [Jan 13, 2004]  V7.0.4:
    Clear for Lee's Abacus is for each individual deck except for demo.
    Have the decimal point setting accessible to the demo.
      I treat the decimal point as the place setting vernier...
    Resources broken in 7.0.2 fixed.
    Decrementing with the decimal on the right fixed.
    Added the faster diamond shaped beads.  :)
    Color of decimal point the same as beads.
    Put the decimal point (or place setting vernier) at a post.  (To me it
      should be between posts but have not seen an historic example).
    Windows fixes: 'u' for quarters mode and rounder beads
  [Dec 31, 2003]  V7.0.3:
    The Roman mode forces a plate look where the beads move in slots.
    Fixed minor drawing errors in Windows.
    Changed order of additions in the 4th lesson to conform with the
      standard way of doing multiplication.
    Fixed bug where a new 5th lesson not installed.
    Fixed clean on auxiliary decks from demo.
    Fixed demo mode on auxiliary decks.
  [Dec 23, 2003]  V7.0.2:
    Lee's Abacus, default setup when using Motif.  Added a 4th lesson
      for multiplication.  Find out more about Lee's Abacus from
      http://www.ee.ryerson.ca/~elf/abacus/leeabacus/
    Type of abacus listed for non-Motif and Windows.
    Demo can now be set dynamically in Windows.
  [Dec 15, 2003]  V7.0.1:
    Increment when decimal point left most bug fix.
    The Hide functionality of the Escape key now iconifies or drops in
      task bar.
    Added help in Windows.
    Accelerator Keys (F keys and regular keys) in Windows now work.
  [Nov 08, 2003]  V7.0:
    Abacus??.ad* files removed, info is in Abacus.ad*.
    Integrated winpuz6.5 (Windows 3.1/95) into X source tree.
  [Aug 28, 2003]  V5.7.3:
    png for Gnome and KDE menus and xpm for CDE menus.
    Added xpm for icon.
    Reset a few colors for consistency.
  [Aug 14, 2003]  V5.7.2:
    man 1 to man 6 and DESTDIR added and suggestions for ad.in stuff
      thanks to Stanislav Brabec 
    The demo should work if the demo files are in the installation directory
      (the default but can be changed by -demopath) or the current
      directory.
    Bug fix for xabacus -japanese -demo and a few involving "quarters".
    User interface now free of numbers for formats.
  [Aug 11, 2003]  V5.7.1:
    When changing base certain combinations would create too many beads
      in top deck, beads are instead set to zero.
    Reformatted with option menus.
    Help kicked over.
    Added Korean and Roman.  Roman is essentially the same as the Japanese
      version right now.
  [Jul 07, 2003]  V5.7:
    Sync up with xpuzzles
  [Apr 29, 2003]  V5.6.2: Not released
    Added callback for calculate... does not really do too much yet.
      Need to #define CALC to try...
    Bug fix when in Demo and Russian format is pressed
    Clear now checks if you really want to clear using left mouse button,
      'c' will not query
    'Esc' will hide abacus (actually osfCancel did the trick)
    Help & About expanded and pop-ups added
    Took out bitmaps since it takes too much room
    Demo can be activated from within window without needing command-line
      -demo option.  Removed leak in loadFont.  Added 'o' functionality.
  [Mar 21, 2003]  V5.6.1:
    Added runtime options -chinese, -japanese, and -russian
    Fixed shading if beads are black
    Installation fixes for Motif and X versions
    Help & About expanded and pop-ups added
    Roman Numerals added
    Fixed uninstall on Cygwin
    Took out toggles and bitmaps since it takes too much room.
      Now compile-time option.  There is real help and one can change
      the toggles through the menu.
  [Dec 16, 2002]  V5.6:
    configure if around 2nd AC_CHECK_FUNC
    removed Sun CC (char *) warnings
    removed hard coding of program name
    Cygwin changes ./, -lSM -lICE
    x and xm files combined using HAVE_MOTIF
    port back from Java (on the Java side I got some help from
        Sarat Chandran )
      colors changes
      frame color change on enter/leave
      background/foreground set by default
      3d beads
      reset maximum
      pixel width
      "," diamonds
      added signs and quarters (with smaller delay when moved)
      Russian abacus (schoty) (it fell over)
  [Sep 01, 2001]  V5.5.4: g++ 3.0 warnings removed.  Simplified format.
    Added demo error checking.
  [Aug 11, 1999]  V5.5.2: Fixed runtime library problems when using configure,
    added text to README and xabacus.man, fixed confusing demo start.
  [Jul 31, 1999]  V5.5.1: Removed HP usleep warning.
  [Jun 20, 1999]  V5.5: Combined the independent work of Luis Fernandes'
    xabacus 1.00, also started in 1991.   This includes all the features
    to teach the users how to use the abacus (-demo) and a more solid
    frame (its sturdier :) ).  -bars changed to -rails to conform with
    the terminology.  Abacus now defaults to the top beads up.  The
    picture on the cover of my abacus instruction booklet was deceiving.
    Abacus.ps and Abacus?.les are written entirely by Luis Fernandes
    .  (Also see http://www.ee.ryerson.ca/~elf/abacus).
    Added -rv and -mono options.
    Implemented -base option, can now go up to base 36, yeah I got carried
    away here (it should even work with EBCDIC though untested (really
    carried away)).
    Dynamic number of rails, with calculations saved with each change.
  [Jan 01, 1997]  V5.4: configure, man page updates.
  [Apr 22, 1996]  V5.3: You can now see beads move one unit space at a time.
    This is governed by a new resource, "delay".
  [Feb 12, 1996]  V5.2.1: beads now invert when pressed, wprintf name may
    conflict with other UNIX libraries - changed to
    motif_printf, keyboard may not work with motif - fixed.
  [Jan 31, 1996]  V5.2: Dynamic number of rails (well, the widget is dynamic
    but xabacus.c limits it to around 300 for the title text),
    fixed another bug when resized (negative radius circles).
  [Dec 15, 1995]  V5.1: Fixed a bug when resized.
  [Sep 30, 1995]  V5.0: Xt/Motif, your choice.
  [May 16, 1995]  V4.10: Warnings removed from Sun's cc and lint.
  [Mar 13, 1995]  V4.3: Removed lint warnings and added a VMS make.com .
  [Nov 08, 1994]  V4.2: Removed gcc -Wall warnings.
  [Jun 03, 1994]  V4.1: R6.
  [May 07, 1994]  V4.0: Xt version.
  [Feb 03, 1993]  V3.0: Motif version.
    I got some good ideas from Douglas A. Young's book:
    "The X Window System Programming and Applications with
    Xt OSF/Motif Edition", particularly his dial widget.
    I got some good ideas on presentation from Q. Zhao's
    tetris.
  [Dec 17, 1991]  V2.0: XView version.
  [Feb 14, 1991]  V1.0: SunView version.