Man Linux: Main Page and Category List

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}] [-bumpSound
       {filename}]   [-moveSound   {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|roman|russian|danish|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,
       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 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
       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 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,  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.

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,
       Roman, Russian, and  Danish  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  "E" or "e" keys to switch between it, uk, and fr museum formats.

       Press "M" or "m" keys to toggle Roman Numerals.

       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
       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 "T" 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.
       (Dependent  on  twelfth  beads  (or  quarter  beads) and Roman format).
       Intended for the Roman Abacus, the lowest value of the rightmost  beads
       are a twelfth of the column second from right.

       Press  "H"  or  "h"  keys  to  toggle  the  availability  of  subdecks.
       (Dependent on twelfth beads  (or  quarter  beads)  and  Roman  format).
       Intended  for the Roman Abacus, the lowest value of the rightmost beads
       are an eighth of the column second from right.

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

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

       -[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.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
               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
               Abacus1.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  the  the  addition,  subtraction,
               multiplication, and division (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-> 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
               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").  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
               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 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.

       -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-2009, David A. Bagley

       Luis  Fernandes,  <elf@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@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@tux.org>

       The latest version is currently at:
              http://www.tux.org/~bagleyd/abacus.html
              ftp://ibiblio.org/pub/Linux/apps/math