Provided by: xabacus_8.2.4-1_amd64 bug

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]decimalComma] [-base {int}]  [-[no]eighth]  [-anomaly  {int}]  [-shiftAnomaly
       {int}]  [-anomalySq {int}] [-shiftAnomalySq {int}] [-displayBase {int}] [-[no]pressOffset]
       [-[no]romanNumerals]       [-[no]latin]       [-[no]ancientRoman]       [-[no]modernRoman]
       [-{chinese|japanese|korean|russian|danish|roman|medieval|generic}]           [-{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 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" settings.

       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 "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, 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  toggle  Roman Nvmerals.  (Pardon typo/humor, but ran out of
       letters).

       Press "X" or "x" keys to toggle Ancient Roman Numerals (when Roman Nvmerals is activated).

       Press "Y" or "y" keys to toggle Latin Numerals (when Roman Nvmerals and quarter  beads  or
       twelfth beads are activated).

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

       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.  (Dependent 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.  (Dependent 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 "Z" or "z" keys to toggle Modern Numerals on frame (when showing Roman Hand Abacus).

       Press "L" or "l" keys to toggle the availability of anomaly bars.   Intended  to  be  used
       with  Japanese  Abacus  and  base  20 for the Mesoamerican 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  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 in alternate groups.
               Use a mask of 15 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]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").

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

       -[no]romanNumerals
               This  option  allows  you to set the abacus to allow Roman Numerals (resource name
               "romanNumerals").  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").

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

       -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 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-2019, 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://ibiblio.org/pub/Linux/apps/math