xabacus



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}] [-highlight-
       BeadColor  {color}]  [-primaryRailColor  {color}]  [-secondaryRailColor
       {color}] [-highlightRailColor {color}] [-lineRailColor {color}] [-bump-
       Sound   {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}] [-bottom-
       Piece  {int}]  [-topPiecePercent  {int}]  [-bottomPiecePercent   {int}]
       [-shiftPercent  {int}]  [-subdeck  {int}]  [-subbead {int}] [-[no]sign]
       [-decimalPosition {int}] [-[no]group] [-groupSize {int}] [-[no]decimal-
       Comma]  [-base  {int}]  [-[no]eighth]  [-anomaly  {int}] [-shiftAnomaly
       {int}] [-anomalySq {int}] [-shiftAnomalySq {int}] [-displayBase  {int}]
       [-[no]pressOffset]  [-[no]romanNumerals]  [-[no]latin] [-[no]ancientRo-
       man]  [-[no]modernRoman]  [-{chinese|japanese|korean|roman|russian|dan-
       ish|medieval|generic}] [-{it|uk|fr}] [-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
       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 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 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 surviv-
       ing  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  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
       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, 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 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  (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 aba-
       cus.

       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 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  "f"  keys  to switch between Chinese, Japanese, Korean,
       Roman, Russian, Danish,  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 bot-
       tom deck you would use this, in addition to resource option changes).

       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 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 "T" or "t" keys to toggle  the  availability  of  twelfth  beads.
       (Mutually exclusive to quarter beads).  Intended for the Roman Abacus.

       Press  "P"  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  "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, where the lowest value of two at bottom of the
       rightmost column of 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, where the lowest value of three at bottom of the
       rightmost column of beads are an  eighth  of  the  column  second  from
       right.

       Press "M" or "m" keys to switch between it, uk, and fr museum formats.

       Press  "L"  or  "l"  keys  to  toggle the availability of anomaly bars.
       Intended to be used with Japanese Abacus and base 20 for the Mesoameri-
       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 "<" or
       "," keys to slow down the movement of beads.

       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  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{+|-}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  "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").

       -lineRailColor color
               This option specifies the color of the lines when using  check-
               ers (resource name "lineRailColor").

       -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").

       -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 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-
               cus1.les for the first Chinese Abacus lesson, Abacusjp1.les for
               the first Japanese (and Roman) Abacus lesson, Abacusko1.les for
               the Korean Abacus, and Abacusru1.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 Abacus1_1.les, for first chapter, lesson
               1.   If  it  finds  that, it will later look for Abacus1_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, 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 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]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-> 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").

       -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 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 "subdeck").

       -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
               (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 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").

       -[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
               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 a z.  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
               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 Supan or Japanese pre-WWII
               Soroban.

       -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".

       -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.

       -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.

       -it     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-2016, 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 Chan-
       dran, <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:
              http://www.sillycycle.com/abacus.html
              http://ibiblio.org/pub/Linux/apps/math



V8.0.8                            03 Sep 2016                       XABACUS(6)