Project Abacus Notes
| Title: |
ABACUS
|
| Author: |
David A. Bagley, bagleyd@tux.org
|
| Copyright: |
BSD
|
| Description: |
ABACI from different countries and times
|
Contents
Things To Do...
- 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.
5,000,000,000,000,000.0+1.
- 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.
- 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.
Running out of things to do. Please e-mail me with some ideas!
Java - Latest Tweaks...
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.
Java - Older Releases
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.
X and Windows - Latest Tweaks...
[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.
X and Windows - Older Releases
[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 gif 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 synced Java and C code.
Various small changes.
[Jul 26, 2007] V7.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.
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 getttimeofday.
[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.
Uhhh... 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.