Provided by: xmabacus_8.3.5-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]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  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 "-" 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 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  "T"  or  "t"  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  "L"  or  "l"  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, where the lowest value of two at bottom of the
       rightmost column of 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, where the lowest value of three at bottom of
       the rightmost column of beads are an eighth of the column second from right.

       Press "K" or "k" to toggle the subdeck separation

       Press ")" 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 "Y" or "y" 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 "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 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 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/