abacus
xabacus
SYNOPSIS
toe 17:36
/usr/games/xabacus [-geometry
({width}] [x{height}] [{+-} {xoff} [{+-}{yoff}]]] (-display
(U(host}]:[{vs}]] [-[no]mono] —_ [~[no] {reverse|rv}] [-{f£oreground| fg}
{color}] [-{backgroundlbg}) {color}] [-{border|bd} {color}] [-frame
{color}] [-primaryBeadcolor {color}] [-leftAuxBeadColor {color}]
[-rightAuxBeadColor {color}] [-secondaryBeadColor {color}] [-highlight-
BeadColor {color}] [-primaryRailColor {color}] [-secondaryRailColor
{color}] _[-highlightRailColor {color}] [-bumpSound — {filename}]
[-moveSound {filename}] [-[no]sound] [-delay msecs] [-[no]script]
[-[no]demo] [-demopath {path}] [-(demofont|demofn} {fontname}] [-{demo-
foreground|demofg} — {color}] [-[no] teach] [-[no] rightToLeftadd]
[-[no]rightToLeftMult] [-[no]lee] [-rails {int)] [-leftAuxRails {int}]
[-rightauxRails {int)] [-[no]vertical] [-colorScheme {int}] [-[no]slot]
[-[no]diamond] [-railIndex {int}] [-[no]topOrient] [-[no]bottomOrient]
[-topNumber (int}] [-bottomNumber {int}] [-topFactor (int}] [-bottom-
Factor {int}] [-topSpaces {int}] [-bottomSpaces {int}] [-topPiece
{int}] [-bottomPiece {int}] [-topPiecePercent {int}] [-bottomPiecePer-
cent {int}] [-shiftPercent {int}] [-subdeck {int}] [-subbead {int}]
[-[no]sign] [-decimalPosition {int}] [-[no]group] [-groupSize {int}]
[-[no]decimalcomma] [-base {int}] [-[noJeighth] [-anomaly {int}]
[-shiftanomaly {int}] [-anomalySq {int}] [-shiftanomalySq {int}] [-dis-
playBase {int}] [-[no]pressOffset] [-[no]romanNumerals] [-[no]latin]
[-[no]ancientRoman] [- [no] modernRoman] I-{chi-
nese | japanese | korean|roman|russian|danish|generic}] (-{it|uklfr})
(-version]
DESCRIPTION
This is an implementation of the classic Chinese abacus (Saun-pan)
which has its origins in the 12th century.
The device has two decks. Each deck, separated by a partition, nor-
mally has 13 rails on which are mounted beads. Each rail on the top
deck contains 1 or 2 beads, and each rod on the bottom deck contains 4
or 5 beads. Each bead on the upper deck has a value of five, while
each bead on the lower deck has value of one. Beads are considered
counted, when moved towards the partition separating the decks, i.e. to
add a value of one, a bead in the bottom deck is moved up, and to add a
value of 5, a bead in the top deck is moved down.
The basic operations of the abacus are addition and subtraction. Mul-
tiplication can be done by mentally multiplying the digits and adding
up the intermediate results on the abacus. Division would be similar
where the intermediate results are subtracted. There are techniques
like using your thumb and forefinger which does not apply with mouse
‘ntpufwwwtacoabegey pabacs tml Pagina 112abacus
tgngyi 1736
entry. Also with multiplication, one can carry out calculations on
different parts of the abacus for scratch work, here it is nice to have
@ long abacus.
The pre-WWII Japanese abacus (Soroban) (or Korean Supan) is similar to
the Chinese abacus but has only one bead per rail on the top deck. The
later Japanese abacus was further simplified to have only 4 beads per
rail on the bottom deck.
The Roman hand-abacus predates the Chinese abacus and is very similar
to the later Japanese abacus, but seems to have fallen out of use with
the Fall of the Roman Empire (at least 3 are in existence). The Roman
abaci are brass plates where the beads move in slots. In addition to
the normal 7 columns of beads, they generally have 2 special columns on
the right side. In two examples: the first special column was for
12ths (12 uncia (ounces) = 1 as), and had one extra bead in the bottom
deck. Also the last column was a combination of halves, quarters, and
twelfths of an ounce and had no slot in the top deck and 4 beads at the
bottom (beads did not have to come to the top to be counted but at one
of 3 marked points where the top bead was for halves, the next bead for
quarters, and the last two beads for twelfths). In another surviving
example: the 2 special columns were switched and the combination column
was broken into 3 separate slots. If available, decimal input is
ignored.
The Russian abacus was invented in the 17th century, here the beads are
moved from right to left. It has colored beads in the middle for ease
of use. Quarters represent 1/4 Rubles and are only present histori-
cally on the Russian abacus (Schoty). Some of the older Schoty have a
extra place for the 1/4 Kopek (quarter percent) as well as the 1/4
Ruble (quarter).
The Danish abacus was used in the early 20th century in elementary
schools as a teaching aid.
The Mesoamerican Nepohualtzintzin is a Japanese abacus base 20. The
Mesoamericans had base 20 with the exception of the 3rd decimal place
where instead of 20*20=400 the third place marked 360 and the 4th place
was 20*360, etc.. They independently created their own zero (only
Babylon (base 60) and India (base 10) have done this) but the anomaly
took away its true power.
An easy way of figuring out time in seconds given hours, minutes, and
seconds, can be done on the abacus with special anomaly "watch" set-
tings.
The Chinese Solid-and-Broken-Bar System is a base 12 numbering system
and not really an abacus. When the abacus is setup in this way though
(topFactor 3, bottomNumber 2, base 12, displayBase 12), it is easy to
relate the two.
The signed bead is an invention of the author, and is not present on
any historical abacus (to his knowledge) and is used to represent nega-
tives. "New & Improved" abacus models have two auxiliary decks stacked
above the principal deck that enable multiplication, division,
square-root, and cube-root computations to be performed with equal ease
as addition and subtraction.
‘ntpufwwwtacoabegey pabacs tml Pagina 212>abvcus tgngyi 1736
FEATURES
Click "mouse-left" button on a bead you want to move. The beads will
shift themselves to vacate the area of the column that was clicked.
Click "mouse-right" button, or press "C" or "e" keys, to clear the aba~
cus.
Press "0" or "o" keys to toggle the demo mode.
Press "$" key to toggle the teach mode.
In teach mode, "+" key toggles starting side to sum, ""*" key toggles
for starting side for multiplicand.
Press "*" or "*" keys to complement the beads on the rails.
Press "I" or "i" keys to increment the number of rails. Press "D" or
"d" keys to decrement the number of rails.
Press "F" or "£" keys to switch between Chinese, Japanese, Korean,
Roman, Russian, and Danish formats. There is an extra "Generic" for-
mat, this allows one to break some rules binding the other formats (for
example, if one wanted more beads on top deck than on bottom deck you
would use this, in addition to resource option changes).
Press "M" or "m" keys to switch between it, uk, and fr museum formats.
Press "V" or "v" keys to toggle Roman Nvmerals. (Pardon typo/humor,
but ran out of letters).
Press "S" or "s" keys to toggle the availability of a sign bead.
Press "U" or “u" keys to toggle the availability of quarter beads.
(Mutually exclusive to twelfth beads). Intended for the Russian Aba-
cus.
Press "PB" or "p" keys to toggle the availability of quarter percent
beads. (Dependent on quarter beads (or twelfth beads). Intended for
the older Russian Abacus.
Press "E" or "t" keys to toggle the availability of twelfth beads.
(Mutually exclusive to quarter beads). Intended for the Roman Abacus.
Press "B" or "b" keys to toggle the availability of subdecks. (Depen-
dent on twelfth beads (or quarter beads) and Roman format). Intended
for the Roman Abacus, the lowest value of two of the rightmost beads
are a twelfth of the column second from right.
Press "E" or "e" keys to toggle the availability of subdecks. (Depen-
dent on twelfth beads (or quarter beads) and Roman format). Intended
for the Roman Abacus, the lowest value of three of the rightmost beads
are an eighth of the column second from right.
Press "L" or "1" keys to toggle the availability of anomaly bars.
Intended to be used with Japanese Abacus and base 20 for the Mesoameri-
‘ntpufwwwtacoabegey pabacs tml Pagina 3012abacus
toe 17:36
can Abacus. (Mutually exclusive to watch bars).
Press "W" or "w" keys to toggle the availability of watch bars.
Intended to represent seconds where hours and minutes can be set.
(Mutually exclusive to anomaly bars).
Press "!
or "." keys to speed up the movement of beads. Press
;" keys to slow down the movement of beads.
Press "@" key to toggle the sound.
Press "Ese" key to hide program.
Press "Q
or "CTRL-C" keys to kill program.
The abacus may be resized. Beads will reshape depending on the room
they have. Demo Mode: In this mode, the abacus is controlled by the
program. When started with the demo option, a second window is pre-
sented that should be placed directly below the abacus-window. Descrip-
tive text, and user prompts are displayed in this window. Pressing 'q'
during the demo will quit it. Clicking the left mouse-button with the
pointer in the window will restart the demo (beginning of current les-
son).
OPTIONS
“geometry {+|-}X{+|-}¥
This option sets the initial position of the abacus window
(resource name "geometry") .
-display host:dpy
This option specifies the X server to contact.
-[no]mono
This option allows you to display the abacus window on a color
screen as if it were monochrome (resource name "mono").
-[no] {reverse| rv}
This option allows you to see the abacus window in reverse
video (resource name “reverseVideo") .
-{f£oreground| fg} color
This option specifies the foreground of the abacus window
(resource name "foreground") .
-{background|bg} color
This option specifies the background of the abacus window
(resource name "background").
-{border|bd} color
This option specifies the foreground of the bead border
(resource name "borderColor").
-frame color
‘ntpufwwwtacoabegey pabacs tml Pagina 412>abvcus tgngyi 1736
This option specifies the foreground of the frame (resource
name "frameColor'
-primaryBeadColor color
This option specifies the foreground of the beads (resource
name "“primaryBeadColor").
-leftAuxBeadColor color
This option specifies the foreground of the beads for the left
auxiliary abacus in Lee's Abacus (resource name "leftAuxBead-
Color").
-rightAuxBeadColor color
This option specifies the foreground of the beads for the right
auxiliary abacus in Lee's Abacus (resource name "rightBead-
Color").
-secondaryBeadColor color
This option specifies the secondary color of the beads
(resource name "secondaryBeadColor")
-highlightBeadColor color
This option specifies the highlight color of the beads
(resource name "highlightBeadColor"
-primaryRailColor color
This option specifies the foreground of the rails (resource
name "primaryRailColor").
-secondaryRailColor color
This option specifies the secondary color of the rails
(resource name "secondaryRailColor").
-highlightRailcolor color
This option specifies the highlight color of the rails
(resource name "highlightRailColor").
-bumpSound filename
This option specifies the file for the bump sound for the move-
ment of the beads (resource name "bumpSound"
-moveSound filename
This option specifies the file for the move sound for the slid-
ing of the decimal point marker (resource name "moveSound").
[no] sound
This option specifies if a sliding bead should make a sound or
not (resource name "sound").
delay msecs
This option specifies the number of milliseconds it takes to
move a bead or a group of beads one space (resource name
delay").
-[no] script
This option specifies to log application to stdout, every time
the user clicks to move the beads (resource name "script"). The
‘ntpufwwwtacoabegey pabacs tml Pagina 512>abvcus tgngyi 1736
output is a set of auxiliary, deck, rail, beads added or sub-
tracted, and the number of text lines (4). This can be edited
to add text to the lesson and used as a new demo keeping the
generated numbers and the number of lines constant. (Windows
version writes to Abacus.les.)
-[no]demo
This option specifies to run in demo mode. In this mode, the
abacus is controlled by the current lesson (resource name
"demo"). When started with the demo option, a window contains
descriptive text, and user prompts are displayed in this win-
dow. Pressing 'q’ during the demo will quit it. Clicking the
left mouse-button with the pointer in the window will restart
the demo (beginning of current lesson). The demo uses Aba-
cusl.les for the first Chinese Abacus lesson, Abacusjpl.les for
the first Japanese (and Roman) Abacus lesson, Abacuskol.les for
the Korean Abacus, and Abacusrul.les for the Russian Abacus.
-demopath path
This option specifies the path for the demo, possibly something
like /usr/local/share/games/xabacus (resource name "demoPath") .
It initially looks for Abacusi_l.les, for first chapter, lesson
1. If it finds that, it will later look for Abacusi_2.les,
etc.
-demofont fontstring
This option specifies the font for the explanatory text that
appears in the secondary window, during the demo. The default
font is 18 point Times-Roman (-*-times-*-r-*-*-*-180-*), The
alternate font is 8x13.
-demofg color
This option specifies the foreground of the abacus demo window
(resource name "demoForeground") .
-demobg color
This option specifies the background of the abacus demo window
(resource name "demoBackground") .
-[no] teach
This option specifies to run in teach mode. In this mode,
abacus is controlled by 2 numbers separated by an operator:
for addition, for subtraction, "*" for multiplication, and
/*" for division. The square root operation is represented by
the number to be operated on followed by the character "v"
(this leaves you with an answer from which you must divide by
2). Similarly, the cube root operation is represented by the
number to be operated on followed by the character "u" (this
leaves you with an answer from which you must divide by 3).
Press return key to progress through the steps (resource name
teach").
-[no] rightToLeftadd
This option specifies the order for teach starting side for
addition and subtraction. The default is the traditional left
to right. Right to left seems easier though (resource name
"rightToLeftadd") .
‘ntpufwwwtacoabegey pabacs tml Pagina 612>abvcus tgngyi 1736
-[no] rightToLeftMult
This option specifies the order for teach starting side for
multiplication. The default is the traditional left to right.
Right to left seems more straight forward (resource name
rightToLeftmult'
- [no] lee
This option allows you to turn on and off the two extra auxil-
iary abaci (resource name "lee").
-rails int
This option specifies the number of rails (resource name
"rails").
-leftAuxRails int
This option allows you to set the number of the rails for the
left auxiliary abacus in Lee's Abacus (resource name "left~
AuxRails").
-rightAuxRails int
This option allows you to set the number of the rails for the
right auxiliary abacus in Lee's Abacus (resource name “righ-
tAuxRails").
-[no]lvertical
This option allows you to set the abacus to allow a Russian
orientation (resource name "vertical").
-colorScheme int
This option specifies the color scheme for the abacus (resource
name "“colorScheme") where 0-> none, 1-> color middle (2 beads
beads but if odd color 1 bead), 2-> color first of group, 3->
both 1 and 2, 4-> color first half (but if odd color middle
bead).
= [no] slot
This option allows you to have either slots or rails (resource
name “slot").
- [no] diamond
This option allows you to have either diamond or round beads
(resource name "diamond").
-railiIndex int
This option specifies the index of color for the rails of the
abacus (resource name "railIndex") where a value is 0 or 1.
-[no] topOrient
This option specifies the orientation of the beads on top
(resource name "topOrient").
-[no]bottomOrient
This option specifies the orientation of the beads on bottom
(resource name "bottomOrient").
-topNumber int
This option specifies the number of beads on top (resource name
‘ntpufwwwtacoabegey pabacs tml Pagina 712debscus toe 17:36
"topNumber") .
-bottomNumber int
This option specifies the number of beads on bottom (resource
name “bottomNumber") .
-topFactor int
This option specifies the multiply factor for the beads on top
(resource name "topFactor").
-bottomFactor int
This option specifies the multiply factor for the beads on bot-
tom (resource name "bottomFactor").
-topSpaces int
This option specifies the number of spaces on top (resource
name "topSpaces").
-bottomSpaces int
This option specifies the number of spaces on bottom (resource
name "bottomSpaces") .
-topPiece int
This option specifies the number of pieces on top (resource
name "topPiece") .
-bottomPiece int
This option specifies the number of pieces on bottom (resource
name "bottomPiece").
-topPiecePercent int
This option specifies the number of piece percents on top
(resource name "topPiecePercent").
-bottomPiecePercent int
This option specifies the number of piece percents on bottom
(resource name "bottomPiecePercent") .
-shiftPercent int
This option specifies the shift of rails for piece percents and
also may influence the precision of the calculation (resource
name "shiftPercent").
-subdeck int
This option specifies the special subdecks column (resource
name
-subbead int
This option specifies the special subbeads (resource name "sub-
bead").
-[no] sign
This option allows you to set the abacus to allow negatives
(cesource name "sign").
-decimalPosition int
This option specifies the number of rails to the right of the
‘ntpufwwwtacoabegey pabacs tml Pagina 812>abvcus tgngyi 1736
decimal point (normally 2) (resource name "decimalPosition").
-[no] group
This option allows you to group the displayed digits for read-
ability (resource name "group").
-groupSize int
This option specifies the group size to the left of the decimal
point (normally 3) (resource name "groupSize").
-[no]decimalcomma
This option allows you to swap "." for "," to allow for differ-
ent display format (resource name "decimalComma") .
base int
This option specifies the base used on abacus (default is base
10) (resource name "base"). By default, one has to set the
format mode to not be "Generic" for this to work (unless you
know what you are doing).
-[no]eighth
This option specifies the base for the Roman subdeck, (if set,
the resource is set to 8, else it is set to 12) (resource name
"subbase") .
anomaly int
This option specifies the offset from the base for a multi-
plicative factor of the rail with the anomaly (if none, this is
set to 0) (resource name "anomaly") .
-shiftAnomaly int
This option specifies the offset from decimal point for the
anomaly (usually 2) (resource name "shiftAnomaly") .
-anomalySq int
This option specifies the offset from base for the second anom-
aly (if none, this is set to 0) (resource name “anomalySq").
-shiftAnomalySq int
This option specifies the offset in rails from the first anom-
aly (usually 2) (resource name "“shiftAnomalySq"). doing).
-displayBase int
This option specifies the base displayed (default is base 10)
(resource name "displayBase"). If this is different then
base" then it is implemented using “long long" and the calcu-
lation is limited by its bounds. Also the fractional part does
not scale with the "“displayBase" so if the “displayBase" is
greater than the "base" it looses some precision. Also no
rounding is done.
-[no]pressOffset
This option allows you to put a pixel space between all the
beads so there is room for the bead to move when pressed
(resource name "pressOffset").
- [no] romanNumerals
‘ntpufwwwtacoabegey pabacs tml Pagina 912abacus
tgngyi 1736
This option allows you to set the abacus to allow Roman Numer-
als (resource name "romanNumerals"). Roman Numerals above 3999
are normally represented with bars on top, due to ASCII con-
straints this is represented instead in lower case (histori-
cally case was ignored). Roman Numerals above 3,999,999 were
not represented historically. Roman numerals change with dis-
playBase in an "experimental" way. When used with twelfths and
subdecks, named fraction symbols are used. Due to ASCII con-
straints the sigma is represented as E, the backwards C is rep-
resented as a Q, the mu as a u, and the Z with a - through the
center as az. If available, decimal input is ignored.
-[no]latin
This option allows you to set the abacus to allow latin frac-
tions instead of symbolic in the Roman numeral output (resource
name “latin").
-[no]ancientRoman
This option allows you to set the abacus to allow ancient Roman
numerals instead of the modern in the Roman numeral output
(resource name "“ancientRoman").
-[no]modernRoman
This option allows you to set the abacus to allow modern Roman
numerals instead of the ancient on the Roman Hand abacus
(resource name "modernRoman").
-chinese
This option specifies the format on the abacus (resource name
"format") to "Chinese" for the Chinese Saun-pan.
~japanese
-korean
This option specifies the format on the abacus (resource name
"format") to “Japanese” for the Japanese post-WWII Soroban.
This is also similar to the Roman Hand Abacus.
This option specifies the format on the abacus (resource name
format") to "Korean" for the Korean Supan or Japanese pre-WWII
Soroban.
This option specifies the format on the abacus (resource name
"“format") to "Roman" for the Roman Hand Abacus, note beads move
in slots. To complete, specify romanNumerals".
-russian
-danish
This option specifies the format on the abacus (resource name
"format") to “Russian for the Russian Schoty. To complete,
specify piece" to be 4, for the older Schoty also specify
piecePercent" to be 4.
This option specifies the format of the abacus (resource name
"“format") to "Danish" for the Danish Elementary School Abacus
teaching aid.
-generic
This option specifies the format on the abacus (resource name
"format") to "Generic". This option specifies a format that is
ntputwwwtacora!=bageydbabaes ml Pagina 10 12abacus
tgngyi 1736
more configurable by using resources, since there are few rules
to govern its behavior.
wit This option specifies the subformat of the abacus in Museum of
the Thermae, Rome.
-uk This option specifies the subformat of the abacus in British
Museum in London.
-fr This option specifies the subformat of the abacus in Cabinet de
medailles, Bibliotheque nationale, Paris.
-version
This option tells you what version of xabacus you have.
REFERENCES
Luis Fernandes http://www.ee.ryerson.ca/~elf/abacus/
Lee Kai-chen, How to Learn Lee's Abacus, 1958, 58 pages.
Abacus Guide Book, 57 pages.
Georges Ifrah, The Universal History of Numbers, Wiley Press 2000, pp
209-211, 288-294,
Review of the above: http://www.ams.org/notices/200201/rev-dauben.pdf
David Eugene Smith, History of Mathematics Volume II, Dover Publica~
tions, Inc 1958, pp 156-195.
SEE ALSO
X(1), xcubes(6), xtriangles(6), xhexagons(6), xmlink(6), xbarrel(6),
xpanex(6), xmball(6), xpyraminx(6), xoct(6), xrubik(6), xskewb(6),
xdino (6)
COPYRIGHTS
(R) Copyright 1994-2010, David A, Bagley
Luis Fernandes, wrote an independent program (xaba-
cus 1.00) with a demo mode and postscript file. I tried, with his per-
mission, to take the best features of both into one program. Also, I
had help with some of the abacus in the Java version by Sarat Chandran,
and some of these ideas were ported back
into this X version.
ntputwwwtacora!=bageydbabaes ml Pagina 11 12>abvcus tgngyi 1736
BUG REPORTS AND PROGRAM UPDATES
Send bugs (or their reports, or fixes) to the author:
David A. Bagley,
The latest version is currently at:
Jw. tux.org/~bagleyd/abacus. html
ftp://ibiblio.org/pub/Linux/apps/math
v7.6.7 28 Jan 2011 XABACUS (6)
ntputwwwtacorl=bogey dpabaas ml Pagina 1212