Provided by: xabacus_8.5.1-1build2_amd64 

NAME
xabacus - Abacus X widget
SYNOPSIS
/usr/games/xabacus [-geometry [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]] [-display [{host}]:[{vs}]]
[-[no]mono] [-[no]{reverse|rv}] [-{foreground|fg} {color}] [-{background|bg} {color}] [-{border|bd}
{color}] [-frame {color}] [-primaryBeadColor {color}] [-leftAuxBeadColor {color}] [-rightAuxBeadColor
{color}] [-secondaryBeadColor {color}] [-highlightBeadColor {color}] [-primaryRailColor {color}]
[-secondaryRailColor {color}] [-highlightRailColor {color}] [-lineRailColor {color}] [-bumpSound
{filename}] [-moveSound {filename}] [-dripSound {filename}] [-[no]sound] [-delay msecs] [-[no]script]
[-[no]demo] [-demopath {path}] [-{demofont|demofn} {fontname}] [-{demoforeground|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}]
[-bottomFactor {int}] [-topSpaces {int}] [-bottomSpaces {int}] [-topPiece {int}] [-bottomPiece {int}]
[-topPiecePercent {int}] [-bottomPiecePercent {int}] [-shiftPercent {int}] [-subdeck {int}] [-subbead
{int}] [-[no]sign] [-decimalPosition {int}] [-[no]group] [-groupSize {int}] [-[no]placeOnRail]
[-[no]decimalComma] [-base {int}] [-subbase {int}] [-[no]subdecksSeparated] [-[no]altSubbeadPlacement]
[-anomaly {int}] [-shiftAnomaly {int}] [-anomalySq {int}] [-shiftAnomalySq {int}] [-displayBase {int}]
[-[no]pressOffset] [-romanNumerals {none|ancient|modern}] [-[no]latin] [-romanMarkers
{none|ancient|modern|late|alt}] [-{chinese|japanese|korean|russian|danish|roman|medieval|generic}]
[-museum {it|uk|fr}] [-version]
DESCRIPTION
This is an implementation of the classic Chinese Abacus (Suanpan) which has its origins in the 12th
century.
The device has two decks. Each deck, separated by a partition, normally 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. Multiplication 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 entry. Also with multiplication, one can carry out calculations on
different parts of the abacus for scratch work, here it is nice to have a long abacus.
The pre-WWII Japanese Abacus (Soroban) (or Korean Jupan) 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 beads 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
historically 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 Medieval Counter is a primitive form of the abacus and was used in Europe as late as the 1600s. It
was useful considering they were using it with Roman Numerals. This is similar to the Salamis Greek
Tablet from 4th or 5th Century BCE.
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 the Sumerian and early
Babylonian culture (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 Sumerian abacus with topFactor 10, topNumber 5 and bottomNumber 9 using base 60. No written record
of such a device exits but its plausible that one did.
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, topNumber 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 negatives. "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 (well, so I have read).
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 "c" keys, to clear the abacus.
Press "-" or "_" keys to complement the beads on the rails.
Press "U" or "u" keys to undo last move.
Press "R" or "r" keys to redo the last undo.
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 "f" keys to switch between Chinese, Japanese, Korean, Russian, Danish, Roman, and Medieval
formats. There is an extra "Generic" format, 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 "V" or "v" keys to change the Roman Nvmerals format. (Pardon typo/humor, but ran out of letters).
Press "~" key to toggle Latin Numerals (when Roman Nvmerals and quarter beads or twelfth beads are
activated).
Press "G" or "g" keys to toggle (usu.) commas between groups of digits.
Press "#" key to toggle place on rail (or between rails) for group and decimal separators.
Press "|" key to toggle vertical placement (best for Russian and Danish Abacus, and Medieval Counters).
Press "S" or "s" keys to toggle the sign bead.
Press "P" or "p" keys to change the piece setting from none|quarter|eighth|twelfth beads. Originally
intended for the Roman Hand Abacus (twelfths) and the Russian Abacus (quarter rubles).
Press "T" or "t" keys to change piece percent setting for none|quarter|eighth|twelfth beads. Originally
intended for the older Russian Abacus (quarter kopeks).
Press "B" or "b" keys to change subdeck setting to be interpretted as none|quarter|eighth|twelfth beads.
Originally intended for Roman Hand Abacus twelfths and possibly eighths. For twelfths, the the lowest
value of two at bottom of the rightmost column of beads are a twelfth of the column second from right.
Middle is worth a quarter and the top is worth a half. For eighths, middle and bottom are both worth an
eight and the top a half. (For quarters, all are worth a quarter.)
Press "K" or "k" to toggle the subdeck separation
Press "L" or "l" to toggle which side the subdeck symbols are placed.
Press "M" or "m" keys to switch between it, uk, and fr museum formats.
Press "Z" or "z" keys to change the Roman markerz on the frame.
Press "O" 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 speed up the movement of beads. Press "<" or "," keys to slow down this
movement.
Press "@" key to toggle the sound.
Press "Esc" key to hide program.
Press "Q", "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 presented
that should be placed directly below the abacus-window. Descriptive 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 lesson).
OPTIONS
-geometry {+|-}X{+|-}Y
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").
-{foreground|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
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 "leftAuxBeadColor").
-rightAuxBeadColor color
This option specifies the foreground of the beads for the right auxiliary abacus in Lee's Abacus
(resource name "rightBeadColor").
-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").
-lineRailColor color
This option specifies the color of the lines when using checkers (resource name "lineRailColor").
-bumpSound filename
This option specifies the file for the bump sound for the movement of the beads (resource name
"bumpSound").
-moveSound filename
This option specifies the file for the move sound for the sliding of the decimal point marker
(resource name "moveSound").
-dripSound filename
This option specifies the file for the drip sound for changing the format (resource name
"dripSound").
-[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 output is a set of auxiliary, deck, rail, beads added or
subtracted, 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.xml.)
-[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 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 lesson). The demo uses abacusDemo.xml and currently there are 4 editions possible
(Chinese, Japanese (and Roman), Korean, and Russian (and Danish)).
-demopath path
This option specifies the path for the demo, possibly something like
/usr/local/share/games/xabacus (resource name "demoPath"), with the file name of abacusDemo.xml.
For this to work, the program must be compiled with XML2 or else will use a brief static fallback
demo.
-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, the 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").
-[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 auxiliary 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 "leftAuxRails").
-rightAuxRails int
This option allows you to set the number of the rails for the right auxiliary abacus in Lee's
Abacus (resource name "rightAuxRails").
-[no]vertical
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-> darken middle bead (2 beads if even), 2-> darken first bead of a group, 4-> use
secondary color for second half of a row of beads (but if odd color middle bead), 8-> use
secondary color for second third of a row of beads, 16-> use secondary color in alternate groups.
Use a mask of 31 for combinations.
-[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").
-railIndex 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 "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 bottom (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 "subdeck").
-subbead int
This option specifies the special subbeads (resource name "subbead").
-[no]sign
This option allows you to set the abacus to allow negatives (resource name "sign").
-decimalPosition int
This option specifies the number of rails to the right of the decimal point (normally 2)
(resource name "decimalPosition").
-[no]group
This option allows you to group the displayed digits for readability (resource name "group").
-groupSize int
This option specifies the group size to the left of the decimal point (normally 3) (resource name
"groupSize").
-[no]placeOnRail
This option allows you to place the decimal and group separators on rail (or just after)
(resource name "placeOnRail").
-[no]decimalComma
This option allows you to swap "." for "," to allow for different display format (resource name
"decimalComma").
-base int
This option specifies the base used on abacus (default is base 10) (resource name "base").
-subbase int
This option specifies the base for the Roman subdeck, can set to 8 or default of 12) (resource
name "subbase").
-[no]subdecksSeparated
This option allows you to have the subdecks separated (resource name "subdecksSeparated").
-[no]subdecksSeparated
This option allows you to have the subdecks separated (resource name "placeOnRail").
-anomaly int
This option specifies the offset from the base for a multiplicative 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 anomaly (if none, this is set to 0)
(resource name "anomalySq").
-shiftAnomalySq int
This option specifies the offset in rails from the first anomaly (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 calculation 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").
-romanNumerals {none|ancient|modern}
This option allows you to set the abacus to allow Roman Numerals (resource name "romanNumerals").
Modern Roman Numerals above 3999 are normally represented with bars on top, due to ASCII
constraints this is represented instead in lower case (historically case was ignored). Roman
Numerals above 3,999,999 were not represented historically. Roman numerals change with
displayBase in an "experimental" way. When used with twelfths and subdecks, named fraction
symbols are used. Due to ASCII constraints the sigma is represented as E, the backwards C is
represented as a Q, the mu as a u, and the Z with a - through the center as a z. If available,
decimal input is ignored.
-[no]latin
This option allows you to set the abacus to allow latin fractions instead of symbolic in the
Roman numeral output (resource name "latin").
-romanMarkers {none|ancient|modern|late|alt}
This option allows you to set Roman numerals of a specific type on the frame of the abacus
(resource name "modernRoman").
-chinese
This option specifies the format on the abacus (resource name "format") to "Chinese" for the
Chinese Suanpan.
-japanese
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.
-korean This option specifies the format on the abacus (resource name "format") to "Korean" for the
Korean Jupan or Japanese pre-WWII Soroban.
-russian
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.
-danish This option specifies the format of the abacus (resource name "format") to "Danish" for the
Danish Elementary School Abacus teaching aid.
-roman 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".
-medieval
This option specifies the format of the abacus (resource name "format") to "Medieval" for the
Medieval Counter, with counters instead of beads.
-generic
This option specifies the format on the abacus (resource name "format") to "Generic". This
option specifies a format that is more configurable by using resources, since there are few rules
to govern its behavior.
-museum {it|br|fr}
This option specifies the country code for the museum of the abacus in the Museum of the Thermae,
Rome, the British Museum, London, or the Cabinet de medailles, Bibliotheque nationale, Paris.
-version
This option tells you what version of xabacus you have.
REFERENCES
Luis Fernandes https://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 Publications, 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
® Copyright 1994-2021, David A. Bagley
Luis Fernandes, <elf AT ee.ryerson.ca> wrote an independent program (xabacus 1.00) with a demo mode and
postscript file. I tried, with his permission, 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, <saratcmahadevan AT
yahoo.com> and some of these ideas were ported back into this X version.
BUG REPORTS AND PROGRAM UPDATES
Send bugs (or their reports, or fixes) to the author:
David A. Bagley, <bagleyd AT verizon.net>
The latest version is currently at:
https://www.sillycycle.com/abacus.html
http://www.ibiblio.org/pub/Linux/apps/math/
V8.3.6 23 Apr 2021 XABACUS(6)